From 3f3efea3016bb52d93601d32f326fd02e8ac4313 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Thu, 11 Sep 2025 15:12:21 -0700 Subject: [PATCH 01/84] test(test_gemini.py): add additional testing for additionalproperties case --- litellm/types/llms/vertex_ai.py | 1 - tests/llm_translation/test_gemini.py | 79 ++++++++++++++----- .../test_amazing_vertex_completion.py | 50 +++++++++--- 3 files changed, 96 insertions(+), 34 deletions(-) diff --git a/litellm/types/llms/vertex_ai.py b/litellm/types/llms/vertex_ai.py index 2687b79f727..f17a284ddfc 100644 --- a/litellm/types/llms/vertex_ai.py +++ b/litellm/types/llms/vertex_ai.py @@ -113,7 +113,6 @@ class Schema(TypedDict, total=False): pattern: str example: Any anyOf: List["Schema"] - additionalProperties: Any class FunctionDeclaration(TypedDict, total=False): diff --git a/tests/llm_translation/test_gemini.py b/tests/llm_translation/test_gemini.py index 47e3aaa8143..122429a87a5 100644 --- a/tests/llm_translation/test_gemini.py +++ b/tests/llm_translation/test_gemini.py @@ -269,7 +269,11 @@ def test_gemini_image_generation(): assert len(response.choices[0].message.images) > 0 assert response.choices[0].message.images[0]["image_url"] is not None assert response.choices[0].message.images[0]["image_url"]["url"] is not None - assert response.choices[0].message.images[0]["image_url"]["url"].startswith("data:image/png;base64,") + assert ( + response.choices[0] + .message.images[0]["image_url"]["url"] + .startswith("data:image/png;base64,") + ) def test_gemini_thinking(): @@ -661,7 +665,8 @@ def test_system_message_with_no_user_message(): assert response is not None assert response.choices[0].message.content is not None - + + def get_current_weather(location, unit="fahrenheit"): """Get the current weather in a given location""" if "tokyo" in location.lower(): @@ -778,9 +783,9 @@ def test_gemini_reasoning_effort_minimal(): # Test with different Gemini models to verify model-specific mapping test_cases = [ - ("gemini/gemini-2.5-flash", 1), # Flash: minimum 1 token - ("gemini/gemini-2.5-pro", 128), # Pro: minimum 128 tokens - ("gemini/gemini-2.5-flash-lite", 512), # Flash-Lite: minimum 512 tokens + ("gemini/gemini-2.5-flash", 1), # Flash: minimum 1 token + ("gemini/gemini-2.5-pro", 128), # Pro: minimum 128 tokens + ("gemini/gemini-2.5-flash-lite", 512), # Flash-Lite: minimum 512 tokens ] for model, expected_min_budget in test_cases: @@ -793,24 +798,32 @@ def test_gemini_reasoning_effort_minimal(): "reasoning_effort": "minimal", }, ) - + # Verify that the thinking config is set correctly request_body = raw_request["raw_request_body"] - assert "generationConfig" in request_body, f"Model {model} should have generationConfig" - + assert ( + "generationConfig" in request_body + ), f"Model {model} should have generationConfig" + generation_config = request_body["generationConfig"] - assert "thinkingConfig" in generation_config, f"Model {model} should have thinkingConfig" - + assert ( + "thinkingConfig" in generation_config + ), f"Model {model} should have thinkingConfig" + thinking_config = generation_config["thinkingConfig"] - assert "thinkingBudget" in thinking_config, f"Model {model} should have thinkingBudget" - + assert ( + "thinkingBudget" in thinking_config + ), f"Model {model} should have thinkingBudget" + actual_budget = thinking_config["thinkingBudget"] - assert actual_budget == expected_min_budget, \ - f"Model {model} should map 'minimal' to {expected_min_budget} tokens, got {actual_budget}" - + assert ( + actual_budget == expected_min_budget + ), f"Model {model} should map 'minimal' to {expected_min_budget} tokens, got {actual_budget}" + # Verify that includeThoughts is True for minimal reasoning effort - assert thinking_config.get("includeThoughts", True), \ - f"Model {model} should have includeThoughts=True for minimal reasoning effort" + assert thinking_config.get( + "includeThoughts", True + ), f"Model {model} should have includeThoughts=True for minimal reasoning effort" # Test with unknown model (should use generic fallback) try: @@ -822,15 +835,41 @@ def test_gemini_reasoning_effort_minimal(): "reasoning_effort": "minimal", }, ) - + request_body = raw_request["raw_request_body"] generation_config = request_body["generationConfig"] thinking_config = generation_config["thinkingConfig"] # Should use generic fallback (128 tokens) - assert thinking_config["thinkingBudget"] == 128, \ - "Unknown model should use generic fallback of 128 tokens" + assert ( + thinking_config["thinkingBudget"] == 128 + ), "Unknown model should use generic fallback of 128 tokens" except Exception as e: # If return_raw_request doesn't work for unknown models, that's okay # The important part is that our known models work correctly print(f"Note: Unknown model test skipped due to: {e}") pass + + +def test_gemini_additional_properties_bug(): + # Simple tool with additionalProperties (simulating the TypedDict issue) + tools = [ + { + "type": "function", + "function": { + "name": "test_tool", + "description": "Test tool", + "parameters": { + "type": "object", + "properties": {"param1": {"type": "string"}}, + # This causes the error - any non-False value + "additionalProperties": True, # Could also be None, {}, etc. + }, + }, + } + ] + + messages = [{"role": "user", "content": "Test message"}] + + response = litellm.completion( + model="gemini/gemini-2.5-flash", messages=messages, tools=tools + ) diff --git a/tests/local_testing/test_amazing_vertex_completion.py b/tests/local_testing/test_amazing_vertex_completion.py index a27fe738c7f..d20f54bdd34 100644 --- a/tests/local_testing/test_amazing_vertex_completion.py +++ b/tests/local_testing/test_amazing_vertex_completion.py @@ -397,7 +397,7 @@ async def test_async_vertexai_response(): | litellm.vertex_text_models | litellm.vertex_code_text_models ) - + test_models = random.sample(list(test_models), 1) test_models += list(litellm.vertex_language_models) # always test gemini-pro for model in test_models: @@ -504,7 +504,6 @@ async def test_async_vertexai_streaming_response(): pytest.fail(f"An exception occurred: {e}") - @pytest.mark.parametrize("load_pdf", [False]) # True, @pytest.mark.flaky(retries=3, delay=1) def test_completion_function_plus_pdf(load_pdf): @@ -547,6 +546,7 @@ def test_completion_function_plus_pdf(load_pdf): except Exception as e: pytest.fail("Got={}".format(str(e))) + def encode_image(image_path): import base64 @@ -910,7 +910,10 @@ async def test_partner_models_httpx(model, region, sync_mode): [ ("vertex_ai/meta/llama-4-scout-17b-16e-instruct-maas", "us-east5"), ("vertex_ai/qwen/qwen3-coder-480b-a35b-instruct-maas", "us-south1"), - ("vertex_ai/mistral-large-2411", "us-central1"), # critical - we had this issue: https://github.com/BerriAI/litellm/issues/13888 + ( + "vertex_ai/mistral-large-2411", + "us-central1", + ), # critical - we had this issue: https://github.com/BerriAI/litellm/issues/13888 ("vertex_ai/openai/gpt-oss-20b-maas", "us-central1"), ], ) @@ -3827,7 +3830,7 @@ def test_vertex_ai_gemini_audio_ogg(): @pytest.mark.asyncio async def test_vertex_ai_deepseek(): """Test that deepseek models use the correct v1 API endpoint instead of v1beta1.""" - #load_vertex_ai_credentials() + # load_vertex_ai_credentials() litellm._turn_on_debug() from litellm.llms.custom_httpx.http_handler import AsyncHTTPHandler @@ -3840,21 +3843,17 @@ async def test_vertex_ai_deepseek(): { "message": { "role": "assistant", - "content": "Hello! How can I help you today?" + "content": "Hello! How can I help you today?", }, "index": 0, - "finish_reason": "stop" + "finish_reason": "stop", } ], - "usage": { - "prompt_tokens": 10, - "completion_tokens": 20, - "total_tokens": 30 - }, - "model": "deepseek-ai/deepseek-r1-0528-maas" + "usage": {"prompt_tokens": 10, "completion_tokens": 20, "total_tokens": 30}, + "model": "deepseek-ai/deepseek-r1-0528-maas", } mock_response.status_code = 200 - + with patch.object(client, "post", return_value=mock_response) as mock_post: response = await acompletion( model="vertex_ai/deepseek-ai/deepseek-r1-0528-maas", @@ -3900,3 +3899,28 @@ def test_gemini_grounding_on_streaming(): vertex_ai_grounding_metadata_shows_up = True print(chunk) assert vertex_ai_grounding_metadata_shows_up + + +def test_gemini_additional_properties_bug(): + # Simple tool with additionalProperties (simulating the TypedDict issue) + tools = [ + { + "type": "function", + "function": { + "name": "test_tool", + "description": "Test tool", + "parameters": { + "type": "object", + "properties": {"param1": {"type": "string"}}, + # This causes the error - any non-False value + "additionalProperties": True, # Could also be None, {}, etc. + }, + }, + } + ] + + messages = [{"role": "user", "content": "Test message"}] + + response = litellm.completion( + model="gemini/gemini-2.5-flash", messages=messages, tools=tools + ) From 84a7329dba2838d6de6e9c1e6a4a7c03dfb9076d Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Thu, 11 Sep 2025 16:04:06 -0700 Subject: [PATCH 02/84] fix(secret_managers/get_azure_Ad_token_providers.py): infer credential type from env var don't default to ClientSecretCredential unless present in env var --- litellm/llms/azure/common_utils.py | 4 ++- litellm/proxy/_new_secret_config.yaml | 8 +++++ .../get_azure_ad_token_provider.py | 36 +++++++++++++++++-- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/litellm/llms/azure/common_utils.py b/litellm/llms/azure/common_utils.py index 09b1888e04d..b36375e4168 100644 --- a/litellm/llms/azure/common_utils.py +++ b/litellm/llms/azure/common_utils.py @@ -561,7 +561,9 @@ class BaseAzureLLM(BaseOpenAILLM): "Using Azure AD token provider based on Service Principal with Secret workflow for Azure Auth" ) try: - azure_ad_token_provider = get_azure_ad_token_provider(azure_scope=scope) + azure_ad_token_provider = get_azure_ad_token_provider( + azure_scope=scope, + ) except ValueError: verbose_logger.debug("Azure AD Token Provider could not be used.") if api_version is None: diff --git a/litellm/proxy/_new_secret_config.yaml b/litellm/proxy/_new_secret_config.yaml index c785dd05c40..be2a8303864 100644 --- a/litellm/proxy/_new_secret_config.yaml +++ b/litellm/proxy/_new_secret_config.yaml @@ -7,3 +7,11 @@ model_list: - model_name: wildcard_models/* litellm_params: model: openai/* + - model_name: gpt-4o + litellm_params: + model: azure/gpt-4o + api_base: https://cog-cuda-atg-sage-eastus2.openai.azure.com + api_version: 2025-04-01-preview + +litellm_settings: + enable_azure_ad_token_refresh: true \ No newline at end of file diff --git a/litellm/secret_managers/get_azure_ad_token_provider.py b/litellm/secret_managers/get_azure_ad_token_provider.py index e73c8f8d7a2..184d959b964 100644 --- a/litellm/secret_managers/get_azure_ad_token_provider.py +++ b/litellm/secret_managers/get_azure_ad_token_provider.py @@ -1,11 +1,36 @@ import os from typing import Any, Callable, Optional, Union +from litellm._logging import verbose_logger from litellm.types.secret_managers.get_azure_ad_token_provider import ( AzureCredentialType, ) +def infer_credential_type_from_environment() -> AzureCredentialType: + if ( + os.environ.get("AZURE_CLIENT_ID") + and os.environ.get("AZURE_CLIENT_SECRET") + and os.environ.get("AZURE_TENANT_ID") + ): + return AzureCredentialType.ClientSecretCredential + elif os.environ.get("AZURE_CLIENT_ID"): + return AzureCredentialType.ManagedIdentityCredential + elif ( + os.environ.get("AZURE_CLIENT_ID") + and os.environ.get("AZURE_TENANT_ID") + and os.environ.get("AZURE_CERTIFICATE_PATH") + and os.environ.get("AZURE_CERTIFICATE_PASSWORD") + ): + return AzureCredentialType.CertificateCredential + elif os.environ.get("AZURE_CERTIFICATE_PASSWORD"): + return AzureCredentialType.CertificateCredential + elif os.environ.get("AZURE_CERTIFICATE_PATH"): + return AzureCredentialType.CertificateCredential + else: + return AzureCredentialType.DefaultAzureCredential + + def get_azure_ad_token_provider( azure_scope: Optional[str] = None, azure_credential: Optional[AzureCredentialType] = None, @@ -42,9 +67,14 @@ def get_azure_ad_token_provider( ) cred: str = ( - azure_credential.value if azure_credential else None - or os.environ.get("AZURE_CREDENTIAL", AzureCredentialType.ClientSecretCredential) - or AzureCredentialType.ClientSecretCredential + azure_credential.value + if azure_credential + else None + or os.environ.get("AZURE_CREDENTIAL") + or infer_credential_type_from_environment() + ) + verbose_logger.info( + f"For Azure AD Token Provider, choosing credential type: {cred}" ) credential: Optional[ Union[ From d0732f55b3954da5a6853447a99fb8ae5a38edbe Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Thu, 11 Sep 2025 16:07:32 -0700 Subject: [PATCH 03/84] test(test_get_azure_ad_token_provider.py): add unit test to ensure default azure credentials used in the right context --- .../test_get_azure_ad_token_provider.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/test_litellm/secret_managers/test_get_azure_ad_token_provider.py b/tests/test_litellm/secret_managers/test_get_azure_ad_token_provider.py index 85e55a5c30d..f02f59cccc0 100644 --- a/tests/test_litellm/secret_managers/test_get_azure_ad_token_provider.py +++ b/tests/test_litellm/secret_managers/test_get_azure_ad_token_provider.py @@ -214,3 +214,32 @@ class TestGetAzureAdTokenProvider: # Test that the returned callable works token = result() assert token == "mock-certificate-token" + + @patch.dict(os.environ, {}, clear=True) # Clear all environment variables + @patch("azure.identity.get_bearer_token_provider") + @patch("azure.identity.DefaultAzureCredential") + def test_get_azure_ad_token_provider_defaults_to_default_azure_credential( + self, mock_default_azure_credential, mock_get_bearer_token_provider + ): + """Test get_azure_ad_token_provider defaults to DefaultAzureCredential when no credentials are present.""" + # Mock the Azure identity credential instance + mock_credential_instance = MagicMock() + mock_default_azure_credential.return_value = mock_credential_instance + + # Mock the bearer token provider + mock_token_provider = MagicMock(return_value="mock-default-token") + mock_get_bearer_token_provider.return_value = mock_token_provider + + # Call the function + result = get_azure_ad_token_provider() + + # Assertions + assert callable(result) + mock_default_azure_credential.assert_called_once_with() + mock_get_bearer_token_provider.assert_called_once_with( + mock_credential_instance, "https://cognitiveservices.azure.com/.default" + ) + + # Test that the returned callable works + token = result() + assert token == "mock-default-token" From 54e71bd0775adeab4df7015e334dd7ac3cbc551b Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Thu, 11 Sep 2025 16:10:13 -0700 Subject: [PATCH 04/84] fix(common_utils.py): add helpful message --- litellm/llms/azure/common_utils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/litellm/llms/azure/common_utils.py b/litellm/llms/azure/common_utils.py index b36375e4168..7c744298fbd 100644 --- a/litellm/llms/azure/common_utils.py +++ b/litellm/llms/azure/common_utils.py @@ -365,6 +365,11 @@ def get_azure_ad_token( azure_ad_token_provider = get_azure_ad_token_provider(azure_scope=scope) except ValueError: verbose_logger.debug("Azure AD Token Provider could not be used.") + except Exception as e: + verbose_logger.error( + f"Error calling Azure AD token provider: {str(e)}. Follow docs - https://docs.litellm.ai/docs/providers/azure/#azure-ad-token-refresh---defaultazurecredential" + ) + raise e ######################################################### # If litellm.enable_azure_ad_token_refresh is True and no other token provider is available, From 03804cb1d29b1fc930c64089e03f7a08e17156f7 Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Sun, 5 Oct 2025 16:01:20 -0700 Subject: [PATCH 05/84] preliminary virtual-keys refactor simplifies handleCreate function for CreateKeyModal moved hooks, components, files where I want them moved virtual-key page to (console) for common layout added layout for refactored console file structure, sidebar wired teams to refactored components fixing type issue wired new top level hook useAuthorized Adds routing to unrefactored pages Update leftnav.tsx Update useAuthorized.ts useAuthorized in virtual-keys/page and deprecation notices prelim VirtualKeyViewPage, removed old comment Delete page.tsx --- .../src/app/(console)/components/Sidebar.tsx | 291 ++++++++ .../components/modals/CreateUserModal.tsx | 345 +++++++++ .../src/app/(console)/hooks/useAuthorized.ts | 23 + .../src/app/(console)/layout.tsx | 46 ++ .../virtual-keys/components/CreateKey.tsx | 108 +++ .../CreateKeyForm/KeyDetailsSection.tsx | 148 ++++ .../CreateKeyForm/OptionalSettingsSection.tsx | 458 ++++++++++++ .../CreateKeyForm/OwnershipSection.tsx | 130 ++++ .../CreateKeyModal/CreateKeyModal.tsx | 233 ++++++ .../components/CreateKeyModal/hooks/index.ts | 5 + .../hooks/useGuardrailsAndPrompts.ts | 24 + .../hooks/useMcpAccessGroups.ts | 21 + .../CreateKeyModal/hooks/useTeamModels.ts | 26 + .../CreateKeyModal/hooks/useUserModels.ts | 21 + .../CreateKeyModal/hooks/useUserSearch.ts | 41 ++ .../components/CreateKeyModal/networking.ts | 84 +++ .../components/CreateKeyModal/types.ts | 17 + .../components/CreateKeyModal/utils.ts | 187 +++++ .../virtual-keys/components/KeyInfoView.tsx | 697 ++++++++++++++++++ .../virtual-keys/components/SaveKeyModal.tsx | 58 ++ .../VirtualKeysTable/VirtualKeysTable.tsx | 666 +++++++++++++++++ .../VirtualKeysTable/hooks/useFilterLogic.ts | 189 +++++ .../(console)/virtual-keys/hooks/useTeams.tsx | 20 + .../app/(console)/virtual-keys/networking.ts | 17 + .../src/app/(console)/virtual-keys/page.tsx | 52 ++ ui/litellm-dashboard/src/app/page.tsx | 2 - .../src/components/leftnav.tsx | 50 +- .../organisms/create_key_button.tsx | 8 + .../components/templates/view_key_table.tsx | 7 + ui/litellm-dashboard/src/utils/roles.ts | 2 +- 30 files changed, 3941 insertions(+), 35 deletions(-) create mode 100644 ui/litellm-dashboard/src/app/(console)/components/Sidebar.tsx create mode 100644 ui/litellm-dashboard/src/app/(console)/components/modals/CreateUserModal.tsx create mode 100644 ui/litellm-dashboard/src/app/(console)/hooks/useAuthorized.ts create mode 100644 ui/litellm-dashboard/src/app/(console)/layout.tsx create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKey.tsx create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/index.ts create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/networking.ts create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/types.ts create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/utils.ts create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/KeyInfoView.tsx create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/SaveKeyModal.tsx create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/hooks/useTeams.tsx create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/networking.ts create mode 100644 ui/litellm-dashboard/src/app/(console)/virtual-keys/page.tsx diff --git a/ui/litellm-dashboard/src/app/(console)/components/Sidebar.tsx b/ui/litellm-dashboard/src/app/(console)/components/Sidebar.tsx new file mode 100644 index 00000000000..ad60ba626aa --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/components/Sidebar.tsx @@ -0,0 +1,291 @@ +import React from "react"; +import Link from "next/link"; +import { usePathname, useSearchParams } from "next/navigation"; +import { Layout, Menu, ConfigProvider } from "antd"; +import { + KeyOutlined, + PlayCircleOutlined, + BlockOutlined, + BarChartOutlined, + TeamOutlined, + BankOutlined, + UserOutlined, + SettingOutlined, + ApiOutlined, + AppstoreOutlined, + DatabaseOutlined, + FileTextOutlined, + LineChartOutlined, + SafetyOutlined, + ExperimentOutlined, + ToolOutlined, + TagsOutlined, + BgColorsOutlined, +} from "@ant-design/icons"; +import { all_admin_roles, internalUserRoles, isAdminRole, rolesWithWriteAccess } from "@/utils/roles"; +import UsageIndicator from "@/components/usage_indicator"; + +const { Sider } = Layout; + +interface SidebarProps { + accessToken: string | null; + userRole: string; + /** Used to highlight a menu item when pathname doesn't match (e.g., on non-routed pages) */ + defaultSelectedKey?: string; + collapsed?: boolean; +} + +interface MenuItem { + key: string; + page: string; + label: string; + roles?: string[]; + children?: MenuItem[]; + icon?: React.ReactNode; +} + +const Sidebar: React.FC = ({ accessToken, userRole, defaultSelectedKey, collapsed = false }) => { + const menuItems: MenuItem[] = [ + { key: "1", page: "api-keys", label: "Virtual Keys", icon: }, + { + key: "3", + page: "llm-playground", + label: "Test Key", + icon: , + roles: rolesWithWriteAccess, + }, + { + key: "2", + page: "models", + label: "Models + Endpoints", + icon: , + roles: rolesWithWriteAccess, + }, + { + key: "12", + page: "new_usage", + label: "Usage", + icon: , + roles: [...all_admin_roles, ...internalUserRoles], + }, + { key: "6", page: "teams", label: "Teams", icon: }, + { + key: "17", + page: "organizations", + label: "Organizations", + icon: , + roles: all_admin_roles, + }, + { + key: "5", + page: "users", + label: "Internal Users", + icon: , + roles: all_admin_roles, + }, + { key: "14", page: "api_ref", label: "API Reference", icon: }, + { key: "16", page: "model-hub-table", label: "Model Hub", icon: }, + { key: "15", page: "logs", label: "Logs", icon: }, + { + key: "11", + page: "guardrails", + label: "Guardrails", + icon: , + roles: all_admin_roles, + }, + { + key: "26", + page: "tools", + label: "Tools", + icon: , + children: [ + { key: "18", page: "mcp-servers", label: "MCP Servers", icon: }, + { + key: "21", + page: "vector-stores", + label: "Vector Stores", + icon: , + roles: all_admin_roles, + }, + ], + }, + { + key: "experimental", + page: "experimental", + label: "Experimental", + icon: , + children: [ + { + key: "9", + page: "caching", + label: "Caching", + icon: , + roles: all_admin_roles, + }, + { + key: "25", + page: "prompts", + label: "Prompts", + icon: , + roles: all_admin_roles, + }, + { + key: "10", + page: "budgets", + label: "Budgets", + icon: , + roles: all_admin_roles, + }, + { + key: "20", + page: "transform-request", + label: "API Playground", + icon: , + roles: [...all_admin_roles, ...internalUserRoles], + }, + { + key: "19", + page: "tag-management", + label: "Tag Management", + icon: , + roles: all_admin_roles, + }, + { key: "4", page: "usage", label: "Old Usage", icon: }, + ], + }, + { + key: "settings", + page: "settings", + label: "Settings", + icon: , + roles: all_admin_roles, + children: [ + { + key: "11", + page: "general-settings", + label: "Router Settings", + icon: , + roles: all_admin_roles, + }, + { + key: "8", + page: "settings", + label: "Logging & Alerts", + icon: , + roles: all_admin_roles, + }, + { + key: "13", + page: "admin-panel", + label: "Admin Settings", + icon: , + roles: all_admin_roles, + }, + { + key: "14", + page: "ui-theme", + label: "UI Theme", + icon: , + roles: all_admin_roles, + }, + ], + }, + ]; + + // Role filtering (preserves original visibility behavior) + const filteredMenuItems: MenuItem[] = menuItems + .filter((item) => !item.roles || item.roles.includes(userRole)) + .map((item) => ({ + ...item, + children: item.children?.filter((child) => !child.roles || child.roles.includes(userRole)), + })); + + // Highlight selection based on pathname or ?page= + const pathname = usePathname(); + const searchParams = useSearchParams(); + const pageParam = searchParams.get("page") || undefined; + + const findMenuItemKey = (page: string): string => { + const top = filteredMenuItems.find((i) => i.page === page); + if (top) return top.key; + for (const i of filteredMenuItems) { + const child = i.children?.find((c) => c.page === page); + if (child) return child.key; + } + return "1"; + }; + + const selectedMenuKey = + pathname === "/virtual-keys" + ? "1" + : pageParam + ? findMenuItemKey(pageParam) + : defaultSelectedKey + ? findMenuItemKey(defaultSelectedKey) + : "1"; + + // Root-only routing helper: always replace everything after the domain + const rootWithPage = (p: string) => ({ pathname: "/", query: { page: p } }); + + // Convert to AntD Menu items: + // - "Virtual Keys" still routes to /virtual-keys + // - All other items (and children) route to "/?page=" + const antdItems = filteredMenuItems.map((item) => { + const isVirtualKeys = item.key === "1"; + const label = isVirtualKeys ? ( + Virtual Keys + ) : ( + {item.label} + ); + + return { + key: item.key, + icon: item.icon, + label, + children: item.children?.map((child) => ({ + key: child.key, + icon: child.icon, + label: {child.label}, + })), + }; + }); + + return ( + + + + + + + {isAdminRole(userRole) && !collapsed && } + + + ); +}; + +export default Sidebar; diff --git a/ui/litellm-dashboard/src/app/(console)/components/modals/CreateUserModal.tsx b/ui/litellm-dashboard/src/app/(console)/components/modals/CreateUserModal.tsx new file mode 100644 index 00000000000..4caaceb662f --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/components/modals/CreateUserModal.tsx @@ -0,0 +1,345 @@ +// TODO: refactor +import React, { useState, useEffect } from "react"; +import { Button, Modal, Form, Input, message, Select, InputNumber, Select as Select2 } from "antd"; +import { + Button as Button2, + Text, + TextInput, + SelectItem, + Accordion, + AccordionHeader, + AccordionBody, + Title, +} from "@tremor/react"; +import NotificationsManager from "@/components/molecules/notifications_manager"; +const { Option } = Select; +import { Tooltip } from "antd"; +import { InfoCircleOutlined } from "@ant-design/icons"; +import { useQueryClient } from "@tanstack/react-query"; +import OnboardingModal, { InvitationLink } from "@/components/onboarding_link"; +import { + getProxyBaseUrl, + getProxyUISettings, + invitationCreateCall, + modelAvailableCall, + Team, + userCreateCall, +} from "@/components/networking"; +import { getModelDisplayName } from "@/components/key_team_helpers/fetch_available_models_team_key"; +import BulkCreateUsersButton from "@/components/bulk_create_users_button"; +import { fetchTeams } from "@/app/(console)/virtual-keys/networking"; +import useTeams from "@/app/(console)/virtual-keys/hooks/useTeams"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized"; + +// Helper function to generate UUID compatible across all environments +const generateUUID = (): string => { + if (typeof crypto !== "undefined" && crypto.randomUUID) { + return crypto.randomUUID(); + } + // Fallback UUID generation for environments without crypto.randomUUID + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) { + const r = (Math.random() * 16) | 0; + const v = c == "x" ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); +}; + +interface CreateUserModalProps { + possibleUIRoles: null | Record>; + onUserCreated?: (userId: string) => void; + isEmbedded?: boolean; +} + +interface UISettings { + PROXY_BASE_URL: string | null; + PROXY_LOGOUT_URL: string | null; + DEFAULT_TEAM_DISABLED: boolean; + SSO_ENABLED: boolean; +} + +const CreateUserModal: React.FC = ({ possibleUIRoles, onUserCreated, isEmbedded = false }) => { + const { userId: userID, accessToken } = useAuthorized(); + const queryClient = useQueryClient(); + const [uiSettings, setUISettings] = useState(null); + const [form] = Form.useForm(); + const [isModalVisible, setIsModalVisible] = useState(false); + const [apiuser, setApiuser] = useState(false); + const [userModels, setUserModels] = useState([]); + const [isInvitationLinkModalVisible, setIsInvitationLinkModalVisible] = useState(false); + const [invitationLinkData, setInvitationLinkData] = useState(null); + const [baseUrl, setBaseUrl] = useState(null); + const teams = useTeams(); + + // get all models + useEffect(() => { + const fetchData = async () => { + try { + const userRole = "any"; // You may need to get the user role dynamically + const modelDataResponse = await modelAvailableCall(accessToken, userID, userRole); + // Assuming modelDataResponse.data contains an array of model objects with a 'model_name' property + const availableModels = []; + for (let i = 0; i < modelDataResponse.data.length; i++) { + const model = modelDataResponse.data[i]; + availableModels.push(model.id); + } + console.log("Model data response:", modelDataResponse.data); + console.log("Available models:", availableModels); + + // Assuming modelDataResponse.data contains an array of model names + setUserModels(availableModels); + + // get ui settings + const uiSettingsResponse = await getProxyUISettings(accessToken); + console.log("uiSettingsResponse:", uiSettingsResponse); + + setUISettings(uiSettingsResponse); + } catch (error) { + console.error("Error fetching model data:", error); + } + }; + + setBaseUrl(getProxyBaseUrl()); + + fetchData(); // Call the function to fetch model data when the component mounts + }, []); // Empty dependency array to run only once + + const handleOk = () => { + setIsModalVisible(false); + form.resetFields(); + }; + + const handleCancel = () => { + setIsModalVisible(false); + setApiuser(false); + form.resetFields(); + }; + + const handleCreate = async (formValues: { user_id: string; models?: string[]; user_role: string }) => { + try { + NotificationsManager.info("Making API Call"); + if (!isEmbedded) { + setIsModalVisible(true); + } + if ((!formValues.models || formValues.models.length === 0) && formValues.user_role !== "proxy_admin") { + console.log("formValues.user_role", formValues.user_role); + // If models is empty or undefined, set it to "no-default-models" + formValues.models = ["no-default-models"]; + } + console.log("formValues in create user:", formValues); + const response = await userCreateCall(accessToken, null, formValues); + await queryClient.invalidateQueries({ queryKey: ["userList"] }); + console.log("user create Response:", response); + setApiuser(true); + const user_id = response.data?.user_id || response.user_id; + + // Call the callback if provided (for embedded mode) + if (onUserCreated && isEmbedded) { + onUserCreated(user_id); + form.resetFields(); + return; // Skip the invitation flow when embedded + } + + // only do invite link flow if sso is not enabled + if (!uiSettings?.SSO_ENABLED) { + invitationCreateCall(accessToken, user_id).then((data) => { + data.has_user_setup_sso = false; + setInvitationLinkData(data); + setIsInvitationLinkModalVisible(true); + }); + } else { + // create an InvitationLink Object for this user for the SSO flow + // for SSO the invite link is the proxy base url since the User just needs to login + const invitationLink: InvitationLink = { + id: generateUUID(), // Generate a unique ID + user_id: user_id, + is_accepted: false, + accepted_at: null, + expires_at: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000), // Set expiry to 7 days from now + created_at: new Date(), + created_by: userID, // Assuming userID is the current user creating the invitation + updated_at: new Date(), + updated_by: userID, + has_user_setup_sso: true, + }; + setInvitationLinkData(invitationLink); + setIsInvitationLinkModalVisible(true); + } + + NotificationsManager.success("API user Created"); + form.resetFields(); + localStorage.removeItem("userData" + userID); + } catch (error: any) { + const errorMessage = error.response?.data?.detail || error?.message || "Error creating the user"; + NotificationsManager.fromBackend(errorMessage); + console.error("Error creating the user:", error); + } + }; + + // Modify the return statement to handle embedded mode + if (isEmbedded) { + return ( +
+ + + + + + {possibleUIRoles && + Object.entries(possibleUIRoles).map(([role, { ui_label, description }]) => ( + +
+ {ui_label}{" "} +

+ {description} +

+
+
+ ))} +
+
+ + + + + + + + +
+ +
+
+ ); + } + + // Original return for standalone mode + return ( +
+ setIsModalVisible(true)}> + + Invite User + + + + Create a User who can own keys +
+ + + + + Global Proxy Role{" "} + + + + + } + name="user_role" + > + + {possibleUIRoles && + Object.entries(possibleUIRoles).map(([role, { ui_label, description }]) => ( + +
+ {ui_label}{" "} +

+ {description} +

+
+
+ ))} +
+
+ + + + + + + + + + + Personal Key Creation + + + + Models{" "} + + + + + } + name="models" + help="Models user has access to, outside of team scope." + > + + + All Proxy Models + + {userModels.map((model) => ( + + {getModelDisplayName(model)} + + ))} + + + + +
+ +
+
+
+ {apiuser && ( + + )} +
+ ); +}; + +export default CreateUserModal; diff --git a/ui/litellm-dashboard/src/app/(console)/hooks/useAuthorized.ts b/ui/litellm-dashboard/src/app/(console)/hooks/useAuthorized.ts new file mode 100644 index 00000000000..45f5ee92ea6 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/hooks/useAuthorized.ts @@ -0,0 +1,23 @@ +import { Router } from "next/router"; +import { getCookie } from "@/utils/cookieUtils"; +import { useRouter } from "next/navigation"; +import { jwtDecode } from "jwt-decode"; + +const useAuthorized = () => { + const token = getCookie("token"); + const router = useRouter(); + + if (!token) { + router.replace("/sso/key/generate"); + } + + const decoded = jwtDecode(token as string) as { [key: string]: any }; + const accessToken = decoded.key; + const userId = decoded.user_id; + const userRole = decoded.user_role; + const premiumUser = decoded.premium_user; + + return { accessToken, userId, userRole, premiumUser }; +}; + +export default useAuthorized; diff --git a/ui/litellm-dashboard/src/app/(console)/layout.tsx b/ui/litellm-dashboard/src/app/(console)/layout.tsx new file mode 100644 index 00000000000..cbfb5bdcb53 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/layout.tsx @@ -0,0 +1,46 @@ +"use client"; + +import React from "react"; +import Navbar from "@/components/navbar"; +import { ThemeProvider } from "@/contexts/ThemeContext"; +import Sidebar from "@/app/(console)/components/Sidebar"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized"; + +export default function Layout({ children }: { children: React.ReactNode }) { + const { accessToken, userRole } = useAuthorized(); + const [sidebarCollapsed, setSidebarCollapsed] = React.useState(false); + + const toggleSidebar = () => setSidebarCollapsed((v) => !v); + + return ( + +
+ +
+
+ +
+
{children}
+
+
+
+ ); +} diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKey.tsx b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKey.tsx new file mode 100644 index 00000000000..c8e0b1d8ce5 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKey.tsx @@ -0,0 +1,108 @@ +"use client"; + +import React, { useState, useEffect } from "react"; +import { Button } from "@tremor/react"; +import { Modal, Form } from "antd"; +import { getPossibleUserRoles, Organization } from "@/components/networking"; +import { rolesWithWriteAccess } from "@/utils/roles"; +import { Team } from "@/components/key_team_helpers/key_list"; +import CreateKeyModal from "@/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyModal"; +import CreateUserModal from "@/app/(console)/components/modals/CreateUserModal"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized"; + +interface CreateKeyProps { + team: Team | null; + userRole: string | null; + data: any[] | null; + addKey: (data: any) => void; +} + +interface User { + user_id: string; + user_email: string; + role?: string; +} + +interface UserOption { + label: string; + value: string; + user: User; +} +const CreateKey: React.FC = ({ team, userRole, data, addKey }) => { + const { accessToken } = useAuthorized(); + const [form] = Form.useForm(); + const [isModalVisible, setIsModalVisible] = useState(false); + const [isCreateUserModalVisible, setIsCreateUserModalVisible] = useState(false); + const [newlyCreatedUserId, setNewlyCreatedUserId] = useState(null); + const [possibleUIRoles, setPossibleUIRoles] = useState>>({}); + + useEffect(() => { + const fetchPossibleRoles = async () => { + try { + if (accessToken) { + // Check if roles are cached in session storage + const cachedRoles = sessionStorage.getItem("possibleUserRoles"); + if (cachedRoles) { + setPossibleUIRoles(JSON.parse(cachedRoles)); + } else { + const availableUserRoles = await getPossibleUserRoles(accessToken); + sessionStorage.setItem("possibleUserRoles", JSON.stringify(availableUserRoles)); + setPossibleUIRoles(availableUserRoles); + } + } + } catch (error) { + console.error("Error fetching possible user roles:", error); + } + }; + + fetchPossibleRoles(); + }, [accessToken]); + + // Add a callback function to handle user creation + const handleUserCreated = (userId: string) => { + setNewlyCreatedUserId(userId); + form.setFieldsValue({ user_id: userId }); + setIsCreateUserModalVisible(false); + }; + + const handleUserSelect = (_value: string, option: UserOption): void => { + const selectedUser = option.user; + form.setFieldsValue({ + user_id: selectedUser.user_id, + }); + }; + + return ( +
+ {userRole && rolesWithWriteAccess.includes(userRole) && ( + + )} + + + {isCreateUserModalVisible && ( + setIsCreateUserModalVisible(false)} + footer={null} + width={800} + > + + + )} +
+ ); +}; + +export default CreateKey; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx new file mode 100644 index 00000000000..54e9aaefed7 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx @@ -0,0 +1,148 @@ +import { TextInput, Title } from "@tremor/react"; +import { Form, FormInstance, Select, Tooltip } from "antd"; +import { InfoCircleOutlined } from "@ant-design/icons"; +import { getModelDisplayName } from "@/components/key_team_helpers/fetch_available_models_team_key"; +import React from "react"; + +export interface KeyDetailsSectionProps { + form: FormInstance; + keyOwner: string; + modelsToPick: string[]; + keyType: string; + setKeyType: (keyType: string) => void; +} + +const { Option } = Select; + +const KeyDetailsSection = ({ form, keyOwner, keyType, modelsToPick, setKeyType }: KeyDetailsSectionProps) => { + return ( +
+ Key Details + + {keyOwner === "you" || keyOwner === "another_user" ? "Key Name" : "Service Account ID"}{" "} + + + + + } + name="key_alias" + rules={[ + { + required: true, + message: `Please input a ${keyOwner === "you" ? "key name" : "service account ID"}`, + }, + ]} + help="required" + > + + + + + Models{" "} + + + + + } + name="models" + rules={ + keyType === "management" || keyType === "read_only" + ? [] + : [{ required: true, message: "Please select a model" }] + } + help={ + keyType === "management" || keyType === "read_only" + ? "Models field is disabled for this key type" + : "required" + } + className="mt-4" + > + + + + + Key Type{" "} + + + + + } + name="key_type" + initialValue="default" + className="mt-4" + > + + +
+ ); +}; + +export default KeyDetailsSection; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx new file mode 100644 index 00000000000..c879cdf5955 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx @@ -0,0 +1,458 @@ +import { Accordion, AccordionBody, AccordionHeader, Text, Title } from "@tremor/react"; +import { Form, FormInstance, Input, Select, Tooltip } from "antd"; +import { InfoCircleOutlined } from "@ant-design/icons"; +import { formatNumberWithCommas } from "@/utils/dataUtils"; +import NumericalInput from "@/components/shared/numerical_input"; +import BudgetDurationDropdown from "@/components/common_components/budget_duration_dropdown"; +import RateLimitTypeFormItem from "@/components/common_components/RateLimitTypeFormItem"; +import VectorStoreSelector from "@/components/vector_store_management/VectorStoreSelector"; +import MCPServerSelector from "@/components/mcp_server_management/MCPServerSelector"; +import PremiumLoggingSettings from "@/components/common_components/PremiumLoggingSettings"; +import ModelAliasManager from "@/components/common_components/ModelAliasManager"; +import KeyLifecycleSettings from "@/components/common_components/KeyLifecycleSettings"; +import { proxyBaseUrl } from "@/components/networking"; +import SchemaFormFields from "@/components/common_components/check_openapi_schema"; +import { Team } from "@/components/key_team_helpers/key_list"; +import React from "react"; +import { DefaultOptionType } from "rc-select/lib/Select"; +import { ModelAliases } from "@/app/(console)/virtual-keys/components/CreateKeyModal/types"; + +export interface OptionalSettingsSectionProps { + form: FormInstance; + team: Team | null; + premiumUser: boolean; + guardrails: string[]; + prompts: string[]; + accessToken: string; + predefinedTags: DefaultOptionType[]; + loggingSettings: any; + setLoggingSettings: (settings: any) => void; + disabledCallbacks: string[]; + setDisabledCallbacks: (disabledCallbacks: string[]) => void; + modelAliases: ModelAliases; + setModelAliases: (aliases: ModelAliases) => void; + autoRotationEnabled: boolean; + setAutoRotationEnabled: (enabled: boolean) => void; + rotationInterval: string; + setRotationInterval: (interval: string) => void; +} + +// TODO: break apart this component into smaller sections +const OptionalSettingsSection = ({ + form, + team, + premiumUser, + guardrails, + prompts, + accessToken, + predefinedTags, + loggingSettings, + setLoggingSettings, + disabledCallbacks, + setDisabledCallbacks, + modelAliases, + setModelAliases, + autoRotationEnabled, + setAutoRotationEnabled, + rotationInterval, + setRotationInterval, +}: OptionalSettingsSectionProps) => { + return ( +
+ + + Optional Settings + + + + Max Budget (USD){" "} + + + + + } + name="max_budget" + help={`Budget cannot exceed team max budget: $${team?.max_budget !== null && team?.max_budget !== undefined ? team?.max_budget : "unlimited"}`} + rules={[ + { + validator: async (_, value) => { + if (value && team && team.max_budget !== null && value > team.max_budget) { + throw new Error( + `Budget cannot exceed team max budget: $${formatNumberWithCommas(team.max_budget, 4)}`, + ); + } + }, + }, + ]} + > + + + + Reset Budget{" "} + + + + + } + name="budget_duration" + help={`Team Reset Budget: ${team?.budget_duration !== null && team?.budget_duration !== undefined ? team?.budget_duration : "None"}`} + > + form.setFieldValue("budget_duration", value)} /> + + + Tokens per minute Limit (TPM){" "} + + + + + } + name="tpm_limit" + help={`TPM cannot exceed team TPM limit: ${team?.tpm_limit !== null && team?.tpm_limit !== undefined ? team?.tpm_limit : "unlimited"}`} + rules={[ + { + validator: async (_, value) => { + if (value && team && team.tpm_limit !== null && value > team.tpm_limit) { + throw new Error(`TPM limit cannot exceed team TPM limit: ${team.tpm_limit}`); + } + }, + }, + ]} + > + + + + + Requests per minute Limit (RPM){" "} + + + + + } + name="rpm_limit" + help={`RPM cannot exceed team RPM limit: ${team?.rpm_limit !== null && team?.rpm_limit !== undefined ? team?.rpm_limit : "unlimited"}`} + rules={[ + { + validator: async (_, value) => { + if (value && team && team.rpm_limit !== null && value > team.rpm_limit) { + throw new Error(`RPM limit cannot exceed team RPM limit: ${team.rpm_limit}`); + } + }, + }, + ]} + > + + + + + Guardrails{" "} + + e.stopPropagation()} // Prevent accordion from collapsing when clicking link + > + + + + + } + name="guardrails" + className="mt-4" + help={ + premiumUser + ? "Select existing guardrails or enter new ones" + : "Premium feature - Upgrade to set guardrails by key" + } + > + ({ value: name, label: name }))} + /> + + + Allowed Vector Stores{" "} + + + + + } + name="allowed_vector_store_ids" + className="mt-4" + help="Select vector stores this key can access. Leave empty for access to all vector stores" + > + form.setFieldValue("allowed_vector_store_ids", values)} + value={form.getFieldValue("allowed_vector_store_ids")} + accessToken={accessToken} + placeholder="Select vector stores (optional)" + /> + + + + Allowed MCP Servers{" "} + + + + + } + name="allowed_mcp_servers_and_groups" + className="mt-4" + help="Select MCP servers or access groups this key can access. " + > + form.setFieldValue("allowed_mcp_servers_and_groups", val)} + value={form.getFieldValue("allowed_mcp_servers_and_groups")} + accessToken={accessToken} + placeholder="Select MCP servers or access groups (optional)" + /> + + + + Metadata{" "} + + + + + } + name="metadata" + className="mt-4" + > + + + + Tags{" "} + + + + + } + name="tags" + className="mt-4" + help={`Tags for tracking spend and/or doing tag-based routing.`} + > + handleUserSelect(value, option as UserOption)} + options={userOptions} + loading={userSearchLoading} + allowClear + style={{ width: "100%" }} + notFoundContent={userSearchLoading ? "Searching..." : "No users found"} + /> + setIsCreateUserModalVisible(true)} style={{ marginLeft: "8px" }}> + Create User + +
+
Search by email to find users
+ + + )} + + Team{" "} + + + + + } + name="team_id" + initialValue={team ? team.team_id : null} + className="mt-4" + rules={[ + { + required: keyOwner === "service_account", + message: "Please select a team for the service account", + }, + ]} + help={keyOwner === "service_account" ? "required" : ""} + > + { + const selectedTeam = teams?.find((t) => t.team_id === teamId) || null; + setSelectedCreateKeyTeam(selectedTeam); + }} + /> + + + ); +}; + +export default OwnershipSection; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx new file mode 100644 index 00000000000..9f4d7528a8f --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx @@ -0,0 +1,233 @@ +import { Button as Button2, Form, FormInstance, Modal } from "antd"; +import { Text } from "@tremor/react"; +import { keyCreateCall, keyCreateServiceAccountCall } from "@/components/networking"; +import React, { useEffect, useState } from "react"; +import { Team } from "@/components/key_team_helpers/key_list"; +import SaveKeyModal from "@/app/(console)/virtual-keys/components/SaveKeyModal"; +import NotificationsManager from "@/components/molecules/notifications_manager"; +import { + useGuardrailsAndPrompts, + useMcpAccessGroups, + useTeamModels, + useUserModels, + useUserSearch, +} from "@/app/(console)/virtual-keys/components/CreateKeyModal/hooks"; +import OwnershipSection from "@/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection"; +import KeyDetailsSection from "@/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection"; +import OptionalSettingsSection from "@/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection"; +import { ModelAliases } from "@/app/(console)/virtual-keys/components/CreateKeyModal/types"; +import { getPredefinedTags, prepareFormValues } from "@/app/(console)/virtual-keys/components/CreateKeyModal/utils"; +import { fetchTeams } from "@/app/(console)/virtual-keys/networking"; +import useTeams from "@/app/(console)/virtual-keys/hooks/useTeams"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized"; + +export interface CreateKeyModalProps { + isModalVisible: boolean; + setIsModalVisible: (isModalVisible: boolean) => void; + form: FormInstance; + handleUserSelect: (_value: string, option: UserOption) => void; + setIsCreateUserModalVisible: (visible: boolean) => void; + team: Team | null; + data: any[] | null; + addKey: (data: any) => void; +} + +interface User { + user_id: string; + user_email: string; + role?: string; +} + +interface UserOption { + label: string; + value: string; + user: User; +} + +const CreateKeyModal = ({ + isModalVisible, + setIsModalVisible, + form, + handleUserSelect, + setIsCreateUserModalVisible, + team, + data, + addKey, +}: CreateKeyModalProps) => { + const { userId: userID, userRole, accessToken, premiumUser } = useAuthorized(); + const [apiKey, setApiKey] = useState(null); + const [keyOwner, setKeyOwner] = useState("you"); + const [keyType, setKeyType] = useState("default"); + + const [selectedCreateKeyTeam, setSelectedCreateKeyTeam] = useState(team); + + const [softBudget, setSoftBudget] = useState(null); + const [loggingSettings, setLoggingSettings] = useState([]); + const [disabledCallbacks, setDisabledCallbacks] = useState([]); + const [autoRotationEnabled, setAutoRotationEnabled] = useState(false); + const [rotationInterval, setRotationInterval] = useState("30d"); + const [modelAliases, setModelAliases] = useState({}); + const predefinedTags = getPredefinedTags(data); + + const { options: userOptions, loading: userSearchLoading, onSearch: handleUserSearch } = useUserSearch(); + const { guardrails, prompts } = useGuardrailsAndPrompts(); + const teams = useTeams(); + const mcpAccessGroups = useMcpAccessGroups(); + const userModels = useUserModels(); + const modelsToPick = useTeamModels(selectedCreateKeyTeam); + + const isTeamSelectionRequired = modelsToPick.includes("no-default-models"); + const isFormDisabled = isTeamSelectionRequired && !selectedCreateKeyTeam; + + const handleCancel = () => { + setIsModalVisible(false); + setApiKey(null); + setSelectedCreateKeyTeam(null); + form.resetFields(); + setLoggingSettings([]); + setDisabledCallbacks([]); + setKeyType("default"); + setModelAliases({}); + setAutoRotationEnabled(false); + setRotationInterval("30d"); + }; + + const handleOk = () => { + setIsModalVisible(false); + form.resetFields(); + setLoggingSettings([]); + setDisabledCallbacks([]); + setKeyType("default"); + setModelAliases({}); + setAutoRotationEnabled(false); + setRotationInterval("30d"); + }; + + const handleCreate = async (formValues: Record) => { + try { + const newKeyAlias = formValues?.key_alias ?? ""; + const newKeyTeamId = formValues?.team_id ?? null; + + const existingKeyAliases = data?.filter((k) => k.team_id === newKeyTeamId).map((k) => k.key_alias) ?? []; + + if (existingKeyAliases.includes(newKeyAlias)) { + throw new Error( + `Key alias ${newKeyAlias} already exists for team with ID ${newKeyTeamId}, please provide another key alias`, + ); + } + + NotificationsManager.info("Making API Call"); + setIsModalVisible(true); + + const prepared = prepareFormValues(formValues, { + keyOwner, + userID, + loggingSettings, + disabledCallbacks, + autoRotationEnabled, + rotationInterval, + modelAliases, + }); + + let response; + if (keyOwner === "service_account") { + response = await keyCreateServiceAccountCall(accessToken, prepared); + } else { + response = await keyCreateCall(accessToken, userID, prepared); + } + + // TODO: change logic to trigger API call in parent component + addKey(response); + + setApiKey(response["key"]); + setSoftBudget(response["soft_budget"]); + NotificationsManager.success("API Key Created"); + form.resetFields(); + localStorage.removeItem("userData" + userID); + } catch (error) { + console.log("error in create key:", error); + NotificationsManager.fromBackend(`Error creating the key: ${error}`); + } + }; + + useEffect(() => { + form.setFieldValue("models", []); + }, [selectedCreateKeyTeam, accessToken, userID, userRole, form]); + + return ( +
+ +
+ + + {/* Show message when team selection is required */} + {isFormDisabled && ( +
+ + Please select a team to continue configuring your API key. If you do not see any teams, please contact + your Proxy Admin to either provide you with access to models or to add you to a team. + +
+ )} + + {/* Section 2: Key Details */} + {!isFormDisabled && ( + + )} + + {/* Section 3: Optional Settings */} + {!isFormDisabled && ( + + )} + +
+ + Create Key + +
+ +
+ {apiKey && ( + + )} +
+ ); +}; + +export default CreateKeyModal; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/index.ts b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/index.ts new file mode 100644 index 00000000000..ca3c4a663b9 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/index.ts @@ -0,0 +1,5 @@ +export * from "./useGuardrailsAndPrompts"; +export * from "./useMcpAccessGroups"; +export * from "./useUserModels"; +export * from "./useTeamModels"; +export * from "./useUserSearch"; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts new file mode 100644 index 00000000000..d092219f70b --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts @@ -0,0 +1,24 @@ +import { useEffect, useState } from "react"; +import { fetchGuardrails, fetchPrompts } from "@/app/(console)/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized"; + +export const useGuardrailsAndPrompts = () => { + const [guardrails, setGuardrails] = useState([]); + const [prompts, setPrompts] = useState([]); + const { accessToken } = useAuthorized(); + + useEffect(() => { + if (!accessToken) { + setGuardrails([]); + setPrompts([]); + return; + } + (async () => { + const [g, p] = await Promise.all([fetchGuardrails(accessToken), fetchPrompts(accessToken)]); + setGuardrails(g || []); + setPrompts(p || []); + })(); + }, [accessToken]); + + return { guardrails, prompts }; +}; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts new file mode 100644 index 00000000000..8313f6e8d6d --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts @@ -0,0 +1,21 @@ +import { useEffect, useState } from "react"; +import { getMCPAccessGroups } from "@/app/(console)/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized"; + +export const useMcpAccessGroups = () => { + const [mcpAccessGroups, setMcpAccessGroups] = useState([]); + const { accessToken } = useAuthorized(); + + useEffect(() => { + if (!accessToken) { + setMcpAccessGroups([]); + return; + } + (async () => { + const groups = await getMCPAccessGroups(accessToken); + setMcpAccessGroups(groups || []); + })(); + }, [accessToken]); + + return mcpAccessGroups; +}; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts new file mode 100644 index 00000000000..c28ef0ecdb2 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts @@ -0,0 +1,26 @@ +import { useEffect, useMemo, useState } from "react"; +import type { Team } from "@/components/key_team_helpers/key_list"; +import { fetchTeamModels } from "@/app/(console)/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized"; + +export const useTeamModels = (selectedTeam: Team | null) => { + const { userId: userID, userRole, accessToken } = useAuthorized(); + const [modelsToPick, setModelsToPick] = useState([]); + + // turn array into a stable dep so it only re-runs when contents change + const selectedTeamModelsKey = useMemo(() => (selectedTeam?.models ?? []).join("|"), [selectedTeam?.models]); + + useEffect(() => { + if (!userID || !userRole || !accessToken) { + setModelsToPick([]); + return; + } + (async () => { + const fetched = await fetchTeamModels(userID, userRole, accessToken, selectedTeam?.team_id ?? null); + const union = Array.from(new Set([...(selectedTeam?.models ?? []), ...(fetched || [])])); + setModelsToPick(union); + })(); + }, [userID, userRole, accessToken, selectedTeam?.team_id, selectedTeamModelsKey, selectedTeam?.models]); + + return modelsToPick; +}; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts new file mode 100644 index 00000000000..ddba6879cc9 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts @@ -0,0 +1,21 @@ +import { useEffect, useState } from "react"; +import { getUserModelNames } from "@/app/(console)/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized"; + +export const useUserModels = () => { + const { userId: userID, userRole, accessToken } = useAuthorized(); + const [userModels, setUserModels] = useState([]); + + useEffect(() => { + if (!userID || !userRole || !accessToken) { + setUserModels([]); + return; + } + (async () => { + const modelNames = await getUserModelNames(userID, userRole, accessToken); + setUserModels(modelNames || []); + })(); + }, [userID, userRole, accessToken]); + + return userModels; +}; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts new file mode 100644 index 00000000000..782beccf48f --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts @@ -0,0 +1,41 @@ +import { useEffect, useMemo, useState } from "react"; +import { debounce } from "lodash"; +import { searchUserOptionsByEmail } from "@/app/(console)/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized"; + +type User = { user_id: string; user_email: string; role?: string }; +export interface UserOption { + label: string; + value: string; + user: User; +} + +export const useUserSearch = (delay = 300) => { + const { accessToken } = useAuthorized(); + const [options, setOptions] = useState([]); + const [loading, setLoading] = useState(false); + + const doSearch = async (raw: string) => { + const q = raw?.trim(); + if (!q || !accessToken) { + setOptions([]); + setLoading(false); + return; + } + setLoading(true); + try { + const res = await searchUserOptionsByEmail(accessToken, q); + setOptions(res || []); + } finally { + setLoading(false); + } + }; + + const onSearch = useMemo(() => debounce(doSearch, delay), [accessToken, delay]); + + useEffect(() => { + return () => onSearch.cancel(); + }, [onSearch]); + + return { options, loading, onSearch }; +}; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/networking.ts b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/networking.ts new file mode 100644 index 00000000000..6cb4e2f7f07 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/networking.ts @@ -0,0 +1,84 @@ +import { + fetchMCPAccessGroups, + getGuardrailsList, + getPromptsList, + modelAvailableCall, + User, + userFilterUICall, +} from "@/components/networking"; +import { ModelAvailableResponse, UserOption } from "@/app/(console)/virtual-keys/components/CreateKeyModal/types"; + +export const fetchGuardrails = async (accessToken: string) => { + try { + const response = await getGuardrailsList(accessToken); + return response.guardrails.map((g: { guardrail_name: string }) => g.guardrail_name); + } catch (error) { + console.error("Failed to fetch guardrails:", error); + return []; + } +}; + +export const fetchPrompts = async (accessToken: string) => { + try { + const response = await getPromptsList(accessToken); + return response.prompts.map((prompt) => prompt.prompt_id); + } catch (error) { + console.error("Failed to fetch prompts:", error); + return []; + } +}; + +export const searchUserOptionsByEmail = async (accessToken: string, emailQuery: string): Promise => { + const params = new URLSearchParams(); + params.append("user_email", emailQuery); + + const response = await userFilterUICall(accessToken, params); + const users: User[] = response; + + return users.map((user) => ({ + label: `${user.user_email} (${user.user_id})`, + value: user.user_id, + user, + })); +}; + +export const getUserModelNames = async (userID: string, userRole: string, accessToken: string): Promise => { + const res: ModelAvailableResponse = await modelAvailableCall(accessToken, userID, userRole); + return (res?.data ?? []).map((m) => m.id); +}; + +export const fetchTeamModels = async ( + userID: string, + userRole: string, + accessToken: string, + teamID: string | null, +): Promise => { + try { + if (userID === null || userRole === null) { + return []; + } + + if (accessToken !== null) { + const model_available = await modelAvailableCall(accessToken, userID, userRole, true, teamID, true); + let available_model_names = model_available["data"].map((element: { id: string }) => element.id); + console.log("available_model_names:", available_model_names); + return available_model_names; + } + return []; + } catch (error) { + console.error("Error fetching user models:", error); + return []; + } +}; + +export const getMCPAccessGroups = async (accessToken: string): Promise => { + try { + if (accessToken == null) { + return []; + } + return await fetchMCPAccessGroups(accessToken); + } catch (error) { + console.error("Failed to fetch MCP access groups:", error); + return []; + } +}; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/types.ts b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/types.ts new file mode 100644 index 00000000000..4d48df82d44 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/types.ts @@ -0,0 +1,17 @@ +export interface User { + user_id: string; + user_email: string; + role?: string; +} + +export interface UserOption { + label: string; + value: string; + user: User; +} + +export type Model = { id: string }; + +export type ModelAvailableResponse = { data: Model[] }; + +export type ModelAliases = { [key: string]: string }; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/utils.ts b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/utils.ts new file mode 100644 index 00000000000..066770cf468 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/utils.ts @@ -0,0 +1,187 @@ +import { mapDisplayToInternalNames } from "@/components/callback_info_helpers"; +import { ModelAliases } from "@/app/(console)/virtual-keys/components/CreateKeyModal/types"; + +export const getPredefinedTags = (data: any[] | null) => { + let allTags = []; + + console.log("data:", JSON.stringify(data)); + + if (data) { + for (let key of data) { + if (key["metadata"] && key["metadata"]["tags"]) { + allTags.push(...key["metadata"]["tags"]); + } + } + } + + const uniqueTags = Array.from(new Set(allTags)).map((tag) => ({ + value: tag, + label: tag, + })); + + console.log("uniqueTags:", uniqueTags); + return uniqueTags; +}; + +type AnyObj = Record; + +type PrepareOptions = { + keyOwner: string; + userID: string; + loggingSettings: any[]; + disabledCallbacks: string[]; + autoRotationEnabled: boolean; + rotationInterval: string; + modelAliases: ModelAliases; +}; + +export function safeParseMetadata(metadataStr: string | undefined): AnyObj { + try { + return JSON.parse(metadataStr || "{}"); + } catch (error) { + console.error("Error parsing metadata:", error); + return {}; + } +} + +export function withOwnerAssignments( + values: AnyObj, + { keyOwner, userID }: Pick, +): AnyObj { + // If owned by "you", set user_id + const base = keyOwner === "you" ? { ...values, user_id: userID } : { ...values }; + return base; +} + +export function enrichMetadata( + metadata: AnyObj, + values: AnyObj, + { + keyOwner, + loggingSettings, + disabledCallbacks, + }: Pick, +): AnyObj { + let next = { ...metadata }; + + // If it's a service account, add the service_account_id to the metadata + if (keyOwner === "service_account") { + next = { ...next, service_account_id: values.key_alias }; + } + + // Add logging settings to the metadata + if (Array.isArray(loggingSettings) && loggingSettings.length > 0) { + next = { ...next, logging: loggingSettings.filter((config: any) => config?.callback_name) }; + } + + // Add disabled callbacks to the metadata + if (Array.isArray(disabledCallbacks) && disabledCallbacks.length > 0) { + const mappedDisabledCallbacks = mapDisplayToInternalNames(disabledCallbacks); + next = { ...next, litellm_disabled_callbacks: mappedDisabledCallbacks }; + } + + return next; +} + +export function withAutoRotation( + values: AnyObj, + { autoRotationEnabled, rotationInterval }: Pick, +): AnyObj { + if (!autoRotationEnabled) return { ...values }; + return { ...values, auto_rotate: true, rotation_interval: rotationInterval }; +} + +export function withDurationNoop(values: AnyObj): AnyObj { + // Preserve the original no-op logic: if duration exists, set it to itself + if (values.duration) { + return { ...values, duration: values.duration }; + } + return { ...values }; +} + +export function mergeObjectPermission(values: AnyObj, patch: AnyObj): AnyObj { + const object_permission = { ...(values.object_permission || {}), ...patch }; + return { ...values, object_permission }; +} + +export function withVectorStores(values: AnyObj): AnyObj { + const { allowed_vector_store_ids, ...rest } = values; + if (Array.isArray(allowed_vector_store_ids) && allowed_vector_store_ids.length > 0) { + const patched = mergeObjectPermission(rest, { vector_stores: allowed_vector_store_ids }); + return patched; // original field removed by destructuring + } + return { ...values }; +} + +export function withMcpServersAndGroups(values: AnyObj): AnyObj { + const { allowed_mcp_servers_and_groups, ...rest } = values; + const servers = allowed_mcp_servers_and_groups?.servers; + const accessGroups = allowed_mcp_servers_and_groups?.accessGroups; + + const hasServers = Array.isArray(servers) && servers.length > 0; + const hasAccessGroups = Array.isArray(accessGroups) && accessGroups.length > 0; + + if (!hasServers && !hasAccessGroups) return { ...values }; + + let patched = { ...rest }; + if (hasServers) patched = mergeObjectPermission(patched, { mcp_servers: servers }); + if (hasAccessGroups) patched = mergeObjectPermission(patched, { mcp_access_groups: accessGroups }); + + // original field removed by destructuring + return patched; +} + +export function withMcpAccessGroups(values: AnyObj): AnyObj { + const { allowed_mcp_access_groups, ...rest } = values; + if (Array.isArray(allowed_mcp_access_groups) && allowed_mcp_access_groups.length > 0) { + const patched = mergeObjectPermission(rest, { mcp_access_groups: allowed_mcp_access_groups }); + return patched; // original field removed by destructuring + } + return { ...values }; +} + +function withAliases(values: AnyObj, modelAliases: ModelAliases): AnyObj { + if (modelAliases && Object.keys(modelAliases).length > 0) { + return { ...values, aliases: JSON.stringify(modelAliases) }; + } + return { ...values }; +} + +function withMetadataString(values: AnyObj, metadata: AnyObj): AnyObj { + return { ...values, metadata: JSON.stringify(metadata) }; +} + +export function prepareFormValues(initialValues: AnyObj, opts: PrepareOptions): AnyObj { + // Step 1: assign user id if needed + let values = withOwnerAssignments(initialValues, { keyOwner: opts.keyOwner, userID: opts.userID }); + + // Step 2: metadata parse & enrichment + const parsedMetadata = safeParseMetadata(values.metadata); + const enrichedMetadata = enrichMetadata(parsedMetadata, values, { + keyOwner: opts.keyOwner, + loggingSettings: opts.loggingSettings, + disabledCallbacks: opts.disabledCallbacks, + }); + + // Step 3: auto-rotation + values = withAutoRotation(values, { + autoRotationEnabled: opts.autoRotationEnabled, + rotationInterval: opts.rotationInterval, + }); + + // Step 4: duration (no-op preservation) + values = withDurationNoop(values); + + // Step 5: commit metadata string + values = withMetadataString(values, enrichedMetadata); + + // Step 6: object_permission transformations + values = withVectorStores(values); + values = withMcpServersAndGroups(values); + values = withMcpAccessGroups(values); + + // Step 7: aliases + values = withAliases(values, opts.modelAliases); + + return values; +} diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/KeyInfoView.tsx b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/KeyInfoView.tsx new file mode 100644 index 00000000000..1c7185f1dc4 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/KeyInfoView.tsx @@ -0,0 +1,697 @@ +import React, { useEffect, useState } from "react"; +import { + Card, + Text, + Button, + Grid, + Tab, + TabList, + TabGroup, + TabPanel, + TabPanels, + Title, + Badge, +} from "@tremor/react"; +import { ArrowLeftIcon, TrashIcon, RefreshIcon } from "@heroicons/react/outline"; +import { Form, Tooltip, Button as AntdButton } from "antd"; +import { copyToClipboard as utilCopyToClipboard, formatNumberWithCommas } from "@/utils/dataUtils"; +import { CopyIcon, CheckIcon } from "lucide-react"; +import { KeyResponse } from "@/components/key_team_helpers/key_list" +import { mapDisplayToInternalNames, mapInternalToDisplayNames } from "@/components/callback_info_helpers" +import NotificationManager from "@/components/molecules/notifications_manager" +import { keyDeleteCall, keyUpdateCall } from "@/components/networking" +import { parseErrorMessage } from "@/components/shared/errorUtils" +import { rolesWithWriteAccess } from "@/utils/roles" +import { RegenerateKeyModal } from "@/components/organisms/regenerate_key_modal" +import ObjectPermissionsView from "@/components/object_permissions_view" +import LoggingSettingsView from "@/components/logging_settings_view" +import { extractLoggingSettings, formatMetadataForDisplay } from "@/components/key_info_utils" +import AutoRotationView from "@/components/common_components/AutoRotationView" +import { KeyEditView } from "@/components/templates/key_edit_view" + + +interface KeyInfoViewProps { + keyId: string; + onClose: () => void; + keyData: KeyResponse | undefined; + onKeyDataUpdate?: (data: Partial) => void; + onDelete?: () => void; + accessToken: string | null; + userID: string | null; + userRole: string | null; + teams: any[] | null; + premiumUser: boolean; + setAccessToken?: (token: string) => void; + backButtonText?: string; +} + +const KeyInfoView = ({ + keyId, + onClose, + keyData, + accessToken, + userID, + userRole, + teams, + onKeyDataUpdate, + onDelete, + premiumUser, + setAccessToken, + backButtonText = "Back to Keys", + }: KeyInfoViewProps) => { + const [isEditing, setIsEditing] = useState(false); + const [form] = Form.useForm(); + const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false); + const [deleteConfirmInput, setDeleteConfirmInput] = useState(""); + const [isRegenerateModalOpen, setIsRegenerateModalOpen] = useState(false); + const [copiedStates, setCopiedStates] = useState>({}); + + // Add local state to maintain key data and track regeneration + const [currentKeyData, setCurrentKeyData] = useState(keyData); + const [lastRegeneratedAt, setLastRegeneratedAt] = useState(null); + const [isRecentlyRegenerated, setIsRecentlyRegenerated] = useState(false); + + // Update local state when keyData prop changes (but don't reset to undefined) + useEffect(() => { + if (keyData) { + setCurrentKeyData(keyData); + } + }, [keyData]); + + // Reset recent regeneration indicator after 5 seconds + useEffect(() => { + if (isRecentlyRegenerated) { + const timer = setTimeout(() => { + setIsRecentlyRegenerated(false); + }, 5000); + return () => clearTimeout(timer); + } + }, [isRecentlyRegenerated]); + + // Use currentKeyData instead of keyData throughout the component + if (!currentKeyData) { + return ( +
+ + Key not found +
+ ); + } + + const handleKeyUpdate = async (formValues: Record) => { + try { + if (!accessToken) return; + + const currentKey = formValues.token; + formValues.key = currentKey; + + // Guard premium features + if (!premiumUser) { + delete formValues.guardrails; + delete formValues.prompts; + } + + // Handle object_permission updates + if (formValues.vector_stores !== undefined) { + formValues.object_permission = { + ...currentKeyData.object_permission, + vector_stores: formValues.vector_stores || [], + }; + // Remove vector_stores from the top level as it should be in object_permission + delete formValues.vector_stores; + } + + if (formValues.mcp_servers_and_groups !== undefined) { + const { servers, accessGroups } = formValues.mcp_servers_and_groups || { servers: [], accessGroups: [] }; + formValues.object_permission = { + ...currentKeyData.object_permission, + mcp_servers: servers || [], + mcp_access_groups: accessGroups || [], + }; + // Remove mcp_servers_and_groups from the top level as it should be in object_permission + delete formValues.mcp_servers_and_groups; + } + + // Convert metadata back to an object if it exists and is a string + if (formValues.metadata && typeof formValues.metadata === "string") { + try { + const parsedMetadata = JSON.parse(formValues.metadata); + formValues.metadata = { + ...parsedMetadata, + ...(formValues.guardrails?.length > 0 ? { guardrails: formValues.guardrails } : {}), + ...(formValues.logging_settings ? { logging: formValues.logging_settings } : {}), + ...(formValues.disabled_callbacks?.length > 0 + ? { + litellm_disabled_callbacks: mapDisplayToInternalNames(formValues.disabled_callbacks), + } + : {}), + }; + } catch (error) { + console.error("Error parsing metadata JSON:", error); + NotificationManager.error("Invalid metadata JSON"); + return; + } + } else { + formValues.metadata = { + ...(formValues.metadata || {}), + ...(formValues.guardrails?.length > 0 ? { guardrails: formValues.guardrails } : {}), + ...(formValues.logging_settings ? { logging: formValues.logging_settings } : {}), + ...(formValues.disabled_callbacks?.length > 0 + ? { + litellm_disabled_callbacks: mapDisplayToInternalNames(formValues.disabled_callbacks), + } + : {}), + }; + } + + delete formValues.logging_settings; + + // Convert budget_duration to API format + if (formValues.budget_duration) { + const durationMap: Record = { + daily: "24h", + weekly: "7d", + monthly: "30d", + }; + formValues.budget_duration = durationMap[formValues.budget_duration]; + } + + const newKeyValues = await keyUpdateCall(accessToken, formValues); + + // Update local state + setCurrentKeyData((prevData) => (prevData ? { ...prevData, ...newKeyValues } : undefined)); + + if (onKeyDataUpdate) { + onKeyDataUpdate(newKeyValues); + } + NotificationManager.success("Key updated successfully"); + setIsEditing(false); + // Refresh key data here if needed + } catch (error) { + NotificationManager.fromBackend(parseErrorMessage(error)); + console.error("Error updating key:", error); + } + }; + + const handleDelete = async () => { + try { + if (!accessToken) return; + await keyDeleteCall(accessToken as string, currentKeyData.token || currentKeyData.token_id); + NotificationManager.success("Key deleted successfully"); + if (onDelete) { + onDelete(); + } + onClose(); + } catch (error) { + console.error("Error deleting the key:", error); + NotificationManager.fromBackend(error); + } + // Reset the confirmation input + setDeleteConfirmInput(""); + }; + + const copyToClipboard = async (text: string, key: string) => { + const success = await utilCopyToClipboard(text); + if (success) { + setCopiedStates((prev) => ({ ...prev, [key]: true })); + setTimeout(() => { + setCopiedStates((prev) => ({ ...prev, [key]: false })); + }, 2000); + } + }; + + const handleRegenerateKeyUpdate = (updatedKeyData: Partial) => { + // Update local state immediately with ALL the new data + setCurrentKeyData((prevData) => { + if (!prevData) return undefined; + const newData = { + ...prevData, + ...updatedKeyData, // This should include the new token (key-id) + // Update the created_at to show when it was regenerated + created_at: new Date().toLocaleString(), + }; + return newData; + }); + + // Track regeneration timestamp + setLastRegeneratedAt(new Date()); + setIsRecentlyRegenerated(true); + + if (onKeyDataUpdate) { + onKeyDataUpdate({ + ...updatedKeyData, + created_at: new Date().toLocaleString(), + }); + } + }; + + // Update the formatTimestamp function to use the desired date format + const formatTimestamp = (timestamp: string | Date) => { + const date = new Date(timestamp); + const dateStr = date.toLocaleDateString("en-US", { + year: "numeric", + month: "short", + day: "numeric", + }); + const timeStr = date.toLocaleTimeString("en-US", { + hour: "numeric", + minute: "2-digit", + hour12: true, + }); + return `${dateStr} at ${timeStr}`; + }; + + return ( +
+
+
+ + {currentKeyData.key_alias || "API Key"} + +
+
+ Key ID + {currentKeyData.token_id || currentKeyData.token} +
+ : } + onClick={() => copyToClipboard(currentKeyData.token_id || currentKeyData.token, "key-id")} + className={`ml-2 transition-all duration-200${ + copiedStates["key-id"] + ? "text-green-600 bg-green-50 border-green-200" + : "text-gray-500 hover:text-gray-700 hover:bg-gray-100" + }`} + /> +
+ + {/* Add timestamp and regeneration indicator */} +
+ + {currentKeyData.updated_at && currentKeyData.updated_at !== currentKeyData.created_at + ? `Updated: ${formatTimestamp(currentKeyData.updated_at)}` + : `Created: ${formatTimestamp(currentKeyData.created_at)}`} + + + {isRecentlyRegenerated && ( + + Recently Regenerated + + )} + + {lastRegeneratedAt && ( + + Regenerated + + )} +
+
+ {userRole && rolesWithWriteAccess.includes(userRole) && ( +
+ + + + + + +
+ )} +
+ + {/* Add RegenerateKeyModal */} + setIsRegenerateModalOpen(false)} + accessToken={accessToken} + premiumUser={premiumUser} + setAccessToken={setAccessToken} + onKeyUpdate={handleRegenerateKeyUpdate} + /> + + {/* Delete Confirmation Modal */} + {isDeleteModalOpen && + (() => { + const keyName = currentKeyData?.key_alias || currentKeyData?.token_id || "API Key"; + const isValid = deleteConfirmInput === keyName; + return ( +
+
+
+
+

Delete Key

+ +
+
+
+
+ + + +
+
+

+ Warning: You are about to delete this API key. +

+

+ This action is irreversible and will immediately revoke access for any applications using this + key. +

+
+
+

Are you sure you want to delete this API key?

+
+ + setDeleteConfirmInput(e.target.value)} + placeholder="Enter key name exactly" + className="w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base" + autoFocus + /> +
+
+
+
+ + +
+
+
+ ); + })()} + + + + Overview + Settings + + + + {/* Overview Panel */} + + + + Spend +
+ ${formatNumberWithCommas(currentKeyData.spend, 4)} + + of{" "} + {currentKeyData.max_budget !== null + ? `$${formatNumberWithCommas(currentKeyData.max_budget)}` + : "Unlimited"} + +
+
+ + + Rate Limits +
+ TPM: {currentKeyData.tpm_limit !== null ? currentKeyData.tpm_limit : "Unlimited"} + RPM: {currentKeyData.rpm_limit !== null ? currentKeyData.rpm_limit : "Unlimited"} +
+
+ + + Models +
+ {currentKeyData.models && currentKeyData.models.length > 0 ? ( + currentKeyData.models.map((model, index) => ( + + {model} + + )) + ) : ( + No models specified + )} +
+
+ + + + + + + + +
+
+ + {/* Settings Panel */} + + +
+ Key Settings + {!isEditing && userRole && rolesWithWriteAccess.includes(userRole) && ( + + )} +
+ + {isEditing ? ( + setIsEditing(false)} + onSubmit={handleKeyUpdate} + teams={teams} + accessToken={accessToken} + userID={userID} + userRole={userRole} + premiumUser={premiumUser} + /> + ) : ( +
+
+ Key ID + {currentKeyData.token_id || currentKeyData.token} +
+ +
+ Key Alias + {currentKeyData.key_alias || "Not Set"} +
+ +
+ Secret Key + {currentKeyData.key_name} +
+ +
+ Team ID + {currentKeyData.team_id || "Not Set"} +
+ +
+ Organization + {currentKeyData.organization_id || "Not Set"} +
+ +
+ Created + {formatTimestamp(currentKeyData.created_at)} +
+ + {lastRegeneratedAt && ( +
+ Last Regenerated +
+ {formatTimestamp(lastRegeneratedAt)} + + Recent + +
+
+ )} + +
+ Expires + {currentKeyData.expires ? formatTimestamp(currentKeyData.expires) : "Never"} +
+ + + +
+ Spend + ${formatNumberWithCommas(currentKeyData.spend, 4)} USD +
+ +
+ Budget + + {currentKeyData.max_budget !== null + ? `$${formatNumberWithCommas(currentKeyData.max_budget, 2)}` + : "Unlimited"} + +
+ +
+ Prompts + + {Array.isArray(currentKeyData.metadata?.prompts) && currentKeyData.metadata.prompts.length > 0 + ? currentKeyData.metadata.prompts.map((prompt, index) => ( + + {prompt} + + )) + : "No prompts specified"} + +
+ +
+ Models +
+ {currentKeyData.models && currentKeyData.models.length > 0 ? ( + currentKeyData.models.map((model, index) => ( + + {model} + + )) + ) : ( + No models specified + )} +
+
+ +
+ Rate Limits + TPM: {currentKeyData.tpm_limit !== null ? currentKeyData.tpm_limit : "Unlimited"} + RPM: {currentKeyData.rpm_limit !== null ? currentKeyData.rpm_limit : "Unlimited"} + + Max Parallel Requests:{" "} + {currentKeyData.max_parallel_requests !== null + ? currentKeyData.max_parallel_requests + : "Unlimited"} + + + Model TPM Limits:{" "} + {currentKeyData.metadata?.model_tpm_limit + ? JSON.stringify(currentKeyData.metadata.model_tpm_limit) + : "Unlimited"} + + + Model RPM Limits:{" "} + {currentKeyData.metadata?.model_rpm_limit + ? JSON.stringify(currentKeyData.metadata.model_rpm_limit) + : "Unlimited"} + +
+ +
+ Metadata +
+                      {formatMetadataForDisplay(currentKeyData.metadata)}
+                    
+
+ + + + +
+ )} +
+
+
+
+
+ ); +} + +export default KeyInfoView; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/SaveKeyModal.tsx b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/SaveKeyModal.tsx new file mode 100644 index 00000000000..bd0d425c465 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/SaveKeyModal.tsx @@ -0,0 +1,58 @@ +import { Button, Col, Grid, Text, Title } from "@tremor/react"; +import { CopyToClipboard } from "react-copy-to-clipboard"; +import { Modal } from "antd"; +import React from "react"; +import NotificationsManager from "@/components/molecules/notifications_manager"; + +export interface SaveKeyModalProps { + apiKey: string; + isModalVisible: boolean; + handleOk: () => void; + handleCancel: () => void; +} + +const SaveKeyModal = ({ apiKey, isModalVisible, handleOk, handleCancel }: SaveKeyModalProps) => { + const handleCopy = () => { + NotificationsManager.success("API Key copied to clipboard"); + }; + + return ( + + + Save your Key + +

+ Please save this secret key somewhere safe and accessible. For security reasons,{" "} + you will not be able to view it again through your LiteLLM account. If you lose this secret key, you + will need to generate a new one. +

+ + + {apiKey != null ? ( +
+ API Key: +
+
{apiKey}
+
+ + + + +
+ ) : ( + Key being created, this might take 30s + )} + +
+
+ ); +}; + +export default SaveKeyModal; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx new file mode 100644 index 00000000000..5c32a736ae3 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx @@ -0,0 +1,666 @@ +// TODO: refactor +"use client"; + +import React, { useEffect, useState } from "react"; +import { ColumnDef } from "@tanstack/react-table"; +import { Button } from "@tremor/react"; +import { Tooltip } from "antd"; +import { updateExistingKeys } from "@/utils/dataUtils"; +import { flexRender, getCoreRowModel, getSortedRowModel, SortingState, useReactTable } from "@tanstack/react-table"; +import { Table, TableHead, TableHeaderCell, TableBody, TableRow, TableCell, Icon } from "@tremor/react"; +import { SwitchVerticalIcon, ChevronUpIcon, ChevronDownIcon, ChevronRightIcon } from "@heroicons/react/outline"; +import { Badge, Text } from "@tremor/react"; +import { formatNumberWithCommas } from "@/utils/dataUtils"; +import { KeyResponse, Team } from "@/components/key_team_helpers/key_list"; +import { Organization, userListCall } from "@/components/networking"; +import { getModelDisplayName } from "@/components/key_team_helpers/fetch_available_models_team_key"; +import FilterComponent, { FilterOption } from "@/components/molecules/filter"; +import KeyInfoView from "@/components/templates/key_info_view"; +import { useFilterLogic } from "@/components/key_team_helpers/filter_logic"; +import useTeams from "@/app/(console)/virtual-keys/hooks/useTeams"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized"; + +interface AllKeysTableProps { + keys: KeyResponse[]; + setKeys: (keys: KeyResponse[] | ((prev: KeyResponse[]) => KeyResponse[])) => void; + isLoading?: boolean; + pagination: { + currentPage: number; + totalPages: number; + totalCount: number; + }; + onPageChange: (page: number) => void; + pageSize?: number; + organizations: Organization[] | null; + refresh?: () => void; + onSortChange?: (sortBy: string, sortOrder: "asc" | "desc") => void; + currentSort?: { + sortBy: string; + sortOrder: "asc" | "desc"; + }; + setAccessToken?: (token: string) => void; +} + +interface UserResponse { + user_id: string; + user_email: string; + user_role: string; +} + +const VirtualKeysTable = ({ + keys, + setKeys, + isLoading = false, + pagination, + onPageChange, + pageSize = 50, + organizations, + refresh, + onSortChange, + currentSort, + setAccessToken, +}: AllKeysTableProps) => { + const { userId: userID, userRole, accessToken, premiumUser } = useAuthorized(); + const teams = useTeams(); + const [selectedKeyId, setSelectedKeyId] = useState(null); + const [userList, setUserList] = useState([]); + const [sorting, setSorting] = React.useState(() => { + if (currentSort) { + return [ + { + id: currentSort.sortBy, + desc: currentSort.sortOrder === "desc", + }, + ]; + } + return [ + { + id: "created_at", + desc: true, + }, + ]; + }); + const [expandedAccordions, setExpandedAccordions] = useState>({}); + + // Use the filter logic hook + + const { filters, filteredKeys, allKeyAliases, allTeams, allOrganizations, handleFilterChange, handleFilterReset } = + useFilterLogic({ + keys, + teams, + organizations, + accessToken, + }); + + useEffect(() => { + if (accessToken) { + const user_IDs = keys.map((key) => key.user_id).filter((id) => id !== null); + const fetchUserList = async () => { + const userListData = await userListCall(accessToken, user_IDs, 1, 100); + setUserList(userListData.users); + }; + fetchUserList(); + } + }, [accessToken, keys]); + + // Add a useEffect to call refresh when a key is created + useEffect(() => { + if (refresh) { + const handleStorageChange = () => { + refresh(); + }; + + // Listen for storage events that might indicate a key was created + window.addEventListener("storage", handleStorageChange); + + return () => { + window.removeEventListener("storage", handleStorageChange); + }; + } + }, [refresh]); + + const columns: ColumnDef[] = [ + { + id: "expander", + header: () => null, + cell: ({ row }) => + row.getCanExpand() ? ( + + ) : null, + }, + { + id: "token", + accessorKey: "token", + header: "Key ID", + cell: (info) => ( +
+ + + +
+ ), + }, + { + id: "key_alias", + accessorKey: "key_alias", + header: "Key Alias", + cell: (info) => { + const value = info.getValue() as string; + return ( + {value ? (value.length > 20 ? `${value.slice(0, 20)}...` : value) : "-"} + ); + }, + }, + { + id: "key_name", + accessorKey: "key_name", + header: "Secret Key", + cell: (info) => {info.getValue() as string}, + }, + { + id: "team_alias", + accessorKey: "team_id", + header: "Team Alias", + cell: ({ row, getValue }) => { + const teamId = getValue() as string; + const team = teams?.find((t) => t.team_id === teamId); + return team?.team_alias || "Unknown"; + }, + }, + { + id: "team_id", + accessorKey: "team_id", + header: "Team ID", + cell: (info) => ( + + {info.getValue() ? `${(info.getValue() as string).slice(0, 7)}...` : "-"} + + ), + }, + { + id: "organization_id", + accessorKey: "organization_id", + header: "Organization ID", + cell: (info) => (info.getValue() ? info.renderValue() : "-"), + }, + { + id: "user_email", + accessorKey: "user_id", + header: "User Email", + cell: (info) => { + const userId = info.getValue() as string; + const user = userList.find((u) => u.user_id === userId); + return user?.user_email ? ( + + {user?.user_email.slice(0, 20)}... + + ) : ( + "-" + ); + }, + }, + { + id: "user_id", + accessorKey: "user_id", + header: "User ID", + cell: (info) => { + const userId = info.getValue() as string | null; + if (userId && userId.length > 15) { + return ( + + {userId.slice(0, 7)}... + + ); + } + return userId ? userId : "-"; + }, + }, + { + id: "created_at", + accessorKey: "created_at", + header: "Created At", + cell: (info) => { + const value = info.getValue(); + return value ? new Date(value as string).toLocaleDateString() : "-"; + }, + }, + { + id: "created_by", + accessorKey: "created_by", + header: "Created By", + cell: (info) => { + const value = info.getValue() as string | null; + if (value && value.length > 15) { + return ( + + {value.slice(0, 7)}... + + ); + } + return value; + }, + }, + { + id: "updated_at", + accessorKey: "updated_at", + header: "Updated At", + cell: (info) => { + const value = info.getValue(); + return value ? new Date(value as string).toLocaleDateString() : "Never"; + }, + }, + { + id: "expires", + accessorKey: "expires", + header: "Expires", + cell: (info) => { + const value = info.getValue(); + return value ? new Date(value as string).toLocaleDateString() : "Never"; + }, + }, + { + id: "spend", + accessorKey: "spend", + header: "Spend (USD)", + cell: (info) => formatNumberWithCommas(info.getValue() as number, 4), + }, + { + id: "max_budget", + accessorKey: "max_budget", + header: "Budget (USD)", + cell: (info) => { + const maxBudget = info.getValue() as number | null; + if (maxBudget === null) { + return "Unlimited"; + } + return `$${formatNumberWithCommas(maxBudget)}`; + }, + }, + { + id: "budget_reset_at", + accessorKey: "budget_reset_at", + header: "Budget Reset", + cell: (info) => { + const value = info.getValue(); + return value ? new Date(value as string).toLocaleString() : "Never"; + }, + }, + { + id: "models", + accessorKey: "models", + header: "Models", + cell: (info) => { + const models = info.getValue() as string[]; + return ( +
+ {Array.isArray(models) ? ( +
+ {models.length === 0 ? ( + + All Proxy Models + + ) : ( + <> +
+ {models.length > 3 && ( +
+ { + setExpandedAccordions((prev) => ({ + ...prev, + [info.row.id]: !prev[info.row.id], + })); + }} + /> +
+ )} +
+ {models.slice(0, 3).map((model, index) => + model === "all-proxy-models" ? ( + + All Proxy Models + + ) : ( + + + {model.length > 30 + ? `${getModelDisplayName(model).slice(0, 30)}...` + : getModelDisplayName(model)} + + + ), + )} + {models.length > 3 && !expandedAccordions[info.row.id] && ( + + + +{models.length - 3} {models.length - 3 === 1 ? "more model" : "more models"} + + + )} + {expandedAccordions[info.row.id] && ( +
+ {models.slice(3).map((model, index) => + model === "all-proxy-models" ? ( + + All Proxy Models + + ) : ( + + + {model.length > 30 + ? `${getModelDisplayName(model).slice(0, 30)}...` + : getModelDisplayName(model)} + + + ), + )} +
+ )} +
+
+ + )} +
+ ) : null} +
+ ); + }, + }, + { + id: "rate_limits", + header: "Rate Limits", + cell: ({ row }) => { + const key = row.original; + return ( +
+
TPM: {key.tpm_limit !== null ? key.tpm_limit : "Unlimited"}
+
RPM: {key.rpm_limit !== null ? key.rpm_limit : "Unlimited"}
+
+ ); + }, + }, + ]; + + const filterOptions: FilterOption[] = [ + { + name: "Team ID", + label: "Team ID", + isSearchable: true, + searchFn: async (searchText: string) => { + if (!allTeams || allTeams.length === 0) return []; + + const filteredTeams = allTeams.filter( + (team) => + team.team_id.toLowerCase().includes(searchText.toLowerCase()) || + (team.team_alias && team.team_alias.toLowerCase().includes(searchText.toLowerCase())), + ); + + return filteredTeams.map((team) => ({ + label: `${team.team_alias || team.team_id} (${team.team_id})`, + value: team.team_id, + })); + }, + }, + { + name: "Organization ID", + label: "Organization ID", + isSearchable: true, + searchFn: async (searchText: string) => { + if (!allOrganizations || allOrganizations.length === 0) return []; + + const filteredOrgs = allOrganizations.filter( + (org) => org.organization_id?.toLowerCase().includes(searchText.toLowerCase()) ?? false, + ); + + return filteredOrgs + .filter((org) => org.organization_id !== null && org.organization_id !== undefined) + .map((org) => ({ + label: `${org.organization_id || "Unknown"} (${org.organization_id})`, + value: org.organization_id as string, + })); + }, + }, + { + name: "Key Alias", + label: "Key Alias", + isSearchable: true, + searchFn: async (searchText) => { + const filteredKeyAliases = allKeyAliases.filter((key) => { + return key.toLowerCase().includes(searchText.toLowerCase()); + }); + + return filteredKeyAliases.map((key) => { + return { + label: key, + value: key, + }; + }); + }, + }, + { + name: "User ID", + label: "User ID", + isSearchable: false, + }, + { + name: "Key Hash", + label: "Key Hash", + isSearchable: false, + }, + ]; + + console.log(`keys: ${JSON.stringify(keys)}`); + + const table = useReactTable({ + data: filteredKeys, + columns: columns.filter((col) => col.id !== "expander"), + state: { + sorting, + }, + onSortingChange: (updaterOrValue) => { + const newSorting = typeof updaterOrValue === "function" ? updaterOrValue(sorting) : updaterOrValue; + console.log(`newSorting: ${JSON.stringify(newSorting)}`); + setSorting(newSorting); + if (newSorting && newSorting.length > 0) { + const sortState = newSorting[0]; + const sortBy = sortState.id; + const sortOrder = sortState.desc ? "desc" : "asc"; + console.log(`sortBy: ${sortBy}, sortOrder: ${sortOrder}`); + handleFilterChange({ + ...filters, + "Sort By": sortBy, + "Sort Order": sortOrder, + }); + onSortChange?.(sortBy, sortOrder); + } + }, + getCoreRowModel: getCoreRowModel(), + getSortedRowModel: getSortedRowModel(), + enableSorting: true, + manualSorting: false, + }); + + // Update local sorting state when currentSort prop changes + React.useEffect(() => { + if (currentSort) { + setSorting([ + { + id: currentSort.sortBy, + desc: currentSort.sortOrder === "desc", + }, + ]); + } + }, [currentSort]); + + return ( +
+ {selectedKeyId ? ( + setSelectedKeyId(null)} + keyData={filteredKeys.find((k) => k.token === selectedKeyId)} + onKeyDataUpdate={(updatedKeyData) => { + setKeys((keys) => + keys.map((key) => { + if (key.token === updatedKeyData.token) { + return updateExistingKeys(key, updatedKeyData); + } + return key; + }), + ); + if (refresh) refresh(); // Minimal fix: refresh the full key list after an update + }} + onDelete={() => { + setKeys((keys) => keys.filter((key) => key.token !== selectedKeyId)); + if (refresh) refresh(); // Minimal fix: refresh the full key list after a delete + }} + accessToken={accessToken} + userID={userID} + userRole={userRole} + teams={allTeams} + premiumUser={premiumUser} + setAccessToken={setAccessToken} + /> + ) : ( +
+
+ +
+ +
+ + Showing{" "} + {isLoading + ? "..." + : `${(pagination.currentPage - 1) * pageSize + 1} - ${Math.min(pagination.currentPage * pageSize, pagination.totalCount)}`}{" "} + of {isLoading ? "..." : pagination.totalCount} results + + +
+ + Page {isLoading ? "..." : pagination.currentPage} of {isLoading ? "..." : pagination.totalPages} + + + + + +
+
+
+
+
+ + + {table.getHeaderGroups().map((headerGroup) => ( + + {headerGroup.headers.map((header) => ( + +
+
+ {header.isPlaceholder + ? null + : flexRender(header.column.columnDef.header, header.getContext())} +
+ {header.id !== "actions" && ( +
+ {header.column.getIsSorted() ? ( + { + asc: , + desc: , + }[header.column.getIsSorted() as string] + ) : ( + + )} +
+ )} +
+
+ ))} +
+ ))} +
+ + {isLoading ? ( + + +
+

🚅 Loading keys...

+
+
+
+ ) : filteredKeys.length > 0 ? ( + table.getRowModel().rows.map((row) => ( + + {row.getVisibleCells().map((cell) => ( + 3 ? "px-0" : ""}`} + > + {flexRender(cell.column.columnDef.cell, cell.getContext())} + + ))} + + )) + ) : ( + + +
+

No keys found

+
+
+
+ )} +
+
+
+
+
+
+ )} +
+ ); +}; + +export default VirtualKeysTable; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts new file mode 100644 index 00000000000..ac174a554e8 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts @@ -0,0 +1,189 @@ +import { useCallback, useEffect, useState, useRef } from "react"; +import { useQuery } from "@tanstack/react-query"; +import { debounce } from "lodash"; +import { KeyResponse, Team } from "@/components/key_team_helpers/key_list"; +import { keyListCall, Organization } from "@/components/networking"; +import { defaultPageSize } from "@/components/constants"; +import { fetchAllKeyAliases, fetchAllOrganizations, fetchAllTeams } from "@/components/key_team_helpers/filter_helpers"; + +export interface FilterState { + "Team ID": string; + "Organization ID": string; + "Key Alias": string; + [key: string]: string; + "User ID": string; + "Sort By": string; + "Sort Order": string; +} + +export function useFilterLogic({ + keys, + teams, + organizations, + accessToken, +}: { + keys: KeyResponse[]; + teams: Team[] | null; + organizations: Organization[] | null; + accessToken: string | null; +}) { + const defaultFilters: FilterState = { + "Team ID": "", + "Organization ID": "", + "Key Alias": "", + "User ID": "", + "Sort By": "created_at", + "Sort Order": "desc", + }; + const [filters, setFilters] = useState(defaultFilters); + const [allTeams, setAllTeams] = useState(teams || []); + const [allOrganizations, setAllOrganizations] = useState(organizations || []); + const [filteredKeys, setFilteredKeys] = useState(keys); + const lastSearchTimestamp = useRef(0); + const debouncedSearch = useCallback( + debounce(async (filters: FilterState) => { + if (!accessToken) { + return; + } + + const currentTimestamp = Date.now(); + lastSearchTimestamp.current = currentTimestamp; + + try { + // Make the API call using userListCall with all filter parameters + const data = await keyListCall( + accessToken, + filters["Organization ID"] || null, + filters["Team ID"] || null, + filters["Key Alias"] || null, + filters["User ID"] || null, + filters["Key Hash"] || null, + 1, // Reset to first page when searching + defaultPageSize, + filters["Sort By"] || null, + filters["Sort Order"] || null, + ); + + // Only update state if this is the most recent search + if (currentTimestamp === lastSearchTimestamp.current) { + if (data) { + setFilteredKeys(data.keys); + console.log("called from debouncedSearch filters:", JSON.stringify(filters)); + console.log("called from debouncedSearch data:", JSON.stringify(data)); + } + } + } catch (error) { + console.error("Error searching users:", error); + } + }, 300), + [accessToken], + ); + // Apply filters to keys whenever keys or filters change + useEffect(() => { + if (!keys) { + setFilteredKeys([]); + return; + } + + let result = [...keys]; + + // Apply Team ID filter + if (filters["Team ID"]) { + result = result.filter((key) => key.team_id === filters["Team ID"]); + } + + // Apply Organization ID filter + if (filters["Organization ID"]) { + result = result.filter((key) => key.organization_id === filters["Organization ID"]); + } + + setFilteredKeys(result); + }, [keys, filters]); + + // Fetch all data for filters when component mounts + useEffect(() => { + const loadAllFilterData = async () => { + // Load all teams - no organization filter needed here + const teamsData = await fetchAllTeams(accessToken); + if (teamsData.length > 0) { + setAllTeams(teamsData); + } + + // Load all organizations + const orgsData = await fetchAllOrganizations(accessToken); + if (orgsData.length > 0) { + setAllOrganizations(orgsData); + } + }; + + if (accessToken) { + loadAllFilterData(); + } + }, [accessToken]); + + const queryAllKeysQuery = useQuery({ + queryKey: ["allKeys"], + queryFn: async () => { + if (!accessToken) throw new Error("Access token required"); + return await fetchAllKeyAliases(accessToken); + }, + enabled: !!accessToken, + }); + const allKeyAliases = queryAllKeysQuery.data || []; + + // Update teams and organizations when props change + useEffect(() => { + if (teams && teams.length > 0) { + setAllTeams((prevTeams) => { + // Only update if we don't already have a larger set of teams + return prevTeams.length < teams.length ? teams : prevTeams; + }); + } + }, [teams]); + + useEffect(() => { + if (organizations && organizations.length > 0) { + setAllOrganizations((prevOrgs) => { + // Only update if we don't already have a larger set of organizations + return prevOrgs.length < organizations.length ? organizations : prevOrgs; + }); + } + }, [organizations]); + + const handleFilterChange = (newFilters: Record) => { + // Update filters state + setFilters({ + "Team ID": newFilters["Team ID"] || "", + "Organization ID": newFilters["Organization ID"] || "", + "Key Alias": newFilters["Key Alias"] || "", + "User ID": newFilters["User ID"] || "", + "Sort By": newFilters["Sort By"] || "created_at", + "Sort Order": newFilters["Sort Order"] || "desc", + }); + + // Fetch keys based on new filters + const updatedFilters = { + ...filters, + ...newFilters, + }; + debouncedSearch(updatedFilters); + }; + + const handleFilterReset = () => { + // Reset filters state + setFilters(defaultFilters); + + // Reset selections + debouncedSearch(defaultFilters); + }; + + return { + filters, + filteredKeys, + allKeyAliases, + allTeams, + allOrganizations, + handleFilterChange, + handleFilterReset, + }; +} diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/hooks/useTeams.tsx b/ui/litellm-dashboard/src/app/(console)/virtual-keys/hooks/useTeams.tsx new file mode 100644 index 00000000000..d1208737ec2 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/hooks/useTeams.tsx @@ -0,0 +1,20 @@ +import { useEffect, useState } from "react"; +import { fetchTeams } from "@/app/(console)/virtual-keys/networking"; +import { Team } from "@/components/key_team_helpers/key_list"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized"; + +const useTeams = () => { + const [teams, setTeams] = useState([]); + const { accessToken, userId: userID, userRole } = useAuthorized(); + + useEffect(() => { + (async () => { + const fetched = await fetchTeams(accessToken, userID, userRole, null); + setTeams(fetched); + })(); + }, [accessToken, userID, userRole]); + + return teams; +}; + +export default useTeams; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/networking.ts b/ui/litellm-dashboard/src/app/(console)/virtual-keys/networking.ts new file mode 100644 index 00000000000..7fb09d61a5d --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/networking.ts @@ -0,0 +1,17 @@ +import { Organization, teamListCall } from "@/components/networking"; + +export const fetchTeams = async ( + accessToken: string, + userID: string | null, + userRole: string | null, + currentOrg: Organization | null, +) => { + let givenTeams; + if (userRole != "Admin" && userRole != "Admin Viewer") { + givenTeams = await teamListCall(accessToken, currentOrg?.organization_id || null, userID); + } else { + givenTeams = await teamListCall(accessToken, currentOrg?.organization_id || null); + } + + return givenTeams; +}; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/page.tsx b/ui/litellm-dashboard/src/app/(console)/virtual-keys/page.tsx new file mode 100644 index 00000000000..9554905088b --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/page.tsx @@ -0,0 +1,52 @@ +"use client"; + +import VirtualKeysTable from "@/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable"; +import { getCookie } from "@/utils/cookieUtils"; +import { jwtDecode } from "jwt-decode"; +import { useState } from "react"; +import useKeyList from "@/components/key_team_helpers/key_list"; +import { useRouter } from "next/navigation"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { Col, Grid } from "@tremor/react"; +import CreateKey from "@/app/(console)/virtual-keys/components/CreateKey"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized" + +const VirtualKeysPage = () => { + const {accessToken, userRole} = useAuthorized(); + const [createClicked, setCreateClicked] = useState(false); + + const queryClient = new QueryClient(); + + const { keys, isLoading, error, pagination, refresh, setKeys } = useKeyList({ + selectedKeyAlias: null, + currentOrg: null, + accessToken: accessToken || "", + createClicked, + }); + + const addKey = (data: any) => { + setKeys((prevData) => (prevData ? [...prevData, data] : [data])); + setCreateClicked(() => !createClicked); + }; + + return ( + +
+ + + + {}} + organizations={null} + /> + + +
+
+ ); +}; + +export default VirtualKeysPage; diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index 579e90e530c..472b3f9a37a 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -234,7 +234,6 @@ export default function CreateKeyPage() { teams={teams} keys={keys} setUserRole={setUserRole} - userEmail={userEmail} setUserEmail={setUserEmail} setTeams={setTeams} setKeys={setKeys} @@ -275,7 +274,6 @@ export default function CreateKeyPage() { teams={teams} keys={keys} setUserRole={setUserRole} - userEmail={userEmail} setUserEmail={setUserEmail} setTeams={setTeams} setKeys={setKeys} diff --git a/ui/litellm-dashboard/src/components/leftnav.tsx b/ui/litellm-dashboard/src/components/leftnav.tsx index e47691d3bb4..d9326cb8878 100644 --- a/ui/litellm-dashboard/src/components/leftnav.tsx +++ b/ui/litellm-dashboard/src/components/leftnav.tsx @@ -1,8 +1,4 @@ import { Layout, Menu } from "antd"; -import Link from "next/link"; -import { List } from "postcss/lib/list"; -import { Text, Button } from "@tremor/react"; -import { useState } from "react"; import { KeyOutlined, PlayCircleOutlined, @@ -16,29 +12,17 @@ import { AppstoreOutlined, DatabaseOutlined, FileTextOutlined, - LineOutlined, LineChartOutlined, SafetyOutlined, ExperimentOutlined, - ThunderboltOutlined, - LockOutlined, ToolOutlined, TagsOutlined, BgColorsOutlined, - MenuFoldOutlined, - MenuUnfoldOutlined, } from "@ant-design/icons"; -import { - old_admin_roles, - v2_admin_role_names, - all_admin_roles, - rolesAllowedToSeeUsage, - rolesWithWriteAccess, - internalUserRoles, - isAdminRole, -} from "../utils/roles"; +import { all_admin_roles, rolesWithWriteAccess, internalUserRoles, isAdminRole } from "../utils/roles"; import UsageIndicator from "./usage_indicator"; import { ConfigProvider } from "antd"; +import { useRouter } from "next/navigation"; const { Sider } = Layout; // Define the props type @@ -61,6 +45,7 @@ interface MenuItem { } const Sidebar: React.FC = ({ accessToken, setPage, userRole, defaultSelectedKey, collapsed = false }) => { + const router = useRouter(); // Note: If a menu item does not have a role, it is visible to all roles. const menuItems: MenuItem[] = [ { @@ -252,6 +237,19 @@ const Sidebar: React.FC = ({ accessToken, setPage, userRole, defau return true; }); + const navigateToPage = (page: string) => { + if (page === "api-keys") { + // Go to clean route and DO NOT call setPage to avoid any parent sync that re-adds ?page=api-keys + router.replace("/virtual-keys"); + return; + } + const newSearchParams = new URLSearchParams(window.location.search); + newSearchParams.set("page", page); + // Use absolute root to replace everything after the domain + router.replace(`/?${newSearchParams.toString()}`); + setPage(page); + }; + return ( = ({ accessToken, setPage, userRole, defau key: child.key, icon: child.icon, label: child.label, - onClick: () => { - const newSearchParams = new URLSearchParams(window.location.search); - newSearchParams.set("page", child.page); - window.history.pushState(null, "", `?${newSearchParams.toString()}`); - setPage(child.page); - }, + onClick: () => navigateToPage(child.page), })), - onClick: !item.children - ? () => { - const newSearchParams = new URLSearchParams(window.location.search); - newSearchParams.set("page", item.page); - window.history.pushState(null, "", `?${newSearchParams.toString()}`); - setPage(item.page); - } - : undefined, + onClick: !item.children ? () => navigateToPage(item.page) : undefined, }))} /> diff --git a/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx b/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx index c725466b982..20c1f5b3a36 100644 --- a/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx +++ b/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx @@ -131,6 +131,14 @@ export const fetchUserModels = async ( } }; + +/** + * ───────────────────────────────────────────────────────────────────────── + * @deprecated + * This component is being DEPRECATED in favor of src/app/(console)/virtual-keys/components/CreateKey.tsx + * Please contribute to the new refactor. + * ───────────────────────────────────────────────────────────────────────── + */ const CreateKey: React.FC = ({ userID, team, diff --git a/ui/litellm-dashboard/src/components/templates/view_key_table.tsx b/ui/litellm-dashboard/src/components/templates/view_key_table.tsx index bad8bdb9833..f3ba12d56d5 100644 --- a/ui/litellm-dashboard/src/components/templates/view_key_table.tsx +++ b/ui/litellm-dashboard/src/components/templates/view_key_table.tsx @@ -135,6 +135,13 @@ interface CombinedLimits { [key: string]: CombinedLimit; // Index signature allowing string keys } +/** + * ───────────────────────────────────────────────────────────────────────── + * @deprecated + * This component is being DEPRECATED in favor of src/app/(console)/virtual-keys/components/VirtualKeysTable/ + * Please contribute to the new refactor. + * ───────────────────────────────────────────────────────────────────────── + */ const ViewKeyTable: React.FC = ({ userID, userRole, diff --git a/ui/litellm-dashboard/src/utils/roles.ts b/ui/litellm-dashboard/src/utils/roles.ts index aafeb010beb..f542da105f5 100644 --- a/ui/litellm-dashboard/src/utils/roles.ts +++ b/ui/litellm-dashboard/src/utils/roles.ts @@ -5,7 +5,7 @@ export const all_admin_roles = [...old_admin_roles, ...v2_admin_role_names]; export const internalUserRoles = ["Internal User", "Internal Viewer"]; export const rolesAllowedToSeeUsage = ["Admin", "Admin Viewer", "Internal User", "Internal Viewer"]; -export const rolesWithWriteAccess = ["Internal User", "Admin"]; +export const rolesWithWriteAccess = ["Internal User", "Admin", "proxy_admin"]; // Helper function to check if a role is in all_admin_roles export const isAdminRole = (role: string): boolean => { From 3f53d6b7ad32b7b55f9782f80e336bba55cd9a4c Mon Sep 17 00:00:00 2001 From: = Date: Mon, 6 Oct 2025 09:45:58 -0700 Subject: [PATCH 06/84] Moved KeyInfoView to refactored folder, added deprecation notice --- .../components/VirtualKeysTable/VirtualKeysTable.tsx | 2 +- .../src/components/templates/key_info_view.tsx | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx index 5c32a736ae3..cdbd7cee434 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx +++ b/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx @@ -15,10 +15,10 @@ import { KeyResponse, Team } from "@/components/key_team_helpers/key_list"; import { Organization, userListCall } from "@/components/networking"; import { getModelDisplayName } from "@/components/key_team_helpers/fetch_available_models_team_key"; import FilterComponent, { FilterOption } from "@/components/molecules/filter"; -import KeyInfoView from "@/components/templates/key_info_view"; import { useFilterLogic } from "@/components/key_team_helpers/filter_logic"; import useTeams from "@/app/(console)/virtual-keys/hooks/useTeams"; import useAuthorized from "@/app/(console)/hooks/useAuthorized"; +import KeyInfoView from "@/app/(console)/virtual-keys/components/KeyInfoView"; interface AllKeysTableProps { keys: KeyResponse[]; diff --git a/ui/litellm-dashboard/src/components/templates/key_info_view.tsx b/ui/litellm-dashboard/src/components/templates/key_info_view.tsx index a5ec1774252..0080924fb61 100644 --- a/ui/litellm-dashboard/src/components/templates/key_info_view.tsx +++ b/ui/litellm-dashboard/src/components/templates/key_info_view.tsx @@ -47,6 +47,13 @@ interface KeyInfoViewProps { backButtonText?: string; } +/** + * ───────────────────────────────────────────────────────────────────────── + * @deprecated + * This component is being DEPRECATED in favor of src/app/(console)/virtual-keys/components/KeyInfoView.tsx + * Please contribute to the new refactor. + * ───────────────────────────────────────────────────────────────────────── + */ export default function KeyInfoView({ keyId, onClose, From 53ee3e2634f956c059bbf3b5449a061a46ba6666 Mon Sep 17 00:00:00 2001 From: = Date: Mon, 6 Oct 2025 10:28:48 -0700 Subject: [PATCH 07/84] refactoredUI feature flag --- .../components/{Sidebar.tsx => Sidebar2.tsx} | 4 +- .../src/app/(console)/layout.tsx | 4 +- ui/litellm-dashboard/src/app/page.tsx | 24 +++++++--- .../src/components/leftnav.tsx | 46 +++++++++++-------- .../src/components/navbar.tsx | 21 ++++++++- .../src/hooks/useFeatureFlags.ts | 9 ++++ 6 files changed, 78 insertions(+), 30 deletions(-) rename ui/litellm-dashboard/src/app/(console)/components/{Sidebar.tsx => Sidebar2.tsx} (98%) create mode 100644 ui/litellm-dashboard/src/hooks/useFeatureFlags.ts diff --git a/ui/litellm-dashboard/src/app/(console)/components/Sidebar.tsx b/ui/litellm-dashboard/src/app/(console)/components/Sidebar2.tsx similarity index 98% rename from ui/litellm-dashboard/src/app/(console)/components/Sidebar.tsx rename to ui/litellm-dashboard/src/app/(console)/components/Sidebar2.tsx index ad60ba626aa..b2477243a0e 100644 --- a/ui/litellm-dashboard/src/app/(console)/components/Sidebar.tsx +++ b/ui/litellm-dashboard/src/app/(console)/components/Sidebar2.tsx @@ -44,7 +44,7 @@ interface MenuItem { icon?: React.ReactNode; } -const Sidebar: React.FC = ({ accessToken, userRole, defaultSelectedKey, collapsed = false }) => { +const Sidebar2: React.FC = ({ accessToken, userRole, defaultSelectedKey, collapsed = false }) => { const menuItems: MenuItem[] = [ { key: "1", page: "api-keys", label: "Virtual Keys", icon: }, { @@ -288,4 +288,4 @@ const Sidebar: React.FC = ({ accessToken, userRole, defaultSelecte ); }; -export default Sidebar; +export default Sidebar2; diff --git a/ui/litellm-dashboard/src/app/(console)/layout.tsx b/ui/litellm-dashboard/src/app/(console)/layout.tsx index cbfb5bdcb53..6ad84208f56 100644 --- a/ui/litellm-dashboard/src/app/(console)/layout.tsx +++ b/ui/litellm-dashboard/src/app/(console)/layout.tsx @@ -3,7 +3,7 @@ import React from "react"; import Navbar from "@/components/navbar"; import { ThemeProvider } from "@/contexts/ThemeContext"; -import Sidebar from "@/app/(console)/components/Sidebar"; +import Sidebar2 from "@/app/(console)/components/Sidebar2"; import useAuthorized from "@/app/(console)/hooks/useAuthorized"; export default function Layout({ children }: { children: React.ReactNode }) { @@ -31,7 +31,7 @@ export default function Layout({ children }: { children: React.ReactNode }) { />
- row.startsWith(name + "=")); @@ -116,6 +118,8 @@ export default function CreateKeyPage() { const [authLoading, setAuthLoading] = useState(true); const [userID, setUserID] = useState(null); + const { refactoredUIFlag, setRefactoredUIFlag } = useFeatureFlags(); + const invitation_id = searchParams.get("invitation_id"); // Get page from URL, default to 'api-keys' if not present @@ -254,16 +258,22 @@ export default function CreateKeyPage() { isPublicPage={false} sidebarCollapsed={sidebarCollapsed} onToggleSidebar={toggleSidebar} + refactoredUIFlag={refactoredUIFlag} + setRefactoredUIFlag={setRefactoredUIFlag} />
- + {refactoredUIFlag ? ( + + ) : ( + + )}
{page == "api-keys" ? ( diff --git a/ui/litellm-dashboard/src/components/leftnav.tsx b/ui/litellm-dashboard/src/components/leftnav.tsx index d9326cb8878..34916cddb9f 100644 --- a/ui/litellm-dashboard/src/components/leftnav.tsx +++ b/ui/litellm-dashboard/src/components/leftnav.tsx @@ -12,17 +12,29 @@ import { AppstoreOutlined, DatabaseOutlined, FileTextOutlined, + LineOutlined, LineChartOutlined, SafetyOutlined, ExperimentOutlined, + ThunderboltOutlined, + LockOutlined, ToolOutlined, TagsOutlined, BgColorsOutlined, + MenuFoldOutlined, + MenuUnfoldOutlined, } from "@ant-design/icons"; -import { all_admin_roles, rolesWithWriteAccess, internalUserRoles, isAdminRole } from "../utils/roles"; +import { + old_admin_roles, + v2_admin_role_names, + all_admin_roles, + rolesAllowedToSeeUsage, + rolesWithWriteAccess, + internalUserRoles, + isAdminRole, +} from "../utils/roles"; import UsageIndicator from "./usage_indicator"; import { ConfigProvider } from "antd"; -import { useRouter } from "next/navigation"; const { Sider } = Layout; // Define the props type @@ -45,7 +57,6 @@ interface MenuItem { } const Sidebar: React.FC = ({ accessToken, setPage, userRole, defaultSelectedKey, collapsed = false }) => { - const router = useRouter(); // Note: If a menu item does not have a role, it is visible to all roles. const menuItems: MenuItem[] = [ { @@ -237,19 +248,6 @@ const Sidebar: React.FC = ({ accessToken, setPage, userRole, defau return true; }); - const navigateToPage = (page: string) => { - if (page === "api-keys") { - // Go to clean route and DO NOT call setPage to avoid any parent sync that re-adds ?page=api-keys - router.replace("/virtual-keys"); - return; - } - const newSearchParams = new URLSearchParams(window.location.search); - newSearchParams.set("page", page); - // Use absolute root to replace everything after the domain - router.replace(`/?${newSearchParams.toString()}`); - setPage(page); - }; - return ( = ({ accessToken, setPage, userRole, defau key: child.key, icon: child.icon, label: child.label, - onClick: () => navigateToPage(child.page), + onClick: () => { + const newSearchParams = new URLSearchParams(window.location.search); + newSearchParams.set("page", child.page); + window.history.pushState(null, "", `?${newSearchParams.toString()}`); + setPage(child.page); + }, })), - onClick: !item.children ? () => navigateToPage(item.page) : undefined, + onClick: !item.children + ? () => { + const newSearchParams = new URLSearchParams(window.location.search); + newSearchParams.set("page", item.page); + window.history.pushState(null, "", `?${newSearchParams.toString()}`); + setPage(item.page); + } + : undefined, }))} /> diff --git a/ui/litellm-dashboard/src/components/navbar.tsx b/ui/litellm-dashboard/src/components/navbar.tsx index 07642880570..e4a9c21c443 100644 --- a/ui/litellm-dashboard/src/components/navbar.tsx +++ b/ui/litellm-dashboard/src/components/navbar.tsx @@ -1,7 +1,7 @@ import Link from "next/link"; import React, { useState, useEffect } from "react"; import type { MenuProps } from "antd"; -import { Dropdown, Tooltip } from "antd"; +import { Dropdown, Tooltip, Switch } from "antd"; import { getProxyBaseUrl, Organization } from "@/components/networking"; import { defaultOrg } from "@/components/common_components/default_org"; import { @@ -19,6 +19,7 @@ import { clearTokenCookies } from "@/utils/cookieUtils"; import { fetchProxySettings } from "@/utils/proxyUtils"; import { useTheme } from "@/contexts/ThemeContext"; import { clearMCPAuthTokens } from "./mcp_tools/mcp_auth_storage"; +import useFeatureFlags from "@/hooks/useFeatureFlags"; interface NavbarProps { userID: string | null; @@ -31,6 +32,8 @@ interface NavbarProps { isPublicPage: boolean; sidebarCollapsed?: boolean; onToggleSidebar?: () => void; + refactoredUIFlag: boolean; + setRefactoredUIFlag: React.Dispatch>; } const Navbar: React.FC = ({ @@ -44,6 +47,8 @@ const Navbar: React.FC = ({ isPublicPage = false, sidebarCollapsed = false, onToggleSidebar, + refactoredUIFlag, + setRefactoredUIFlag, }) => { const baseUrl = getProxyBaseUrl(); const [logoutUrl, setLogoutUrl] = useState(""); @@ -79,6 +84,8 @@ const Navbar: React.FC = ({ const userItems: MenuProps["items"] = [ { key: "user-info", + // Prevent dropdown from closing when interacting with the toggle + onClick: (info) => info.domEvent?.stopPropagation(), label: (
@@ -115,6 +122,18 @@ const Navbar: React.FC = ({ {userEmail || "Unknown"}
+ + {/* NEW: Feature flag label + toggle below the email field */} +
+ Refactored UI + setRefactoredUIFlag(checked)} + aria-label="Toggle refactored UI feature flag" + /> +
), diff --git a/ui/litellm-dashboard/src/hooks/useFeatureFlags.ts b/ui/litellm-dashboard/src/hooks/useFeatureFlags.ts new file mode 100644 index 00000000000..b82f89e8749 --- /dev/null +++ b/ui/litellm-dashboard/src/hooks/useFeatureFlags.ts @@ -0,0 +1,9 @@ +import { useState } from "react"; + +const useFeatureFlags = () => { + const [refactoredUIFlag, setRefactoredUIFlag] = useState(false); + + return { refactoredUIFlag, setRefactoredUIFlag }; +}; + +export default useFeatureFlags; From 715c4999a290a528a54ac3ccf6b01d08ae6811e9 Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Mon, 6 Oct 2025 12:57:16 -0700 Subject: [PATCH 08/84] global feature flag state for app --- .../(console)/components/SidebarProvider.tsx | 34 +++++++++++++++++++ .../src/app/(console)/layout.tsx | 1 + ui/litellm-dashboard/src/app/layout.tsx | 5 ++- ui/litellm-dashboard/src/app/page.tsx | 21 +++--------- .../src/components/navbar.tsx | 7 ++-- .../src/hooks/useFeatureFlags.ts | 9 ----- .../src/hooks/useFeatureFlags.tsx | 26 ++++++++++++++ 7 files changed, 72 insertions(+), 31 deletions(-) create mode 100644 ui/litellm-dashboard/src/app/(console)/components/SidebarProvider.tsx delete mode 100644 ui/litellm-dashboard/src/hooks/useFeatureFlags.ts create mode 100644 ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx diff --git a/ui/litellm-dashboard/src/app/(console)/components/SidebarProvider.tsx b/ui/litellm-dashboard/src/app/(console)/components/SidebarProvider.tsx new file mode 100644 index 00000000000..a5e150da86c --- /dev/null +++ b/ui/litellm-dashboard/src/app/(console)/components/SidebarProvider.tsx @@ -0,0 +1,34 @@ +import Sidebar2 from "@/app/(console)/components/Sidebar2"; +import Sidebar from "@/components/leftnav"; +import React from "react"; +import useFeatureFlags from "@/hooks/useFeatureFlags"; +import useAuthorized from "@/app/(console)/hooks/useAuthorized"; + +interface SidebarProviderProps { + defaultSelectedKey: string; + sidebarCollapsed: boolean; + setPage: (page: string) => void; +} + +const SidebarProvider = ({defaultSelectedKey, sidebarCollapsed, setPage}: SidebarProviderProps) => { + + const {accessToken, userRole} = useAuthorized(); + const { refactoredUIFlag, setRefactoredUIFlag } = useFeatureFlags(); + + return ( + refactoredUIFlag ? ( + + ) : ( + + ) + ); + +} + +export default SidebarProvider; \ No newline at end of file diff --git a/ui/litellm-dashboard/src/app/(console)/layout.tsx b/ui/litellm-dashboard/src/app/(console)/layout.tsx index 6ad84208f56..595eeedc596 100644 --- a/ui/litellm-dashboard/src/app/(console)/layout.tsx +++ b/ui/litellm-dashboard/src/app/(console)/layout.tsx @@ -5,6 +5,7 @@ import Navbar from "@/components/navbar"; import { ThemeProvider } from "@/contexts/ThemeContext"; import Sidebar2 from "@/app/(console)/components/Sidebar2"; import useAuthorized from "@/app/(console)/hooks/useAuthorized"; +import useFeatureFlags, { FeatureFlagsProvider } from "@/hooks/useFeatureFlags"; export default function Layout({ children }: { children: React.ReactNode }) { const { accessToken, userRole } = useAuthorized(); diff --git a/ui/litellm-dashboard/src/app/layout.tsx b/ui/litellm-dashboard/src/app/layout.tsx index 95c485fe2f0..8a37d0fa1bf 100644 --- a/ui/litellm-dashboard/src/app/layout.tsx +++ b/ui/litellm-dashboard/src/app/layout.tsx @@ -1,6 +1,7 @@ import type { Metadata } from "next"; import { Inter } from "next/font/google"; import "./globals.css"; +import { FeatureFlagsProvider } from "@/hooks/useFeatureFlags"; const inter = Inter({ subsets: ["latin"] }); @@ -17,7 +18,9 @@ export default function RootLayout({ }>) { return ( - {children} + + {children} + ); } diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index 2e49b422b49..eff997a3aaf 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -39,8 +39,9 @@ import VectorStoreManagement from "@/components/vector_store_management"; import UIThemeSettings from "@/components/ui_theme_settings"; import { UiLoadingSpinner } from "@/components/ui/ui-loading-spinner"; import { cx } from "@/lib/cva.config"; -import useFeatureFlags from "@/hooks/useFeatureFlags"; +import useFeatureFlags, { FeatureFlagsProvider } from "@/hooks/useFeatureFlags"; import Sidebar2 from "@/app/(console)/components/Sidebar2"; +import SidebarProvider from "@/app/(console)/components/SidebarProvider"; function getCookie(name: string) { const cookieValue = document.cookie.split("; ").find((row) => row.startsWith(name + "=")); @@ -118,8 +119,6 @@ export default function CreateKeyPage() { const [authLoading, setAuthLoading] = useState(true); const [userID, setUserID] = useState(null); - const { refactoredUIFlag, setRefactoredUIFlag } = useFeatureFlags(); - const invitation_id = searchParams.get("invitation_id"); // Get page from URL, default to 'api-keys' if not present @@ -234,6 +233,7 @@ export default function CreateKeyPage() {
- {refactoredUIFlag ? ( - - ) : ( - - )} +
{page == "api-keys" ? ( void; - refactoredUIFlag: boolean; - setRefactoredUIFlag: React.Dispatch>; } const Navbar: React.FC = ({ @@ -46,13 +44,12 @@ const Navbar: React.FC = ({ accessToken, isPublicPage = false, sidebarCollapsed = false, - onToggleSidebar, - refactoredUIFlag, - setRefactoredUIFlag, + onToggleSidebar }) => { const baseUrl = getProxyBaseUrl(); const [logoutUrl, setLogoutUrl] = useState(""); const { logoUrl } = useTheme(); + const { refactoredUIFlag, setRefactoredUIFlag } = useFeatureFlags(); // Simple logo URL: use custom logo if available, otherwise default const imageUrl = logoUrl || `${baseUrl}/get_image`; diff --git a/ui/litellm-dashboard/src/hooks/useFeatureFlags.ts b/ui/litellm-dashboard/src/hooks/useFeatureFlags.ts deleted file mode 100644 index b82f89e8749..00000000000 --- a/ui/litellm-dashboard/src/hooks/useFeatureFlags.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { useState } from "react"; - -const useFeatureFlags = () => { - const [refactoredUIFlag, setRefactoredUIFlag] = useState(false); - - return { refactoredUIFlag, setRefactoredUIFlag }; -}; - -export default useFeatureFlags; diff --git a/ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx b/ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx new file mode 100644 index 00000000000..d50fdf46a6e --- /dev/null +++ b/ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx @@ -0,0 +1,26 @@ +'use client'; +import React, {createContext, useContext, useState} from 'react'; + +type Flags = { + refactoredUIFlag: boolean; + setRefactoredUIFlag: (v: boolean) => void; +}; + +const FeatureFlagsCtx = createContext(null); + +export const FeatureFlagsProvider = ({ children }: { children: React.ReactNode }) => { + const [refactoredUIFlag, setRefactoredUIFlag] = useState(false); + return ( + + {children} + +); +} + +const useFeatureFlags = () => { + const ctx = useContext(FeatureFlagsCtx); + if (!ctx) throw new Error('useFeatureFlags must be used within FeatureFlagsProvider'); + return ctx; +} + +export default useFeatureFlags; From f4d9e4869ad7c29647aed699de6e77e51584b4e8 Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Mon, 6 Oct 2025 13:33:38 -0700 Subject: [PATCH 09/84] renamed (console), added use clients --- .../components/Sidebar2.tsx | 4 +++- .../components/SidebarProvider.tsx | 6 +++-- .../components/modals/CreateUserModal.tsx | 8 ++++--- .../hooks/useAuthorized.ts | 3 ++- .../app/{(console) => dashboard}/layout.tsx | 5 ++--- .../virtual-keys/components/CreateKey.tsx | 6 ++--- .../CreateKeyForm/KeyDetailsSection.tsx | 2 ++ .../CreateKeyForm/OptionalSettingsSection.tsx | 4 +++- .../CreateKeyForm/OwnershipSection.tsx | 4 +++- .../CreateKeyModal/CreateKeyModal.tsx | 22 ++++++++++--------- .../components/CreateKeyModal/hooks/index.ts | 0 .../hooks/useGuardrailsAndPrompts.ts | 4 ++-- .../hooks/useMcpAccessGroups.ts | 4 ++-- .../CreateKeyModal/hooks/useTeamModels.ts | 4 ++-- .../CreateKeyModal/hooks/useUserModels.ts | 4 ++-- .../CreateKeyModal/hooks/useUserSearch.ts | 4 ++-- .../components/CreateKeyModal/networking.ts | 2 +- .../components/CreateKeyModal/types.ts | 0 .../components/CreateKeyModal/utils.ts | 2 +- .../virtual-keys/components/KeyInfoView.tsx | 2 ++ .../virtual-keys/components/SaveKeyModal.tsx | 2 ++ .../VirtualKeysTable/VirtualKeysTable.tsx | 8 +++---- .../VirtualKeysTable/hooks/useFilterLogic.ts | 0 .../virtual-keys/hooks/useTeams.tsx | 4 ++-- .../virtual-keys/networking.ts | 0 .../virtual-keys/page.tsx | 9 +++----- ui/litellm-dashboard/src/app/page.tsx | 4 ++-- .../organisms/create_key_button.tsx | 2 +- .../components/templates/key_info_view.tsx | 2 +- .../components/templates/view_key_table.tsx | 2 +- 30 files changed, 69 insertions(+), 54 deletions(-) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/components/Sidebar2.tsx (99%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/components/SidebarProvider.tsx (86%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/components/modals/CreateUserModal.tsx (98%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/hooks/useAuthorized.ts (94%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/layout.tsx (86%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKey.tsx (94%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx (99%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx (99%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx (98%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx (91%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/hooks/index.ts (100%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts (83%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts (80%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts (89%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts (81%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts (89%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/networking.ts (95%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/types.ts (100%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/CreateKeyModal/utils.ts (98%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/KeyInfoView.tsx (99%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/SaveKeyModal.tsx (99%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx (99%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts (100%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/hooks/useTeams.tsx (79%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/networking.ts (100%) rename ui/litellm-dashboard/src/app/{(console) => dashboard}/virtual-keys/page.tsx (81%) diff --git a/ui/litellm-dashboard/src/app/(console)/components/Sidebar2.tsx b/ui/litellm-dashboard/src/app/dashboard/components/Sidebar2.tsx similarity index 99% rename from ui/litellm-dashboard/src/app/(console)/components/Sidebar2.tsx rename to ui/litellm-dashboard/src/app/dashboard/components/Sidebar2.tsx index b2477243a0e..9de9f2f1368 100644 --- a/ui/litellm-dashboard/src/app/(console)/components/Sidebar2.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/components/Sidebar2.tsx @@ -1,3 +1,5 @@ +"use client"; + import React from "react"; import Link from "next/link"; import { usePathname, useSearchParams } from "next/navigation"; @@ -216,7 +218,7 @@ const Sidebar2: React.FC = ({ accessToken, userRole, defaultSelect }; const selectedMenuKey = - pathname === "/virtual-keys" + pathname === "/dashboard/virtual-keys" ? "1" : pageParam ? findMenuItemKey(pageParam) diff --git a/ui/litellm-dashboard/src/app/(console)/components/SidebarProvider.tsx b/ui/litellm-dashboard/src/app/dashboard/components/SidebarProvider.tsx similarity index 86% rename from ui/litellm-dashboard/src/app/(console)/components/SidebarProvider.tsx rename to ui/litellm-dashboard/src/app/dashboard/components/SidebarProvider.tsx index a5e150da86c..83804937986 100644 --- a/ui/litellm-dashboard/src/app/(console)/components/SidebarProvider.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/components/SidebarProvider.tsx @@ -1,8 +1,10 @@ -import Sidebar2 from "@/app/(console)/components/Sidebar2"; +"use client"; + +import Sidebar2 from "@/app/dashboard/components/Sidebar2"; import Sidebar from "@/components/leftnav"; import React from "react"; import useFeatureFlags from "@/hooks/useFeatureFlags"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; interface SidebarProviderProps { defaultSelectedKey: string; diff --git a/ui/litellm-dashboard/src/app/(console)/components/modals/CreateUserModal.tsx b/ui/litellm-dashboard/src/app/dashboard/components/modals/CreateUserModal.tsx similarity index 98% rename from ui/litellm-dashboard/src/app/(console)/components/modals/CreateUserModal.tsx rename to ui/litellm-dashboard/src/app/dashboard/components/modals/CreateUserModal.tsx index 4caaceb662f..8b16074b25d 100644 --- a/ui/litellm-dashboard/src/app/(console)/components/modals/CreateUserModal.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/components/modals/CreateUserModal.tsx @@ -1,3 +1,5 @@ +"use client"; + // TODO: refactor import React, { useState, useEffect } from "react"; import { Button, Modal, Form, Input, message, Select, InputNumber, Select as Select2 } from "antd"; @@ -27,9 +29,9 @@ import { } from "@/components/networking"; import { getModelDisplayName } from "@/components/key_team_helpers/fetch_available_models_team_key"; import BulkCreateUsersButton from "@/components/bulk_create_users_button"; -import { fetchTeams } from "@/app/(console)/virtual-keys/networking"; -import useTeams from "@/app/(console)/virtual-keys/hooks/useTeams"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized"; +import { fetchTeams } from "@/app/dashboard/virtual-keys/networking"; +import useTeams from "@/app/dashboard/virtual-keys/hooks/useTeams"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; // Helper function to generate UUID compatible across all environments const generateUUID = (): string => { diff --git a/ui/litellm-dashboard/src/app/(console)/hooks/useAuthorized.ts b/ui/litellm-dashboard/src/app/dashboard/hooks/useAuthorized.ts similarity index 94% rename from ui/litellm-dashboard/src/app/(console)/hooks/useAuthorized.ts rename to ui/litellm-dashboard/src/app/dashboard/hooks/useAuthorized.ts index 45f5ee92ea6..9d436d0566f 100644 --- a/ui/litellm-dashboard/src/app/(console)/hooks/useAuthorized.ts +++ b/ui/litellm-dashboard/src/app/dashboard/hooks/useAuthorized.ts @@ -1,4 +1,5 @@ -import { Router } from "next/router"; +"use client"; + import { getCookie } from "@/utils/cookieUtils"; import { useRouter } from "next/navigation"; import { jwtDecode } from "jwt-decode"; diff --git a/ui/litellm-dashboard/src/app/(console)/layout.tsx b/ui/litellm-dashboard/src/app/dashboard/layout.tsx similarity index 86% rename from ui/litellm-dashboard/src/app/(console)/layout.tsx rename to ui/litellm-dashboard/src/app/dashboard/layout.tsx index 595eeedc596..851ecec6654 100644 --- a/ui/litellm-dashboard/src/app/(console)/layout.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/layout.tsx @@ -3,9 +3,8 @@ import React from "react"; import Navbar from "@/components/navbar"; import { ThemeProvider } from "@/contexts/ThemeContext"; -import Sidebar2 from "@/app/(console)/components/Sidebar2"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized"; -import useFeatureFlags, { FeatureFlagsProvider } from "@/hooks/useFeatureFlags"; +import Sidebar2 from "@/app/dashboard/components/Sidebar2"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; export default function Layout({ children }: { children: React.ReactNode }) { const { accessToken, userRole } = useAuthorized(); diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKey.tsx b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKey.tsx similarity index 94% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKey.tsx rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKey.tsx index c8e0b1d8ce5..15dd7139174 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKey.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKey.tsx @@ -6,9 +6,9 @@ import { Modal, Form } from "antd"; import { getPossibleUserRoles, Organization } from "@/components/networking"; import { rolesWithWriteAccess } from "@/utils/roles"; import { Team } from "@/components/key_team_helpers/key_list"; -import CreateKeyModal from "@/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyModal"; -import CreateUserModal from "@/app/(console)/components/modals/CreateUserModal"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized"; +import CreateKeyModal from "@/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyModal"; +import CreateUserModal from "@/app/dashboard/components/modals/CreateUserModal"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; interface CreateKeyProps { team: Team | null; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx similarity index 99% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx index 54e9aaefed7..33a8ae06cf9 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx @@ -1,3 +1,5 @@ +"use client"; + import { TextInput, Title } from "@tremor/react"; import { Form, FormInstance, Select, Tooltip } from "antd"; import { InfoCircleOutlined } from "@ant-design/icons"; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx similarity index 99% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx index c879cdf5955..65ebd2d5717 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx @@ -1,3 +1,5 @@ +"use client"; + import { Accordion, AccordionBody, AccordionHeader, Text, Title } from "@tremor/react"; import { Form, FormInstance, Input, Select, Tooltip } from "antd"; import { InfoCircleOutlined } from "@ant-design/icons"; @@ -15,7 +17,7 @@ import SchemaFormFields from "@/components/common_components/check_openapi_schem import { Team } from "@/components/key_team_helpers/key_list"; import React from "react"; import { DefaultOptionType } from "rc-select/lib/Select"; -import { ModelAliases } from "@/app/(console)/virtual-keys/components/CreateKeyModal/types"; +import { ModelAliases } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/types"; export interface OptionalSettingsSectionProps { form: FormInstance; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx similarity index 98% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx index fdfb3893f69..00c2e9a1e2b 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx @@ -1,10 +1,12 @@ +"use client"; + import { Button as Button2, Form, Radio, Select, Tooltip } from "antd"; import { Title } from "@tremor/react"; import { InfoCircleOutlined } from "@ant-design/icons"; import TeamDropdown from "@/components/common_components/team_dropdown"; import React from "react"; import { Team } from "@/components/key_team_helpers/key_list"; -import { UserOption } from "@/app/(console)/virtual-keys/components/CreateKeyModal/types"; +import { UserOption } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/types"; interface OwnershipSectionProps { team: Team | null; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx similarity index 91% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx index 9f4d7528a8f..2bee7f72b14 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx @@ -1,9 +1,11 @@ +"use client"; + import { Button as Button2, Form, FormInstance, Modal } from "antd"; import { Text } from "@tremor/react"; import { keyCreateCall, keyCreateServiceAccountCall } from "@/components/networking"; import React, { useEffect, useState } from "react"; import { Team } from "@/components/key_team_helpers/key_list"; -import SaveKeyModal from "@/app/(console)/virtual-keys/components/SaveKeyModal"; +import SaveKeyModal from "@/app/dashboard/virtual-keys/components/SaveKeyModal"; import NotificationsManager from "@/components/molecules/notifications_manager"; import { useGuardrailsAndPrompts, @@ -11,15 +13,15 @@ import { useTeamModels, useUserModels, useUserSearch, -} from "@/app/(console)/virtual-keys/components/CreateKeyModal/hooks"; -import OwnershipSection from "@/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection"; -import KeyDetailsSection from "@/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection"; -import OptionalSettingsSection from "@/app/(console)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection"; -import { ModelAliases } from "@/app/(console)/virtual-keys/components/CreateKeyModal/types"; -import { getPredefinedTags, prepareFormValues } from "@/app/(console)/virtual-keys/components/CreateKeyModal/utils"; -import { fetchTeams } from "@/app/(console)/virtual-keys/networking"; -import useTeams from "@/app/(console)/virtual-keys/hooks/useTeams"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized"; +} from "@/app/dashboard/virtual-keys/components/CreateKeyModal/hooks"; +import OwnershipSection from "@/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection"; +import KeyDetailsSection from "@/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection"; +import OptionalSettingsSection from "@/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection"; +import { ModelAliases } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/types"; +import { getPredefinedTags, prepareFormValues } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/utils"; +import { fetchTeams } from "@/app/dashboard/virtual-keys/networking"; +import useTeams from "@/app/dashboard/virtual-keys/hooks/useTeams"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; export interface CreateKeyModalProps { isModalVisible: boolean; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/index.ts b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/index.ts similarity index 100% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/index.ts rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/index.ts diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts similarity index 83% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts index d092219f70b..2445240e1ee 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; -import { fetchGuardrails, fetchPrompts } from "@/app/(console)/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized"; +import { fetchGuardrails, fetchPrompts } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; export const useGuardrailsAndPrompts = () => { const [guardrails, setGuardrails] = useState([]); diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts similarity index 80% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts index 8313f6e8d6d..50070400004 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; -import { getMCPAccessGroups } from "@/app/(console)/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized"; +import { getMCPAccessGroups } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; export const useMcpAccessGroups = () => { const [mcpAccessGroups, setMcpAccessGroups] = useState([]); diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts similarity index 89% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts index c28ef0ecdb2..979337f5aad 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts @@ -1,7 +1,7 @@ import { useEffect, useMemo, useState } from "react"; import type { Team } from "@/components/key_team_helpers/key_list"; -import { fetchTeamModels } from "@/app/(console)/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized"; +import { fetchTeamModels } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; export const useTeamModels = (selectedTeam: Team | null) => { const { userId: userID, userRole, accessToken } = useAuthorized(); diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts similarity index 81% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts index ddba6879cc9..badcaf93d9b 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; -import { getUserModelNames } from "@/app/(console)/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized"; +import { getUserModelNames } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; export const useUserModels = () => { const { userId: userID, userRole, accessToken } = useAuthorized(); diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts similarity index 89% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts index 782beccf48f..a3840bdc624 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts @@ -1,7 +1,7 @@ import { useEffect, useMemo, useState } from "react"; import { debounce } from "lodash"; -import { searchUserOptionsByEmail } from "@/app/(console)/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized"; +import { searchUserOptionsByEmail } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; type User = { user_id: string; user_email: string; role?: string }; export interface UserOption { diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/networking.ts b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/networking.ts similarity index 95% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/networking.ts rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/networking.ts index 6cb4e2f7f07..2277800dad7 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/networking.ts +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/networking.ts @@ -6,7 +6,7 @@ import { User, userFilterUICall, } from "@/components/networking"; -import { ModelAvailableResponse, UserOption } from "@/app/(console)/virtual-keys/components/CreateKeyModal/types"; +import { ModelAvailableResponse, UserOption } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/types"; export const fetchGuardrails = async (accessToken: string) => { try { diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/types.ts b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/types.ts similarity index 100% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/types.ts rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/types.ts diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/utils.ts b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/utils.ts similarity index 98% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/utils.ts rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/utils.ts index 066770cf468..73cd433e78e 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/CreateKeyModal/utils.ts +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/utils.ts @@ -1,5 +1,5 @@ import { mapDisplayToInternalNames } from "@/components/callback_info_helpers"; -import { ModelAliases } from "@/app/(console)/virtual-keys/components/CreateKeyModal/types"; +import { ModelAliases } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/types"; export const getPredefinedTags = (data: any[] | null) => { let allTags = []; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/KeyInfoView.tsx b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/KeyInfoView.tsx similarity index 99% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/KeyInfoView.tsx rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/KeyInfoView.tsx index 1c7185f1dc4..9f9a47fbe10 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/KeyInfoView.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/KeyInfoView.tsx @@ -1,3 +1,5 @@ +"use client"; + import React, { useEffect, useState } from "react"; import { Card, diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/SaveKeyModal.tsx b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/SaveKeyModal.tsx similarity index 99% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/SaveKeyModal.tsx rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/SaveKeyModal.tsx index bd0d425c465..fed678aadca 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/SaveKeyModal.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/SaveKeyModal.tsx @@ -1,3 +1,5 @@ +"use client"; + import { Button, Col, Grid, Text, Title } from "@tremor/react"; import { CopyToClipboard } from "react-copy-to-clipboard"; import { Modal } from "antd"; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx similarity index 99% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx index cdbd7cee434..b7727a299bf 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx @@ -1,5 +1,5 @@ -// TODO: refactor "use client"; +// TODO: refactor import React, { useEffect, useState } from "react"; import { ColumnDef } from "@tanstack/react-table"; @@ -16,9 +16,9 @@ import { Organization, userListCall } from "@/components/networking"; import { getModelDisplayName } from "@/components/key_team_helpers/fetch_available_models_team_key"; import FilterComponent, { FilterOption } from "@/components/molecules/filter"; import { useFilterLogic } from "@/components/key_team_helpers/filter_logic"; -import useTeams from "@/app/(console)/virtual-keys/hooks/useTeams"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized"; -import KeyInfoView from "@/app/(console)/virtual-keys/components/KeyInfoView"; +import useTeams from "@/app/dashboard/virtual-keys/hooks/useTeams"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; +import KeyInfoView from "@/app/dashboard/virtual-keys/components/KeyInfoView"; interface AllKeysTableProps { keys: KeyResponse[]; diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts similarity index 100% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/hooks/useTeams.tsx b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/hooks/useTeams.tsx similarity index 79% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/hooks/useTeams.tsx rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/hooks/useTeams.tsx index d1208737ec2..92e5896e764 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/hooks/useTeams.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/hooks/useTeams.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from "react"; -import { fetchTeams } from "@/app/(console)/virtual-keys/networking"; +import { fetchTeams } from "@/app/dashboard/virtual-keys/networking"; import { Team } from "@/components/key_team_helpers/key_list"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; const useTeams = () => { const [teams, setTeams] = useState([]); diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/networking.ts b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/networking.ts similarity index 100% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/networking.ts rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/networking.ts diff --git a/ui/litellm-dashboard/src/app/(console)/virtual-keys/page.tsx b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/page.tsx similarity index 81% rename from ui/litellm-dashboard/src/app/(console)/virtual-keys/page.tsx rename to ui/litellm-dashboard/src/app/dashboard/virtual-keys/page.tsx index 9554905088b..7dfc959867c 100644 --- a/ui/litellm-dashboard/src/app/(console)/virtual-keys/page.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/page.tsx @@ -1,15 +1,12 @@ "use client"; -import VirtualKeysTable from "@/app/(console)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable"; -import { getCookie } from "@/utils/cookieUtils"; -import { jwtDecode } from "jwt-decode"; +import VirtualKeysTable from "@/app/dashboard/virtual-keys/components/VirtualKeysTable/VirtualKeysTable"; import { useState } from "react"; import useKeyList from "@/components/key_team_helpers/key_list"; -import { useRouter } from "next/navigation"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { Col, Grid } from "@tremor/react"; -import CreateKey from "@/app/(console)/virtual-keys/components/CreateKey"; -import useAuthorized from "@/app/(console)/hooks/useAuthorized" +import CreateKey from "@/app/dashboard/virtual-keys/components/CreateKey"; +import useAuthorized from "@/app/dashboard/hooks/useAuthorized" const VirtualKeysPage = () => { const {accessToken, userRole} = useAuthorized(); diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index eff997a3aaf..3815df002bd 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -40,8 +40,8 @@ import UIThemeSettings from "@/components/ui_theme_settings"; import { UiLoadingSpinner } from "@/components/ui/ui-loading-spinner"; import { cx } from "@/lib/cva.config"; import useFeatureFlags, { FeatureFlagsProvider } from "@/hooks/useFeatureFlags"; -import Sidebar2 from "@/app/(console)/components/Sidebar2"; -import SidebarProvider from "@/app/(console)/components/SidebarProvider"; +import Sidebar2 from "@/app/dashboard/components/Sidebar2"; +import SidebarProvider from "@/app/dashboard/components/SidebarProvider"; function getCookie(name: string) { const cookieValue = document.cookie.split("; ").find((row) => row.startsWith(name + "=")); diff --git a/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx b/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx index 20c1f5b3a36..d4035e83f09 100644 --- a/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx +++ b/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx @@ -135,7 +135,7 @@ export const fetchUserModels = async ( /** * ───────────────────────────────────────────────────────────────────────── * @deprecated - * This component is being DEPRECATED in favor of src/app/(console)/virtual-keys/components/CreateKey.tsx + * This component is being DEPRECATED in favor of src/app/dashboard/virtual-keys/components/CreateKey.tsx * Please contribute to the new refactor. * ───────────────────────────────────────────────────────────────────────── */ diff --git a/ui/litellm-dashboard/src/components/templates/key_info_view.tsx b/ui/litellm-dashboard/src/components/templates/key_info_view.tsx index 0080924fb61..ba04e2644a8 100644 --- a/ui/litellm-dashboard/src/components/templates/key_info_view.tsx +++ b/ui/litellm-dashboard/src/components/templates/key_info_view.tsx @@ -50,7 +50,7 @@ interface KeyInfoViewProps { /** * ───────────────────────────────────────────────────────────────────────── * @deprecated - * This component is being DEPRECATED in favor of src/app/(console)/virtual-keys/components/KeyInfoView.tsx + * This component is being DEPRECATED in favor of src/app/dashboard/virtual-keys/components/KeyInfoView.tsx * Please contribute to the new refactor. * ───────────────────────────────────────────────────────────────────────── */ diff --git a/ui/litellm-dashboard/src/components/templates/view_key_table.tsx b/ui/litellm-dashboard/src/components/templates/view_key_table.tsx index f3ba12d56d5..3fad7c0a35e 100644 --- a/ui/litellm-dashboard/src/components/templates/view_key_table.tsx +++ b/ui/litellm-dashboard/src/components/templates/view_key_table.tsx @@ -138,7 +138,7 @@ interface CombinedLimits { /** * ───────────────────────────────────────────────────────────────────────── * @deprecated - * This component is being DEPRECATED in favor of src/app/(console)/virtual-keys/components/VirtualKeysTable/ + * This component is being DEPRECATED in favor of src/app/dashboard/virtual-keys/components/VirtualKeysTable/ * Please contribute to the new refactor. * ───────────────────────────────────────────────────────────────────────── */ From cee408c0c06403b68837cd8cfc34d36c6a3ebc69 Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Mon, 6 Oct 2025 14:03:53 -0700 Subject: [PATCH 10/84] diagnosing next build issue --- .../src/app/dashboard/hooks/useAuthorized.ts | 39 +++++++++++++------ ui/litellm-dashboard/src/app/layout.tsx | 9 +++-- ui/litellm-dashboard/src/utils/cookieUtils.ts | 1 + 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/ui/litellm-dashboard/src/app/dashboard/hooks/useAuthorized.ts b/ui/litellm-dashboard/src/app/dashboard/hooks/useAuthorized.ts index 9d436d0566f..74c0476f199 100644 --- a/ui/litellm-dashboard/src/app/dashboard/hooks/useAuthorized.ts +++ b/ui/litellm-dashboard/src/app/dashboard/hooks/useAuthorized.ts @@ -1,24 +1,41 @@ "use client"; -import { getCookie } from "@/utils/cookieUtils"; +import { useEffect, useMemo } from "react"; +import { getCookie, clearTokenCookies } from "@/utils/cookieUtils"; import { useRouter } from "next/navigation"; import { jwtDecode } from "jwt-decode"; const useAuthorized = () => { - const token = getCookie("token"); const router = useRouter(); - if (!token) { - router.replace("/sso/key/generate"); - } + const token = typeof document !== "undefined" ? getCookie("token") : null; - const decoded = jwtDecode(token as string) as { [key: string]: any }; - const accessToken = decoded.key; - const userId = decoded.user_id; - const userRole = decoded.user_role; - const premiumUser = decoded.premium_user; + // Redirect after mount if missing/invalid token + useEffect(() => { + if (!token) { + router.replace("/sso/key/generate"); + } + }, [token, router]); - return { accessToken, userId, userRole, premiumUser }; + // Decode safely + const decoded = useMemo(() => { + if (!token) return null; + try { + return jwtDecode(token) as Record; + } catch { + // Bad token in cookie — clear and bounce + clearTokenCookies(); + router.replace("/sso/key/generate"); + return null; + } + }, [token, router]); + + return { + accessToken: decoded?.key ?? null, + userId: decoded?.user_id ?? null, + userRole: decoded?.user_role ?? null, + premiumUser: decoded?.premium_user ?? null, + }; }; export default useAuthorized; diff --git a/ui/litellm-dashboard/src/app/layout.tsx b/ui/litellm-dashboard/src/app/layout.tsx index 8a37d0fa1bf..9b6c027a56c 100644 --- a/ui/litellm-dashboard/src/app/layout.tsx +++ b/ui/litellm-dashboard/src/app/layout.tsx @@ -18,9 +18,12 @@ export default function RootLayout({ }>) { return ( - - {children} - + + + + {children} + + ); } diff --git a/ui/litellm-dashboard/src/utils/cookieUtils.ts b/ui/litellm-dashboard/src/utils/cookieUtils.ts index 2cc9ef61ebd..e477a9f77e0 100644 --- a/ui/litellm-dashboard/src/utils/cookieUtils.ts +++ b/ui/litellm-dashboard/src/utils/cookieUtils.ts @@ -37,6 +37,7 @@ export function clearTokenCookies() { * @returns The cookie value or null if not found */ export function getCookie(name: string) { + if (typeof document === "undefined") return null; const cookieValue = document.cookie.split("; ").find((row) => row.startsWith(name + "=")); return cookieValue ? cookieValue.split("=")[1] : null; } From 00f61b214c04c5c78380f74898cdd50cbf2ccdd4 Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Mon, 6 Oct 2025 14:17:02 -0700 Subject: [PATCH 11/84] more window guards --- .../VirtualKeysTable/VirtualKeysTable.tsx | 23 ++++++++++--------- ui/litellm-dashboard/src/utils/cookieUtils.ts | 4 ++++ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx index b7727a299bf..cbf10f97715 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx +++ b/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx @@ -105,18 +105,19 @@ const VirtualKeysTable = ({ // Add a useEffect to call refresh when a key is created useEffect(() => { - if (refresh) { - const handleStorageChange = () => { - refresh(); - }; - - // Listen for storage events that might indicate a key was created - window.addEventListener("storage", handleStorageChange); - - return () => { - window.removeEventListener("storage", handleStorageChange); - }; + if (!refresh || typeof window === "undefined") { + return; } + const handleStorageChange = () => { + refresh(); + }; + + // Listen for storage events that might indicate a key was created + window.addEventListener("storage", handleStorageChange); + + return () => { + window.removeEventListener("storage", handleStorageChange); + }; }, [refresh]); const columns: ColumnDef[] = [ diff --git a/ui/litellm-dashboard/src/utils/cookieUtils.ts b/ui/litellm-dashboard/src/utils/cookieUtils.ts index e477a9f77e0..23682fd6e81 100644 --- a/ui/litellm-dashboard/src/utils/cookieUtils.ts +++ b/ui/litellm-dashboard/src/utils/cookieUtils.ts @@ -6,6 +6,10 @@ * Clears the token cookie from both root and /ui paths */ export function clearTokenCookies() { + if (typeof window === "undefined" || typeof document === "undefined") { + return; + } + // Get the current domain const domain = window.location.hostname; From b1f3553ae4b7b0140540eb910c540d6e77f1a863 Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Mon, 6 Oct 2025 14:28:12 -0700 Subject: [PATCH 12/84] Update networking.tsx --- .../src/components/networking.tsx | 33 ++++++++++++++++--- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/ui/litellm-dashboard/src/components/networking.tsx b/ui/litellm-dashboard/src/components/networking.tsx index 5f27c277d43..2ce673ee548 100644 --- a/ui/litellm-dashboard/src/components/networking.tsx +++ b/ui/litellm-dashboard/src/components/networking.tsx @@ -34,18 +34,34 @@ if (isLocal != true) { console.log = function () {}; } +const getWindowLocation = () => { + if (typeof window === "undefined") { + return null; + } + return window.location; +}; + const updateProxyBaseUrl = (serverRootPath: string, receivedProxyBaseUrl: string | null = null) => { /** * Special function for updating the proxy base url. Should only be called by getUiConfig. */ - const defaultProxyBaseUrl = isLocal ? "http://localhost:4000" : window.location.origin; - let initialProxyBaseUrl = receivedProxyBaseUrl || defaultProxyBaseUrl; + const browserLocation = getWindowLocation(); + const resolvedDefaultProxyBaseUrl = isLocal ? "http://localhost:4000" : browserLocation?.origin ?? null; + let initialProxyBaseUrl = receivedProxyBaseUrl || resolvedDefaultProxyBaseUrl; console.log("proxyBaseUrl:", proxyBaseUrl); console.log("serverRootPath:", serverRootPath); + + if (!initialProxyBaseUrl) { + proxyBaseUrl = proxyBaseUrl ?? null; + console.log("Updated proxyBaseUrl:", proxyBaseUrl); + return; + } + if (serverRootPath.length > 0 && !initialProxyBaseUrl.endsWith(serverRootPath) && serverRootPath != "/") { initialProxyBaseUrl += serverRootPath; - proxyBaseUrl = initialProxyBaseUrl; } + + proxyBaseUrl = initialProxyBaseUrl; console.log("Updated proxyBaseUrl:", proxyBaseUrl); }; @@ -54,7 +70,11 @@ const updateServerRootPath = (receivedServerRootPath: string) => { }; export const getProxyBaseUrl = (): string => { - return proxyBaseUrl ? proxyBaseUrl : window.location.origin; + if (proxyBaseUrl) { + return proxyBaseUrl; + } + const browserLocation = getWindowLocation(); + return browserLocation?.origin ?? ""; }; const HTTP_REQUEST = { @@ -159,7 +179,10 @@ const handleError = async (errorData: string) => { NotificationsManager.info("UI Session Expired. Logging out."); lastErrorTime = currentTime; clearTokenCookies(); - window.location.href = window.location.pathname; + const browserLocation = getWindowLocation(); + if (browserLocation) { + window.location.href = browserLocation.pathname; + } } lastErrorTime = currentTime; } else { From 6529ed4d620210efccc51912e413cb1ac4333041 Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Mon, 6 Oct 2025 19:21:34 -0700 Subject: [PATCH 13/84] hidden dashboard routing, dev and build env files --- ui/litellm-dashboard/.env.development | 2 + ui/litellm-dashboard/.env.production | 2 + .../components/Sidebar2.tsx | 33 ++++++-- .../components/SidebarProvider.tsx | 32 +++++++ .../components/modals/CreateUserModal.tsx | 6 +- .../hooks/useAuthorized.ts | 0 .../app/{dashboard => (dashboard)}/layout.tsx | 4 +- .../virtual-keys/components/CreateKey.tsx | 6 +- .../CreateKeyForm/KeyDetailsSection.tsx | 0 .../CreateKeyForm/OptionalSettingsSection.tsx | 2 +- .../CreateKeyForm/OwnershipSection.tsx | 2 +- .../CreateKeyModal/CreateKeyModal.tsx | 20 ++--- .../components/CreateKeyModal/hooks/index.ts | 0 .../hooks/useGuardrailsAndPrompts.ts | 4 +- .../hooks/useMcpAccessGroups.ts | 4 +- .../CreateKeyModal/hooks/useTeamModels.ts | 4 +- .../CreateKeyModal/hooks/useUserModels.ts | 4 +- .../CreateKeyModal/hooks/useUserSearch.ts | 4 +- .../components/CreateKeyModal/networking.ts | 2 +- .../components/CreateKeyModal/types.ts | 0 .../components/CreateKeyModal/utils.ts | 2 +- .../virtual-keys/components/KeyInfoView.tsx | 0 .../virtual-keys/components/SaveKeyModal.tsx | 0 .../VirtualKeysTable/VirtualKeysTable.tsx | 6 +- .../VirtualKeysTable/hooks/useFilterLogic.ts | 0 .../virtual-keys/hooks/useTeams.tsx | 4 +- .../virtual-keys/networking.ts | 0 .../virtual-keys/page.tsx | 8 +- .../dashboard/components/SidebarProvider.tsx | 36 -------- ui/litellm-dashboard/src/app/page.tsx | 8 +- .../src/components/leftnav.tsx | 37 +++++---- .../organisms/create_key_button.tsx | 3 +- .../components/templates/key_info_view.tsx | 2 +- .../components/templates/view_key_table.tsx | 2 +- .../src/hooks/useFeatureFlags.tsx | 83 ++++++++++++++++--- 35 files changed, 208 insertions(+), 114 deletions(-) create mode 100644 ui/litellm-dashboard/.env.development create mode 100644 ui/litellm-dashboard/.env.production rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/components/Sidebar2.tsx (87%) create mode 100644 ui/litellm-dashboard/src/app/(dashboard)/components/SidebarProvider.tsx rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/components/modals/CreateUserModal.tsx (98%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/hooks/useAuthorized.ts (100%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/layout.tsx (91%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKey.tsx (92%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx (100%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx (99%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx (97%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx (89%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/hooks/index.ts (100%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts (76%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts (73%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts (85%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts (75%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts (84%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/networking.ts (95%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/types.ts (100%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/CreateKeyModal/utils.ts (98%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/KeyInfoView.tsx (100%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/SaveKeyModal.tsx (100%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx (99%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts (100%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/hooks/useTeams.tsx (77%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/networking.ts (100%) rename ui/litellm-dashboard/src/app/{dashboard => (dashboard)}/virtual-keys/page.tsx (81%) delete mode 100644 ui/litellm-dashboard/src/app/dashboard/components/SidebarProvider.tsx diff --git a/ui/litellm-dashboard/.env.development b/ui/litellm-dashboard/.env.development new file mode 100644 index 00000000000..b408125408b --- /dev/null +++ b/ui/litellm-dashboard/.env.development @@ -0,0 +1,2 @@ +NODE_ENV=development +NEXT_PUBLIC_BASE_URL="" \ No newline at end of file diff --git a/ui/litellm-dashboard/.env.production b/ui/litellm-dashboard/.env.production new file mode 100644 index 00000000000..1df897e7d23 --- /dev/null +++ b/ui/litellm-dashboard/.env.production @@ -0,0 +1,2 @@ +NODE_ENV=production +NEXT_PUBLIC_BASE_URL="ui/" \ No newline at end of file diff --git a/ui/litellm-dashboard/src/app/dashboard/components/Sidebar2.tsx b/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx similarity index 87% rename from ui/litellm-dashboard/src/app/dashboard/components/Sidebar2.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx index 9de9f2f1368..209cf2e67fd 100644 --- a/ui/litellm-dashboard/src/app/dashboard/components/Sidebar2.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx @@ -46,6 +46,21 @@ interface MenuItem { icon?: React.ReactNode; } +/** ---------- Base URL helpers ---------- */ +/** Normalizes NEXT_PUBLIC_BASE_URL into either "" or "/something" (no trailing slash). */ +const getBasePath = () => { + const raw = process.env.NEXT_PUBLIC_BASE_URL ?? ""; + const trimmed = raw.replace(/^\/+|\/+$/g, ""); // strip leading/trailing slashes + return trimmed ? `/${trimmed}` : ""; +}; + +/** Joins base path with a relative path like "virtual-keys" or "/virtual-keys" -> "/base/virtual-keys" */ +const withBase = (relativePath: string) => { + const base = getBasePath(); // "" or "/ui" (no trailing slash) + const rel = relativePath.replace(/^\/+/, ""); // drop any leading slash + return `${base}/${rel}`.replace(/\/{2,}/g, "/"); // collapse accidental doubles +}; + const Sidebar2: React.FC = ({ accessToken, userRole, defaultSelectedKey, collapsed = false }) => { const menuItems: MenuItem[] = [ { key: "1", page: "api-keys", label: "Virtual Keys", icon: }, @@ -217,8 +232,11 @@ const Sidebar2: React.FC = ({ accessToken, userRole, defaultSelect return "1"; }; + // Match Virtual Keys path with base prefix (e.g., "/virtual-keys" or "/ui/virtual-keys") + const virtualKeysPath = withBase("virtual-keys"); + const selectedMenuKey = - pathname === "/dashboard/virtual-keys" + pathname === virtualKeysPath ? "1" : pageParam ? findMenuItemKey(pageParam) @@ -226,16 +244,19 @@ const Sidebar2: React.FC = ({ accessToken, userRole, defaultSelect ? findMenuItemKey(defaultSelectedKey) : "1"; - // Root-only routing helper: always replace everything after the domain - const rootWithPage = (p: string) => ({ pathname: "/", query: { page: p } }); + // Root-only routing helper: always replace everything after the domain, honoring base path + const rootWithPage = (p: string) => ({ + pathname: getBasePath() || "/", + query: { page: p }, + }); // Convert to AntD Menu items: - // - "Virtual Keys" still routes to /virtual-keys - // - All other items (and children) route to "/?page=" + // - "Virtual Keys" routes to "//virtual-keys" + // - All other items (and children) route to "//?page=" const antdItems = filteredMenuItems.map((item) => { const isVirtualKeys = item.key === "1"; const label = isVirtualKeys ? ( - Virtual Keys + Virtual Keys ) : ( {item.label} ); diff --git a/ui/litellm-dashboard/src/app/(dashboard)/components/SidebarProvider.tsx b/ui/litellm-dashboard/src/app/(dashboard)/components/SidebarProvider.tsx new file mode 100644 index 00000000000..822a30e6403 --- /dev/null +++ b/ui/litellm-dashboard/src/app/(dashboard)/components/SidebarProvider.tsx @@ -0,0 +1,32 @@ +"use client"; + +import Sidebar2 from "@/app/(dashboard)/components/Sidebar2"; +import Sidebar from "@/components/leftnav"; +import React from "react"; +import useFeatureFlags from "@/hooks/useFeatureFlags"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; + +interface SidebarProviderProps { + defaultSelectedKey: string; + sidebarCollapsed: boolean; + setPage: (page: string) => void; +} + +const SidebarProvider = ({ defaultSelectedKey, sidebarCollapsed, setPage }: SidebarProviderProps) => { + const { accessToken, userRole } = useAuthorized(); + const { refactoredUIFlag, setRefactoredUIFlag } = useFeatureFlags(); + + return refactoredUIFlag ? ( + + ) : ( + + ); +}; + +export default SidebarProvider; diff --git a/ui/litellm-dashboard/src/app/dashboard/components/modals/CreateUserModal.tsx b/ui/litellm-dashboard/src/app/(dashboard)/components/modals/CreateUserModal.tsx similarity index 98% rename from ui/litellm-dashboard/src/app/dashboard/components/modals/CreateUserModal.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/components/modals/CreateUserModal.tsx index 8b16074b25d..fce7f691925 100644 --- a/ui/litellm-dashboard/src/app/dashboard/components/modals/CreateUserModal.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/components/modals/CreateUserModal.tsx @@ -29,9 +29,9 @@ import { } from "@/components/networking"; import { getModelDisplayName } from "@/components/key_team_helpers/fetch_available_models_team_key"; import BulkCreateUsersButton from "@/components/bulk_create_users_button"; -import { fetchTeams } from "@/app/dashboard/virtual-keys/networking"; -import useTeams from "@/app/dashboard/virtual-keys/hooks/useTeams"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; +import { fetchTeams } from "@/app/(dashboard)/virtual-keys/networking"; +import useTeams from "@/app/(dashboard)/virtual-keys/hooks/useTeams"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; // Helper function to generate UUID compatible across all environments const generateUUID = (): string => { diff --git a/ui/litellm-dashboard/src/app/dashboard/hooks/useAuthorized.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/useAuthorized.ts similarity index 100% rename from ui/litellm-dashboard/src/app/dashboard/hooks/useAuthorized.ts rename to ui/litellm-dashboard/src/app/(dashboard)/hooks/useAuthorized.ts diff --git a/ui/litellm-dashboard/src/app/dashboard/layout.tsx b/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx similarity index 91% rename from ui/litellm-dashboard/src/app/dashboard/layout.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/layout.tsx index 851ecec6654..ad8a82703f7 100644 --- a/ui/litellm-dashboard/src/app/dashboard/layout.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx @@ -3,8 +3,8 @@ import React from "react"; import Navbar from "@/components/navbar"; import { ThemeProvider } from "@/contexts/ThemeContext"; -import Sidebar2 from "@/app/dashboard/components/Sidebar2"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; +import Sidebar2 from "@/app/(dashboard)/components/Sidebar2"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; export default function Layout({ children }: { children: React.ReactNode }) { const { accessToken, userRole } = useAuthorized(); diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKey.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKey.tsx similarity index 92% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKey.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKey.tsx index 15dd7139174..82be28e4951 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKey.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKey.tsx @@ -6,9 +6,9 @@ import { Modal, Form } from "antd"; import { getPossibleUserRoles, Organization } from "@/components/networking"; import { rolesWithWriteAccess } from "@/utils/roles"; import { Team } from "@/components/key_team_helpers/key_list"; -import CreateKeyModal from "@/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyModal"; -import CreateUserModal from "@/app/dashboard/components/modals/CreateUserModal"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; +import CreateKeyModal from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyModal"; +import CreateUserModal from "@/app/(dashboard)/components/modals/CreateUserModal"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; interface CreateKeyProps { team: Team | null; diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx similarity index 100% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx similarity index 99% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx index 65ebd2d5717..b88f8919448 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx @@ -17,7 +17,7 @@ import SchemaFormFields from "@/components/common_components/check_openapi_schem import { Team } from "@/components/key_team_helpers/key_list"; import React from "react"; import { DefaultOptionType } from "rc-select/lib/Select"; -import { ModelAliases } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/types"; +import { ModelAliases } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/types"; export interface OptionalSettingsSectionProps { form: FormInstance; diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx similarity index 97% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx index 00c2e9a1e2b..f08b4ea367d 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection.tsx @@ -6,7 +6,7 @@ import { InfoCircleOutlined } from "@ant-design/icons"; import TeamDropdown from "@/components/common_components/team_dropdown"; import React from "react"; import { Team } from "@/components/key_team_helpers/key_list"; -import { UserOption } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/types"; +import { UserOption } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/types"; interface OwnershipSectionProps { team: Team | null; diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx similarity index 89% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx index 2bee7f72b14..cbe3db4e8ff 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx @@ -5,7 +5,7 @@ import { Text } from "@tremor/react"; import { keyCreateCall, keyCreateServiceAccountCall } from "@/components/networking"; import React, { useEffect, useState } from "react"; import { Team } from "@/components/key_team_helpers/key_list"; -import SaveKeyModal from "@/app/dashboard/virtual-keys/components/SaveKeyModal"; +import SaveKeyModal from "@/app/(dashboard)/virtual-keys/components/SaveKeyModal"; import NotificationsManager from "@/components/molecules/notifications_manager"; import { useGuardrailsAndPrompts, @@ -13,15 +13,15 @@ import { useTeamModels, useUserModels, useUserSearch, -} from "@/app/dashboard/virtual-keys/components/CreateKeyModal/hooks"; -import OwnershipSection from "@/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection"; -import KeyDetailsSection from "@/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection"; -import OptionalSettingsSection from "@/app/dashboard/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection"; -import { ModelAliases } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/types"; -import { getPredefinedTags, prepareFormValues } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/utils"; -import { fetchTeams } from "@/app/dashboard/virtual-keys/networking"; -import useTeams from "@/app/dashboard/virtual-keys/hooks/useTeams"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; +} from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks"; +import OwnershipSection from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection"; +import KeyDetailsSection from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection"; +import OptionalSettingsSection from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection"; +import { ModelAliases } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/types"; +import { getPredefinedTags, prepareFormValues } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/utils"; +import { fetchTeams } from "@/app/(dashboard)/virtual-keys/networking"; +import useTeams from "@/app/(dashboard)/virtual-keys/hooks/useTeams"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; export interface CreateKeyModalProps { isModalVisible: boolean; diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/index.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/index.ts similarity index 100% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/index.ts rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/index.ts diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts similarity index 76% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts index 2445240e1ee..f4718e8ba05 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; -import { fetchGuardrails, fetchPrompts } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; +import { fetchGuardrails, fetchPrompts } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; export const useGuardrailsAndPrompts = () => { const [guardrails, setGuardrails] = useState([]); diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts similarity index 73% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts index 50070400004..998b392f774 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; -import { getMCPAccessGroups } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; +import { getMCPAccessGroups } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; export const useMcpAccessGroups = () => { const [mcpAccessGroups, setMcpAccessGroups] = useState([]); diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts similarity index 85% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts index 979337f5aad..dd99de0615b 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts @@ -1,7 +1,7 @@ import { useEffect, useMemo, useState } from "react"; import type { Team } from "@/components/key_team_helpers/key_list"; -import { fetchTeamModels } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; +import { fetchTeamModels } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; export const useTeamModels = (selectedTeam: Team | null) => { const { userId: userID, userRole, accessToken } = useAuthorized(); diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts similarity index 75% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts index badcaf93d9b..66b5520f067 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; -import { getUserModelNames } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; +import { getUserModelNames } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; export const useUserModels = () => { const { userId: userID, userRole, accessToken } = useAuthorized(); diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts similarity index 84% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts index a3840bdc624..d266a51667c 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts @@ -1,7 +1,7 @@ import { useEffect, useMemo, useState } from "react"; import { debounce } from "lodash"; -import { searchUserOptionsByEmail } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; +import { searchUserOptionsByEmail } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; type User = { user_id: string; user_email: string; role?: string }; export interface UserOption { diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/networking.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking.ts similarity index 95% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/networking.ts rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking.ts index 2277800dad7..377f6d31139 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/networking.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking.ts @@ -6,7 +6,7 @@ import { User, userFilterUICall, } from "@/components/networking"; -import { ModelAvailableResponse, UserOption } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/types"; +import { ModelAvailableResponse, UserOption } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/types"; export const fetchGuardrails = async (accessToken: string) => { try { diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/types.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/types.ts similarity index 100% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/types.ts rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/types.ts diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/utils.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/utils.ts similarity index 98% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/utils.ts rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/utils.ts index 73cd433e78e..1fb40b87895 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/CreateKeyModal/utils.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/utils.ts @@ -1,5 +1,5 @@ import { mapDisplayToInternalNames } from "@/components/callback_info_helpers"; -import { ModelAliases } from "@/app/dashboard/virtual-keys/components/CreateKeyModal/types"; +import { ModelAliases } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/types"; export const getPredefinedTags = (data: any[] | null) => { let allTags = []; diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/KeyInfoView.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/KeyInfoView.tsx similarity index 100% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/KeyInfoView.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/KeyInfoView.tsx diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/SaveKeyModal.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/SaveKeyModal.tsx similarity index 100% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/SaveKeyModal.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/SaveKeyModal.tsx diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx similarity index 99% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx index cbf10f97715..015d8c43f9e 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx @@ -16,9 +16,9 @@ import { Organization, userListCall } from "@/components/networking"; import { getModelDisplayName } from "@/components/key_team_helpers/fetch_available_models_team_key"; import FilterComponent, { FilterOption } from "@/components/molecules/filter"; import { useFilterLogic } from "@/components/key_team_helpers/filter_logic"; -import useTeams from "@/app/dashboard/virtual-keys/hooks/useTeams"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; -import KeyInfoView from "@/app/dashboard/virtual-keys/components/KeyInfoView"; +import useTeams from "@/app/(dashboard)/virtual-keys/hooks/useTeams"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; +import KeyInfoView from "@/app/(dashboard)/virtual-keys/components/KeyInfoView"; interface AllKeysTableProps { keys: KeyResponse[]; diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts similarity index 100% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/hooks/useTeams.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/hooks/useTeams.tsx similarity index 77% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/hooks/useTeams.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/hooks/useTeams.tsx index 92e5896e764..5f04f8a28a7 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/hooks/useTeams.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/hooks/useTeams.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from "react"; -import { fetchTeams } from "@/app/dashboard/virtual-keys/networking"; +import { fetchTeams } from "@/app/(dashboard)/virtual-keys/networking"; import { Team } from "@/components/key_team_helpers/key_list"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; const useTeams = () => { const [teams, setTeams] = useState([]); diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/networking.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/networking.ts similarity index 100% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/networking.ts rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/networking.ts diff --git a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/page.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/page.tsx similarity index 81% rename from ui/litellm-dashboard/src/app/dashboard/virtual-keys/page.tsx rename to ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/page.tsx index 7dfc959867c..611d92f1a32 100644 --- a/ui/litellm-dashboard/src/app/dashboard/virtual-keys/page.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/page.tsx @@ -1,15 +1,15 @@ "use client"; -import VirtualKeysTable from "@/app/dashboard/virtual-keys/components/VirtualKeysTable/VirtualKeysTable"; +import VirtualKeysTable from "@/app/(dashboard)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable"; import { useState } from "react"; import useKeyList from "@/components/key_team_helpers/key_list"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { Col, Grid } from "@tremor/react"; -import CreateKey from "@/app/dashboard/virtual-keys/components/CreateKey"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized" +import CreateKey from "@/app/(dashboard)/virtual-keys/components/CreateKey"; +import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; const VirtualKeysPage = () => { - const {accessToken, userRole} = useAuthorized(); + const { accessToken, userRole } = useAuthorized(); const [createClicked, setCreateClicked] = useState(false); const queryClient = new QueryClient(); diff --git a/ui/litellm-dashboard/src/app/dashboard/components/SidebarProvider.tsx b/ui/litellm-dashboard/src/app/dashboard/components/SidebarProvider.tsx deleted file mode 100644 index 83804937986..00000000000 --- a/ui/litellm-dashboard/src/app/dashboard/components/SidebarProvider.tsx +++ /dev/null @@ -1,36 +0,0 @@ -"use client"; - -import Sidebar2 from "@/app/dashboard/components/Sidebar2"; -import Sidebar from "@/components/leftnav"; -import React from "react"; -import useFeatureFlags from "@/hooks/useFeatureFlags"; -import useAuthorized from "@/app/dashboard/hooks/useAuthorized"; - -interface SidebarProviderProps { - defaultSelectedKey: string; - sidebarCollapsed: boolean; - setPage: (page: string) => void; -} - -const SidebarProvider = ({defaultSelectedKey, sidebarCollapsed, setPage}: SidebarProviderProps) => { - - const {accessToken, userRole} = useAuthorized(); - const { refactoredUIFlag, setRefactoredUIFlag } = useFeatureFlags(); - - return ( - refactoredUIFlag ? ( - - ) : ( - - ) - ); - -} - -export default SidebarProvider; \ No newline at end of file diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index 3815df002bd..8e25dc192c8 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -40,8 +40,8 @@ import UIThemeSettings from "@/components/ui_theme_settings"; import { UiLoadingSpinner } from "@/components/ui/ui-loading-spinner"; import { cx } from "@/lib/cva.config"; import useFeatureFlags, { FeatureFlagsProvider } from "@/hooks/useFeatureFlags"; -import Sidebar2 from "@/app/dashboard/components/Sidebar2"; -import SidebarProvider from "@/app/dashboard/components/SidebarProvider"; +import Sidebar2 from "@/app/(dashboard)/components/Sidebar2"; +import SidebarProvider from "@/app/(dashboard)/components/SidebarProvider"; function getCookie(name: string) { const cookieValue = document.cookie.split("; ").find((row) => row.startsWith(name + "=")); @@ -126,6 +126,10 @@ export default function CreateKeyPage() { return searchParams.get("page") || "api-keys"; }); + useEffect(() => { + setPage(searchParams.get("page") || "api-keys"); + }, [searchParams]); + // Custom setPage function that updates URL const updatePage = (newPage: string) => { // Update URL without full page reload diff --git a/ui/litellm-dashboard/src/components/leftnav.tsx b/ui/litellm-dashboard/src/components/leftnav.tsx index 34916cddb9f..a0d8d162c68 100644 --- a/ui/litellm-dashboard/src/components/leftnav.tsx +++ b/ui/litellm-dashboard/src/components/leftnav.tsx @@ -56,6 +56,17 @@ interface MenuItem { icon?: React.ReactNode; } +/** ---------- Base URL helpers ---------- */ +/** + * Normalizes NEXT_PUBLIC_BASE_URL to either "/" or "/ui/" (always with a trailing slash). + * Supported env values: "" or "ui/". + */ +const getBasePath = () => { + const raw = process.env.NEXT_PUBLIC_BASE_URL ?? ""; + const trimmed = raw.replace(/^\/+|\/+$/g, ""); // strip leading/trailing slashes + return trimmed ? `/${trimmed}/` : "/"; // ensure trailing slash +}; + const Sidebar: React.FC = ({ accessToken, setPage, userRole, defaultSelectedKey, collapsed = false }) => { // Note: If a menu item does not have a role, it is visible to all roles. const menuItems: MenuItem[] = [ @@ -214,6 +225,7 @@ const Sidebar: React.FC = ({ accessToken, setPage, userRole, defau ], }, ]; + // Find the menu item that matches the default page, including in submenus const findMenuItemKey = (page: string): string => { // Check top-level items @@ -248,6 +260,15 @@ const Sidebar: React.FC = ({ accessToken, setPage, userRole, defau return true; }); + // Centralized navigation that prefixes the base path ("/" or "/ui/") + const goTo = (page: string) => { + const base = getBasePath(); // "/" or "/ui/" + const newSearchParams = new URLSearchParams(window.location.search); + newSearchParams.set("page", page); + window.history.pushState(null, "", `${base}?${newSearchParams.toString()}`); // e.g. "/ui/?page=..." + setPage(page); + }; + return ( = ({ accessToken, setPage, userRole, defau key: child.key, icon: child.icon, label: child.label, - onClick: () => { - const newSearchParams = new URLSearchParams(window.location.search); - newSearchParams.set("page", child.page); - window.history.pushState(null, "", `?${newSearchParams.toString()}`); - setPage(child.page); - }, + onClick: () => goTo(child.page), })), - onClick: !item.children - ? () => { - const newSearchParams = new URLSearchParams(window.location.search); - newSearchParams.set("page", item.page); - window.history.pushState(null, "", `?${newSearchParams.toString()}`); - setPage(item.page); - } - : undefined, + onClick: !item.children ? () => goTo(item.page) : undefined, }))} /> diff --git a/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx b/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx index d4035e83f09..c37d94abb1a 100644 --- a/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx +++ b/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx @@ -131,11 +131,10 @@ export const fetchUserModels = async ( } }; - /** * ───────────────────────────────────────────────────────────────────────── * @deprecated - * This component is being DEPRECATED in favor of src/app/dashboard/virtual-keys/components/CreateKey.tsx + * This component is being DEPRECATED in favor of src/app/(dashboard)/virtual-keys/components/CreateKey.tsx * Please contribute to the new refactor. * ───────────────────────────────────────────────────────────────────────── */ diff --git a/ui/litellm-dashboard/src/components/templates/key_info_view.tsx b/ui/litellm-dashboard/src/components/templates/key_info_view.tsx index ba04e2644a8..26adaa11dbd 100644 --- a/ui/litellm-dashboard/src/components/templates/key_info_view.tsx +++ b/ui/litellm-dashboard/src/components/templates/key_info_view.tsx @@ -50,7 +50,7 @@ interface KeyInfoViewProps { /** * ───────────────────────────────────────────────────────────────────────── * @deprecated - * This component is being DEPRECATED in favor of src/app/dashboard/virtual-keys/components/KeyInfoView.tsx + * This component is being DEPRECATED in favor of src/app/(dashboard)/virtual-keys/components/KeyInfoView.tsx * Please contribute to the new refactor. * ───────────────────────────────────────────────────────────────────────── */ diff --git a/ui/litellm-dashboard/src/components/templates/view_key_table.tsx b/ui/litellm-dashboard/src/components/templates/view_key_table.tsx index 3fad7c0a35e..d146d5ba79e 100644 --- a/ui/litellm-dashboard/src/components/templates/view_key_table.tsx +++ b/ui/litellm-dashboard/src/components/templates/view_key_table.tsx @@ -138,7 +138,7 @@ interface CombinedLimits { /** * ───────────────────────────────────────────────────────────────────────── * @deprecated - * This component is being DEPRECATED in favor of src/app/dashboard/virtual-keys/components/VirtualKeysTable/ + * This component is being DEPRECATED in favor of src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/ * Please contribute to the new refactor. * ───────────────────────────────────────────────────────────────────────── */ diff --git a/ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx b/ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx index d50fdf46a6e..f1914f463a1 100644 --- a/ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx +++ b/ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx @@ -1,26 +1,87 @@ -'use client'; -import React, {createContext, useContext, useState} from 'react'; +"use client"; +import React, { createContext, useContext, useEffect, useState } from "react"; type Flags = { refactoredUIFlag: boolean; setRefactoredUIFlag: (v: boolean) => void; }; +const STORAGE_KEY = "feature.refactoredUIFlag"; + const FeatureFlagsCtx = createContext(null); -export const FeatureFlagsProvider = ({ children }: { children: React.ReactNode }) => { - const [refactoredUIFlag, setRefactoredUIFlag] = useState(false); - return ( - - {children} - -); +/** Safely read the flag from localStorage. If anything goes wrong, reset to false. */ +function readFlagSafely(): boolean { + try { + const raw = localStorage.getItem(STORAGE_KEY); + if (raw === null) { + localStorage.setItem(STORAGE_KEY, "false"); + return false; + } + + const v = raw.trim().toLowerCase(); + if (v === "true" || v === "1") return true; + if (v === "false" || v === "0") return false; + + // Last chance: try JSON.parse in case something odd was stored. + const parsed = JSON.parse(raw); + if (typeof parsed === "boolean") return parsed; + + // Malformed → reset to false + localStorage.setItem(STORAGE_KEY, "false"); + return false; + } catch { + // If even accessing localStorage throws, best effort reset then default to false + try { + localStorage.setItem(STORAGE_KEY, "false"); + } catch {} + return false; + } } +function writeFlagSafely(v: boolean) { + try { + localStorage.setItem(STORAGE_KEY, String(v)); + } catch { + // Ignore write errors; state will still reflect the intended value. + } +} + +export const FeatureFlagsProvider = ({ children }: { children: React.ReactNode }) => { + // Lazy init reads from localStorage only on the client + const [refactoredUIFlag, setRefactoredUIFlagState] = useState(() => readFlagSafely()); + + const setRefactoredUIFlag = (v: boolean) => { + setRefactoredUIFlagState(v); + writeFlagSafely(v); + }; + + // Keep this flag in sync across tabs/windows. + useEffect(() => { + const onStorage = (e: StorageEvent) => { + if (e.key === STORAGE_KEY && e.newValue != null) { + const next = e.newValue.trim().toLowerCase(); + setRefactoredUIFlagState(next === "true" || next === "1"); + } + // If the key was cleared elsewhere, self-heal to false. + if (e.key === STORAGE_KEY && e.newValue === null) { + writeFlagSafely(false); + setRefactoredUIFlagState(false); + } + }; + window.addEventListener("storage", onStorage); + return () => window.removeEventListener("storage", onStorage); + }, []); + + return ( + {children} + ); +}; + const useFeatureFlags = () => { const ctx = useContext(FeatureFlagsCtx); - if (!ctx) throw new Error('useFeatureFlags must be used within FeatureFlagsProvider'); + if (!ctx) throw new Error("useFeatureFlags must be used within FeatureFlagsProvider"); return ctx; -} +}; export default useFeatureFlags; From eed19fb4abc6f1c68fa4680acf9436f8fab06869 Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Mon, 6 Oct 2025 19:36:40 -0700 Subject: [PATCH 14/84] slight improvement for Sidebar2 --- .../app/(dashboard)/components/Sidebar2.tsx | 60 ++++++++++++------- ui/litellm-dashboard/src/app/page.tsx | 1 - 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx b/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx index 209cf2e67fd..37901b5e639 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx @@ -1,8 +1,7 @@ "use client"; import React from "react"; -import Link from "next/link"; -import { usePathname, useSearchParams } from "next/navigation"; +import { usePathname, useSearchParams, useRouter } from "next/navigation"; import { Layout, Menu, ConfigProvider } from "antd"; import { KeyOutlined, @@ -62,6 +61,11 @@ const withBase = (relativePath: string) => { }; const Sidebar2: React.FC = ({ accessToken, userRole, defaultSelectedKey, collapsed = false }) => { + const router = useRouter(); + const pathname = usePathname(); + const searchParams = useSearchParams(); + + /** ---------- Menu model ---------- */ const menuItems: MenuItem[] = [ { key: "1", page: "api-keys", label: "Virtual Keys", icon: }, { @@ -217,9 +221,7 @@ const Sidebar2: React.FC = ({ accessToken, userRole, defaultSelect children: item.children?.filter((child) => !child.roles || child.roles.includes(userRole)), })); - // Highlight selection based on pathname or ?page= - const pathname = usePathname(); - const searchParams = useSearchParams(); + /** ---------- Selection state ---------- */ const pageParam = searchParams.get("page") || undefined; const findMenuItemKey = (page: string): string => { @@ -244,31 +246,47 @@ const Sidebar2: React.FC = ({ accessToken, userRole, defaultSelect ? findMenuItemKey(defaultSelectedKey) : "1"; - // Root-only routing helper: always replace everything after the domain, honoring base path - const rootWithPage = (p: string) => ({ - pathname: getBasePath() || "/", - query: { page: p }, - }); + /** ---------- Navigation helpers (SPA only) ---------- */ + // Build a root URL ("/" or "/base/") with an updated ?page=... + const goTo = (p: string) => { + const base = getBasePath() || "/"; + const root = base.endsWith("/") ? base : `${base}/`; + const sp = new URLSearchParams(typeof window !== "undefined" ? window.location.search : ""); + sp.set("page", p); + // Use Next router for client navigation on the SAME route (no hard fetch) + router.replace(`${root}?${sp.toString()}`, { scroll: false }); + }; - // Convert to AntD Menu items: - // - "Virtual Keys" routes to "//virtual-keys" - // - All other items (and children) route to "//?page=" + // Keep the /virtual-keys path the same, but avoid route fetches/hard reloads. + const goToVirtualKeys = () => { + const base = getBasePath() || "/"; + const root = base.endsWith("/") ? base : `${base}/`; + const sp = new URLSearchParams(typeof window !== "undefined" ? window.location.search : ""); + sp.set("page", "api-keys"); + + // 1) Client transition to the root with ?page=api-keys so the view updates. + router.replace(`${root}?${sp.toString()}`, { scroll: false }); + + // 2) Cosmetic URL swap to ".../virtual-keys" without navigation (keeps path the same). + const vk = withBase("virtual-keys"); + if (typeof window !== "undefined") { + window.history.replaceState(null, "", vk); + } + }; + + /** ---------- AntD items with onClick handlers ---------- */ const antdItems = filteredMenuItems.map((item) => { const isVirtualKeys = item.key === "1"; - const label = isVirtualKeys ? ( - Virtual Keys - ) : ( - {item.label} - ); - return { key: item.key, icon: item.icon, - label, + label: item.label, // plain text; click handled via onClick + onClick: !item.children ? (isVirtualKeys ? goToVirtualKeys : () => goTo(item.page)) : undefined, children: item.children?.map((child) => ({ key: child.key, icon: child.icon, - label: {child.label}, + label: child.label, + onClick: () => goTo(child.page), })), }; }); diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index 8e25dc192c8..104ef41810a 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -39,7 +39,6 @@ import VectorStoreManagement from "@/components/vector_store_management"; import UIThemeSettings from "@/components/ui_theme_settings"; import { UiLoadingSpinner } from "@/components/ui/ui-loading-spinner"; import { cx } from "@/lib/cva.config"; -import useFeatureFlags, { FeatureFlagsProvider } from "@/hooks/useFeatureFlags"; import Sidebar2 from "@/app/(dashboard)/components/Sidebar2"; import SidebarProvider from "@/app/(dashboard)/components/SidebarProvider"; From 051c9a7c6192f5179e867ace63358f1bb67816a6 Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Mon, 6 Oct 2025 20:17:19 -0700 Subject: [PATCH 15/84] Sidebar2 uses FF now --- .../app/(dashboard)/components/Sidebar2.tsx | 247 ++++++++---------- .../components/SidebarProvider.tsx | 32 --- .../src/app/(dashboard)/layout.tsx | 26 +- ui/litellm-dashboard/src/app/page.tsx | 18 +- 4 files changed, 141 insertions(+), 182 deletions(-) delete mode 100644 ui/litellm-dashboard/src/app/(dashboard)/components/SidebarProvider.tsx diff --git a/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx b/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx index 37901b5e639..843a176f6e1 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx @@ -1,8 +1,5 @@ -"use client"; - -import React from "react"; -import { usePathname, useSearchParams, useRouter } from "next/navigation"; -import { Layout, Menu, ConfigProvider } from "antd"; +import { Layout, Menu } from "antd"; +import { useRouter, usePathname } from "next/navigation"; // UPDATED: also usePathname to detect current route import { KeyOutlined, PlayCircleOutlined, @@ -23,16 +20,18 @@ import { TagsOutlined, BgColorsOutlined, } from "@ant-design/icons"; +import { ConfigProvider } from "antd"; +import useFeatureFlags from "@/hooks/useFeatureFlags"; import { all_admin_roles, internalUserRoles, isAdminRole, rolesWithWriteAccess } from "@/utils/roles"; import UsageIndicator from "@/components/usage_indicator"; - +import React from "react"; const { Sider } = Layout; interface SidebarProps { accessToken: string | null; + setPage: (page: string) => void; userRole: string; - /** Used to highlight a menu item when pathname doesn't match (e.g., on non-routed pages) */ - defaultSelectedKey?: string; + defaultSelectedKey: string; collapsed?: boolean; } @@ -45,87 +44,77 @@ interface MenuItem { icon?: React.ReactNode; } -/** ---------- Base URL helpers ---------- */ -/** Normalizes NEXT_PUBLIC_BASE_URL into either "" or "/something" (no trailing slash). */ -const getBasePath = () => { - const raw = process.env.NEXT_PUBLIC_BASE_URL ?? ""; - const trimmed = raw.replace(/^\/+|\/+$/g, ""); // strip leading/trailing slashes - return trimmed ? `/${trimmed}` : ""; -}; - -/** Joins base path with a relative path like "virtual-keys" or "/virtual-keys" -> "/base/virtual-keys" */ -const withBase = (relativePath: string) => { - const base = getBasePath(); // "" or "/ui" (no trailing slash) - const rel = relativePath.replace(/^\/+/, ""); // drop any leading slash - return `${base}/${rel}`.replace(/\/{2,}/g, "/"); // collapse accidental doubles -}; - -const Sidebar2: React.FC = ({ accessToken, userRole, defaultSelectedKey, collapsed = false }) => { +const Sidebar2: React.FC = ({ + accessToken, + setPage, + userRole, + defaultSelectedKey, + collapsed = false, +}) => { const router = useRouter(); const pathname = usePathname(); - const searchParams = useSearchParams(); + const { refactoredUIFlag } = useFeatureFlags(); - /** ---------- Menu model ---------- */ const menuItems: MenuItem[] = [ - { key: "1", page: "api-keys", label: "Virtual Keys", icon: }, + { key: "1", page: "api-keys", label: "Virtual Keys", icon: }, { key: "3", page: "llm-playground", label: "Test Key", - icon: , + icon: , roles: rolesWithWriteAccess, }, { key: "2", page: "models", label: "Models + Endpoints", - icon: , + icon: , roles: rolesWithWriteAccess, }, { key: "12", page: "new_usage", label: "Usage", - icon: , + icon: , roles: [...all_admin_roles, ...internalUserRoles], }, - { key: "6", page: "teams", label: "Teams", icon: }, + { key: "6", page: "teams", label: "Teams", icon: }, { key: "17", page: "organizations", label: "Organizations", - icon: , + icon: , roles: all_admin_roles, }, { key: "5", page: "users", label: "Internal Users", - icon: , + icon: , roles: all_admin_roles, }, - { key: "14", page: "api_ref", label: "API Reference", icon: }, - { key: "16", page: "model-hub-table", label: "Model Hub", icon: }, - { key: "15", page: "logs", label: "Logs", icon: }, + { key: "14", page: "api_ref", label: "API Reference", icon: }, + { key: "16", page: "model-hub-table", label: "Model Hub", icon: }, + { key: "15", page: "logs", label: "Logs", icon: }, { key: "11", page: "guardrails", label: "Guardrails", - icon: , + icon: , roles: all_admin_roles, }, { key: "26", page: "tools", label: "Tools", - icon: , + icon: , children: [ - { key: "18", page: "mcp-servers", label: "MCP Servers", icon: }, + { key: "18", page: "mcp-servers", label: "MCP Servers", icon: }, { key: "21", page: "vector-stores", label: "Vector Stores", - icon: , + icon: , roles: all_admin_roles, }, ], @@ -134,162 +123,145 @@ const Sidebar2: React.FC = ({ accessToken, userRole, defaultSelect key: "experimental", page: "experimental", label: "Experimental", - icon: , + icon: , children: [ { key: "9", page: "caching", label: "Caching", - icon: , + icon: , roles: all_admin_roles, }, { key: "25", page: "prompts", label: "Prompts", - icon: , + icon: , roles: all_admin_roles, }, { key: "10", page: "budgets", label: "Budgets", - icon: , + icon: , roles: all_admin_roles, }, { key: "20", page: "transform-request", label: "API Playground", - icon: , + icon: , roles: [...all_admin_roles, ...internalUserRoles], }, { key: "19", page: "tag-management", label: "Tag Management", - icon: , + icon: , roles: all_admin_roles, }, - { key: "4", page: "usage", label: "Old Usage", icon: }, + { key: "4", page: "usage", label: "Old Usage", icon: }, ], }, { key: "settings", page: "settings", label: "Settings", - icon: , + icon: , roles: all_admin_roles, children: [ { key: "11", page: "general-settings", label: "Router Settings", - icon: , + icon: , roles: all_admin_roles, }, { key: "8", page: "settings", label: "Logging & Alerts", - icon: , + icon: , roles: all_admin_roles, }, { key: "13", page: "admin-panel", label: "Admin Settings", - icon: , + icon: , roles: all_admin_roles, }, { key: "14", page: "ui-theme", label: "UI Theme", - icon: , + icon: , roles: all_admin_roles, }, ], }, ]; - // Role filtering (preserves original visibility behavior) - const filteredMenuItems: MenuItem[] = menuItems - .filter((item) => !item.roles || item.roles.includes(userRole)) - .map((item) => ({ - ...item, - children: item.children?.filter((child) => !child.roles || child.roles.includes(userRole)), - })); - - /** ---------- Selection state ---------- */ - const pageParam = searchParams.get("page") || undefined; - const findMenuItemKey = (page: string): string => { - const top = filteredMenuItems.find((i) => i.page === page); - if (top) return top.key; - for (const i of filteredMenuItems) { - const child = i.children?.find((c) => c.page === page); - if (child) return child.key; + const topLevelItem = menuItems.find((item) => item.page === page); + if (topLevelItem) return topLevelItem.key; + for (const item of menuItems) { + if (item.children) { + const childItem = item.children.find((child) => child.page === page); + if (childItem) return childItem.key; + } } return "1"; }; - // Match Virtual Keys path with base prefix (e.g., "/virtual-keys" or "/ui/virtual-keys") - const virtualKeysPath = withBase("virtual-keys"); + const selectedMenuKey = findMenuItemKey(defaultSelectedKey); - const selectedMenuKey = - pathname === virtualKeysPath - ? "1" - : pageParam - ? findMenuItemKey(pageParam) - : defaultSelectedKey - ? findMenuItemKey(defaultSelectedKey) - : "1"; + const filteredMenuItems = menuItems.filter((item) => { + const hasParentAccess = !item.roles || item.roles.includes(userRole); + if (!hasParentAccess) return false; + if (item.children) { + item.children = item.children.filter((child) => !child.roles || child.roles.includes(userRole)); + } + return true; + }); - /** ---------- Navigation helpers (SPA only) ---------- */ - // Build a root URL ("/" or "/base/") with an updated ?page=... - const goTo = (p: string) => { - const base = getBasePath() || "/"; - const root = base.endsWith("/") ? base : `${base}/`; - const sp = new URLSearchParams(typeof window !== "undefined" ? window.location.search : ""); - sp.set("page", p); - // Use Next router for client navigation on the SAME route (no hard fetch) - router.replace(`${root}?${sp.toString()}`, { scroll: false }); - }; - - // Keep the /virtual-keys path the same, but avoid route fetches/hard reloads. - const goToVirtualKeys = () => { - const base = getBasePath() || "/"; - const root = base.endsWith("/") ? base : `${base}/`; - const sp = new URLSearchParams(typeof window !== "undefined" ? window.location.search : ""); - sp.set("page", "api-keys"); - - // 1) Client transition to the root with ?page=api-keys so the view updates. - router.replace(`${root}?${sp.toString()}`, { scroll: false }); - - // 2) Cosmetic URL swap to ".../virtual-keys" without navigation (keeps path the same). - const vk = withBase("virtual-keys"); - if (typeof window !== "undefined") { - window.history.replaceState(null, "", vk); + // Helper: go to /?page=...; when on /virtual-keys with refactored UI, replace instead of appending + const pushToRootWithPage = (page: string, useReplace = false) => { + const params = new URLSearchParams(); + params.set("page", page); + const url = `/?${params.toString()}`; + if (useReplace) { + router.replace(url); + } else { + router.push(url); } }; - /** ---------- AntD items with onClick handlers ---------- */ - const antdItems = filteredMenuItems.map((item) => { - const isVirtualKeys = item.key === "1"; - return { - key: item.key, - icon: item.icon, - label: item.label, // plain text; click handled via onClick - onClick: !item.children ? (isVirtualKeys ? goToVirtualKeys : () => goTo(item.page)) : undefined, - children: item.children?.map((child) => ({ - key: child.key, - icon: child.icon, - label: child.label, - onClick: () => goTo(child.page), - })), - }; - }); + // Centralized navigation that satisfies the requirement + const navigateToPage = (page: string) => { + // Special-case: Virtual Keys target + if (page === "api-keys") { + if (refactoredUIFlag) { + // Go to the dedicated /virtual-keys page + router.push("/virtual-keys"); + return; // do not call setPage here (parity with previous behavior) + } + // Legacy behavior + pushToRootWithPage(page); + setPage(page); + return; + } + + // All other pages + if (refactoredUIFlag) { + // If currently on /virtual-keys, REPLACE it with /?page=... + const onVirtualKeys = pathname?.startsWith("/virtual-keys"); + pushToRootWithPage(page, onVirtualKeys); + } else { + pushToRootWithPage(page); + } + setPage(page); + }; return ( @@ -300,29 +272,36 @@ const Sidebar2: React.FC = ({ accessToken, userRole, defaultSelect collapsedWidth={80} collapsible trigger={null} - style={{ - transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)", - position: "relative", - }} + style={{ transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)", position: "relative" }} > - + ({ + key: item.key, + icon: item.icon, + label: item.label, + children: item.children?.map((child) => ({ + key: child.key, + icon: child.icon, + label: child.label, + onClick: () => { + navigateToPage(child.page); + }, + })), + onClick: !item.children + ? () => { + navigateToPage(item.page); + } + : undefined, + }))} /> - {isAdminRole(userRole) && !collapsed && } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/components/SidebarProvider.tsx b/ui/litellm-dashboard/src/app/(dashboard)/components/SidebarProvider.tsx deleted file mode 100644 index 822a30e6403..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/components/SidebarProvider.tsx +++ /dev/null @@ -1,32 +0,0 @@ -"use client"; - -import Sidebar2 from "@/app/(dashboard)/components/Sidebar2"; -import Sidebar from "@/components/leftnav"; -import React from "react"; -import useFeatureFlags from "@/hooks/useFeatureFlags"; -import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; - -interface SidebarProviderProps { - defaultSelectedKey: string; - sidebarCollapsed: boolean; - setPage: (page: string) => void; -} - -const SidebarProvider = ({ defaultSelectedKey, sidebarCollapsed, setPage }: SidebarProviderProps) => { - const { accessToken, userRole } = useAuthorized(); - const { refactoredUIFlag, setRefactoredUIFlag } = useFeatureFlags(); - - return refactoredUIFlag ? ( - - ) : ( - - ); -}; - -export default SidebarProvider; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx b/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx index ad8a82703f7..7e60443d24f 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx @@ -1,14 +1,31 @@ "use client"; -import React from "react"; +import React, { useEffect, useState } from "react"; import Navbar from "@/components/navbar"; import { ThemeProvider } from "@/contexts/ThemeContext"; import Sidebar2 from "@/app/(dashboard)/components/Sidebar2"; import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; +import { useRouter, useSearchParams } from "next/navigation"; export default function Layout({ children }: { children: React.ReactNode }) { + const router = useRouter(); + const searchParams = useSearchParams(); const { accessToken, userRole } = useAuthorized(); const [sidebarCollapsed, setSidebarCollapsed] = React.useState(false); + const [page, setPage] = useState(() => { + return searchParams.get("page") || "api-keys"; + }); + + const updatePage = (newPage: string) => { + const newSearchParams = new URLSearchParams(searchParams); + newSearchParams.set("page", newPage); + router.push(`/?${newSearchParams.toString()}`); // absolute, not relative + setPage(newPage); + }; + + useEffect(() => { + setPage(searchParams.get("page") || "api-keys"); + }, [searchParams]); const toggleSidebar = () => setSidebarCollapsed((v) => !v); @@ -31,12 +48,7 @@ export default function Layout({ children }: { children: React.ReactNode }) { />
- +
{children}
diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index 104ef41810a..d386df4b77e 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -1,7 +1,7 @@ "use client"; import React, { Suspense, useEffect, useState } from "react"; -import { useSearchParams } from "next/navigation"; +import { useRouter, useSearchParams } from "next/navigation"; import { jwtDecode } from "jwt-decode"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { Team } from "@/components/key_team_helpers/key_list"; @@ -23,7 +23,6 @@ import ModelHubTable from "@/components/model_hub_table"; import NewUsagePage from "@/components/new_usage"; import APIRef from "@/components/api_ref"; import ChatUI from "@/components/chat_ui/ChatUI"; -import Sidebar from "@/components/leftnav"; import Usage from "@/components/usage"; import CacheDashboard from "@/components/cache_dashboard"; import { getUiConfig, proxyBaseUrl, setGlobalLitellmHeaderName } from "@/components/networking"; @@ -40,7 +39,6 @@ import UIThemeSettings from "@/components/ui_theme_settings"; import { UiLoadingSpinner } from "@/components/ui/ui-loading-spinner"; import { cx } from "@/lib/cva.config"; import Sidebar2 from "@/app/(dashboard)/components/Sidebar2"; -import SidebarProvider from "@/app/(dashboard)/components/SidebarProvider"; function getCookie(name: string) { const cookieValue = document.cookie.split("; ").find((row) => row.startsWith(name + "=")); @@ -97,6 +95,7 @@ function LoadingScreen() { } export default function CreateKeyPage() { + const router = useRouter(); const [userRole, setUserRole] = useState(""); const [premiumUser, setPremiumUser] = useState(false); const [disabledPersonalKeyCreation, setDisabledPersonalKeyCreation] = useState(false); @@ -131,13 +130,9 @@ export default function CreateKeyPage() { // Custom setPage function that updates URL const updatePage = (newPage: string) => { - // Update URL without full page reload const newSearchParams = new URLSearchParams(searchParams); newSearchParams.set("page", newPage); - - // Use Next.js router to update URL - window.history.pushState(null, "", `?${newSearchParams.toString()}`); - + router.push(`/?${newSearchParams.toString()}`); // absolute, not relative setPage(newPage); }; @@ -264,7 +259,12 @@ export default function CreateKeyPage() { />
- +
{page == "api-keys" ? ( From cc94fb87b5179936bf02cede86617eb043fbc2b4 Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Mon, 6 Oct 2025 20:32:47 -0700 Subject: [PATCH 16/84] added base URL helpers --- .../app/(dashboard)/components/Sidebar2.tsx | 28 +++++++++++++++---- .../src/app/(dashboard)/layout.tsx | 17 ++++++++++- ui/litellm-dashboard/src/app/page.tsx | 20 +++++++++++-- 3 files changed, 57 insertions(+), 8 deletions(-) diff --git a/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx b/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx index 843a176f6e1..95907f3defb 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx @@ -44,6 +44,24 @@ interface MenuItem { icon?: React.ReactNode; } +/** ---- BASE URL HELPERS (shared pattern across files) ---- */ +function normalizeBasePrefix(raw: string | undefined | null): string { + const trimmed = (raw ?? "").trim(); + if (!trimmed) return ""; // no base + // strip leading/trailing slashes then rebuild as "/segment/" + const core = trimmed.replace(/^\/+/, "").replace(/\/+$/, ""); + return core ? `/${core}/` : "/"; +} +const BASE_PREFIX = normalizeBasePrefix(process.env.NEXT_PUBLIC_BASE_URL); +/** Builds an app-relative path under the configured base prefix. */ +function withBase(path: string): string { + // Accepts paths like "/virtual-keys" or "/?page=..." and prefixes with BASE_PREFIX when present. + const body = path.startsWith("/") ? path.slice(1) : path; + const combined = `${BASE_PREFIX}${body}`; + return combined.startsWith("/") ? combined : `/${combined}`; +} +/** -------------------------------------------------------- */ + const Sidebar2: React.FC = ({ accessToken, setPage, @@ -229,7 +247,7 @@ const Sidebar2: React.FC = ({ const pushToRootWithPage = (page: string, useReplace = false) => { const params = new URLSearchParams(); params.set("page", page); - const url = `/?${params.toString()}`; + const url = withBase(`/?${params.toString()}`); if (useReplace) { router.replace(url); } else { @@ -242,8 +260,8 @@ const Sidebar2: React.FC = ({ // Special-case: Virtual Keys target if (page === "api-keys") { if (refactoredUIFlag) { - // Go to the dedicated /virtual-keys page - router.push("/virtual-keys"); + // Go to the dedicated /virtual-keys page (always under base) + router.push(withBase("/virtual-keys")); return; // do not call setPage here (parity with previous behavior) } // Legacy behavior @@ -255,8 +273,8 @@ const Sidebar2: React.FC = ({ // All other pages if (refactoredUIFlag) { // If currently on /virtual-keys, REPLACE it with /?page=... - const onVirtualKeys = pathname?.startsWith("/virtual-keys"); - pushToRootWithPage(page, onVirtualKeys); + const onVirtualKeys = pathname?.startsWith(withBase("/virtual-keys")); + pushToRootWithPage(page, !!onVirtualKeys); } else { pushToRootWithPage(page); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx b/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx index 7e60443d24f..3d38a7362be 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx @@ -7,6 +7,21 @@ import Sidebar2 from "@/app/(dashboard)/components/Sidebar2"; import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; import { useRouter, useSearchParams } from "next/navigation"; +/** ---- BASE URL HELPERS ---- */ +function normalizeBasePrefix(raw: string | undefined | null): string { + const trimmed = (raw ?? "").trim(); + if (!trimmed) return ""; + const core = trimmed.replace(/^\/+/, "").replace(/\/+$/, ""); + return core ? `/${core}/` : "/"; +} +const BASE_PREFIX = normalizeBasePrefix(process.env.NEXT_PUBLIC_BASE_URL); +function withBase(path: string): string { + const body = path.startsWith("/") ? path.slice(1) : path; + const combined = `${BASE_PREFIX}${body}`; + return combined.startsWith("/") ? combined : `/${combined}`; +} +/** -------------------------------- */ + export default function Layout({ children }: { children: React.ReactNode }) { const router = useRouter(); const searchParams = useSearchParams(); @@ -19,7 +34,7 @@ export default function Layout({ children }: { children: React.ReactNode }) { const updatePage = (newPage: string) => { const newSearchParams = new URLSearchParams(searchParams); newSearchParams.set("page", newPage); - router.push(`/?${newSearchParams.toString()}`); // absolute, not relative + router.push(withBase(`/?${newSearchParams.toString()}`)); // always under BASE setPage(newPage); }; diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index d386df4b77e..b1108583498 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -40,6 +40,21 @@ import { UiLoadingSpinner } from "@/components/ui/ui-loading-spinner"; import { cx } from "@/lib/cva.config"; import Sidebar2 from "@/app/(dashboard)/components/Sidebar2"; +/** ---- BASE URL HELPERS ---- */ +function normalizeBasePrefix(raw: string | undefined | null): string { + const trimmed = (raw ?? "").trim(); + if (!trimmed) return ""; + const core = trimmed.replace(/^\/+/, "").replace(/\/+$/, ""); + return core ? `/${core}/` : "/"; +} +const BASE_PREFIX = normalizeBasePrefix(process.env.NEXT_PUBLIC_BASE_URL); +function withBase(path: string): string { + const body = path.startsWith("/") ? path.slice(1) : path; + const combined = `${BASE_PREFIX}${body}`; + return combined.startsWith("/") ? combined : `/${combined}`; +} +/** -------------------------------- */ + function getCookie(name: string) { const cookieValue = document.cookie.split("; ").find((row) => row.startsWith(name + "=")); return cookieValue ? cookieValue.split("=")[1] : null; @@ -128,11 +143,11 @@ export default function CreateKeyPage() { setPage(searchParams.get("page") || "api-keys"); }, [searchParams]); - // Custom setPage function that updates URL + // Custom setPage function that updates URL (always under BASE) const updatePage = (newPage: string) => { const newSearchParams = new URLSearchParams(searchParams); newSearchParams.set("page", newPage); - router.push(`/?${newSearchParams.toString()}`); // absolute, not relative + router.push(withBase(`/?${newSearchParams.toString()}`)); setPage(newPage); }; @@ -160,6 +175,7 @@ export default function CreateKeyPage() { useEffect(() => { if (redirectToLogin) { + // This is an external auth route (kept as-is, not app navigation). window.location.href = (proxyBaseUrl || "") + "/sso/key/generate"; } }, [redirectToLogin]); From 7ed4715a9b763faf15520989637f99f62828989c Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Mon, 6 Oct 2025 20:42:59 -0700 Subject: [PATCH 17/84] eliminates loading screen flash --- .../app/(dashboard)/components/Sidebar2.tsx | 61 +- ui/litellm-dashboard/src/app/page.tsx | 534 +++++++++--------- 2 files changed, 280 insertions(+), 315 deletions(-) diff --git a/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx b/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx index 95907f3defb..2ebfbc5d4f6 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/components/Sidebar2.tsx @@ -1,5 +1,5 @@ import { Layout, Menu } from "antd"; -import { useRouter, usePathname } from "next/navigation"; // UPDATED: also usePathname to detect current route +import { usePathname } from "next/navigation"; import { KeyOutlined, PlayCircleOutlined, @@ -44,23 +44,29 @@ interface MenuItem { icon?: React.ReactNode; } -/** ---- BASE URL HELPERS (shared pattern across files) ---- */ +/** ---- BASE URL HELPERS ---- */ function normalizeBasePrefix(raw: string | undefined | null): string { const trimmed = (raw ?? "").trim(); if (!trimmed) return ""; // no base - // strip leading/trailing slashes then rebuild as "/segment/" const core = trimmed.replace(/^\/+/, "").replace(/\/+$/, ""); - return core ? `/${core}/` : "/"; + return core ? `/${core}` : ""; } const BASE_PREFIX = normalizeBasePrefix(process.env.NEXT_PUBLIC_BASE_URL); -/** Builds an app-relative path under the configured base prefix. */ + +/** Build an absolute path under the configured base. */ function withBase(path: string): string { - // Accepts paths like "/virtual-keys" or "/?page=..." and prefixes with BASE_PREFIX when present. - const body = path.startsWith("/") ? path.slice(1) : path; - const combined = `${BASE_PREFIX}${body}`; - return combined.startsWith("/") ? combined : `/${combined}`; + // path can be "/virtual-keys" or "/?page=..." + const p = path.startsWith("/") ? path : `/${path}`; + return `${BASE_PREFIX}${p}` || p; } -/** -------------------------------------------------------- */ + +/** History-based navigation to prevent hard reloads / suspense flashes */ +function softNavigate(url: string, replace = false) { + if (typeof window === "undefined") return; + if (replace) window.history.replaceState(null, "", url); + else window.history.pushState(null, "", url); +} +/** -------------------------------- */ const Sidebar2: React.FC = ({ accessToken, @@ -69,7 +75,6 @@ const Sidebar2: React.FC = ({ defaultSelectedKey, collapsed = false, }) => { - const router = useRouter(); const pathname = usePathname(); const { refactoredUIFlag } = useFeatureFlags(); @@ -243,38 +248,30 @@ const Sidebar2: React.FC = ({ return true; }); - // Helper: go to /?page=...; when on /virtual-keys with refactored UI, replace instead of appending + // Helper: update /?page=... under the configured base, WITHOUT triggering App Router nav const pushToRootWithPage = (page: string, useReplace = false) => { const params = new URLSearchParams(); params.set("page", page); const url = withBase(`/?${params.toString()}`); - if (useReplace) { - router.replace(url); - } else { - router.push(url); - } + softNavigate(url, useReplace); }; - // Centralized navigation that satisfies the requirement const navigateToPage = (page: string) => { - // Special-case: Virtual Keys target if (page === "api-keys") { if (refactoredUIFlag) { - // Go to the dedicated /virtual-keys page (always under base) - router.push(withBase("/virtual-keys")); - return; // do not call setPage here (parity with previous behavior) + // vanity URL, keep SPA alive + softNavigate(withBase("/virtual-keys")); + return; // don't call setPage to keep parity, UI already shows api-keys by default } - // Legacy behavior pushToRootWithPage(page); setPage(page); return; } - // All other pages if (refactoredUIFlag) { - // If currently on /virtual-keys, REPLACE it with /?page=... - const onVirtualKeys = pathname?.startsWith(withBase("/virtual-keys")); - pushToRootWithPage(page, !!onVirtualKeys); + const onVirtualKeys = + typeof window !== "undefined" && window.location.pathname.startsWith(withBase("/virtual-keys")); + pushToRootWithPage(page, onVirtualKeys); } else { pushToRootWithPage(page); } @@ -308,15 +305,9 @@ const Sidebar2: React.FC = ({ key: child.key, icon: child.icon, label: child.label, - onClick: () => { - navigateToPage(child.page); - }, + onClick: () => navigateToPage(child.page), })), - onClick: !item.children - ? () => { - navigateToPage(item.page); - } - : undefined, + onClick: !item.children ? () => navigateToPage(item.page) : undefined, }))} /> diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index b1108583498..f83972e0c18 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -1,7 +1,6 @@ "use client"; -import React, { Suspense, useEffect, useState } from "react"; -import { useRouter, useSearchParams } from "next/navigation"; +import React, { useEffect, useMemo, useState } from "react"; import { jwtDecode } from "jwt-decode"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { Team } from "@/components/key_team_helpers/key_list"; @@ -45,32 +44,28 @@ function normalizeBasePrefix(raw: string | undefined | null): string { const trimmed = (raw ?? "").trim(); if (!trimmed) return ""; const core = trimmed.replace(/^\/+/, "").replace(/\/+$/, ""); - return core ? `/${core}/` : "/"; + return core ? `/${core}` : ""; } const BASE_PREFIX = normalizeBasePrefix(process.env.NEXT_PUBLIC_BASE_URL); function withBase(path: string): string { - const body = path.startsWith("/") ? path.slice(1) : path; - const combined = `${BASE_PREFIX}${body}`; - return combined.startsWith("/") ? combined : `/${combined}`; + const p = path.startsWith("/") ? path : `/${path}`; + return `${BASE_PREFIX}${p}` || p; } /** -------------------------------- */ function getCookie(name: string) { + if (typeof document === "undefined") return null; const cookieValue = document.cookie.split("; ").find((row) => row.startsWith(name + "=")); return cookieValue ? cookieValue.split("=")[1] : null; } function formatUserRole(userRole: string) { - if (!userRole) { - return "Undefined Role"; - } + if (!userRole) return "Undefined Role"; switch (userRole.toLowerCase()) { case "app_owner": - return "App Owner"; case "demo_app_owner": return "App Owner"; case "app_admin": - return "Admin"; case "proxy_admin": return "Admin"; case "proxy_admin_viewer": @@ -80,7 +75,7 @@ function formatUserRole(userRole: string) { case "internal_user": return "Internal User"; case "internal_user_viewer": - case "internal_viewer": // TODO:remove if deprecated + case "internal_viewer": return "Internal Viewer"; case "app_user": return "App User"; @@ -100,7 +95,6 @@ function LoadingScreen() { return (
🚅 LiteLLM
-
Loading... @@ -109,8 +103,17 @@ function LoadingScreen() { ); } +/** Derive the app "page" from the URL without triggering App Router navigations */ +function getPageFromLocation(loc: Location): string { + const sp = new URLSearchParams(loc.search); + const p = sp.get("page"); + if (p) return p; + // vanity route for refactored UI + if (loc.pathname.endsWith("/virtual-keys")) return "api-keys"; + return "api-keys"; +} + export default function CreateKeyPage() { - const router = useRouter(); const [userRole, setUserRole] = useState(""); const [premiumUser, setPremiumUser] = useState(false); const [disabledPersonalKeyCreation, setDisabledPersonalKeyCreation] = useState(false); @@ -119,55 +122,64 @@ export default function CreateKeyPage() { const [keys, setKeys] = useState([]); const [organizations, setOrganizations] = useState([]); const [userModels, setUserModels] = useState([]); - const [proxySettings, setProxySettings] = useState({ - PROXY_BASE_URL: "", - PROXY_LOGOUT_URL: "", - }); - + const [proxySettings, setProxySettings] = useState({ PROXY_BASE_URL: "", PROXY_LOGOUT_URL: "" }); const [showSSOBanner, setShowSSOBanner] = useState(true); - const searchParams = useSearchParams()!; - const [modelData, setModelData] = useState({ data: [] }); + + // Stable local mirror of URLSearchParams (no suspense, no flashes) + const [searchParams, setSearchParams] = useState(() => + typeof window === "undefined" ? new URLSearchParams() : new URLSearchParams(window.location.search), + ); + const invitation_id = useMemo(() => searchParams.get("invitation_id"), [searchParams]); + + // Local page state (drives UI) + const [page, setPage] = useState(() => + typeof window === "undefined" ? "api-keys" : getPageFromLocation(window.location), + ); + + // Keep history/back/forward in sync with UI + useEffect(() => { + const onPop = () => { + if (typeof window === "undefined") return; + setSearchParams(new URLSearchParams(window.location.search)); + setPage(getPageFromLocation(window.location)); + }; + window.addEventListener("popstate", onPop); + return () => window.removeEventListener("popstate", onPop); + }, []); + + // Update URL without triggering App Router reload/suspense + const updatePage = (newPage: string) => { + if (typeof window === "undefined") return; + // 1) instant UI update + setPage(newPage); + // 2) URL update under base prefix + const sp = new URLSearchParams(window.location.search); + sp.set("page", newPage); + const url = withBase(`/?${sp.toString()}`); + window.history.pushState(null, "", url); + // 3) keep our local mirror in sync + setSearchParams(new URLSearchParams(sp)); + }; + const [token, setToken] = useState(null); const [createClicked, setCreateClicked] = useState(false); const [authLoading, setAuthLoading] = useState(true); const [userID, setUserID] = useState(null); - const invitation_id = searchParams.get("invitation_id"); - - // Get page from URL, default to 'api-keys' if not present - const [page, setPage] = useState(() => { - return searchParams.get("page") || "api-keys"; - }); - - useEffect(() => { - setPage(searchParams.get("page") || "api-keys"); - }, [searchParams]); - - // Custom setPage function that updates URL (always under BASE) - const updatePage = (newPage: string) => { - const newSearchParams = new URLSearchParams(searchParams); - newSearchParams.set("page", newPage); - router.push(withBase(`/?${newSearchParams.toString()}`)); - setPage(newPage); - }; - const [accessToken, setAccessToken] = useState(null); const [sidebarCollapsed, setSidebarCollapsed] = useState(false); - const toggleSidebar = () => { - setSidebarCollapsed(!sidebarCollapsed); - }; + const toggleSidebar = () => setSidebarCollapsed((v) => !v); const addKey = (data: any) => { setKeys((prevData) => (prevData ? [...prevData, data] : [data])); - setCreateClicked(() => !createClicked); + setCreateClicked((v) => !v); }; const redirectToLogin = authLoading === false && token === null && invitation_id === null; useEffect(() => { const token = getCookie("token"); - getUiConfig().then((data) => { - // get the information for constructing the proxy base url, and then set the token and auth loading + getUiConfig().then(() => { setToken(token); setAuthLoading(false); }); @@ -175,59 +187,33 @@ export default function CreateKeyPage() { useEffect(() => { if (redirectToLogin) { - // This is an external auth route (kept as-is, not app navigation). window.location.href = (proxyBaseUrl || "") + "/sso/key/generate"; } }, [redirectToLogin]); useEffect(() => { - if (!token) { - return; - } - + if (!token) return; const decoded = jwtDecode(token) as { [key: string]: any }; - if (decoded) { - // set accessToken - setAccessToken(decoded.key); + if (!decoded) return; - setDisabledPersonalKeyCreation(decoded.disabled_non_admin_personal_key_creation); + setAccessToken(decoded.key); + setDisabledPersonalKeyCreation(decoded.disabled_non_admin_personal_key_creation); - // check if userRole is defined - if (decoded.user_role) { - const formattedUserRole = formatUserRole(decoded.user_role); - setUserRole(formattedUserRole); - if (formattedUserRole == "Admin Viewer") { - setPage("usage"); - } - } - - if (decoded.user_email) { - setUserEmail(decoded.user_email); - } - - if (decoded.login_method) { - setShowSSOBanner(decoded.login_method == "username_password" ? true : false); - } - - if (decoded.premium_user) { - setPremiumUser(decoded.premium_user); - } - - if (decoded.auth_header_name) { - setGlobalLitellmHeaderName(decoded.auth_header_name); - } - - if (decoded.user_id) { - setUserID(decoded.user_id); - } + if (decoded.user_role) { + const formattedUserRole = formatUserRole(decoded.user_role); + setUserRole(formattedUserRole); + if (formattedUserRole === "Admin Viewer") setPage("usage"); } + if (decoded.user_email) setUserEmail(decoded.user_email); + if (decoded.login_method) setShowSSOBanner(decoded.login_method === "username_password"); + if (decoded.premium_user) setPremiumUser(decoded.premium_user); + if (decoded.auth_header_name) setGlobalLitellmHeaderName(decoded.auth_header_name); + if (decoded.user_id) setUserID(decoded.user_id); }, [token]); useEffect(() => { if (accessToken && userID && userRole) { fetchUserModels(userID, userRole, accessToken, setUserModels); - } - if (accessToken && userID && userRole) { fetchTeams(accessToken, userID, userRole, null, setTeams); } if (accessToken) { @@ -240,206 +226,194 @@ export default function CreateKeyPage() { } return ( - }> - - - {invitation_id ? ( - + + {invitation_id ? ( + + ) : ( +
+ - ) : ( -
- -
-
- -
- - {page == "api-keys" ? ( - - ) : page == "models" ? ( - - ) : page == "llm-playground" ? ( - - ) : page == "users" ? ( - - ) : page == "teams" ? ( - - ) : page == "organizations" ? ( - - ) : page == "admin-panel" ? ( - - ) : page == "api_ref" ? ( - - ) : page == "settings" ? ( - - ) : page == "budgets" ? ( - - ) : page == "guardrails" ? ( - - ) : page == "prompts" ? ( - - ) : page == "transform-request" ? ( - - ) : page == "general-settings" ? ( - - ) : page == "ui-theme" ? ( - - ) : page == "model-hub-table" ? ( - - ) : page == "caching" ? ( - - ) : page == "pass-through-settings" ? ( - - ) : page == "logs" ? ( - - ) : page == "mcp-servers" ? ( - - ) : page == "tag-management" ? ( - - ) : page == "vector-stores" ? ( - - ) : page == "new_usage" ? ( - - ) : ( - - )} +
+
+
+ + {page === "api-keys" ? ( + + ) : page === "models" ? ( + {}} + premiumUser={premiumUser} + teams={teams} + /> + ) : page === "llm-playground" ? ( + + ) : page === "users" ? ( + + ) : page === "teams" ? ( + + ) : page === "organizations" ? ( + + ) : page === "admin-panel" ? ( + + ) : page === "api_ref" ? ( + + ) : page === "settings" ? ( + + ) : page === "budgets" ? ( + + ) : page === "guardrails" ? ( + + ) : page === "prompts" ? ( + + ) : page === "transform-request" ? ( + + ) : page === "general-settings" ? ( + + ) : page === "ui-theme" ? ( + + ) : page === "model-hub-table" ? ( + + ) : page === "caching" ? ( + + ) : page === "pass-through-settings" ? ( + + ) : page === "logs" ? ( + + ) : page === "mcp-servers" ? ( + + ) : page === "tag-management" ? ( + + ) : page === "vector-stores" ? ( + + ) : page === "new_usage" ? ( + + ) : ( + + )}
- )} - - - +
+ )} + + ); } From c0d0424eb816e53a09b535be747fe4010acf5b22 Mon Sep 17 00:00:00 2001 From: Sameer Kankute Date: Tue, 7 Oct 2025 20:45:57 +0530 Subject: [PATCH 18/84] Added streaming support for response api streaming image generation (#15269) --- .../docs/providers/openai/responses_api.md | 50 ++++++++ docs/my-website/docs/response_api.md | 50 ++++++++ .../llms/openai/responses/transformation.py | 1 + litellm/types/llms/openai.py | 11 ++ .../test_openai_responses_transformation.py | 108 ++++++++++++++++++ 5 files changed, 220 insertions(+) diff --git a/docs/my-website/docs/providers/openai/responses_api.md b/docs/my-website/docs/providers/openai/responses_api.md index e96a2f95225..8d91ca674b7 100644 --- a/docs/my-website/docs/providers/openai/responses_api.md +++ b/docs/my-website/docs/providers/openai/responses_api.md @@ -37,6 +37,29 @@ for event in response: print(event) ``` +#### Image Generation with Streaming +```python showLineNumbers title="OpenAI Streaming Image Generation" +import litellm +import base64 + +# Streaming image generation with partial images +stream = litellm.responses( + model="gpt-4.1", # Use an actual image generation model + input="Generate a gorgeous image of a river made of white owl feathers", + stream=True, + tools=[{"type": "image_generation", "partial_images": 2}], + +) + +for event in stream: + if event.type == "response.image_generation_call.partial_image": + idx = event.partial_image_index + image_base64 = event.partial_image_b64 + image_bytes = base64.b64decode(image_base64) + with open(f"river{idx}.png", "wb") as f: + f.write(image_bytes) +``` + #### GET a Response ```python showLineNumbers title="Get Response by ID" import litellm @@ -150,6 +173,33 @@ for event in response: print(event) ``` +#### Image Generation with Streaming +```python showLineNumbers title="OpenAI Proxy Streaming Image Generation" +from openai import OpenAI +import base64 + +# Initialize client with your proxy URL +client = OpenAI(api_key="sk-1234", base_url="http://localhost:4000") + +stream = client.responses.create( + model="gpt-4.1", + input="Draw a gorgeous image of a river made of white owl feathers, snaking its way through a serene winter landscape", + stream=True, + tools=[{"type": "image_generation", "partial_images": 2}], +) + + +for event in stream: + print(f"event: {event}") + if event.type == "response.image_generation_call.partial_image": + idx = event.partial_image_index + image_base64 = event.partial_image_b64 + image_bytes = base64.b64decode(image_base64) + with open(f"river{idx}.png", "wb") as f: + f.write(image_bytes) + +``` + #### GET a Response ```python showLineNumbers title="Get Response by ID with OpenAI SDK" from openai import OpenAI diff --git a/docs/my-website/docs/response_api.md b/docs/my-website/docs/response_api.md index 8bb10bbe36a..80bd2ba6f7b 100644 --- a/docs/my-website/docs/response_api.md +++ b/docs/my-website/docs/response_api.md @@ -14,6 +14,7 @@ Requests to /chat/completions may be bridged here automatically when the provide | Logging | ✅ | Works across all integrations | | End-user Tracking | ✅ | | | Streaming | ✅ | | +| Image Generation Streaming | ✅ | Progressive image generation with partial images (1-3) | | Fallbacks | ✅ | Works between supported models | | Loadbalancing | ✅ | Works between supported models | | Supported operations | Create a response, Get a response, Delete a response | | @@ -56,6 +57,29 @@ for event in response: print(event) ``` +#### Image Generation with Streaming +```python showLineNumbers title="OpenAI Streaming Image Generation" +import litellm +import base64 + +# Streaming image generation with partial images +stream = litellm.responses( + model="gpt-4.1", # Use an actual image generation model + input="Generate a gorgeous image of a river made of white owl feathers", + stream=True, + tools=[{"type": "image_generation", "partial_images": 2}], + +) + +for event in stream: + if event.type == "response.image_generation_call.partial_image": + idx = event.partial_image_index + image_base64 = event.partial_image_b64 + image_bytes = base64.b64decode(image_base64) + with open(f"river{idx}.png", "wb") as f: + f.write(image_bytes) +``` + #### GET a Response ```python showLineNumbers title="Get Response by ID" import litellm @@ -380,6 +404,32 @@ for event in response: print(event) ``` +#### Image Generation with Streaming +```python showLineNumbers title="OpenAI Proxy Streaming Image Generation" +from openai import OpenAI +import base64 + +client = OpenAI(api_key="sk-1234", base_url="http://localhost:4000") + +stream = client.responses.create( + model="gpt-4.1", + input="Draw a gorgeous image of a river made of white owl feathers, snaking its way through a serene winter landscape", + stream=True, + tools=[{"type": "image_generation", "partial_images": 2}], +) + + +for event in stream: + print(f"event: {event}") + if event.type == "response.image_generation_call.partial_image": + idx = event.partial_image_index + image_base64 = event.partial_image_b64 + image_bytes = base64.b64decode(image_base64) + with open(f"river{idx}.png", "wb") as f: + f.write(image_bytes) + +``` + #### GET a Response ```python showLineNumbers title="Get Response by ID with OpenAI SDK" from openai import OpenAI diff --git a/litellm/llms/openai/responses/transformation.py b/litellm/llms/openai/responses/transformation.py index 3d0ec243e5c..0f67401b3d0 100644 --- a/litellm/llms/openai/responses/transformation.py +++ b/litellm/llms/openai/responses/transformation.py @@ -271,6 +271,7 @@ class OpenAIResponsesAPIConfig(BaseResponsesAPIConfig): ResponsesAPIStreamEvents.MCP_CALL_ARGUMENTS_DONE: MCPCallArgumentsDoneEvent, ResponsesAPIStreamEvents.MCP_CALL_COMPLETED: MCPCallCompletedEvent, ResponsesAPIStreamEvents.MCP_CALL_FAILED: MCPCallFailedEvent, + ResponsesAPIStreamEvents.IMAGE_GENERATION_PARTIAL_IMAGE: ImageGenerationPartialImageEvent, ResponsesAPIStreamEvents.ERROR: ErrorEvent, } diff --git a/litellm/types/llms/openai.py b/litellm/types/llms/openai.py index 9f4ae03b39d..0369ed1e204 100644 --- a/litellm/types/llms/openai.py +++ b/litellm/types/llms/openai.py @@ -992,6 +992,7 @@ class ResponsesAPIOptionalRequestParams(TypedDict, total=False): prompt_cache_key: Optional[str] stream_options: Optional[dict] top_logprobs: Optional[int] + partial_images: Optional[int] # Number of partial images to generate (1-3) for streaming image generation class ResponsesAPIRequestParams(ResponsesAPIOptionalRequestParams, total=False): @@ -1129,6 +1130,9 @@ class ResponsesAPIStreamEvents(str, Enum): MCP_CALL_COMPLETED = "response.mcp_call.completed" MCP_CALL_FAILED = "response.mcp_call.failed" + # Image generation events + IMAGE_GENERATION_PARTIAL_IMAGE = "image_generation.partial_image" + # Error event ERROR = "error" @@ -1352,6 +1356,12 @@ class MCPCallFailedEvent(BaseLiteLLMOpenAIResponseObject): output_index: int +class ImageGenerationPartialImageEvent(BaseLiteLLMOpenAIResponseObject): + type: Literal[ResponsesAPIStreamEvents.IMAGE_GENERATION_PARTIAL_IMAGE] + partial_image_index: int + b64_json: str + + class ErrorEvent(BaseLiteLLMOpenAIResponseObject): type: Literal[ResponsesAPIStreamEvents.ERROR] code: Optional[str] @@ -1400,6 +1410,7 @@ ResponsesAPIStreamingResponse = Annotated[ MCPCallArgumentsDoneEvent, MCPCallCompletedEvent, MCPCallFailedEvent, + ImageGenerationPartialImageEvent, ErrorEvent, GenericEvent, ], diff --git a/tests/test_litellm/llms/openai/responses/test_openai_responses_transformation.py b/tests/test_litellm/llms/openai/responses/test_openai_responses_transformation.py index a6a34518098..fa5231a2a2f 100644 --- a/tests/test_litellm/llms/openai/responses/test_openai_responses_transformation.py +++ b/tests/test_litellm/llms/openai/responses/test_openai_responses_transformation.py @@ -14,6 +14,7 @@ import litellm from litellm.llms.azure.responses.transformation import AzureOpenAIResponsesAPIConfig from litellm.llms.openai.responses.transformation import OpenAIResponsesAPIConfig from litellm.types.llms.openai import ( + ImageGenerationPartialImageEvent, OutputTextDeltaEvent, ResponseCompletedEvent, ResponsesAPIRequestParams, @@ -282,6 +283,113 @@ class TestOpenAIResponsesAPIConfig: assert isinstance(result, GenericEvent) assert result.type == "test" + def test_get_event_model_class_image_generation_partial_image(self): + """Test that get_event_model_class returns ImageGenerationPartialImageEvent for image generation events""" + event_type = ResponsesAPIStreamEvents.IMAGE_GENERATION_PARTIAL_IMAGE + result = self.config.get_event_model_class(event_type) + assert result == ImageGenerationPartialImageEvent + + def test_transform_streaming_response_image_generation_partial_image(self): + """Test streaming response transformation for image generation partial image events""" + # Test with a partial image event - simulating OpenAI's streaming image generation + chunk = { + "type": "image_generation.partial_image", + "partial_image_index": 0, + "b64_json": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==", # 1x1 red pixel PNG + } + + result = self.config.transform_streaming_response( + model=self.model, parsed_chunk=chunk, logging_obj=self.logging_obj + ) + + # Verify the result is the correct event type + assert isinstance(result, ImageGenerationPartialImageEvent) + assert result.type == ResponsesAPIStreamEvents.IMAGE_GENERATION_PARTIAL_IMAGE + assert result.partial_image_index == 0 + assert result.b64_json == chunk["b64_json"] + assert len(result.b64_json) > 0 # Verify we have image data + + def test_transform_streaming_response_multiple_partial_images(self): + """Test streaming response with multiple partial images (simulating progressive image generation)""" + # Test with multiple partial images (as would happen with partial_images=2 or 3) + test_cases = [ + { + "type": "image_generation.partial_image", + "partial_image_index": 0, + "b64_json": "base64data_partial_0", + }, + { + "type": "image_generation.partial_image", + "partial_image_index": 1, + "b64_json": "base64data_partial_1", + }, + { + "type": "image_generation.partial_image", + "partial_image_index": 2, + "b64_json": "base64data_partial_2", + }, + ] + + for idx, chunk in enumerate(test_cases): + result = self.config.transform_streaming_response( + model=self.model, parsed_chunk=chunk, logging_obj=self.logging_obj + ) + + assert isinstance(result, ImageGenerationPartialImageEvent) + assert result.type == ResponsesAPIStreamEvents.IMAGE_GENERATION_PARTIAL_IMAGE + assert result.partial_image_index == idx + assert result.b64_json == chunk["b64_json"] + + def test_transform_responses_api_request_with_partial_images_param(self): + """Test request transformation with partial_images parameter for streaming image generation""" + input_text = "Generate a beautiful landscape" + optional_params = { + "temperature": 0.7, + "stream": True, + "partial_images": 2, # Request 2 partial images during generation + } + + result = self.config.transform_responses_api_request( + model=self.model, + input=input_text, + response_api_optional_request_params=optional_params, + litellm_params={}, + headers={}, + ) + + # Validate the result includes partial_images parameter + expected_fields = { + "model": self.model, + "input": input_text, + "temperature": 0.7, + "stream": True, + "partial_images": 2, + } + + self.validate_responses_api_request_params(result, expected_fields) + + def test_partial_images_parameter_validation(self): + """Test that partial_images parameter accepts valid values (1-3)""" + input_text = "Generate an image" + + # Test with different valid partial_images values + for partial_images_value in [1, 2, 3]: + optional_params = { + "stream": True, + "partial_images": partial_images_value, + } + + result = self.config.transform_responses_api_request( + model=self.model, + input=input_text, + response_api_optional_request_params=optional_params, + litellm_params={}, + headers={}, + ) + + assert result["partial_images"] == partial_images_value + assert result["stream"] is True + class TestAzureResponsesAPIConfig: def setup_method(self): From e2f21beb7f5ee9e177daa6c0cd42ca3f2e061184 Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Tue, 7 Oct 2025 10:21:18 -0700 Subject: [PATCH 19/84] added Infinity as a provider in the UI --- .../public/assets/logos/infinity.png | Bin 0 -> 7377 bytes .../add_model/provider_specific_fields.tsx | 7 +++++++ .../src/components/provider_info_helpers.tsx | 3 +++ 3 files changed, 10 insertions(+) create mode 100644 ui/litellm-dashboard/public/assets/logos/infinity.png diff --git a/ui/litellm-dashboard/public/assets/logos/infinity.png b/ui/litellm-dashboard/public/assets/logos/infinity.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f725799868cd5b44f30a164ae23a040835e303 GIT binary patch literal 7377 zcmbuE^;eY7+kh9OyStGtB?Lio>0G*7q@-hk1r{Wwky1K73KC08gM_5CfHX)fwRFR> z?|%P=cg~r)&ojR~^E_wH+;d&`N06=>F#!Vs001D?P**lU#|U(f#KS?4cn%Go=z#C7 zZte#F5K{iHV*qmV>ClrHeg$=kFBargn>FKHJBNgHJbY~&_ zf^UsgKH$IzqiL6xmexxy^Ud!^0qB^iT>g@s#zEM)#)W5Cm6@OnW0p^VgILPA0Vh(bVA^j!S!xJ2IT z?td2tQMjb<1kD?^_a5&qCe7HREj`<~8k{E!@%i}pYVQ6vt0ptZIyyQo10f8UDFS?a zXVW!6f31D&X(n=Vc8jnkpk#R_jnYX<29KU+j2_{gEGG{SPtk0mP0(h{g$WtCICd-Y zdf9R6Hq#x}wo4M<_EFU~)jK1VRh}i8%d*n~Z}tPZ+@{v4G?VHEM(7aN@4ACO-yKVo zX?_dtw1mR$D0csY@9YSzws_eNX7U+U8j}yEFf&FqlsCK0RgxkQQ3_uFCF@M&zoz7D zPi2R)@dnwEM<(T2eDL{)L3+*H_&F2VCJqnmBX+5t3!DR@@j#wnr*X^ z8jzUkvi!rtPaLYg+8*Eq{JF~3&EhGT-%mlwRFdco{Ws?Ed7O?fI#W>-)Dh@W6^^`z z+fR{quLFQI8~o0XXQ|K?FXLw{!Q1KYp5YL+lJ-JrOTelx52>lCRsIc%ObPWq2!yD3 zyJXY;QQW&^=Iy87ll$34!zvegTb7iRrZIK?3)#`>_OkS2J>GecLdFL0vhJ6#j%$*R_jgmPDhF34ib4#Eh>x+c!+`(rw#l7NH^@eR1kHZa=_wL-ozXnx zCriUjVvyjkbe;XSnkVjh&TDeV#z3F4A>=AY+);7X8x3tuGfh*AV5cc8ryGPO%^*Lf zrP-K|Wc00U^hQD0<9X`ums6NtQ)uy?PYb!Ni8cF_=U@o0jxs^BE;TRdch}1u45eSwAVW^zd0Sp>LA8 z$#T|L_wgmXWwxxfk>yzwJesRAJ%$%Sk2Ub$@Bz-`y46xyD5suYlC9z3C~sVc9k02% z828?Zyi`sojygHudH&qrZK_z&|KS=THZwb$YN-hL0u~LPFr$-Apj%fpNxibIyRR%= zzGFp}Kjks0+rJ|4`iuGNeJYbCjgUpt{Ftn@z|W}?AR{q@_+I(jN=I**k1yD@mujVK zvp)1Ny`?9RZ6I2CYpn#Njm}a?eM_wAZ5-U&I4PI+p#_3L$cVq1tlaXX=5H#g+>!}c z;vA-AkbM8wTOmi-`Z|r#iHyQZqD~20;i12_Sekc7`eA5@^UCY0JRI-^0 z#@aEzG*gxog&$UE2-?&;s3>T@@cB2ei(Xz3VJevRLn`+IeiezADGQTVghAy5SypDI zzgV03`0;9o7blaEIyikU0e)uN-l3iQC2;q-^ z_$fhclhOE;OBq_7yzN#NjPX7nqwR=~{gqm3&7T)C`kx>MD{6oW7FP2_R;OT1`vh4(8;?*((>H~Zsw znmkwU$?0zCJQCxs>#E4RZ50ohj@$8aTV{UftoX?ey-QhTiVNV6rQvKZXjfzN&WwP} zMXnV_*ZtxRU!z_Iw~0{SXb8qmEkI-3Y}|RahyhMy8G2<6B9XcgoZ^>I=j^?2l~OA0yrMcXq8 z?HOqMNC3u|5$Zkci^2m7UBU*UV4U(J+szTel@$0q8iaA4e4%feBzN`{_YNlDu$3~t zo`tJQA_KOpOpo@Qm#}N1oh^xZuE*;FNE_oDWPN$(Zcv6}S9)Eu0tz0i2u z7!D-1*3v+UTqTcT=|Vbye6@Zs+~v})nwR?U3N(}6n1T15m0w9m`ZJ z!TQ4a49#>+DLM75;qYd`(b19fdg#UYvz)@48nV;Bj;UOB82$T}B;~^fKx-C}jnqkn zM`=O0G2QL_<^JsKcS~A**wveatS?`JL$(H!&ENi5XB$BHdNmzdgcIEOvN{uCR=Esc zLCAkgyV21$#}U{H0_V2KHVT5eUIYkqi83i>ZTxdqdY~e5rWtL&V@2J@!CCM+`AdFx z6rE)epL&aVNDp>do?9%RgSw3A2E2`U)Mw&38diMxR@V(8mOVRaXwA1L*`8|{zY;-O zXYt#wh_7^>$8w!?KOAES;H7b_1j7qDyvK_AR(Pv9h+{iQ@G1V=!^oc{r)9>ehuSEHK?p0Br7hBw@wqjSTA%1hJfZ#sAl z5>1i;Ri8;#tqcig4yRz$m$AYO3hn9`bQ8%OmW2b@VFfcV#=l?QlP`1*k|7#dp^s-z z=Z`|6uli_omAX>8I`` zdTd1wZ~o3skGQuTk7Nm$PFS>hZ~8RP5pbM-_!<9%z&qu-|SQ1Vi3DW6zL`{aql)?@LZ$kTq( z+K|vC;%$8I&9S|LPGuR=U?xwY|GJ7k-zhFa@UWSngv$f zKQQvD+cg$L2sArE_~m)-|J`1jX$XAU?0)L81_2sulX;2%e9W1!XruVk^Oc>I{2^S{ zZ}&GpdG|BoI|^9#%o-}@g()@*e)6@jBbMLjzh8-|pF9kOU{}vvbd0;V=C76sOa~-H z`~<7`HyVSK_ zb`G$ul3zDfMlWw_&3k`mk%mI%71Ulf+~o`OMohW zm6HsZtA7EaT_WJ2;pg_>t~i-N=9KWtcozuRDS_UtU_B$G5#$}aVnACa(mrl_&I37lPQ+;cq!@GeyuNC_yPPC}n9c*R9FJYsBq?o*sE#rw?~-RL`M zOYBmm;N=|Kiup)_3|5?D=qeQ7a{OHgg8ZeA0lJ(N)17GDa;he|sI%|WQ?-7KK6$lX z-x12su2(1zeNq%?@-A#>R5fTEwZa1t0AvHC49+m?H(OCsR+gMFV!tv#zMppg=NFfs zsXr*xo$##*90T8T(?5v^cLz|7W|(2}4um=Y{Kl7h!_M(QYVx$J-Rl0To|+A}@*~))gx#5#d;~ z5?zuU3})N&^o(qu&`?kA?rjzNUZu^()O2HTN^a-IO>m(_zLfk2TUMIZnOL9 zXP)T4r}bfW8jBKvP}Zj6KQ{IV8Xqf4)(MqO7nRKACwUg&7V=n4yON$L{F41Qae0r` zn0pN?jz@{_Em-xo^6kjtoWhPbgyxf_a>>Ta&Ffzkp-S8Xq5qKjGb2uoV@g!=tMY@Mcy&d7Z@_ScaK-$3jb%%H zlGo+zr7*E?aNQF{G%BvNv^2Gb42&cpdq*tdh&g4JfXkblc{(@l6P#X4s)0#9Ih3Y@ zCD9u5(4CyHe$zRBZ$E0Dm6oeiq|R8nR#ApZ*RwuTWQrchtp*w_WfR|cZ_pGI{71UO4Sj!PqjID zM)dq_WnRUfVK>6Et3KOiR4EFR-o5N&T&HyYVP`}Z+) z$33VgoEHw5_BCG`J=ckkTEE2gbvC>m`Gl#H>Np%kCoX3O0u`G-CxFU|$8RT<#Zg%N zc)v&>GDjoLvC8`fUSU&5xuhElT=AjH8lk1$#Rz16oh0wB^A%yy#v-81c9V3qp86rs zc;%+GB5HQBQx8^W#2QOP|0$u4^&5Q3?4}`AJ=5L0)~4&;j2(;bdBdLiWc8Q0u6Tm< z;6OC0Y4uSb8Xfz~v>Eu}*!coKzl_J!3KLMCLQ4S4c;vboXxhfA2cVO;FVq=>xs%K& z2_xr>O+CFz4oY|7`}9d2@{nhNo(<2||8;E=zY)vmsXkxHH~s)_jP1V;#4UCz;?BG! zP$bLgPwZ5Pv7!`HukOQt1{`j}wU|q-<0%X(#a?=o{-Zgk_|3%WqDnrBI!gU;UoIOB zRwr_q5BkSjmef0DnN*6_n%<6aB+P}MO3l~-=k>iz$dbi54wF5;xec0QXsX-;l^q%> z?#OPryabs3WjQS#PBA+8=uzNM)VK}Yo^5T_kCJyHB6lDbLwLkaxoavV>XiJWs;Mli zEDQ1^hw(itmAnwzPiCKLN~XdEnoQm0iaieY(vwxWeV+1+vT%*1Hua_1XL;O#J7VPk~3rbIR4vUs%x&wjt@99=}lk)O9x{YzF^~!06Y1iWBeK4@?^~r|n(VnE=x= z^!ULi#Qb>@G$LYs8VLwlCd3_mF>1Jvr)q6`R(hjwohOUrduG6T26|Yf%cVg*inq_2 zHOkZuMSguMFTI=<6BX5+zGl>LfqtZQ>o0d#rbd2_c3k_vDmqB6kLV zcr0IgTA{|8n%k~loYocZn3V*W){nRR9CCs zdfxZff1hI8PASjGbEUOjVDz3a8Y;7DrY9D9^xeV2L&g>DX*9$8_Y_@9_CZUw>pI*B z$)Pp3zjd2e+r$B_Lo}H`=aTXjN|Ia2pVWhpoSj};&S_)B;w_PW@ZMU<$D9M({{VO} zDpR^B%u62`je#}5Ya&9;0ZM;Q^f|#2@WD#3%HZ9E!2vVYEOZ!3qOj=ZChs7k_1AtN zJo&Q5rYnT~%$7EL8Y!ccmv^4`$|2s@kJXu#BgmMtcCl~`=n8JlyxJG!H-RM~Ie zQFKFToBJ4F^l5}&(hQ0&L!IipUt`2gckSVe*{Bs;-%>7g__&~Ks%KkLg|h3Jzup3B z@^r(Hc4#2er)Ci(RXB79?YX3guEm4tH6ZQmow>eYHgp@D2e$Oy$NziJ!w65&QR~X< zn>EM@!k-Vmq3_n#RV%C3*Am(60+&)+mQ#L-(hXfZzgnUeYo999n$}#J18dm z!FP2`*7Ccc&?ba_qXD?)7IfW(cBM|Chc{!^|9ufZaMcAs|BCj5y3(e~O0n~!Y(+8gx?;S064sFcd?^?Rfy zEl1LGhBGG37xP-?bBpuVztKL8(T@3RP~4jo%xZT^?U54ugkQfF7Z;sD*?1GP1YbjV zwHavEF_kQRY$#Uq+kLMl3J0#`g0g8{);VB#k%al;Xio6WXIsW>STZxB7uucb+r!`SBypM=*bUpVG5f*+@Vq+vOM-6PE&olmvE zmR*`*yryOuVJk*`b^5n>T&EXIJ%_=HPQ2~AZ``$%X*}-1yziCSR$1^$AaQW>-B+P#Y1IMd1}&O?roCJd8R1%K@itk zNGy(ZgH`td2Lj79=(mbv_9~Jgn{8KG-ti zJr6|;emrFz!h99fW`caX)KJh13k%HoJExqeg=YK-nv)5!%zWVb>& zpZ!I7aBwiAz*1qYl6_?ba6y&S-GIpJBSljy0r+Sij|vaX}{F(eMso3SO`VJ0TVuonL#_OF}c5DkzLz z9TiA7$Exwe(sKz;c9#Iq1ex^%L1D3{Km;(KgxOjJ^=FP{jSKKs$>F>KDP&*{VUFK zltd@Q9GIIl3y9H;>#WBDWLcw^JQa$wXQNb+r=7g1chZCEhQsl3#53{5bZ5bu`N09hY(Y3iIsB>hwt_ zM+-sFg@mjpDt%&B;68PRhjxUx9W>4Gk;A{FUXyC8E09qHS4PYPtUBMt*bBuz^CJ%r38-CReiP*F#~%j< zZPRPY)NZQ(JN#_N7rlFWQ5so=No75$`y@7WV27Bbx}^IyC;sPbmX{@rWh0h%vRKZ>;Rm)nDa> zkqo@q*}FNpUp$eB@S_U3kh0aIF$Yp#Xr(0C$!m1Ye4^8_VUyFRsLjDN6yH=jJhX6I zS=B8zvifLD)a-uj>sa2LBQij%)XBn{k=(I73}0Pw7wMCya?>O3p+Y{~ER25NMpu)l zmJ0Zvfo3YcUp`vdLY|g`qxv8GEQ(x_?n=k@d*kVSeu!6CJ(Q+BlwPJFbD0cd4Vo%_ zx$(bqjf54+YKLbcOLdV&rNLRIQ%o{726Fwchk~FK-!lLGn-ul*=8o9>1BxhoB#-29 z;mQhRPX$&SNN_3GR@3;Nn=?WRB5;RZqM<})@WId@KJl}bBKkP5&f))AuzTzoL}9!= XoXvymyAS^d(sD55 literal 0 HcmV?d00001 diff --git a/ui/litellm-dashboard/src/components/add_model/provider_specific_fields.tsx b/ui/litellm-dashboard/src/components/add_model/provider_specific_fields.tsx index 94d6bad0ce0..2d11569ab95 100644 --- a/ui/litellm-dashboard/src/components/add_model/provider_specific_fields.tsx +++ b/ui/litellm-dashboard/src/components/add_model/provider_specific_fields.tsx @@ -566,6 +566,13 @@ const PROVIDER_CREDENTIAL_FIELDS: Record = required: true, }, ], + [Providers.Infinity]: [ + { + key: "api_base", + label: "API Base", + placeholder: "http://localhost:7997", + }, + ], }; const ProviderSpecificFields: React.FC = ({ selectedProvider, uploadProps }) => { diff --git a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx index 35c1d2b6b9d..a6a67fb1cfa 100644 --- a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx +++ b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx @@ -23,6 +23,7 @@ export enum Providers { GradientAI = "GradientAI", Groq = "Groq", Hosted_Vllm = "vllm", + Infinity = "Infinity", JinaAI = "Jina AI", MistralAI = "Mistral AI", Ollama = "Ollama", @@ -82,6 +83,7 @@ export const provider_map: Record = { VolcEngine: "volcengine", DeepInfra: "deepinfra", Hosted_Vllm: "hosted_vllm", + Infinity: "infinity", }; const asset_logos_folder = "/ui/assets/logos/"; @@ -103,6 +105,7 @@ export const providerLogoMap: Record = { [Providers.Groq]: `${asset_logos_folder}groq.svg`, [Providers.Google_AI_Studio]: `${asset_logos_folder}google.svg`, [Providers.Hosted_Vllm]: `${asset_logos_folder}vllm.png`, + [Providers.Infinity]: `${asset_logos_folder}infinity.png`, [Providers.MistralAI]: `${asset_logos_folder}mistral.svg`, [Providers.Ollama]: `${asset_logos_folder}ollama.svg`, [Providers.OpenAI]: `${asset_logos_folder}openai_small.svg`, From 421d38c94ab2220fbce150f03da92abc5cafabc3 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Tue, 7 Oct 2025 10:48:19 -0700 Subject: [PATCH 20/84] build(ui/): build new ui --- .../_buildManifest.js | 0 .../_ssgManifest.js | 0 .../_next/static/chunks/162-b79fa8ec9408cd55.js | 1 + .../_next/static/chunks/162-ffcd7d9fbb033bdf.js | 1 - .../_next/static/chunks/49-0e15a7b701ab2b73.js | 1 + .../_next/static/chunks/49-b6f167418ea8dbf4.js | 1 - ...0da2dd7acce2eb9.js => 50-fe160ecfa8bc4059.js} | 0 ...73701a3a0b0187.js => 851-7416960163d4d982.js} | 0 ...9b4f2ec37d7.js => layout-21dfaab0131d6703.js} | 2 +- ...15f579b770030.js => page-0517a053ea1a258a.js} | 2 +- ...3c22a47b20607.js => page-c69f5ef890b4b0dc.js} | 2 +- ...26064f407ad1d.js => page-673bb6c3ebcd355a.js} | 2 +- .../static/chunks/app/page-5b9ff2d173a47e2c.js | 1 - .../static/chunks/app/page-a5ca703846f872ee.js | 1 + ...40fbb9dca.js => main-app-4f7318ae681a6d94.js} | 2 +- .../out/_next/static/css/c200be8dd8638678.css | 3 --- .../out/_next/static/css/ec98fed1bdd650b4.css | 3 +++ .../_experimental/out/assets/logos/infinity.png | Bin 0 -> 7377 bytes litellm/proxy/_experimental/out/index.html | 2 +- litellm/proxy/_experimental/out/index.txt | 4 ++-- litellm/proxy/_experimental/out/model_hub.txt | 4 ++-- .../index.html => model_hub_table.html} | 2 +- .../proxy/_experimental/out/model_hub_table.txt | 4 ++-- litellm/proxy/_experimental/out/onboarding.html | 1 + litellm/proxy/_experimental/out/onboarding.txt | 4 ++-- 25 files changed, 22 insertions(+), 21 deletions(-) rename litellm/proxy/_experimental/out/_next/static/{_S0i_Y-CCoYQWc9dIuLxF => 677L3MDatvUz5h5yJedbt}/_buildManifest.js (100%) rename litellm/proxy/_experimental/out/_next/static/{_S0i_Y-CCoYQWc9dIuLxF => 677L3MDatvUz5h5yJedbt}/_ssgManifest.js (100%) create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/162-b79fa8ec9408cd55.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/162-ffcd7d9fbb033bdf.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/49-0e15a7b701ab2b73.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/49-b6f167418ea8dbf4.js rename litellm/proxy/_experimental/out/_next/static/chunks/{50-d0da2dd7acce2eb9.js => 50-fe160ecfa8bc4059.js} (100%) rename litellm/proxy/_experimental/out/_next/static/chunks/{851-0a73701a3a0b0187.js => 851-7416960163d4d982.js} (100%) rename litellm/proxy/_experimental/out/_next/static/chunks/app/{layout-df4939b4f2ec37d7.js => layout-21dfaab0131d6703.js} (59%) rename litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/{page-d7915f579b770030.js => page-0517a053ea1a258a.js} (63%) rename litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/{page-2f23c22a47b20607.js => page-c69f5ef890b4b0dc.js} (69%) rename litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/{page-1fd26064f407ad1d.js => page-673bb6c3ebcd355a.js} (98%) delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/page-5b9ff2d173a47e2c.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/page-a5ca703846f872ee.js rename litellm/proxy/_experimental/out/_next/static/chunks/{main-app-bb35cb240fbb9dca.js => main-app-4f7318ae681a6d94.js} (54%) delete mode 100644 litellm/proxy/_experimental/out/_next/static/css/c200be8dd8638678.css create mode 100644 litellm/proxy/_experimental/out/_next/static/css/ec98fed1bdd650b4.css create mode 100644 litellm/proxy/_experimental/out/assets/logos/infinity.png rename litellm/proxy/_experimental/out/{model_hub_table/index.html => model_hub_table.html} (88%) create mode 100644 litellm/proxy/_experimental/out/onboarding.html diff --git a/litellm/proxy/_experimental/out/_next/static/_S0i_Y-CCoYQWc9dIuLxF/_buildManifest.js b/litellm/proxy/_experimental/out/_next/static/677L3MDatvUz5h5yJedbt/_buildManifest.js similarity index 100% rename from litellm/proxy/_experimental/out/_next/static/_S0i_Y-CCoYQWc9dIuLxF/_buildManifest.js rename to litellm/proxy/_experimental/out/_next/static/677L3MDatvUz5h5yJedbt/_buildManifest.js diff --git a/litellm/proxy/_experimental/out/_next/static/_S0i_Y-CCoYQWc9dIuLxF/_ssgManifest.js b/litellm/proxy/_experimental/out/_next/static/677L3MDatvUz5h5yJedbt/_ssgManifest.js similarity index 100% rename from litellm/proxy/_experimental/out/_next/static/_S0i_Y-CCoYQWc9dIuLxF/_ssgManifest.js rename to litellm/proxy/_experimental/out/_next/static/677L3MDatvUz5h5yJedbt/_ssgManifest.js diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/162-b79fa8ec9408cd55.js b/litellm/proxy/_experimental/out/_next/static/chunks/162-b79fa8ec9408cd55.js new file mode 100644 index 00000000000..4b66fd516f9 --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/162-b79fa8ec9408cd55.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[162],{36724:function(e,t,n){n.d(t,{Dx:function(){return i.Z},Zb:function(){return s.Z},xv:function(){return r.Z},zx:function(){return a.Z}});var a=n(20831),s=n(12514),r=n(84264),i=n(96761)},19130:function(e,t,n){n.d(t,{RM:function(){return s.Z},SC:function(){return l.Z},iA:function(){return a.Z},pj:function(){return r.Z},ss:function(){return i.Z},xs:function(){return o.Z}});var a=n(21626),s=n(97214),r=n(28241),i=n(58834),o=n(69552),l=n(71876)},88658:function(e,t,n){n.d(t,{L:function(){return s}});var a=n(49817);let s=e=>{let t;let{apiKeySource:n,accessToken:s,apiKey:r,inputMessage:i,chatHistory:o,selectedTags:l,selectedVectorStores:c,selectedGuardrails:d,selectedMCPTools:m,endpointType:p,selectedModel:u,selectedSdk:g}=e,x="session"===n?s:r,h=window.location.origin,f=i||"Your prompt here",_=f.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n"),b=o.filter(e=>!e.isImage).map(e=>{let{role:t,content:n}=e;return{role:t,content:n}}),v={};l.length>0&&(v.tags=l),c.length>0&&(v.vector_stores=c),d.length>0&&(v.guardrails=d);let j=u||"your-model-name",y="azure"===g?'import openai\n\nclient = openai.AzureOpenAI(\n api_key="'.concat(x||"YOUR_LITELLM_API_KEY",'",\n azure_endpoint="').concat(h,'",\n api_version="2024-02-01"\n)'):'import openai\n\nclient = openai.OpenAI(\n api_key="'.concat(x||"YOUR_LITELLM_API_KEY",'",\n base_url="').concat(h,'"\n)');switch(p){case a.KP.CHAT:{let e=Object.keys(v).length>0,n="";if(e){let e=JSON.stringify({metadata:v},null,2).split("\n").map(e=>" ".repeat(4)+e).join("\n").trim();n=",\n extra_body=".concat(e)}let a=b.length>0?b:[{role:"user",content:f}];t='\nimport base64\n\n# Helper function to encode images to base64\ndef encode_image(image_path):\n with open(image_path, "rb") as image_file:\n return base64.b64encode(image_file.read()).decode(\'utf-8\')\n\n# Example with text only\nresponse = client.chat.completions.create(\n model="'.concat(j,'",\n messages=').concat(JSON.stringify(a,null,4)).concat(n,'\n)\n\nprint(response)\n\n# Example with image or PDF (uncomment and provide file path to use)\n# base64_file = encode_image("path/to/your/file.jpg") # or .pdf\n# response_with_file = client.chat.completions.create(\n# model="').concat(j,'",\n# messages=[\n# {\n# "role": "user",\n# "content": [\n# {\n# "type": "text",\n# "text": "').concat(_,'"\n# },\n# {\n# "type": "image_url",\n# "image_url": {\n# "url": f"data:image/jpeg;base64,{base64_file}" # or data:application/pdf;base64,{base64_file}\n# }\n# }\n# ]\n# }\n# ]').concat(n,"\n# )\n# print(response_with_file)\n");break}case a.KP.RESPONSES:{let e=Object.keys(v).length>0,n="";if(e){let e=JSON.stringify({metadata:v},null,2).split("\n").map(e=>" ".repeat(4)+e).join("\n").trim();n=",\n extra_body=".concat(e)}let a=b.length>0?b:[{role:"user",content:f}];t='\nimport base64\n\n# Helper function to encode images to base64\ndef encode_image(image_path):\n with open(image_path, "rb") as image_file:\n return base64.b64encode(image_file.read()).decode(\'utf-8\')\n\n# Example with text only\nresponse = client.responses.create(\n model="'.concat(j,'",\n input=').concat(JSON.stringify(a,null,4)).concat(n,'\n)\n\nprint(response.output_text)\n\n# Example with image or PDF (uncomment and provide file path to use)\n# base64_file = encode_image("path/to/your/file.jpg") # or .pdf\n# response_with_file = client.responses.create(\n# model="').concat(j,'",\n# input=[\n# {\n# "role": "user",\n# "content": [\n# {"type": "input_text", "text": "').concat(_,'"},\n# {\n# "type": "input_image",\n# "image_url": f"data:image/jpeg;base64,{base64_file}", # or data:application/pdf;base64,{base64_file}\n# },\n# ],\n# }\n# ]').concat(n,"\n# )\n# print(response_with_file.output_text)\n");break}case a.KP.IMAGE:t="azure"===g?"\n# NOTE: The Azure SDK does not have a direct equivalent to the multi-modal 'responses.create' method shown for OpenAI.\n# This snippet uses 'client.images.generate' and will create a new image based on your prompt.\n# It does not use the uploaded image, as 'client.images.generate' does not support image inputs in this context.\nimport os\nimport requests\nimport json\nimport time\nfrom PIL import Image\n\nresult = client.images.generate(\n model=\"".concat(j,'",\n prompt="').concat(i,'",\n n=1\n)\n\njson_response = json.loads(result.model_dump_json())\n\n# Set the directory for the stored image\nimage_dir = os.path.join(os.curdir, \'images\')\n\n# If the directory doesn\'t exist, create it\nif not os.path.isdir(image_dir):\n os.mkdir(image_dir)\n\n# Initialize the image path\nimage_filename = f"generated_image_{int(time.time())}.png"\nimage_path = os.path.join(image_dir, image_filename)\n\ntry:\n # Retrieve the generated image\n if json_response.get("data") && len(json_response["data"]) > 0 && json_response["data"][0].get("url"):\n image_url = json_response["data"][0]["url"]\n generated_image = requests.get(image_url).content\n with open(image_path, "wb") as image_file:\n image_file.write(generated_image)\n\n print(f"Image saved to {image_path}")\n # Display the image\n image = Image.open(image_path)\n image.show()\n else:\n print("Could not find image URL in response.")\n print("Full response:", json_response)\nexcept Exception as e:\n print(f"An error occurred: {e}")\n print("Full response:", json_response)\n'):"\nimport base64\nimport os\nimport time\nimport json\nfrom PIL import Image\nimport requests\n\n# Helper function to encode images to base64\ndef encode_image(image_path):\n with open(image_path, \"rb\") as image_file:\n return base64.b64encode(image_file.read()).decode('utf-8')\n\n# Helper function to create a file (simplified for this example)\ndef create_file(image_path):\n # In a real implementation, this would upload the file to OpenAI\n # For this example, we'll just return a placeholder ID\n return f\"file_{os.path.basename(image_path).replace('.', '_')}\"\n\n# The prompt entered by the user\nprompt = \"".concat(_,'"\n\n# Encode images to base64\nbase64_image1 = encode_image("body-lotion.png")\nbase64_image2 = encode_image("soap.png")\n\n# Create file IDs\nfile_id1 = create_file("body-lotion.png")\nfile_id2 = create_file("incense-kit.png")\n\nresponse = client.responses.create(\n model="').concat(j,'",\n input=[\n {\n "role": "user",\n "content": [\n {"type": "input_text", "text": prompt},\n {\n "type": "input_image",\n "image_url": f"data:image/jpeg;base64,{base64_image1}",\n },\n {\n "type": "input_image",\n "image_url": f"data:image/jpeg;base64,{base64_image2}",\n },\n {\n "type": "input_image",\n "file_id": file_id1,\n },\n {\n "type": "input_image",\n "file_id": file_id2,\n }\n ],\n }\n ],\n tools=[{"type": "image_generation"}],\n)\n\n# Process the response\nimage_generation_calls = [\n output\n for output in response.output\n if output.type == "image_generation_call"\n]\n\nimage_data = [output.result for output in image_generation_calls]\n\nif image_data:\n image_base64 = image_data[0]\n image_filename = f"edited_image_{int(time.time())}.png"\n with open(image_filename, "wb") as f:\n f.write(base64.b64decode(image_base64))\n print(f"Image saved to {image_filename}")\nelse:\n # If no image is generated, there might be a text response with an explanation\n text_response = [output.text for output in response.output if hasattr(output, \'text\')]\n if text_response:\n print("No image generated. Model response:")\n print("\\n".join(text_response))\n else:\n print("No image data found in response.")\n print("Full response for debugging:")\n print(response)\n');break;case a.KP.IMAGE_EDITS:t="azure"===g?'\nimport base64\nimport os\nimport time\nimport json\nfrom PIL import Image\nimport requests\n\n# Helper function to encode images to base64\ndef encode_image(image_path):\n with open(image_path, "rb") as image_file:\n return base64.b64encode(image_file.read()).decode(\'utf-8\')\n\n# The prompt entered by the user\nprompt = "'.concat(_,'"\n\n# Encode images to base64\nbase64_image1 = encode_image("body-lotion.png")\nbase64_image2 = encode_image("soap.png")\n\n# Create file IDs\nfile_id1 = create_file("body-lotion.png")\nfile_id2 = create_file("incense-kit.png")\n\nresponse = client.responses.create(\n model="').concat(j,'",\n input=[\n {\n "role": "user",\n "content": [\n {"type": "input_text", "text": prompt},\n {\n "type": "input_image",\n "image_url": f"data:image/jpeg;base64,{base64_image1}",\n },\n {\n "type": "input_image",\n "image_url": f"data:image/jpeg;base64,{base64_image2}",\n },\n {\n "type": "input_image",\n "file_id": file_id1,\n },\n {\n "type": "input_image",\n "file_id": file_id2,\n }\n ],\n }\n ],\n tools=[{"type": "image_generation"}],\n)\n\n# Process the response\nimage_generation_calls = [\n output\n for output in response.output\n if output.type == "image_generation_call"\n]\n\nimage_data = [output.result for output in image_generation_calls]\n\nif image_data:\n image_base64 = image_data[0]\n image_filename = f"edited_image_{int(time.time())}.png"\n with open(image_filename, "wb") as f:\n f.write(base64.b64decode(image_base64))\n print(f"Image saved to {image_filename}")\nelse:\n # If no image is generated, there might be a text response with an explanation\n text_response = [output.text for output in response.output if hasattr(output, \'text\')]\n if text_response:\n print("No image generated. Model response:")\n print("\\n".join(text_response))\n else:\n print("No image data found in response.")\n print("Full response for debugging:")\n print(response)\n'):"\nimport base64\nimport os\nimport time\n\n# Helper function to encode images to base64\ndef encode_image(image_path):\n with open(image_path, \"rb\") as image_file:\n return base64.b64encode(image_file.read()).decode('utf-8')\n\n# Helper function to create a file (simplified for this example)\ndef create_file(image_path):\n # In a real implementation, this would upload the file to OpenAI\n # For this example, we'll just return a placeholder ID\n return f\"file_{os.path.basename(image_path).replace('.', '_')}\"\n\n# The prompt entered by the user\nprompt = \"".concat(_,'"\n\n# Encode images to base64\nbase64_image1 = encode_image("body-lotion.png")\nbase64_image2 = encode_image("soap.png")\n\n# Create file IDs\nfile_id1 = create_file("body-lotion.png")\nfile_id2 = create_file("incense-kit.png")\n\nresponse = client.responses.create(\n model="').concat(j,'",\n input=[\n {\n "role": "user",\n "content": [\n {"type": "input_text", "text": prompt},\n {\n "type": "input_image",\n "image_url": f"data:image/jpeg;base64,{base64_image1}",\n },\n {\n "type": "input_image",\n "image_url": f"data:image/jpeg;base64,{base64_image2}",\n },\n {\n "type": "input_image",\n "file_id": file_id1,\n },\n {\n "type": "input_image",\n "file_id": file_id2,\n }\n ],\n }\n ],\n tools=[{"type": "image_generation"}],\n)\n\n# Process the response\nimage_generation_calls = [\n output\n for output in response.output\n if output.type == "image_generation_call"\n]\n\nimage_data = [output.result for output in image_generation_calls]\n\nif image_data:\n image_base64 = image_data[0]\n image_filename = f"edited_image_{int(time.time())}.png"\n with open(image_filename, "wb") as f:\n f.write(base64.b64decode(image_base64))\n print(f"Image saved to {image_filename}")\nelse:\n # If no image is generated, there might be a text response with an explanation\n text_response = [output.text for output in response.output if hasattr(output, \'text\')]\n if text_response:\n print("No image generated. Model response:")\n print("\\n".join(text_response))\n else:\n print("No image data found in response.")\n print("Full response for debugging:")\n print(response)\n');break;default:t="\n# Code generation for this endpoint is not implemented yet."}return"".concat(y,"\n").concat(t)}},49817:function(e,t,n){var a,s,r,i;n.d(t,{KP:function(){return s},vf:function(){return l}}),(r=a||(a={})).IMAGE_GENERATION="image_generation",r.CHAT="chat",r.RESPONSES="responses",r.IMAGE_EDITS="image_edits",r.ANTHROPIC_MESSAGES="anthropic_messages",(i=s||(s={})).IMAGE="image",i.CHAT="chat",i.RESPONSES="responses",i.IMAGE_EDITS="image_edits",i.ANTHROPIC_MESSAGES="anthropic_messages";let o={image_generation:"image",chat:"chat",responses:"responses",image_edits:"image_edits",anthropic_messages:"anthropic_messages"},l=e=>{if(console.log("getEndpointType:",e),Object.values(a).includes(e)){let t=o[e];return console.log("endpointType:",t),t}return"chat"}},29488:function(e,t,n){n.d(t,{Hc:function(){return i},Ui:function(){return r},e4:function(){return o},xd:function(){return l}});let a="litellm_mcp_auth_tokens",s=()=>{try{let e=localStorage.getItem(a);return e?JSON.parse(e):{}}catch(e){return console.error("Error reading MCP auth tokens from localStorage:",e),{}}},r=(e,t)=>{try{let n=s()[e];if(n&&n.serverAlias===t||n&&!t&&!n.serverAlias)return n.authValue;return null}catch(e){return console.error("Error getting MCP auth token:",e),null}},i=(e,t,n,r)=>{try{let i=s();i[e]={serverId:e,serverAlias:r,authValue:t,authType:n,timestamp:Date.now()},localStorage.setItem(a,JSON.stringify(i))}catch(e){console.error("Error storing MCP auth token:",e)}},o=e=>{try{let t=s();delete t[e],localStorage.setItem(a,JSON.stringify(t))}catch(e){console.error("Error removing MCP auth token:",e)}},l=()=>{try{localStorage.removeItem(a)}catch(e){console.error("Error clearing MCP auth tokens:",e)}}},8048:function(e,t,n){n.d(t,{C:function(){return m}});var a=n(57437),s=n(71594),r=n(24525),i=n(2265),o=n(19130),l=n(44633),c=n(86462),d=n(49084);function m(e){let{data:t=[],columns:n,isLoading:m=!1,table:p,defaultSorting:u=[]}=e,[g,x]=i.useState(u),[h]=i.useState("onChange"),[f,_]=i.useState({}),[b,v]=i.useState({}),j=(0,s.b7)({data:t,columns:n,state:{sorting:g,columnSizing:f,columnVisibility:b},columnResizeMode:h,onSortingChange:x,onColumnSizingChange:_,onColumnVisibilityChange:v,getCoreRowModel:(0,r.sC)(),getSortedRowModel:(0,r.tj)(),enableSorting:!0,enableColumnResizing:!0,defaultColumn:{minSize:40,maxSize:500}});return i.useEffect(()=>{p&&(p.current=j)},[j,p]),(0,a.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsx)("div",{className:"relative min-w-full",children:(0,a.jsxs)(o.iA,{className:"[&_td]:py-2 [&_th]:py-2 w-full",children:[(0,a.jsx)(o.ss,{children:j.getHeaderGroups().map(e=>(0,a.jsx)(o.SC,{children:e.headers.map(e=>{var t;return(0,a.jsxs)(o.xs,{className:"py-1 h-8 relative ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)] z-20 w-[120px] ml-8":""," ").concat((null===(t=e.column.columnDef.meta)||void 0===t?void 0:t.className)||""),style:{width:"actions"===e.id?120:e.getSize(),position:"actions"===e.id?"sticky":"relative",right:"actions"===e.id?0:"auto"},onClick:e.column.getCanSort()?e.column.getToggleSortingHandler():void 0,children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,s.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&e.column.getCanSort()&&(0,a.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,a.jsx)(l.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,a.jsx)(c.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,a.jsx)(d.Z,{className:"h-4 w-4 text-gray-400"})})]}),e.column.getCanResize()&&(0,a.jsx)("div",{onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),className:"absolute right-0 top-0 h-full w-2 cursor-col-resize select-none touch-none ".concat(e.column.getIsResizing()?"bg-blue-500":"hover:bg-blue-200")})]},e.id)})},e.id))}),(0,a.jsx)(o.RM,{children:m?(0,a.jsx)(o.SC,{children:(0,a.jsx)(o.pj,{colSpan:n.length,className:"h-8 text-center",children:(0,a.jsx)("div",{className:"text-center text-gray-500",children:(0,a.jsx)("p",{children:"\uD83D\uDE85 Loading models..."})})})}):j.getRowModel().rows.length>0?j.getRowModel().rows.map(e=>(0,a.jsx)(o.SC,{children:e.getVisibleCells().map(e=>{var t;return(0,a.jsx)(o.pj,{className:"py-0.5 ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)] z-20 w-[120px] ml-8":""," ").concat((null===(t=e.column.columnDef.meta)||void 0===t?void 0:t.className)||""),style:{width:"actions"===e.column.id?120:e.column.getSize(),position:"actions"===e.column.id?"sticky":"relative",right:"actions"===e.column.id?0:"auto"},children:(0,s.ie)(e.column.columnDef.cell,e.getContext())},e.id)})},e.id)):(0,a.jsx)(o.SC,{children:(0,a.jsx)(o.pj,{colSpan:n.length,className:"h-8 text-center",children:(0,a.jsx)("div",{className:"text-center text-gray-500",children:(0,a.jsx)("p",{children:"No models found"})})})})})]})})})})}},65373:function(e,t,n){n.d(t,{Z:function(){return v}});var a=n(57437),s=n(27648),r=n(2265),i=n(89970),o=n(80795),l=n(19250),c=n(15883),d=n(46346),m=n(57400),p=n(91870),u=n(40428),g=n(83884),x=n(45524),h=n(3914);let f=async e=>{if(!e)return null;try{return await (0,l.getProxyUISettings)(e)}catch(e){return console.error("Error fetching proxy settings:",e),null}};var _=n(69734),b=n(29488),v=e=>{let{userID:t,userEmail:n,userRole:v,premiumUser:j,proxySettings:y,setProxySettings:N,accessToken:w,isPublicPage:I=!1,sidebarCollapsed:A=!1,onToggleSidebar:S}=e,k=(0,l.getProxyBaseUrl)(),[C,E]=(0,r.useState)(""),{logoUrl:O}=(0,_.F)();(0,r.useEffect)(()=>{(async()=>{if(w){let e=await f(w);console.log("response from fetchProxySettings",e),e&&N(e)}})()},[w]),(0,r.useEffect)(()=>{E((null==y?void 0:y.PROXY_LOGOUT_URL)||"")},[y]);let M=[{key:"user-info",label:(0,a.jsxs)("div",{className:"px-3 py-3 border-b border-gray-100",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)(c.Z,{className:"mr-2 text-gray-700"}),(0,a.jsx)("span",{className:"text-sm font-semibold text-gray-900",children:t})]}),j?(0,a.jsx)(i.Z,{title:"Premium User",placement:"left",children:(0,a.jsxs)("div",{className:"flex items-center bg-gradient-to-r from-amber-500 to-yellow-500 text-white px-2 py-0.5 rounded-full cursor-help",children:[(0,a.jsx)(d.Z,{className:"mr-1 text-xs"}),(0,a.jsx)("span",{className:"text-xs font-medium",children:"Premium"})]})}):(0,a.jsx)(i.Z,{title:"Upgrade to Premium for advanced features",placement:"left",children:(0,a.jsxs)("div",{className:"flex items-center bg-gray-100 text-gray-500 px-2 py-0.5 rounded-full cursor-help",children:[(0,a.jsx)(d.Z,{className:"mr-1 text-xs"}),(0,a.jsx)("span",{className:"text-xs font-medium",children:"Standard"})]})})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center text-sm",children:[(0,a.jsx)(m.Z,{className:"mr-2 text-gray-400 text-xs"}),(0,a.jsx)("span",{className:"text-gray-500 text-xs",children:"Role"}),(0,a.jsx)("span",{className:"ml-auto text-gray-700 font-medium",children:v})]}),(0,a.jsxs)("div",{className:"flex items-center text-sm",children:[(0,a.jsx)(p.Z,{className:"mr-2 text-gray-400 text-xs"}),(0,a.jsx)("span",{className:"text-gray-500 text-xs",children:"Email"}),(0,a.jsx)("span",{className:"ml-auto text-gray-700 font-medium truncate max-w-[150px]",title:n||"Unknown",children:n||"Unknown"})]})]})]})},{key:"logout",label:(0,a.jsxs)("div",{className:"flex items-center py-2 px-3 hover:bg-gray-50 rounded-md mx-1 my-1",onClick:()=>{(0,h.b)(),(0,b.xd)(),window.location.href=C},children:[(0,a.jsx)(u.Z,{className:"mr-3 text-gray-600"}),(0,a.jsx)("span",{className:"text-gray-800",children:"Logout"})]})}];return(0,a.jsx)("nav",{className:"bg-white border-b border-gray-200 sticky top-0 z-10",children:(0,a.jsx)("div",{className:"w-full",children:(0,a.jsxs)("div",{className:"flex items-center h-14 px-4",children:[" ",(0,a.jsxs)("div",{className:"flex items-center flex-shrink-0",children:[S&&(0,a.jsx)("button",{onClick:S,className:"flex items-center justify-center w-10 h-10 mr-2 text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded transition-colors",title:A?"Expand sidebar":"Collapse sidebar",children:(0,a.jsx)("span",{className:"text-lg",children:A?(0,a.jsx)(g.Z,{}):(0,a.jsx)(x.Z,{})})}),(0,a.jsx)(s.default,{href:"/",className:"flex items-center",children:(0,a.jsx)("img",{src:O||"".concat(k,"/get_image"),alt:"LiteLLM Brand",className:"h-10 w-auto"})})]}),(0,a.jsxs)("div",{className:"flex items-center space-x-5 ml-auto",children:[(0,a.jsx)("a",{href:"https://docs.litellm.ai/docs/",target:"_blank",rel:"noopener noreferrer",className:"text-sm text-gray-600 hover:text-gray-900 transition-colors",children:"Docs"}),!I&&(0,a.jsx)(o.Z,{menu:{items:M,className:"min-w-[200px]",style:{padding:"8px",marginTop:"8px",borderRadius:"12px",boxShadow:"0 4px 24px rgba(0, 0, 0, 0.08)"}},overlayStyle:{minWidth:"200px"},children:(0,a.jsxs)("button",{className:"inline-flex items-center text-sm text-gray-600 hover:text-gray-900 transition-colors",children:["User",(0,a.jsx)("svg",{className:"ml-1 w-5 h-5 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M19 9l-7 7-7-7"})})]})})]})]})})})}},42673:function(e,t,n){var a,s;n.d(t,{Cl:function(){return a},bK:function(){return d},cd:function(){return o},dr:function(){return l},fK:function(){return r},ph:function(){return c}}),n(2265),(s=a||(a={})).AIML="AI/ML API",s.Bedrock="Amazon Bedrock",s.Anthropic="Anthropic",s.AssemblyAI="AssemblyAI",s.SageMaker="AWS SageMaker",s.Azure="Azure",s.Azure_AI_Studio="Azure AI Foundry (Studio)",s.Cerebras="Cerebras",s.Cohere="Cohere",s.Dashscope="Dashscope",s.Databricks="Databricks (Qwen API)",s.DeepInfra="DeepInfra",s.Deepgram="Deepgram",s.Deepseek="Deepseek",s.ElevenLabs="ElevenLabs",s.FireworksAI="Fireworks AI",s.Google_AI_Studio="Google AI Studio",s.GradientAI="GradientAI",s.Groq="Groq",s.Hosted_Vllm="vllm",s.Infinity="Infinity",s.JinaAI="Jina AI",s.MistralAI="Mistral AI",s.Ollama="Ollama",s.OpenAI="OpenAI",s.OpenAI_Compatible="OpenAI-Compatible Endpoints (Together AI, etc.)",s.OpenAI_Text="OpenAI Text Completion",s.OpenAI_Text_Compatible="OpenAI-Compatible Text Completion Models (Together AI, etc.)",s.Openrouter="Openrouter",s.Oracle="Oracle Cloud Infrastructure (OCI)",s.Perplexity="Perplexity",s.Sambanova="Sambanova",s.Snowflake="Snowflake",s.TogetherAI="TogetherAI",s.Triton="Triton",s.Vertex_AI="Vertex AI (Anthropic, Gemini, etc.)",s.VolcEngine="VolcEngine",s.Voyage="Voyage AI",s.xAI="xAI";let r={AIML:"aiml",OpenAI:"openai",OpenAI_Text:"text-completion-openai",Azure:"azure",Azure_AI_Studio:"azure_ai",Anthropic:"anthropic",Google_AI_Studio:"gemini",Bedrock:"bedrock",Groq:"groq",MistralAI:"mistral",Cohere:"cohere",OpenAI_Compatible:"openai",OpenAI_Text_Compatible:"text-completion-openai",Vertex_AI:"vertex_ai",Databricks:"databricks",Dashscope:"dashscope",xAI:"xai",Deepseek:"deepseek",Ollama:"ollama",AssemblyAI:"assemblyai",Cerebras:"cerebras",Sambanova:"sambanova",Perplexity:"perplexity",TogetherAI:"together_ai",Openrouter:"openrouter",Oracle:"oci",Snowflake:"snowflake",FireworksAI:"fireworks_ai",GradientAI:"gradient_ai",Triton:"triton",Deepgram:"deepgram",ElevenLabs:"elevenlabs",SageMaker:"sagemaker_chat",Voyage:"voyage",JinaAI:"jina_ai",VolcEngine:"volcengine",DeepInfra:"deepinfra",Hosted_Vllm:"hosted_vllm",Infinity:"infinity"},i="/ui/assets/logos/",o={"AI/ML API":"".concat(i,"aiml_api.svg"),Anthropic:"".concat(i,"anthropic.svg"),AssemblyAI:"".concat(i,"assemblyai_small.png"),Azure:"".concat(i,"microsoft_azure.svg"),"Azure AI Foundry (Studio)":"".concat(i,"microsoft_azure.svg"),"Amazon Bedrock":"".concat(i,"bedrock.svg"),"AWS SageMaker":"".concat(i,"bedrock.svg"),Cerebras:"".concat(i,"cerebras.svg"),Cohere:"".concat(i,"cohere.svg"),"Databricks (Qwen API)":"".concat(i,"databricks.svg"),Dashscope:"".concat(i,"dashscope.svg"),Deepseek:"".concat(i,"deepseek.svg"),"Fireworks AI":"".concat(i,"fireworks.svg"),Groq:"".concat(i,"groq.svg"),"Google AI Studio":"".concat(i,"google.svg"),vllm:"".concat(i,"vllm.png"),Infinity:"".concat(i,"infinity.png"),"Mistral AI":"".concat(i,"mistral.svg"),Ollama:"".concat(i,"ollama.svg"),OpenAI:"".concat(i,"openai_small.svg"),"OpenAI Text Completion":"".concat(i,"openai_small.svg"),"OpenAI-Compatible Text Completion Models (Together AI, etc.)":"".concat(i,"openai_small.svg"),"OpenAI-Compatible Endpoints (Together AI, etc.)":"".concat(i,"openai_small.svg"),Openrouter:"".concat(i,"openrouter.svg"),"Oracle Cloud Infrastructure (OCI)":"".concat(i,"oracle.svg"),Perplexity:"".concat(i,"perplexity-ai.svg"),Sambanova:"".concat(i,"sambanova.svg"),Snowflake:"".concat(i,"snowflake.svg"),TogetherAI:"".concat(i,"togetherai.svg"),"Vertex AI (Anthropic, Gemini, etc.)":"".concat(i,"google.svg"),xAI:"".concat(i,"xai.svg"),GradientAI:"".concat(i,"gradientai.svg"),Triton:"".concat(i,"nvidia_triton.png"),Deepgram:"".concat(i,"deepgram.png"),ElevenLabs:"".concat(i,"elevenlabs.png"),"Voyage AI":"".concat(i,"voyage.webp"),"Jina AI":"".concat(i,"jina.png"),VolcEngine:"".concat(i,"volcengine.png"),DeepInfra:"".concat(i,"deepinfra.png")},l=e=>{if(!e)return{logo:"",displayName:"-"};if("gemini"===e.toLowerCase()){let e="Google AI Studio";return{logo:o[e],displayName:e}}let t=Object.keys(r).find(t=>r[t].toLowerCase()===e.toLowerCase());if(!t)return{logo:"",displayName:e};let n=a[t];return{logo:o[n],displayName:n}},c=e=>{if("AI/ML API"===e)return"aiml/flux-pro/v1.1";if("Vertex AI (Anthropic, Gemini, etc.)"===e)return"gemini-pro";if("Anthropic"==e||"Amazon Bedrock"==e)return"claude-3-opus";if("AWS SageMaker"==e)return"sagemaker/jumpstart-dft-meta-textgeneration-llama-2-7b";if("Google AI Studio"==e)return"gemini-pro";if("Azure AI Foundry (Studio)"==e)return"azure_ai/command-r-plus";else if("Azure"==e)return"azure/my-deployment";else if("Oracle Cloud Infrastructure (OCI)"==e)return"oci/xai.grok-4";else if("Snowflake"==e)return"snowflake/mistral-7b";else if("Voyage AI"==e)return"voyage/";else if("Jina AI"==e)return"jina_ai/";else if("VolcEngine"==e)return"volcengine/";else if("DeepInfra"==e)return"deepinfra/";else return"gpt-3.5-turbo"},d=(e,t)=>{console.log("Provider key: ".concat(e));let n=r[e];console.log("Provider mapped to: ".concat(n));let a=[];return e&&"object"==typeof t&&(Object.entries(t).forEach(e=>{let[t,s]=e;null!==s&&"object"==typeof s&&"litellm_provider"in s&&(s.litellm_provider===n||s.litellm_provider.includes(n))&&a.push(t)}),"Cohere"==e&&(console.log("Adding cohere chat models"),Object.entries(t).forEach(e=>{let[t,n]=e;null!==n&&"object"==typeof n&&"litellm_provider"in n&&"cohere_chat"===n.litellm_provider&&a.push(t)})),"AWS SageMaker"==e&&(console.log("Adding sagemaker chat models"),Object.entries(t).forEach(e=>{let[t,n]=e;null!==n&&"object"==typeof n&&"litellm_provider"in n&&"sagemaker_chat"===n.litellm_provider&&a.push(t)}))),a}},72162:function(e,t,n){var a=n(57437),s=n(2265),r=n(19250),i=n(8048),o=n(36724),l=n(89970),c=n(3810),d=n(52787),m=n(82680),p=n(3477),u=n(17732),g=n(33245),x=n(78867),h=n(88658),f=n(49817),_=n(42673),b=n(65373),v=n(69734),j=n(9114);t.Z=e=>{var t,n;let{accessToken:y}=e,[N,w]=(0,s.useState)(null),[I,A]=(0,s.useState)("LiteLLM Gateway"),[S,k]=(0,s.useState)(null),[C,E]=(0,s.useState)(""),[O,M]=(0,s.useState)({}),[D,T]=(0,s.useState)(!0),[P,z]=(0,s.useState)(""),[L,Z]=(0,s.useState)([]),[G,R]=(0,s.useState)([]),[H,F]=(0,s.useState)([]),[K,V]=(0,s.useState)("I'm alive! ✓"),[U,W]=(0,s.useState)(!1),[q,J]=(0,s.useState)(null),[B,Y]=(0,s.useState)({}),$=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=async()=>{try{T(!0);let e=await (0,r.modelHubPublicModelsCall)();console.log("ModelHubData:",e),w(e)}catch(e){console.error("There was an error fetching the public model data",e),V("Service unavailable")}finally{T(!1)}};(async()=>{let e=await (0,r.getPublicModelHubInfo)();console.log("Public Model Hub Info:",e),A(e.docs_title),k(e.custom_docs_description),E(e.litellm_version),M(e.useful_links||{})})(),e()},[]),(0,s.useEffect)(()=>{},[P,L,G,H]);let Q=(0,s.useMemo)(()=>{if(!N)return[];let e=N;if(P.trim()){let t=P.toLowerCase(),n=t.split(/\s+/),a=N.filter(e=>{let a=e.model_group.toLowerCase();return!!a.includes(t)||n.every(e=>a.includes(e))});a.length>0&&(e=a.sort((e,n)=>{let a=e.model_group.toLowerCase(),s=n.model_group.toLowerCase(),r=a===t?1e3:0,i=s===t?1e3:0,o=a.startsWith(t)?100:0,l=s.startsWith(t)?100:0,c=t.split(/\s+/).every(e=>a.includes(e))?50:0,d=t.split(/\s+/).every(e=>s.includes(e))?50:0,m=a.length;return i+l+d+(1e3-s.length)-(r+o+c+(1e3-m))}))}return e.filter(e=>{let t=0===L.length||L.some(t=>e.providers.includes(t)),n=0===G.length||G.includes(e.mode||""),a=0===H.length||Object.entries(e).filter(e=>{let[t,n]=e;return t.startsWith("supports_")&&!0===n}).some(e=>{let[t]=e,n=t.replace(/^supports_/,"").split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ");return H.includes(n)});return t&&n&&a})},[N,P,L,G,H]),X=e=>{J(e),W(!0)},ee=e=>{navigator.clipboard.writeText(e),j.Z.success("Copied to clipboard!")},et=e=>e.replace(/^supports_/,"").split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),en=e=>Object.entries(e).filter(e=>{let[t,n]=e;return t.startsWith("supports_")&&!0===n}).map(e=>{let[t]=e;return t}),ea=e=>"$".concat((1e6*e).toFixed(4)),es=e=>e?e>=1e3?"".concat((e/1e3).toFixed(0),"K"):e.toString():"N/A",er=(e,t)=>{let n=[];return e&&n.push("RPM: ".concat(e.toLocaleString())),t&&n.push("TPM: ".concat(t.toLocaleString())),n.length>0?n.join(", "):"N/A"};return(0,a.jsx)(v.f,{accessToken:y,children:(0,a.jsxs)("div",{className:"min-h-screen bg-white",children:[(0,a.jsx)(b.Z,{userID:null,userEmail:null,userRole:null,premiumUser:!1,setProxySettings:Y,proxySettings:B,accessToken:y||null,isPublicPage:!0}),(0,a.jsxs)("div",{className:"w-full px-8 py-12",children:[(0,a.jsxs)(o.Zb,{className:"mb-10 p-8 bg-white border border-gray-200 rounded-lg shadow-sm",children:[(0,a.jsx)(o.Dx,{className:"text-2xl font-semibold mb-6 text-gray-900",children:"About"}),(0,a.jsx)("p",{className:"text-gray-700 mb-6 text-base leading-relaxed",children:S||"Proxy Server to call 100+ LLMs in the OpenAI format."}),(0,a.jsx)("div",{className:"flex items-center space-x-3 text-sm text-gray-600",children:(0,a.jsxs)("span",{className:"flex items-center",children:[(0,a.jsx)("span",{className:"w-4 h-4 mr-2",children:"\uD83D\uDD27"}),"Built with litellm: v",C]})})]}),O&&Object.keys(O).length>0&&(0,a.jsxs)(o.Zb,{className:"mb-10 p-8 bg-white border border-gray-200 rounded-lg shadow-sm",children:[(0,a.jsx)(o.Dx,{className:"text-2xl font-semibold mb-6 text-gray-900",children:"Useful Links"}),(0,a.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:Object.entries(O||{}).map(e=>{let[t,n]=e;return(0,a.jsxs)("button",{onClick:()=>window.open(n,"_blank"),className:"flex items-center space-x-3 text-blue-600 hover:text-blue-800 transition-colors p-3 rounded-lg hover:bg-blue-50 border border-gray-200",children:[(0,a.jsx)(p.Z,{className:"w-4 h-4"}),(0,a.jsx)(o.xv,{className:"text-sm font-medium",children:t})]},t)})})]}),(0,a.jsxs)(o.Zb,{className:"mb-10 p-8 bg-white border border-gray-200 rounded-lg shadow-sm",children:[(0,a.jsx)(o.Dx,{className:"text-2xl font-semibold mb-6 text-gray-900",children:"Health and Endpoint Status"}),(0,a.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:(0,a.jsxs)(o.xv,{className:"text-green-600 font-medium text-sm",children:["Service status: ",K]})})]}),(0,a.jsxs)(o.Zb,{className:"p-8 bg-white border border-gray-200 rounded-lg shadow-sm",children:[(0,a.jsx)("div",{className:"flex justify-between items-center mb-8",children:(0,a.jsx)(o.Dx,{className:"text-2xl font-semibold text-gray-900",children:"Available Models"})}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8 p-6 bg-gray-50 rounded-lg border border-gray-200",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center space-x-2 mb-3",children:[(0,a.jsx)(o.xv,{className:"text-sm font-medium text-gray-700",children:"Search Models:"}),(0,a.jsx)(l.Z,{title:"Smart search with relevance ranking - finds models containing your search terms, ranked by relevance. Try searching 'xai grok-4', 'claude-4', 'gpt-4', or 'sonnet'",placement:"top",children:(0,a.jsx)(g.Z,{className:"w-4 h-4 text-gray-400 cursor-help"})})]}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(u.Z,{className:"w-4 h-4 text-gray-400 absolute left-3 top-1/2 transform -translate-y-1/2"}),(0,a.jsx)("input",{type:"text",placeholder:"Search model names... (smart search enabled)",value:P,onChange:e=>z(e.target.value),className:"border border-gray-300 rounded-lg pl-10 pr-4 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white"})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-sm font-medium mb-3 text-gray-700",children:"Provider:"}),(0,a.jsx)(d.default,{mode:"multiple",value:L,onChange:e=>Z(e),placeholder:"Select providers",className:"w-full",size:"large",allowClear:!0,optionRender:e=>{let{logo:t}=(0,_.dr)(e.value);return(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[t&&(0,a.jsx)("img",{src:t,alt:e.label,className:"w-5 h-5 flex-shrink-0 object-contain",onError:e=>{e.target.style.display="none"}}),(0,a.jsx)("span",{className:"capitalize",children:e.label})]})},children:N&&(e=>{let t=new Set;return e.forEach(e=>{e.providers.forEach(e=>t.add(e))}),Array.from(t)})(N).map(e=>(0,a.jsx)(d.default.Option,{value:e,children:e},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-sm font-medium mb-3 text-gray-700",children:"Mode:"}),(0,a.jsx)(d.default,{mode:"multiple",value:G,onChange:e=>R(e),placeholder:"Select modes",className:"w-full",size:"large",allowClear:!0,children:N&&(e=>{let t=new Set;return e.forEach(e=>{e.mode&&t.add(e.mode)}),Array.from(t)})(N).map(e=>(0,a.jsx)(d.default.Option,{value:e,children:e},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-sm font-medium mb-3 text-gray-700",children:"Features:"}),(0,a.jsx)(d.default,{mode:"multiple",value:H,onChange:e=>F(e),placeholder:"Select features",className:"w-full",size:"large",allowClear:!0,children:N&&(e=>{let t=new Set;return e.forEach(e=>{Object.entries(e).filter(e=>{let[t,n]=e;return t.startsWith("supports_")&&!0===n}).forEach(e=>{let[n]=e,a=n.replace(/^supports_/,"").split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ");t.add(a)})}),Array.from(t).sort()})(N).map(e=>(0,a.jsx)(d.default.Option,{value:e,children:e},e))})]})]}),(0,a.jsx)(i.C,{columns:[{header:"Model Name",accessorKey:"model_group",enableSorting:!0,cell:e=>{let{row:t}=e;return(0,a.jsx)("div",{className:"overflow-hidden",children:(0,a.jsx)(l.Z,{title:t.original.model_group,children:(0,a.jsx)(o.zx,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left",onClick:()=>X(t.original),children:t.original.model_group})})})},size:150},{header:"Providers",accessorKey:"providers",enableSorting:!0,cell:e=>{let{row:t}=e,n=t.original.providers;return(0,a.jsx)("div",{className:"flex flex-wrap gap-1",children:n.map(e=>{let{logo:t}=(0,_.dr)(e);return(0,a.jsxs)("div",{className:"flex items-center space-x-1 px-2 py-1 bg-gray-100 rounded text-xs",children:[t&&(0,a.jsx)("img",{src:t,alt:e,className:"w-3 h-3 flex-shrink-0 object-contain",onError:e=>{e.target.style.display="none"}}),(0,a.jsx)("span",{className:"capitalize",children:e})]},e)})})},size:120},{header:"Mode",accessorKey:"mode",enableSorting:!0,cell:e=>{let{row:t}=e,n=t.original.mode;return(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)("span",{children:(e=>{switch(null==e?void 0:e.toLowerCase()){case"chat":return"\uD83D\uDCAC";case"rerank":return"\uD83D\uDD04";case"embedding":return"\uD83D\uDCC4";default:return"\uD83E\uDD16"}})(n||"")}),(0,a.jsx)(o.xv,{children:n||"Chat"})]})},size:100},{header:"Max Input",accessorKey:"max_input_tokens",enableSorting:!0,cell:e=>{let{row:t}=e;return(0,a.jsx)(o.xv,{className:"text-center",children:es(t.original.max_input_tokens)})},size:100,meta:{className:"text-center"}},{header:"Max Output",accessorKey:"max_output_tokens",enableSorting:!0,cell:e=>{let{row:t}=e;return(0,a.jsx)(o.xv,{className:"text-center",children:es(t.original.max_output_tokens)})},size:100,meta:{className:"text-center"}},{header:"Input $/1M",accessorKey:"input_cost_per_token",enableSorting:!0,cell:e=>{let{row:t}=e,n=t.original.input_cost_per_token;return(0,a.jsx)(o.xv,{className:"text-center",children:n?ea(n):"Free"})},size:100,meta:{className:"text-center"}},{header:"Output $/1M",accessorKey:"output_cost_per_token",enableSorting:!0,cell:e=>{let{row:t}=e,n=t.original.output_cost_per_token;return(0,a.jsx)(o.xv,{className:"text-center",children:n?ea(n):"Free"})},size:100,meta:{className:"text-center"}},{header:"Features",accessorKey:"supports_vision",enableSorting:!1,cell:e=>{let{row:t}=e,n=Object.entries(t.original).filter(e=>{let[t,n]=e;return t.startsWith("supports_")&&!0===n}).map(e=>{let[t]=e;return et(t)});return 0===n.length?(0,a.jsx)(o.xv,{className:"text-gray-400",children:"-"}):1===n.length?(0,a.jsx)("div",{className:"h-6 flex items-center",children:(0,a.jsx)(c.Z,{color:"blue",className:"text-xs",children:n[0]})}):(0,a.jsxs)("div",{className:"h-6 flex items-center space-x-1",children:[(0,a.jsx)(c.Z,{color:"blue",className:"text-xs",children:n[0]}),(0,a.jsx)(l.Z,{title:(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("div",{className:"font-medium",children:"All Features:"}),n.map((e,t)=>(0,a.jsxs)("div",{className:"text-xs",children:["• ",e]},t))]}),trigger:"click",placement:"topLeft",children:(0,a.jsxs)("span",{className:"text-xs text-blue-600 cursor-pointer hover:text-blue-800 hover:underline",onClick:e=>e.stopPropagation(),children:["+",n.length-1]})})]})},size:120},{header:"Limits",accessorKey:"rpm",enableSorting:!0,cell:e=>{let{row:t}=e,n=t.original;return(0,a.jsx)(o.xv,{className:"text-xs text-gray-600",children:er(n.rpm,n.tpm)})},size:150}],data:Q,isLoading:D,table:$,defaultSorting:[{id:"model_group",desc:!1}]}),(0,a.jsx)("div",{className:"mt-8 text-center",children:(0,a.jsxs)(o.xv,{className:"text-sm text-gray-600",children:["Showing ",Q.length," of ",(null==N?void 0:N.length)||0," models"]})})]})]}),(0,a.jsx)(m.Z,{title:(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)("span",{children:(null==q?void 0:q.model_group)||"Model Details"}),q&&(0,a.jsx)(l.Z,{title:"Copy model name",children:(0,a.jsx)(x.Z,{onClick:()=>ee(q.model_group),className:"cursor-pointer text-gray-500 hover:text-blue-500 w-4 h-4"})})]}),width:1e3,open:U,footer:null,onOk:()=>{W(!1),J(null)},onCancel:()=>{W(!1),J(null)},children:q&&(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-lg font-semibold mb-4",children:"Model Overview"}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Model Name:"}),(0,a.jsx)(o.xv,{children:q.model_group})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Mode:"}),(0,a.jsx)(o.xv,{children:q.mode||"Not specified"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Providers:"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1 mt-1",children:q.providers.map(e=>{let{logo:t}=(0,_.dr)(e);return(0,a.jsx)(c.Z,{color:"blue",children:(0,a.jsxs)("div",{className:"flex items-center space-x-1",children:[t&&(0,a.jsx)("img",{src:t,alt:e,className:"w-3 h-3 flex-shrink-0 object-contain",onError:e=>{e.target.style.display="none"}}),(0,a.jsx)("span",{className:"capitalize",children:e})]})},e)})})]})]}),q.model_group.includes("*")&&(0,a.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-4 mb-4",children:(0,a.jsxs)("div",{className:"flex items-start space-x-2",children:[(0,a.jsx)(g.Z,{className:"w-4 h-4 text-blue-600 mt-0.5 flex-shrink-0"}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium text-blue-900 mb-2",children:"Wildcard Routing"}),(0,a.jsxs)(o.xv,{className:"text-sm text-blue-800 mb-2",children:["This model uses wildcard routing. You can pass any value where you see the"," ",(0,a.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded text-xs",children:"*"})," symbol."]}),(0,a.jsxs)(o.xv,{className:"text-sm text-blue-800",children:["For example, with"," ",(0,a.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded text-xs",children:q.model_group}),", you can use any string (",(0,a.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded text-xs",children:q.model_group.replace("*","my-custom-value")}),") that matches this pattern."]})]})]})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-lg font-semibold mb-4",children:"Token & Cost Information"}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Max Input Tokens:"}),(0,a.jsx)(o.xv,{children:(null===(t=q.max_input_tokens)||void 0===t?void 0:t.toLocaleString())||"Not specified"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Max Output Tokens:"}),(0,a.jsx)(o.xv,{children:(null===(n=q.max_output_tokens)||void 0===n?void 0:n.toLocaleString())||"Not specified"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Input Cost per 1M Tokens:"}),(0,a.jsx)(o.xv,{children:q.input_cost_per_token?ea(q.input_cost_per_token):"Not specified"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Output Cost per 1M Tokens:"}),(0,a.jsx)(o.xv,{children:q.output_cost_per_token?ea(q.output_cost_per_token):"Not specified"})]})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-lg font-semibold mb-4",children:"Capabilities"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:(()=>{let e=en(q),t=["green","blue","purple","orange","red","yellow"];return 0===e.length?(0,a.jsx)(o.xv,{className:"text-gray-500",children:"No special capabilities listed"}):e.map((e,n)=>(0,a.jsx)(c.Z,{color:t[n%t.length],children:et(e)},e))})()})]}),(q.tpm||q.rpm)&&(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-lg font-semibold mb-4",children:"Rate Limits"}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[q.tpm&&(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Tokens per Minute:"}),(0,a.jsx)(o.xv,{children:q.tpm.toLocaleString()})]}),q.rpm&&(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Requests per Minute:"}),(0,a.jsx)(o.xv,{children:q.rpm.toLocaleString()})]})]})]}),q.supported_openai_params&&(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-lg font-semibold mb-4",children:"Supported OpenAI Parameters"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:q.supported_openai_params.map(e=>(0,a.jsx)(c.Z,{color:"green",children:e},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-lg font-semibold mb-4",children:"Usage Example"}),(0,a.jsx)("div",{className:"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto",children:(0,a.jsx)("pre",{className:"text-sm",children:(0,h.L)({apiKeySource:"custom",accessToken:null,apiKey:"your_api_key",inputMessage:"Hello, how are you?",chatHistory:[{role:"user",content:"Hello, how are you?",isImage:!1}],selectedTags:[],selectedVectorStores:[],selectedGuardrails:[],selectedMCPTools:[],endpointType:(0,f.vf)(q.mode||"chat"),selectedModel:q.model_group,selectedSdk:"openai"})})}),(0,a.jsx)("div",{className:"mt-2 text-right",children:(0,a.jsx)("button",{onClick:()=>{ee((0,h.L)({apiKeySource:"custom",accessToken:null,apiKey:"your_api_key",inputMessage:"Hello, how are you?",chatHistory:[{role:"user",content:"Hello, how are you?",isImage:!1}],selectedTags:[],selectedVectorStores:[],selectedGuardrails:[],selectedMCPTools:[],endpointType:(0,f.vf)(q.mode||"chat"),selectedModel:q.model_group,selectedSdk:"openai"}))},className:"text-sm text-blue-600 hover:text-blue-800 cursor-pointer",children:"Copy to clipboard"})})]})]})})]})})}},69734:function(e,t,n){n.d(t,{F:function(){return o},f:function(){return l}});var a=n(57437),s=n(2265),r=n(19250);let i=(0,s.createContext)(void 0),o=()=>{let e=(0,s.useContext)(i);if(!e)throw Error("useTheme must be used within a ThemeProvider");return e},l=e=>{let{children:t,accessToken:n}=e,[o,l]=(0,s.useState)(null);return(0,s.useEffect)(()=>{(async()=>{try{let t=(0,r.getProxyBaseUrl)(),n=await fetch(t?"".concat(t,"/get/ui_theme_settings"):"/get/ui_theme_settings",{method:"GET",headers:{"Content-Type":"application/json"}});if(n.ok){var e;let t=await n.json();(null===(e=t.values)||void 0===e?void 0:e.logo_url)&&l(t.values.logo_url)}}catch(e){console.warn("Failed to load logo settings from backend:",e)}})()},[]),(0,a.jsx)(i.Provider,{value:{logoUrl:o,setLogoUrl:l},children:t})}}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/162-ffcd7d9fbb033bdf.js b/litellm/proxy/_experimental/out/_next/static/chunks/162-ffcd7d9fbb033bdf.js deleted file mode 100644 index 8b73990ae43..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/162-ffcd7d9fbb033bdf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[162],{36724:function(e,t,n){n.d(t,{Dx:function(){return i.Z},Zb:function(){return s.Z},xv:function(){return r.Z},zx:function(){return a.Z}});var a=n(20831),s=n(12514),r=n(84264),i=n(96761)},19130:function(e,t,n){n.d(t,{RM:function(){return s.Z},SC:function(){return l.Z},iA:function(){return a.Z},pj:function(){return r.Z},ss:function(){return i.Z},xs:function(){return o.Z}});var a=n(21626),s=n(97214),r=n(28241),i=n(58834),o=n(69552),l=n(71876)},88658:function(e,t,n){n.d(t,{L:function(){return s}});var a=n(49817);let s=e=>{let t;let{apiKeySource:n,accessToken:s,apiKey:r,inputMessage:i,chatHistory:o,selectedTags:l,selectedVectorStores:c,selectedGuardrails:d,selectedMCPTools:m,endpointType:p,selectedModel:u,selectedSdk:g}=e,x="session"===n?s:r,h=window.location.origin,f=i||"Your prompt here",_=f.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n"),b=o.filter(e=>!e.isImage).map(e=>{let{role:t,content:n}=e;return{role:t,content:n}}),v={};l.length>0&&(v.tags=l),c.length>0&&(v.vector_stores=c),d.length>0&&(v.guardrails=d);let j=u||"your-model-name",y="azure"===g?'import openai\n\nclient = openai.AzureOpenAI(\n api_key="'.concat(x||"YOUR_LITELLM_API_KEY",'",\n azure_endpoint="').concat(h,'",\n api_version="2024-02-01"\n)'):'import openai\n\nclient = openai.OpenAI(\n api_key="'.concat(x||"YOUR_LITELLM_API_KEY",'",\n base_url="').concat(h,'"\n)');switch(p){case a.KP.CHAT:{let e=Object.keys(v).length>0,n="";if(e){let e=JSON.stringify({metadata:v},null,2).split("\n").map(e=>" ".repeat(4)+e).join("\n").trim();n=",\n extra_body=".concat(e)}let a=b.length>0?b:[{role:"user",content:f}];t='\nimport base64\n\n# Helper function to encode images to base64\ndef encode_image(image_path):\n with open(image_path, "rb") as image_file:\n return base64.b64encode(image_file.read()).decode(\'utf-8\')\n\n# Example with text only\nresponse = client.chat.completions.create(\n model="'.concat(j,'",\n messages=').concat(JSON.stringify(a,null,4)).concat(n,'\n)\n\nprint(response)\n\n# Example with image or PDF (uncomment and provide file path to use)\n# base64_file = encode_image("path/to/your/file.jpg") # or .pdf\n# response_with_file = client.chat.completions.create(\n# model="').concat(j,'",\n# messages=[\n# {\n# "role": "user",\n# "content": [\n# {\n# "type": "text",\n# "text": "').concat(_,'"\n# },\n# {\n# "type": "image_url",\n# "image_url": {\n# "url": f"data:image/jpeg;base64,{base64_file}" # or data:application/pdf;base64,{base64_file}\n# }\n# }\n# ]\n# }\n# ]').concat(n,"\n# )\n# print(response_with_file)\n");break}case a.KP.RESPONSES:{let e=Object.keys(v).length>0,n="";if(e){let e=JSON.stringify({metadata:v},null,2).split("\n").map(e=>" ".repeat(4)+e).join("\n").trim();n=",\n extra_body=".concat(e)}let a=b.length>0?b:[{role:"user",content:f}];t='\nimport base64\n\n# Helper function to encode images to base64\ndef encode_image(image_path):\n with open(image_path, "rb") as image_file:\n return base64.b64encode(image_file.read()).decode(\'utf-8\')\n\n# Example with text only\nresponse = client.responses.create(\n model="'.concat(j,'",\n input=').concat(JSON.stringify(a,null,4)).concat(n,'\n)\n\nprint(response.output_text)\n\n# Example with image or PDF (uncomment and provide file path to use)\n# base64_file = encode_image("path/to/your/file.jpg") # or .pdf\n# response_with_file = client.responses.create(\n# model="').concat(j,'",\n# input=[\n# {\n# "role": "user",\n# "content": [\n# {"type": "input_text", "text": "').concat(_,'"},\n# {\n# "type": "input_image",\n# "image_url": f"data:image/jpeg;base64,{base64_file}", # or data:application/pdf;base64,{base64_file}\n# },\n# ],\n# }\n# ]').concat(n,"\n# )\n# print(response_with_file.output_text)\n");break}case a.KP.IMAGE:t="azure"===g?"\n# NOTE: The Azure SDK does not have a direct equivalent to the multi-modal 'responses.create' method shown for OpenAI.\n# This snippet uses 'client.images.generate' and will create a new image based on your prompt.\n# It does not use the uploaded image, as 'client.images.generate' does not support image inputs in this context.\nimport os\nimport requests\nimport json\nimport time\nfrom PIL import Image\n\nresult = client.images.generate(\n model=\"".concat(j,'",\n prompt="').concat(i,'",\n n=1\n)\n\njson_response = json.loads(result.model_dump_json())\n\n# Set the directory for the stored image\nimage_dir = os.path.join(os.curdir, \'images\')\n\n# If the directory doesn\'t exist, create it\nif not os.path.isdir(image_dir):\n os.mkdir(image_dir)\n\n# Initialize the image path\nimage_filename = f"generated_image_{int(time.time())}.png"\nimage_path = os.path.join(image_dir, image_filename)\n\ntry:\n # Retrieve the generated image\n if json_response.get("data") && len(json_response["data"]) > 0 && json_response["data"][0].get("url"):\n image_url = json_response["data"][0]["url"]\n generated_image = requests.get(image_url).content\n with open(image_path, "wb") as image_file:\n image_file.write(generated_image)\n\n print(f"Image saved to {image_path}")\n # Display the image\n image = Image.open(image_path)\n image.show()\n else:\n print("Could not find image URL in response.")\n print("Full response:", json_response)\nexcept Exception as e:\n print(f"An error occurred: {e}")\n print("Full response:", json_response)\n'):"\nimport base64\nimport os\nimport time\nimport json\nfrom PIL import Image\nimport requests\n\n# Helper function to encode images to base64\ndef encode_image(image_path):\n with open(image_path, \"rb\") as image_file:\n return base64.b64encode(image_file.read()).decode('utf-8')\n\n# Helper function to create a file (simplified for this example)\ndef create_file(image_path):\n # In a real implementation, this would upload the file to OpenAI\n # For this example, we'll just return a placeholder ID\n return f\"file_{os.path.basename(image_path).replace('.', '_')}\"\n\n# The prompt entered by the user\nprompt = \"".concat(_,'"\n\n# Encode images to base64\nbase64_image1 = encode_image("body-lotion.png")\nbase64_image2 = encode_image("soap.png")\n\n# Create file IDs\nfile_id1 = create_file("body-lotion.png")\nfile_id2 = create_file("incense-kit.png")\n\nresponse = client.responses.create(\n model="').concat(j,'",\n input=[\n {\n "role": "user",\n "content": [\n {"type": "input_text", "text": prompt},\n {\n "type": "input_image",\n "image_url": f"data:image/jpeg;base64,{base64_image1}",\n },\n {\n "type": "input_image",\n "image_url": f"data:image/jpeg;base64,{base64_image2}",\n },\n {\n "type": "input_image",\n "file_id": file_id1,\n },\n {\n "type": "input_image",\n "file_id": file_id2,\n }\n ],\n }\n ],\n tools=[{"type": "image_generation"}],\n)\n\n# Process the response\nimage_generation_calls = [\n output\n for output in response.output\n if output.type == "image_generation_call"\n]\n\nimage_data = [output.result for output in image_generation_calls]\n\nif image_data:\n image_base64 = image_data[0]\n image_filename = f"edited_image_{int(time.time())}.png"\n with open(image_filename, "wb") as f:\n f.write(base64.b64decode(image_base64))\n print(f"Image saved to {image_filename}")\nelse:\n # If no image is generated, there might be a text response with an explanation\n text_response = [output.text for output in response.output if hasattr(output, \'text\')]\n if text_response:\n print("No image generated. Model response:")\n print("\\n".join(text_response))\n else:\n print("No image data found in response.")\n print("Full response for debugging:")\n print(response)\n');break;case a.KP.IMAGE_EDITS:t="azure"===g?'\nimport base64\nimport os\nimport time\nimport json\nfrom PIL import Image\nimport requests\n\n# Helper function to encode images to base64\ndef encode_image(image_path):\n with open(image_path, "rb") as image_file:\n return base64.b64encode(image_file.read()).decode(\'utf-8\')\n\n# The prompt entered by the user\nprompt = "'.concat(_,'"\n\n# Encode images to base64\nbase64_image1 = encode_image("body-lotion.png")\nbase64_image2 = encode_image("soap.png")\n\n# Create file IDs\nfile_id1 = create_file("body-lotion.png")\nfile_id2 = create_file("incense-kit.png")\n\nresponse = client.responses.create(\n model="').concat(j,'",\n input=[\n {\n "role": "user",\n "content": [\n {"type": "input_text", "text": prompt},\n {\n "type": "input_image",\n "image_url": f"data:image/jpeg;base64,{base64_image1}",\n },\n {\n "type": "input_image",\n "image_url": f"data:image/jpeg;base64,{base64_image2}",\n },\n {\n "type": "input_image",\n "file_id": file_id1,\n },\n {\n "type": "input_image",\n "file_id": file_id2,\n }\n ],\n }\n ],\n tools=[{"type": "image_generation"}],\n)\n\n# Process the response\nimage_generation_calls = [\n output\n for output in response.output\n if output.type == "image_generation_call"\n]\n\nimage_data = [output.result for output in image_generation_calls]\n\nif image_data:\n image_base64 = image_data[0]\n image_filename = f"edited_image_{int(time.time())}.png"\n with open(image_filename, "wb") as f:\n f.write(base64.b64decode(image_base64))\n print(f"Image saved to {image_filename}")\nelse:\n # If no image is generated, there might be a text response with an explanation\n text_response = [output.text for output in response.output if hasattr(output, \'text\')]\n if text_response:\n print("No image generated. Model response:")\n print("\\n".join(text_response))\n else:\n print("No image data found in response.")\n print("Full response for debugging:")\n print(response)\n'):"\nimport base64\nimport os\nimport time\n\n# Helper function to encode images to base64\ndef encode_image(image_path):\n with open(image_path, \"rb\") as image_file:\n return base64.b64encode(image_file.read()).decode('utf-8')\n\n# Helper function to create a file (simplified for this example)\ndef create_file(image_path):\n # In a real implementation, this would upload the file to OpenAI\n # For this example, we'll just return a placeholder ID\n return f\"file_{os.path.basename(image_path).replace('.', '_')}\"\n\n# The prompt entered by the user\nprompt = \"".concat(_,'"\n\n# Encode images to base64\nbase64_image1 = encode_image("body-lotion.png")\nbase64_image2 = encode_image("soap.png")\n\n# Create file IDs\nfile_id1 = create_file("body-lotion.png")\nfile_id2 = create_file("incense-kit.png")\n\nresponse = client.responses.create(\n model="').concat(j,'",\n input=[\n {\n "role": "user",\n "content": [\n {"type": "input_text", "text": prompt},\n {\n "type": "input_image",\n "image_url": f"data:image/jpeg;base64,{base64_image1}",\n },\n {\n "type": "input_image",\n "image_url": f"data:image/jpeg;base64,{base64_image2}",\n },\n {\n "type": "input_image",\n "file_id": file_id1,\n },\n {\n "type": "input_image",\n "file_id": file_id2,\n }\n ],\n }\n ],\n tools=[{"type": "image_generation"}],\n)\n\n# Process the response\nimage_generation_calls = [\n output\n for output in response.output\n if output.type == "image_generation_call"\n]\n\nimage_data = [output.result for output in image_generation_calls]\n\nif image_data:\n image_base64 = image_data[0]\n image_filename = f"edited_image_{int(time.time())}.png"\n with open(image_filename, "wb") as f:\n f.write(base64.b64decode(image_base64))\n print(f"Image saved to {image_filename}")\nelse:\n # If no image is generated, there might be a text response with an explanation\n text_response = [output.text for output in response.output if hasattr(output, \'text\')]\n if text_response:\n print("No image generated. Model response:")\n print("\\n".join(text_response))\n else:\n print("No image data found in response.")\n print("Full response for debugging:")\n print(response)\n');break;default:t="\n# Code generation for this endpoint is not implemented yet."}return"".concat(y,"\n").concat(t)}},49817:function(e,t,n){var a,s,r,i;n.d(t,{KP:function(){return s},vf:function(){return l}}),(r=a||(a={})).IMAGE_GENERATION="image_generation",r.CHAT="chat",r.RESPONSES="responses",r.IMAGE_EDITS="image_edits",r.ANTHROPIC_MESSAGES="anthropic_messages",(i=s||(s={})).IMAGE="image",i.CHAT="chat",i.RESPONSES="responses",i.IMAGE_EDITS="image_edits",i.ANTHROPIC_MESSAGES="anthropic_messages";let o={image_generation:"image",chat:"chat",responses:"responses",image_edits:"image_edits",anthropic_messages:"anthropic_messages"},l=e=>{if(console.log("getEndpointType:",e),Object.values(a).includes(e)){let t=o[e];return console.log("endpointType:",t),t}return"chat"}},29488:function(e,t,n){n.d(t,{Hc:function(){return i},Ui:function(){return r},e4:function(){return o},xd:function(){return l}});let a="litellm_mcp_auth_tokens",s=()=>{try{let e=localStorage.getItem(a);return e?JSON.parse(e):{}}catch(e){return console.error("Error reading MCP auth tokens from localStorage:",e),{}}},r=(e,t)=>{try{let n=s()[e];if(n&&n.serverAlias===t||n&&!t&&!n.serverAlias)return n.authValue;return null}catch(e){return console.error("Error getting MCP auth token:",e),null}},i=(e,t,n,r)=>{try{let i=s();i[e]={serverId:e,serverAlias:r,authValue:t,authType:n,timestamp:Date.now()},localStorage.setItem(a,JSON.stringify(i))}catch(e){console.error("Error storing MCP auth token:",e)}},o=e=>{try{let t=s();delete t[e],localStorage.setItem(a,JSON.stringify(t))}catch(e){console.error("Error removing MCP auth token:",e)}},l=()=>{try{localStorage.removeItem(a)}catch(e){console.error("Error clearing MCP auth tokens:",e)}}},8048:function(e,t,n){n.d(t,{C:function(){return m}});var a=n(57437),s=n(71594),r=n(24525),i=n(2265),o=n(19130),l=n(44633),c=n(86462),d=n(49084);function m(e){let{data:t=[],columns:n,isLoading:m=!1,table:p,defaultSorting:u=[]}=e,[g,x]=i.useState(u),[h]=i.useState("onChange"),[f,_]=i.useState({}),[b,v]=i.useState({}),j=(0,s.b7)({data:t,columns:n,state:{sorting:g,columnSizing:f,columnVisibility:b},columnResizeMode:h,onSortingChange:x,onColumnSizingChange:_,onColumnVisibilityChange:v,getCoreRowModel:(0,r.sC)(),getSortedRowModel:(0,r.tj)(),enableSorting:!0,enableColumnResizing:!0,defaultColumn:{minSize:40,maxSize:500}});return i.useEffect(()=>{p&&(p.current=j)},[j,p]),(0,a.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsx)("div",{className:"relative min-w-full",children:(0,a.jsxs)(o.iA,{className:"[&_td]:py-2 [&_th]:py-2 w-full",children:[(0,a.jsx)(o.ss,{children:j.getHeaderGroups().map(e=>(0,a.jsx)(o.SC,{children:e.headers.map(e=>{var t;return(0,a.jsxs)(o.xs,{className:"py-1 h-8 relative ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)] z-20 w-[120px] ml-8":""," ").concat((null===(t=e.column.columnDef.meta)||void 0===t?void 0:t.className)||""),style:{width:"actions"===e.id?120:e.getSize(),position:"actions"===e.id?"sticky":"relative",right:"actions"===e.id?0:"auto"},onClick:e.column.getCanSort()?e.column.getToggleSortingHandler():void 0,children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,s.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&e.column.getCanSort()&&(0,a.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,a.jsx)(l.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,a.jsx)(c.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,a.jsx)(d.Z,{className:"h-4 w-4 text-gray-400"})})]}),e.column.getCanResize()&&(0,a.jsx)("div",{onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),className:"absolute right-0 top-0 h-full w-2 cursor-col-resize select-none touch-none ".concat(e.column.getIsResizing()?"bg-blue-500":"hover:bg-blue-200")})]},e.id)})},e.id))}),(0,a.jsx)(o.RM,{children:m?(0,a.jsx)(o.SC,{children:(0,a.jsx)(o.pj,{colSpan:n.length,className:"h-8 text-center",children:(0,a.jsx)("div",{className:"text-center text-gray-500",children:(0,a.jsx)("p",{children:"\uD83D\uDE85 Loading models..."})})})}):j.getRowModel().rows.length>0?j.getRowModel().rows.map(e=>(0,a.jsx)(o.SC,{children:e.getVisibleCells().map(e=>{var t;return(0,a.jsx)(o.pj,{className:"py-0.5 ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)] z-20 w-[120px] ml-8":""," ").concat((null===(t=e.column.columnDef.meta)||void 0===t?void 0:t.className)||""),style:{width:"actions"===e.column.id?120:e.column.getSize(),position:"actions"===e.column.id?"sticky":"relative",right:"actions"===e.column.id?0:"auto"},children:(0,s.ie)(e.column.columnDef.cell,e.getContext())},e.id)})},e.id)):(0,a.jsx)(o.SC,{children:(0,a.jsx)(o.pj,{colSpan:n.length,className:"h-8 text-center",children:(0,a.jsx)("div",{className:"text-center text-gray-500",children:(0,a.jsx)("p",{children:"No models found"})})})})})]})})})})}},65373:function(e,t,n){n.d(t,{Z:function(){return v}});var a=n(57437),s=n(27648),r=n(2265),i=n(89970),o=n(80795),l=n(19250),c=n(15883),d=n(46346),m=n(57400),p=n(91870),u=n(40428),g=n(83884),x=n(45524),h=n(3914);let f=async e=>{if(!e)return null;try{return await (0,l.getProxyUISettings)(e)}catch(e){return console.error("Error fetching proxy settings:",e),null}};var _=n(69734),b=n(29488),v=e=>{let{userID:t,userEmail:n,userRole:v,premiumUser:j,proxySettings:y,setProxySettings:N,accessToken:w,isPublicPage:I=!1,sidebarCollapsed:A=!1,onToggleSidebar:S}=e,k=(0,l.getProxyBaseUrl)(),[C,E]=(0,r.useState)(""),{logoUrl:O}=(0,_.F)();(0,r.useEffect)(()=>{(async()=>{if(w){let e=await f(w);console.log("response from fetchProxySettings",e),e&&N(e)}})()},[w]),(0,r.useEffect)(()=>{E((null==y?void 0:y.PROXY_LOGOUT_URL)||"")},[y]);let M=[{key:"user-info",label:(0,a.jsxs)("div",{className:"px-3 py-3 border-b border-gray-100",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)(c.Z,{className:"mr-2 text-gray-700"}),(0,a.jsx)("span",{className:"text-sm font-semibold text-gray-900",children:t})]}),j?(0,a.jsx)(i.Z,{title:"Premium User",placement:"left",children:(0,a.jsxs)("div",{className:"flex items-center bg-gradient-to-r from-amber-500 to-yellow-500 text-white px-2 py-0.5 rounded-full cursor-help",children:[(0,a.jsx)(d.Z,{className:"mr-1 text-xs"}),(0,a.jsx)("span",{className:"text-xs font-medium",children:"Premium"})]})}):(0,a.jsx)(i.Z,{title:"Upgrade to Premium for advanced features",placement:"left",children:(0,a.jsxs)("div",{className:"flex items-center bg-gray-100 text-gray-500 px-2 py-0.5 rounded-full cursor-help",children:[(0,a.jsx)(d.Z,{className:"mr-1 text-xs"}),(0,a.jsx)("span",{className:"text-xs font-medium",children:"Standard"})]})})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center text-sm",children:[(0,a.jsx)(m.Z,{className:"mr-2 text-gray-400 text-xs"}),(0,a.jsx)("span",{className:"text-gray-500 text-xs",children:"Role"}),(0,a.jsx)("span",{className:"ml-auto text-gray-700 font-medium",children:v})]}),(0,a.jsxs)("div",{className:"flex items-center text-sm",children:[(0,a.jsx)(p.Z,{className:"mr-2 text-gray-400 text-xs"}),(0,a.jsx)("span",{className:"text-gray-500 text-xs",children:"Email"}),(0,a.jsx)("span",{className:"ml-auto text-gray-700 font-medium truncate max-w-[150px]",title:n||"Unknown",children:n||"Unknown"})]})]})]})},{key:"logout",label:(0,a.jsxs)("div",{className:"flex items-center py-2 px-3 hover:bg-gray-50 rounded-md mx-1 my-1",onClick:()=>{(0,h.b)(),(0,b.xd)(),window.location.href=C},children:[(0,a.jsx)(u.Z,{className:"mr-3 text-gray-600"}),(0,a.jsx)("span",{className:"text-gray-800",children:"Logout"})]})}];return(0,a.jsx)("nav",{className:"bg-white border-b border-gray-200 sticky top-0 z-10",children:(0,a.jsx)("div",{className:"w-full",children:(0,a.jsxs)("div",{className:"flex items-center h-14 px-4",children:[" ",(0,a.jsxs)("div",{className:"flex items-center flex-shrink-0",children:[S&&(0,a.jsx)("button",{onClick:S,className:"flex items-center justify-center w-10 h-10 mr-2 text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded transition-colors",title:A?"Expand sidebar":"Collapse sidebar",children:(0,a.jsx)("span",{className:"text-lg",children:A?(0,a.jsx)(g.Z,{}):(0,a.jsx)(x.Z,{})})}),(0,a.jsx)(s.default,{href:"/",className:"flex items-center",children:(0,a.jsx)("img",{src:O||"".concat(k,"/get_image"),alt:"LiteLLM Brand",className:"h-10 w-auto"})})]}),(0,a.jsxs)("div",{className:"flex items-center space-x-5 ml-auto",children:[(0,a.jsx)("a",{href:"https://docs.litellm.ai/docs/",target:"_blank",rel:"noopener noreferrer",className:"text-sm text-gray-600 hover:text-gray-900 transition-colors",children:"Docs"}),!I&&(0,a.jsx)(o.Z,{menu:{items:M,className:"min-w-[200px]",style:{padding:"8px",marginTop:"8px",borderRadius:"12px",boxShadow:"0 4px 24px rgba(0, 0, 0, 0.08)"}},overlayStyle:{minWidth:"200px"},children:(0,a.jsxs)("button",{className:"inline-flex items-center text-sm text-gray-600 hover:text-gray-900 transition-colors",children:["User",(0,a.jsx)("svg",{className:"ml-1 w-5 h-5 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M19 9l-7 7-7-7"})})]})})]})]})})})}},42673:function(e,t,n){var a,s;n.d(t,{Cl:function(){return a},bK:function(){return d},cd:function(){return o},dr:function(){return l},fK:function(){return r},ph:function(){return c}}),n(2265),(s=a||(a={})).AIML="AI/ML API",s.Bedrock="Amazon Bedrock",s.Anthropic="Anthropic",s.AssemblyAI="AssemblyAI",s.SageMaker="AWS SageMaker",s.Azure="Azure",s.Azure_AI_Studio="Azure AI Foundry (Studio)",s.Cerebras="Cerebras",s.Cohere="Cohere",s.Dashscope="Dashscope",s.Databricks="Databricks (Qwen API)",s.DeepInfra="DeepInfra",s.Deepgram="Deepgram",s.Deepseek="Deepseek",s.ElevenLabs="ElevenLabs",s.FireworksAI="Fireworks AI",s.Google_AI_Studio="Google AI Studio",s.GradientAI="GradientAI",s.Groq="Groq",s.Hosted_Vllm="vllm",s.JinaAI="Jina AI",s.MistralAI="Mistral AI",s.Ollama="Ollama",s.OpenAI="OpenAI",s.OpenAI_Compatible="OpenAI-Compatible Endpoints (Together AI, etc.)",s.OpenAI_Text="OpenAI Text Completion",s.OpenAI_Text_Compatible="OpenAI-Compatible Text Completion Models (Together AI, etc.)",s.Openrouter="Openrouter",s.Oracle="Oracle Cloud Infrastructure (OCI)",s.Perplexity="Perplexity",s.Sambanova="Sambanova",s.Snowflake="Snowflake",s.TogetherAI="TogetherAI",s.Triton="Triton",s.Vertex_AI="Vertex AI (Anthropic, Gemini, etc.)",s.VolcEngine="VolcEngine",s.Voyage="Voyage AI",s.xAI="xAI";let r={AIML:"aiml",OpenAI:"openai",OpenAI_Text:"text-completion-openai",Azure:"azure",Azure_AI_Studio:"azure_ai",Anthropic:"anthropic",Google_AI_Studio:"gemini",Bedrock:"bedrock",Groq:"groq",MistralAI:"mistral",Cohere:"cohere",OpenAI_Compatible:"openai",OpenAI_Text_Compatible:"text-completion-openai",Vertex_AI:"vertex_ai",Databricks:"databricks",Dashscope:"dashscope",xAI:"xai",Deepseek:"deepseek",Ollama:"ollama",AssemblyAI:"assemblyai",Cerebras:"cerebras",Sambanova:"sambanova",Perplexity:"perplexity",TogetherAI:"together_ai",Openrouter:"openrouter",Oracle:"oci",Snowflake:"snowflake",FireworksAI:"fireworks_ai",GradientAI:"gradient_ai",Triton:"triton",Deepgram:"deepgram",ElevenLabs:"elevenlabs",SageMaker:"sagemaker_chat",Voyage:"voyage",JinaAI:"jina_ai",VolcEngine:"volcengine",DeepInfra:"deepinfra",Hosted_Vllm:"hosted_vllm"},i="/ui/assets/logos/",o={"AI/ML API":"".concat(i,"aiml_api.svg"),Anthropic:"".concat(i,"anthropic.svg"),AssemblyAI:"".concat(i,"assemblyai_small.png"),Azure:"".concat(i,"microsoft_azure.svg"),"Azure AI Foundry (Studio)":"".concat(i,"microsoft_azure.svg"),"Amazon Bedrock":"".concat(i,"bedrock.svg"),"AWS SageMaker":"".concat(i,"bedrock.svg"),Cerebras:"".concat(i,"cerebras.svg"),Cohere:"".concat(i,"cohere.svg"),"Databricks (Qwen API)":"".concat(i,"databricks.svg"),Dashscope:"".concat(i,"dashscope.svg"),Deepseek:"".concat(i,"deepseek.svg"),"Fireworks AI":"".concat(i,"fireworks.svg"),Groq:"".concat(i,"groq.svg"),"Google AI Studio":"".concat(i,"google.svg"),vllm:"".concat(i,"vllm.png"),"Mistral AI":"".concat(i,"mistral.svg"),Ollama:"".concat(i,"ollama.svg"),OpenAI:"".concat(i,"openai_small.svg"),"OpenAI Text Completion":"".concat(i,"openai_small.svg"),"OpenAI-Compatible Text Completion Models (Together AI, etc.)":"".concat(i,"openai_small.svg"),"OpenAI-Compatible Endpoints (Together AI, etc.)":"".concat(i,"openai_small.svg"),Openrouter:"".concat(i,"openrouter.svg"),"Oracle Cloud Infrastructure (OCI)":"".concat(i,"oracle.svg"),Perplexity:"".concat(i,"perplexity-ai.svg"),Sambanova:"".concat(i,"sambanova.svg"),Snowflake:"".concat(i,"snowflake.svg"),TogetherAI:"".concat(i,"togetherai.svg"),"Vertex AI (Anthropic, Gemini, etc.)":"".concat(i,"google.svg"),xAI:"".concat(i,"xai.svg"),GradientAI:"".concat(i,"gradientai.svg"),Triton:"".concat(i,"nvidia_triton.png"),Deepgram:"".concat(i,"deepgram.png"),ElevenLabs:"".concat(i,"elevenlabs.png"),"Voyage AI":"".concat(i,"voyage.webp"),"Jina AI":"".concat(i,"jina.png"),VolcEngine:"".concat(i,"volcengine.png"),DeepInfra:"".concat(i,"deepinfra.png")},l=e=>{if(!e)return{logo:"",displayName:"-"};if("gemini"===e.toLowerCase()){let e="Google AI Studio";return{logo:o[e],displayName:e}}let t=Object.keys(r).find(t=>r[t].toLowerCase()===e.toLowerCase());if(!t)return{logo:"",displayName:e};let n=a[t];return{logo:o[n],displayName:n}},c=e=>{if("AI/ML API"===e)return"aiml/flux-pro/v1.1";if("Vertex AI (Anthropic, Gemini, etc.)"===e)return"gemini-pro";if("Anthropic"==e||"Amazon Bedrock"==e)return"claude-3-opus";if("AWS SageMaker"==e)return"sagemaker/jumpstart-dft-meta-textgeneration-llama-2-7b";if("Google AI Studio"==e)return"gemini-pro";if("Azure AI Foundry (Studio)"==e)return"azure_ai/command-r-plus";else if("Azure"==e)return"azure/my-deployment";else if("Oracle Cloud Infrastructure (OCI)"==e)return"oci/xai.grok-4";else if("Snowflake"==e)return"snowflake/mistral-7b";else if("Voyage AI"==e)return"voyage/";else if("Jina AI"==e)return"jina_ai/";else if("VolcEngine"==e)return"volcengine/";else if("DeepInfra"==e)return"deepinfra/";else return"gpt-3.5-turbo"},d=(e,t)=>{console.log("Provider key: ".concat(e));let n=r[e];console.log("Provider mapped to: ".concat(n));let a=[];return e&&"object"==typeof t&&(Object.entries(t).forEach(e=>{let[t,s]=e;null!==s&&"object"==typeof s&&"litellm_provider"in s&&(s.litellm_provider===n||s.litellm_provider.includes(n))&&a.push(t)}),"Cohere"==e&&(console.log("Adding cohere chat models"),Object.entries(t).forEach(e=>{let[t,n]=e;null!==n&&"object"==typeof n&&"litellm_provider"in n&&"cohere_chat"===n.litellm_provider&&a.push(t)})),"AWS SageMaker"==e&&(console.log("Adding sagemaker chat models"),Object.entries(t).forEach(e=>{let[t,n]=e;null!==n&&"object"==typeof n&&"litellm_provider"in n&&"sagemaker_chat"===n.litellm_provider&&a.push(t)}))),a}},72162:function(e,t,n){var a=n(57437),s=n(2265),r=n(19250),i=n(8048),o=n(36724),l=n(89970),c=n(3810),d=n(52787),m=n(82680),p=n(3477),u=n(17732),g=n(33245),x=n(78867),h=n(88658),f=n(49817),_=n(42673),b=n(65373),v=n(69734),j=n(9114);t.Z=e=>{var t,n;let{accessToken:y}=e,[N,w]=(0,s.useState)(null),[I,A]=(0,s.useState)("LiteLLM Gateway"),[S,k]=(0,s.useState)(null),[C,E]=(0,s.useState)(""),[O,M]=(0,s.useState)({}),[D,T]=(0,s.useState)(!0),[P,z]=(0,s.useState)(""),[L,Z]=(0,s.useState)([]),[G,R]=(0,s.useState)([]),[H,F]=(0,s.useState)([]),[K,V]=(0,s.useState)("I'm alive! ✓"),[U,W]=(0,s.useState)(!1),[q,J]=(0,s.useState)(null),[B,Y]=(0,s.useState)({}),$=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=async()=>{try{T(!0);let e=await (0,r.modelHubPublicModelsCall)();console.log("ModelHubData:",e),w(e)}catch(e){console.error("There was an error fetching the public model data",e),V("Service unavailable")}finally{T(!1)}};(async()=>{let e=await (0,r.getPublicModelHubInfo)();console.log("Public Model Hub Info:",e),A(e.docs_title),k(e.custom_docs_description),E(e.litellm_version),M(e.useful_links||{})})(),e()},[]),(0,s.useEffect)(()=>{},[P,L,G,H]);let Q=(0,s.useMemo)(()=>{if(!N)return[];let e=N;if(P.trim()){let t=P.toLowerCase(),n=t.split(/\s+/),a=N.filter(e=>{let a=e.model_group.toLowerCase();return!!a.includes(t)||n.every(e=>a.includes(e))});a.length>0&&(e=a.sort((e,n)=>{let a=e.model_group.toLowerCase(),s=n.model_group.toLowerCase(),r=a===t?1e3:0,i=s===t?1e3:0,o=a.startsWith(t)?100:0,l=s.startsWith(t)?100:0,c=t.split(/\s+/).every(e=>a.includes(e))?50:0,d=t.split(/\s+/).every(e=>s.includes(e))?50:0,m=a.length;return i+l+d+(1e3-s.length)-(r+o+c+(1e3-m))}))}return e.filter(e=>{let t=0===L.length||L.some(t=>e.providers.includes(t)),n=0===G.length||G.includes(e.mode||""),a=0===H.length||Object.entries(e).filter(e=>{let[t,n]=e;return t.startsWith("supports_")&&!0===n}).some(e=>{let[t]=e,n=t.replace(/^supports_/,"").split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ");return H.includes(n)});return t&&n&&a})},[N,P,L,G,H]),X=e=>{J(e),W(!0)},ee=e=>{navigator.clipboard.writeText(e),j.Z.success("Copied to clipboard!")},et=e=>e.replace(/^supports_/,"").split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),en=e=>Object.entries(e).filter(e=>{let[t,n]=e;return t.startsWith("supports_")&&!0===n}).map(e=>{let[t]=e;return t}),ea=e=>"$".concat((1e6*e).toFixed(4)),es=e=>e?e>=1e3?"".concat((e/1e3).toFixed(0),"K"):e.toString():"N/A",er=(e,t)=>{let n=[];return e&&n.push("RPM: ".concat(e.toLocaleString())),t&&n.push("TPM: ".concat(t.toLocaleString())),n.length>0?n.join(", "):"N/A"};return(0,a.jsx)(v.f,{accessToken:y,children:(0,a.jsxs)("div",{className:"min-h-screen bg-white",children:[(0,a.jsx)(b.Z,{userID:null,userEmail:null,userRole:null,premiumUser:!1,setProxySettings:Y,proxySettings:B,accessToken:y||null,isPublicPage:!0}),(0,a.jsxs)("div",{className:"w-full px-8 py-12",children:[(0,a.jsxs)(o.Zb,{className:"mb-10 p-8 bg-white border border-gray-200 rounded-lg shadow-sm",children:[(0,a.jsx)(o.Dx,{className:"text-2xl font-semibold mb-6 text-gray-900",children:"About"}),(0,a.jsx)("p",{className:"text-gray-700 mb-6 text-base leading-relaxed",children:S||"Proxy Server to call 100+ LLMs in the OpenAI format."}),(0,a.jsx)("div",{className:"flex items-center space-x-3 text-sm text-gray-600",children:(0,a.jsxs)("span",{className:"flex items-center",children:[(0,a.jsx)("span",{className:"w-4 h-4 mr-2",children:"\uD83D\uDD27"}),"Built with litellm: v",C]})})]}),O&&Object.keys(O).length>0&&(0,a.jsxs)(o.Zb,{className:"mb-10 p-8 bg-white border border-gray-200 rounded-lg shadow-sm",children:[(0,a.jsx)(o.Dx,{className:"text-2xl font-semibold mb-6 text-gray-900",children:"Useful Links"}),(0,a.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:Object.entries(O||{}).map(e=>{let[t,n]=e;return(0,a.jsxs)("button",{onClick:()=>window.open(n,"_blank"),className:"flex items-center space-x-3 text-blue-600 hover:text-blue-800 transition-colors p-3 rounded-lg hover:bg-blue-50 border border-gray-200",children:[(0,a.jsx)(p.Z,{className:"w-4 h-4"}),(0,a.jsx)(o.xv,{className:"text-sm font-medium",children:t})]},t)})})]}),(0,a.jsxs)(o.Zb,{className:"mb-10 p-8 bg-white border border-gray-200 rounded-lg shadow-sm",children:[(0,a.jsx)(o.Dx,{className:"text-2xl font-semibold mb-6 text-gray-900",children:"Health and Endpoint Status"}),(0,a.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:(0,a.jsxs)(o.xv,{className:"text-green-600 font-medium text-sm",children:["Service status: ",K]})})]}),(0,a.jsxs)(o.Zb,{className:"p-8 bg-white border border-gray-200 rounded-lg shadow-sm",children:[(0,a.jsx)("div",{className:"flex justify-between items-center mb-8",children:(0,a.jsx)(o.Dx,{className:"text-2xl font-semibold text-gray-900",children:"Available Models"})}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8 p-6 bg-gray-50 rounded-lg border border-gray-200",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center space-x-2 mb-3",children:[(0,a.jsx)(o.xv,{className:"text-sm font-medium text-gray-700",children:"Search Models:"}),(0,a.jsx)(l.Z,{title:"Smart search with relevance ranking - finds models containing your search terms, ranked by relevance. Try searching 'xai grok-4', 'claude-4', 'gpt-4', or 'sonnet'",placement:"top",children:(0,a.jsx)(g.Z,{className:"w-4 h-4 text-gray-400 cursor-help"})})]}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(u.Z,{className:"w-4 h-4 text-gray-400 absolute left-3 top-1/2 transform -translate-y-1/2"}),(0,a.jsx)("input",{type:"text",placeholder:"Search model names... (smart search enabled)",value:P,onChange:e=>z(e.target.value),className:"border border-gray-300 rounded-lg pl-10 pr-4 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white"})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-sm font-medium mb-3 text-gray-700",children:"Provider:"}),(0,a.jsx)(d.default,{mode:"multiple",value:L,onChange:e=>Z(e),placeholder:"Select providers",className:"w-full",size:"large",allowClear:!0,optionRender:e=>{let{logo:t}=(0,_.dr)(e.value);return(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[t&&(0,a.jsx)("img",{src:t,alt:e.label,className:"w-5 h-5 flex-shrink-0 object-contain",onError:e=>{e.target.style.display="none"}}),(0,a.jsx)("span",{className:"capitalize",children:e.label})]})},children:N&&(e=>{let t=new Set;return e.forEach(e=>{e.providers.forEach(e=>t.add(e))}),Array.from(t)})(N).map(e=>(0,a.jsx)(d.default.Option,{value:e,children:e},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-sm font-medium mb-3 text-gray-700",children:"Mode:"}),(0,a.jsx)(d.default,{mode:"multiple",value:G,onChange:e=>R(e),placeholder:"Select modes",className:"w-full",size:"large",allowClear:!0,children:N&&(e=>{let t=new Set;return e.forEach(e=>{e.mode&&t.add(e.mode)}),Array.from(t)})(N).map(e=>(0,a.jsx)(d.default.Option,{value:e,children:e},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-sm font-medium mb-3 text-gray-700",children:"Features:"}),(0,a.jsx)(d.default,{mode:"multiple",value:H,onChange:e=>F(e),placeholder:"Select features",className:"w-full",size:"large",allowClear:!0,children:N&&(e=>{let t=new Set;return e.forEach(e=>{Object.entries(e).filter(e=>{let[t,n]=e;return t.startsWith("supports_")&&!0===n}).forEach(e=>{let[n]=e,a=n.replace(/^supports_/,"").split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ");t.add(a)})}),Array.from(t).sort()})(N).map(e=>(0,a.jsx)(d.default.Option,{value:e,children:e},e))})]})]}),(0,a.jsx)(i.C,{columns:[{header:"Model Name",accessorKey:"model_group",enableSorting:!0,cell:e=>{let{row:t}=e;return(0,a.jsx)("div",{className:"overflow-hidden",children:(0,a.jsx)(l.Z,{title:t.original.model_group,children:(0,a.jsx)(o.zx,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left",onClick:()=>X(t.original),children:t.original.model_group})})})},size:150},{header:"Providers",accessorKey:"providers",enableSorting:!0,cell:e=>{let{row:t}=e,n=t.original.providers;return(0,a.jsx)("div",{className:"flex flex-wrap gap-1",children:n.map(e=>{let{logo:t}=(0,_.dr)(e);return(0,a.jsxs)("div",{className:"flex items-center space-x-1 px-2 py-1 bg-gray-100 rounded text-xs",children:[t&&(0,a.jsx)("img",{src:t,alt:e,className:"w-3 h-3 flex-shrink-0 object-contain",onError:e=>{e.target.style.display="none"}}),(0,a.jsx)("span",{className:"capitalize",children:e})]},e)})})},size:120},{header:"Mode",accessorKey:"mode",enableSorting:!0,cell:e=>{let{row:t}=e,n=t.original.mode;return(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)("span",{children:(e=>{switch(null==e?void 0:e.toLowerCase()){case"chat":return"\uD83D\uDCAC";case"rerank":return"\uD83D\uDD04";case"embedding":return"\uD83D\uDCC4";default:return"\uD83E\uDD16"}})(n||"")}),(0,a.jsx)(o.xv,{children:n||"Chat"})]})},size:100},{header:"Max Input",accessorKey:"max_input_tokens",enableSorting:!0,cell:e=>{let{row:t}=e;return(0,a.jsx)(o.xv,{className:"text-center",children:es(t.original.max_input_tokens)})},size:100,meta:{className:"text-center"}},{header:"Max Output",accessorKey:"max_output_tokens",enableSorting:!0,cell:e=>{let{row:t}=e;return(0,a.jsx)(o.xv,{className:"text-center",children:es(t.original.max_output_tokens)})},size:100,meta:{className:"text-center"}},{header:"Input $/1M",accessorKey:"input_cost_per_token",enableSorting:!0,cell:e=>{let{row:t}=e,n=t.original.input_cost_per_token;return(0,a.jsx)(o.xv,{className:"text-center",children:n?ea(n):"Free"})},size:100,meta:{className:"text-center"}},{header:"Output $/1M",accessorKey:"output_cost_per_token",enableSorting:!0,cell:e=>{let{row:t}=e,n=t.original.output_cost_per_token;return(0,a.jsx)(o.xv,{className:"text-center",children:n?ea(n):"Free"})},size:100,meta:{className:"text-center"}},{header:"Features",accessorKey:"supports_vision",enableSorting:!1,cell:e=>{let{row:t}=e,n=Object.entries(t.original).filter(e=>{let[t,n]=e;return t.startsWith("supports_")&&!0===n}).map(e=>{let[t]=e;return et(t)});return 0===n.length?(0,a.jsx)(o.xv,{className:"text-gray-400",children:"-"}):1===n.length?(0,a.jsx)("div",{className:"h-6 flex items-center",children:(0,a.jsx)(c.Z,{color:"blue",className:"text-xs",children:n[0]})}):(0,a.jsxs)("div",{className:"h-6 flex items-center space-x-1",children:[(0,a.jsx)(c.Z,{color:"blue",className:"text-xs",children:n[0]}),(0,a.jsx)(l.Z,{title:(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("div",{className:"font-medium",children:"All Features:"}),n.map((e,t)=>(0,a.jsxs)("div",{className:"text-xs",children:["• ",e]},t))]}),trigger:"click",placement:"topLeft",children:(0,a.jsxs)("span",{className:"text-xs text-blue-600 cursor-pointer hover:text-blue-800 hover:underline",onClick:e=>e.stopPropagation(),children:["+",n.length-1]})})]})},size:120},{header:"Limits",accessorKey:"rpm",enableSorting:!0,cell:e=>{let{row:t}=e,n=t.original;return(0,a.jsx)(o.xv,{className:"text-xs text-gray-600",children:er(n.rpm,n.tpm)})},size:150}],data:Q,isLoading:D,table:$,defaultSorting:[{id:"model_group",desc:!1}]}),(0,a.jsx)("div",{className:"mt-8 text-center",children:(0,a.jsxs)(o.xv,{className:"text-sm text-gray-600",children:["Showing ",Q.length," of ",(null==N?void 0:N.length)||0," models"]})})]})]}),(0,a.jsx)(m.Z,{title:(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)("span",{children:(null==q?void 0:q.model_group)||"Model Details"}),q&&(0,a.jsx)(l.Z,{title:"Copy model name",children:(0,a.jsx)(x.Z,{onClick:()=>ee(q.model_group),className:"cursor-pointer text-gray-500 hover:text-blue-500 w-4 h-4"})})]}),width:1e3,open:U,footer:null,onOk:()=>{W(!1),J(null)},onCancel:()=>{W(!1),J(null)},children:q&&(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-lg font-semibold mb-4",children:"Model Overview"}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Model Name:"}),(0,a.jsx)(o.xv,{children:q.model_group})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Mode:"}),(0,a.jsx)(o.xv,{children:q.mode||"Not specified"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Providers:"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1 mt-1",children:q.providers.map(e=>{let{logo:t}=(0,_.dr)(e);return(0,a.jsx)(c.Z,{color:"blue",children:(0,a.jsxs)("div",{className:"flex items-center space-x-1",children:[t&&(0,a.jsx)("img",{src:t,alt:e,className:"w-3 h-3 flex-shrink-0 object-contain",onError:e=>{e.target.style.display="none"}}),(0,a.jsx)("span",{className:"capitalize",children:e})]})},e)})})]})]}),q.model_group.includes("*")&&(0,a.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-4 mb-4",children:(0,a.jsxs)("div",{className:"flex items-start space-x-2",children:[(0,a.jsx)(g.Z,{className:"w-4 h-4 text-blue-600 mt-0.5 flex-shrink-0"}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium text-blue-900 mb-2",children:"Wildcard Routing"}),(0,a.jsxs)(o.xv,{className:"text-sm text-blue-800 mb-2",children:["This model uses wildcard routing. You can pass any value where you see the"," ",(0,a.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded text-xs",children:"*"})," symbol."]}),(0,a.jsxs)(o.xv,{className:"text-sm text-blue-800",children:["For example, with"," ",(0,a.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded text-xs",children:q.model_group}),", you can use any string (",(0,a.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded text-xs",children:q.model_group.replace("*","my-custom-value")}),") that matches this pattern."]})]})]})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-lg font-semibold mb-4",children:"Token & Cost Information"}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Max Input Tokens:"}),(0,a.jsx)(o.xv,{children:(null===(t=q.max_input_tokens)||void 0===t?void 0:t.toLocaleString())||"Not specified"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Max Output Tokens:"}),(0,a.jsx)(o.xv,{children:(null===(n=q.max_output_tokens)||void 0===n?void 0:n.toLocaleString())||"Not specified"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Input Cost per 1M Tokens:"}),(0,a.jsx)(o.xv,{children:q.input_cost_per_token?ea(q.input_cost_per_token):"Not specified"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Output Cost per 1M Tokens:"}),(0,a.jsx)(o.xv,{children:q.output_cost_per_token?ea(q.output_cost_per_token):"Not specified"})]})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-lg font-semibold mb-4",children:"Capabilities"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:(()=>{let e=en(q),t=["green","blue","purple","orange","red","yellow"];return 0===e.length?(0,a.jsx)(o.xv,{className:"text-gray-500",children:"No special capabilities listed"}):e.map((e,n)=>(0,a.jsx)(c.Z,{color:t[n%t.length],children:et(e)},e))})()})]}),(q.tpm||q.rpm)&&(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-lg font-semibold mb-4",children:"Rate Limits"}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[q.tpm&&(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Tokens per Minute:"}),(0,a.jsx)(o.xv,{children:q.tpm.toLocaleString()})]}),q.rpm&&(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"font-medium",children:"Requests per Minute:"}),(0,a.jsx)(o.xv,{children:q.rpm.toLocaleString()})]})]})]}),q.supported_openai_params&&(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-lg font-semibold mb-4",children:"Supported OpenAI Parameters"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:q.supported_openai_params.map(e=>(0,a.jsx)(c.Z,{color:"green",children:e},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(o.xv,{className:"text-lg font-semibold mb-4",children:"Usage Example"}),(0,a.jsx)("div",{className:"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto",children:(0,a.jsx)("pre",{className:"text-sm",children:(0,h.L)({apiKeySource:"custom",accessToken:null,apiKey:"your_api_key",inputMessage:"Hello, how are you?",chatHistory:[{role:"user",content:"Hello, how are you?",isImage:!1}],selectedTags:[],selectedVectorStores:[],selectedGuardrails:[],selectedMCPTools:[],endpointType:(0,f.vf)(q.mode||"chat"),selectedModel:q.model_group,selectedSdk:"openai"})})}),(0,a.jsx)("div",{className:"mt-2 text-right",children:(0,a.jsx)("button",{onClick:()=>{ee((0,h.L)({apiKeySource:"custom",accessToken:null,apiKey:"your_api_key",inputMessage:"Hello, how are you?",chatHistory:[{role:"user",content:"Hello, how are you?",isImage:!1}],selectedTags:[],selectedVectorStores:[],selectedGuardrails:[],selectedMCPTools:[],endpointType:(0,f.vf)(q.mode||"chat"),selectedModel:q.model_group,selectedSdk:"openai"}))},className:"text-sm text-blue-600 hover:text-blue-800 cursor-pointer",children:"Copy to clipboard"})})]})]})})]})})}},69734:function(e,t,n){n.d(t,{F:function(){return o},f:function(){return l}});var a=n(57437),s=n(2265),r=n(19250);let i=(0,s.createContext)(void 0),o=()=>{let e=(0,s.useContext)(i);if(!e)throw Error("useTheme must be used within a ThemeProvider");return e},l=e=>{let{children:t,accessToken:n}=e,[o,l]=(0,s.useState)(null);return(0,s.useEffect)(()=>{(async()=>{try{let t=(0,r.getProxyBaseUrl)(),n=await fetch(t?"".concat(t,"/get/ui_theme_settings"):"/get/ui_theme_settings",{method:"GET",headers:{"Content-Type":"application/json"}});if(n.ok){var e;let t=await n.json();(null===(e=t.values)||void 0===e?void 0:e.logo_url)&&l(t.values.logo_url)}}catch(e){console.warn("Failed to load logo settings from backend:",e)}})()},[]),(0,a.jsx)(i.Provider,{value:{logoUrl:o,setLogoUrl:l},children:t})}}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/49-0e15a7b701ab2b73.js b/litellm/proxy/_experimental/out/_next/static/chunks/49-0e15a7b701ab2b73.js new file mode 100644 index 00000000000..a91dbe3ce6f --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/49-0e15a7b701ab2b73.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[49],{31283:function(e,t,o){o.d(t,{o:function(){return a.Z}});var a=o(49566)},63610:function(e,t,o){o.d(t,{d:function(){return h}});var a=o(57437),r=o(2265),n=o(64482),c=o(52787),l=o(20577),i=o(13634),s=o(31283),d=o(15424),u=o(89970),p=o(19250);let h=["metadata","config","enforced_params","aliases"],g=(e,t)=>h.includes(e)||"json"===t.format,m=e=>{if(!e)return!0;try{return JSON.parse(e),!0}catch(e){return!1}},f=(e,t,o)=>{let a={max_budget:"Enter maximum budget in USD (e.g., 100.50)",budget_duration:"Select a time period for budget reset",tpm_limit:"Enter maximum tokens per minute (whole number)",rpm_limit:"Enter maximum requests per minute (whole number)",duration:"Enter duration (e.g., 30s, 24h, 7d)",metadata:'Enter JSON object with key-value pairs\nExample: {"team": "research", "project": "nlp"}',config:'Enter configuration as JSON object\nExample: {"setting": "value"}',permissions:"Enter comma-separated permission strings",enforced_params:'Enter parameters as JSON object\nExample: {"param": "value"}',blocked:"Enter true/false or specific block conditions",aliases:'Enter aliases as JSON object\nExample: {"alias1": "value1", "alias2": "value2"}',models:"Select one or more model names",key_alias:"Enter a unique identifier for this key",tags:"Enter comma-separated tag strings"}[e]||({string:"Text input",number:"Numeric input",integer:"Whole number input",boolean:"True/False value"})[o]||"Text input";return g(e,t)?"".concat(a,"\nMust be valid JSON format"):t.enum?"Select from available options\nAllowed values: ".concat(t.enum.join(", ")):a};t.Z=e=>{let{schemaComponent:t,excludedFields:o=[],form:h,overrideLabels:w={},overrideTooltips:y={},customValidation:j={},defaultValues:_={}}=e,[C,k]=(0,r.useState)(null),[v,T]=(0,r.useState)(null);(0,r.useEffect)(()=>{(async()=>{try{let e=(await (0,p.getOpenAPISchema)()).components.schemas[t];if(!e)throw Error('Schema component "'.concat(t,'" not found'));k(e);let a={};Object.keys(e.properties).filter(e=>!o.includes(e)&&void 0!==_[e]).forEach(e=>{a[e]=_[e]}),h.setFieldsValue(a)}catch(e){console.error("Schema fetch error:",e),T(e instanceof Error?e.message:"Failed to fetch schema")}})()},[t,h,o]);let E=e=>{if(e.type)return e.type;if(e.anyOf){let t=e.anyOf.map(e=>e.type);if(t.includes("number")||t.includes("integer"))return"number";t.includes("string")}return"string"},S=(e,t)=>{var o;let r;let p=E(t),h=null==C?void 0:null===(o=C.required)||void 0===o?void 0:o.includes(e),k=w[e]||t.title||e,v=y[e]||t.description,T=[];h&&T.push({required:!0,message:"".concat(k," is required")}),j[e]&&T.push({validator:j[e]}),g(e,t)&&T.push({validator:async(e,t)=>{if(t&&!m(t))throw Error("Please enter valid JSON")}});let S=v?(0,a.jsxs)("span",{children:[k," ",(0,a.jsx)(u.Z,{title:v,children:(0,a.jsx)(d.Z,{style:{marginLeft:"4px"}})})]}):k;return r=g(e,t)?(0,a.jsx)(n.default.TextArea,{rows:4,placeholder:"Enter as JSON",className:"font-mono"}):t.enum?(0,a.jsx)(c.default,{children:t.enum.map(e=>(0,a.jsx)(c.default.Option,{value:e,children:e},e))}):"number"===p||"integer"===p?(0,a.jsx)(l.Z,{style:{width:"100%"},precision:"integer"===p?0:void 0}):"duration"===e?(0,a.jsx)(s.o,{placeholder:"eg: 30s, 30h, 30d"}):(0,a.jsx)(s.o,{placeholder:v||""}),(0,a.jsx)(i.Z.Item,{label:S,name:e,className:"mt-8",rules:T,initialValue:_[e],help:(0,a.jsx)("div",{className:"text-xs text-gray-500",children:f(e,t,p)}),children:r},e)};return v?(0,a.jsxs)("div",{className:"text-red-500",children:["Error: ",v]}):(null==C?void 0:C.properties)?(0,a.jsx)("div",{children:Object.entries(C.properties).filter(e=>{let[t]=e;return!o.includes(t)}).map(e=>{let[t,o]=e;return S(t,o)})}):null}},9114:function(e,t,o){var a=o(2265),r=o(57271),n=o(85968);function c(){return"topRight"}function l(e,t){var o;return"string"==typeof e?{message:t,description:e}:{message:null!==(o=e.message)&&void 0!==o?o:t,...e}}function i(e){return"number"==typeof e?e:"string"==typeof e&&/^\d+$/.test(e)?parseInt(e,10):void 0}let s=["invalid api key","invalid authorization header format","authentication error","invalid proxy server token","invalid jwt token","invalid jwt submitted","unauthorized access to metrics endpoint"],d=["admin-only endpoint","not allowed to access model","user does not have permission","access forbidden","invalid credentials used to access ui","user not allowed to access proxy"],u=["db not connected","database not initialized","no db connected","prisma client not initialized","service unhealthy"],p=["no models configured on proxy","llm router not initialized","no deployments available","no healthy deployment available","not allowed to access model due to tags configuration","invalid model name passed in"],h=["deployment over user-defined ratelimit","crossed tpm / rpm / max parallel request limit","max parallel request limit"],g=["budget exceeded","crossed budget","provider budget"],m=["must be a litellm enterprise user","only be available for liteLLM enterprise users","missing litellm-enterprise package","only available on the docker image","enterprise feature","premium user"],f=["invalid json payload","invalid request type","invalid key format","invalid hash key","invalid sort column","invalid sort order","invalid limit","invalid file type","invalid field","invalid date format"],w=["model not found","model with id","credential not found","user not found","team not found","organization not found","mcp server with id","tool '"],y=["already exists","team member is already in team","user already exists"],j=["violated openai moderation policy","violated jailbreak threshold","violated prompt_injection threshold","violated content safety policy","violated lasso guardrail policy","blocked by pillar security guardrail","violated azure prompt shield guardrail policy","content blocked by model armor","response blocked by model armor","streaming response blocked by model armor","guardrail","moderation"],_=["invalid purpose","service must be specified","invalid response - response.response is none"],C=["cloudzero settings not configured","failed to decrypt cloudzero api key","cloudzero settings not found"],k=["created successfully","updated successfully","deleted successfully","credential created successfully","model added successfully","team created successfully","user created successfully","organization created successfully","cloudzero settings initialized successfully","cloudzero settings updated successfully","cloudzero export completed successfully","mock llm request made","mock slack alert sent","mock email alert sent","spend for all api keys and teams reset successfully","monthlyglobalspend view refreshed","cache cleared successfully","cache set successfully","ip ","deleted successfully"],v=["rate limit reached for deployment","deployment cooldown period active"],T=["this feature is only available for litellm enterprise users","enterprise features are not available","regenerating virtual keys is an enterprise feature","trying to set allowed_routes. this is an enterprise feature"],E=["invalid maximum_spend_logs_retention_interval value","error has invalid or non-convertible code","failed to save health check to database"];t.Z={error(e){var t,o;let a=l(e,"Error");r.ZP.error({...a,placement:null!==(t=a.placement)&&void 0!==t?t:c(),duration:null!==(o=a.duration)&&void 0!==o?o:6})},warning(e){var t,o;let a=l(e,"Warning");r.ZP.warning({...a,placement:null!==(t=a.placement)&&void 0!==t?t:c(),duration:null!==(o=a.duration)&&void 0!==o?o:5})},info(e){var t,o;let a=l(e,"Info");r.ZP.info({...a,placement:null!==(t=a.placement)&&void 0!==t?t:c(),duration:null!==(o=a.duration)&&void 0!==o?o:4})},success(e){var t,o;if(a.isValidElement(e)){r.ZP.success({message:"Success",description:e,placement:c(),duration:3.5});return}let n=l(e,"Success");r.ZP.success({...n,placement:null!==(t=n.placement)&&void 0!==t?t:c(),duration:null!==(o=n.duration)&&void 0!==o?o:3.5})},fromBackend(e,t){var o,a,l,S,b,F,P,O,B,N,x,G;let A=null!==(G=null!==(x=i(null==e?void 0:null===(N=e.response)||void 0===N?void 0:N.status))&&void 0!==x?x:i(null==e?void 0:e.status_code))&&void 0!==G?G:i(null==e?void 0:e.code),J=function(e){var t,o,a,r,c,l,i,s,d,u,p,h;if("string"==typeof e)return e;let g=null!==(h=null!==(p=null!==(u=null!==(d=null!==(s=null==e?void 0:null===(a=e.response)||void 0===a?void 0:null===(o=a.data)||void 0===o?void 0:null===(t=o.error)||void 0===t?void 0:t.message)&&void 0!==s?s:null==e?void 0:null===(c=e.response)||void 0===c?void 0:null===(r=c.data)||void 0===r?void 0:r.message)&&void 0!==d?d:null==e?void 0:null===(i=e.response)||void 0===i?void 0:null===(l=i.data)||void 0===l?void 0:l.error)&&void 0!==u?u:null==e?void 0:e.detail)&&void 0!==p?p:null==e?void 0:e.message)&&void 0!==h?h:e;return(0,n.O)(g)}(e),U={...null!=t?t:{},description:J,placement:null!==(o=null==t?void 0:t.placement)&&void 0!==o?o:c()};if(void 0!==A||e instanceof Error||"string"==typeof e||e&&"object"==typeof e&&("error"in e||"detail"in e)){let e=function(e,t){var o,a,r,n,c;let l=(t||"").toLowerCase();return s.some(e=>l.includes(e))?"Authentication Error":d.some(e=>l.includes(e))?"Access Denied":(null==u?void 0:null===(o=u.some)||void 0===o?void 0:o.call(u,e=>l.includes(e)))||503===e?"Service Unavailable":(null==g?void 0:null===(a=g.some)||void 0===a?void 0:a.call(g,e=>l.includes(e)))?"Budget Exceeded":(null==m?void 0:null===(r=m.some)||void 0===r?void 0:r.call(m,e=>l.includes(e)))?"Feature Unavailable":(null==p?void 0:null===(n=p.some)||void 0===n?void 0:n.call(p,e=>l.includes(e)))?"Routing Error":y.some(e=>l.includes(e))?"Already Exists":j.some(e=>l.includes(e))?"Content Blocked":_.some(e=>l.includes(e))?"Validation Error":C.some(e=>l.includes(e))?"Integration Error":f.some(e=>l.includes(e))?"Validation Error":404===e||l.includes("not found")||w.some(e=>l.includes(e))?"Not Found":429===e||l.includes("rate limit")||l.includes("tpm")||l.includes("rpm")||(null==h?void 0:null===(c=h.some)||void 0===c?void 0:c.call(h,e=>l.includes(e)))?"Rate Limit Exceeded":e&&e>=500?"Server Error":401===e?"Authentication Error":403===e?"Access Denied":l.includes("enterprise")||l.includes("premium")?"Info":e&&e>=400?"Request Error":"Error"}(A,J),o={...U,message:e};if("Rate Limit Exceeded"===e||"Info"===e||"Budget Exceeded"===e||"Feature Unavailable"===e||"Content Blocked"===e||"Integration Error"===e){r.ZP.warning({...o,duration:null!==(a=null==t?void 0:t.duration)&&void 0!==a?a:7});return}if("Server Error"===e){r.ZP.error({...o,duration:null!==(l=null==t?void 0:t.duration)&&void 0!==l?l:8});return}if("Request Error"===e||"Authentication Error"===e||"Access Denied"===e||"Not Found"===e||"Error"===e){r.ZP.error({...o,duration:null!==(S=null==t?void 0:t.duration)&&void 0!==S?S:6});return}r.ZP.info({...o,duration:null!==(b=null==t?void 0:t.duration)&&void 0!==b?b:4});return}let R=function(e){let t=(e||"").toLowerCase();return k.some(e=>t.includes(e))?{kind:"success",title:"Success"}:T.some(e=>t.includes(e))?{kind:"warning",title:"Feature Notice"}:E.some(e=>t.includes(e))?{kind:"warning",title:"Configuration Warning"}:v.some(e=>t.includes(e))?{kind:"warning",title:"Rate Limit"}:null}(J),I={...U,message:null!==(F=null==R?void 0:R.title)&&void 0!==F?F:"Info"};if((null==R?void 0:R.kind)==="success"){r.ZP.success({...I,duration:null!==(P=null==t?void 0:t.duration)&&void 0!==P?P:3.5});return}if((null==R?void 0:R.kind)==="warning"){r.ZP.warning({...I,duration:null!==(O=null==t?void 0:t.duration)&&void 0!==O?O:6});return}r.ZP.info({...I,duration:null!==(B=null==t?void 0:t.duration)&&void 0!==B?B:4})},clear(){r.ZP.destroy()}}},19250:function(e,t,o){o.r(t),o.d(t,{DEFAULT_ORGANIZATION:function(){return g},PredictedSpendLogsCall:function(){return ti},addAllowedIP:function(){return ef},adminGlobalActivity:function(){return eJ},adminGlobalActivityExceptions:function(){return eI},adminGlobalActivityExceptionsPerDeployment:function(){return eM},adminGlobalActivityPerModel:function(){return eR},adminGlobalCacheActivity:function(){return eU},adminSpendLogsCall:function(){return eN},adminTopEndUsersCall:function(){return eG},adminTopKeysCall:function(){return ex},adminTopModelsCall:function(){return ez},adminspendByProvider:function(){return eA},alertingSettingsCall:function(){return U},allEndUsersCall:function(){return eF},allTagNamesCall:function(){return eb},availableTeamListCall:function(){return Y},budgetCreateCall:function(){return x},budgetDeleteCall:function(){return N},budgetUpdateCall:function(){return G},cachingHealthCheckCall:function(){return tE},callMCPTool:function(){return tH},cancelModelCostMapReload:function(){return b},claimOnboardingToken:function(){return el},convertPromptFileToJson:function(){return tA},createGuardrailCall:function(){return tU},createMCPServer:function(){return tD},createPassThroughEndpoint:function(){return ty},createPromptCall:function(){return tN},credentialCreateCall:function(){return e0},credentialDeleteCall:function(){return e4},credentialGetCall:function(){return e2},credentialListCall:function(){return e1},credentialUpdateCall:function(){return e3},defaultProxyBaseUrl:function(){return i},deleteAllowedIP:function(){return ew},deleteCallback:function(){return oh},deleteConfigFieldSetting:function(){return t_},deleteGuardrailCall:function(){return oo},deleteMCPServer:function(){return tZ},deletePassThroughEndpointsCall:function(){return tC},deletePromptCall:function(){return tG},fetchMCPAccessGroups:function(){return tL},fetchMCPServers:function(){return tz},formatDate:function(){return l},getAllowedIPs:function(){return em},getBudgetList:function(){return tu},getBudgetSettings:function(){return tp},getCallbacksCall:function(){return th},getConfigFieldSetting:function(){return tf},getDefaultTeamSettings:function(){return tX},getEmailEventSettings:function(){return t8},getGeneralSettingsCall:function(){return tg},getGuardrailInfo:function(){return on},getGuardrailProviderSpecificParams:function(){return or},getGuardrailUISettings:function(){return oa},getGuardrailsList:function(){return tP},getInternalUserSettings:function(){return tI},getModelCostMapReloadStatus:function(){return F},getOnboardingCredentials:function(){return ec},getOpenAPISchema:function(){return v},getPassThroughEndpointInfo:function(){return op},getPassThroughEndpointsCall:function(){return tm},getPossibleUserRoles:function(){return eQ},getPromptInfo:function(){return tB},getPromptsList:function(){return tO},getProxyBaseUrl:function(){return p},getProxyUISettings:function(){return tF},getPublicModelHubInfo:function(){return k},getRemainingUsers:function(){return od},getSSOSettings:function(){return ol},getTeamPermissionsCall:function(){return t1},getTotalSpendCall:function(){return en},getUiConfig:function(){return C},healthCheckCall:function(){return tv},healthCheckHistoryCall:function(){return tS},individualModelHealthCheckCall:function(){return tT},invitationClaimCall:function(){return J},invitationCreateCall:function(){return A},keyAliasesCall:function(){return eq},keyCreateCall:function(){return I},keyCreateServiceAccountCall:function(){return R},keyDeleteCall:function(){return z},keyInfoCall:function(){return eL},keyInfoV1Call:function(){return eV},keyListCall:function(){return eZ},keySpendLogsCall:function(){return eT},keyUpdateCall:function(){return e5},latestHealthChecksCall:function(){return tb},listMCPTools:function(){return tq},makeModelGroupPublic:function(){return _},mcpToolsCall:function(){return og},modelAvailableCall:function(){return ev},modelCostMap:function(){return T},modelCreateCall:function(){return P},modelDeleteCall:function(){return B},modelExceptionsCall:function(){return eC},modelHubCall:function(){return eg},modelHubPublicModelsCall:function(){return eh},modelInfoCall:function(){return eu},modelInfoV1Call:function(){return ep},modelMetricsCall:function(){return ey},modelMetricsSlowResponsesCall:function(){return e_},modelPatchUpdateCall:function(){return e9},modelSettingsCall:function(){return O},modelUpdateCall:function(){return e7},organizationCreateCall:function(){return Q},organizationDeleteCall:function(){return ee},organizationInfoCall:function(){return $},organizationListCall:function(){return K},organizationMemberAddCall:function(){return ta},organizationMemberDeleteCall:function(){return tr},organizationMemberUpdateCall:function(){return tn},organizationUpdateCall:function(){return X},patchPromptCall:function(){return tJ},perUserAnalyticsCall:function(){return oT},proxyBaseUrl:function(){return d},regenerateKeyCall:function(){return ei},reloadModelCostMap:function(){return E},resetEmailEventSettings:function(){return ot},scheduleModelCostMapReload:function(){return S},serverRootPath:function(){return s},serviceHealthCheck:function(){return td},sessionSpendLogsCall:function(){return t4},setCallbacksCall:function(){return tk},setGlobalLitellmHeaderName:function(){return j},slackBudgetAlertsHealthCheck:function(){return ts},spendUsersCall:function(){return eH},streamingModelMetricsCall:function(){return ej},tagCreateCall:function(){return tW},tagDailyActivityCall:function(){return ea},tagDauCall:function(){return oj},tagDeleteCall:function(){return tQ},tagDistinctCall:function(){return ok},tagInfoCall:function(){return tK},tagListCall:function(){return t$},tagMauCall:function(){return oC},tagUpdateCall:function(){return tY},tagWauCall:function(){return o_},tagsSpendLogsCall:function(){return eS},teamBulkMemberAddCall:function(){return te},teamCreateCall:function(){return eX},teamDailyActivityCall:function(){return er},teamDeleteCall:function(){return D},teamInfoCall:function(){return q},teamListCall:function(){return W},teamMemberAddCall:function(){return e8},teamMemberDeleteCall:function(){return to},teamMemberUpdateCall:function(){return tt},teamPermissionsUpdateCall:function(){return t2},teamSpendLogsCall:function(){return eE},teamUpdateCall:function(){return e6},testConnectionRequest:function(){return eD},testMCPConnectionRequest:function(){return om},testMCPToolsListRequest:function(){return of},transformRequestCall:function(){return et},uiAuditLogsCall:function(){return os},uiSpendLogDetailsCall:function(){return tR},uiSpendLogsCall:function(){return eB},updateConfigFieldSetting:function(){return tj},updateDefaultTeamSettings:function(){return t0},updateEmailEventSettings:function(){return oe},updateGuardrailCall:function(){return oc},updateInternalUserSettings:function(){return tM},updateMCPServer:function(){return tV},updatePassThroughEndpoint:function(){return ou},updatePassThroughFieldSetting:function(){return tw},updatePromptCall:function(){return tx},updateSSOSettings:function(){return oi},updateUsefulLinksCall:function(){return ek},userAgentAnalyticsCall:function(){return oy},userAgentSummaryCall:function(){return ov},userBulkUpdateUserCall:function(){return tl},userCreateCall:function(){return M},userDailyActivityAggregatedCall:function(){return eK},userDailyActivityCall:function(){return eo},userDeleteCall:function(){return L},userFilterUICall:function(){return eP},userGetAllUsersCall:function(){return e$},userGetRequesedtModelsCall:function(){return eY},userInfoCall:function(){return Z},userListCall:function(){return V},userRequestModelCall:function(){return eW},userSpendLogsCall:function(){return eO},userUpdateUserCall:function(){return tc},v2TeamListCall:function(){return H},vectorStoreCreateCall:function(){return t3},vectorStoreDeleteCall:function(){return t6},vectorStoreInfoCall:function(){return t9},vectorStoreListCall:function(){return t5},vectorStoreSearchCall:function(){return ow},vectorStoreUpdateCall:function(){return t7}});var a=o(42264),r=o(3914),n=o(63610),c=o(9114);let l=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)},i=null,s="/",d=null;console.log=function(){};let u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=window.location.origin,a=t||o;console.log("proxyBaseUrl:",d),console.log("serverRootPath:",e),e.length>0&&!a.endsWith(e)&&"/"!=e&&(a+=e,d=a),console.log("Updated proxyBaseUrl:",d)},p=()=>d||window.location.origin,h={GET:"GET",DELETE:"DELETE"},g="default_organization",m=0,f=async e=>{let t=Date.now();t-m>6e4?(e.includes("Authentication Error - Expired Key")&&(c.Z.info("UI Session Expired. Logging out."),m=t,(0,r.b)(),window.location.href=window.location.pathname),m=t):console.log("Error suppressed to prevent spam:",e)},w="Authorization",y="x-mcp-auth";function j(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Authorization";console.log("setGlobalLitellmHeaderName: ".concat(e)),w=e}let _=async(e,t)=>{let o=d?"".concat(d,"/model_group/make_public"):"/model_group/make_public";return(await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({model_groups:t})})).json()},C=async()=>{console.log("Getting UI config");let e=await fetch(i?"".concat(i,"/litellm/.well-known/litellm-ui-config"):"/litellm/.well-known/litellm-ui-config"),t=await e.json();return console.log("jsonData in getUiConfig:",t),u(t.server_root_path,t.proxy_base_url),t},k=async()=>{let e=await fetch(i?"".concat(i,"/public/model_hub/info"):"/public/model_hub/info");return await e.json()},v=async()=>{let e=d?"".concat(d,"/openapi.json"):"/openapi.json",t=await fetch(e);return await t.json()},T=async e=>{try{let t=d?"".concat(d,"/get/litellm_model_cost_map"):"/get/litellm_model_cost_map",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),a=await o.json();return console.log("received litellm model cost data: ".concat(a)),a}catch(e){throw console.error("Failed to get model cost map:",e),e}},E=async e=>{try{let t=d?"".concat(d,"/reload/model_cost_map"):"/reload/model_cost_map",o=await fetch(t,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),a=await o.json();return console.log("Model cost map reload response: ".concat(a)),a}catch(e){throw console.error("Failed to reload model cost map:",e),e}},S=async(e,t)=>{try{let o=d?"".concat(d,"/schedule/model_cost_map_reload?hours=").concat(t):"/schedule/model_cost_map_reload?hours=".concat(t),a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),r=await a.json();return console.log("Schedule model cost map reload response: ".concat(r)),r}catch(e){throw console.error("Failed to schedule model cost map reload:",e),e}},b=async e=>{try{let t=d?"".concat(d,"/schedule/model_cost_map_reload"):"/schedule/model_cost_map_reload",o=await fetch(t,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),a=await o.json();return console.log("Cancel model cost map reload response: ".concat(a)),a}catch(e){throw console.error("Failed to cancel model cost map reload:",e),e}},F=async e=>{try{let t=d?"".concat(d,"/schedule/model_cost_map_reload/status"):"/schedule/model_cost_map_reload/status";console.log("Fetching status from URL:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){console.error("Status request failed with status: ".concat(o.status));let e=await o.text();throw console.error("Error response:",e),Error("HTTP ".concat(o.status,": ").concat(e))}let a=await o.json();return console.log("Model cost map reload status:",a),a}catch(e){throw console.error("Failed to get model cost map reload status:",e),e}},P=async(e,t)=>{try{let o=d?"".concat(d,"/model/new"):"/model/new",r=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),a.ZP.destroy(),c.Z.success("Model ".concat(t.model_name," created successfully")),n}catch(e){throw console.error("Failed to create key:",e),e}},O=async e=>{try{let t=d?"".concat(d,"/model/settings"):"/model/settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){console.error("Failed to get model settings:",e)}},B=async(e,t)=>{console.log("model_id in model delete call: ".concat(t));try{let o=d?"".concat(d,"/model/delete"):"/model/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},N=async(e,t)=>{if(console.log("budget_id in budget delete call: ".concat(t)),null!=e)try{let o=d?"".concat(d,"/budget/delete"):"/budget/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},x=async(e,t)=>{try{console.log("Form Values in budgetCreateCall:",t),console.log("Form Values after check:",t);let o=d?"".concat(d,"/budget/new"):"/budget/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},G=async(e,t)=>{try{console.log("Form Values in budgetUpdateCall:",t),console.log("Form Values after check:",t);let o=d?"".concat(d,"/budget/update"):"/budget/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,t)=>{try{let o=d?"".concat(d,"/invitation/new"):"/invitation/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},J=async(e,t)=>{try{console.log("Form Values in invitationCreateCall:",t),console.log("Form Values after check:",t);let o=d?"".concat(d,"/invitation/claim"):"/invitation/claim",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},U=async e=>{try{let t=d?"".concat(d,"/alerting/settings"):"/alerting/settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},R=async(e,t)=>{try{for(let e of(console.log("Form Values in keyCreateServiceAccountCall:",t),t.description&&(t.metadata||(t.metadata={}),t.metadata.description=t.description,delete t.description,t.metadata=JSON.stringify(t.metadata)),n.d))if(t[e]){console.log("formValues.".concat(e,":"),t[e]);try{t[e]=JSON.parse(t[e])}catch(t){throw Error("Failed to parse ".concat(e,": ")+t)}}console.log("Form Values after check:",t);let o=d?"".concat(d,"/key/service-account/generate"):"/key/service-account/generate",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,t,o)=>{try{for(let e of(console.log("Form Values in keyCreateCall:",o),o.description&&(o.metadata||(o.metadata={}),o.metadata.description=o.description,delete o.description,o.metadata=JSON.stringify(o.metadata)),n.d))if(o[e]){console.log("formValues.".concat(e,":"),o[e]);try{o[e]=JSON.parse(o[e])}catch(t){throw Error("Failed to parse ".concat(e,": ")+t)}}console.log("Form Values after check:",o);let a=d?"".concat(d,"/key/generate"):"/key/generate",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...o})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let c=await r.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},M=async(e,t,o)=>{try{if(console.log("Form Values in keyCreateCall:",o),o.description&&(o.metadata||(o.metadata={}),o.metadata.description=o.description,delete o.description,o.metadata=JSON.stringify(o.metadata)),o.auto_create_key=!1,o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",o);let a=d?"".concat(d,"/user/new"):"/user/new",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...o})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},z=async(e,t)=>{try{let o=d?"".concat(d,"/key/delete"):"/key/delete";console.log("in keyDeleteCall:",t);let a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[t]})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},L=async(e,t)=>{try{let o=d?"".concat(d,"/user/delete"):"/user/delete";console.log("in userDeleteCall:",t);let a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_ids:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to delete user(s):",e),e}},D=async(e,t)=>{try{let o=d?"".concat(d,"/team/delete"):"/team/delete";console.log("in teamDeleteCall:",t);let a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_ids:[t]})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to delete key:",e),e}},V=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,i=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,s=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null;try{let u=d?"".concat(d,"/user/list"):"/user/list";console.log("in userListCall");let p=new URLSearchParams;if(t&&t.length>0){let e=t.join(",");p.append("user_ids",e)}o&&p.append("page",o.toString()),a&&p.append("page_size",a.toString()),r&&p.append("user_email",r),n&&p.append("role",n),c&&p.append("team",c),l&&p.append("sso_user_ids",l),i&&p.append("sort_by",i),s&&p.append("sort_order",s);let h=p.toString();h&&(u+="?".concat(h));let g=await fetch(u,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!g.ok){let e=await g.json(),t=oE(e);throw f(t),Error(t)}let m=await g.json();return console.log("/user/list API Response:",m),m}catch(e){throw console.error("Failed to create key:",e),e}},Z=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4?arguments[4]:void 0,n=arguments.length>5?arguments[5]:void 0,c=arguments.length>6&&void 0!==arguments[6]&&arguments[6];console.log("userInfoCall: ".concat(t,", ").concat(o,", ").concat(a,", ").concat(r,", ").concat(n,", ").concat(c));try{let l;if(a){l=d?"".concat(d,"/user/list"):"/user/list";let e=new URLSearchParams;null!=r&&e.append("page",r.toString()),null!=n&&e.append("page_size",n.toString()),l+="?".concat(e.toString())}else l=d?"".concat(d,"/user/info"):"/user/info",("Admin"!==o&&"Admin Viewer"!==o||c)&&t&&(l+="?user_id=".concat(t));console.log("Requesting user data from:",l);let i=await fetch(l,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}let s=await i.json();return console.log("API Response:",s),s}catch(e){throw console.error("Failed to fetch user data:",e),e}},q=async(e,t)=>{try{let o=d?"".concat(d,"/team/info"):"/team/info";t&&(o="".concat(o,"?team_id=").concat(t)),console.log("in teamInfoCall");let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},H=async function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;arguments.length>5&&void 0!==arguments[5]&&arguments[5],arguments.length>6&&void 0!==arguments[6]&&arguments[6],arguments.length>7&&void 0!==arguments[7]&&arguments[7],arguments.length>8&&void 0!==arguments[8]&&arguments[8];try{let n=d?"".concat(d,"/v2/team/list"):"/v2/team/list";console.log("in teamInfoCall");let c=new URLSearchParams;o&&c.append("user_id",o.toString()),t&&c.append("organization_id",t.toString()),a&&c.append("team_id",a.toString()),r&&c.append("team_alias",r.toString());let l=c.toString();l&&(n+="?".concat(l));let i=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}let s=await i.json();return console.log("/v2/team/list API Response:",s),s}catch(e){throw console.error("Failed to create key:",e),e}},W=async function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let n=d?"".concat(d,"/team/list"):"/team/list";console.log("in teamInfoCall");let c=new URLSearchParams;o&&c.append("user_id",o.toString()),t&&c.append("organization_id",t.toString()),a&&c.append("team_id",a.toString()),r&&c.append("team_alias",r.toString());let l=c.toString();l&&(n+="?".concat(l));let i=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}let s=await i.json();return console.log("/team/list API Response:",s),s}catch(e){throw console.error("Failed to create key:",e),e}},Y=async e=>{try{let t=d?"".concat(d,"/team/available"):"/team/available";console.log("in availableTeamListCall");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("/team/available_teams API Response:",a),a}catch(e){throw e}},K=async e=>{try{let t=d?"".concat(d,"/organization/list"):"/organization/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},$=async(e,t)=>{try{let o=d?"".concat(d,"/organization/info"):"/organization/info";t&&(o="".concat(o,"?organization_id=").concat(t)),console.log("in teamInfoCall");let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},Q=async(e,t)=>{try{if(console.log("Form Values in organizationCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw console.error("Failed to parse metadata:",e),Error("Failed to parse metadata: "+e)}}let o=d?"".concat(d,"/organization/new"):"/organization/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},X=async(e,t)=>{try{console.log("Form Values in organizationUpdateCall:",t);let o=d?"".concat(d,"/organization/update"):"/organization/update",a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("Update Team Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},ee=async(e,t)=>{try{let o=d?"".concat(d,"/organization/delete"):"/organization/delete",a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_ids:[t]})});if(!a.ok){let e=await a.text();throw f(e),Error("Error deleting organization: ".concat(e))}return await a.json()}catch(e){throw console.error("Failed to delete organization:",e),e}},et=async(e,t)=>{try{let o=d?"".concat(d,"/utils/transform_request"):"/utils/transform_request",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create key:",e),e}},eo=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;try{let r=d?"".concat(d,"/user/daily/activity"):"/user/daily/activity",n=new URLSearchParams;n.append("start_date",l(t)),n.append("end_date",l(o)),n.append("page_size","1000"),n.append("page",a.toString());let c=n.toString();c&&(r+="?".concat(c));let i=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}return await i.json()}catch(e){throw console.error("Failed to create key:",e),e}},ea=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let n=d?"".concat(d,"/tag/daily/activity"):"/tag/daily/activity",c=new URLSearchParams;c.append("start_date",l(t)),c.append("end_date",l(o)),c.append("page_size","1000"),c.append("page",a.toString()),r&&c.append("tags",r.join(","));let i=c.toString();i&&(n+="?".concat(i));let s=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.json(),t=oE(e);throw f(t),Error(t)}return await s.json()}catch(e){throw console.error("Failed to create key:",e),e}},er=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let n=d?"".concat(d,"/team/daily/activity"):"/team/daily/activity",c=new URLSearchParams;c.append("start_date",l(t)),c.append("end_date",l(o)),c.append("page_size","1000"),c.append("page",a.toString()),r&&c.append("team_ids",r.join(",")),c.append("exclude_team_ids","litellm-dashboard");let i=c.toString();i&&(n+="?".concat(i));let s=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.json(),t=oE(e);throw f(t),Error(t)}return await s.json()}catch(e){throw console.error("Failed to create key:",e),e}},en=async e=>{try{let t=d?"".concat(d,"/global/spend"):"/global/spend",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ec=async e=>{try{let t=d?"".concat(d,"/onboarding/get_token"):"/onboarding/get_token";t+="?invite_link=".concat(e);let o=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},el=async(e,t,o,a)=>{let r=d?"".concat(d,"/onboarding/claim_token"):"/onboarding/claim_token";try{let n=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({invitation_link:t,user_id:o,password:a})});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to delete key:",e),e}},ei=async(e,t,o)=>{try{let a=d?"".concat(d,"/key/").concat(t,"/regenerate"):"/key/".concat(t,"/regenerate"),r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("Regenerate key Response:",n),n}catch(e){throw console.error("Failed to regenerate key:",e),e}},es=!1,ed=null,eu=async(e,t,o)=>{try{console.log("modelInfoCall:",e,t,o);let a=d?"".concat(d,"/v2/model/info"):"/v2/model/info",r=new URLSearchParams;r.append("include_team_models","true"),r.toString()&&(a+="?".concat(r.toString()));let n=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!n.ok){let e=await n.text();throw e+="error shown=".concat(es),es||(e.includes("No model list passed")&&(e="No Models Exist. Click Add Model to get started."),c.Z.info(e),es=!0,ed&&clearTimeout(ed),ed=setTimeout(()=>{es=!1},1e4)),Error("Network response was not ok")}let l=await n.json();return console.log("modelInfoCall:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},ep=async(e,t)=>{try{let o=d?"".concat(d,"/v1/model/info"):"/v1/model/info";o+="?litellm_model_id=".concat(t);let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("modelInfoV1Call:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},eh=async()=>{let e=d?"".concat(d,"/public/model_hub"):"/public/model_hub";return(await fetch(e,{method:"GET",headers:{"Content-Type":"application/json"}})).json()},eg=async e=>{try{let t=d?"".concat(d,"/model_group/info"):"/model_group/info",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("modelHubCall:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},em=async e=>{try{let t=d?"".concat(d,"/get/allowed_ips"):"/get/allowed_ips",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("getAllowedIPs:",a),a.data}catch(e){throw console.error("Failed to get allowed IPs:",e),e}},ef=async(e,t)=>{try{let o=d?"".concat(d,"/add/allowed_ip"):"/add/allowed_ip",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({ip:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("addAllowedIP:",r),r}catch(e){throw console.error("Failed to add allowed IP:",e),e}},ew=async(e,t)=>{try{let o=d?"".concat(d,"/delete/allowed_ip"):"/delete/allowed_ip",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({ip:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("deleteAllowedIP:",r),r}catch(e){throw console.error("Failed to delete allowed IP:",e),e}},ey=async(e,t,o,a,r,n,c,l)=>{try{let t=d?"".concat(d,"/model/metrics"):"/model/metrics";a&&(t="".concat(t,"?_selected_model_group=").concat(a,"&startTime=").concat(r,"&endTime=").concat(n,"&api_key=").concat(c,"&customer=").concat(l));let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ej=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/model/streaming_metrics"):"/model/streaming_metrics";t&&(r="".concat(r,"?_selected_model_group=").concat(t,"&startTime=").concat(o,"&endTime=").concat(a));let n=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}return await n.json()}catch(e){throw console.error("Failed to create key:",e),e}},e_=async(e,t,o,a,r,n,c,l)=>{try{let t=d?"".concat(d,"/model/metrics/slow_responses"):"/model/metrics/slow_responses";a&&(t="".concat(t,"?_selected_model_group=").concat(a,"&startTime=").concat(r,"&endTime=").concat(n,"&api_key=").concat(c,"&customer=").concat(l));let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},eC=async(e,t,o,a,r,n,c,l)=>{try{let t=d?"".concat(d,"/model/metrics/exceptions"):"/model/metrics/exceptions";a&&(t="".concat(t,"?_selected_model_group=").concat(a,"&startTime=").concat(r,"&endTime=").concat(n,"&api_key=").concat(c,"&customer=").concat(l));let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ek=async(e,t)=>{try{let o=d?"".concat(d,"/model_hub/update_useful_links"):"/model_hub/update_useful_links",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({useful_links:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create key:",e),e}},ev=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=(arguments.length>5&&void 0!==arguments[5]&&arguments[5],arguments.length>6&&void 0!==arguments[6]&&arguments[6]);console.log("in /models calls, globalLitellmHeaderName",w);try{let t=d?"".concat(d,"/models"):"/models",o=new URLSearchParams;o.append("include_model_access_groups","True"),!0===a&&o.append("return_wildcard_routes","True"),!0===n&&o.append("only_model_access_groups","True"),r&&o.append("team_id",r.toString()),o.toString()&&(t+="?".concat(o.toString()));let c=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}return await c.json()}catch(e){throw console.error("Failed to create key:",e),e}},eT=async(e,t)=>{try{let o=d?"".concat(d,"/global/spend/logs"):"/global/spend/logs";console.log("in keySpendLogsCall:",o);let a=await fetch("".concat(o,"?api_key=").concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},eE=async e=>{try{let t=d?"".concat(d,"/global/spend/teams"):"/global/spend/teams";console.log("in teamSpendLogsCall:",t);let o=await fetch("".concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eS=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/spend/tags"):"/global/spend/tags";t&&o&&(r="".concat(r,"?start_date=").concat(t,"&end_date=").concat(o)),a&&(r+="".concat(r,"&tags=").concat(a.join(","))),console.log("in tagsSpendLogsCall:",r);let n=await fetch("".concat(r),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to create key:",e),e}},eb=async e=>{try{let t=d?"".concat(d,"/global/spend/all_tag_names"):"/global/spend/all_tag_names";console.log("in global/spend/all_tag_names call",t);let o=await fetch("".concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eF=async e=>{try{let t=d?"".concat(d,"/customer/list"):"/customer/list";console.log("in customer/list",t);let o=await fetch("".concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eP=async(e,t)=>{try{let o=d?"".concat(d,"/user/filter/ui"):"/user/filter/ui";t.get("user_email")&&(o+="?user_email=".concat(t.get("user_email"))),t.get("user_id")&&(o+="?user_id=".concat(t.get("user_id")));let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create key:",e),e}},eO=async(e,t,o,a,r,n)=>{try{console.log("user role in spend logs call: ".concat(o));let t=d?"".concat(d,"/spend/logs"):"/spend/logs";t="App Owner"==o?"".concat(t,"?user_id=").concat(a,"&start_date=").concat(r,"&end_date=").concat(n):"".concat(t,"?start_date=").concat(r,"&end_date=").concat(n);let c=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},eB=async(e,t,o,a,r,n,c,l,i,s,u,p,h)=>{try{let g=d?"".concat(d,"/spend/logs/ui"):"/spend/logs/ui",m=new URLSearchParams;t&&m.append("api_key",t),o&&m.append("team_id",o),a&&m.append("request_id",a),r&&m.append("start_date",r),n&&m.append("end_date",n),c&&m.append("page",c.toString()),l&&m.append("page_size",l.toString()),i&&m.append("user_id",i),s&&m.append("end_user",s),u&&m.append("status_filter",u),p&&m.append("model",p),h&&m.append("key_alias",h);let y=m.toString();y&&(g+="?".concat(y));let j=await fetch(g,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!j.ok){let e=await j.json(),t=oE(e);throw f(t),Error(t)}let _=await j.json();return console.log("Spend Logs Response:",_),_}catch(e){throw console.error("Failed to fetch spend logs:",e),e}},eN=async e=>{try{let t=d?"".concat(d,"/global/spend/logs"):"/global/spend/logs",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},ex=async e=>{try{let t=d?"".concat(d,"/global/spend/keys?limit=5"):"/global/spend/keys?limit=5",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eG=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/spend/end_users"):"/global/spend/end_users",n="";n=t?JSON.stringify({api_key:t,startTime:o,endTime:a}):JSON.stringify({startTime:o,endTime:a});let c={method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:n},l=await fetch(r,c);if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}let i=await l.json();return console.log(i),i}catch(e){throw console.error("Failed to create key:",e),e}},eA=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/spend/provider"):"/global/spend/provider";o&&a&&(r+="?start_date=".concat(o,"&end_date=").concat(a)),t&&(r+="&api_key=".concat(t));let n={method:"GET",headers:{[w]:"Bearer ".concat(e)}},c=await fetch(r,n);if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eJ=async(e,t,o)=>{try{let a=d?"".concat(d,"/global/activity"):"/global/activity";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o));let r={method:"GET",headers:{[w]:"Bearer ".concat(e)}},n=await fetch(a,r);if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eU=async(e,t,o)=>{try{let a=d?"".concat(d,"/global/activity/cache_hits"):"/global/activity/cache_hits";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o));let r={method:"GET",headers:{[w]:"Bearer ".concat(e)}},n=await fetch(a,r);if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eR=async(e,t,o)=>{try{let a=d?"".concat(d,"/global/activity/model"):"/global/activity/model";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o));let r={method:"GET",headers:{[w]:"Bearer ".concat(e)}},n=await fetch(a,r);if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eI=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/activity/exceptions"):"/global/activity/exceptions";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o)),a&&(r+="&model_group=".concat(a));let n={method:"GET",headers:{[w]:"Bearer ".concat(e)}},c=await fetch(r,n);if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eM=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/activity/exceptions/deployment"):"/global/activity/exceptions/deployment";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o)),a&&(r+="&model_group=".concat(a));let n={method:"GET",headers:{[w]:"Bearer ".concat(e)}},c=await fetch(r,n);if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to fetch spend data:",e),e}},ez=async e=>{try{let t=d?"".concat(d,"/global/spend/models?limit=5"):"/global/spend/models?limit=5",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eL=async(e,t)=>{try{let o=d?"".concat(d,"/v2/key/info"):"/v2/key/info",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:t})});if(!a.ok){let e=await a.text();if(e.includes("Invalid proxy server token passed"))throw Error("Invalid proxy server token passed");throw f(e),Error("Network response was not ok")}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},eD=async(e,t,o,a)=>{try{console.log("Sending model connection test request:",JSON.stringify(t));let n=d?"".concat(d,"/health/test_connection"):"/health/test_connection",c=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",[w]:"Bearer ".concat(e)},body:JSON.stringify({litellm_params:t,model_info:o,mode:a})}),l=c.headers.get("content-type");if(!l||!l.includes("application/json")){let e=await c.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(c.status,": ").concat(c.statusText,"). Check network tab for details."))}let i=await c.json();if(!c.ok||"error"===i.status){if("error"===i.status);else{var r;return{status:"error",message:(null===(r=i.error)||void 0===r?void 0:r.message)||"Connection test failed: ".concat(c.status," ").concat(c.statusText)}}}return i}catch(e){throw console.error("Model connection test error:",e),e}},eV=async(e,t)=>{try{console.log("entering keyInfoV1Call");let o=d?"".concat(d,"/key/info"):"/key/info";o="".concat(o,"?key=").concat(t);let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(console.log("response",a),!a.ok){let e=await a.text();f(e),c.Z.fromBackend("Failed to fetch key info - "+e)}let r=await a.json();return console.log("data",r),r}catch(e){throw console.error("Failed to fetch key info:",e),e}},eZ=async function(e,t,o,a,r,n,c,l){let i=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,s=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null;try{let u=d?"".concat(d,"/key/list"):"/key/list";console.log("in keyListCall");let p=new URLSearchParams;o&&p.append("team_id",o.toString()),t&&p.append("organization_id",t.toString()),a&&p.append("key_alias",a),n&&p.append("key_hash",n),r&&p.append("user_id",r.toString()),c&&p.append("page",c.toString()),l&&p.append("size",l.toString()),i&&p.append("sort_by",i),s&&p.append("sort_order",s),p.append("return_full_object","true"),p.append("include_team_keys","true"),p.append("include_created_by_keys","true");let h=p.toString();h&&(u+="?".concat(h));let g=await fetch(u,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!g.ok){let e=await g.json(),t=oE(e);throw f(t),Error(t)}let m=await g.json();return console.log("/team/list API Response:",m),m}catch(e){throw console.error("Failed to create key:",e),e}},eq=async e=>{try{let t=d?"".concat(d,"/key/aliases"):"/key/aliases";console.log("in keyAliasesCall");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("/key/aliases API Response:",a),a}catch(e){throw console.error("Failed to fetch key aliases:",e),e}},eH=async(e,t)=>{try{let o=d?"".concat(d,"/spend/users"):"/spend/users";console.log("in spendUsersCall:",o);let a=await fetch("".concat(o,"?user_id=").concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to get spend for user",e),e}},eW=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/user/request_model"):"/user/request_model",n=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({models:[t],user_id:o,justification:a})});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to create key:",e),e}},eY=async e=>{try{let t=d?"".concat(d,"/user/get_requests"):"/user/get_requests";console.log("in userGetRequesedtModelsCall:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to get requested models:",e),e}},eK=async(e,t,o)=>{try{let a=d?"".concat(d,"/user/daily/activity/aggregated"):"/user/daily/activity/aggregated",r=new URLSearchParams,n=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)};r.append("start_date",n(t)),r.append("end_date",n(o));let c=r.toString();c&&(a+="?".concat(c));let l=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch aggregated user daily activity:",e),e}},e$=async(e,t)=>{try{let o=d?"".concat(d,"/user/get_users?role=").concat(t):"/user/get_users?role=".concat(t);console.log("in userGetAllUsersCall:",o);let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to get requested models:",e),e}},eQ=async e=>{try{let t=d?"".concat(d,"/user/available_roles"):"/user/available_roles",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("response from user/available_role",a),a}catch(e){throw e}},eX=async(e,t)=>{try{if(console.log("Form Values in teamCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let o=d?"".concat(d,"/team/new"):"/team/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},e0=async(e,t)=>{try{if(console.log("Form Values in credentialCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let o=d?"".concat(d,"/credentials"):"/credentials",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},e1=async e=>{try{let t=d?"".concat(d,"/credentials"):"/credentials";console.log("in credentialListCall");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("/credentials API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},e2=async(e,t,o)=>{try{let a=d?"".concat(d,"/credentials"):"/credentials";t?a+="/by_name/".concat(t):o&&(a+="/by_model/".concat(o)),console.log("in credentialListCall");let r=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("/credentials API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},e4=async(e,t)=>{try{let o=d?"".concat(d,"/credentials/").concat(t):"/credentials/".concat(t);console.log("in credentialDeleteCall:",t);let a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to delete key:",e),e}},e3=async(e,t,o)=>{try{if(console.log("Form Values in credentialUpdateCall:",o),o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let a=d?"".concat(d,"/credentials/").concat(t):"/credentials/".concat(t),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},e5=async(e,t)=>{try{if(console.log("Form Values in keyUpdateCall:",t),t.model_tpm_limit){console.log("formValues.model_tpm_limit:",t.model_tpm_limit);try{t.model_tpm_limit=JSON.parse(t.model_tpm_limit)}catch(e){throw Error("Failed to parse model_tpm_limit: "+e)}}if(t.model_rpm_limit){console.log("formValues.model_rpm_limit:",t.model_rpm_limit);try{t.model_rpm_limit=JSON.parse(t.model_rpm_limit)}catch(e){throw Error("Failed to parse model_rpm_limit: "+e)}}let o=d?"".concat(d,"/key/update"):"/key/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let r=await a.json();return console.log("Update key Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},e6=async(e,t)=>{try{console.log("Form Values in teamUpateCall:",t);let o=d?"".concat(d,"/team/update"):"/team/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error response from the server:",e),c.Z.fromBackend("Failed to update team settings: "+e),Error(e)}let r=await a.json();return console.log("Update Team Response:",r),r}catch(e){throw console.error("Failed to update team:",e),e}},e9=async(e,t,o)=>{try{console.log("Form Values in modelUpateCall:",t);let a=d?"".concat(d,"/model/").concat(o,"/update"):"/model/".concat(o,"/update"),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error update from the server:",e),Error("Network response was not ok")}let n=await r.json();return console.log("Update model Response:",n),n}catch(e){throw console.error("Failed to update model:",e),e}},e7=async(e,t)=>{try{console.log("Form Values in modelUpateCall:",t);let o=d?"".concat(d,"/model/update"):"/model/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error update from the server:",e),Error("Network response was not ok")}let r=await a.json();return console.log("Update model Response:",r),r}catch(e){throw console.error("Failed to update model:",e),e}},e8=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let r=d?"".concat(d,"/team/member_add"):"/team/member_add",n=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,member:o})});if(!n.ok){var a;let e=await n.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(a=t.detail)||void 0===a?void 0:a.error)||"Failed to add team member",r=Error(o);throw r.raw=t,r}let c=await n.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},te=async(e,t,o,a,r)=>{try{console.log("Bulk add team members:",{teamId:t,members:o,maxBudgetInTeam:a});let c=d?"".concat(d,"/team/bulk_member_add"):"/team/bulk_member_add",l={team_id:t};r?l.all_users=!0:l.members=o,null!=a&&(l.max_budget_in_team=a);let i=await fetch(c,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(l)});if(!i.ok){var n;let e=await i.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(n=t.detail)||void 0===n?void 0:n.error)||"Failed to bulk add team members",a=Error(o);throw a.raw=t,a}let s=await i.json();return console.log("Bulk team member add API Response:",s),s}catch(e){throw console.error("Failed to bulk add team members:",e),e}},tt=async(e,t,o)=>{try{console.log("Form Values in teamMemberUpdateCall:",o),console.log("Budget value:",o.max_budget_in_team),console.log("TPM limit:",o.tpm_limit),console.log("RPM limit:",o.rpm_limit);let r=d?"".concat(d,"/team/member_update"):"/team/member_update",n={team_id:t,role:o.role,user_id:o.user_id};void 0!==o.user_email&&(n.user_email=o.user_email),void 0!==o.max_budget_in_team&&null!==o.max_budget_in_team&&(n.max_budget_in_team=o.max_budget_in_team),void 0!==o.tpm_limit&&null!==o.tpm_limit&&(n.tpm_limit=o.tpm_limit),void 0!==o.rpm_limit&&null!==o.rpm_limit&&(n.rpm_limit=o.rpm_limit),console.log("Final request body:",n);let c=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(n)});if(!c.ok){var a;let e=await c.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(a=t.detail)||void 0===a?void 0:a.error)||"Failed to add team member",r=Error(o);throw r.raw=t,r}let l=await c.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to update team member:",e),e}},to=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let a=d?"".concat(d,"/team/member_delete"):"/team/member_delete",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,...void 0!==o.user_email&&{user_email:o.user_email},...void 0!==o.user_id&&{user_id:o.user_id}})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},ta=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let a=d?"".concat(d,"/organization/member_add"):"/organization/member_add",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,member:o})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create organization member:",e),e}},tr=async(e,t,o)=>{try{console.log("Form Values in organizationMemberDeleteCall:",o);let a=d?"".concat(d,"/organization/member_delete"):"/organization/member_delete",r=await fetch(a,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,user_id:o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to delete organization member:",e),e}},tn=async(e,t,o)=>{try{console.log("Form Values in organizationMemberUpdateCall:",o);let a=d?"".concat(d,"/organization/member_update"):"/organization/member_update",r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,...o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to update organization member:",e),e}},tc=async(e,t,o)=>{try{console.log("Form Values in userUpdateUserCall:",t);let a=d?"".concat(d,"/user/update"):"/user/update",r={...t};null!==o&&(r.user_role=o),r=JSON.stringify(r);let n=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:r});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},tl=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];try{let r;console.log("Form Values in userUpdateUserCall:",t);let n=d?"".concat(d,"/user/bulk_update"):"/user/bulk_update";if(a)r=JSON.stringify({all_users:!0,user_updates:t});else if(o&&o.length>0){let e=[];for(let a of o)e.push({user_id:a,...t});r=JSON.stringify({users:e})}else throw Error("Must provide either userIds or set allUsers=true");let c=await fetch(n,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:r});if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},ti=async(e,t)=>{try{let o=d?"".concat(d,"/global/predict/spend/logs"):"/global/predict/spend/logs",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({data:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},ts=async e=>{try{let t=d?"".concat(d,"/health/services?service=slack_budget_alerts"):"/health/services?service=slack_budget_alerts";console.log("Checking Slack Budget Alerts service health");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error(e)}let a=await o.json();return c.Z.success("Test Slack Alert worked - check your Slack!"),console.log("Service Health Response:",a),a}catch(e){throw console.error("Failed to perform health check:",e),e}},td=async(e,t)=>{try{let o=d?"".concat(d,"/health/services?service=").concat(t):"/health/services?service=".concat(t);console.log("Checking Slack Budget Alerts service health");let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw f(e),Error(e)}return await a.json()}catch(e){throw console.error("Failed to perform health check:",e),e}},tu=async e=>{try{let t=d?"".concat(d,"/budget/list"):"/budget/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tp=async e=>{try{let t=d?"".concat(d,"/budget/settings"):"/budget/settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},th=async(e,t,o)=>{try{let t=d?"".concat(d,"/get/config/callbacks"):"/get/config/callbacks",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tg=async e=>{try{let t=d?"".concat(d,"/config/list?config_type=general_settings"):"/config/list?config_type=general_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tm=async e=>{try{let t=d?"".concat(d,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tf=async(e,t)=>{try{let o=d?"".concat(d,"/config/field/info?field_name=").concat(t):"/config/field/info?field_name=".concat(t),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},tw=async(e,t,o)=>{try{let a=d?"".concat(d,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,field_value:o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return c.Z.success("Successfully updated value!"),n}catch(e){throw console.error("Failed to set callbacks:",e),e}},ty=async(e,t)=>{try{let o=d?"".concat(d,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},tj=async(e,t,o)=>{try{let a=d?"".concat(d,"/config/field/update"):"/config/field/update",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,field_value:o,config_type:"general_settings"})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return c.Z.success("Successfully updated value!"),n}catch(e){throw console.error("Failed to set callbacks:",e),e}},t_=async(e,t)=>{try{let o=d?"".concat(d,"/config/field/delete"):"/config/field/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,config_type:"general_settings"})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return c.Z.success("Field reset on proxy"),r}catch(e){throw console.error("Failed to get callbacks:",e),e}},tC=async(e,t)=>{try{let o=d?"".concat(d,"/config/pass_through_endpoint?endpoint_id=").concat(t):"/config/pass_through_endpoint?endpoint_id=".concat(t),a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tk=async(e,t)=>{try{let o=d?"".concat(d,"/config/update"):"/config/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},tv=async e=>{try{let t=d?"".concat(d,"/health"):"/health",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to call /health:",e),e}},tT=async(e,t)=>{try{let o=d?"".concat(d,"/health?model=").concat(encodeURIComponent(t)):"/health?model=".concat(encodeURIComponent(t)),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to call /health for model ".concat(t,":"),e),e}},tE=async e=>{try{let t=d?"".concat(d,"/cache/ping"):"/cache/ping",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error(e)}return await o.json()}catch(e){throw console.error("Failed to call /cache/ping:",e),e}},tS=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:100,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;try{let n=d?"".concat(d,"/health/history"):"/health/history",c=new URLSearchParams;t&&c.append("model",t),o&&c.append("status_filter",o),c.append("limit",a.toString()),c.append("offset",r.toString()),c.toString()&&(n+="?".concat(c.toString()));let l=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw f(e),Error(e)}return await l.json()}catch(e){throw console.error("Failed to call /health/history:",e),e}},tb=async e=>{try{let t=d?"".concat(d,"/health/latest"):"/health/latest",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error(e)}return await o.json()}catch(e){throw console.error("Failed to call /health/latest:",e),e}},tF=async e=>{try{console.log("Getting proxy UI settings"),console.log("proxyBaseUrl in getProxyUISettings:",d);let t=d?"".concat(d,"/sso/get/ui_settings"):"/sso/get/ui_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tP=async e=>{try{let t=d?"".concat(d,"/v2/guardrails/list"):"/v2/guardrails/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get guardrails list:",e),e}},tO=async e=>{try{let t=d?"".concat(d,"/prompts/list"):"/prompts/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get prompts list:",e),e}},tB=async(e,t)=>{try{let o=d?"".concat(d,"/prompts/").concat(t,"/info"):"/prompts/".concat(t,"/info"),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to get prompt info:",e),e}},tN=async(e,t)=>{try{let o=d?"".concat(d,"/prompts"):"/prompts",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create prompt:",e),e}},tx=async(e,t,o)=>{try{let a=d?"".concat(d,"/prompts/").concat(t):"/prompts/".concat(t),r=await fetch(a,{method:"PUT",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}return await r.json()}catch(e){throw console.error("Failed to update prompt:",e),e}},tG=async(e,t)=>{try{let o=d?"".concat(d,"/prompts/").concat(t):"/prompts/".concat(t),a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to delete prompt:",e),e}},tA=async(e,t)=>{try{let o=new FormData;o.append("file",t);let a=d?"".concat(d,"/utils/dotprompt_json_converter"):"/utils/dotprompt_json_converter",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e)},body:o});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}return await r.json()}catch(e){throw console.error("Failed to convert prompt file:",e),e}},tJ=async(e,t,o)=>{try{let a=d?"".concat(d,"/prompts/").concat(t):"/prompts/".concat(t),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}return await r.json()}catch(e){throw console.error("Failed to patch prompt:",e),e}},tU=async(e,t)=>{try{let o=d?"".concat(d,"/guardrails"):"/guardrails",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({guardrail:t})});if(!a.ok){let e=await a.text();throw f(e),Error(e)}let r=await a.json();return console.log("Create guardrail response:",r),r}catch(e){throw console.error("Failed to create guardrail:",e),e}},tR=async(e,t,o)=>{try{let a=d?"".concat(d,"/spend/logs/ui/").concat(t,"?start_date=").concat(encodeURIComponent(o)):"/spend/logs/ui/".concat(t,"?start_date=").concat(encodeURIComponent(o));console.log("Fetching log details from:",a);let r=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("Fetched log details:",n),n}catch(e){throw console.error("Failed to fetch log details:",e),e}},tI=async e=>{try{let t=d?"".concat(d,"/get/internal_user_settings"):"/get/internal_user_settings";console.log("Fetching SSO settings from:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched SSO settings:",a),a}catch(e){throw console.error("Failed to fetch SSO settings:",e),e}},tM=async(e,t)=>{try{let o=d?"".concat(d,"/update/internal_user_settings"):"/update/internal_user_settings";console.log("Updating internal user settings:",t);let a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();throw f(e),Error(e)}let r=await a.json();return console.log("Updated internal user settings:",r),c.Z.success("Internal user settings updated successfully"),r}catch(e){throw console.error("Failed to update internal user settings:",e),e}},tz=async e=>{try{let t=d?"".concat(d,"/v1/mcp/server"):"/v1/mcp/server";console.log("Fetching MCP servers from:",t);let o=await fetch(t,{method:h.GET,headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched MCP servers:",a),a}catch(e){throw console.error("Failed to fetch MCP servers:",e),e}},tL=async e=>{try{let t=d?"".concat(d,"/v1/mcp/access_groups"):"/v1/mcp/access_groups";console.log("Fetching MCP access groups from:",t);let o=await fetch(t,{method:h.GET,headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched MCP access groups:",a),a.access_groups||[]}catch(e){throw console.error("Failed to fetch MCP access groups:",e),e}},tD=async(e,t)=>{try{console.log("Form Values in createMCPServer:",t);let o=d?"".concat(d,"/v1/mcp/server"):"/v1/mcp/server",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},tV=async(e,t)=>{try{let o=d?"".concat(d,"/v1/mcp/server"):"/v1/mcp/server",a=await fetch(o,{method:"PUT",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to update MCP server:",e),e}},tZ=async(e,t)=>{try{let o=(d?"".concat(d):"")+"/v1/mcp/server/".concat(t);console.log("in deleteMCPServer:",t);let a=await fetch(o,{method:h.DELETE,headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}}catch(e){throw console.error("Failed to delete key:",e),e}},tq=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/mcp-rest/tools/list?server_id=").concat(t):"/mcp-rest/tools/list?server_id=".concat(t);console.log("Fetching MCP tools from:",r);let n={[w]:"Bearer ".concat(e),"Content-Type":"application/json"};a&&o?n["x-mcp-".concat(a,"-authorization")]=o:o&&(n[y]=o);let c=await fetch(r,{method:"GET",headers:n}),l=await c.json();if(console.log("Fetched MCP tools response:",l),!c.ok){if(l.error&&l.message)throw Error(l.message);throw Error("Failed to fetch MCP tools")}return l}catch(e){return console.error("Failed to fetch MCP tools:",e),{tools:[],error:"network_error",message:e instanceof Error?e.message:"Failed to fetch MCP tools"}}},tH=async(e,t,o,a,r)=>{try{let n=d?"".concat(d,"/mcp-rest/tools/call"):"/mcp-rest/tools/call";console.log("Calling MCP tool:",t,"with arguments:",o);let c={[w]:"Bearer ".concat(e),"Content-Type":"application/json"};r?c["x-mcp-".concat(r,"-authorization")]=a:c[y]=a;let l=await fetch(n,{method:"POST",headers:c,body:JSON.stringify({name:t,arguments:o})});if(!l.ok){let e="Network response was not ok",t=null,o=await l.text();try{let a=JSON.parse(o);a.detail?"string"==typeof a.detail?e=a.detail:"object"==typeof a.detail&&(e=a.detail.message||a.detail.error||"An error occurred",t=a.detail):e=a.message||a.error||e}catch(t){console.error("Failed to parse JSON error response:",t),o&&(e=o)}let a=Error(e);throw a.status=l.status,a.statusText=l.statusText,a.details=t,f(e),a}let i=await l.json();return console.log("MCP tool call response:",i),i}catch(e){throw console.error("Failed to call MCP tool:",e),console.error("Error type:",typeof e),e instanceof Error&&(console.error("Error message:",e.message),console.error("Error stack:",e.stack)),e}},tW=async(e,t)=>{try{let o=d?"".concat(d,"/tag/new"):"/tag/new",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();await f(e);return}return await a.json()}catch(e){throw console.error("Error creating tag:",e),e}},tY=async(e,t)=>{try{let o=d?"".concat(d,"/tag/update"):"/tag/update",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();await f(e);return}return await a.json()}catch(e){throw console.error("Error updating tag:",e),e}},tK=async(e,t)=>{try{let o=d?"".concat(d,"/tag/info"):"/tag/info",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({names:t})});if(!a.ok){let e=await a.text();return await f(e),{}}return await a.json()}catch(e){throw console.error("Error getting tag info:",e),e}},t$=async e=>{try{let t=d?"".concat(d,"/tag/list"):"/tag/list",o=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e)}});if(!o.ok){let e=await o.text();return await f(e),{}}return await o.json()}catch(e){throw console.error("Error listing tags:",e),e}},tQ=async(e,t)=>{try{let o=d?"".concat(d,"/tag/delete"):"/tag/delete",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({name:t})});if(!a.ok){let e=await a.text();await f(e);return}return await a.json()}catch(e){throw console.error("Error deleting tag:",e),e}},tX=async e=>{try{let t=d?"".concat(d,"/get/default_team_settings"):"/get/default_team_settings";console.log("Fetching default team settings from:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched default team settings:",a),a}catch(e){throw console.error("Failed to fetch default team settings:",e),e}},t0=async(e,t)=>{try{let o=d?"".concat(d,"/update/default_team_settings"):"/update/default_team_settings";console.log("Updating default team settings:",t);let a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("Updated default team settings:",r),c.Z.success("Default team settings updated successfully"),r}catch(e){throw console.error("Failed to update default team settings:",e),e}},t1=async(e,t)=>{try{let o=d?"".concat(d,"/team/permissions_list?team_id=").concat(t):"/team/permissions_list?team_id=".concat(t),a=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("Team permissions response:",r),r}catch(e){throw console.error("Failed to get team permissions:",e),e}},t2=async(e,t,o)=>{try{let a=d?"".concat(d,"/team/permissions_update"):"/team/permissions_update",r=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({team_id:t,team_member_permissions:o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("Team permissions response:",n),n}catch(e){throw console.error("Failed to update team permissions:",e),e}},t4=async(e,t)=>{try{let o=d?"".concat(d,"/spend/logs/session/ui?session_id=").concat(encodeURIComponent(t)):"/spend/logs/session/ui?session_id=".concat(encodeURIComponent(t)),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to fetch session logs:",e),e}},t3=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/new"):"/vector_store/new",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to create vector store")}return await a.json()}catch(e){throw console.error("Error creating vector store:",e),e}},t5=async function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1],arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let t=d?"".concat(d,"/vector_store/list"):"/vector_store/list",o=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}});if(!o.ok){let e=await o.json();throw Error(e.detail||"Failed to list vector stores")}return await o.json()}catch(e){throw console.error("Error listing vector stores:",e),e}},t6=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/delete"):"/vector_store/delete",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({vector_store_id:t})});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to delete vector store")}return await a.json()}catch(e){throw console.error("Error deleting vector store:",e),e}},t9=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/info"):"/vector_store/info",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({vector_store_id:t})});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to get vector store info")}return await a.json()}catch(e){throw console.error("Error getting vector store info:",e),e}},t7=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/update"):"/vector_store/update",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to update vector store")}return await a.json()}catch(e){throw console.error("Error updating vector store:",e),e}},t8=async e=>{try{let t=d?"".concat(d,"/email/event_settings"):"/email/event_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to get email event settings")}let a=await o.json();return console.log("Email event settings response:",a),a}catch(e){throw console.error("Failed to get email event settings:",e),e}},oe=async(e,t)=>{try{let o=d?"".concat(d,"/email/event_settings"):"/email/event_settings",a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();throw f(e),Error("Failed to update email event settings")}let r=await a.json();return console.log("Update email event settings response:",r),r}catch(e){throw console.error("Failed to update email event settings:",e),e}},ot=async e=>{try{let t=d?"".concat(d,"/email/event_settings/reset"):"/email/event_settings/reset",o=await fetch(t,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to reset email event settings")}let a=await o.json();return console.log("Reset email event settings response:",a),a}catch(e){throw console.error("Failed to reset email event settings:",e),e}},oo=async(e,t)=>{try{let o=d?"".concat(d,"/guardrails/").concat(t):"/guardrails/".concat(t),a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw f(e),Error(e)}let r=await a.json();return console.log("Delete guardrail response:",r),r}catch(e){throw console.error("Failed to delete guardrail:",e),e}},oa=async e=>{try{let t=d?"".concat(d,"/guardrails/ui/add_guardrail_settings"):"/guardrails/ui/add_guardrail_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to get guardrail UI settings")}let a=await o.json();return console.log("Guardrail UI settings response:",a),a}catch(e){throw console.error("Failed to get guardrail UI settings:",e),e}},or=async e=>{try{let t=d?"".concat(d,"/guardrails/ui/provider_specific_params"):"/guardrails/ui/provider_specific_params",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to get guardrail provider specific parameters")}let a=await o.json();return console.log("Guardrail provider specific params response:",a),a}catch(e){throw console.error("Failed to get guardrail provider specific parameters:",e),e}},on=async(e,t)=>{try{let o=d?"".concat(d,"/guardrails/").concat(t,"/info"):"/guardrails/".concat(t,"/info"),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw f(e),Error("Failed to get guardrail info")}let r=await a.json();return console.log("Guardrail info response:",r),r}catch(e){throw console.error("Failed to get guardrail info:",e),e}},oc=async(e,t,o)=>{try{let a=d?"".concat(d,"/guardrails/").concat(t):"/guardrails/".concat(t),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.text();throw f(e),Error("Failed to update guardrail")}let n=await r.json();return console.log("Update guardrail response:",n),n}catch(e){throw console.error("Failed to update guardrail:",e),e}},ol=async e=>{try{let t=d?"".concat(d,"/get/sso_settings"):"/get/sso_settings";console.log("Fetching SSO configuration from:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched SSO configuration:",a),a}catch(e){throw console.error("Failed to fetch SSO configuration:",e),e}},oi=async(e,t)=>{try{let o=d?"".concat(d,"/update/sso_settings"):"/update/sso_settings";console.log("Updating SSO configuration:",t);let a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("Updated SSO configuration:",r),r}catch(e){throw console.error("Failed to update SSO configuration:",e),e}},os=async(e,t,o,a,r)=>{try{let t=d?"".concat(d,"/audit"):"/audit",o=new URLSearchParams;a&&o.append("page",a.toString()),r&&o.append("page_size",r.toString());let n=o.toString();n&&(t+="?".concat(n));let c=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}return await c.json()}catch(e){throw console.error("Failed to fetch audit logs:",e),e}},od=async e=>{try{let t=d?"".concat(d,"/user/available_users"):"/user/available_users",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e)}});if(!o.ok){if(404===o.status)return null;let e=await o.text();throw f(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to fetch remaining users:",e),e}},ou=async(e,t,o)=>{try{let a=d?"".concat(d,"/config/pass_through_endpoint/").concat(encodeURIComponent(t)):"/config/pass_through_endpoint/".concat(encodeURIComponent(t)),r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return c.Z.success("Pass through endpoint updated successfully"),n}catch(e){throw console.error("Failed to update pass through endpoint:",e),e}},op=async(e,t)=>{try{let o=d?"".concat(d,"/config/pass_through_endpoint?endpoint_id=").concat(encodeURIComponent(t)):"/config/pass_through_endpoint?endpoint_id=".concat(encodeURIComponent(t)),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=(await a.json()).endpoints;if(!r||0===r.length)throw Error("Pass through endpoint not found");return r[0]}catch(e){throw console.error("Failed to get pass through endpoint info:",e),e}},oh=async(e,t)=>{try{let o=d?"".concat(d,"/config/callback/delete"):"/config/callback/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({callback_name:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to delete specific callback:",e),e}},og=async e=>{let t=p(),o=await fetch("".concat(t,"/v1/mcp/tools"),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw Error("HTTP error! status: ".concat(o.status));return await o.json()},om=async(e,t)=>{try{console.log("Testing MCP connection with config:",JSON.stringify(t));let a=d?"".concat(d,"/mcp-rest/test/connection"):"/mcp-rest/test/connection",r=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",[w]:"Bearer ".concat(e)},body:JSON.stringify(t)}),n=r.headers.get("content-type");if(!n||!n.includes("application/json")){let e=await r.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(r.status,": ").concat(r.statusText,"). Check network tab for details."))}let c=await r.json();if(!r.ok||"error"===c.status){if("error"===c.status);else{var o;return{status:"error",message:(null===(o=c.error)||void 0===o?void 0:o.message)||"MCP connection test failed: ".concat(r.status," ").concat(r.statusText)}}}return c}catch(e){throw console.error("MCP connection test error:",e),e}},of=async(e,t)=>{try{console.log("Testing MCP tools list with config:",JSON.stringify(t));let o=d?"".concat(d,"/mcp-rest/test/tools/list"):"/mcp-rest/test/tools/list",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",[w]:"Bearer ".concat(e)},body:JSON.stringify(t)}),r=a.headers.get("content-type");if(!r||!r.includes("application/json")){let e=await a.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(a.status,": ").concat(a.statusText,"). Check network tab for details."))}let n=await a.json();if((!a.ok||n.error)&&!n.error)return{tools:[],error:"request_failed",message:n.message||"MCP tools list failed: ".concat(a.status," ").concat(a.statusText)};return n}catch(e){throw console.error("MCP tools list test error:",e),e}},ow=async(e,t,o)=>{try{let a="".concat(p(),"/v1/vector_stores/").concat(t,"/search"),r=await fetch(a,{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({query:o})});if(!r.ok){let e=await r.text();return await f(e),null}return await r.json()}catch(e){throw console.error("Error testing vector store search:",e),e}},oy=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:50,n=arguments.length>5?arguments[5]:void 0;try{let c=d?"".concat(d,"/tag/user-agent/analytics"):"/tag/user-agent/analytics",l=new URLSearchParams,i=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)};l.append("start_date",i(t)),l.append("end_date",i(o)),l.append("page",a.toString()),l.append("page_size",r.toString()),n&&l.append("user_agent_filter",n);let s=l.toString();s&&(c+="?".concat(s));let u=await fetch(c,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!u.ok){let e=await u.json(),t=oE(e);throw f(t),Error(t)}return await u.json()}catch(e){throw console.error("Failed to fetch user agent analytics:",e),e}},oj=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/dau"):"/tag/dau",n=new URLSearchParams;n.append("end_date",(e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)})(t)),a&&a.length>0?a.forEach(e=>{n.append("tag_filters",e)}):o&&n.append("tag_filter",o);let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch DAU:",e),e}},o_=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/wau"):"/tag/wau",n=new URLSearchParams;n.append("end_date",(e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)})(t)),a&&a.length>0?a.forEach(e=>{n.append("tag_filters",e)}):o&&n.append("tag_filter",o);let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch WAU:",e),e}},oC=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/mau"):"/tag/mau",n=new URLSearchParams;n.append("end_date",(e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)})(t)),a&&a.length>0?a.forEach(e=>{n.append("tag_filters",e)}):o&&n.append("tag_filter",o);let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch MAU:",e),e}},ok=async e=>{try{let t=d?"".concat(d,"/tag/distinct"):"/tag/distinct",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to fetch distinct tags:",e),e}},ov=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/summary"):"/tag/summary",n=new URLSearchParams,c=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)};n.append("start_date",c(t)),n.append("end_date",c(o)),a&&a.length>0&&a.forEach(e=>{n.append("tag_filters",e)});let l=n.toString();l&&(r+="?".concat(l));let i=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}return await i.json()}catch(e){throw console.error("Failed to fetch user agent summary:",e),e}},oT=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:50,a=arguments.length>3?arguments[3]:void 0;try{let r=d?"".concat(d,"/tag/user-agent/per-user-analytics"):"/tag/user-agent/per-user-analytics",n=new URLSearchParams;n.append("page",t.toString()),n.append("page_size",o.toString()),a&&a.length>0&&a.forEach(e=>{n.append("tag_filters",e)});let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch per-user analytics:",e),e}},oE=e=>(null==e?void 0:e.error)&&(e.error.message||e.error)||(null==e?void 0:e.message)||(null==e?void 0:e.detail)||(null==e?void 0:e.error)||JSON.stringify(e)},85968:function(e,t,o){o.d(t,{O:function(){return a}});let a=e=>{if(!e)return"An unknown error occurred";if("string"==typeof e)return e;if(e.message)try{let t=JSON.parse(e.message);if(t.error&&t.error.message)return t.error.message;return"string"==typeof t?t:JSON.stringify(t,null,2)}catch(t){return e.message}if(e.response&&e.response.data){if("string"==typeof e.response.data)return e.response.data;if(e.response.data.message)return e.response.data.message;if(e.response.data.error)return"string"==typeof e.response.data.error?e.response.data.error:e.response.data.error.message||JSON.stringify(e.response.data.error)}return String(e)}},3914:function(e,t,o){function a(){let e=window.location.hostname,t=["Lax","Strict","None"];["/","/ui"].forEach(o=>{document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,";"),document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,"; domain=").concat(e,";"),t.forEach(t=>{let a="None"===t?" Secure;":"";document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,"; SameSite=").concat(t,";").concat(a),document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,"; domain=").concat(e,"; SameSite=").concat(t,";").concat(a)})}),console.log("After clearing cookies:",document.cookie)}function r(e){let t=document.cookie.split("; ").find(t=>t.startsWith(e+"="));return t?t.split("=")[1]:null}o.d(t,{b:function(){return a},e:function(){return r}})}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/49-b6f167418ea8dbf4.js b/litellm/proxy/_experimental/out/_next/static/chunks/49-b6f167418ea8dbf4.js deleted file mode 100644 index 87f875d9ac4..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/49-b6f167418ea8dbf4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[49],{49169:function(e,t,o){o.d(t,{o:function(){return a.Z}});var a=o(49566)},63610:function(e,t,o){o.d(t,{d:function(){return h}});var a=o(57437),r=o(2265),n=o(64482),c=o(52787),l=o(20577),i=o(13634),s=o(49169),d=o(15424),u=o(89970),p=o(19250);let h=["metadata","config","enforced_params","aliases"],g=(e,t)=>h.includes(e)||"json"===t.format,m=e=>{if(!e)return!0;try{return JSON.parse(e),!0}catch(e){return!1}},f=(e,t,o)=>{let a={max_budget:"Enter maximum budget in USD (e.g., 100.50)",budget_duration:"Select a time period for budget reset",tpm_limit:"Enter maximum tokens per minute (whole number)",rpm_limit:"Enter maximum requests per minute (whole number)",duration:"Enter duration (e.g., 30s, 24h, 7d)",metadata:'Enter JSON object with key-value pairs\nExample: {"team": "research", "project": "nlp"}',config:'Enter configuration as JSON object\nExample: {"setting": "value"}',permissions:"Enter comma-separated permission strings",enforced_params:'Enter parameters as JSON object\nExample: {"param": "value"}',blocked:"Enter true/false or specific block conditions",aliases:'Enter aliases as JSON object\nExample: {"alias1": "value1", "alias2": "value2"}',models:"Select one or more model names",key_alias:"Enter a unique identifier for this key",tags:"Enter comma-separated tag strings"}[e]||({string:"Text input",number:"Numeric input",integer:"Whole number input",boolean:"True/False value"})[o]||"Text input";return g(e,t)?"".concat(a,"\nMust be valid JSON format"):t.enum?"Select from available options\nAllowed values: ".concat(t.enum.join(", ")):a};t.Z=e=>{let{schemaComponent:t,excludedFields:o=[],form:h,overrideLabels:w={},overrideTooltips:y={},customValidation:j={},defaultValues:_={}}=e,[C,k]=(0,r.useState)(null),[v,T]=(0,r.useState)(null);(0,r.useEffect)(()=>{(async()=>{try{let e=(await (0,p.getOpenAPISchema)()).components.schemas[t];if(!e)throw Error('Schema component "'.concat(t,'" not found'));k(e);let a={};Object.keys(e.properties).filter(e=>!o.includes(e)&&void 0!==_[e]).forEach(e=>{a[e]=_[e]}),h.setFieldsValue(a)}catch(e){console.error("Schema fetch error:",e),T(e instanceof Error?e.message:"Failed to fetch schema")}})()},[t,h,o]);let E=e=>{if(e.type)return e.type;if(e.anyOf){let t=e.anyOf.map(e=>e.type);if(t.includes("number")||t.includes("integer"))return"number";t.includes("string")}return"string"},S=(e,t)=>{var o;let r;let p=E(t),h=null==C?void 0:null===(o=C.required)||void 0===o?void 0:o.includes(e),k=w[e]||t.title||e,v=y[e]||t.description,T=[];h&&T.push({required:!0,message:"".concat(k," is required")}),j[e]&&T.push({validator:j[e]}),g(e,t)&&T.push({validator:async(e,t)=>{if(t&&!m(t))throw Error("Please enter valid JSON")}});let S=v?(0,a.jsxs)("span",{children:[k," ",(0,a.jsx)(u.Z,{title:v,children:(0,a.jsx)(d.Z,{style:{marginLeft:"4px"}})})]}):k;return r=g(e,t)?(0,a.jsx)(n.default.TextArea,{rows:4,placeholder:"Enter as JSON",className:"font-mono"}):t.enum?(0,a.jsx)(c.default,{children:t.enum.map(e=>(0,a.jsx)(c.default.Option,{value:e,children:e},e))}):"number"===p||"integer"===p?(0,a.jsx)(l.Z,{style:{width:"100%"},precision:"integer"===p?0:void 0}):"duration"===e?(0,a.jsx)(s.o,{placeholder:"eg: 30s, 30h, 30d"}):(0,a.jsx)(s.o,{placeholder:v||""}),(0,a.jsx)(i.Z.Item,{label:S,name:e,className:"mt-8",rules:T,initialValue:_[e],help:(0,a.jsx)("div",{className:"text-xs text-gray-500",children:f(e,t,p)}),children:r},e)};return v?(0,a.jsxs)("div",{className:"text-red-500",children:["Error: ",v]}):(null==C?void 0:C.properties)?(0,a.jsx)("div",{children:Object.entries(C.properties).filter(e=>{let[t]=e;return!o.includes(t)}).map(e=>{let[t,o]=e;return S(t,o)})}):null}},9114:function(e,t,o){var a=o(2265),r=o(57271),n=o(85968);function c(){return"topRight"}function l(e,t){var o;return"string"==typeof e?{message:t,description:e}:{message:null!==(o=e.message)&&void 0!==o?o:t,...e}}function i(e){return"number"==typeof e?e:"string"==typeof e&&/^\d+$/.test(e)?parseInt(e,10):void 0}let s=["invalid api key","invalid authorization header format","authentication error","invalid proxy server token","invalid jwt token","invalid jwt submitted","unauthorized access to metrics endpoint"],d=["admin-only endpoint","not allowed to access model","user does not have permission","access forbidden","invalid credentials used to access ui","user not allowed to access proxy"],u=["db not connected","database not initialized","no db connected","prisma client not initialized","service unhealthy"],p=["no models configured on proxy","llm router not initialized","no deployments available","no healthy deployment available","not allowed to access model due to tags configuration","invalid model name passed in"],h=["deployment over user-defined ratelimit","crossed tpm / rpm / max parallel request limit","max parallel request limit"],g=["budget exceeded","crossed budget","provider budget"],m=["must be a litellm enterprise user","only be available for liteLLM enterprise users","missing litellm-enterprise package","only available on the docker image","enterprise feature","premium user"],f=["invalid json payload","invalid request type","invalid key format","invalid hash key","invalid sort column","invalid sort order","invalid limit","invalid file type","invalid field","invalid date format"],w=["model not found","model with id","credential not found","user not found","team not found","organization not found","mcp server with id","tool '"],y=["already exists","team member is already in team","user already exists"],j=["violated openai moderation policy","violated jailbreak threshold","violated prompt_injection threshold","violated content safety policy","violated lasso guardrail policy","blocked by pillar security guardrail","violated azure prompt shield guardrail policy","content blocked by model armor","response blocked by model armor","streaming response blocked by model armor","guardrail","moderation"],_=["invalid purpose","service must be specified","invalid response - response.response is none"],C=["cloudzero settings not configured","failed to decrypt cloudzero api key","cloudzero settings not found"],k=["created successfully","updated successfully","deleted successfully","credential created successfully","model added successfully","team created successfully","user created successfully","organization created successfully","cloudzero settings initialized successfully","cloudzero settings updated successfully","cloudzero export completed successfully","mock llm request made","mock slack alert sent","mock email alert sent","spend for all api keys and teams reset successfully","monthlyglobalspend view refreshed","cache cleared successfully","cache set successfully","ip ","deleted successfully"],v=["rate limit reached for deployment","deployment cooldown period active"],T=["this feature is only available for litellm enterprise users","enterprise features are not available","regenerating virtual keys is an enterprise feature","trying to set allowed_routes. this is an enterprise feature"],E=["invalid maximum_spend_logs_retention_interval value","error has invalid or non-convertible code","failed to save health check to database"];t.Z={error(e){var t,o;let a=l(e,"Error");r.ZP.error({...a,placement:null!==(t=a.placement)&&void 0!==t?t:c(),duration:null!==(o=a.duration)&&void 0!==o?o:6})},warning(e){var t,o;let a=l(e,"Warning");r.ZP.warning({...a,placement:null!==(t=a.placement)&&void 0!==t?t:c(),duration:null!==(o=a.duration)&&void 0!==o?o:5})},info(e){var t,o;let a=l(e,"Info");r.ZP.info({...a,placement:null!==(t=a.placement)&&void 0!==t?t:c(),duration:null!==(o=a.duration)&&void 0!==o?o:4})},success(e){var t,o;if(a.isValidElement(e)){r.ZP.success({message:"Success",description:e,placement:c(),duration:3.5});return}let n=l(e,"Success");r.ZP.success({...n,placement:null!==(t=n.placement)&&void 0!==t?t:c(),duration:null!==(o=n.duration)&&void 0!==o?o:3.5})},fromBackend(e,t){var o,a,l,S,b,F,P,O,B,N,x,G;let J=null!==(G=null!==(x=i(null==e?void 0:null===(N=e.response)||void 0===N?void 0:N.status))&&void 0!==x?x:i(null==e?void 0:e.status_code))&&void 0!==G?G:i(null==e?void 0:e.code),A=function(e){var t,o,a,r,c,l,i,s,d,u,p,h;if("string"==typeof e)return e;let g=null!==(h=null!==(p=null!==(u=null!==(d=null!==(s=null==e?void 0:null===(a=e.response)||void 0===a?void 0:null===(o=a.data)||void 0===o?void 0:null===(t=o.error)||void 0===t?void 0:t.message)&&void 0!==s?s:null==e?void 0:null===(c=e.response)||void 0===c?void 0:null===(r=c.data)||void 0===r?void 0:r.message)&&void 0!==d?d:null==e?void 0:null===(i=e.response)||void 0===i?void 0:null===(l=i.data)||void 0===l?void 0:l.error)&&void 0!==u?u:null==e?void 0:e.detail)&&void 0!==p?p:null==e?void 0:e.message)&&void 0!==h?h:e;return(0,n.O)(g)}(e),U={...null!=t?t:{},description:A,placement:null!==(o=null==t?void 0:t.placement)&&void 0!==o?o:c()};if(void 0!==J||e instanceof Error||"string"==typeof e||e&&"object"==typeof e&&("error"in e||"detail"in e)){let e=function(e,t){var o,a,r,n,c;let l=(t||"").toLowerCase();return s.some(e=>l.includes(e))?"Authentication Error":d.some(e=>l.includes(e))?"Access Denied":(null==u?void 0:null===(o=u.some)||void 0===o?void 0:o.call(u,e=>l.includes(e)))||503===e?"Service Unavailable":(null==g?void 0:null===(a=g.some)||void 0===a?void 0:a.call(g,e=>l.includes(e)))?"Budget Exceeded":(null==m?void 0:null===(r=m.some)||void 0===r?void 0:r.call(m,e=>l.includes(e)))?"Feature Unavailable":(null==p?void 0:null===(n=p.some)||void 0===n?void 0:n.call(p,e=>l.includes(e)))?"Routing Error":y.some(e=>l.includes(e))?"Already Exists":j.some(e=>l.includes(e))?"Content Blocked":_.some(e=>l.includes(e))?"Validation Error":C.some(e=>l.includes(e))?"Integration Error":f.some(e=>l.includes(e))?"Validation Error":404===e||l.includes("not found")||w.some(e=>l.includes(e))?"Not Found":429===e||l.includes("rate limit")||l.includes("tpm")||l.includes("rpm")||(null==h?void 0:null===(c=h.some)||void 0===c?void 0:c.call(h,e=>l.includes(e)))?"Rate Limit Exceeded":e&&e>=500?"Server Error":401===e?"Authentication Error":403===e?"Access Denied":l.includes("enterprise")||l.includes("premium")?"Info":e&&e>=400?"Request Error":"Error"}(J,A),o={...U,message:e};if("Rate Limit Exceeded"===e||"Info"===e||"Budget Exceeded"===e||"Feature Unavailable"===e||"Content Blocked"===e||"Integration Error"===e){r.ZP.warning({...o,duration:null!==(a=null==t?void 0:t.duration)&&void 0!==a?a:7});return}if("Server Error"===e){r.ZP.error({...o,duration:null!==(l=null==t?void 0:t.duration)&&void 0!==l?l:8});return}if("Request Error"===e||"Authentication Error"===e||"Access Denied"===e||"Not Found"===e||"Error"===e){r.ZP.error({...o,duration:null!==(S=null==t?void 0:t.duration)&&void 0!==S?S:6});return}r.ZP.info({...o,duration:null!==(b=null==t?void 0:t.duration)&&void 0!==b?b:4});return}let R=function(e){let t=(e||"").toLowerCase();return k.some(e=>t.includes(e))?{kind:"success",title:"Success"}:T.some(e=>t.includes(e))?{kind:"warning",title:"Feature Notice"}:E.some(e=>t.includes(e))?{kind:"warning",title:"Configuration Warning"}:v.some(e=>t.includes(e))?{kind:"warning",title:"Rate Limit"}:null}(A),I={...U,message:null!==(F=null==R?void 0:R.title)&&void 0!==F?F:"Info"};if((null==R?void 0:R.kind)==="success"){r.ZP.success({...I,duration:null!==(P=null==t?void 0:t.duration)&&void 0!==P?P:3.5});return}if((null==R?void 0:R.kind)==="warning"){r.ZP.warning({...I,duration:null!==(O=null==t?void 0:t.duration)&&void 0!==O?O:6});return}r.ZP.info({...I,duration:null!==(B=null==t?void 0:t.duration)&&void 0!==B?B:4})},clear(){r.ZP.destroy()}}},19250:function(e,t,o){o.r(t),o.d(t,{DEFAULT_ORGANIZATION:function(){return g},PredictedSpendLogsCall:function(){return tl},addAllowedIP:function(){return ef},adminGlobalActivity:function(){return eA},adminGlobalActivityExceptions:function(){return eI},adminGlobalActivityExceptionsPerDeployment:function(){return eM},adminGlobalActivityPerModel:function(){return eR},adminGlobalCacheActivity:function(){return eU},adminSpendLogsCall:function(){return eN},adminTopEndUsersCall:function(){return eG},adminTopKeysCall:function(){return ex},adminTopModelsCall:function(){return ez},adminspendByProvider:function(){return eJ},alertingSettingsCall:function(){return U},allEndUsersCall:function(){return eF},allTagNamesCall:function(){return eb},availableTeamListCall:function(){return Y},budgetCreateCall:function(){return x},budgetDeleteCall:function(){return N},budgetUpdateCall:function(){return G},cachingHealthCheckCall:function(){return tT},callMCPTool:function(){return tq},cancelModelCostMapReload:function(){return b},claimOnboardingToken:function(){return el},convertPromptFileToJson:function(){return tG},createGuardrailCall:function(){return tA},createMCPServer:function(){return tL},createPassThroughEndpoint:function(){return tw},createPromptCall:function(){return tB},credentialCreateCall:function(){return eX},credentialDeleteCall:function(){return e4},credentialGetCall:function(){return e1},credentialListCall:function(){return e0},credentialUpdateCall:function(){return e2},defaultProxyBaseUrl:function(){return i},deleteAllowedIP:function(){return ew},deleteCallback:function(){return op},deleteConfigFieldSetting:function(){return tj},deleteGuardrailCall:function(){return ot},deleteMCPServer:function(){return tV},deletePassThroughEndpointsCall:function(){return t_},deletePromptCall:function(){return tx},fetchMCPAccessGroups:function(){return tz},fetchMCPServers:function(){return tM},formatDate:function(){return l},getAllowedIPs:function(){return em},getBudgetList:function(){return td},getBudgetSettings:function(){return tu},getCallbacksCall:function(){return tp},getConfigFieldSetting:function(){return tm},getDefaultTeamSettings:function(){return tQ},getEmailEventSettings:function(){return t7},getGeneralSettingsCall:function(){return th},getGuardrailInfo:function(){return or},getGuardrailProviderSpecificParams:function(){return oa},getGuardrailUISettings:function(){return oo},getGuardrailsList:function(){return tF},getInternalUserSettings:function(){return tR},getModelCostMapReloadStatus:function(){return F},getOnboardingCredentials:function(){return ec},getOpenAPISchema:function(){return v},getPassThroughEndpointInfo:function(){return ou},getPassThroughEndpointsCall:function(){return tg},getPossibleUserRoles:function(){return e$},getPromptInfo:function(){return tO},getPromptsList:function(){return tP},getProxyBaseUrl:function(){return p},getProxyUISettings:function(){return tb},getPublicModelHubInfo:function(){return k},getRemainingUsers:function(){return os},getSSOSettings:function(){return oc},getTeamPermissionsCall:function(){return t0},getTotalSpendCall:function(){return en},getUiConfig:function(){return C},healthCheckCall:function(){return tk},healthCheckHistoryCall:function(){return tE},individualModelHealthCheckCall:function(){return tv},invitationClaimCall:function(){return A},invitationCreateCall:function(){return J},keyCreateCall:function(){return I},keyCreateServiceAccountCall:function(){return R},keyDeleteCall:function(){return z},keyInfoCall:function(){return eL},keyInfoV1Call:function(){return eV},keyListCall:function(){return eZ},keySpendLogsCall:function(){return eT},keyUpdateCall:function(){return e3},latestHealthChecksCall:function(){return tS},listMCPTools:function(){return tZ},makeModelGroupPublic:function(){return _},mcpToolsCall:function(){return oh},modelAvailableCall:function(){return ev},modelCostMap:function(){return T},modelCreateCall:function(){return P},modelDeleteCall:function(){return B},modelExceptionsCall:function(){return eC},modelHubCall:function(){return eg},modelHubPublicModelsCall:function(){return eh},modelInfoCall:function(){return eu},modelInfoV1Call:function(){return ep},modelMetricsCall:function(){return ey},modelMetricsSlowResponsesCall:function(){return e_},modelPatchUpdateCall:function(){return e6},modelSettingsCall:function(){return O},modelUpdateCall:function(){return e9},organizationCreateCall:function(){return Q},organizationDeleteCall:function(){return ee},organizationInfoCall:function(){return $},organizationListCall:function(){return K},organizationMemberAddCall:function(){return to},organizationMemberDeleteCall:function(){return ta},organizationMemberUpdateCall:function(){return tr},organizationUpdateCall:function(){return X},patchPromptCall:function(){return tJ},perUserAnalyticsCall:function(){return ov},proxyBaseUrl:function(){return d},regenerateKeyCall:function(){return ei},reloadModelCostMap:function(){return E},resetEmailEventSettings:function(){return oe},scheduleModelCostMapReload:function(){return S},serverRootPath:function(){return s},serviceHealthCheck:function(){return ts},sessionSpendLogsCall:function(){return t4},setCallbacksCall:function(){return tC},setGlobalLitellmHeaderName:function(){return j},slackBudgetAlertsHealthCheck:function(){return ti},spendUsersCall:function(){return eq},streamingModelMetricsCall:function(){return ej},tagCreateCall:function(){return tH},tagDailyActivityCall:function(){return ea},tagDauCall:function(){return oy},tagDeleteCall:function(){return t$},tagDistinctCall:function(){return oC},tagInfoCall:function(){return tY},tagListCall:function(){return tK},tagMauCall:function(){return o_},tagUpdateCall:function(){return tW},tagWauCall:function(){return oj},tagsSpendLogsCall:function(){return eS},teamBulkMemberAddCall:function(){return e8},teamCreateCall:function(){return eQ},teamDailyActivityCall:function(){return er},teamDeleteCall:function(){return D},teamInfoCall:function(){return q},teamListCall:function(){return W},teamMemberAddCall:function(){return e7},teamMemberDeleteCall:function(){return tt},teamMemberUpdateCall:function(){return te},teamPermissionsUpdateCall:function(){return t1},teamSpendLogsCall:function(){return eE},teamUpdateCall:function(){return e5},testConnectionRequest:function(){return eD},testMCPConnectionRequest:function(){return og},testMCPToolsListRequest:function(){return om},transformRequestCall:function(){return et},uiAuditLogsCall:function(){return oi},uiSpendLogDetailsCall:function(){return tU},uiSpendLogsCall:function(){return eB},updateConfigFieldSetting:function(){return ty},updateDefaultTeamSettings:function(){return tX},updateEmailEventSettings:function(){return t8},updateGuardrailCall:function(){return on},updateInternalUserSettings:function(){return tI},updateMCPServer:function(){return tD},updatePassThroughEndpoint:function(){return od},updatePassThroughFieldSetting:function(){return tf},updatePromptCall:function(){return tN},updateSSOSettings:function(){return ol},updateUsefulLinksCall:function(){return ek},userAgentAnalyticsCall:function(){return ow},userAgentSummaryCall:function(){return ok},userBulkUpdateUserCall:function(){return tc},userCreateCall:function(){return M},userDailyActivityAggregatedCall:function(){return eY},userDailyActivityCall:function(){return eo},userDeleteCall:function(){return L},userFilterUICall:function(){return eP},userGetAllUsersCall:function(){return eK},userGetRequesedtModelsCall:function(){return eW},userInfoCall:function(){return Z},userListCall:function(){return V},userRequestModelCall:function(){return eH},userSpendLogsCall:function(){return eO},userUpdateUserCall:function(){return tn},v2TeamListCall:function(){return H},vectorStoreCreateCall:function(){return t2},vectorStoreDeleteCall:function(){return t5},vectorStoreInfoCall:function(){return t6},vectorStoreListCall:function(){return t3},vectorStoreSearchCall:function(){return of},vectorStoreUpdateCall:function(){return t9}});var a=o(42264),r=o(3914),n=o(63610),c=o(9114);let l=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)},i=null,s="/",d=null;console.log=function(){};let u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=window.location.origin,a=t||o;console.log("proxyBaseUrl:",d),console.log("serverRootPath:",e),e.length>0&&!a.endsWith(e)&&"/"!=e&&(a+=e,d=a),console.log("Updated proxyBaseUrl:",d)},p=()=>d||window.location.origin,h={GET:"GET",DELETE:"DELETE"},g="default_organization",m=0,f=async e=>{let t=Date.now();t-m>6e4?(e.includes("Authentication Error - Expired Key")&&(c.Z.info("UI Session Expired. Logging out."),m=t,(0,r.b)(),window.location.href=window.location.pathname),m=t):console.log("Error suppressed to prevent spam:",e)},w="Authorization",y="x-mcp-auth";function j(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Authorization";console.log("setGlobalLitellmHeaderName: ".concat(e)),w=e}let _=async(e,t)=>{let o=d?"".concat(d,"/model_group/make_public"):"/model_group/make_public";return(await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({model_groups:t})})).json()},C=async()=>{console.log("Getting UI config");let e=await fetch(i?"".concat(i,"/litellm/.well-known/litellm-ui-config"):"/litellm/.well-known/litellm-ui-config"),t=await e.json();return console.log("jsonData in getUiConfig:",t),u(t.server_root_path,t.proxy_base_url),t},k=async()=>{let e=await fetch(i?"".concat(i,"/public/model_hub/info"):"/public/model_hub/info");return await e.json()},v=async()=>{let e=d?"".concat(d,"/openapi.json"):"/openapi.json",t=await fetch(e);return await t.json()},T=async e=>{try{let t=d?"".concat(d,"/get/litellm_model_cost_map"):"/get/litellm_model_cost_map",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),a=await o.json();return console.log("received litellm model cost data: ".concat(a)),a}catch(e){throw console.error("Failed to get model cost map:",e),e}},E=async e=>{try{let t=d?"".concat(d,"/reload/model_cost_map"):"/reload/model_cost_map",o=await fetch(t,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),a=await o.json();return console.log("Model cost map reload response: ".concat(a)),a}catch(e){throw console.error("Failed to reload model cost map:",e),e}},S=async(e,t)=>{try{let o=d?"".concat(d,"/schedule/model_cost_map_reload?hours=").concat(t):"/schedule/model_cost_map_reload?hours=".concat(t),a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),r=await a.json();return console.log("Schedule model cost map reload response: ".concat(r)),r}catch(e){throw console.error("Failed to schedule model cost map reload:",e),e}},b=async e=>{try{let t=d?"".concat(d,"/schedule/model_cost_map_reload"):"/schedule/model_cost_map_reload",o=await fetch(t,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),a=await o.json();return console.log("Cancel model cost map reload response: ".concat(a)),a}catch(e){throw console.error("Failed to cancel model cost map reload:",e),e}},F=async e=>{try{let t=d?"".concat(d,"/schedule/model_cost_map_reload/status"):"/schedule/model_cost_map_reload/status";console.log("Fetching status from URL:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){console.error("Status request failed with status: ".concat(o.status));let e=await o.text();throw console.error("Error response:",e),Error("HTTP ".concat(o.status,": ").concat(e))}let a=await o.json();return console.log("Model cost map reload status:",a),a}catch(e){throw console.error("Failed to get model cost map reload status:",e),e}},P=async(e,t)=>{try{let o=d?"".concat(d,"/model/new"):"/model/new",r=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),a.ZP.destroy(),c.Z.success("Model ".concat(t.model_name," created successfully")),n}catch(e){throw console.error("Failed to create key:",e),e}},O=async e=>{try{let t=d?"".concat(d,"/model/settings"):"/model/settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){console.error("Failed to get model settings:",e)}},B=async(e,t)=>{console.log("model_id in model delete call: ".concat(t));try{let o=d?"".concat(d,"/model/delete"):"/model/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},N=async(e,t)=>{if(console.log("budget_id in budget delete call: ".concat(t)),null!=e)try{let o=d?"".concat(d,"/budget/delete"):"/budget/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},x=async(e,t)=>{try{console.log("Form Values in budgetCreateCall:",t),console.log("Form Values after check:",t);let o=d?"".concat(d,"/budget/new"):"/budget/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},G=async(e,t)=>{try{console.log("Form Values in budgetUpdateCall:",t),console.log("Form Values after check:",t);let o=d?"".concat(d,"/budget/update"):"/budget/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},J=async(e,t)=>{try{let o=d?"".concat(d,"/invitation/new"):"/invitation/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,t)=>{try{console.log("Form Values in invitationCreateCall:",t),console.log("Form Values after check:",t);let o=d?"".concat(d,"/invitation/claim"):"/invitation/claim",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},U=async e=>{try{let t=d?"".concat(d,"/alerting/settings"):"/alerting/settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},R=async(e,t)=>{try{for(let e of(console.log("Form Values in keyCreateServiceAccountCall:",t),t.description&&(t.metadata||(t.metadata={}),t.metadata.description=t.description,delete t.description,t.metadata=JSON.stringify(t.metadata)),n.d))if(t[e]){console.log("formValues.".concat(e,":"),t[e]);try{t[e]=JSON.parse(t[e])}catch(t){throw Error("Failed to parse ".concat(e,": ")+t)}}console.log("Form Values after check:",t);let o=d?"".concat(d,"/key/service-account/generate"):"/key/service-account/generate",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,t,o)=>{try{for(let e of(console.log("Form Values in keyCreateCall:",o),o.description&&(o.metadata||(o.metadata={}),o.metadata.description=o.description,delete o.description,o.metadata=JSON.stringify(o.metadata)),n.d))if(o[e]){console.log("formValues.".concat(e,":"),o[e]);try{o[e]=JSON.parse(o[e])}catch(t){throw Error("Failed to parse ".concat(e,": ")+t)}}console.log("Form Values after check:",o);let a=d?"".concat(d,"/key/generate"):"/key/generate",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...o})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let c=await r.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},M=async(e,t,o)=>{try{if(console.log("Form Values in keyCreateCall:",o),o.description&&(o.metadata||(o.metadata={}),o.metadata.description=o.description,delete o.description,o.metadata=JSON.stringify(o.metadata)),o.auto_create_key=!1,o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",o);let a=d?"".concat(d,"/user/new"):"/user/new",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...o})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},z=async(e,t)=>{try{let o=d?"".concat(d,"/key/delete"):"/key/delete";console.log("in keyDeleteCall:",t);let a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[t]})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},L=async(e,t)=>{try{let o=d?"".concat(d,"/user/delete"):"/user/delete";console.log("in userDeleteCall:",t);let a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_ids:t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to delete user(s):",e),e}},D=async(e,t)=>{try{let o=d?"".concat(d,"/team/delete"):"/team/delete";console.log("in teamDeleteCall:",t);let a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_ids:[t]})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to delete key:",e),e}},V=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,i=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,s=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null;try{let u=d?"".concat(d,"/user/list"):"/user/list";console.log("in userListCall");let p=new URLSearchParams;if(t&&t.length>0){let e=t.join(",");p.append("user_ids",e)}o&&p.append("page",o.toString()),a&&p.append("page_size",a.toString()),r&&p.append("user_email",r),n&&p.append("role",n),c&&p.append("team",c),l&&p.append("sso_user_ids",l),i&&p.append("sort_by",i),s&&p.append("sort_order",s);let h=p.toString();h&&(u+="?".concat(h));let g=await fetch(u,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!g.ok){let e=await g.json(),t=oT(e);throw f(t),Error(t)}let m=await g.json();return console.log("/user/list API Response:",m),m}catch(e){throw console.error("Failed to create key:",e),e}},Z=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4?arguments[4]:void 0,n=arguments.length>5?arguments[5]:void 0,c=arguments.length>6&&void 0!==arguments[6]&&arguments[6];console.log("userInfoCall: ".concat(t,", ").concat(o,", ").concat(a,", ").concat(r,", ").concat(n,", ").concat(c));try{let l;if(a){l=d?"".concat(d,"/user/list"):"/user/list";let e=new URLSearchParams;null!=r&&e.append("page",r.toString()),null!=n&&e.append("page_size",n.toString()),l+="?".concat(e.toString())}else l=d?"".concat(d,"/user/info"):"/user/info",("Admin"!==o&&"Admin Viewer"!==o||c)&&t&&(l+="?user_id=".concat(t));console.log("Requesting user data from:",l);let i=await fetch(l,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oT(e);throw f(t),Error(t)}let s=await i.json();return console.log("API Response:",s),s}catch(e){throw console.error("Failed to fetch user data:",e),e}},q=async(e,t)=>{try{let o=d?"".concat(d,"/team/info"):"/team/info";t&&(o="".concat(o,"?team_id=").concat(t)),console.log("in teamInfoCall");let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},H=async function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;arguments.length>5&&void 0!==arguments[5]&&arguments[5],arguments.length>6&&void 0!==arguments[6]&&arguments[6],arguments.length>7&&void 0!==arguments[7]&&arguments[7],arguments.length>8&&void 0!==arguments[8]&&arguments[8];try{let n=d?"".concat(d,"/v2/team/list"):"/v2/team/list";console.log("in teamInfoCall");let c=new URLSearchParams;o&&c.append("user_id",o.toString()),t&&c.append("organization_id",t.toString()),a&&c.append("team_id",a.toString()),r&&c.append("team_alias",r.toString());let l=c.toString();l&&(n+="?".concat(l));let i=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oT(e);throw f(t),Error(t)}let s=await i.json();return console.log("/v2/team/list API Response:",s),s}catch(e){throw console.error("Failed to create key:",e),e}},W=async function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let n=d?"".concat(d,"/team/list"):"/team/list";console.log("in teamInfoCall");let c=new URLSearchParams;o&&c.append("user_id",o.toString()),t&&c.append("organization_id",t.toString()),a&&c.append("team_id",a.toString()),r&&c.append("team_alias",r.toString());let l=c.toString();l&&(n+="?".concat(l));let i=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oT(e);throw f(t),Error(t)}let s=await i.json();return console.log("/team/list API Response:",s),s}catch(e){throw console.error("Failed to create key:",e),e}},Y=async e=>{try{let t=d?"".concat(d,"/team/available"):"/team/available";console.log("in availableTeamListCall");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log("/team/available_teams API Response:",a),a}catch(e){throw e}},K=async e=>{try{let t=d?"".concat(d,"/organization/list"):"/organization/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},$=async(e,t)=>{try{let o=d?"".concat(d,"/organization/info"):"/organization/info";t&&(o="".concat(o,"?organization_id=").concat(t)),console.log("in teamInfoCall");let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},Q=async(e,t)=>{try{if(console.log("Form Values in organizationCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw console.error("Failed to parse metadata:",e),Error("Failed to parse metadata: "+e)}}let o=d?"".concat(d,"/organization/new"):"/organization/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},X=async(e,t)=>{try{console.log("Form Values in organizationUpdateCall:",t);let o=d?"".concat(d,"/organization/update"):"/organization/update",a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("Update Team Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},ee=async(e,t)=>{try{let o=d?"".concat(d,"/organization/delete"):"/organization/delete",a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_ids:[t]})});if(!a.ok){let e=await a.text();throw f(e),Error("Error deleting organization: ".concat(e))}return await a.json()}catch(e){throw console.error("Failed to delete organization:",e),e}},et=async(e,t)=>{try{let o=d?"".concat(d,"/utils/transform_request"):"/utils/transform_request",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create key:",e),e}},eo=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;try{let r=d?"".concat(d,"/user/daily/activity"):"/user/daily/activity",n=new URLSearchParams;n.append("start_date",l(t)),n.append("end_date",l(o)),n.append("page_size","1000"),n.append("page",a.toString());let c=n.toString();c&&(r+="?".concat(c));let i=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oT(e);throw f(t),Error(t)}return await i.json()}catch(e){throw console.error("Failed to create key:",e),e}},ea=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let n=d?"".concat(d,"/tag/daily/activity"):"/tag/daily/activity",c=new URLSearchParams;c.append("start_date",l(t)),c.append("end_date",l(o)),c.append("page_size","1000"),c.append("page",a.toString()),r&&c.append("tags",r.join(","));let i=c.toString();i&&(n+="?".concat(i));let s=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.json(),t=oT(e);throw f(t),Error(t)}return await s.json()}catch(e){throw console.error("Failed to create key:",e),e}},er=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let n=d?"".concat(d,"/team/daily/activity"):"/team/daily/activity",c=new URLSearchParams;c.append("start_date",l(t)),c.append("end_date",l(o)),c.append("page_size","1000"),c.append("page",a.toString()),r&&c.append("team_ids",r.join(",")),c.append("exclude_team_ids","litellm-dashboard");let i=c.toString();i&&(n+="?".concat(i));let s=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.json(),t=oT(e);throw f(t),Error(t)}return await s.json()}catch(e){throw console.error("Failed to create key:",e),e}},en=async e=>{try{let t=d?"".concat(d,"/global/spend"):"/global/spend",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ec=async e=>{try{let t=d?"".concat(d,"/onboarding/get_token"):"/onboarding/get_token";t+="?invite_link=".concat(e);let o=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},el=async(e,t,o,a)=>{let r=d?"".concat(d,"/onboarding/claim_token"):"/onboarding/claim_token";try{let n=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({invitation_link:t,user_id:o,password:a})});if(!n.ok){let e=await n.json(),t=oT(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to delete key:",e),e}},ei=async(e,t,o)=>{try{let a=d?"".concat(d,"/key/").concat(t,"/regenerate"):"/key/".concat(t,"/regenerate"),r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}let n=await r.json();return console.log("Regenerate key Response:",n),n}catch(e){throw console.error("Failed to regenerate key:",e),e}},es=!1,ed=null,eu=async(e,t,o)=>{try{console.log("modelInfoCall:",e,t,o);let a=d?"".concat(d,"/v2/model/info"):"/v2/model/info",r=new URLSearchParams;r.append("include_team_models","true"),r.toString()&&(a+="?".concat(r.toString()));let n=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!n.ok){let e=await n.text();throw e+="error shown=".concat(es),es||(e.includes("No model list passed")&&(e="No Models Exist. Click Add Model to get started."),c.Z.info(e),es=!0,ed&&clearTimeout(ed),ed=setTimeout(()=>{es=!1},1e4)),Error("Network response was not ok")}let l=await n.json();return console.log("modelInfoCall:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},ep=async(e,t)=>{try{let o=d?"".concat(d,"/v1/model/info"):"/v1/model/info";o+="?litellm_model_id=".concat(t);let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("modelInfoV1Call:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},eh=async()=>{let e=d?"".concat(d,"/public/model_hub"):"/public/model_hub";return(await fetch(e,{method:"GET",headers:{"Content-Type":"application/json"}})).json()},eg=async e=>{try{let t=d?"".concat(d,"/model_group/info"):"/model_group/info",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log("modelHubCall:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},em=async e=>{try{let t=d?"".concat(d,"/get/allowed_ips"):"/get/allowed_ips",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log("getAllowedIPs:",a),a.data}catch(e){throw console.error("Failed to get allowed IPs:",e),e}},ef=async(e,t)=>{try{let o=d?"".concat(d,"/add/allowed_ip"):"/add/allowed_ip",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({ip:t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("addAllowedIP:",r),r}catch(e){throw console.error("Failed to add allowed IP:",e),e}},ew=async(e,t)=>{try{let o=d?"".concat(d,"/delete/allowed_ip"):"/delete/allowed_ip",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({ip:t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("deleteAllowedIP:",r),r}catch(e){throw console.error("Failed to delete allowed IP:",e),e}},ey=async(e,t,o,a,r,n,c,l)=>{try{let t=d?"".concat(d,"/model/metrics"):"/model/metrics";a&&(t="".concat(t,"?_selected_model_group=").concat(a,"&startTime=").concat(r,"&endTime=").concat(n,"&api_key=").concat(c,"&customer=").concat(l));let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ej=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/model/streaming_metrics"):"/model/streaming_metrics";t&&(r="".concat(r,"?_selected_model_group=").concat(t,"&startTime=").concat(o,"&endTime=").concat(a));let n=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!n.ok){let e=await n.json(),t=oT(e);throw f(t),Error(t)}return await n.json()}catch(e){throw console.error("Failed to create key:",e),e}},e_=async(e,t,o,a,r,n,c,l)=>{try{let t=d?"".concat(d,"/model/metrics/slow_responses"):"/model/metrics/slow_responses";a&&(t="".concat(t,"?_selected_model_group=").concat(a,"&startTime=").concat(r,"&endTime=").concat(n,"&api_key=").concat(c,"&customer=").concat(l));let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},eC=async(e,t,o,a,r,n,c,l)=>{try{let t=d?"".concat(d,"/model/metrics/exceptions"):"/model/metrics/exceptions";a&&(t="".concat(t,"?_selected_model_group=").concat(a,"&startTime=").concat(r,"&endTime=").concat(n,"&api_key=").concat(c,"&customer=").concat(l));let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ek=async(e,t)=>{try{let o=d?"".concat(d,"/model_hub/update_useful_links"):"/model_hub/update_useful_links",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({useful_links:t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create key:",e),e}},ev=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=(arguments.length>5&&void 0!==arguments[5]&&arguments[5],arguments.length>6&&void 0!==arguments[6]&&arguments[6]);console.log("in /models calls, globalLitellmHeaderName",w);try{let t=d?"".concat(d,"/models"):"/models",o=new URLSearchParams;o.append("include_model_access_groups","True"),!0===a&&o.append("return_wildcard_routes","True"),!0===n&&o.append("only_model_access_groups","True"),r&&o.append("team_id",r.toString()),o.toString()&&(t+="?".concat(o.toString()));let c=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.json(),t=oT(e);throw f(t),Error(t)}return await c.json()}catch(e){throw console.error("Failed to create key:",e),e}},eT=async(e,t)=>{try{let o=d?"".concat(d,"/global/spend/logs"):"/global/spend/logs";console.log("in keySpendLogsCall:",o);let a=await fetch("".concat(o,"?api_key=").concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},eE=async e=>{try{let t=d?"".concat(d,"/global/spend/teams"):"/global/spend/teams";console.log("in teamSpendLogsCall:",t);let o=await fetch("".concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eS=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/spend/tags"):"/global/spend/tags";t&&o&&(r="".concat(r,"?start_date=").concat(t,"&end_date=").concat(o)),a&&(r+="".concat(r,"&tags=").concat(a.join(","))),console.log("in tagsSpendLogsCall:",r);let n=await fetch("".concat(r),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!n.ok){let e=await n.json(),t=oT(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to create key:",e),e}},eb=async e=>{try{let t=d?"".concat(d,"/global/spend/all_tag_names"):"/global/spend/all_tag_names";console.log("in global/spend/all_tag_names call",t);let o=await fetch("".concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eF=async e=>{try{let t=d?"".concat(d,"/customer/list"):"/customer/list";console.log("in customer/list",t);let o=await fetch("".concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eP=async(e,t)=>{try{let o=d?"".concat(d,"/user/filter/ui"):"/user/filter/ui";t.get("user_email")&&(o+="?user_email=".concat(t.get("user_email"))),t.get("user_id")&&(o+="?user_id=".concat(t.get("user_id")));let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create key:",e),e}},eO=async(e,t,o,a,r,n)=>{try{console.log("user role in spend logs call: ".concat(o));let t=d?"".concat(d,"/spend/logs"):"/spend/logs";t="App Owner"==o?"".concat(t,"?user_id=").concat(a,"&start_date=").concat(r,"&end_date=").concat(n):"".concat(t,"?start_date=").concat(r,"&end_date=").concat(n);let c=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.json(),t=oT(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},eB=async(e,t,o,a,r,n,c,l,i,s,u,p,h)=>{try{let g=d?"".concat(d,"/spend/logs/ui"):"/spend/logs/ui",m=new URLSearchParams;t&&m.append("api_key",t),o&&m.append("team_id",o),a&&m.append("request_id",a),r&&m.append("start_date",r),n&&m.append("end_date",n),c&&m.append("page",c.toString()),l&&m.append("page_size",l.toString()),i&&m.append("user_id",i),s&&m.append("end_user",s),u&&m.append("status_filter",u),p&&m.append("model",p),h&&m.append("key_alias",h);let y=m.toString();y&&(g+="?".concat(y));let j=await fetch(g,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!j.ok){let e=await j.json(),t=oT(e);throw f(t),Error(t)}let _=await j.json();return console.log("Spend Logs Response:",_),_}catch(e){throw console.error("Failed to fetch spend logs:",e),e}},eN=async e=>{try{let t=d?"".concat(d,"/global/spend/logs"):"/global/spend/logs",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},ex=async e=>{try{let t=d?"".concat(d,"/global/spend/keys?limit=5"):"/global/spend/keys?limit=5",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eG=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/spend/end_users"):"/global/spend/end_users",n="";n=t?JSON.stringify({api_key:t,startTime:o,endTime:a}):JSON.stringify({startTime:o,endTime:a});let c={method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:n},l=await fetch(r,c);if(!l.ok){let e=await l.json(),t=oT(e);throw f(t),Error(t)}let i=await l.json();return console.log(i),i}catch(e){throw console.error("Failed to create key:",e),e}},eJ=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/spend/provider"):"/global/spend/provider";o&&a&&(r+="?start_date=".concat(o,"&end_date=").concat(a)),t&&(r+="&api_key=".concat(t));let n={method:"GET",headers:{[w]:"Bearer ".concat(e)}},c=await fetch(r,n);if(!c.ok){let e=await c.json(),t=oT(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eA=async(e,t,o)=>{try{let a=d?"".concat(d,"/global/activity"):"/global/activity";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o));let r={method:"GET",headers:{[w]:"Bearer ".concat(e)}},n=await fetch(a,r);if(!n.ok){let e=await n.json(),t=oT(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eU=async(e,t,o)=>{try{let a=d?"".concat(d,"/global/activity/cache_hits"):"/global/activity/cache_hits";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o));let r={method:"GET",headers:{[w]:"Bearer ".concat(e)}},n=await fetch(a,r);if(!n.ok){let e=await n.json(),t=oT(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eR=async(e,t,o)=>{try{let a=d?"".concat(d,"/global/activity/model"):"/global/activity/model";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o));let r={method:"GET",headers:{[w]:"Bearer ".concat(e)}},n=await fetch(a,r);if(!n.ok){let e=await n.json(),t=oT(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eI=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/activity/exceptions"):"/global/activity/exceptions";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o)),a&&(r+="&model_group=".concat(a));let n={method:"GET",headers:{[w]:"Bearer ".concat(e)}},c=await fetch(r,n);if(!c.ok){let e=await c.json(),t=oT(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eM=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/activity/exceptions/deployment"):"/global/activity/exceptions/deployment";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o)),a&&(r+="&model_group=".concat(a));let n={method:"GET",headers:{[w]:"Bearer ".concat(e)}},c=await fetch(r,n);if(!c.ok){let e=await c.json(),t=oT(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to fetch spend data:",e),e}},ez=async e=>{try{let t=d?"".concat(d,"/global/spend/models?limit=5"):"/global/spend/models?limit=5",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eL=async(e,t)=>{try{let o=d?"".concat(d,"/v2/key/info"):"/v2/key/info",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:t})});if(!a.ok){let e=await a.text();if(e.includes("Invalid proxy server token passed"))throw Error("Invalid proxy server token passed");throw f(e),Error("Network response was not ok")}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},eD=async(e,t,o,a)=>{try{console.log("Sending model connection test request:",JSON.stringify(t));let n=d?"".concat(d,"/health/test_connection"):"/health/test_connection",c=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",[w]:"Bearer ".concat(e)},body:JSON.stringify({litellm_params:t,model_info:o,mode:a})}),l=c.headers.get("content-type");if(!l||!l.includes("application/json")){let e=await c.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(c.status,": ").concat(c.statusText,"). Check network tab for details."))}let i=await c.json();if(!c.ok||"error"===i.status){if("error"===i.status);else{var r;return{status:"error",message:(null===(r=i.error)||void 0===r?void 0:r.message)||"Connection test failed: ".concat(c.status," ").concat(c.statusText)}}}return i}catch(e){throw console.error("Model connection test error:",e),e}},eV=async(e,t)=>{try{console.log("entering keyInfoV1Call");let o=d?"".concat(d,"/key/info"):"/key/info";o="".concat(o,"?key=").concat(t);let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(console.log("response",a),!a.ok){let e=await a.text();f(e),c.Z.fromBackend("Failed to fetch key info - "+e)}let r=await a.json();return console.log("data",r),r}catch(e){throw console.error("Failed to fetch key info:",e),e}},eZ=async function(e,t,o,a,r,n,c,l){let i=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,s=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null;try{let u=d?"".concat(d,"/key/list"):"/key/list";console.log("in keyListCall");let p=new URLSearchParams;o&&p.append("team_id",o.toString()),t&&p.append("organization_id",t.toString()),a&&p.append("key_alias",a),n&&p.append("key_hash",n),r&&p.append("user_id",r.toString()),c&&p.append("page",c.toString()),l&&p.append("size",l.toString()),i&&p.append("sort_by",i),s&&p.append("sort_order",s),p.append("return_full_object","true"),p.append("include_team_keys","true"),p.append("include_created_by_keys","true");let h=p.toString();h&&(u+="?".concat(h));let g=await fetch(u,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!g.ok){let e=await g.json(),t=oT(e);throw f(t),Error(t)}let m=await g.json();return console.log("/team/list API Response:",m),m}catch(e){throw console.error("Failed to create key:",e),e}},eq=async(e,t)=>{try{let o=d?"".concat(d,"/spend/users"):"/spend/users";console.log("in spendUsersCall:",o);let a=await fetch("".concat(o,"?user_id=").concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to get spend for user",e),e}},eH=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/user/request_model"):"/user/request_model",n=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({models:[t],user_id:o,justification:a})});if(!n.ok){let e=await n.json(),t=oT(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to create key:",e),e}},eW=async e=>{try{let t=d?"".concat(d,"/user/get_requests"):"/user/get_requests";console.log("in userGetRequesedtModelsCall:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to get requested models:",e),e}},eY=async(e,t,o)=>{try{let a=d?"".concat(d,"/user/daily/activity/aggregated"):"/user/daily/activity/aggregated",r=new URLSearchParams,n=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)};r.append("start_date",n(t)),r.append("end_date",n(o));let c=r.toString();c&&(a+="?".concat(c));let l=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oT(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch aggregated user daily activity:",e),e}},eK=async(e,t)=>{try{let o=d?"".concat(d,"/user/get_users?role=").concat(t):"/user/get_users?role=".concat(t);console.log("in userGetAllUsersCall:",o);let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to get requested models:",e),e}},e$=async e=>{try{let t=d?"".concat(d,"/user/available_roles"):"/user/available_roles",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log("response from user/available_role",a),a}catch(e){throw e}},eQ=async(e,t)=>{try{if(console.log("Form Values in teamCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let o=d?"".concat(d,"/team/new"):"/team/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},eX=async(e,t)=>{try{if(console.log("Form Values in credentialCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let o=d?"".concat(d,"/credentials"):"/credentials",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},e0=async e=>{try{let t=d?"".concat(d,"/credentials"):"/credentials";console.log("in credentialListCall");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log("/credentials API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},e1=async(e,t,o)=>{try{let a=d?"".concat(d,"/credentials"):"/credentials";t?a+="/by_name/".concat(t):o&&(a+="/by_model/".concat(o)),console.log("in credentialListCall");let r=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}let n=await r.json();return console.log("/credentials API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},e4=async(e,t)=>{try{let o=d?"".concat(d,"/credentials/").concat(t):"/credentials/".concat(t);console.log("in credentialDeleteCall:",t);let a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to delete key:",e),e}},e2=async(e,t,o)=>{try{if(console.log("Form Values in credentialUpdateCall:",o),o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let a=d?"".concat(d,"/credentials/").concat(t):"/credentials/".concat(t),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...o})});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},e3=async(e,t)=>{try{if(console.log("Form Values in keyUpdateCall:",t),t.model_tpm_limit){console.log("formValues.model_tpm_limit:",t.model_tpm_limit);try{t.model_tpm_limit=JSON.parse(t.model_tpm_limit)}catch(e){throw Error("Failed to parse model_tpm_limit: "+e)}}if(t.model_rpm_limit){console.log("formValues.model_rpm_limit:",t.model_rpm_limit);try{t.model_rpm_limit=JSON.parse(t.model_rpm_limit)}catch(e){throw Error("Failed to parse model_rpm_limit: "+e)}}let o=d?"".concat(d,"/key/update"):"/key/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let r=await a.json();return console.log("Update key Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},e5=async(e,t)=>{try{console.log("Form Values in teamUpateCall:",t);let o=d?"".concat(d,"/team/update"):"/team/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error response from the server:",e),c.Z.fromBackend("Failed to update team settings: "+e),Error(e)}let r=await a.json();return console.log("Update Team Response:",r),r}catch(e){throw console.error("Failed to update team:",e),e}},e6=async(e,t,o)=>{try{console.log("Form Values in modelUpateCall:",t);let a=d?"".concat(d,"/model/").concat(o,"/update"):"/model/".concat(o,"/update"),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error update from the server:",e),Error("Network response was not ok")}let n=await r.json();return console.log("Update model Response:",n),n}catch(e){throw console.error("Failed to update model:",e),e}},e9=async(e,t)=>{try{console.log("Form Values in modelUpateCall:",t);let o=d?"".concat(d,"/model/update"):"/model/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error update from the server:",e),Error("Network response was not ok")}let r=await a.json();return console.log("Update model Response:",r),r}catch(e){throw console.error("Failed to update model:",e),e}},e7=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let r=d?"".concat(d,"/team/member_add"):"/team/member_add",n=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,member:o})});if(!n.ok){var a;let e=await n.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(a=t.detail)||void 0===a?void 0:a.error)||"Failed to add team member",r=Error(o);throw r.raw=t,r}let c=await n.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},e8=async(e,t,o,a,r)=>{try{console.log("Bulk add team members:",{teamId:t,members:o,maxBudgetInTeam:a});let c=d?"".concat(d,"/team/bulk_member_add"):"/team/bulk_member_add",l={team_id:t};r?l.all_users=!0:l.members=o,null!=a&&(l.max_budget_in_team=a);let i=await fetch(c,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(l)});if(!i.ok){var n;let e=await i.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(n=t.detail)||void 0===n?void 0:n.error)||"Failed to bulk add team members",a=Error(o);throw a.raw=t,a}let s=await i.json();return console.log("Bulk team member add API Response:",s),s}catch(e){throw console.error("Failed to bulk add team members:",e),e}},te=async(e,t,o)=>{try{console.log("Form Values in teamMemberUpdateCall:",o),console.log("Budget value:",o.max_budget_in_team),console.log("TPM limit:",o.tpm_limit),console.log("RPM limit:",o.rpm_limit);let r=d?"".concat(d,"/team/member_update"):"/team/member_update",n={team_id:t,role:o.role,user_id:o.user_id};void 0!==o.user_email&&(n.user_email=o.user_email),void 0!==o.max_budget_in_team&&null!==o.max_budget_in_team&&(n.max_budget_in_team=o.max_budget_in_team),void 0!==o.tpm_limit&&null!==o.tpm_limit&&(n.tpm_limit=o.tpm_limit),void 0!==o.rpm_limit&&null!==o.rpm_limit&&(n.rpm_limit=o.rpm_limit),console.log("Final request body:",n);let c=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(n)});if(!c.ok){var a;let e=await c.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(a=t.detail)||void 0===a?void 0:a.error)||"Failed to add team member",r=Error(o);throw r.raw=t,r}let l=await c.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to update team member:",e),e}},tt=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let a=d?"".concat(d,"/team/member_delete"):"/team/member_delete",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,...void 0!==o.user_email&&{user_email:o.user_email},...void 0!==o.user_id&&{user_id:o.user_id}})});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},to=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let a=d?"".concat(d,"/organization/member_add"):"/organization/member_add",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,member:o})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create organization member:",e),e}},ta=async(e,t,o)=>{try{console.log("Form Values in organizationMemberDeleteCall:",o);let a=d?"".concat(d,"/organization/member_delete"):"/organization/member_delete",r=await fetch(a,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,user_id:o})});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to delete organization member:",e),e}},tr=async(e,t,o)=>{try{console.log("Form Values in organizationMemberUpdateCall:",o);let a=d?"".concat(d,"/organization/member_update"):"/organization/member_update",r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,...o})});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to update organization member:",e),e}},tn=async(e,t,o)=>{try{console.log("Form Values in userUpdateUserCall:",t);let a=d?"".concat(d,"/user/update"):"/user/update",r={...t};null!==o&&(r.user_role=o),r=JSON.stringify(r);let n=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:r});if(!n.ok){let e=await n.json(),t=oT(e);throw f(t),Error(t)}let c=await n.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},tc=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];try{let r;console.log("Form Values in userUpdateUserCall:",t);let n=d?"".concat(d,"/user/bulk_update"):"/user/bulk_update";if(a)r=JSON.stringify({all_users:!0,user_updates:t});else if(o&&o.length>0){let e=[];for(let a of o)e.push({user_id:a,...t});r=JSON.stringify({users:e})}else throw Error("Must provide either userIds or set allUsers=true");let c=await fetch(n,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:r});if(!c.ok){let e=await c.json(),t=oT(e);throw f(t),Error(t)}let l=await c.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},tl=async(e,t)=>{try{let o=d?"".concat(d,"/global/predict/spend/logs"):"/global/predict/spend/logs",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({data:t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},ti=async e=>{try{let t=d?"".concat(d,"/health/services?service=slack_budget_alerts"):"/health/services?service=slack_budget_alerts";console.log("Checking Slack Budget Alerts service health");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error(e)}let a=await o.json();return c.Z.success("Test Slack Alert worked - check your Slack!"),console.log("Service Health Response:",a),a}catch(e){throw console.error("Failed to perform health check:",e),e}},ts=async(e,t)=>{try{let o=d?"".concat(d,"/health/services?service=").concat(t):"/health/services?service=".concat(t);console.log("Checking Slack Budget Alerts service health");let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw f(e),Error(e)}return await a.json()}catch(e){throw console.error("Failed to perform health check:",e),e}},td=async e=>{try{let t=d?"".concat(d,"/budget/list"):"/budget/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tu=async e=>{try{let t=d?"".concat(d,"/budget/settings"):"/budget/settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tp=async(e,t,o)=>{try{let t=d?"".concat(d,"/get/config/callbacks"):"/get/config/callbacks",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},th=async e=>{try{let t=d?"".concat(d,"/config/list?config_type=general_settings"):"/config/list?config_type=general_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tg=async e=>{try{let t=d?"".concat(d,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tm=async(e,t)=>{try{let o=d?"".concat(d,"/config/field/info?field_name=").concat(t):"/config/field/info?field_name=".concat(t),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},tf=async(e,t,o)=>{try{let a=d?"".concat(d,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,field_value:o})});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}let n=await r.json();return c.Z.success("Successfully updated value!"),n}catch(e){throw console.error("Failed to set callbacks:",e),e}},tw=async(e,t)=>{try{let o=d?"".concat(d,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},ty=async(e,t,o)=>{try{let a=d?"".concat(d,"/config/field/update"):"/config/field/update",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,field_value:o,config_type:"general_settings"})});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}let n=await r.json();return c.Z.success("Successfully updated value!"),n}catch(e){throw console.error("Failed to set callbacks:",e),e}},tj=async(e,t)=>{try{let o=d?"".concat(d,"/config/field/delete"):"/config/field/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,config_type:"general_settings"})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return c.Z.success("Field reset on proxy"),r}catch(e){throw console.error("Failed to get callbacks:",e),e}},t_=async(e,t)=>{try{let o=d?"".concat(d,"/config/pass_through_endpoint?endpoint_id=").concat(t):"/config/pass_through_endpoint?endpoint_id=".concat(t),a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tC=async(e,t)=>{try{let o=d?"".concat(d,"/config/update"):"/config/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},tk=async e=>{try{let t=d?"".concat(d,"/health"):"/health",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to call /health:",e),e}},tv=async(e,t)=>{try{let o=d?"".concat(d,"/health?model=").concat(encodeURIComponent(t)):"/health?model=".concat(encodeURIComponent(t)),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to call /health for model ".concat(t,":"),e),e}},tT=async e=>{try{let t=d?"".concat(d,"/cache/ping"):"/cache/ping",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error(e)}return await o.json()}catch(e){throw console.error("Failed to call /cache/ping:",e),e}},tE=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:100,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;try{let n=d?"".concat(d,"/health/history"):"/health/history",c=new URLSearchParams;t&&c.append("model",t),o&&c.append("status_filter",o),c.append("limit",a.toString()),c.append("offset",r.toString()),c.toString()&&(n+="?".concat(c.toString()));let l=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw f(e),Error(e)}return await l.json()}catch(e){throw console.error("Failed to call /health/history:",e),e}},tS=async e=>{try{let t=d?"".concat(d,"/health/latest"):"/health/latest",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error(e)}return await o.json()}catch(e){throw console.error("Failed to call /health/latest:",e),e}},tb=async e=>{try{console.log("Getting proxy UI settings"),console.log("proxyBaseUrl in getProxyUISettings:",d);let t=d?"".concat(d,"/sso/get/ui_settings"):"/sso/get/ui_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tF=async e=>{try{let t=d?"".concat(d,"/v2/guardrails/list"):"/v2/guardrails/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get guardrails list:",e),e}},tP=async e=>{try{let t=d?"".concat(d,"/prompts/list"):"/prompts/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get prompts list:",e),e}},tO=async(e,t)=>{try{let o=d?"".concat(d,"/prompts/").concat(t,"/info"):"/prompts/".concat(t,"/info"),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to get prompt info:",e),e}},tB=async(e,t)=>{try{let o=d?"".concat(d,"/prompts"):"/prompts",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create prompt:",e),e}},tN=async(e,t,o)=>{try{let a=d?"".concat(d,"/prompts/").concat(t):"/prompts/".concat(t),r=await fetch(a,{method:"PUT",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}return await r.json()}catch(e){throw console.error("Failed to update prompt:",e),e}},tx=async(e,t)=>{try{let o=d?"".concat(d,"/prompts/").concat(t):"/prompts/".concat(t),a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to delete prompt:",e),e}},tG=async(e,t)=>{try{let o=new FormData;o.append("file",t);let a=d?"".concat(d,"/utils/dotprompt_json_converter"):"/utils/dotprompt_json_converter",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e)},body:o});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}return await r.json()}catch(e){throw console.error("Failed to convert prompt file:",e),e}},tJ=async(e,t,o)=>{try{let a=d?"".concat(d,"/prompts/").concat(t):"/prompts/".concat(t),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}return await r.json()}catch(e){throw console.error("Failed to patch prompt:",e),e}},tA=async(e,t)=>{try{let o=d?"".concat(d,"/guardrails"):"/guardrails",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({guardrail:t})});if(!a.ok){let e=await a.text();throw f(e),Error(e)}let r=await a.json();return console.log("Create guardrail response:",r),r}catch(e){throw console.error("Failed to create guardrail:",e),e}},tU=async(e,t,o)=>{try{let a=d?"".concat(d,"/spend/logs/ui/").concat(t,"?start_date=").concat(encodeURIComponent(o)):"/spend/logs/ui/".concat(t,"?start_date=").concat(encodeURIComponent(o));console.log("Fetching log details from:",a);let r=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}let n=await r.json();return console.log("Fetched log details:",n),n}catch(e){throw console.error("Failed to fetch log details:",e),e}},tR=async e=>{try{let t=d?"".concat(d,"/get/internal_user_settings"):"/get/internal_user_settings";console.log("Fetching SSO settings from:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched SSO settings:",a),a}catch(e){throw console.error("Failed to fetch SSO settings:",e),e}},tI=async(e,t)=>{try{let o=d?"".concat(d,"/update/internal_user_settings"):"/update/internal_user_settings";console.log("Updating internal user settings:",t);let a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();throw f(e),Error(e)}let r=await a.json();return console.log("Updated internal user settings:",r),c.Z.success("Internal user settings updated successfully"),r}catch(e){throw console.error("Failed to update internal user settings:",e),e}},tM=async e=>{try{let t=d?"".concat(d,"/v1/mcp/server"):"/v1/mcp/server";console.log("Fetching MCP servers from:",t);let o=await fetch(t,{method:h.GET,headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched MCP servers:",a),a}catch(e){throw console.error("Failed to fetch MCP servers:",e),e}},tz=async e=>{try{let t=d?"".concat(d,"/v1/mcp/access_groups"):"/v1/mcp/access_groups";console.log("Fetching MCP access groups from:",t);let o=await fetch(t,{method:h.GET,headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched MCP access groups:",a),a.access_groups||[]}catch(e){throw console.error("Failed to fetch MCP access groups:",e),e}},tL=async(e,t)=>{try{console.log("Form Values in createMCPServer:",t);let o=d?"".concat(d,"/v1/mcp/server"):"/v1/mcp/server",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},tD=async(e,t)=>{try{let o=d?"".concat(d,"/v1/mcp/server"):"/v1/mcp/server",a=await fetch(o,{method:"PUT",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to update MCP server:",e),e}},tV=async(e,t)=>{try{let o=(d?"".concat(d):"")+"/v1/mcp/server/".concat(t);console.log("in deleteMCPServer:",t);let a=await fetch(o,{method:h.DELETE,headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}}catch(e){throw console.error("Failed to delete key:",e),e}},tZ=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/mcp-rest/tools/list?server_id=").concat(t):"/mcp-rest/tools/list?server_id=".concat(t);console.log("Fetching MCP tools from:",r);let n={[w]:"Bearer ".concat(e),"Content-Type":"application/json"};a&&o?n["x-mcp-".concat(a,"-authorization")]=o:o&&(n[y]=o);let c=await fetch(r,{method:"GET",headers:n}),l=await c.json();if(console.log("Fetched MCP tools response:",l),!c.ok){if(l.error&&l.message)throw Error(l.message);throw Error("Failed to fetch MCP tools")}return l}catch(e){return console.error("Failed to fetch MCP tools:",e),{tools:[],error:"network_error",message:e instanceof Error?e.message:"Failed to fetch MCP tools"}}},tq=async(e,t,o,a,r)=>{try{let n=d?"".concat(d,"/mcp-rest/tools/call"):"/mcp-rest/tools/call";console.log("Calling MCP tool:",t,"with arguments:",o);let c={[w]:"Bearer ".concat(e),"Content-Type":"application/json"};r?c["x-mcp-".concat(r,"-authorization")]=a:c[y]=a;let l=await fetch(n,{method:"POST",headers:c,body:JSON.stringify({name:t,arguments:o})});if(!l.ok){let e="Network response was not ok",t=null,o=await l.text();try{let a=JSON.parse(o);a.detail?"string"==typeof a.detail?e=a.detail:"object"==typeof a.detail&&(e=a.detail.message||a.detail.error||"An error occurred",t=a.detail):e=a.message||a.error||e}catch(t){console.error("Failed to parse JSON error response:",t),o&&(e=o)}let a=Error(e);throw a.status=l.status,a.statusText=l.statusText,a.details=t,f(e),a}let i=await l.json();return console.log("MCP tool call response:",i),i}catch(e){throw console.error("Failed to call MCP tool:",e),console.error("Error type:",typeof e),e instanceof Error&&(console.error("Error message:",e.message),console.error("Error stack:",e.stack)),e}},tH=async(e,t)=>{try{let o=d?"".concat(d,"/tag/new"):"/tag/new",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();await f(e);return}return await a.json()}catch(e){throw console.error("Error creating tag:",e),e}},tW=async(e,t)=>{try{let o=d?"".concat(d,"/tag/update"):"/tag/update",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();await f(e);return}return await a.json()}catch(e){throw console.error("Error updating tag:",e),e}},tY=async(e,t)=>{try{let o=d?"".concat(d,"/tag/info"):"/tag/info",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({names:t})});if(!a.ok){let e=await a.text();return await f(e),{}}return await a.json()}catch(e){throw console.error("Error getting tag info:",e),e}},tK=async e=>{try{let t=d?"".concat(d,"/tag/list"):"/tag/list",o=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e)}});if(!o.ok){let e=await o.text();return await f(e),{}}return await o.json()}catch(e){throw console.error("Error listing tags:",e),e}},t$=async(e,t)=>{try{let o=d?"".concat(d,"/tag/delete"):"/tag/delete",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({name:t})});if(!a.ok){let e=await a.text();await f(e);return}return await a.json()}catch(e){throw console.error("Error deleting tag:",e),e}},tQ=async e=>{try{let t=d?"".concat(d,"/get/default_team_settings"):"/get/default_team_settings";console.log("Fetching default team settings from:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched default team settings:",a),a}catch(e){throw console.error("Failed to fetch default team settings:",e),e}},tX=async(e,t)=>{try{let o=d?"".concat(d,"/update/default_team_settings"):"/update/default_team_settings";console.log("Updating default team settings:",t);let a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("Updated default team settings:",r),c.Z.success("Default team settings updated successfully"),r}catch(e){throw console.error("Failed to update default team settings:",e),e}},t0=async(e,t)=>{try{let o=d?"".concat(d,"/team/permissions_list?team_id=").concat(t):"/team/permissions_list?team_id=".concat(t),a=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("Team permissions response:",r),r}catch(e){throw console.error("Failed to get team permissions:",e),e}},t1=async(e,t,o)=>{try{let a=d?"".concat(d,"/team/permissions_update"):"/team/permissions_update",r=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({team_id:t,team_member_permissions:o})});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}let n=await r.json();return console.log("Team permissions response:",n),n}catch(e){throw console.error("Failed to update team permissions:",e),e}},t4=async(e,t)=>{try{let o=d?"".concat(d,"/spend/logs/session/ui?session_id=").concat(encodeURIComponent(t)):"/spend/logs/session/ui?session_id=".concat(encodeURIComponent(t)),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to fetch session logs:",e),e}},t2=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/new"):"/vector_store/new",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to create vector store")}return await a.json()}catch(e){throw console.error("Error creating vector store:",e),e}},t3=async function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1],arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let t=d?"".concat(d,"/vector_store/list"):"/vector_store/list",o=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}});if(!o.ok){let e=await o.json();throw Error(e.detail||"Failed to list vector stores")}return await o.json()}catch(e){throw console.error("Error listing vector stores:",e),e}},t5=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/delete"):"/vector_store/delete",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({vector_store_id:t})});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to delete vector store")}return await a.json()}catch(e){throw console.error("Error deleting vector store:",e),e}},t6=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/info"):"/vector_store/info",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({vector_store_id:t})});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to get vector store info")}return await a.json()}catch(e){throw console.error("Error getting vector store info:",e),e}},t9=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/update"):"/vector_store/update",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to update vector store")}return await a.json()}catch(e){throw console.error("Error updating vector store:",e),e}},t7=async e=>{try{let t=d?"".concat(d,"/email/event_settings"):"/email/event_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to get email event settings")}let a=await o.json();return console.log("Email event settings response:",a),a}catch(e){throw console.error("Failed to get email event settings:",e),e}},t8=async(e,t)=>{try{let o=d?"".concat(d,"/email/event_settings"):"/email/event_settings",a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();throw f(e),Error("Failed to update email event settings")}let r=await a.json();return console.log("Update email event settings response:",r),r}catch(e){throw console.error("Failed to update email event settings:",e),e}},oe=async e=>{try{let t=d?"".concat(d,"/email/event_settings/reset"):"/email/event_settings/reset",o=await fetch(t,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to reset email event settings")}let a=await o.json();return console.log("Reset email event settings response:",a),a}catch(e){throw console.error("Failed to reset email event settings:",e),e}},ot=async(e,t)=>{try{let o=d?"".concat(d,"/guardrails/").concat(t):"/guardrails/".concat(t),a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw f(e),Error(e)}let r=await a.json();return console.log("Delete guardrail response:",r),r}catch(e){throw console.error("Failed to delete guardrail:",e),e}},oo=async e=>{try{let t=d?"".concat(d,"/guardrails/ui/add_guardrail_settings"):"/guardrails/ui/add_guardrail_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to get guardrail UI settings")}let a=await o.json();return console.log("Guardrail UI settings response:",a),a}catch(e){throw console.error("Failed to get guardrail UI settings:",e),e}},oa=async e=>{try{let t=d?"".concat(d,"/guardrails/ui/provider_specific_params"):"/guardrails/ui/provider_specific_params",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to get guardrail provider specific parameters")}let a=await o.json();return console.log("Guardrail provider specific params response:",a),a}catch(e){throw console.error("Failed to get guardrail provider specific parameters:",e),e}},or=async(e,t)=>{try{let o=d?"".concat(d,"/guardrails/").concat(t,"/info"):"/guardrails/".concat(t,"/info"),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw f(e),Error("Failed to get guardrail info")}let r=await a.json();return console.log("Guardrail info response:",r),r}catch(e){throw console.error("Failed to get guardrail info:",e),e}},on=async(e,t,o)=>{try{let a=d?"".concat(d,"/guardrails/").concat(t):"/guardrails/".concat(t),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.text();throw f(e),Error("Failed to update guardrail")}let n=await r.json();return console.log("Update guardrail response:",n),n}catch(e){throw console.error("Failed to update guardrail:",e),e}},oc=async e=>{try{let t=d?"".concat(d,"/get/sso_settings"):"/get/sso_settings";console.log("Fetching SSO configuration from:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched SSO configuration:",a),a}catch(e){throw console.error("Failed to fetch SSO configuration:",e),e}},ol=async(e,t)=>{try{let o=d?"".concat(d,"/update/sso_settings"):"/update/sso_settings";console.log("Updating SSO configuration:",t);let a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=await a.json();return console.log("Updated SSO configuration:",r),r}catch(e){throw console.error("Failed to update SSO configuration:",e),e}},oi=async(e,t,o,a,r)=>{try{let t=d?"".concat(d,"/audit"):"/audit",o=new URLSearchParams;a&&o.append("page",a.toString()),r&&o.append("page_size",r.toString());let n=o.toString();n&&(t+="?".concat(n));let c=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.json(),t=oT(e);throw f(t),Error(t)}return await c.json()}catch(e){throw console.error("Failed to fetch audit logs:",e),e}},os=async e=>{try{let t=d?"".concat(d,"/user/available_users"):"/user/available_users",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e)}});if(!o.ok){if(404===o.status)return null;let e=await o.text();throw f(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to fetch remaining users:",e),e}},od=async(e,t,o)=>{try{let a=d?"".concat(d,"/config/pass_through_endpoint/").concat(encodeURIComponent(t)):"/config/pass_through_endpoint/".concat(encodeURIComponent(t)),r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oT(e);throw f(t),Error(t)}let n=await r.json();return c.Z.success("Pass through endpoint updated successfully"),n}catch(e){throw console.error("Failed to update pass through endpoint:",e),e}},ou=async(e,t)=>{try{let o=d?"".concat(d,"/config/pass_through_endpoint?endpoint_id=").concat(encodeURIComponent(t)):"/config/pass_through_endpoint?endpoint_id=".concat(encodeURIComponent(t)),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}let r=(await a.json()).endpoints;if(!r||0===r.length)throw Error("Pass through endpoint not found");return r[0]}catch(e){throw console.error("Failed to get pass through endpoint info:",e),e}},op=async(e,t)=>{try{let o=d?"".concat(d,"/config/callback/delete"):"/config/callback/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({callback_name:t})});if(!a.ok){let e=await a.json(),t=oT(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to delete specific callback:",e),e}},oh=async e=>{let t=p(),o=await fetch("".concat(t,"/v1/mcp/tools"),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw Error("HTTP error! status: ".concat(o.status));return await o.json()},og=async(e,t)=>{try{console.log("Testing MCP connection with config:",JSON.stringify(t));let a=d?"".concat(d,"/mcp-rest/test/connection"):"/mcp-rest/test/connection",r=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",[w]:"Bearer ".concat(e)},body:JSON.stringify(t)}),n=r.headers.get("content-type");if(!n||!n.includes("application/json")){let e=await r.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(r.status,": ").concat(r.statusText,"). Check network tab for details."))}let c=await r.json();if(!r.ok||"error"===c.status){if("error"===c.status);else{var o;return{status:"error",message:(null===(o=c.error)||void 0===o?void 0:o.message)||"MCP connection test failed: ".concat(r.status," ").concat(r.statusText)}}}return c}catch(e){throw console.error("MCP connection test error:",e),e}},om=async(e,t)=>{try{console.log("Testing MCP tools list with config:",JSON.stringify(t));let o=d?"".concat(d,"/mcp-rest/test/tools/list"):"/mcp-rest/test/tools/list",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",[w]:"Bearer ".concat(e)},body:JSON.stringify(t)}),r=a.headers.get("content-type");if(!r||!r.includes("application/json")){let e=await a.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(a.status,": ").concat(a.statusText,"). Check network tab for details."))}let n=await a.json();if((!a.ok||n.error)&&!n.error)return{tools:[],error:"request_failed",message:n.message||"MCP tools list failed: ".concat(a.status," ").concat(a.statusText)};return n}catch(e){throw console.error("MCP tools list test error:",e),e}},of=async(e,t,o)=>{try{let a="".concat(p(),"/v1/vector_stores/").concat(t,"/search"),r=await fetch(a,{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({query:o})});if(!r.ok){let e=await r.text();return await f(e),null}return await r.json()}catch(e){throw console.error("Error testing vector store search:",e),e}},ow=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:50,n=arguments.length>5?arguments[5]:void 0;try{let c=d?"".concat(d,"/tag/user-agent/analytics"):"/tag/user-agent/analytics",l=new URLSearchParams,i=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)};l.append("start_date",i(t)),l.append("end_date",i(o)),l.append("page",a.toString()),l.append("page_size",r.toString()),n&&l.append("user_agent_filter",n);let s=l.toString();s&&(c+="?".concat(s));let u=await fetch(c,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!u.ok){let e=await u.json(),t=oT(e);throw f(t),Error(t)}return await u.json()}catch(e){throw console.error("Failed to fetch user agent analytics:",e),e}},oy=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/dau"):"/tag/dau",n=new URLSearchParams;n.append("end_date",(e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)})(t)),a&&a.length>0?a.forEach(e=>{n.append("tag_filters",e)}):o&&n.append("tag_filter",o);let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oT(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch DAU:",e),e}},oj=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/wau"):"/tag/wau",n=new URLSearchParams;n.append("end_date",(e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)})(t)),a&&a.length>0?a.forEach(e=>{n.append("tag_filters",e)}):o&&n.append("tag_filter",o);let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oT(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch WAU:",e),e}},o_=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/mau"):"/tag/mau",n=new URLSearchParams;n.append("end_date",(e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)})(t)),a&&a.length>0?a.forEach(e=>{n.append("tag_filters",e)}):o&&n.append("tag_filter",o);let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oT(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch MAU:",e),e}},oC=async e=>{try{let t=d?"".concat(d,"/tag/distinct"):"/tag/distinct",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oT(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to fetch distinct tags:",e),e}},ok=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/summary"):"/tag/summary",n=new URLSearchParams,c=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)};n.append("start_date",c(t)),n.append("end_date",c(o)),a&&a.length>0&&a.forEach(e=>{n.append("tag_filters",e)});let l=n.toString();l&&(r+="?".concat(l));let i=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oT(e);throw f(t),Error(t)}return await i.json()}catch(e){throw console.error("Failed to fetch user agent summary:",e),e}},ov=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:50,a=arguments.length>3?arguments[3]:void 0;try{let r=d?"".concat(d,"/tag/user-agent/per-user-analytics"):"/tag/user-agent/per-user-analytics",n=new URLSearchParams;n.append("page",t.toString()),n.append("page_size",o.toString()),a&&a.length>0&&a.forEach(e=>{n.append("tag_filters",e)});let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oT(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch per-user analytics:",e),e}},oT=e=>(null==e?void 0:e.error)&&(e.error.message||e.error)||(null==e?void 0:e.message)||(null==e?void 0:e.detail)||(null==e?void 0:e.error)||JSON.stringify(e)},85968:function(e,t,o){o.d(t,{O:function(){return a}});let a=e=>{if(!e)return"An unknown error occurred";if("string"==typeof e)return e;if(e.message)try{let t=JSON.parse(e.message);if(t.error&&t.error.message)return t.error.message;return"string"==typeof t?t:JSON.stringify(t,null,2)}catch(t){return e.message}if(e.response&&e.response.data){if("string"==typeof e.response.data)return e.response.data;if(e.response.data.message)return e.response.data.message;if(e.response.data.error)return"string"==typeof e.response.data.error?e.response.data.error:e.response.data.error.message||JSON.stringify(e.response.data.error)}return String(e)}},3914:function(e,t,o){function a(){let e=window.location.hostname,t=["Lax","Strict","None"];["/","/ui"].forEach(o=>{document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,";"),document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,"; domain=").concat(e,";"),t.forEach(t=>{let a="None"===t?" Secure;":"";document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,"; SameSite=").concat(t,";").concat(a),document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,"; domain=").concat(e,"; SameSite=").concat(t,";").concat(a)})}),console.log("After clearing cookies:",document.cookie)}function r(e){let t=document.cookie.split("; ").find(t=>t.startsWith(e+"="));return t?t.split("=")[1]:null}o.d(t,{b:function(){return a},e:function(){return r}})}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/50-d0da2dd7acce2eb9.js b/litellm/proxy/_experimental/out/_next/static/chunks/50-fe160ecfa8bc4059.js similarity index 100% rename from litellm/proxy/_experimental/out/_next/static/chunks/50-d0da2dd7acce2eb9.js rename to litellm/proxy/_experimental/out/_next/static/chunks/50-fe160ecfa8bc4059.js diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/851-0a73701a3a0b0187.js b/litellm/proxy/_experimental/out/_next/static/chunks/851-7416960163d4d982.js similarity index 100% rename from litellm/proxy/_experimental/out/_next/static/chunks/851-0a73701a3a0b0187.js rename to litellm/proxy/_experimental/out/_next/static/chunks/851-7416960163d4d982.js diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/layout-df4939b4f2ec37d7.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/layout-21dfaab0131d6703.js similarity index 59% rename from litellm/proxy/_experimental/out/_next/static/chunks/app/layout-df4939b4f2ec37d7.js rename to litellm/proxy/_experimental/out/_next/static/chunks/app/layout-21dfaab0131d6703.js index a6801cb335f..91430e42f46 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/layout-df4939b4f2ec37d7.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/layout-21dfaab0131d6703.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{85210:function(n,e,t){Promise.resolve().then(t.t.bind(t,39974,23)),Promise.resolve().then(t.t.bind(t,2778,23))},2778:function(){},39974:function(n){n.exports={style:{fontFamily:"'__Inter_1c856b', '__Inter_Fallback_1c856b'",fontStyle:"normal"},className:"__className_1c856b"}}},function(n){n.O(0,[919,986,971,117,744],function(){return n(n.s=85210)}),_N_E=n.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{96443:function(n,e,t){Promise.resolve().then(t.t.bind(t,39974,23)),Promise.resolve().then(t.t.bind(t,2778,23))},2778:function(){},39974:function(n){n.exports={style:{fontFamily:"'__Inter_1c856b', '__Inter_Fallback_1c856b'",fontStyle:"normal"},className:"__className_1c856b"}}},function(n){n.O(0,[919,986,971,117,744],function(){return n(n.s=96443)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-d7915f579b770030.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-0517a053ea1a258a.js similarity index 63% rename from litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-d7915f579b770030.js rename to litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-0517a053ea1a258a.js index 67a46d33fa8..e985fca1651 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-d7915f579b770030.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-0517a053ea1a258a.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[418],{67355:function(e,n,t){Promise.resolve().then(t.bind(t,52829))},52829:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return f}});var u=t(57437),s=t(2265),c=t(99376),r=t(72162);function f(){let e=(0,c.useSearchParams)().get("key"),[n,t]=(0,s.useState)(null);return(0,s.useEffect)(()=>{e&&t(e)},[e]),(0,u.jsx)(r.Z,{accessToken:n})}}},function(e){e.O(0,[50,521,49,162,971,117,744],function(){return e(e.s=67355)}),_N_E=e.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[418],{21024:function(e,n,t){Promise.resolve().then(t.bind(t,52829))},52829:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return f}});var u=t(57437),s=t(2265),c=t(99376),r=t(72162);function f(){let e=(0,c.useSearchParams)().get("key"),[n,t]=(0,s.useState)(null);return(0,s.useEffect)(()=>{e&&t(e)},[e]),(0,u.jsx)(r.Z,{accessToken:n})}}},function(e){e.O(0,[50,521,49,162,971,117,744],function(){return e(e.s=21024)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-2f23c22a47b20607.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-c69f5ef890b4b0dc.js similarity index 69% rename from litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-2f23c22a47b20607.js rename to litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-c69f5ef890b4b0dc.js index 93d58fb9868..26836781e51 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-2f23c22a47b20607.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-c69f5ef890b4b0dc.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25],{38520:function(e,n,u){Promise.resolve().then(u.bind(u,22775))},22775:function(e,n,u){"use strict";u.r(n),u.d(n,{default:function(){return f}});var t=u(57437),s=u(2265),r=u(99376),c=u(97851);function f(){let e=(0,r.useSearchParams)().get("key"),[n,u]=(0,s.useState)(null);return(0,s.useEffect)(()=>{e&&u(e)},[e]),(0,t.jsx)(c.Z,{accessToken:n,publicPage:!0,premiumUser:!1,userRole:null})}}},function(e){e.O(0,[50,521,866,49,162,851,971,117,744],function(){return e(e.s=38520)}),_N_E=e.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25],{64563:function(e,n,u){Promise.resolve().then(u.bind(u,22775))},22775:function(e,n,u){"use strict";u.r(n),u.d(n,{default:function(){return f}});var t=u(57437),s=u(2265),r=u(99376),c=u(97851);function f(){let e=(0,r.useSearchParams)().get("key"),[n,u]=(0,s.useState)(null);return(0,s.useEffect)(()=>{e&&u(e)},[e]),(0,t.jsx)(c.Z,{accessToken:n,publicPage:!0,premiumUser:!1,userRole:null})}}},function(e){e.O(0,[50,521,866,49,162,851,971,117,744],function(){return e(e.s=64563)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-1fd26064f407ad1d.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-673bb6c3ebcd355a.js similarity index 98% rename from litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-1fd26064f407ad1d.js rename to litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-673bb6c3ebcd355a.js index 4f336dd30c5..f21d4fa29ee 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-1fd26064f407ad1d.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-673bb6c3ebcd355a.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[461],{2532:function(e,s,r){Promise.resolve().then(r.bind(r,12011))},49804:function(e,s,r){"use strict";r.d(s,{Z:function(){return i}});var l=r(5853),o=r(97324),n=r(1153),t=r(2265),a=r(9496);let c=(0,n.fn)("Col"),i=t.forwardRef((e,s)=>{let{numColSpan:r=1,numColSpanSm:n,numColSpanMd:i,numColSpanLg:d,children:m,className:u}=e,g=(0,l._T)(e,["numColSpan","numColSpanSm","numColSpanMd","numColSpanLg","children","className"]),p=(e,s)=>e&&Object.keys(s).includes(String(e))?s[e]:"";return t.createElement("div",Object.assign({ref:s,className:(0,o.q)(c("root"),(()=>{let e=p(r,a.PT),s=p(n,a.SP),l=p(i,a.VS),t=p(d,a._w);return(0,o.q)(e,s,l,t)})(),u)},g),m)});i.displayName="Col"},67101:function(e,s,r){"use strict";r.d(s,{Z:function(){return d}});var l=r(5853),o=r(97324),n=r(1153),t=r(2265),a=r(9496);let c=(0,n.fn)("Grid"),i=(e,s)=>e&&Object.keys(s).includes(String(e))?s[e]:"",d=t.forwardRef((e,s)=>{let{numItems:r=1,numItemsSm:n,numItemsMd:d,numItemsLg:m,children:u,className:g}=e,p=(0,l._T)(e,["numItems","numItemsSm","numItemsMd","numItemsLg","children","className"]),f=i(r,a._m),h=i(n,a.LH),b=i(d,a.l5),w=i(m,a.N4),x=(0,o.q)(f,h,b,w);return t.createElement("div",Object.assign({ref:s,className:(0,o.q)(c("root"),"grid",x,g)},p),u)});d.displayName="Grid"},9496:function(e,s,r){"use strict";r.d(s,{LH:function(){return o},N4:function(){return t},PT:function(){return a},SP:function(){return c},VS:function(){return i},_m:function(){return l},_w:function(){return d},l5:function(){return n}});let l={0:"grid-cols-none",1:"grid-cols-1",2:"grid-cols-2",3:"grid-cols-3",4:"grid-cols-4",5:"grid-cols-5",6:"grid-cols-6",7:"grid-cols-7",8:"grid-cols-8",9:"grid-cols-9",10:"grid-cols-10",11:"grid-cols-11",12:"grid-cols-12"},o={0:"sm:grid-cols-none",1:"sm:grid-cols-1",2:"sm:grid-cols-2",3:"sm:grid-cols-3",4:"sm:grid-cols-4",5:"sm:grid-cols-5",6:"sm:grid-cols-6",7:"sm:grid-cols-7",8:"sm:grid-cols-8",9:"sm:grid-cols-9",10:"sm:grid-cols-10",11:"sm:grid-cols-11",12:"sm:grid-cols-12"},n={0:"md:grid-cols-none",1:"md:grid-cols-1",2:"md:grid-cols-2",3:"md:grid-cols-3",4:"md:grid-cols-4",5:"md:grid-cols-5",6:"md:grid-cols-6",7:"md:grid-cols-7",8:"md:grid-cols-8",9:"md:grid-cols-9",10:"md:grid-cols-10",11:"md:grid-cols-11",12:"md:grid-cols-12"},t={0:"lg:grid-cols-none",1:"lg:grid-cols-1",2:"lg:grid-cols-2",3:"lg:grid-cols-3",4:"lg:grid-cols-4",5:"lg:grid-cols-5",6:"lg:grid-cols-6",7:"lg:grid-cols-7",8:"lg:grid-cols-8",9:"lg:grid-cols-9",10:"lg:grid-cols-10",11:"lg:grid-cols-11",12:"lg:grid-cols-12"},a={1:"col-span-1",2:"col-span-2",3:"col-span-3",4:"col-span-4",5:"col-span-5",6:"col-span-6",7:"col-span-7",8:"col-span-8",9:"col-span-9",10:"col-span-10",11:"col-span-11",12:"col-span-12",13:"col-span-13"},c={1:"sm:col-span-1",2:"sm:col-span-2",3:"sm:col-span-3",4:"sm:col-span-4",5:"sm:col-span-5",6:"sm:col-span-6",7:"sm:col-span-7",8:"sm:col-span-8",9:"sm:col-span-9",10:"sm:col-span-10",11:"sm:col-span-11",12:"sm:col-span-12",13:"sm:col-span-13"},i={1:"md:col-span-1",2:"md:col-span-2",3:"md:col-span-3",4:"md:col-span-4",5:"md:col-span-5",6:"md:col-span-6",7:"md:col-span-7",8:"md:col-span-8",9:"md:col-span-9",10:"md:col-span-10",11:"md:col-span-11",12:"md:col-span-12",13:"md:col-span-13"},d={1:"lg:col-span-1",2:"lg:col-span-2",3:"lg:col-span-3",4:"lg:col-span-4",5:"lg:col-span-5",6:"lg:col-span-6",7:"lg:col-span-7",8:"lg:col-span-8",9:"lg:col-span-9",10:"lg:col-span-10",11:"lg:col-span-11",12:"lg:col-span-12",13:"lg:col-span-13"}},94789:function(e,s,r){"use strict";r.d(s,{Z:function(){return i}});var l=r(5853),o=r(2265),n=r(26898),t=r(97324),a=r(1153);let c=(0,a.fn)("Callout"),i=o.forwardRef((e,s)=>{let{title:r,icon:i,color:d,className:m,children:u}=e,g=(0,l._T)(e,["title","icon","color","className","children"]);return o.createElement("div",Object.assign({ref:s,className:(0,t.q)(c("root"),"flex flex-col overflow-hidden rounded-tremor-default text-tremor-default border-l-4 py-3 pr-3 pl-4",d?(0,t.q)((0,a.bM)(d,n.K.background).bgColor,(0,a.bM)(d,n.K.darkBorder).borderColor,(0,a.bM)(d,n.K.darkText).textColor,"dark:bg-opacity-10 bg-opacity-10"):(0,t.q)("bg-tremor-brand-faint border-tremor-brand-emphasis text-tremor-brand-emphasis","dark:bg-dark-tremor-brand-muted/70 dark:border-dark-tremor-brand-emphasis dark:text-dark-tremor-brand-emphasis"),m)},g),o.createElement("div",{className:(0,t.q)(c("header"),"flex items-start")},i?o.createElement(i,{className:(0,t.q)(c("icon"),"flex-none h-5 w-5 mr-1.5")}):null,o.createElement("h4",{className:(0,t.q)(c("title"),"font-semibold")},r)),o.createElement("p",{className:(0,t.q)(c("body"),"overflow-y-auto",u?"mt-2":"")},u))});i.displayName="Callout"},12011:function(e,s,r){"use strict";r.r(s),r.d(s,{default:function(){return k}});var l=r(57437),o=r(2265),n=r(99376),t=r(20831),a=r(94789),c=r(12514),i=r(49804),d=r(67101),m=r(84264),u=r(49566),g=r(96761),p=r(84566),f=r(19250),h=r(14474),b=r(13634),w=r(73002),x=r(3914);function k(){let[e]=b.Z.useForm(),s=(0,n.useSearchParams)();(0,x.e)("token");let r=s.get("invitation_id"),k=s.get("action"),[S,N]=(0,o.useState)(null),[y,_]=(0,o.useState)(""),[j,v]=(0,o.useState)(""),[C,Z]=(0,o.useState)(null),[E,I]=(0,o.useState)(""),[q,O]=(0,o.useState)(""),[P,T]=(0,o.useState)(!0);return(0,o.useEffect)(()=>{(0,f.getUiConfig)().then(e=>{console.log("ui config in onboarding.tsx:",e),T(!1)})},[]),(0,o.useEffect)(()=>{r&&!P&&(0,f.getOnboardingCredentials)(r).then(e=>{let s=e.login_url;console.log("login_url:",s),I(s);let r=e.token,l=(0,h.o)(r);O(r),console.log("decoded:",l),N(l.key),console.log("decoded user email:",l.user_email),v(l.user_email),Z(l.user_id)})},[r,P]),(0,l.jsx)("div",{className:"mx-auto w-full max-w-md mt-10",children:(0,l.jsxs)(c.Z,{children:[(0,l.jsx)(g.Z,{className:"text-sm mb-5 text-center",children:"\uD83D\uDE85 LiteLLM"}),(0,l.jsx)(g.Z,{className:"text-xl",children:"reset_password"===k?"Reset Password":"Sign up"}),(0,l.jsx)(m.Z,{children:"reset_password"===k?"Reset your password to access Admin UI.":"Claim your user account to login to Admin UI."}),"reset_password"!==k&&(0,l.jsx)(a.Z,{className:"mt-4",title:"SSO",icon:p.GH$,color:"sky",children:(0,l.jsxs)(d.Z,{numItems:2,className:"flex justify-between items-center",children:[(0,l.jsx)(i.Z,{children:"SSO is under the Enterprise Tier."}),(0,l.jsx)(i.Z,{children:(0,l.jsx)(t.Z,{variant:"primary",className:"mb-2",children:(0,l.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"Get Free Trial"})})})]})}),(0,l.jsxs)(b.Z,{className:"mt-10 mb-5 mx-auto",layout:"vertical",onFinish:e=>{console.log("in handle submit. accessToken:",S,"token:",q,"formValues:",e),S&&q&&(e.user_email=j,C&&r&&(0,f.claimOnboardingToken)(S,r,C,e.password).then(e=>{let s="/ui/";s+="?login=success",document.cookie="token="+q,console.log("redirecting to:",s);let r=(0,f.getProxyBaseUrl)();console.log("proxyBaseUrl:",r),r?window.location.href=r+s:window.location.href=s}))},children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(b.Z.Item,{label:"Email Address",name:"user_email",children:(0,l.jsx)(u.Z,{type:"email",disabled:!0,value:j,defaultValue:j,className:"max-w-md"})}),(0,l.jsx)(b.Z.Item,{label:"Password",name:"password",rules:[{required:!0,message:"password required to sign up"}],help:"reset_password"===k?"Enter your new password":"Create a password for your account",children:(0,l.jsx)(u.Z,{placeholder:"",type:"password",className:"max-w-md"})})]}),(0,l.jsx)("div",{className:"mt-10",children:(0,l.jsx)(w.ZP,{htmlType:"submit",children:"reset_password"===k?"Reset Password":"Sign Up"})})]})]})})}},14474:function(e,s,r){"use strict";r.d(s,{o:function(){return o}});class l extends Error{}function o(e,s){let r;if("string"!=typeof e)throw new l("Invalid token specified: must be a string");s||(s={});let o=!0===s.header?0:1,n=e.split(".")[o];if("string"!=typeof n)throw new l(`Invalid token specified: missing part #${o+1}`);try{r=function(e){let s=e.replace(/-/g,"+").replace(/_/g,"/");switch(s.length%4){case 0:break;case 2:s+="==";break;case 3:s+="=";break;default:throw Error("base64 string is not of the correct length")}try{var r;return r=s,decodeURIComponent(atob(r).replace(/(.)/g,(e,s)=>{let r=s.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}))}catch(e){return atob(s)}}(n)}catch(e){throw new l(`Invalid token specified: invalid base64 for part #${o+1} (${e.message})`)}try{return JSON.parse(r)}catch(e){throw new l(`Invalid token specified: invalid json for part #${o+1} (${e.message})`)}}l.prototype.name="InvalidTokenError"}},function(e){e.O(0,[665,50,49,971,117,744],function(){return e(e.s=2532)}),_N_E=e.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[461],{8672:function(e,s,r){Promise.resolve().then(r.bind(r,12011))},49804:function(e,s,r){"use strict";r.d(s,{Z:function(){return i}});var l=r(5853),o=r(97324),n=r(1153),t=r(2265),a=r(9496);let c=(0,n.fn)("Col"),i=t.forwardRef((e,s)=>{let{numColSpan:r=1,numColSpanSm:n,numColSpanMd:i,numColSpanLg:d,children:m,className:u}=e,g=(0,l._T)(e,["numColSpan","numColSpanSm","numColSpanMd","numColSpanLg","children","className"]),p=(e,s)=>e&&Object.keys(s).includes(String(e))?s[e]:"";return t.createElement("div",Object.assign({ref:s,className:(0,o.q)(c("root"),(()=>{let e=p(r,a.PT),s=p(n,a.SP),l=p(i,a.VS),t=p(d,a._w);return(0,o.q)(e,s,l,t)})(),u)},g),m)});i.displayName="Col"},67101:function(e,s,r){"use strict";r.d(s,{Z:function(){return d}});var l=r(5853),o=r(97324),n=r(1153),t=r(2265),a=r(9496);let c=(0,n.fn)("Grid"),i=(e,s)=>e&&Object.keys(s).includes(String(e))?s[e]:"",d=t.forwardRef((e,s)=>{let{numItems:r=1,numItemsSm:n,numItemsMd:d,numItemsLg:m,children:u,className:g}=e,p=(0,l._T)(e,["numItems","numItemsSm","numItemsMd","numItemsLg","children","className"]),f=i(r,a._m),h=i(n,a.LH),b=i(d,a.l5),w=i(m,a.N4),x=(0,o.q)(f,h,b,w);return t.createElement("div",Object.assign({ref:s,className:(0,o.q)(c("root"),"grid",x,g)},p),u)});d.displayName="Grid"},9496:function(e,s,r){"use strict";r.d(s,{LH:function(){return o},N4:function(){return t},PT:function(){return a},SP:function(){return c},VS:function(){return i},_m:function(){return l},_w:function(){return d},l5:function(){return n}});let l={0:"grid-cols-none",1:"grid-cols-1",2:"grid-cols-2",3:"grid-cols-3",4:"grid-cols-4",5:"grid-cols-5",6:"grid-cols-6",7:"grid-cols-7",8:"grid-cols-8",9:"grid-cols-9",10:"grid-cols-10",11:"grid-cols-11",12:"grid-cols-12"},o={0:"sm:grid-cols-none",1:"sm:grid-cols-1",2:"sm:grid-cols-2",3:"sm:grid-cols-3",4:"sm:grid-cols-4",5:"sm:grid-cols-5",6:"sm:grid-cols-6",7:"sm:grid-cols-7",8:"sm:grid-cols-8",9:"sm:grid-cols-9",10:"sm:grid-cols-10",11:"sm:grid-cols-11",12:"sm:grid-cols-12"},n={0:"md:grid-cols-none",1:"md:grid-cols-1",2:"md:grid-cols-2",3:"md:grid-cols-3",4:"md:grid-cols-4",5:"md:grid-cols-5",6:"md:grid-cols-6",7:"md:grid-cols-7",8:"md:grid-cols-8",9:"md:grid-cols-9",10:"md:grid-cols-10",11:"md:grid-cols-11",12:"md:grid-cols-12"},t={0:"lg:grid-cols-none",1:"lg:grid-cols-1",2:"lg:grid-cols-2",3:"lg:grid-cols-3",4:"lg:grid-cols-4",5:"lg:grid-cols-5",6:"lg:grid-cols-6",7:"lg:grid-cols-7",8:"lg:grid-cols-8",9:"lg:grid-cols-9",10:"lg:grid-cols-10",11:"lg:grid-cols-11",12:"lg:grid-cols-12"},a={1:"col-span-1",2:"col-span-2",3:"col-span-3",4:"col-span-4",5:"col-span-5",6:"col-span-6",7:"col-span-7",8:"col-span-8",9:"col-span-9",10:"col-span-10",11:"col-span-11",12:"col-span-12",13:"col-span-13"},c={1:"sm:col-span-1",2:"sm:col-span-2",3:"sm:col-span-3",4:"sm:col-span-4",5:"sm:col-span-5",6:"sm:col-span-6",7:"sm:col-span-7",8:"sm:col-span-8",9:"sm:col-span-9",10:"sm:col-span-10",11:"sm:col-span-11",12:"sm:col-span-12",13:"sm:col-span-13"},i={1:"md:col-span-1",2:"md:col-span-2",3:"md:col-span-3",4:"md:col-span-4",5:"md:col-span-5",6:"md:col-span-6",7:"md:col-span-7",8:"md:col-span-8",9:"md:col-span-9",10:"md:col-span-10",11:"md:col-span-11",12:"md:col-span-12",13:"md:col-span-13"},d={1:"lg:col-span-1",2:"lg:col-span-2",3:"lg:col-span-3",4:"lg:col-span-4",5:"lg:col-span-5",6:"lg:col-span-6",7:"lg:col-span-7",8:"lg:col-span-8",9:"lg:col-span-9",10:"lg:col-span-10",11:"lg:col-span-11",12:"lg:col-span-12",13:"lg:col-span-13"}},94789:function(e,s,r){"use strict";r.d(s,{Z:function(){return i}});var l=r(5853),o=r(2265),n=r(26898),t=r(97324),a=r(1153);let c=(0,a.fn)("Callout"),i=o.forwardRef((e,s)=>{let{title:r,icon:i,color:d,className:m,children:u}=e,g=(0,l._T)(e,["title","icon","color","className","children"]);return o.createElement("div",Object.assign({ref:s,className:(0,t.q)(c("root"),"flex flex-col overflow-hidden rounded-tremor-default text-tremor-default border-l-4 py-3 pr-3 pl-4",d?(0,t.q)((0,a.bM)(d,n.K.background).bgColor,(0,a.bM)(d,n.K.darkBorder).borderColor,(0,a.bM)(d,n.K.darkText).textColor,"dark:bg-opacity-10 bg-opacity-10"):(0,t.q)("bg-tremor-brand-faint border-tremor-brand-emphasis text-tremor-brand-emphasis","dark:bg-dark-tremor-brand-muted/70 dark:border-dark-tremor-brand-emphasis dark:text-dark-tremor-brand-emphasis"),m)},g),o.createElement("div",{className:(0,t.q)(c("header"),"flex items-start")},i?o.createElement(i,{className:(0,t.q)(c("icon"),"flex-none h-5 w-5 mr-1.5")}):null,o.createElement("h4",{className:(0,t.q)(c("title"),"font-semibold")},r)),o.createElement("p",{className:(0,t.q)(c("body"),"overflow-y-auto",u?"mt-2":"")},u))});i.displayName="Callout"},12011:function(e,s,r){"use strict";r.r(s),r.d(s,{default:function(){return k}});var l=r(57437),o=r(2265),n=r(99376),t=r(20831),a=r(94789),c=r(12514),i=r(49804),d=r(67101),m=r(84264),u=r(49566),g=r(96761),p=r(84566),f=r(19250),h=r(14474),b=r(13634),w=r(73002),x=r(3914);function k(){let[e]=b.Z.useForm(),s=(0,n.useSearchParams)();(0,x.e)("token");let r=s.get("invitation_id"),k=s.get("action"),[S,N]=(0,o.useState)(null),[y,_]=(0,o.useState)(""),[j,v]=(0,o.useState)(""),[C,Z]=(0,o.useState)(null),[E,I]=(0,o.useState)(""),[q,O]=(0,o.useState)(""),[P,T]=(0,o.useState)(!0);return(0,o.useEffect)(()=>{(0,f.getUiConfig)().then(e=>{console.log("ui config in onboarding.tsx:",e),T(!1)})},[]),(0,o.useEffect)(()=>{r&&!P&&(0,f.getOnboardingCredentials)(r).then(e=>{let s=e.login_url;console.log("login_url:",s),I(s);let r=e.token,l=(0,h.o)(r);O(r),console.log("decoded:",l),N(l.key),console.log("decoded user email:",l.user_email),v(l.user_email),Z(l.user_id)})},[r,P]),(0,l.jsx)("div",{className:"mx-auto w-full max-w-md mt-10",children:(0,l.jsxs)(c.Z,{children:[(0,l.jsx)(g.Z,{className:"text-sm mb-5 text-center",children:"\uD83D\uDE85 LiteLLM"}),(0,l.jsx)(g.Z,{className:"text-xl",children:"reset_password"===k?"Reset Password":"Sign up"}),(0,l.jsx)(m.Z,{children:"reset_password"===k?"Reset your password to access Admin UI.":"Claim your user account to login to Admin UI."}),"reset_password"!==k&&(0,l.jsx)(a.Z,{className:"mt-4",title:"SSO",icon:p.GH$,color:"sky",children:(0,l.jsxs)(d.Z,{numItems:2,className:"flex justify-between items-center",children:[(0,l.jsx)(i.Z,{children:"SSO is under the Enterprise Tier."}),(0,l.jsx)(i.Z,{children:(0,l.jsx)(t.Z,{variant:"primary",className:"mb-2",children:(0,l.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"Get Free Trial"})})})]})}),(0,l.jsxs)(b.Z,{className:"mt-10 mb-5 mx-auto",layout:"vertical",onFinish:e=>{console.log("in handle submit. accessToken:",S,"token:",q,"formValues:",e),S&&q&&(e.user_email=j,C&&r&&(0,f.claimOnboardingToken)(S,r,C,e.password).then(e=>{let s="/ui/";s+="?login=success",document.cookie="token="+q,console.log("redirecting to:",s);let r=(0,f.getProxyBaseUrl)();console.log("proxyBaseUrl:",r),r?window.location.href=r+s:window.location.href=s}))},children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(b.Z.Item,{label:"Email Address",name:"user_email",children:(0,l.jsx)(u.Z,{type:"email",disabled:!0,value:j,defaultValue:j,className:"max-w-md"})}),(0,l.jsx)(b.Z.Item,{label:"Password",name:"password",rules:[{required:!0,message:"password required to sign up"}],help:"reset_password"===k?"Enter your new password":"Create a password for your account",children:(0,l.jsx)(u.Z,{placeholder:"",type:"password",className:"max-w-md"})})]}),(0,l.jsx)("div",{className:"mt-10",children:(0,l.jsx)(w.ZP,{htmlType:"submit",children:"reset_password"===k?"Reset Password":"Sign Up"})})]})]})})}},14474:function(e,s,r){"use strict";r.d(s,{o:function(){return o}});class l extends Error{}function o(e,s){let r;if("string"!=typeof e)throw new l("Invalid token specified: must be a string");s||(s={});let o=!0===s.header?0:1,n=e.split(".")[o];if("string"!=typeof n)throw new l(`Invalid token specified: missing part #${o+1}`);try{r=function(e){let s=e.replace(/-/g,"+").replace(/_/g,"/");switch(s.length%4){case 0:break;case 2:s+="==";break;case 3:s+="=";break;default:throw Error("base64 string is not of the correct length")}try{var r;return r=s,decodeURIComponent(atob(r).replace(/(.)/g,(e,s)=>{let r=s.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}))}catch(e){return atob(s)}}(n)}catch(e){throw new l(`Invalid token specified: invalid base64 for part #${o+1} (${e.message})`)}try{return JSON.parse(r)}catch(e){throw new l(`Invalid token specified: invalid json for part #${o+1} (${e.message})`)}}l.prototype.name="InvalidTokenError"}},function(e){e.O(0,[665,50,49,971,117,744],function(){return e(e.s=8672)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/page-5b9ff2d173a47e2c.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/page-5b9ff2d173a47e2c.js deleted file mode 100644 index a57a5969fd6..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/page-5b9ff2d173a47e2c.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{31283:function(e,s,t){Promise.resolve().then(t.bind(t,73148))},12011:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return y}});var l=t(57437),a=t(2265),r=t(99376),i=t(20831),n=t(94789),o=t(12514),c=t(49804),d=t(67101),m=t(84264),u=t(49566),x=t(96761),h=t(84566),p=t(19250),g=t(14474),j=t(13634),f=t(73002),v=t(3914);function y(){let[e]=j.Z.useForm(),s=(0,r.useSearchParams)();(0,v.e)("token");let t=s.get("invitation_id"),y=s.get("action"),[b,_]=(0,a.useState)(null),[N,Z]=(0,a.useState)(""),[w,k]=(0,a.useState)(""),[S,C]=(0,a.useState)(null),[I,A]=(0,a.useState)(""),[T,E]=(0,a.useState)(""),[L,P]=(0,a.useState)(!0);return(0,a.useEffect)(()=>{(0,p.getUiConfig)().then(e=>{console.log("ui config in onboarding.tsx:",e),P(!1)})},[]),(0,a.useEffect)(()=>{t&&!L&&(0,p.getOnboardingCredentials)(t).then(e=>{let s=e.login_url;console.log("login_url:",s),A(s);let t=e.token,l=(0,g.o)(t);E(t),console.log("decoded:",l),_(l.key),console.log("decoded user email:",l.user_email),k(l.user_email),C(l.user_id)})},[t,L]),(0,l.jsx)("div",{className:"mx-auto w-full max-w-md mt-10",children:(0,l.jsxs)(o.Z,{children:[(0,l.jsx)(x.Z,{className:"text-sm mb-5 text-center",children:"\uD83D\uDE85 LiteLLM"}),(0,l.jsx)(x.Z,{className:"text-xl",children:"reset_password"===y?"Reset Password":"Sign up"}),(0,l.jsx)(m.Z,{children:"reset_password"===y?"Reset your password to access Admin UI.":"Claim your user account to login to Admin UI."}),"reset_password"!==y&&(0,l.jsx)(n.Z,{className:"mt-4",title:"SSO",icon:h.GH$,color:"sky",children:(0,l.jsxs)(d.Z,{numItems:2,className:"flex justify-between items-center",children:[(0,l.jsx)(c.Z,{children:"SSO is under the Enterprise Tier."}),(0,l.jsx)(c.Z,{children:(0,l.jsx)(i.Z,{variant:"primary",className:"mb-2",children:(0,l.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"Get Free Trial"})})})]})}),(0,l.jsxs)(j.Z,{className:"mt-10 mb-5 mx-auto",layout:"vertical",onFinish:e=>{console.log("in handle submit. accessToken:",b,"token:",T,"formValues:",e),b&&T&&(e.user_email=w,S&&t&&(0,p.claimOnboardingToken)(b,t,S,e.password).then(e=>{let s="/ui/";s+="?login=success",document.cookie="token="+T,console.log("redirecting to:",s);let t=(0,p.getProxyBaseUrl)();console.log("proxyBaseUrl:",t),t?window.location.href=t+s:window.location.href=s}))},children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(j.Z.Item,{label:"Email Address",name:"user_email",children:(0,l.jsx)(u.Z,{type:"email",disabled:!0,value:w,defaultValue:w,className:"max-w-md"})}),(0,l.jsx)(j.Z.Item,{label:"Password",name:"password",rules:[{required:!0,message:"password required to sign up"}],help:"reset_password"===y?"Enter your new password":"Create a password for your account",children:(0,l.jsx)(u.Z,{placeholder:"",type:"password",className:"max-w-md"})})]}),(0,l.jsx)("div",{className:"mt-10",children:(0,l.jsx)(f.ZP,{htmlType:"submit",children:"reset_password"===y?"Reset Password":"Sign Up"})})]})]})})}},73148:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return oL}});var l,a,r,i,n,o,c=t(57437),d=t(2265),m=t(99376),u=t(14474),x=t(21623),h=t(29827),p=t(65373),g=t(69734),j=t(19250);let f=async(e,s,t,l,a)=>{let r;r="Admin"!=t&&"Admin Viewer"!=t?await (0,j.teamListCall)(e,(null==l?void 0:l.organization_id)||null,s):await (0,j.teamListCall)(e,(null==l?void 0:l.organization_id)||null),console.log("givenTeams: ".concat(r)),a(r)};var v=t(49804),y=t(67101),b=t(20831),_=t(49566),N=t(87452),Z=t(88829),w=t(72208),k=t(84264),S=t(96761),C=t(29233),I=t(52787),A=t(13634),T=t(82680),E=t(29967),L=t(73002),P=t(64482),M=t(30150),O=e=>{let{step:s=.01,style:t={width:"100%"},placeholder:l="Enter a numerical value",min:a,max:r,onChange:i,...n}=e;return(0,c.jsx)(M.Z,{onWheel:e=>e.currentTarget.blur(),step:s,style:t,placeholder:l,min:a,max:r,onChange:i,...n})};let D=async(e,s,t)=>{try{if(null===e||null===s)return;if(null!==t){let l=(await (0,j.modelAvailableCall)(t,e,s,!0,null,!0)).data.map(e=>e.id),a=[],r=[];return l.forEach(e=>{e.endsWith("/*")?a.push(e):r.push(e)}),[...a,...r]}}catch(e){console.error("Error fetching user models:",e)}},F=e=>{if(e.endsWith("/*")){let s=e.replace("/*","");return"All ".concat(s," models")}return e},R=(e,s)=>{let t=[],l=[];return console.log("teamModels",e),console.log("allModels",s),e.forEach(e=>{if(e.endsWith("/*")){let a=e.replace("/*",""),r=s.filter(e=>e.startsWith(a+"/"));l.push(...r),t.push(e)}else l.push(e)}),[...t,...l].filter((e,s,t)=>t.indexOf(e)===s)};var z=t(63610),U=e=>{let{onChange:s,value:t,className:l,accessToken:a,placeholder:r="Select vector stores",disabled:i=!1}=e,[n,o]=(0,d.useState)([]),[m,u]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{(async()=>{if(a){u(!0);try{let e=await (0,j.vectorStoreListCall)(a);e.data&&o(e.data)}catch(e){console.error("Error fetching vector stores:",e)}finally{u(!1)}}})()},[a]),(0,c.jsx)("div",{children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:r,onChange:s,value:t,loading:m,className:l,options:n.map(e=>({label:"".concat(e.vector_store_name||e.vector_store_id," (").concat(e.vector_store_id,")"),value:e.vector_store_id,title:e.vector_store_description||e.vector_store_id})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"},disabled:i})})},q=e=>{let{teams:s,value:t,onChange:l,disabled:a}=e;return console.log("disabled",a),(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Search or select a team",value:t,onChange:l,disabled:a,filterOption:(e,t)=>{if(!t)return!1;let l=null==s?void 0:s.find(e=>e.team_id===t.key);if(!l)return!1;let a=e.toLowerCase().trim(),r=(l.team_alias||"").toLowerCase(),i=(l.team_id||"").toLowerCase();return r.includes(a)||i.includes(a)},optionFilterProp:"children",children:null==s?void 0:s.map(e=>(0,c.jsxs)(I.default.Option,{value:e.team_id,children:[(0,c.jsx)("span",{className:"font-medium",children:e.team_alias})," ",(0,c.jsxs)("span",{className:"text-gray-500",children:["(",e.team_id,")"]})]},e.team_id))})},V=t(15424),B=t(89970),K=t(23496),G=t(12514),H=t(91777),Y=t(82182),J=t(22452),W=t(74998);(l=i||(i={})).Braintrust="Braintrust",l.CustomCallbackAPI="Custom Callback API",l.Datadog="Datadog",l.Langfuse="Langfuse",l.LangfuseOtel="LangfuseOtel",l.LangSmith="LangSmith",l.Lago="Lago",l.OpenMeter="OpenMeter",l.OTel="Open Telemetry",l.S3="S3",l.Arize="Arize";let $={Braintrust:"braintrust",CustomCallbackAPI:"custom_callback_api",Datadog:"datadog",Langfuse:"langfuse",LangfuseOtel:"langfuse_otel",LangSmith:"langsmith",Lago:"lago",OpenMeter:"openmeter",OTel:"otel",S3:"s3",Arize:"arize"},Q=Object.fromEntries(Object.entries($).map(e=>{let[s,t]=e;return[t,s]})),X=e=>e.map(e=>Q[e]||e),ee=e=>e.map(e=>$[e]||e),es="/ui/assets/logos/",et={Langfuse:{logo:"".concat(es,"langfuse.png"),supports_key_team_logging:!0,dynamic_params:{langfuse_public_key:"text",langfuse_secret_key:"password",langfuse_host:"text"},description:"Langfuse v2 Logging Integration"},LangfuseOtel:{logo:"".concat(es,"langfuse.png"),supports_key_team_logging:!0,dynamic_params:{langfuse_public_key:"text",langfuse_secret_key:"password",langfuse_host:"text"},description:"Langfuse v3 OTEL Logging Integration"},Arize:{logo:"".concat(es,"arize.png"),supports_key_team_logging:!0,dynamic_params:{arize_api_key:"password",arize_space_id:"text"},description:"Arize Logging Integration"},LangSmith:{logo:"".concat(es,"langsmith.png"),supports_key_team_logging:!0,dynamic_params:{langsmith_api_key:"password",langsmith_project:"text",langsmith_base_url:"text",langsmith_sampling_rate:"number"},description:"Langsmith Logging Integration"},Braintrust:{logo:"".concat(es,"braintrust.png"),supports_key_team_logging:!1,dynamic_params:{},description:"Braintrust Logging Integration"},"Custom Callback API":{logo:"".concat(es,"custom.svg"),supports_key_team_logging:!0,dynamic_params:{},description:"Custom Callback API Logging Integration"},Datadog:{logo:"".concat(es,"datadog.png"),supports_key_team_logging:!1,dynamic_params:{},description:"Datadog Logging Integration"},Lago:{logo:"".concat(es,"lago.svg"),supports_key_team_logging:!1,dynamic_params:{},description:"Lago Billing Logging Integration"},OpenMeter:{logo:"".concat(es,"openmeter.png"),supports_key_team_logging:!1,dynamic_params:{},description:"OpenMeter Logging Integration"},"Open Telemetry":{logo:"".concat(es,"otel.png"),supports_key_team_logging:!1,dynamic_params:{},description:"OpenTelemetry Logging Integration"},S3:{logo:"".concat(es,"aws.svg"),supports_key_team_logging:!1,dynamic_params:{},description:"S3 Bucket (AWS) Logging Integration"}},{Option:el}=I.default;var ea=e=>{let{value:s=[],onChange:t,disabledCallbacks:l=[],onDisabledCallbacksChange:a}=e,r=Object.entries(et).filter(e=>{let[s,t]=e;return t.supports_key_team_logging}).map(e=>{let[s,t]=e;return s}),i=Object.keys(et),n=e=>{null==t||t(e)},o=e=>{n(s.filter((s,t)=>t!==e))},d=(e,t,l)=>{let a=[...s];if("callback_name"===t){let s=$[l]||l;a[e]={...a[e],[t]:s,callback_vars:{}}}else a[e]={...a[e],[t]:l};n(a)},m=(e,t,l)=>{let a=[...s];a[e]={...a[e],callback_vars:{...a[e].callback_vars,[t]:l}},n(a)},u=(e,s)=>{var t,l;if(!e.callback_name)return null;let a=null===(t=Object.entries($).find(s=>{let[t,l]=s;return l===e.callback_name}))||void 0===t?void 0:t[0];if(!a)return null;let r=(null===(l=et[a])||void 0===l?void 0:l.dynamic_params)||{};return 0===Object.keys(r).length?null:(0,c.jsxs)("div",{className:"mt-6 pt-4 border-t border-gray-100",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2 mb-4",children:[(0,c.jsx)("div",{className:"w-3 h-3 bg-blue-100 rounded-full flex items-center justify-center",children:(0,c.jsx)("div",{className:"w-1.5 h-1.5 bg-blue-500 rounded-full"})}),(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Integration Parameters"})]}),(0,c.jsx)("div",{className:"grid grid-cols-1 gap-4",children:Object.entries(r).map(t=>{let[l,a]=t;return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 capitalize flex items-center space-x-1",children:[(0,c.jsx)("span",{children:l.replace(/_/g," ")}),(0,c.jsx)(B.Z,{title:"Environment variable reference recommended: os.environ/".concat(l.toUpperCase()),children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})}),"password"===a&&(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-yellow-100 text-yellow-800",children:"Sensitive"}),"number"===a&&(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-yellow-100 text-yellow-800",children:"Number"})]}),"number"===a&&(0,c.jsx)("span",{className:"text-xs text-gray-500",children:"Value must be between 0 and 1"}),"number"===a?(0,c.jsx)(O,{step:.01,width:400,placeholder:"os.environ/".concat(l.toUpperCase()),value:e.callback_vars[l]||"",onChange:e=>m(s,l,e.target.value)}):(0,c.jsx)(_.Z,{type:"password"===a?"password":"text",placeholder:"os.environ/".concat(l.toUpperCase()),value:e.callback_vars[l]||"",onChange:e=>m(s,l,e.target.value)})]},l)})})]})};return(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)(H.Z,{className:"w-5 h-5 text-red-500"}),(0,c.jsx)("span",{className:"text-base font-semibold text-gray-800",children:"Disabled Callbacks"}),(0,c.jsx)(B.Z,{title:"Select callbacks to disable for this key. Disabled callbacks will not receive any logging data.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help"})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Disabled Callbacks"}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select callbacks to disable",value:l,onChange:e=>{let s=ee(e);null==a||a(s)},style:{width:"100%"},optionLabelProp:"label",children:i.map(e=>{var s,t;let l=null===(s=et[e])||void 0===s?void 0:s.logo,a=null===(t=et[e])||void 0===t?void 0:t.description;return(0,c.jsx)(el,{value:e,label:e,children:(0,c.jsx)(B.Z,{title:a,placement:"right",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[l&&(0,c.jsx)("img",{src:l,alt:e,className:"w-4 h-4 object-contain",onError:s=>{let t=s.target,l=t.parentElement;if(l){let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=e.charAt(0),l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e})]})})},e)})}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"Select callbacks that should be disabled for this key. These callbacks will not receive any logging data."})]})]}),(0,c.jsx)(K.Z,{}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)(Y.Z,{className:"w-5 h-5 text-blue-500"}),(0,c.jsx)("span",{className:"text-base font-semibold text-gray-800",children:"Logging Integrations"}),(0,c.jsx)(B.Z,{title:"Configure callback logging integrations for this team.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help"})})]}),(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{n([...s,{callback_name:"",callback_type:"success",callback_vars:{}}])},icon:J.Z,size:"sm",className:"hover:border-blue-400 hover:text-blue-500",type:"button",children:"Add Integration"})]}),(0,c.jsx)("div",{className:"space-y-4",children:s.map((e,s)=>{var t,l;let a=e.callback_name?null===(t=Object.entries($).find(s=>{let[t,l]=s;return l===e.callback_name}))||void 0===t?void 0:t[0]:void 0,i=a?null===(l=et[a])||void 0===l?void 0:l.logo:null;return(0,c.jsxs)(G.Z,{className:"border border-gray-200 shadow-sm hover:shadow-md transition-shadow duration-200",decoration:"top",decorationColor:"blue",children:[(0,c.jsxs)("div",{className:"flex justify-between items-start mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[i&&(0,c.jsx)("img",{src:i,alt:a,className:"w-5 h-5 object-contain"}),(0,c.jsxs)("span",{className:"text-sm font-medium",children:[a||"New Integration"," Configuration"]})]}),(0,c.jsx)(b.Z,{variant:"light",onClick:()=>o(s),icon:W.Z,size:"xs",color:"red",className:"hover:bg-red-50",type:"button",children:"Remove"})]}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Integration Type"}),(0,c.jsx)(I.default,{value:a,placeholder:"Select integration",onChange:e=>d(s,"callback_name",e),className:"w-full",optionLabelProp:"label",children:r.map(e=>{var s,t;let l=null===(s=et[e])||void 0===s?void 0:s.logo,a=null===(t=et[e])||void 0===t?void 0:t.description;return(0,c.jsx)(el,{value:e,label:e,children:(0,c.jsx)(B.Z,{title:a,placement:"right",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[l&&(0,c.jsx)("img",{src:l,alt:e,className:"w-4 h-4 object-contain",onError:s=>{let t=s.target,l=t.parentElement;if(l){let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=e.charAt(0),l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e})]})})},e)})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Event Type"}),(0,c.jsxs)(I.default,{value:e.callback_type,onChange:e=>d(s,"callback_type",e),className:"w-full",children:[(0,c.jsx)(el,{value:"success",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{children:"Success Only"})]})}),(0,c.jsx)(el,{value:"failure",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-red-500 rounded-full"}),(0,c.jsx)("span",{children:"Failure Only"})]})}),(0,c.jsx)(el,{value:"success_and_failure",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{children:"Success & Failure"})]})})]})]})]}),u(e,s)]})]},s)})}),0===s.length&&(0,c.jsxs)("div",{className:"text-center py-12 text-gray-500 border-2 border-dashed border-gray-200 rounded-lg bg-gray-50/50",children:[(0,c.jsx)(Y.Z,{className:"w-12 h-12 text-gray-300 mb-3 mx-auto"}),(0,c.jsx)("div",{className:"text-base font-medium mb-1",children:"No logging integrations configured"}),(0,c.jsx)("div",{className:"text-sm text-gray-400",children:'Click "Add Integration" to configure logging for this team'})]})]})},er=function(e){let{value:s,onChange:t,premiumUser:l=!1,disabledCallbacks:a=[],onDisabledCallbacksChange:r}=e;return l?(0,c.jsx)(ea,{value:s,onChange:t,disabledCallbacks:a,onDisabledCallbacksChange:r}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex flex-wrap gap-2 mb-3",children:[(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-green-50 border border-green-200 text-green-800 text-sm font-medium opacity-50",children:"✨ langfuse-logging"}),(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-green-50 border border-green-200 text-green-800 text-sm font-medium opacity-50",children:"✨ datadog-logging"})]}),(0,c.jsx)("div",{className:"p-3 bg-yellow-50 border border-yellow-200 rounded-lg",children:(0,c.jsxs)(k.Z,{className:"text-sm text-yellow-800",children:["Setting Key/Team logging settings is a LiteLLM Enterprise feature. Global Logging Settings are available for all free users. Get a trial key"," ",(0,c.jsx)("a",{href:"https://www.litellm.ai/#pricing",target:"_blank",rel:"noopener noreferrer",className:"underline",children:"here"}),"."]})})]})},ei=t(57365),en=t(93192),eo=t(9114);function ec(e){let{isInvitationLinkModalVisible:s,setIsInvitationLinkModalVisible:t,baseUrl:l,invitationLinkData:a,modalType:r="invitation"}=e,{Title:i,Paragraph:n}=en.default,o=()=>{if(!l)return"";let e=new URL(l).pathname,s=e&&"/"!==e?"".concat(e,"/ui"):"ui";if(null==a?void 0:a.has_user_setup_sso)return new URL(s,l).toString();let t="".concat(s,"?invitation_id=").concat(null==a?void 0:a.id);return"resetPassword"===r&&(t+="&action=reset_password"),new URL(t,l).toString()};return(0,c.jsxs)(T.Z,{title:"invitation"===r?"Invitation Link":"Reset Password Link",visible:s,width:800,footer:null,onOk:()=>{t(!1)},onCancel:()=>{t(!1)},children:[(0,c.jsx)(n,{children:"invitation"===r?"Copy and send the generated link to onboard this user to the proxy.":"Copy and send the generated link to the user to reset their password."}),(0,c.jsxs)("div",{className:"flex justify-between pt-5 pb-2",children:[(0,c.jsx)(k.Z,{className:"text-base",children:"User ID"}),(0,c.jsx)(k.Z,{children:null==a?void 0:a.user_id})]}),(0,c.jsxs)("div",{className:"flex justify-between pt-5 pb-2",children:[(0,c.jsx)(k.Z,{children:"invitation"===r?"Invitation Link":"Reset Password Link"}),(0,c.jsx)(k.Z,{children:(0,c.jsx)(k.Z,{children:o()})})]}),(0,c.jsx)("div",{className:"flex justify-end mt-5",children:(0,c.jsx)(C.CopyToClipboard,{text:o(),onCopy:()=>eo.Z.success("Copied!"),children:(0,c.jsx)(b.Z,{variant:"primary",children:"invitation"===r?"Copy invitation link":"Copy password reset link"})})})]})}var ed=t(65319),em=t(72188),eu=t(73879),ex=t(34310),eh=t(38434),ep=t(26349),eg=t(35291),ej=t(3632),ef=t(15452),ev=t.n(ef),ey=t(71157),eb=t(44643),e_=t(88532),eN=e=>{let{accessToken:s,teams:t,possibleUIRoles:l,onUsersCreated:a}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)([]),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(null),[y,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)(null),[w,S]=(0,d.useState)("http://localhost:4000");(0,d.useEffect)(()=>{(async()=>{try{let e=await (0,j.getProxyUISettings)(s);Z(e)}catch(e){console.error("Error fetching UI settings:",e)}})(),S(new URL("/",window.location.href).toString())},[s]);let I=async()=>{u(!0);let e=n.map(e=>({...e,status:"pending"}));o(e);let t=!1;for(let a=0;ae.trim()).filter(Boolean),0===e.teams.length&&delete e.teams),n.models&&"string"==typeof n.models&&""!==n.models.trim()&&(e.models=n.models.split(",").map(e=>e.trim()).filter(Boolean),0===e.models.length&&delete e.models),n.max_budget&&""!==n.max_budget.toString().trim()){let s=parseFloat(n.max_budget.toString());!isNaN(s)&&s>0&&(e.max_budget=s)}n.budget_duration&&""!==n.budget_duration.trim()&&(e.budget_duration=n.budget_duration.trim()),n.metadata&&"string"==typeof n.metadata&&""!==n.metadata.trim()&&(e.metadata=n.metadata.trim()),console.log("Sending user data:",e);let r=await (0,j.userCreateCall)(s,null,e);if(console.log("Full response:",r),r&&(r.key||r.user_id)){t=!0,console.log("Success case triggered");let e=(null===(l=r.data)||void 0===l?void 0:l.user_id)||r.user_id;try{if(null==N?void 0:N.SSO_ENABLED){let e=new URL("/ui",w).toString();o(s=>s.map((s,t)=>t===a?{...s,status:"success",key:r.key||r.user_id,invitation_link:e}:s))}else{let t=await (0,j.invitationCreateCall)(s,e),l=new URL("/ui?invitation_id=".concat(t.id),w).toString();o(e=>e.map((e,s)=>s===a?{...e,status:"success",key:r.key||r.user_id,invitation_link:l}:e))}}catch(e){console.error("Error creating invitation:",e),o(e=>e.map((e,s)=>s===a?{...e,status:"success",key:r.key||r.user_id,error:"User created but failed to generate invitation link"}:e))}}else{console.log("Error case triggered");let e=(null==r?void 0:r.error)||"Failed to create user";console.log("Error message:",e),o(s=>s.map((s,t)=>t===a?{...s,status:"failed",error:e}:s))}}catch(s){console.error("Caught error:",s);let e=(null==s?void 0:null===(i=s.response)||void 0===i?void 0:null===(r=i.data)||void 0===r?void 0:r.error)||(null==s?void 0:s.message)||String(s);o(s=>s.map((s,t)=>t===a?{...s,status:"failed",error:e}:s))}}u(!1),t&&a&&a()};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(b.Z,{className:"mb-0",onClick:()=>i(!0),children:"+ Bulk Invite Users"}),(0,c.jsx)(T.Z,{title:"Bulk Invite Users",visible:r,width:800,onCancel:()=>i(!1),bodyStyle:{maxHeight:"70vh",overflow:"auto"},footer:null,children:(0,c.jsx)("div",{className:"flex flex-col",children:0===n.length?(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsxs)("div",{className:"flex items-center mb-4",children:[(0,c.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center mr-3",children:"1"}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Download and fill the template"})]}),(0,c.jsxs)("div",{className:"ml-11 mb-6",children:[(0,c.jsx)("p",{className:"mb-4",children:"Add multiple users at once by following these steps:"}),(0,c.jsxs)("ol",{className:"list-decimal list-inside space-y-2 ml-2 mb-4",children:[(0,c.jsx)("li",{children:"Download our CSV template"}),(0,c.jsx)("li",{children:"Add your users' information to the spreadsheet"}),(0,c.jsx)("li",{children:"Save the file and upload it here"}),(0,c.jsx)("li",{children:"After creation, download the results file containing the API keys for each user"})]}),(0,c.jsxs)("div",{className:"bg-gray-50 p-4 rounded-md border border-gray-200 mb-4",children:[(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Template Column Names"}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-red-500 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"user_email"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:"User's email address (required)"})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-red-500 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"user_role"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'User\'s role (one of: "proxy_admin", "proxy_admin_view_only", "internal_user", "internal_user_view_only")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"teams"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Comma-separated team IDs (e.g., "team-1,team-2")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"max_budget"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Maximum budget as a number (e.g., "100")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"budget_duration"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Budget reset period (e.g., "30d", "1mo")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"models"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Comma-separated allowed models (e.g., "gpt-3.5-turbo,gpt-4")'})]})]})]})]}),(0,c.jsxs)(b.Z,{onClick:()=>{let e=new Blob([ev().unparse([["user_email","user_role","teams","max_budget","budget_duration","models"],["user@example.com","internal_user","team-id-1,team-id-2","100","30d","gpt-3.5-turbo,gpt-4"]])],{type:"text/csv"}),s=window.URL.createObjectURL(e),t=document.createElement("a");t.href=s,t.download="bulk_users_template.csv",document.body.appendChild(t),t.click(),document.body.removeChild(t),window.URL.revokeObjectURL(s)},size:"lg",className:"w-full md:w-auto",children:[(0,c.jsx)(eu.Z,{className:"mr-2"})," Download CSV Template"]})]}),(0,c.jsxs)("div",{className:"flex items-center mb-4",children:[(0,c.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center mr-3",children:"2"}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Upload your completed CSV"})]}),(0,c.jsxs)("div",{className:"ml-11",children:[y?(0,c.jsxs)("div",{className:"mb-4 p-4 rounded-md border ".concat(f?"bg-red-50 border-red-200":"bg-blue-50 border-blue-200"),children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center",children:[f?(0,c.jsx)(ex.Z,{className:"text-red-500 text-xl mr-3"}):(0,c.jsx)(eh.Z,{className:"text-blue-500 text-xl mr-3"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(en.default.Text,{strong:!0,className:f?"text-red-800":"text-blue-800",children:y.name}),(0,c.jsxs)(en.default.Text,{className:"block text-xs ".concat(f?"text-red-600":"text-blue-600"),children:[(y.size/1024).toFixed(1)," KB • ",new Date().toLocaleDateString()]})]})]}),(0,c.jsxs)(b.Z,{size:"xs",variant:"secondary",onClick:()=>{_(null),o([]),h(null),g(null),v(null)},className:"flex items-center",children:[(0,c.jsx)(ep.Z,{className:"mr-1"})," Remove"]})]}),f?(0,c.jsxs)("div",{className:"mt-3 text-red-600 text-sm flex items-start",children:[(0,c.jsx)(eg.Z,{className:"mr-2 mt-0.5"}),(0,c.jsx)("span",{children:f})]}):!p&&(0,c.jsxs)("div",{className:"mt-3 flex items-center",children:[(0,c.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-1.5",children:(0,c.jsx)("div",{className:"bg-blue-500 h-1.5 rounded-full w-full animate-pulse"})}),(0,c.jsx)("span",{className:"ml-2 text-xs text-blue-600",children:"Processing..."})]})]}):(0,c.jsx)(ed.default,{beforeUpload:e=>((h(null),g(null),v(null),_(e),"text/csv"===e.type||e.name.endsWith(".csv"))?e.size>5242880?v("File is too large (".concat((e.size/1048576).toFixed(1)," MB). Please upload a CSV file smaller than 5MB.")):ev().parse(e,{complete:e=>{if(!e.data||0===e.data.length){g("The CSV file appears to be empty. Please upload a file with data."),o([]);return}if(1===e.data.length){g("The CSV file only contains headers but no user data. Please add user data to your CSV."),o([]);return}let s=e.data[0];if(0===s.length||1===s.length&&""===s[0]){g("The CSV file doesn't contain any column headers. Please make sure your CSV has headers."),o([]);return}let l=["user_email","user_role"].filter(e=>!s.includes(e));if(l.length>0){g("Your CSV is missing these required columns: ".concat(l.join(", "),". Please add these columns to your CSV file.")),o([]);return}try{let l=e.data.slice(1).map((e,l)=>{var a,r,i,n,o,c;if(0===e.length||1===e.length&&""===e[0])return null;if(e.length=parseFloat(d.max_budget.toString())&&m.push("Max budget must be greater than 0")),d.budget_duration&&!d.budget_duration.match(/^\d+[dhmwy]$|^\d+mo$/)&&m.push('Invalid budget duration format "'.concat(d.budget_duration,'". Use format like "30d", "1mo", "2w", "6h"')),d.teams&&"string"==typeof d.teams&&t&&t.length>0){let e=t.map(e=>e.team_id),s=d.teams.split(",").map(e=>e.trim()).filter(s=>!e.includes(s));s.length>0&&m.push("Unknown team(s): ".concat(s.join(", ")))}return m.length>0&&(d.isValid=!1,d.error=m.join(", ")),d}).filter(Boolean),a=l.filter(e=>e.isValid);o(l),0===l.length?g("No valid data rows found in the CSV file. Please check your file format."):0===a.length?h("No valid users found in the CSV. Please check the errors below and fix your CSV file."):a.length{h("Failed to parse CSV file: ".concat(e.message)),o([])},header:!1}):(v("Invalid file type: ".concat(e.name,". Please upload a CSV file (.csv extension).")),eo.Z.fromBackend("Invalid file type. Please upload a CSV file.")),!1),accept:".csv",maxCount:1,showUploadList:!1,children:(0,c.jsxs)("div",{className:"border-2 border-dashed border-gray-300 rounded-lg p-8 text-center hover:border-blue-500 transition-colors cursor-pointer",children:[(0,c.jsx)(ej.Z,{className:"text-3xl text-gray-400 mb-2"}),(0,c.jsx)("p",{className:"mb-1",children:"Drag and drop your CSV file here"}),(0,c.jsx)("p",{className:"text-sm text-gray-500 mb-3",children:"or"}),(0,c.jsx)(b.Z,{size:"sm",children:"Browse files"}),(0,c.jsx)("p",{className:"text-xs text-gray-500 mt-4",children:"Only CSV files (.csv) are supported"})]})}),p&&(0,c.jsx)("div",{className:"mb-4 p-4 bg-yellow-50 border border-yellow-200 rounded-md",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)(e_.Z,{className:"h-5 w-5 text-yellow-500 mr-2 mt-0.5"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(en.default.Text,{strong:!0,className:"text-yellow-800",children:"CSV Structure Error"}),(0,c.jsx)(en.default.Paragraph,{className:"text-yellow-700 mt-1 mb-0",children:p}),(0,c.jsx)(en.default.Paragraph,{className:"text-yellow-700 mt-2 mb-0",children:"Please download our template and ensure your CSV follows the required format."})]})]})})]})]}):(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsxs)("div",{className:"flex items-center mb-4",children:[(0,c.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center mr-3",children:"3"}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:n.some(e=>"success"===e.status||"failed"===e.status)?"User Creation Results":"Review and create users"})]}),x&&(0,c.jsx)("div",{className:"ml-11 mb-4 p-4 bg-red-50 border border-red-200 rounded-md",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)(eg.Z,{className:"text-red-500 mr-2 mt-1"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:x}),n.some(e=>!e.isValid)&&(0,c.jsxs)("ul",{className:"mt-2 list-disc list-inside text-red-600 text-sm",children:[(0,c.jsx)("li",{children:"Check the table below for specific errors in each row"}),(0,c.jsx)("li",{children:"Common issues include invalid email formats, missing required fields, or incorrect role values"}),(0,c.jsx)("li",{children:"Fix these issues in your CSV file and upload again"})]})]})]})}),(0,c.jsxs)("div",{className:"ml-11",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-3",children:[(0,c.jsx)("div",{className:"flex items-center",children:n.some(e=>"success"===e.status||"failed"===e.status)?(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(k.Z,{className:"text-lg font-medium mr-3",children:"Creation Summary"}),(0,c.jsxs)(k.Z,{className:"text-sm bg-green-100 text-green-800 px-2 py-1 rounded mr-2",children:[n.filter(e=>"success"===e.status).length," Successful"]}),n.some(e=>"failed"===e.status)&&(0,c.jsxs)(k.Z,{className:"text-sm bg-red-100 text-red-800 px-2 py-1 rounded",children:[n.filter(e=>"failed"===e.status).length," Failed"]})]}):(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(k.Z,{className:"text-lg font-medium mr-3",children:"User Preview"}),(0,c.jsxs)(k.Z,{className:"text-sm bg-blue-100 text-blue-800 px-2 py-1 rounded",children:[n.filter(e=>e.isValid).length," of ",n.length," users valid"]})]})}),!n.some(e=>"success"===e.status||"failed"===e.status)&&(0,c.jsxs)("div",{className:"flex space-x-3",children:[(0,c.jsx)(b.Z,{onClick:()=>{o([]),h(null)},variant:"secondary",children:"Back"}),(0,c.jsx)(b.Z,{onClick:I,disabled:0===n.filter(e=>e.isValid).length||m,children:m?"Creating...":"Create ".concat(n.filter(e=>e.isValid).length," Users")})]})]}),n.some(e=>"success"===e.status)&&(0,c.jsx)("div",{className:"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-md",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"mr-3 mt-1",children:(0,c.jsx)(eb.Z,{className:"h-5 w-5 text-blue-500"})}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium text-blue-800",children:"User creation complete"}),(0,c.jsxs)(k.Z,{className:"block text-sm text-blue-700 mt-1",children:[(0,c.jsx)("span",{className:"font-medium",children:"Next step:"})," Download the credentials file containing API keys and invitation links. Users will need these API keys to make LLM requests through LiteLLM."]})]})]})}),(0,c.jsx)(em.Z,{dataSource:n,columns:[{title:"Row",dataIndex:"rowNumber",key:"rowNumber",width:80},{title:"Email",dataIndex:"user_email",key:"user_email"},{title:"Role",dataIndex:"user_role",key:"user_role"},{title:"Teams",dataIndex:"teams",key:"teams"},{title:"Budget",dataIndex:"max_budget",key:"max_budget"},{title:"Status",key:"status",render:(e,s)=>s.isValid?s.status&&"pending"!==s.status?"success"===s.status?(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(eb.Z,{className:"h-5 w-5 text-green-500 mr-2"}),(0,c.jsx)("span",{className:"text-green-500",children:"Success"})]}),s.invitation_link&&(0,c.jsx)("div",{className:"mt-1",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("span",{className:"text-xs text-gray-500 truncate max-w-[150px]",children:s.invitation_link}),(0,c.jsx)(C.CopyToClipboard,{text:s.invitation_link,onCopy:()=>eo.Z.success("Invitation link copied!"),children:(0,c.jsx)("button",{className:"ml-1 text-blue-500 text-xs hover:text-blue-700",children:"Copy"})})]})})]}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(ey.Z,{className:"h-5 w-5 text-red-500 mr-2"}),(0,c.jsx)("span",{className:"text-red-500",children:"Failed"})]}),s.error&&(0,c.jsx)("span",{className:"text-sm text-red-500 ml-7",children:JSON.stringify(s.error)})]}):(0,c.jsx)("span",{className:"text-gray-500",children:"Pending"}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(ey.Z,{className:"h-5 w-5 text-red-500 mr-2"}),(0,c.jsx)("span",{className:"text-red-500",children:"Invalid"})]}),s.error&&(0,c.jsx)("span",{className:"text-sm text-red-500 ml-7",children:s.error})]})}],size:"small",pagination:{pageSize:5},scroll:{y:300},rowClassName:e=>e.isValid?"":"bg-red-50"}),!n.some(e=>"success"===e.status||"failed"===e.status)&&(0,c.jsxs)("div",{className:"flex justify-end mt-4",children:[(0,c.jsx)(b.Z,{onClick:()=>{o([]),h(null)},variant:"secondary",className:"mr-3",children:"Back"}),(0,c.jsx)(b.Z,{onClick:I,disabled:0===n.filter(e=>e.isValid).length||m,children:m?"Creating...":"Create ".concat(n.filter(e=>e.isValid).length," Users")})]}),n.some(e=>"success"===e.status||"failed"===e.status)&&(0,c.jsxs)("div",{className:"flex justify-end mt-4",children:[(0,c.jsx)(b.Z,{onClick:()=>{o([]),h(null)},variant:"secondary",className:"mr-3",children:"Start New Bulk Import"}),(0,c.jsxs)(b.Z,{onClick:()=>{let e=n.map(e=>({user_email:e.user_email,user_role:e.user_role,status:e.status,key:e.key||"",invitation_link:e.invitation_link||"",error:e.error||""})),s=new Blob([ev().unparse(e)],{type:"text/csv"}),t=window.URL.createObjectURL(s),l=document.createElement("a");l.href=t,l.download="bulk_users_results.csv",document.body.appendChild(l),l.click(),document.body.removeChild(l),window.URL.revokeObjectURL(t)},variant:"primary",className:"flex items-center",children:[(0,c.jsx)(eu.Z,{className:"mr-2"})," Download User Credentials"]})]})]})]})})})]})};let{Option:eZ}=I.default,ew=()=>"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let s=16*Math.random()|0;return("x"==e?s:3&s|8).toString(16)});var ek=e=>{let{userID:s,accessToken:t,teams:l,possibleUIRoles:a,onUserCreated:r,isEmbedded:i=!1}=e,n=(0,h.NL)(),[o,m]=(0,d.useState)(null),[u]=A.Z.useForm(),[x,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)([]),[C,E]=(0,d.useState)(!1),[M,O]=(0,d.useState)(null),[D,R]=(0,d.useState)(null);(0,d.useEffect)(()=>{let e=async()=>{try{let e=await (0,j.modelAvailableCall)(t,s,"any"),l=[];for(let s=0;s{var l,a,c;try{eo.Z.info("Making API Call"),i||p(!0),e.models&&0!==e.models.length||"proxy_admin"===e.user_role||(console.log("formValues.user_role",e.user_role),e.models=["no-default-models"]),console.log("formValues in create user:",e);let a=await (0,j.userCreateCall)(t,null,e);await n.invalidateQueries({queryKey:["userList"]}),console.log("user create Response:",a),f(!0);let c=(null===(l=a.data)||void 0===l?void 0:l.user_id)||a.user_id;if(r&&i){r(c),u.resetFields();return}if(null==o?void 0:o.SSO_ENABLED){let e={id:ew(),user_id:c,is_accepted:!1,accepted_at:null,expires_at:new Date(Date.now()+6048e5),created_at:new Date,created_by:s,updated_at:new Date,updated_by:s,has_user_setup_sso:!0};O(e),E(!0)}else(0,j.invitationCreateCall)(t,c).then(e=>{e.has_user_setup_sso=!1,O(e),E(!0)});eo.Z.success("API user Created"),u.resetFields(),localStorage.removeItem("userData"+s)}catch(s){let e=(null===(c=s.response)||void 0===c?void 0:null===(a=c.data)||void 0===a?void 0:a.detail)||(null==s?void 0:s.message)||"Error creating the user";eo.Z.fromBackend(e),console.error("Error creating the user:",s)}};return i?(0,c.jsxs)(A.Z,{form:u,onFinish:z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"User Email",name:"user_email",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"User Role",name:"user_role",children:(0,c.jsx)(I.default,{children:a&&Object.entries(a).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:"Team ID",name:"team_id",children:(0,c.jsx)(I.default,{placeholder:"Select Team ID",style:{width:"100%"},children:l?l.map(e=>(0,c.jsx)(eZ,{value:e.team_id,children:e.team_alias},e.team_id)):(0,c.jsx)(eZ,{value:null,children:"Default Team"},"default")})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Create User"})})]}):(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{className:"mb-0",onClick:()=>p(!0),children:"+ Invite User"}),(0,c.jsx)(eN,{accessToken:t,teams:l,possibleUIRoles:a}),(0,c.jsxs)(T.Z,{title:"Invite User",visible:x,width:800,footer:null,onOk:()=>{p(!1),u.resetFields()},onCancel:()=>{p(!1),f(!1),u.resetFields()},children:[(0,c.jsx)(k.Z,{className:"mb-1",children:"Create a User who can own keys"}),(0,c.jsxs)(A.Z,{form:u,onFinish:z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"User Email",name:"user_email",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Global Proxy Role"," ",(0,c.jsx)(B.Z,{title:"This is the role that the user will globally on the proxy. This role is independent of any team/org specific roles.",children:(0,c.jsx)(V.Z,{})})]}),name:"user_role",children:(0,c.jsx)(I.default,{children:a&&Object.entries(a).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:"Team ID",className:"gap-2",name:"team_id",help:"If selected, user will be added as a 'user' role to the team.",children:(0,c.jsx)(I.default,{placeholder:"Select Team ID",style:{width:"100%"},children:l?l.map(e=>(0,c.jsx)(eZ,{value:e.team_id,children:e.team_alias},e.team_id)):(0,c.jsx)(eZ,{value:null,children:"Default Team"},"default")})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsxs)(N.Z,{children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)(S.Z,{children:"Personal Key Creation"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)(A.Z.Item,{className:"gap-2",label:(0,c.jsxs)("span",{children:["Models"," ",(0,c.jsx)(B.Z,{title:"Models user has access to, outside of team scope.",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",help:"Models user has access to, outside of team scope.",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),v.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})})})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Create User"})})]})]}),g&&(0,c.jsx)(ec,{isInvitationLinkModalVisible:C,setIsInvitationLinkModalVisible:E,baseUrl:D||"",invitationLinkData:M})]})},eS=t(7310),eC=t.n(eS),eI=t(20347);let{Option:eA}=I.default,eT=e=>e?({"24h":"daily","7d":"weekly","30d":"monthly"})[e]||e:"Not set";var eE=e=>{let{value:s,onChange:t,className:l="",style:a={}}=e;return(0,c.jsxs)(I.default,{style:{width:"100%",...a},value:s||void 0,onChange:t,className:l,placeholder:"n/a",children:[(0,c.jsx)(eA,{value:"24h",children:"daily"}),(0,c.jsx)(eA,{value:"7d",children:"weekly"}),(0,c.jsx)(eA,{value:"30d",children:"monthly"})]})};function eL(e,s){let t=structuredClone(e);for(let[e,l]of Object.entries(s))e in t&&(t[e]=l);return t}let eP=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return null==e?"-":e.toLocaleString("en-US",{minimumFractionDigits:s,maximumFractionDigits:s})},eM=async function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Copied to clipboard";if(!e)return!1;if(!navigator||!navigator.clipboard||!navigator.clipboard.writeText)return eO(e,s);try{return await navigator.clipboard.writeText(e),eo.Z.success(s),!0}catch(t){return console.error("Clipboard API failed: ",t),eO(e,s)}},eO=(e,s)=>{try{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.left="-999999px",t.style.top="-999999px",t.setAttribute("readonly",""),document.body.appendChild(t),t.focus(),t.select();let l=document.execCommand("copy");if(document.body.removeChild(t),l)return eo.Z.success(s),!0;throw Error("execCommand failed")}catch(e){return eo.Z.fromBackend("Failed to copy to clipboard"),console.error("Failed to copy: ",e),!1}};var eD=e=>{let{onChange:s,value:t,className:l,accessToken:a,placeholder:r="Select MCP servers",disabled:i=!1}=e,[n,o]=(0,d.useState)([]),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1);(0,d.useEffect)(()=>{(async()=>{if(a){h(!0);try{let[e,s]=await Promise.all([(0,j.fetchMCPServers)(a),(0,j.fetchMCPAccessGroups)(a)]),t=Array.isArray(e)?e:e.data||[],l=Array.isArray(s)?s:s.data||[];o(t),u(l)}catch(e){console.error("Error fetching MCP servers or access groups:",e)}finally{h(!1)}}})()},[a]);let p=[...m.map(e=>({label:e,value:e,isAccessGroup:!0,searchText:"".concat(e," Access Group")})),...n.map(e=>({label:"".concat(e.server_name||e.server_id," (").concat(e.server_id,")"),value:e.server_id,isAccessGroup:!1,searchText:"".concat(e.server_name||e.server_id," ").concat(e.server_id," MCP Server")}))],g=[...(null==t?void 0:t.servers)||[],...(null==t?void 0:t.accessGroups)||[]];return(0,c.jsx)("div",{children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:r,onChange:e=>{s({servers:e.filter(e=>!m.includes(e)),accessGroups:e.filter(e=>m.includes(e))})},value:g,loading:x,className:l,showSearch:!0,style:{width:"100%"},disabled:i,filterOption:(e,s)=>{var t;return((null===(t=p.find(e=>e.value===(null==s?void 0:s.value)))||void 0===t?void 0:t.searchText)||"").toLowerCase().includes(e.toLowerCase())},children:p.map(e=>(0,c.jsx)(I.default.Option,{value:e.value,label:e.label,children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,c.jsx)("span",{style:{display:"inline-block",width:8,height:8,borderRadius:"50%",background:e.isAccessGroup?"#52c41a":"#1890ff",flexShrink:0}}),(0,c.jsx)("span",{style:{flex:1},children:e.label}),(0,c.jsx)("span",{style:{color:e.isAccessGroup?"#52c41a":"#1890ff",fontSize:"12px",fontWeight:500,opacity:.8},children:e.isAccessGroup?"Access Group":"MCP Server"})]})},e.value))})})},eF=t(77355),eR=t(93416),ez=t(95704),eU=t(69993);let eq=async e=>{try{let s=await (0,j.modelHubCall)(e);if(console.log("model_info:",s),(null==s?void 0:s.data.length)>0){let e=s.data.map(e=>({model_group:e.model_group,mode:null==e?void 0:e.mode}));return e.sort((e,s)=>e.model_group.localeCompare(s.model_group)),e}return[]}catch(e){throw console.error("Error fetching model info:",e),e}};var eV=e=>{let{accessToken:s,value:t,placeholder:l="Select a Model",onChange:a,disabled:r=!1,style:i,className:n,showLabel:o=!0,labelText:m="Select Model"}=e,[u,x]=(0,d.useState)(t),[h,p]=(0,d.useState)(!1),[g,j]=(0,d.useState)([]),f=(0,d.useRef)(null);return(0,d.useEffect)(()=>{x(t)},[t]),(0,d.useEffect)(()=>{s&&(async()=>{try{let e=await eq(s);console.log("Fetched models for selector:",e),e.length>0&&j(e)}catch(e){console.error("Error fetching model info:",e)}})()},[s]),(0,c.jsxs)("div",{children:[o&&(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(eU.Z,{className:"mr-2"})," ",m]}),(0,c.jsx)(I.default,{value:u,placeholder:l,onChange:e=>{"custom"===e?(p(!0),x(void 0)):(p(!1),x(e),a&&a(e))},options:[...Array.from(new Set(g.map(e=>e.model_group))).map((e,s)=>({value:e,label:e,key:s})),{value:"custom",label:"Enter custom model",key:"custom"}],style:{width:"100%",...i},showSearch:!0,className:"rounded-md ".concat(n||""),disabled:r}),h&&(0,c.jsx)(_.Z,{className:"mt-2",placeholder:"Enter custom model name",onValueChange:e=>{f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{x(e),a&&a(e)},500)},disabled:r})]})},eB=e=>{let{accessToken:s,initialModelAliases:t={},onAliasUpdate:l,showExampleConfig:a=!0}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)({aliasName:"",targetModel:""}),[m,u]=(0,d.useState)(null);(0,d.useEffect)(()=>{i(Object.entries(t).map((e,s)=>{let[t,l]=e;return{id:"".concat(s,"-").concat(t),aliasName:t,targetModel:l}}))},[t]);let x=e=>{u({...e})},h=()=>{if(!m)return;if(!m.aliasName||!m.targetModel){eo.Z.fromBackend("Please provide both alias name and target model");return}if(r.some(e=>e.id!==m.id&&e.aliasName===m.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=r.map(e=>e.id===m.id?m:e);i(e),u(null);let s={};e.forEach(e=>{s[e.aliasName]=e.targetModel}),l&&l(s),eo.Z.success("Alias updated successfully")},p=()=>{u(null)},g=e=>{let s=r.filter(s=>s.id!==e);i(s);let t={};s.forEach(e=>{t[e.aliasName]=e.targetModel}),l&&l(t),eo.Z.success("Alias deleted successfully")},j=r.reduce((e,s)=>(e[s.aliasName]=s.targetModel,e),{});return(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(ez.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Add New Alias"}),(0,c.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Alias Name"}),(0,c.jsx)("input",{type:"text",value:n.aliasName,onChange:e=>o({...n,aliasName:e.target.value}),placeholder:"e.g., gpt-4o",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Target Model"}),(0,c.jsx)(eV,{accessToken:s,value:n.targetModel,placeholder:"Select target model",onChange:e=>o({...n,targetModel:e}),showLabel:!1})]}),(0,c.jsx)("div",{className:"flex items-end",children:(0,c.jsxs)("button",{onClick:()=>{if(!n.aliasName||!n.targetModel){eo.Z.fromBackend("Please provide both alias name and target model");return}if(r.some(e=>e.aliasName===n.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=[...r,{id:"".concat(Date.now(),"-").concat(n.aliasName),aliasName:n.aliasName,targetModel:n.targetModel}];i(e),o({aliasName:"",targetModel:""});let s={};e.forEach(e=>{s[e.aliasName]=e.targetModel}),l&&l(s),eo.Z.success("Alias added successfully")},disabled:!n.aliasName||!n.targetModel,className:"flex items-center px-4 py-2 rounded-md text-sm ".concat(n.aliasName&&n.targetModel?"bg-green-600 text-white hover:bg-green-700":"bg-gray-300 text-gray-500 cursor-not-allowed"),children:[(0,c.jsx)(eF.Z,{className:"w-4 h-4 mr-1"}),"Add Alias"]})})]})]}),(0,c.jsx)(ez.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Manage Existing Aliases"}),(0,c.jsx)("div",{className:"rounded-lg custom-border relative mb-6",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(ez.iA,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(ez.ss,{children:(0,c.jsxs)(ez.SC,{children:[(0,c.jsx)(ez.xs,{className:"py-1 h-8",children:"Alias Name"}),(0,c.jsx)(ez.xs,{className:"py-1 h-8",children:"Target Model"}),(0,c.jsx)(ez.xs,{className:"py-1 h-8",children:"Actions"})]})}),(0,c.jsxs)(ez.RM,{children:[r.map(e=>(0,c.jsx)(ez.SC,{className:"h-8",children:m&&m.id===e.id?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ez.pj,{className:"py-0.5",children:(0,c.jsx)("input",{type:"text",value:m.aliasName,onChange:e=>u({...m,aliasName:e.target.value}),className:"w-full px-2 py-1 border border-gray-300 rounded-md text-sm"})}),(0,c.jsx)(ez.pj,{className:"py-0.5",children:(0,c.jsx)(eV,{accessToken:s,value:m.targetModel,onChange:e=>u({...m,targetModel:e}),showLabel:!1,style:{height:"32px"}})}),(0,c.jsx)(ez.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:h,className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:"Save"}),(0,c.jsx)("button",{onClick:p,className:"text-xs bg-gray-50 text-gray-600 px-2 py-1 rounded hover:bg-gray-100",children:"Cancel"})]})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ez.pj,{className:"py-0.5 text-sm text-gray-900",children:e.aliasName}),(0,c.jsx)(ez.pj,{className:"py-0.5 text-sm text-gray-500",children:e.targetModel}),(0,c.jsx)(ez.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>x(e),className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:(0,c.jsx)(eR.Z,{className:"w-3 h-3"})}),(0,c.jsx)("button",{onClick:()=>g(e.id),className:"text-xs bg-red-50 text-red-600 px-2 py-1 rounded hover:bg-red-100",children:(0,c.jsx)(W.Z,{className:"w-3 h-3"})})]})})]})},e.id)),0===r.length&&(0,c.jsx)(ez.SC,{children:(0,c.jsx)(ez.pj,{colSpan:3,className:"py-0.5 text-sm text-gray-500 text-center",children:"No aliases added yet. Add a new alias above."})})]})]})})}),a&&(0,c.jsxs)(ez.Zb,{children:[(0,c.jsx)(ez.Dx,{className:"mb-4",children:"Configuration Example"}),(0,c.jsx)(ez.xv,{className:"text-gray-600 mb-4",children:"Here's how your current aliases would look in the config:"}),(0,c.jsx)("div",{className:"bg-gray-100 rounded-lg p-4 font-mono text-sm",children:(0,c.jsxs)("div",{className:"text-gray-700",children:["model_aliases:",0===Object.keys(j).length?(0,c.jsxs)("span",{className:"text-gray-500",children:[(0,c.jsx)("br",{}),"\xa0\xa0# No aliases configured yet"]}):Object.entries(j).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{children:[(0,c.jsx)("br",{}),'\xa0\xa0"',s,'": "',t,'"']},s)})]})})]})]})},eK=t(63709),eG=t(49169);let{Option:eH}=I.default;var eY=e=>{let{form:s,autoRotationEnabled:t,onAutoRotationChange:l,rotationInterval:a,onRotationIntervalChange:r}=e,i=a&&!["7d","30d","90d","180d","365d"].includes(a),[n,o]=(0,d.useState)(i),[m,u]=(0,d.useState)(i?a:"");return(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Key Expiry Settings"}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 flex items-center space-x-1",children:[(0,c.jsx)("span",{children:"Expire Key"}),(0,c.jsx)(B.Z,{title:"Set when this key should expire. Format: 30s (seconds), 30m (minutes), 30h (hours), 30d (days)",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})})]}),(0,c.jsx)(eG.o,{name:"duration",placeholder:"e.g., 30d",className:"w-full"})]})]}),(0,c.jsx)(K.Z,{}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Auto-Rotation Settings"}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 flex items-center space-x-1",children:[(0,c.jsx)("span",{children:"Enable Auto-Rotation"}),(0,c.jsx)(B.Z,{title:"Key will automatically regenerate at the specified interval for enhanced security.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})})]}),(0,c.jsx)(eK.Z,{checked:t,onChange:l,size:"default",className:t?"":"bg-gray-400"})]}),t&&(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 flex items-center space-x-1",children:[(0,c.jsx)("span",{children:"Rotation Interval"}),(0,c.jsx)(B.Z,{title:"How often the key should be automatically rotated. Choose the interval that best fits your security requirements.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)(I.default,{value:n?"custom":a,onChange:e=>{"custom"===e?o(!0):(o(!1),u(""),r(e))},className:"w-full",placeholder:"Select interval",children:[(0,c.jsx)(eH,{value:"7d",children:"7 days"}),(0,c.jsx)(eH,{value:"30d",children:"30 days"}),(0,c.jsx)(eH,{value:"90d",children:"90 days"}),(0,c.jsx)(eH,{value:"180d",children:"180 days"}),(0,c.jsx)(eH,{value:"365d",children:"365 days"}),(0,c.jsx)(eH,{value:"custom",children:"Custom interval"})]}),n&&(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsx)(eG.o,{value:m,onChange:e=>{let s=e.target.value;u(s),r(s)},placeholder:"e.g., 1s, 5m, 2h, 14d"}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"Supported formats: seconds (s), minutes (m), hours (h), days (d)"})]})]})]})]}),t&&(0,c.jsx)("div",{className:"bg-blue-50 p-3 rounded-md text-sm text-blue-700",children:"When rotation occurs, you'll receive a notification with the new key. The old key will be deactivated after a brief grace period."})]})]})};let{Option:eJ}=I.default;var eW=e=>{let{type:s,name:t,showDetailedDescriptions:l=!0,className:a="",initialValue:r=null,form:i,onChange:n}=e,o=s.toUpperCase(),d=s.toLowerCase(),m="Select 'guaranteed_throughput' to prevent overallocating ".concat(o," limit when the key belongs to a Team with specific ").concat(o," limits.");return(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:[o," Rate Limit Type"," ",(0,c.jsx)(B.Z,{title:m,children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:t,initialValue:r,className:a,children:(0,c.jsx)(I.default,{defaultValue:l?"default":void 0,placeholder:"Select rate limit type",style:{width:"100%"},optionLabelProp:l?"label":void 0,onChange:e=>{i&&i.setFieldValue(t,e),n&&n(e)},children:l?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eJ,{value:"best_effort_throughput",label:"Default",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Default"}),(0,c.jsxs)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:["Best effort throughput - no error if we're overallocating ",d," (Team/Key Limits checked at runtime)."]})]})}),(0,c.jsx)(eJ,{value:"guaranteed_throughput",label:"Guaranteed throughput",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Guaranteed throughput"}),(0,c.jsxs)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:["Guaranteed throughput - raise an error if we're overallocating ",d," (also checks model-specific limits)"]})]})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eJ,{value:"best_effort_throughput",children:"Best effort throughput"}),(0,c.jsx)(eJ,{value:"guaranteed_throughput",children:"Guaranteed throughput"})]})})})};let{Option:e$}=I.default,eQ=e=>{let s=[];if(console.log("data:",JSON.stringify(e)),e)for(let t of e)t.metadata&&t.metadata.tags&&s.push(...t.metadata.tags);let t=Array.from(new Set(s)).map(e=>({value:e,label:e}));return console.log("uniqueTags:",t),t},eX=async(e,s,t,l)=>{try{if(null===e||null===s)return[];if(null!==t){let a=(await (0,j.modelAvailableCall)(t,e,s,!0,l,!0)).data.map(e=>e.id);return console.log("available_model_names:",a),a}return[]}catch(e){return console.error("Error fetching user models:",e),[]}},e0=async(e,s,t,l)=>{try{if(null===e||null===s)return;if(null!==t){let a=(await (0,j.modelAvailableCall)(t,e,s)).data.map(e=>e.id);console.log("available_model_names:",a),l(a)}}catch(e){console.error("Error fetching user models:",e)}};var e1=e=>{let{userID:s,team:t,teams:l,userRole:a,accessToken:r,data:i,addKey:n,premiumUser:o=!1}=e,[m]=A.Z.useForm(),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(null),[g,f]=(0,d.useState)(null),[M,D]=(0,d.useState)([]),[R,K]=(0,d.useState)([]),[G,H]=(0,d.useState)("you"),[Y,J]=(0,d.useState)(eQ(i)),[W,$]=(0,d.useState)([]),[Q,X]=(0,d.useState)([]),[es,et]=(0,d.useState)([]),[el,ea]=(0,d.useState)(t),[ei,en]=(0,d.useState)(!1),[ec,ed]=(0,d.useState)(null),[em,eu]=(0,d.useState)({}),[ex,eh]=(0,d.useState)([]),[ep,eg]=(0,d.useState)(!1),[ej,ef]=(0,d.useState)([]),[ev,ey]=(0,d.useState)(!1),[eb,e_]=(0,d.useState)([]),[eN,eZ]=(0,d.useState)("default"),[ew,eS]=(0,d.useState)({}),[eA,eT]=(0,d.useState)(!1),[eL,eM]=(0,d.useState)("30d"),eO=()=>{x(!1),m.resetFields(),et([]),e_([]),eZ("default"),eS({}),eT(!1),eM("30d")},eF=()=>{x(!1),p(null),ea(null),m.resetFields(),et([]),e_([]),eZ("default"),eS({}),eT(!1),eM("30d")};(0,d.useEffect)(()=>{s&&a&&r&&e0(s,a,r,D)},[r,s,a]);let eR=async()=>{try{if(null==r)return;let e=await (0,j.fetchMCPAccessGroups)(r);ef(e)}catch(e){console.error("Failed to fetch MCP access groups:",e)}};(0,d.useEffect)(()=>{eR()},[r]),(0,d.useEffect)(()=>{let e=async()=>{try{let e=await (0,j.getPromptsList)(r);X(e.prompts.map(e=>e.prompt_id))}catch(e){console.error("Failed to fetch prompts:",e)}};(async()=>{try{let e=(await (0,j.getGuardrailsList)(r)).guardrails.map(e=>e.guardrail_name);$(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})(),e()},[r]),(0,d.useEffect)(()=>{(async()=>{try{if(r){let e=sessionStorage.getItem("possibleUserRoles");if(e)eu(JSON.parse(e));else{let e=await (0,j.getPossibleUserRoles)(r);sessionStorage.setItem("possibleUserRoles",JSON.stringify(e)),eu(e)}}}catch(e){console.error("Error fetching possible user roles:",e)}})()},[r]);let ez=R.includes("no-default-models")&&!el,eU=async e=>{try{var t,l,a,o,c;let d;let u=null!==(a=null==e?void 0:e.key_alias)&&void 0!==a?a:"",h=null!==(o=null==e?void 0:e.team_id)&&void 0!==o?o:null;if((null!==(c=null==i?void 0:i.filter(e=>e.team_id===h).map(e=>e.key_alias))&&void 0!==c?c:[]).includes(u))throw Error("Key alias ".concat(u," already exists for team with ID ").concat(h,", please provide another key alias"));eo.Z.info("Making API Call"),x(!0),"you"===G&&(e.user_id=s);let g={};try{g=JSON.parse(e.metadata||"{}")}catch(e){console.error("Error parsing metadata:",e)}if("service_account"===G&&(g.service_account_id=e.key_alias),es.length>0&&(g={...g,logging:es.filter(e=>e.callback_name)}),eb.length>0){let e=ee(eb);g={...g,litellm_disabled_callbacks:e}}if(eA&&(e.auto_rotate=!0,e.rotation_interval=eL),e.duration&&(e.duration=e.duration),e.metadata=JSON.stringify(g),e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0&&(e.object_permission={vector_stores:e.allowed_vector_store_ids},delete e.allowed_vector_store_ids),e.allowed_mcp_servers_and_groups&&((null===(t=e.allowed_mcp_servers_and_groups.servers)||void 0===t?void 0:t.length)>0||(null===(l=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===l?void 0:l.length)>0)){e.object_permission||(e.object_permission={});let{servers:s,accessGroups:t}=e.allowed_mcp_servers_and_groups;s&&s.length>0&&(e.object_permission.mcp_servers=s),t&&t.length>0&&(e.object_permission.mcp_access_groups=t),delete e.allowed_mcp_servers_and_groups}e.allowed_mcp_access_groups&&e.allowed_mcp_access_groups.length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_access_groups=e.allowed_mcp_access_groups,delete e.allowed_mcp_access_groups),Object.keys(ew).length>0&&(e.aliases=JSON.stringify(ew)),d="service_account"===G?await (0,j.keyCreateServiceAccountCall)(r,e):await (0,j.keyCreateCall)(r,s,e),console.log("key create Response:",d),n(d),p(d.key),f(d.soft_budget),eo.Z.success("API Key Created"),m.resetFields(),localStorage.removeItem("userData"+s)}catch(e){console.log("error in create key:",e),eo.Z.fromBackend("Error creating the key: ".concat(e))}};(0,d.useEffect)(()=>{if(s&&a&&r){var e;eX(s,a,r,null!==(e=null==el?void 0:el.team_id)&&void 0!==e?e:null).then(e=>{var s;K(Array.from(new Set([...null!==(s=null==el?void 0:el.models)&&void 0!==s?s:[],...e])))})}m.setFieldValue("models",[])},[el,r,s,a]);let eq=async e=>{if(!e){eh([]);return}eg(!0);try{let s=new URLSearchParams;if(s.append("user_email",e),null==r)return;let t=(await (0,j.userFilterUICall)(r,s)).map(e=>({label:"".concat(e.user_email," (").concat(e.user_id,")"),value:e.user_id,user:e}));eh(t)}catch(e){console.error("Error fetching users:",e),eo.Z.fromBackend("Failed to search for users")}finally{eg(!1)}},eV=(0,d.useCallback)(eC()(e=>eq(e),300),[r]),eK=(e,s)=>{let t=s.user;m.setFieldsValue({user_id:t.user_id})};return(0,c.jsxs)("div",{children:[a&&eI.LQ.includes(a)&&(0,c.jsx)(b.Z,{className:"mx-auto",onClick:()=>x(!0),children:"+ Create New Key"}),(0,c.jsx)(T.Z,{visible:u,width:1e3,footer:null,onOk:eO,onCancel:eF,children:(0,c.jsxs)(A.Z,{form:m,onFinish:eU,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(S.Z,{className:"mb-4",children:"Key Ownership"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Owned By"," ",(0,c.jsx)(B.Z,{title:"Select who will own this API key",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),className:"mb-4",children:(0,c.jsxs)(E.ZP.Group,{onChange:e=>H(e.target.value),value:G,children:[(0,c.jsx)(E.ZP,{value:"you",children:"You"}),(0,c.jsx)(E.ZP,{value:"service_account",children:"Service Account"}),"Admin"===a&&(0,c.jsx)(E.ZP,{value:"another_user",children:"Another User"})]})}),"another_user"===G&&(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["User ID"," ",(0,c.jsx)(B.Z,{title:"The user who will own this key and be responsible for its usage",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"user_id",className:"mt-4",rules:[{required:"another_user"===G,message:"Please input the user ID of the user you are assigning the key to"}],children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{style:{display:"flex",marginBottom:"8px"},children:[(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Type email to search for users",filterOption:!1,onSearch:e=>{eV(e)},onSelect:(e,s)=>eK(e,s),options:ex,loading:ep,allowClear:!0,style:{width:"100%"},notFoundContent:ep?"Searching...":"No users found"}),(0,c.jsx)(L.ZP,{onClick:()=>en(!0),style:{marginLeft:"8px"},children:"Create User"})]}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"Search by email to find users"})]})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Team"," ",(0,c.jsx)(B.Z,{title:"The team this key belongs to, which determines available models and budget limits",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"team_id",initialValue:t?t.team_id:null,className:"mt-4",rules:[{required:"service_account"===G,message:"Please select a team for the service account"}],help:"service_account"===G?"required":"",children:(0,c.jsx)(q,{teams:l,onChange:e=>{ea((null==l?void 0:l.find(s=>s.team_id===e))||null)}})})]}),ez&&(0,c.jsx)("div",{className:"mb-8 p-4 bg-blue-50 border border-blue-200 rounded-md",children:(0,c.jsx)(k.Z,{className:"text-blue-800 text-sm",children:"Please select a team to continue configuring your API key. If you do not see any teams, please contact your Proxy Admin to either provide you with access to models or to add you to a team."})}),!ez&&(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(S.Z,{className:"mb-4",children:"Key Details"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["you"===G||"another_user"===G?"Key Name":"Service Account ID"," ",(0,c.jsx)(B.Z,{title:"you"===G||"another_user"===G?"A descriptive name to identify this key":"Unique identifier for this service account",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"key_alias",rules:[{required:!0,message:"Please input a ".concat("you"===G?"key name":"service account ID")}],help:"required",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Models"," ",(0,c.jsx)(B.Z,{title:"Select which models this key can access. Choose 'All Team Models' to grant access to all models available to the team",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",rules:"management"===eN||"read_only"===eN?[]:[{required:!0,message:"Please select a model"}],help:"management"===eN||"read_only"===eN?"Models field is disabled for this key type":"required",className:"mt-4",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},disabled:"management"===eN||"read_only"===eN,onChange:e=>{e.includes("all-team-models")&&m.setFieldsValue({models:["all-team-models"]})},children:[(0,c.jsx)(e$,{value:"all-team-models",children:"All Team Models"},"all-team-models"),R.map(e=>(0,c.jsx)(e$,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Key Type"," ",(0,c.jsx)(B.Z,{title:"Select the type of key to determine what routes and operations this key can access",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"key_type",initialValue:"default",className:"mt-4",children:(0,c.jsxs)(I.default,{defaultValue:"default",placeholder:"Select key type",style:{width:"100%"},optionLabelProp:"label",onChange:e=>{eZ(e),("management"===e||"read_only"===e)&&m.setFieldsValue({models:[]})},children:[(0,c.jsx)(e$,{value:"default",label:"Default",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Default"}),(0,c.jsx)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:"Can call LLM API + Management routes"})]})}),(0,c.jsx)(e$,{value:"llm_api",label:"LLM API",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"LLM API"}),(0,c.jsx)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:"Can call only LLM API routes (chat/completions, embeddings, etc.)"})]})}),(0,c.jsx)(e$,{value:"management",label:"Management",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Management"}),(0,c.jsx)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:"Can call only management routes (user/team/key management)"})]})})]})})]}),!ez&&(0,c.jsx)("div",{className:"mb-8",children:(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",onClick:()=>{ev||(eR(),ey(!0))},children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)(S.Z,{className:"m-0",children:"Optional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Max Budget (USD)"," ",(0,c.jsx)(B.Z,{title:"Maximum amount in USD this key can spend. When reached, the key will be blocked from making further requests",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"max_budget",help:"Budget cannot exceed team max budget: $".concat((null==t?void 0:t.max_budget)!==null&&(null==t?void 0:t.max_budget)!==void 0?null==t?void 0:t.max_budget:"unlimited"),rules:[{validator:async(e,s)=>{if(s&&t&&null!==t.max_budget&&s>t.max_budget)throw Error("Budget cannot exceed team max budget: $".concat(eP(t.max_budget,4)))}}],children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Reset Budget"," ",(0,c.jsx)(B.Z,{title:"How often the budget should reset. For example, setting 'daily' will reset the budget every 24 hours",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"budget_duration",help:"Team Reset Budget: ".concat((null==t?void 0:t.budget_duration)!==null&&(null==t?void 0:t.budget_duration)!==void 0?null==t?void 0:t.budget_duration:"None"),children:(0,c.jsx)(eE,{onChange:e=>m.setFieldValue("budget_duration",e)})}),(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Tokens per minute Limit (TPM)"," ",(0,c.jsx)(B.Z,{title:"Maximum number of tokens this key can process per minute. Helps control usage and costs",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"tpm_limit",help:"TPM cannot exceed team TPM limit: ".concat((null==t?void 0:t.tpm_limit)!==null&&(null==t?void 0:t.tpm_limit)!==void 0?null==t?void 0:t.tpm_limit:"unlimited"),rules:[{validator:async(e,s)=>{if(s&&t&&null!==t.tpm_limit&&s>t.tpm_limit)throw Error("TPM limit cannot exceed team TPM limit: ".concat(t.tpm_limit))}}],children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(eW,{type:"tpm",name:"tpm_limit_type",className:"mt-4",initialValue:null,form:m,showDetailedDescriptions:!0}),(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Requests per minute Limit (RPM)"," ",(0,c.jsx)(B.Z,{title:"Maximum number of API requests this key can make per minute. Helps prevent abuse and manage load",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"rpm_limit",help:"RPM cannot exceed team RPM limit: ".concat((null==t?void 0:t.rpm_limit)!==null&&(null==t?void 0:t.rpm_limit)!==void 0?null==t?void 0:t.rpm_limit:"unlimited"),rules:[{validator:async(e,s)=>{if(s&&t&&null!==t.rpm_limit&&s>t.rpm_limit)throw Error("RPM limit cannot exceed team RPM limit: ".concat(t.rpm_limit))}}],children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(eW,{type:"rpm",name:"rpm_limit_type",className:"mt-4",initialValue:null,form:m,showDetailedDescriptions:!0}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Apply safety guardrails to this key to filter content or enforce policies",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",className:"mt-4",help:o?"Select existing guardrails or enter new ones":"Premium feature - Upgrade to set guardrails by key",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},disabled:!o,placeholder:o?"Select or enter guardrails":"Premium feature - Upgrade to set guardrails by key",options:W.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Prompts"," ",(0,c.jsx)(B.Z,{title:"Allow this key to use specific prompt templates",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/prompt_management",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"prompts",className:"mt-4",help:o?"Select existing prompts or enter new ones":"Premium feature - Upgrade to set prompts by key",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},disabled:!o,placeholder:o?"Select or enter prompts":"Premium feature - Upgrade to set prompts by key",options:Q.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Vector Stores"," ",(0,c.jsx)(B.Z,{title:"Select which vector stores this key can access. If none selected, the key will have access to all available vector stores",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_vector_store_ids",className:"mt-4",help:"Select vector stores this key can access. Leave empty for access to all vector stores",children:(0,c.jsx)(U,{onChange:e=>m.setFieldValue("allowed_vector_store_ids",e),value:m.getFieldValue("allowed_vector_store_ids"),accessToken:r,placeholder:"Select vector stores (optional)"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed MCP Servers"," ",(0,c.jsx)(B.Z,{title:"Select which MCP servers or access groups this key can access. ",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_mcp_servers_and_groups",className:"mt-4",help:"Select MCP servers or access groups this key can access. ",children:(0,c.jsx)(eD,{onChange:e=>m.setFieldValue("allowed_mcp_servers_and_groups",e),value:m.getFieldValue("allowed_mcp_servers_and_groups"),accessToken:r,placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Metadata"," ",(0,c.jsx)(B.Z,{title:"JSON object with additional information about this key. Used for tracking or custom logic",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"metadata",className:"mt-4",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Tags"," ",(0,c.jsx)(B.Z,{title:"Tags for tracking spend and/or doing tag-based routing. Used for analytics and filtering",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"tags",className:"mt-4",help:"Tags for tracking spend and/or doing tag-based routing.",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},placeholder:"Enter tags",tokenSeparators:[","],options:Y})}),o?(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Logging Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(er,{value:es,onChange:et,premiumUser:!0,disabledCallbacks:eb,onDisabledCallbacksChange:e_})})})]}):(0,c.jsx)(B.Z,{title:(0,c.jsxs)("span",{children:["Key-level logging settings is an enterprise feature, get in touch -",(0,c.jsx)("a",{href:"https://www.litellm.ai/enterprise",target:"_blank",children:"https://www.litellm.ai/enterprise"})]}),placement:"top",children:(0,c.jsxs)("div",{style:{position:"relative"},children:[(0,c.jsx)("div",{style:{opacity:.5},children:(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Logging Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(er,{value:es,onChange:et,premiumUser:!1,disabledCallbacks:eb,onDisabledCallbacksChange:e_})})})]})}),(0,c.jsx)("div",{style:{position:"absolute",inset:0,cursor:"not-allowed"}})]})}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Model Aliases"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600 mb-4",children:"Create custom aliases for models that can be used in API calls. This allows you to create shortcuts for specific models."}),(0,c.jsx)(eB,{accessToken:r,initialModelAliases:ew,onAliasUpdate:eS,showExampleConfig:!1})]})})]}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Key Lifecycle"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(eY,{form:m,autoRotationEnabled:eA,onAutoRotationChange:eT,rotationInterval:eL,onRotationIntervalChange:eM})})})]}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("b",{children:"Advanced Settings"}),(0,c.jsx)(B.Z,{title:(0,c.jsxs)("span",{children:["Learn more about advanced settings in our"," ",(0,c.jsx)("a",{href:j.proxyBaseUrl?"".concat(j.proxyBaseUrl,"/#/key%20management/generate_key_fn_key_generate_post"):"/#/key%20management/generate_key_fn_key_generate_post",target:"_blank",rel:"noopener noreferrer",className:"text-blue-400 hover:text-blue-300",children:"documentation"})]}),children:(0,c.jsx)(V.Z,{className:"text-gray-400 hover:text-gray-300 cursor-help"})})]})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)(z.Z,{schemaComponent:"GenerateKeyRequest",form:m,excludedFields:["key_alias","team_id","models","duration","metadata","tags","guardrails","max_budget","budget_duration","tpm_limit","rpm_limit"]})})]})]})]})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",disabled:ez,style:{opacity:ez?.5:1},children:"Create Key"})})]})}),ei&&(0,c.jsx)(T.Z,{title:"Create New User",visible:ei,onCancel:()=>en(!1),footer:null,width:800,children:(0,c.jsx)(ek,{userID:s,accessToken:r,teams:l,possibleUIRoles:em,onUserCreated:e=>{ed(e),m.setFieldsValue({user_id:e}),en(!1)},isEmbedded:!0})}),h&&(0,c.jsx)(T.Z,{visible:u,onOk:eO,onCancel:eF,footer:null,children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:"Save your Key"}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)("p",{children:["Please save this secret key somewhere safe and accessible. For security reasons,"," ",(0,c.jsx)("b",{children:"you will not be able to view it again"})," through your LiteLLM account. If you lose this secret key, you will need to generate a new one."]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:null!=h?(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mt-3",children:"API Key:"}),(0,c.jsx)("div",{style:{background:"#f8f8f8",padding:"10px",borderRadius:"5px",marginBottom:"10px"},children:(0,c.jsx)("pre",{style:{wordWrap:"break-word",whiteSpace:"normal"},children:h})}),(0,c.jsx)(C.CopyToClipboard,{text:h,onCopy:()=>{eo.Z.success("API Key copied to clipboard")},children:(0,c.jsx)(b.Z,{className:"mt-3",children:"Copy API Key"})})]}):(0,c.jsx)(k.Z,{children:"Key being created, this might take 30s"})})]})})]})},e2=t(7366),e4=t(20577),e5=e=>{let{selectedTeam:s,currentOrg:t,selectedKeyAlias:l,accessToken:a,createClicked:r}=e,[i,n]=(0,d.useState)({keys:[],total_count:0,current_page:1,total_pages:0}),[o,c]=(0,d.useState)(!0),[m,u]=(0,d.useState)(null),x=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{if(console.log("calling fetchKeys"),!a){console.log("accessToken",a);return}c(!0);let s="number"==typeof e.page?e.page:1,t="number"==typeof e.pageSize?e.pageSize:100,l=await (0,j.keyListCall)(a,null,null,null,null,null,s,t);console.log("data",l),n(l),u(null)}catch(e){u(e instanceof Error?e:Error("An error occurred"))}finally{c(!1)}};return(0,d.useEffect)(()=>{x(),console.log("selectedTeam",s,"currentOrg",t,"accessToken",a,"selectedKeyAlias",l)},[s,t,a,l,r]),{keys:i.keys,isLoading:o,error:m,pagination:{currentPage:i.current_page,totalPages:i.total_pages,totalCount:i.total_count},refresh:x,setKeys:e=>{n(s=>{let t="function"==typeof e?e(s.keys):e;return{...s,keys:t}})}}},e3=t(27281),e6=t(41649),e8=t(12485),e7=t(18135),e9=t(35242),se=t(29706),ss=t(77991),st=t(10900),sl=t(23628),sa=e=>{let{value:s,onChange:t,disabledCallbacks:l=[],onDisabledCallbacksChange:a}=e;return(0,c.jsx)(ea,{value:s,onChange:t,disabledCallbacks:l,onDisabledCallbacksChange:a})};let sr=["logging"],si=e=>e&&"object"==typeof e?Object.fromEntries(Object.entries(e).filter(e=>{let[s]=e;return!sr.includes(s)})):{},sn=e=>e&&"object"==typeof e&&Array.isArray(e.logging)?e.logging:[],so=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return JSON.stringify(si(e),null,s)};var sc=e=>{let{onChange:s,value:t,className:l,accessToken:a,disabled:r}=e,[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{(async()=>{if(a){m(!0);try{let e=await (0,j.getGuardrailsList)(a);console.log("Guardrails response:",e),e.guardrails&&(console.log("Guardrails data:",e.guardrails),n(e.guardrails))}catch(e){console.error("Error fetching guardrails:",e)}finally{m(!1)}}})()},[a]),(0,c.jsx)("div",{children:(0,c.jsx)(I.default,{mode:"multiple",disabled:r,placeholder:r?"Setting guardrails is a premium feature.":"Select guardrails",onChange:e=>{console.log("Selected guardrails:",e),s(e)},value:t,loading:o,className:l,options:i.map(e=>(console.log("Mapping guardrail:",e),{label:"".concat(e.guardrail_name),value:e.guardrail_name})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"}})})};function sd(e){var s,t,l,a,r,i,n,o;let{keyData:m,onCancel:u,onSubmit:x,teams:h,accessToken:p,userID:g,userRole:f,premiumUser:v=!1}=e,[y]=A.Z.useForm(),[N,Z]=(0,d.useState)([]),[w,k]=(0,d.useState)([]),S=null==h?void 0:h.find(e=>e.team_id===m.team_id),[C,T]=(0,d.useState)([]),[E,M]=(0,d.useState)([]),[D,F]=(0,d.useState)(!1),[R,z]=(0,d.useState)(Array.isArray(null===(s=m.metadata)||void 0===s?void 0:s.litellm_disabled_callbacks)?X(m.metadata.litellm_disabled_callbacks):[]),[q,V]=(0,d.useState)(m.auto_rotate||!1),[K,G]=(0,d.useState)(m.rotation_interval||"");(0,d.useEffect)(()=>{let e=async()=>{if(g&&f&&p)try{if(null===m.team_id){let e=(await (0,j.modelAvailableCall)(p,g,f)).data.map(e=>e.id);T(e)}else if(null==S?void 0:S.team_id){let e=await eX(g,f,p,S.team_id);T(Array.from(new Set([...S.models,...e])))}}catch(e){console.error("Error fetching models:",e)}};(async()=>{if(p)try{let e=await (0,j.getPromptsList)(p);k(e.prompts.map(e=>e.prompt_id))}catch(e){console.error("Failed to fetch prompts:",e)}})(),e()},[g,f,p,S,m.team_id]),(0,d.useEffect)(()=>{y.setFieldValue("disabled_callbacks",R)},[y,R]);let H=e=>e&&({"24h":"daily","7d":"weekly","30d":"monthly"})[e]||null,Y={...m,token:m.token||m.token_id,budget_duration:H(m.budget_duration),metadata:so(m.metadata),guardrails:null===(t=m.metadata)||void 0===t?void 0:t.guardrails,prompts:null===(l=m.metadata)||void 0===l?void 0:l.prompts,vector_stores:(null===(a=m.object_permission)||void 0===a?void 0:a.vector_stores)||[],mcp_servers_and_groups:{servers:(null===(r=m.object_permission)||void 0===r?void 0:r.mcp_servers)||[],accessGroups:(null===(i=m.object_permission)||void 0===i?void 0:i.mcp_access_groups)||[]},logging_settings:sn(m.metadata),disabled_callbacks:Array.isArray(null===(n=m.metadata)||void 0===n?void 0:n.litellm_disabled_callbacks)?X(m.metadata.litellm_disabled_callbacks):[],auto_rotate:m.auto_rotate||!1,...m.rotation_interval&&{rotation_interval:m.rotation_interval}};return(0,d.useEffect)(()=>{var e,s,t,l,a,r;y.setFieldsValue({...m,token:m.token||m.token_id,budget_duration:H(m.budget_duration),metadata:so(m.metadata),guardrails:null===(e=m.metadata)||void 0===e?void 0:e.guardrails,prompts:null===(s=m.metadata)||void 0===s?void 0:s.prompts,vector_stores:(null===(t=m.object_permission)||void 0===t?void 0:t.vector_stores)||[],mcp_servers_and_groups:{servers:(null===(l=m.object_permission)||void 0===l?void 0:l.mcp_servers)||[],accessGroups:(null===(a=m.object_permission)||void 0===a?void 0:a.mcp_access_groups)||[]},logging_settings:sn(m.metadata),disabled_callbacks:Array.isArray(null===(r=m.metadata)||void 0===r?void 0:r.litellm_disabled_callbacks)?X(m.metadata.litellm_disabled_callbacks):[],auto_rotate:m.auto_rotate||!1,...m.rotation_interval&&{rotation_interval:m.rotation_interval}})},[m,y]),(0,d.useEffect)(()=>{y.setFieldValue("auto_rotate",q)},[q,y]),(0,d.useEffect)(()=>{K&&y.setFieldValue("rotation_interval",K)},[K,y]),console.log("premiumUser:",v),(0,c.jsxs)(A.Z,{form:y,onFinish:x,initialValues:Y,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Key Alias",name:"key_alias",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[C.length>0&&(0,c.jsx)(I.default.Option,{value:"all-team-models",children:"All Team Models"}),C.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,style:{width:"100%"},placeholder:"Enter a numerical value"})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"daily",children:"Daily"}),(0,c.jsx)(I.default.Option,{value:"weekly",children:"Weekly"}),(0,c.jsx)(I.default.Option,{value:"monthly",children:"Monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"TPM Limit",name:"tpm_limit",children:(0,c.jsx)(O,{min:0})}),(0,c.jsx)(eW,{type:"tpm",name:"tpm_limit_type",showDetailedDescriptions:!1}),(0,c.jsx)(A.Z.Item,{label:"RPM Limit",name:"rpm_limit",children:(0,c.jsx)(O,{min:0})}),(0,c.jsx)(eW,{type:"rpm",name:"rpm_limit_type",showDetailedDescriptions:!1}),(0,c.jsx)(A.Z.Item,{label:"Max Parallel Requests",name:"max_parallel_requests",children:(0,c.jsx)(O,{min:0})}),(0,c.jsx)(A.Z.Item,{label:"Model TPM Limit",name:"model_tpm_limit",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{"gpt-4": 100, "claude-v1": 200}'})}),(0,c.jsx)(A.Z.Item,{label:"Model RPM Limit",name:"model_rpm_limit",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{"gpt-4": 100, "claude-v1": 200}'})}),(0,c.jsx)(A.Z.Item,{label:"Guardrails",name:"guardrails",children:p&&(0,c.jsx)(sc,{onChange:e=>{y.setFieldValue("guardrails",e)},accessToken:p,disabled:!v})}),(0,c.jsx)(A.Z.Item,{label:"Prompts",name:"prompts",children:(0,c.jsx)(B.Z,{title:v?"":"Setting prompts by key is a premium feature",placement:"top",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},disabled:!v,placeholder:v?Array.isArray(null===(o=m.metadata)||void 0===o?void 0:o.prompts)&&m.metadata.prompts.length>0?"Current: ".concat(m.metadata.prompts.join(", ")):"Select or enter prompts":"Premium feature - Upgrade to set prompts by key",options:w.map(e=>({value:e,label:e}))})})}),(0,c.jsx)(A.Z.Item,{label:"Vector Stores",name:"vector_stores",children:(0,c.jsx)(U,{onChange:e=>y.setFieldValue("vector_stores",e),value:y.getFieldValue("vector_stores"),accessToken:p||"",placeholder:"Select vector stores"})}),(0,c.jsx)(A.Z.Item,{label:"MCP Servers / Access Groups",name:"mcp_servers_and_groups",children:(0,c.jsx)(eD,{onChange:e=>y.setFieldValue("mcp_servers_and_groups",e),value:y.getFieldValue("mcp_servers_and_groups"),accessToken:p||"",placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{label:"Team ID",name:"team_id",children:(0,c.jsx)(I.default,{placeholder:"Select team",style:{width:"100%"},children:null==h?void 0:h.map(e=>(0,c.jsx)(I.default.Option,{value:e.team_id,children:"".concat(e.team_alias," (").concat(e.team_id,")")},e.team_id))})}),(0,c.jsx)(A.Z.Item,{label:"Logging Settings",name:"logging_settings",children:(0,c.jsx)(sa,{value:y.getFieldValue("logging_settings"),onChange:e=>y.setFieldValue("logging_settings",e),disabledCallbacks:R,onDisabledCallbacksChange:e=>{z(X(e)),y.setFieldValue("disabled_callbacks",e)}})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:10})}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(eY,{form:y,autoRotationEnabled:q,onAutoRotationChange:V,rotationInterval:K,onRotationIntervalChange:G})}),(0,c.jsx)(A.Z.Item,{name:"token",hidden:!0,children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{name:"disabled_callbacks",hidden:!0,children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{name:"auto_rotate",hidden:!0,children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{name:"rotation_interval",hidden:!0,children:(0,c.jsx)(P.default,{})}),(0,c.jsx)("div",{className:"sticky z-10 bg-white p-4 border-t border-gray-200 bottom-[-1.5rem] inset-x-[-1.5rem]",children:(0,c.jsxs)("div",{className:"flex justify-end items-center gap-2",children:[(0,c.jsx)(L.ZP,{onClick:u,children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})})]})}function sm(e){let{selectedToken:s,visible:t,onClose:l,accessToken:a,premiumUser:r,setAccessToken:i,onKeyUpdate:n}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[f,N]=(0,d.useState)(!1),[Z,w]=(0,d.useState)(!1),[I,E]=(0,d.useState)(null);(0,d.useEffect)(()=>{t&&s&&a&&(o.setFieldsValue({key_alias:s.key_alias,max_budget:s.max_budget,tpm_limit:s.tpm_limit,rpm_limit:s.rpm_limit,duration:s.duration||""}),E(a),w(s.key_name===a))},[t,s,o,a]),(0,d.useEffect)(()=>{t||(u(null),N(!1),w(!1),E(null),o.resetFields())},[t,o]);let L=e=>{if(!e)return null;try{let s;let t=new Date;if(e.endsWith("s"))s=(0,e2.Z)(t,{seconds:parseInt(e)});else if(e.endsWith("h"))s=(0,e2.Z)(t,{hours:parseInt(e)});else if(e.endsWith("d"))s=(0,e2.Z)(t,{days:parseInt(e)});else throw Error("Invalid duration format");return s.toLocaleString()}catch(e){return null}};(0,d.useEffect)(()=>{(null==x?void 0:x.duration)?g(L(x.duration)):g(null)},[null==x?void 0:x.duration]);let P=async()=>{if(s&&I){N(!0);try{let e=await o.validateFields(),t=await (0,j.regenerateKeyCall)(I,s.token||s.token_id,e);u(t.key),eo.Z.success("API Key regenerated successfully"),console.log("Full regenerate response:",t);let l={token:t.token||t.key_id||s.token,key_name:t.key,max_budget:e.max_budget,tpm_limit:e.tpm_limit,rpm_limit:e.rpm_limit,expires:e.duration?L(e.duration):s.expires,...t};console.log("Updated key data with new token:",l),Z&&(E(t.key),i&&i(t.key)),n&&n(l),N(!1)}catch(e){console.error("Error regenerating key:",e),eo.Z.fromBackend(e),N(!1)}}},M=()=>{u(null),N(!1),w(!1),E(null),o.resetFields(),l()};return(0,c.jsx)(T.Z,{title:"Regenerate API Key",open:t,onCancel:M,footer:m?[(0,c.jsx)(b.Z,{onClick:M,children:"Close"},"close")]:[(0,c.jsx)(b.Z,{onClick:M,className:"mr-2",children:"Cancel"},"cancel"),(0,c.jsx)(b.Z,{onClick:P,disabled:f,children:f?"Regenerating...":"Regenerate"},"regenerate")],children:m?(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:"Regenerated Key"}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)("p",{children:["Please replace your old key with the new key generated. For security reasons,"," ",(0,c.jsx)("b",{children:"you will not be able to view it again"})," through your LiteLLM account. If you lose this secret key, you will need to generate a new one."]})}),(0,c.jsxs)(v.Z,{numColSpan:1,children:[(0,c.jsx)(k.Z,{className:"mt-3",children:"Key Alias:"}),(0,c.jsx)("div",{className:"bg-gray-100 p-2 rounded mb-2",children:(0,c.jsx)("pre",{className:"break-words whitespace-normal",children:(null==s?void 0:s.key_alias)||"No alias set"})}),(0,c.jsx)(k.Z,{className:"mt-3",children:"New API Key:"}),(0,c.jsx)("div",{className:"bg-gray-100 p-2 rounded mb-2",children:(0,c.jsx)("pre",{className:"break-words whitespace-normal",children:m})}),(0,c.jsx)(C.CopyToClipboard,{text:m,onCopy:()=>eo.Z.success("API Key copied to clipboard"),children:(0,c.jsx)(b.Z,{className:"mt-3",children:"Copy API Key"})})]})]}):(0,c.jsxs)(A.Z,{form:o,layout:"vertical",onValuesChange:e=>{"duration"in e&&h(s=>({...s,duration:e.duration}))},children:[(0,c.jsx)(A.Z.Item,{name:"key_alias",label:"Key Alias",children:(0,c.jsx)(_.Z,{disabled:!0})}),(0,c.jsx)(A.Z.Item,{name:"max_budget",label:"Max Budget (USD)",children:(0,c.jsx)(e4.Z,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"tpm_limit",label:"TPM Limit",children:(0,c.jsx)(e4.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"rpm_limit",label:"RPM Limit",children:(0,c.jsx)(e4.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"duration",label:"Expire Key (eg: 30s, 30h, 30d)",className:"mt-8",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsxs)("div",{className:"mt-2 text-sm text-gray-500",children:["Current expiry: ",(null==s?void 0:s.expires)?new Date(s.expires).toLocaleString():"Never"]}),p&&(0,c.jsxs)("div",{className:"mt-2 text-sm text-green-600",children:["New expiry: ",p]})]})})}var su=t(79814),sx=function(e){let{vectorStores:s,accessToken:t}=e,[l,a]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{if(t&&0!==s.length)try{let e=await (0,j.vectorStoreListCall)(t);e.data&&a(e.data.map(e=>({vector_store_id:e.vector_store_id,vector_store_name:e.vector_store_name})))}catch(e){console.error("Error fetching vector stores:",e)}})()},[t,s.length]);let r=e=>{let s=l.find(s=>s.vector_store_id===e);return s?"".concat(s.vector_store_name||s.vector_store_id," (").concat(s.vector_store_id,")"):e};return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(su.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Vector Stores"}),(0,c.jsx)(e6.Z,{color:"blue",size:"xs",children:s.length})]}),s.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:s.map((e,s)=>(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-blue-50 border border-blue-200 text-blue-800 text-sm font-medium",children:r(e)},s))}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(su.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No vector stores configured"})]})]})},sh=t(25327),sp=function(e){let{mcpServers:s,mcpAccessGroups:l=[],accessToken:a}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{if(a&&s.length>0)try{let e=await (0,j.fetchMCPServers)(a);e&&Array.isArray(e)?i(e):e.data&&Array.isArray(e.data)&&i(e.data)}catch(e){console.error("Error fetching MCP servers:",e)}})()},[a,s.length]),(0,d.useEffect)(()=>{(async()=>{if(a&&l.length>0)try{let e=await Promise.resolve().then(t.bind(t,19250)).then(e=>e.fetchMCPAccessGroups(a));o(Array.isArray(e)?e:e.data||[])}catch(e){console.error("Error fetching MCP access groups:",e)}})()},[a,l.length]);let m=e=>{let s=r.find(s=>s.server_id===e);if(s){let t=e.length>7?"".concat(e.slice(0,3),"...").concat(e.slice(-4)):e;return"".concat(s.alias," (").concat(t,")")}return e},u=e=>e,x=[...s.map(e=>({type:"server",value:e})),...l.map(e=>({type:"accessGroup",value:e}))],h=x.length;return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sh.Z,{className:"h-4 w-4 text-gray-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"MCP Servers"}),(0,c.jsx)(e6.Z,{color:"gray",size:"xs",children:h})]}),h>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:x.map((e,s)=>"server"===e.type?(0,c.jsx)(B.Z,{title:"Full ID: ".concat(e.value),placement:"top",children:(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-blue-50 border border-blue-200 text-blue-800 text-sm font-medium cursor-help",children:m(e.value)})},s):(0,c.jsxs)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-green-50 border border-green-200 text-green-800 text-sm font-medium",children:[(0,c.jsx)("span",{className:"inline-block w-2 h-2 bg-green-500 rounded-full mr-2"}),u(e.value)," ",(0,c.jsx)("span",{className:"ml-1 text-xs text-green-500",children:"(Access Group)"})]},s))}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(sh.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No MCP servers or access groups configured"})]})]})},sg=function(e){let{objectPermission:s,variant:t="card",className:l="",accessToken:a}=e,r=(null==s?void 0:s.vector_stores)||[],i=(null==s?void 0:s.mcp_servers)||[],n=(null==s?void 0:s.mcp_access_groups)||[],o=(0,c.jsxs)("div",{className:"card"===t?"grid grid-cols-1 md:grid-cols-2 gap-6":"space-y-4",children:[(0,c.jsx)(sx,{vectorStores:r,accessToken:a}),(0,c.jsx)(sp,{mcpServers:i,mcpAccessGroups:n,accessToken:a})]});return"card"===t?(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-6 ".concat(l),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Object Permissions"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500",children:"Access control for Vector Stores and MCP Servers"})]})}),o]}):(0,c.jsxs)("div",{className:"".concat(l),children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900 mb-3",children:"Object Permissions"}),o]})},sj=function(e){let{loggingConfigs:s=[],disabledCallbacks:t=[],variant:l="card",className:a=""}=e,r=e=>{var s;return(null===(s=Object.entries($).find(s=>{let[t,l]=s;return l===e}))||void 0===s?void 0:s[0])||e},i=e=>{switch(e){case"success":return"green";case"failure":return"red";case"success_and_failure":return"blue";default:return"gray"}},n=e=>{switch(e){case"success":return"Success Only";case"failure":return"Failure Only";case"success_and_failure":return"Success & Failure";default:return e}},o=(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(Y.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Logging Integrations"}),(0,c.jsx)(e6.Z,{color:"blue",size:"xs",children:s.length})]}),s.length>0?(0,c.jsx)("div",{className:"space-y-3",children:s.map((e,s)=>{var t;let l=r(e.callback_name),a=null===(t=et[l])||void 0===t?void 0:t.logo;return(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 rounded-lg bg-blue-50 border border-blue-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[a?(0,c.jsx)("img",{src:a,alt:l,className:"w-5 h-5 object-contain"}):(0,c.jsx)(Y.Z,{className:"h-5 w-5 text-gray-400"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium text-blue-800",children:l}),(0,c.jsxs)(k.Z,{className:"text-xs text-blue-600",children:[Object.keys(e.callback_vars).length," parameters configured"]})]})]}),(0,c.jsx)(e6.Z,{color:i(e.callback_type),size:"sm",children:n(e.callback_type)})]},s)})}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(Y.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No logging integrations configured"})]})]}),(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(H.Z,{className:"h-4 w-4 text-red-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Disabled Callbacks"}),(0,c.jsx)(e6.Z,{color:"red",size:"xs",children:t.length})]}),t.length>0?(0,c.jsx)("div",{className:"space-y-3",children:t.map((e,s)=>{var t;let l=Q[e]||e,a=null===(t=et[l])||void 0===t?void 0:t.logo;return(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 rounded-lg bg-red-50 border border-red-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[a?(0,c.jsx)("img",{src:a,alt:l,className:"w-5 h-5 object-contain"}):(0,c.jsx)(H.Z,{className:"h-5 w-5 text-gray-400"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium text-red-800",children:l}),(0,c.jsx)(k.Z,{className:"text-xs text-red-600",children:"Disabled for this key"})]})]}),(0,c.jsx)(e6.Z,{color:"red",size:"sm",children:"Disabled"})]},s)})}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(H.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No callbacks disabled"})]})]})]});return"card"===l?(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-6 ".concat(a),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Logging Settings"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500",children:"Active logging integrations and disabled callbacks for this key"})]})}),o]}):(0,c.jsxs)("div",{className:"".concat(a),children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900 mb-3",children:"Logging Settings"}),o]})},sf=t(30401),sv=t(78867),sy=t(85968),sb=t(58710),s_=e=>{let{autoRotate:s=!1,rotationInterval:t,lastRotationAt:l,keyRotationAt:a,nextRotationAt:r,variant:i="card",className:n=""}=e,o=e=>{let s=new Date(e),t=s.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),l=s.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return"".concat(t," at ").concat(l)},d=(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsx)("div",{className:"space-y-3",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sl.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Auto-Rotation"}),(0,c.jsx)(e6.Z,{color:s?"green":"gray",size:"xs",children:s?"Enabled":"Disabled"}),s&&t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(k.Z,{className:"text-gray-400",children:"•"}),(0,c.jsxs)(k.Z,{className:"text-sm text-gray-600",children:["Every ",t]})]})]})}),(s||l||a||r)&&(0,c.jsxs)("div",{className:"space-y-3",children:[l&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-200 rounded-md",children:[(0,c.jsx)(sb.Z,{className:"w-4 h-4 text-gray-500"}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-700",children:"Last Rotation"}),(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:o(l)})]})]}),(a||r)&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-200 rounded-md",children:[(0,c.jsx)(sb.Z,{className:"w-4 h-4 text-gray-500"}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-700",children:"Next Scheduled Rotation"}),(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:o(r||a||"")})]})]}),s&&!l&&!a&&!r&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-100 rounded-md",children:[(0,c.jsx)(sb.Z,{className:"w-4 h-4 text-gray-500"}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"No rotation history available"})]})]}),!s&&!l&&!a&&!r&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-100 rounded-md",children:[(0,c.jsx)(sl.Z,{className:"w-4 h-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"Auto-rotation is not enabled for this key"})]})]});return"card"===i?(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-6 ".concat(n),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Auto-Rotation"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500",children:"Automatic key rotation settings and status for this key"})]})}),d]}):(0,c.jsxs)("div",{className:"".concat(n),children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900 mb-3",children:"Auto-Rotation"}),d]})};function sN(e){var s,t,l,a,r;let{keyId:i,onClose:n,keyData:o,accessToken:m,userID:u,userRole:x,teams:h,onKeyDataUpdate:p,onDelete:g,premiumUser:f,setAccessToken:v,backButtonText:_="Back to Keys"}=e,[N,Z]=(0,d.useState)(!1),[w]=A.Z.useForm(),[C,I]=(0,d.useState)(!1),[T,E]=(0,d.useState)(""),[P,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)({}),[F,R]=(0,d.useState)(o),[z,U]=(0,d.useState)(null),[q,V]=(0,d.useState)(!1);if((0,d.useEffect)(()=>{o&&R(o)},[o]),(0,d.useEffect)(()=>{if(q){let e=setTimeout(()=>{V(!1)},5e3);return()=>clearTimeout(e)}},[q]),!F)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",onClick:n,className:"mb-4",children:_}),(0,c.jsx)(k.Z,{children:"Key not found"})]});let K=async e=>{try{var s,t,l,a;if(!m)return;let r=e.token;if(e.key=r,f||(delete e.guardrails,delete e.prompts),void 0!==e.vector_stores&&(e.object_permission={...F.object_permission,vector_stores:e.vector_stores||[]},delete e.vector_stores),void 0!==e.mcp_servers_and_groups){let{servers:s,accessGroups:t}=e.mcp_servers_and_groups||{servers:[],accessGroups:[]};e.object_permission={...F.object_permission,mcp_servers:s||[],mcp_access_groups:t||[]},delete e.mcp_servers_and_groups}if(e.metadata&&"string"==typeof e.metadata)try{let l=JSON.parse(e.metadata);e.metadata={...l,...(null===(s=e.guardrails)||void 0===s?void 0:s.length)>0?{guardrails:e.guardrails}:{},...e.logging_settings?{logging:e.logging_settings}:{},...(null===(t=e.disabled_callbacks)||void 0===t?void 0:t.length)>0?{litellm_disabled_callbacks:ee(e.disabled_callbacks)}:{}}}catch(e){console.error("Error parsing metadata JSON:",e),eo.Z.error("Invalid metadata JSON");return}else e.metadata={...e.metadata||{},...(null===(l=e.guardrails)||void 0===l?void 0:l.length)>0?{guardrails:e.guardrails}:{},...e.logging_settings?{logging:e.logging_settings}:{},...(null===(a=e.disabled_callbacks)||void 0===a?void 0:a.length)>0?{litellm_disabled_callbacks:ee(e.disabled_callbacks)}:{}};delete e.logging_settings,e.budget_duration&&(e.budget_duration=({daily:"24h",weekly:"7d",monthly:"30d"})[e.budget_duration]);let i=await (0,j.keyUpdateCall)(m,e);R(e=>e?{...e,...i}:void 0),p&&p(i),eo.Z.success("Key updated successfully"),Z(!1)}catch(e){eo.Z.fromBackend((0,sy.O)(e)),console.error("Error updating key:",e)}},H=async()=>{try{if(!m)return;await (0,j.keyDeleteCall)(m,F.token||F.token_id),eo.Z.success("Key deleted successfully"),g&&g(),n()}catch(e){console.error("Error deleting the key:",e),eo.Z.fromBackend(e)}E("")},Y=async(e,s)=>{await eM(e)&&(D(e=>({...e,[s]:!0})),setTimeout(()=>{D(e=>({...e,[s]:!1}))},2e3))},J=e=>{let s=new Date(e),t=s.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),l=s.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return"".concat(t," at ").concat(l)};return(0,c.jsxs)("div",{className:"w-full h-screen p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",onClick:n,className:"mb-4",children:_}),(0,c.jsx)(S.Z,{children:F.key_alias||"API Key"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer mb-2 space-y-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-xs text-gray-400 uppercase tracking-wide mt-2",children:"Key ID"}),(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono text-sm",children:F.token_id||F.token})]}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:O["key-id"]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>Y(F.token_id||F.token,"key-id"),className:"ml-2 transition-all duration-200".concat(O["key-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-500",children:F.updated_at&&F.updated_at!==F.created_at?"Updated: ".concat(J(F.updated_at)):"Created: ".concat(J(F.created_at))}),q&&(0,c.jsx)(e6.Z,{color:"green",size:"xs",className:"animate-pulse",children:"Recently Regenerated"}),z&&(0,c.jsx)(e6.Z,{color:"blue",size:"xs",children:"Regenerated"})]})]}),x&&eI.LQ.includes(x)&&(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(B.Z,{title:f?"":"This is a LiteLLM Enterprise feature, and requires a valid key to use.",children:(0,c.jsx)("span",{className:"inline-block",children:(0,c.jsx)(b.Z,{icon:sl.Z,variant:"secondary",onClick:()=>M(!0),className:"flex items-center",disabled:!f,children:"Regenerate Key"})})}),(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>I(!0),className:"flex items-center",children:"Delete Key"})]})]}),(0,c.jsx)(sm,{selectedToken:F,visible:P,onClose:()=>M(!1),accessToken:m,premiumUser:f,setAccessToken:v,onKeyUpdate:e=>{R(s=>{if(s)return{...s,...e,created_at:new Date().toLocaleString()}}),U(new Date),V(!0),p&&p({...e,created_at:new Date().toLocaleString()})}}),C&&(()=>{let e=(null==F?void 0:F.key_alias)||(null==F?void 0:F.token_id)||"API Key",s=T===e;return(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl w-full max-w-2xl min-h-[380px] py-6 overflow-hidden transform transition-all flex flex-col justify-between",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Delete Key"}),(0,c.jsx)("button",{onClick:()=>{I(!1),E("")},className:"text-gray-400 hover:text-gray-500 focus:outline-none",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,c.jsxs)("div",{className:"px-6 py-4",children:[(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.082 16.5c-.77.833.192 2.5 1.732 2.5z"})})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-base font-medium text-red-600",children:"Warning: You are about to delete this API key."}),(0,c.jsx)("p",{className:"text-base text-red-600 mt-2",children:"This action is irreversible and will immediately revoke access for any applications using this key."})]})]}),(0,c.jsx)("p",{className:"text-base text-gray-600 mb-5",children:"Are you sure you want to delete this API key?"}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsx)("span",{className:"underline",children:e})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:T,onChange:e=>E(e.target.value),placeholder:"Enter key name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]})]})]}),(0,c.jsxs)("div",{className:"px-6 py-4 bg-gray-50 flex justify-end gap-4",children:[(0,c.jsx)("button",{onClick:()=>{I(!1),E("")},className:"px-5 py-3 bg-white border border-gray-300 rounded-md text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:"Cancel"}),(0,c.jsx)("button",{onClick:H,disabled:!s,className:"px-5 py-3 rounded-md text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 ".concat(s?"bg-red-600 hover:bg-red-700":"bg-red-300 cursor-not-allowed"),children:"Delete Key"})]})]})})})(),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{className:"mb-4",children:[(0,c.jsx)(e8.Z,{children:"Overview"}),(0,c.jsx)(e8.Z,{children:"Settings"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Spend"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eP(F.spend,4)]}),(0,c.jsxs)(k.Z,{children:["of"," ",null!==F.max_budget?"$".concat(eP(F.max_budget)):"Unlimited"]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Rate Limits"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["TPM: ",null!==F.tpm_limit?F.tpm_limit:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",null!==F.rpm_limit?F.rpm_limit:"Unlimited"]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Models"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:F.models&&F.models.length>0?F.models.map((e,s)=>(0,c.jsx)(e6.Z,{color:"red",children:e},s)):(0,c.jsx)(k.Z,{children:"No models specified"})})]}),(0,c.jsx)(G.Z,{children:(0,c.jsx)(sg,{objectPermission:F.object_permission,variant:"inline",accessToken:m})}),(0,c.jsx)(sj,{loggingConfigs:sn(F.metadata),disabledCallbacks:Array.isArray(null===(s=F.metadata)||void 0===s?void 0:s.litellm_disabled_callbacks)?X(F.metadata.litellm_disabled_callbacks):[],variant:"card"}),(0,c.jsx)(s_,{autoRotate:F.auto_rotate,rotationInterval:F.rotation_interval,lastRotationAt:F.last_rotation_at,keyRotationAt:F.key_rotation_at,nextRotationAt:F.next_rotation_at,variant:"card"})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsxs)(G.Z,{className:"overflow-y-auto max-h-[65vh]",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Key Settings"}),!N&&x&&eI.LQ.includes(x)&&(0,c.jsx)(b.Z,{variant:"light",onClick:()=>Z(!0),children:"Edit Settings"})]}),N?(0,c.jsx)(sd,{keyData:F,onCancel:()=>Z(!1),onSubmit:K,teams:h,accessToken:m,userID:u,userRole:x,premiumUser:f}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Key ID"}),(0,c.jsx)(k.Z,{className:"font-mono",children:F.token_id||F.token})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Key Alias"}),(0,c.jsx)(k.Z,{children:F.key_alias||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Secret Key"}),(0,c.jsx)(k.Z,{className:"font-mono",children:F.key_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team ID"}),(0,c.jsx)(k.Z,{children:F.team_id||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization"}),(0,c.jsx)(k.Z,{children:F.organization_id||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created"}),(0,c.jsx)(k.Z,{children:J(F.created_at)})]}),z&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Regenerated"}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{children:J(z)}),(0,c.jsx)(e6.Z,{color:"green",size:"xs",children:"Recent"})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Expires"}),(0,c.jsx)(k.Z,{children:F.expires?J(F.expires):"Never"})]}),(0,c.jsx)(s_,{autoRotate:F.auto_rotate,rotationInterval:F.rotation_interval,lastRotationAt:F.last_rotation_at,keyRotationAt:F.key_rotation_at,nextRotationAt:F.next_rotation_at,variant:"inline",className:"pt-4 border-t border-gray-200"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Spend"}),(0,c.jsxs)(k.Z,{children:["$",eP(F.spend,4)," USD"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Budget"}),(0,c.jsx)(k.Z,{children:null!==F.max_budget?"$".concat(eP(F.max_budget,2)):"Unlimited"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompts"}),(0,c.jsx)(k.Z,{children:Array.isArray(null===(t=F.metadata)||void 0===t?void 0:t.prompts)&&F.metadata.prompts.length>0?F.metadata.prompts.map((e,s)=>(0,c.jsx)("span",{className:"px-2 mr-2 py-1 bg-blue-100 rounded text-xs",children:e},s)):"No prompts specified"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:F.models&&F.models.length>0?F.models.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:e},s)):(0,c.jsx)(k.Z,{children:"No models specified"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Rate Limits"}),(0,c.jsxs)(k.Z,{children:["TPM: ",null!==F.tpm_limit?F.tpm_limit:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",null!==F.rpm_limit?F.rpm_limit:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["Max Parallel Requests:"," ",null!==F.max_parallel_requests?F.max_parallel_requests:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["Model TPM Limits:"," ",(null===(l=F.metadata)||void 0===l?void 0:l.model_tpm_limit)?JSON.stringify(F.metadata.model_tpm_limit):"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["Model RPM Limits:"," ",(null===(a=F.metadata)||void 0===a?void 0:a.model_rpm_limit)?JSON.stringify(F.metadata.model_rpm_limit):"Unlimited"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Metadata"}),(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:so(F.metadata)})]}),(0,c.jsx)(sg,{objectPermission:F.object_permission,variant:"inline",className:"pt-4 border-t border-gray-200",accessToken:m}),(0,c.jsx)(sj,{loggingConfigs:sn(F.metadata),disabledCallbacks:Array.isArray(null===(r=F.metadata)||void 0===r?void 0:r.litellm_disabled_callbacks)?X(F.metadata.litellm_disabled_callbacks):[],variant:"inline",className:"pt-4 border-t border-gray-200"})]})]})})]})]})]})}var sZ=t(2356),sw=e=>{let{options:s,onApplyFilters:t,onResetFilters:l,initialValues:a={},buttonLabel:r="Filters"}=e,[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(a),[u,x]=(0,d.useState)({}),[h,p]=(0,d.useState)({}),[g,j]=(0,d.useState)({}),[f,v]=(0,d.useState)({}),y=(0,d.useCallback)(eC()(async(e,s)=>{if(s.isSearchable&&s.searchFn){p(e=>({...e,[s.name]:!0}));try{let t=await s.searchFn(e);x(e=>({...e,[s.name]:t}))}catch(e){console.error("Error searching:",e),x(e=>({...e,[s.name]:[]}))}finally{p(e=>({...e,[s.name]:!1}))}}},300),[]),b=(0,d.useCallback)(async e=>{if(e.isSearchable&&e.searchFn&&!f[e.name]){p(s=>({...s,[e.name]:!0})),v(s=>({...s,[e.name]:!0}));try{let s=await e.searchFn("");x(t=>({...t,[e.name]:s}))}catch(s){console.error("Error loading initial options:",s),x(s=>({...s,[e.name]:[]}))}finally{p(s=>({...s,[e.name]:!1}))}}},[f]);(0,d.useEffect)(()=>{i&&s.forEach(e=>{e.isSearchable&&!f[e.name]&&b(e)})},[i,s,b,f]);let _=(e,s)=>{let l={...o,[e]:s};m(l),t(l)},N=(e,s)=>{e&&s.isSearchable&&!f[s.name]&&b(s)};return(0,c.jsxs)("div",{className:"w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-6",children:[(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(sZ.Z,{className:"h-4 w-4"}),onClick:()=>n(!i),className:"flex items-center gap-2",children:r}),(0,c.jsx)(L.ZP,{onClick:()=>{let e={};s.forEach(s=>{e[s.name]=""}),m(e),l()},children:"Reset Filters"})]}),i&&(0,c.jsx)("div",{className:"grid grid-cols-3 gap-x-6 gap-y-4 mb-6",children:["Team ID","Status","Organization ID","Key Alias","User ID","End User","Key Hash","Model"].map(e=>{let t=s.find(s=>s.label===e||s.name===e);return t?(0,c.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,c.jsx)("label",{className:"text-sm text-gray-600",children:t.label||t.name}),t.isSearchable?(0,c.jsx)(I.default,{showSearch:!0,className:"w-full",placeholder:"Search ".concat(t.label||t.name,"..."),value:o[t.name]||void 0,onChange:e=>_(t.name,e),onDropdownVisibleChange:e=>N(e,t),onSearch:e=>{j(s=>({...s,[t.name]:e})),t.searchFn&&y(e,t)},filterOption:!1,loading:h[t.name],options:u[t.name]||[],allowClear:!0,notFoundContent:h[t.name]?"Loading...":"No results found"}):t.options?(0,c.jsx)(I.default,{className:"w-full",placeholder:"Select ".concat(t.label||t.name,"..."),value:o[t.name]||void 0,onChange:e=>_(t.name,e),allowClear:!0,children:t.options.map(e=>(0,c.jsx)(I.default.Option,{value:e.value,children:e.label},e.value))}):(0,c.jsx)(P.default,{className:"w-full",placeholder:"Enter ".concat(t.label||t.name,"..."),value:o[t.name]||"",onChange:e=>_(t.name,e.target.value),allowClear:!0})]},t.name):null})})]})},sk=t(16593);let sS=async e=>{if(!e)return[];try{let s=[],t=1,l=!0;for(;l;){let a=await (0,j.keyListCall)(e,null,"",null,null,null,t,100),r=a.keys.map(e=>e.key_alias).filter(Boolean);s=[...s,...r],t{if(!e)return[];try{let t=[],l=1,a=!0;for(;a;){let r=await (0,j.teamListCall)(e,s||null,null);t=[...t,...r],l{if(!e)return[];try{let s=[],t=1,l=!0;for(;l;){let a=await (0,j.organizationListCall)(e);s=[...s,...a],t{let[e,s]=(0,d.useState)("http://localhost:4000");return(0,d.useEffect)(()=>{{let{protocol:e,host:t}=window.location;s("".concat(e,"//").concat(t))}},[]),e};var sT=t(71594),sE=t(24525),sL=t(47323),sP=t(21626),sM=t(97214),sO=t(28241),sD=t(58834),sF=t(69552),sR=t(71876),sz=t(86462),sU=t(47686),sq=t(44633),sV=t(49084);function sB(e){let{keys:s,setKeys:t,isLoading:l=!1,pagination:a,onPageChange:r,pageSize:i=50,teams:n,selectedTeam:o,setSelectedTeam:m,selectedKeyAlias:u,setSelectedKeyAlias:x,accessToken:h,userID:p,userRole:g,organizations:f,setCurrentOrg:v,refresh:y,onSortChange:_,currentSort:N,premiumUser:Z,setAccessToken:w}=e,[S,C]=(0,d.useState)(null),[I,A]=(0,d.useState)([]),[T,E]=d.useState(()=>N?[{id:N.sortBy,desc:"desc"===N.sortOrder}]:[{id:"created_at",desc:!0}]),[L,P]=(0,d.useState)({}),{filters:M,filteredKeys:O,allKeyAliases:D,allTeams:R,allOrganizations:z,handleFilterChange:U,handleFilterReset:q}=function(e){let{keys:s,teams:t,organizations:l,accessToken:a}=e,r={"Team ID":"","Organization ID":"","Key Alias":"","User ID":"","Sort By":"created_at","Sort Order":"desc"},[i,n]=(0,d.useState)(r),[o,c]=(0,d.useState)(t||[]),[m,u]=(0,d.useState)(l||[]),[x,h]=(0,d.useState)(s),p=(0,d.useRef)(0),g=(0,d.useCallback)(eC()(async e=>{if(!a)return;let s=Date.now();p.current=s;try{let t=await (0,j.keyListCall)(a,e["Organization ID"]||null,e["Team ID"]||null,e["Key Alias"]||null,e["User ID"]||null,e["Key Hash"]||null,1,25,e["Sort By"]||null,e["Sort Order"]||null);s===p.current&&t&&(h(t.keys),console.log("called from debouncedSearch filters:",JSON.stringify(e)),console.log("called from debouncedSearch data:",JSON.stringify(t)))}catch(e){console.error("Error searching users:",e)}},300),[a]);(0,d.useEffect)(()=>{if(!s){h([]);return}let e=[...s];i["Team ID"]&&(e=e.filter(e=>e.team_id===i["Team ID"])),i["Organization ID"]&&(e=e.filter(e=>e.organization_id===i["Organization ID"])),h(e)},[s,i]),(0,d.useEffect)(()=>{let e=async()=>{let e=await sC(a);e.length>0&&c(e);let s=await sI(a);s.length>0&&u(s)};a&&e()},[a]);let f=(0,sk.a)({queryKey:["allKeys"],queryFn:async()=>{if(!a)throw Error("Access token required");return await sS(a)},enabled:!!a}).data||[];return(0,d.useEffect)(()=>{t&&t.length>0&&c(e=>e.length{l&&l.length>0&&u(e=>e.length{n({"Team ID":e["Team ID"]||"","Organization ID":e["Organization ID"]||"","Key Alias":e["Key Alias"]||"","User ID":e["User ID"]||"","Sort By":e["Sort By"]||"created_at","Sort Order":e["Sort Order"]||"desc"}),g({...i,...e})},handleFilterReset:()=>{n(r),g(r)}}}({keys:s,teams:n,organizations:f,accessToken:h});(0,d.useEffect)(()=>{if(h){let e=s.map(e=>e.user_id).filter(e=>null!==e);(async()=>{A((await (0,j.userListCall)(h,e,1,100)).users)})()}},[h,s]),(0,d.useEffect)(()=>{if(y){let e=()=>{y()};return window.addEventListener("storage",e),()=>{window.removeEventListener("storage",e)}}},[y]);let V=[{id:"expander",header:()=>null,cell:e=>{let{row:s}=e;return s.getCanExpand()?(0,c.jsx)("button",{onClick:s.getToggleExpandedHandler(),style:{cursor:"pointer"},children:s.getIsExpanded()?"▼":"▶"}):null}},{id:"token",accessorKey:"token",header:"Key ID",cell:e=>(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.getValue(),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>C(e.getValue()),children:e.getValue()?"".concat(e.getValue().slice(0,7),"..."):"-"})})})},{id:"key_alias",accessorKey:"key_alias",header:"Key Alias",cell:e=>{let s=e.getValue();return(0,c.jsx)(B.Z,{title:s,children:s?s.length>20?"".concat(s.slice(0,20),"..."):s:"-"})}},{id:"key_name",accessorKey:"key_name",header:"Secret Key",cell:e=>(0,c.jsx)("span",{className:"font-mono text-xs",children:e.getValue()})},{id:"team_alias",accessorKey:"team_id",header:"Team Alias",cell:e=>{let{row:s,getValue:t}=e,l=t(),a=null==n?void 0:n.find(e=>e.team_id===l);return(null==a?void 0:a.team_alias)||"Unknown"}},{id:"team_id",accessorKey:"team_id",header:"Team ID",cell:e=>(0,c.jsx)(B.Z,{title:e.getValue(),children:e.getValue()?"".concat(e.getValue().slice(0,7),"..."):"-"})},{id:"organization_id",accessorKey:"organization_id",header:"Organization ID",cell:e=>e.getValue()?e.renderValue():"-"},{id:"user_email",accessorKey:"user_id",header:"User Email",cell:e=>{let s=e.getValue(),t=I.find(e=>e.user_id===s);return(null==t?void 0:t.user_email)?(0,c.jsx)(B.Z,{title:null==t?void 0:t.user_email,children:(0,c.jsxs)("span",{children:[null==t?void 0:t.user_email.slice(0,20),"..."]})}):"-"}},{id:"user_id",accessorKey:"user_id",header:"User ID",cell:e=>{let s=e.getValue();return s&&s.length>15?(0,c.jsx)(B.Z,{title:s,children:(0,c.jsxs)("span",{children:[s.slice(0,7),"..."]})}):s||"-"}},{id:"created_at",accessorKey:"created_at",header:"Created At",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleDateString():"-"}},{id:"created_by",accessorKey:"created_by",header:"Created By",cell:e=>{let s=e.getValue();return s&&s.length>15?(0,c.jsx)(B.Z,{title:s,children:(0,c.jsxs)("span",{children:[s.slice(0,7),"..."]})}):s}},{id:"updated_at",accessorKey:"updated_at",header:"Updated At",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleDateString():"Never"}},{id:"expires",accessorKey:"expires",header:"Expires",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleDateString():"Never"}},{id:"spend",accessorKey:"spend",header:"Spend (USD)",cell:e=>eP(e.getValue(),4)},{id:"max_budget",accessorKey:"max_budget",header:"Budget (USD)",cell:e=>{let s=e.getValue();return null===s?"Unlimited":"$".concat(eP(s))}},{id:"budget_reset_at",accessorKey:"budget_reset_at",header:"Budget Reset",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleString():"Never"}},{id:"models",accessorKey:"models",header:"Models",cell:e=>{let s=e.getValue();return(0,c.jsx)("div",{className:"flex flex-col py-2",children:Array.isArray(s)?(0,c.jsx)("div",{className:"flex flex-col",children:0===s.length?(0,c.jsx)(e6.Z,{size:"xs",className:"mb-1",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"flex items-start",children:[s.length>3&&(0,c.jsx)("div",{children:(0,c.jsx)(sL.Z,{icon:L[e.row.id]?sz.Z:sU.Z,className:"cursor-pointer",size:"xs",onClick:()=>{P(s=>({...s,[e.row.id]:!s[e.row.id]}))}})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[s.slice(0,3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(e6.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s):(0,c.jsx)(e6.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s)),s.length>3&&!L[e.row.id]&&(0,c.jsx)(e6.Z,{size:"xs",color:"gray",className:"cursor-pointer",children:(0,c.jsxs)(k.Z,{children:["+",s.length-3," ",s.length-3==1?"more model":"more models"]})}),L[e.row.id]&&(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:s.slice(3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(e6.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s+3):(0,c.jsx)(e6.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s+3))})]})]})})}):null})}},{id:"rate_limits",header:"Rate Limits",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:["TPM: ",null!==t.tpm_limit?t.tpm_limit:"Unlimited"]}),(0,c.jsxs)("div",{children:["RPM: ",null!==t.rpm_limit?t.rpm_limit:"Unlimited"]})]})}}];console.log("keys: ".concat(JSON.stringify(s)));let K=(0,sT.b7)({data:O,columns:V.filter(e=>"expander"!==e.id),state:{sorting:T},onSortingChange:e=>{let s="function"==typeof e?e(T):e;if(console.log("newSorting: ".concat(JSON.stringify(s))),E(s),s&&s.length>0){let e=s[0],t=e.id,l=e.desc?"desc":"asc";console.log("sortBy: ".concat(t,", sortOrder: ").concat(l)),U({...M,"Sort By":t,"Sort Order":l}),null==_||_(t,l)}},getCoreRowModel:(0,sE.sC)(),getSortedRowModel:(0,sE.tj)(),enableSorting:!0,manualSorting:!1});return d.useEffect(()=>{N&&E([{id:N.sortBy,desc:"desc"===N.sortOrder}])},[N]),(0,c.jsx)("div",{className:"w-full h-full overflow-hidden",children:S?(0,c.jsx)(sN,{keyId:S,onClose:()=>C(null),keyData:O.find(e=>e.token===S),onKeyDataUpdate:e=>{t(s=>s.map(s=>s.token===e.token?eL(s,e):s)),y&&y()},onDelete:()=>{t(e=>e.filter(e=>e.token!==S)),y&&y()},accessToken:h,userID:p,userRole:g,teams:R,premiumUser:Z,setAccessToken:w}):(0,c.jsxs)("div",{className:"border-b py-4 flex-1 overflow-hidden",children:[(0,c.jsx)("div",{className:"w-full mb-6",children:(0,c.jsx)(sw,{options:[{name:"Team ID",label:"Team ID",isSearchable:!0,searchFn:async e=>R&&0!==R.length?R.filter(s=>s.team_id.toLowerCase().includes(e.toLowerCase())||s.team_alias&&s.team_alias.toLowerCase().includes(e.toLowerCase())).map(e=>({label:"".concat(e.team_alias||e.team_id," (").concat(e.team_id,")"),value:e.team_id})):[]},{name:"Organization ID",label:"Organization ID",isSearchable:!0,searchFn:async e=>z&&0!==z.length?z.filter(s=>{var t,l;return null!==(l=null===(t=s.organization_id)||void 0===t?void 0:t.toLowerCase().includes(e.toLowerCase()))&&void 0!==l&&l}).filter(e=>null!==e.organization_id&&void 0!==e.organization_id).map(e=>({label:"".concat(e.organization_id||"Unknown"," (").concat(e.organization_id,")"),value:e.organization_id})):[]},{name:"Key Alias",label:"Key Alias",isSearchable:!0,searchFn:async e=>D.filter(s=>s.toLowerCase().includes(e.toLowerCase())).map(e=>({label:e,value:e}))},{name:"User ID",label:"User ID",isSearchable:!1},{name:"Key Hash",label:"Key Hash",isSearchable:!1}],onApplyFilters:U,initialValues:M,onResetFilters:q})}),(0,c.jsxs)("div",{className:"flex items-center justify-between w-full mb-4",children:[(0,c.jsxs)("span",{className:"inline-flex text-sm text-gray-700",children:["Showing"," ",l?"...":"".concat((a.currentPage-1)*i+1," - ").concat(Math.min(a.currentPage*i,a.totalCount))," ","of ",l?"...":a.totalCount," results"]}),(0,c.jsxs)("div",{className:"inline-flex items-center gap-2",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Page ",l?"...":a.currentPage," of ",l?"...":a.totalPages]}),(0,c.jsx)("button",{onClick:()=>r(a.currentPage-1),disabled:l||1===a.currentPage,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Previous"}),(0,c.jsx)("button",{onClick:()=>r(a.currentPage+1),disabled:l||a.currentPage===a.totalPages,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Next"})]})]}),(0,c.jsx)("div",{className:"h-[75vh] overflow-auto",children:(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sP.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sD.Z,{children:K.getHeaderGroups().map(e=>(0,c.jsx)(sR.Z,{children:e.headers.map(e=>(0,c.jsx)(sF.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sT.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sq.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sz.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sV.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sM.Z,{children:l?(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sO.Z,{colSpan:V.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"\uD83D\uDE85 Loading keys..."})})})}):O.length>0?K.getRowModel().rows.map(e=>(0,c.jsx)(sR.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sO.Z,{style:{maxWidth:"8-x",whiteSpace:"pre-wrap",overflow:"hidden"},className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("models"===e.column.id&&e.getValue().length>3?"px-0":""),children:(0,sT.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sO.Z,{colSpan:V.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No keys found"})})})})})]})})})})]})})}var sK=e=>{let{userID:s,userRole:t,accessToken:l,selectedTeam:a,setSelectedTeam:r,data:i,setData:n,teams:o,premiumUser:m,currentOrg:u,organizations:x,setCurrentOrg:h,selectedKeyAlias:p,setSelectedKeyAlias:g,createClicked:f,setAccessToken:N}=e,[Z,w]=(0,d.useState)(!1),[I,E]=(0,d.useState)(!1),[L,P]=(0,d.useState)(null),[M,O]=(0,d.useState)(""),[F,R]=(0,d.useState)(null),[z,U]=(0,d.useState)(null),[q,V]=(0,d.useState)((null==a?void 0:a.team_id)||"");(0,d.useEffect)(()=>{V((null==a?void 0:a.team_id)||"")},[a]);let{keys:B,isLoading:K,error:G,pagination:H,refresh:Y,setKeys:J}=e5({selectedTeam:a||void 0,currentOrg:u,selectedKeyAlias:p,accessToken:l||"",createClicked:f}),[W,$]=(0,d.useState)(!1),[Q,X]=(0,d.useState)(!1),[ee,es]=(0,d.useState)(null),[et,el]=(0,d.useState)([]),ea=new Set,[er,ei]=(0,d.useState)(!1),[en,ec]=(0,d.useState)(!1),[ed,em]=(0,d.useState)(null),[eu,ex]=(0,d.useState)(null),[eh]=A.Z.useForm(),[ep,eg]=(0,d.useState)(null),[ej,ef]=(0,d.useState)(ea),[ev,ey]=(0,d.useState)([]);(0,d.useEffect)(()=>{console.log("in calculateNewExpiryTime for selectedToken",ee),(null==eu?void 0:eu.duration)?eg((e=>{if(!e)return null;try{let s;let t=new Date;if(e.endsWith("s"))s=(0,e2.Z)(t,{seconds:parseInt(e)});else if(e.endsWith("h"))s=(0,e2.Z)(t,{hours:parseInt(e)});else if(e.endsWith("d"))s=(0,e2.Z)(t,{days:parseInt(e)});else throw Error("Invalid duration format");return s.toLocaleString("en-US",{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0})}catch(e){return null}})(eu.duration)):eg(null),console.log("calculateNewExpiryTime:",ep)},[ee,null==eu?void 0:eu.duration]),(0,d.useEffect)(()=>{(async()=>{try{if(null===s||null===t||null===l)return;let e=await D(s,t,l);e&&el(e)}catch(e){eo.Z.error({description:"Error fetching user models"})}})()},[l,s,t]),(0,d.useEffect)(()=>{if(o){let e=new Set;o.forEach((s,t)=>{let l=s.team_id;e.add(l)}),ef(e)}},[o]);let eb=async()=>{if(null!=L&&null!=B){try{if(!l)return;await (0,j.keyDeleteCall)(l,L);let e=B.filter(e=>e.token!==L);J(e)}catch(e){eo.Z.error({description:"Error deleting the key"})}E(!1),P(null),O("")}},e_=()=>{E(!1),P(null),O("")},eN=(e,s)=>{ex(t=>({...t,[e]:s}))},eZ=async()=>{if(!m){eo.Z.warning({description:"Regenerate API Key is an Enterprise feature. Please upgrade to use this feature."});return}if(null!=ee)try{let e=await eh.validateFields();if(!l)return;let s=await (0,j.regenerateKeyCall)(l,ee.token||ee.token_id,e);if(em(s.key),i){let t=i.map(t=>t.token===(null==ee?void 0:ee.token)?{...t,key_name:s.key_name,...e}:t);n(t)}ec(!1),eh.resetFields(),eo.Z.success({description:"API Key regenerated successfully"})}catch(e){console.error("Error regenerating key:",e),eo.Z.error({description:"Failed to regenerate API Key"})}};return(0,c.jsxs)("div",{children:[(0,c.jsx)(sB,{keys:B,setKeys:J,isLoading:K,pagination:H,onPageChange:e=>{Y({page:e})},pageSize:100,teams:o,selectedTeam:a,setSelectedTeam:r,accessToken:l,userID:s,userRole:t,organizations:x,setCurrentOrg:h,refresh:Y,selectedKeyAlias:p,setSelectedKeyAlias:g,premiumUser:m,setAccessToken:N}),I&&(()=>{let e=null==B?void 0:B.find(e=>e.token===L),s=(null==e?void 0:e.key_alias)||(null==e?void 0:e.token_id)||L,t=M===s;return(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl w-full max-w-2xl min-h-[380px] py-6 overflow-hidden transform transition-all flex flex-col justify-between",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Delete Key"}),(0,c.jsx)("button",{onClick:()=>{e_(),O("")},className:"text-gray-400 hover:text-gray-500 focus:outline-none",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,c.jsxs)("div",{className:"px-6 py-4",children:[(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.082 16.5c-.77.833.192 2.5 1.732 2.5z"})})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-base font-medium text-red-600",children:"Warning: You are about to delete this API key."}),(0,c.jsx)("p",{className:"text-base text-red-600 mt-2",children:"This action is irreversible and will immediately revoke access for any applications using this key."})]})]}),(0,c.jsx)("p",{className:"text-base text-gray-600 mb-5",children:"Are you sure you want to delete this API key?"}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsx)("span",{className:"underline",children:s})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:M,onChange:e=>O(e.target.value),placeholder:"Enter key name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]})]})]}),(0,c.jsxs)("div",{className:"px-6 py-4 bg-gray-50 flex justify-end gap-4",children:[(0,c.jsx)("button",{onClick:()=>{e_(),O("")},className:"px-5 py-3 bg-white border border-gray-300 rounded-md text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:"Cancel"}),(0,c.jsx)("button",{onClick:eb,disabled:!t,className:"px-5 py-3 rounded-md text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 ".concat(t?"bg-red-600 hover:bg-red-700":"bg-red-300 cursor-not-allowed"),children:"Delete Key"})]})]})})})(),(0,c.jsx)(T.Z,{title:"Regenerate API Key",visible:en,onCancel:()=>{ec(!1),eh.resetFields()},footer:[(0,c.jsx)(b.Z,{onClick:()=>{ec(!1),eh.resetFields()},className:"mr-2",children:"Cancel"},"cancel"),(0,c.jsx)(b.Z,{onClick:eZ,disabled:!m,children:m?"Regenerate":"Upgrade to Regenerate"},"regenerate")],children:m?(0,c.jsxs)(A.Z,{form:eh,layout:"vertical",onValuesChange:(e,s)=>{"duration"in e&&eN("duration",e.duration)},children:[(0,c.jsx)(A.Z.Item,{name:"key_alias",label:"Key Alias",children:(0,c.jsx)(_.Z,{disabled:!0})}),(0,c.jsx)(A.Z.Item,{name:"max_budget",label:"Max Budget (USD)",children:(0,c.jsx)(e4.Z,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"tpm_limit",label:"TPM Limit",children:(0,c.jsx)(e4.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"rpm_limit",label:"RPM Limit",children:(0,c.jsx)(e4.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"duration",label:"Expire Key (eg: 30s, 30h, 30d)",className:"mt-8",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsxs)("div",{className:"mt-2 text-sm text-gray-500",children:["Current expiry:"," ",(null==ee?void 0:ee.expires)!=null?new Date(ee.expires).toLocaleString():"Never"]}),ep&&(0,c.jsxs)("div",{className:"mt-2 text-sm text-green-600",children:["New expiry: ",ep]})]}):(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"mb-2 text-gray-500 italic text-[12px]",children:"Upgrade to use this feature"}),(0,c.jsx)(b.Z,{variant:"primary",className:"mb-2",children:(0,c.jsx)("a",{href:"https://calendly.com/d/4mp-gd3-k5k/litellm-1-1-onboarding-chat",target:"_blank",children:"Get Free Trial"})})]})}),ed&&(0,c.jsx)(T.Z,{visible:!!ed,onCancel:()=>em(null),footer:[(0,c.jsx)(b.Z,{onClick:()=>em(null),children:"Close"},"close")],children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:"Regenerated Key"}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)("p",{children:["Please replace your old key with the new key generated. For security reasons,"," ",(0,c.jsx)("b",{children:"you will not be able to view it again"})," through your LiteLLM account. If you lose this secret key, you will need to generate a new one."]})}),(0,c.jsxs)(v.Z,{numColSpan:1,children:[(0,c.jsx)(k.Z,{className:"mt-3",children:"Key Alias:"}),(0,c.jsx)("div",{style:{background:"#f8f8f8",padding:"10px",borderRadius:"5px",marginBottom:"10px"},children:(0,c.jsx)("pre",{style:{wordWrap:"break-word",whiteSpace:"normal"},children:(null==ee?void 0:ee.key_alias)||"No alias set"})}),(0,c.jsx)(k.Z,{className:"mt-3",children:"New API Key:"}),(0,c.jsx)("div",{style:{background:"#f8f8f8",padding:"10px",borderRadius:"5px",marginBottom:"10px"},children:(0,c.jsx)("pre",{style:{wordWrap:"break-word",whiteSpace:"normal"},children:ed})}),(0,c.jsx)(C.CopyToClipboard,{text:ed,onCopy:()=>eo.Z.success({description:"API Key copied to clipboard"}),children:(0,c.jsx)(b.Z,{className:"mt-3",children:"Copy API Key"})})]})]})})]})},sG=t(12011),sH=t(3914),sY=e=>{let{userID:s,userRole:t,teams:l,keys:a,setUserRole:r,userEmail:i,setUserEmail:n,setTeams:o,setKeys:x,premiumUser:h,organizations:p,addKey:g,createClicked:b}=e,[_,N]=(0,d.useState)(null),[Z,w]=(0,d.useState)(null),k=(0,m.useSearchParams)(),S=function(e){console.log("COOKIES",document.cookie);let s=document.cookie.split("; ").find(s=>s.startsWith(e+"="));return s?s.split("=")[1]:null}("token"),C=k.get("invitation_id"),[I,A]=(0,d.useState)(null),[T,E]=(0,d.useState)(null),[L,P]=(0,d.useState)([]),[M,O]=(0,d.useState)(null),[D,F]=(0,d.useState)(null),[R,z]=(0,d.useState)(null);if(window.addEventListener("beforeunload",function(){sessionStorage.clear()}),(0,d.useEffect)(()=>{if(S){let e=(0,u.o)(S);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),A(e.key),e.user_role){let s=function(e){if(!e)return"Undefined Role";switch(console.log("Received user role: ".concat(e)),e.toLowerCase()){case"app_owner":case"demo_app_owner":return"App Owner";case"app_admin":case"proxy_admin":return"Admin";case"proxy_admin_viewer":return"Admin Viewer";case"app_user":return"App User";case"internal_user":return"Internal User";case"internal_user_viewer":return"Internal Viewer";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",s),r(s)}else console.log("User role not defined");e.user_email?n(e.user_email):console.log("User Email is not set ".concat(e))}}if(s&&I&&t&&!a&&!_){let e=sessionStorage.getItem("userModels"+s);e?P(JSON.parse(e)):(console.log("currentOrg: ".concat(JSON.stringify(Z))),(async()=>{try{let e=await (0,j.getProxyUISettings)(I);O(e);let l=await (0,j.userInfoCall)(I,s,t,!1,null,null);N(l.user_info),console.log("userSpendData: ".concat(JSON.stringify(_))),(null==l?void 0:l.teams[0].keys)?x(l.keys.concat(l.teams.filter(e=>"Admin"===t||e.user_id===s).flatMap(e=>e.keys))):x(l.keys),sessionStorage.setItem("userData"+s,JSON.stringify(l.keys)),sessionStorage.setItem("userSpendData"+s,JSON.stringify(l.user_info));let a=(await (0,j.modelAvailableCall)(I,s,t)).data.map(e=>e.id);console.log("available_model_names:",a),P(a),console.log("userModels:",L),sessionStorage.setItem("userModels"+s,JSON.stringify(a))}catch(e){console.error("There was an error fetching the data",e),e.message.includes("Invalid proxy server token passed")&&U()}})(),f(I,s,t,Z,o))}},[s,S,I,a,t]),(0,d.useEffect)(()=>{I&&(async()=>{try{let e=await (0,j.keyInfoCall)(I,[I]);console.log("keyInfo: ",e)}catch(e){e.message.includes("Invalid proxy server token passed")&&U()}})()},[I]),(0,d.useEffect)(()=>{console.log("currentOrg: ".concat(JSON.stringify(Z),", accessToken: ").concat(I,", userID: ").concat(s,", userRole: ").concat(t)),I&&(console.log("fetching teams"),f(I,s,t,Z,o))},[Z]),(0,d.useEffect)(()=>{if(null!==a&&null!=D&&null!==D.team_id){let e=0;for(let s of(console.log("keys: ".concat(JSON.stringify(a))),a))D.hasOwnProperty("team_id")&&null!==s.team_id&&s.team_id===D.team_id&&(e+=s.spend);console.log("sum: ".concat(e)),E(e)}else if(null!==a){let e=0;for(let s of a)e+=s.spend;E(e)}},[D]),null!=C)return(0,c.jsx)(sG.default,{});function U(){(0,sH.b)();let e=(0,j.getProxyBaseUrl)();console.log("proxyBaseUrl:",e);let s=e?"".concat(e,"/sso/key/generate"):"/sso/key/generate";return console.log("Full URL:",s),window.location.href=s,null}if(null==S)return console.log("All cookies before redirect:",document.cookie),U(),null;try{let e=(0,u.o)(S);console.log("Decoded token:",e);let s=e.exp,t=Math.floor(Date.now()/1e3);if(s&&t>=s)return console.log("Token expired, redirecting to login"),U(),null}catch(e){return console.error("Error decoding token:",e),(0,sH.b)(),U(),null}if(null==I)return null;if(null==s)return(0,c.jsx)("h1",{children:"User ID is not set"});if(null==t&&r("App Owner"),t&&"Admin Viewer"==t){let{Title:e,Paragraph:s}=en.default;return(0,c.jsxs)("div",{children:[(0,c.jsx)(e,{level:1,children:"Access Denied"}),(0,c.jsx)(s,{children:"Ask your proxy admin for access to create keys"})]})}return console.log("inside user dashboard, selected team",D),console.log("All cookies after redirect:",document.cookie),(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[(0,c.jsx)(e1,{userID:s,team:D,teams:l,userRole:t,accessToken:I,data:a,addKey:g,premiumUser:h},D?D.team_id:null),(0,c.jsx)(sK,{userID:s,userRole:t,accessToken:I,selectedTeam:D||null,setSelectedTeam:F,selectedKeyAlias:R,setSelectedKeyAlias:z,data:a,setData:x,premiumUser:h,teams:l,currentOrg:Z,setCurrentOrg:w,organizations:p,createClicked:b,setAccessToken:A})]})})})},sJ=t(97765),sW=t(42673);let s$=async(e,s,t)=>{try{console.log("handling submit for formValues:",e);let s=e.model_mappings||[];if("model_mappings"in e&&delete e.model_mappings,e.model&&e.model.includes("all-wildcard")){let t=e.custom_llm_provider,l=sW.fK[t]+"/*";e.model_name=l,s.push({public_name:l,litellm_model:l}),e.model=l}let t=[];for(let l of s){let s={},a={},r=l.public_name;for(let[t,r]of(s.model=l.litellm_model,e.input_cost_per_token&&(e.input_cost_per_token=Number(e.input_cost_per_token)/1e6),e.output_cost_per_token&&(e.output_cost_per_token=Number(e.output_cost_per_token)/1e6),s.model=l.litellm_model,console.log("formValues add deployment:",e),Object.entries(e)))if(""!==r&&"custom_pricing"!==t&&"pricing_model"!==t&&"cache_control"!==t){if("model_name"==t)s.model=r;else if("custom_llm_provider"==t){console.log("custom_llm_provider:",r);let e=sW.fK[r];s.custom_llm_provider=e,console.log("custom_llm_provider mappingResult:",e)}else if("model"==t)continue;else if("base_model"===t)a[t]=r;else if("team_id"===t)a.team_id=r;else if("model_access_group"===t)a.access_groups=r;else if("mode"==t)console.log("placing mode in modelInfo"),a.mode=r,delete s.mode;else if("custom_model_name"===t)s.model=r;else if("litellm_extra_params"==t){console.log("litellm_extra_params:",r);let e={};if(r&&void 0!=r){try{e=JSON.parse(r)}catch(e){throw eo.Z.fromBackend("Failed to parse LiteLLM Extra Params: "+e),Error("Failed to parse litellm_extra_params: "+e)}for(let[t,l]of Object.entries(e))s[t]=l}}else if("model_info_params"==t){console.log("model_info_params:",r);let e={};if(r&&void 0!=r){try{e=JSON.parse(r)}catch(e){throw eo.Z.fromBackend("Failed to parse LiteLLM Extra Params: "+e),Error("Failed to parse litellm_extra_params: "+e)}for(let[s,t]of Object.entries(e))a[s]=t}}else if("input_cost_per_token"===t||"output_cost_per_token"===t||"input_cost_per_second"===t){r&&(s[t]=Number(r));continue}else s[t]=r}t.push({litellmParamsObj:s,modelInfoObj:a,modelName:r})}return t}catch(e){eo.Z.fromBackend("Failed to create model: "+e)}},sQ=async(e,s,t,l)=>{try{let a=await s$(e,s,t);if(!a||0===a.length)return;for(let e of a){let{litellmParamsObj:t,modelInfoObj:l,modelName:a}=e,r={model_name:a,litellm_params:t,model_info:l},i=await (0,j.modelCreateCall)(s,r);console.log("response for model create call: ".concat(i.data))}l&&l(),t.resetFields()}catch(e){eo.Z.fromBackend("Failed to add model: "+e)}};var sX=t(53410),s0=t(47451),s1=t(69410);let{Link:s2}=en.default,s4={[sW.Cl.OpenAI]:[{key:"api_base",label:"API Base",type:"select",options:["https://api.openai.com/v1","https://eu.api.openai.com"],defaultValue:"https://api.openai.com/v1"},{key:"organization",label:"OpenAI Organization ID",placeholder:"[OPTIONAL] my-unique-org"},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[sW.Cl.OpenAI_Text]:[{key:"api_base",label:"API Base",type:"select",options:["https://api.openai.com/v1","https://eu.api.openai.com"],defaultValue:"https://api.openai.com/v1"},{key:"organization",label:"OpenAI Organization ID",placeholder:"[OPTIONAL] my-unique-org"},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[sW.Cl.Vertex_AI]:[{key:"vertex_project",label:"Vertex Project",placeholder:"adroit-cadet-1234..",required:!0},{key:"vertex_location",label:"Vertex Location",placeholder:"us-east-1",required:!0},{key:"vertex_credentials",label:"Vertex Credentials",required:!0,type:"upload"}],[sW.Cl.AssemblyAI]:[{key:"api_base",label:"API Base",type:"select",required:!0,options:["https://api.assemblyai.com","https://api.eu.assemblyai.com"]},{key:"api_key",label:"AssemblyAI API Key",type:"password",required:!0}],[sW.Cl.Azure]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_version",label:"API Version",placeholder:"2023-07-01-preview",tooltip:"By default litellm will use the latest version. If you want to use a different version, you can specify it here"},{key:"base_model",label:"Base Model",placeholder:"azure/gpt-3.5-turbo"},{key:"api_key",label:"Azure API Key",type:"password",required:!0}],[sW.Cl.Azure_AI_Studio]:[{key:"api_base",label:"API Base",placeholder:"https://.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-10-21",tooltip:"Enter your full Target URI from Azure Foundry here. Example: https://litellm8397336933.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-10-21",required:!0},{key:"api_key",label:"Azure API Key",type:"password",required:!0}],[sW.Cl.OpenAI_Compatible]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[sW.Cl.Dashscope]:[{key:"api_key",label:"Dashscope API Key",type:"password",required:!0},{key:"api_base",label:"API Base",placeholder:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",defaultValue:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",required:!0,tooltip:"The base URL for your Dashscope server. Defaults to https://dashscope-intl.aliyuncs.com/compatible-mode/v1 if not specified."}],[sW.Cl.OpenAI_Text_Compatible]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[sW.Cl.Bedrock]:[{key:"aws_access_key_id",label:"AWS Access Key ID",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_secret_access_key",label:"AWS Secret Access Key",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_session_token",label:"AWS Session Token",type:"password",required:!1,tooltip:"Temporary credentials session token. You can provide the raw token or the environment variable (e.g. `os.environ/MY_SESSION_TOKEN`)."},{key:"aws_region_name",label:"AWS Region Name",placeholder:"us-east-1",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_session_name",label:"AWS Session Name",placeholder:"my-session",required:!1,tooltip:"Name for the AWS session. You can provide the raw value or the environment variable (e.g. `os.environ/MY_SESSION_NAME`)."},{key:"aws_profile_name",label:"AWS Profile Name",placeholder:"default",required:!1,tooltip:"AWS profile name to use for authentication. You can provide the raw value or the environment variable (e.g. `os.environ/MY_PROFILE_NAME`)."},{key:"aws_role_name",label:"AWS Role Name",placeholder:"MyRole",required:!1,tooltip:"AWS IAM role name to assume. You can provide the raw value or the environment variable (e.g. `os.environ/MY_ROLE_NAME`)."},{key:"aws_web_identity_token",label:"AWS Web Identity Token",type:"password",required:!1,tooltip:"Web identity token for OIDC authentication. You can provide the raw token or the environment variable (e.g. `os.environ/MY_WEB_IDENTITY_TOKEN`)."},{key:"aws_bedrock_runtime_endpoint",label:"AWS Bedrock Runtime Endpoint",placeholder:"https://bedrock-runtime.us-east-1.amazonaws.com",required:!1,tooltip:"Custom Bedrock runtime endpoint URL. You can provide the raw value or the environment variable (e.g. `os.environ/MY_BEDROCK_ENDPOINT`)."}],[sW.Cl.SageMaker]:[{key:"aws_access_key_id",label:"AWS Access Key ID",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_secret_access_key",label:"AWS Secret Access Key",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_region_name",label:"AWS Region Name",placeholder:"us-east-1",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."}],[sW.Cl.Ollama]:[{key:"api_base",label:"API Base",placeholder:"http://localhost:11434",defaultValue:"http://localhost:11434",required:!1,tooltip:"The base URL for your Ollama server. Defaults to http://localhost:11434 if not specified."}],[sW.Cl.Anthropic]:[{key:"api_key",label:"API Key",placeholder:"sk-",type:"password",required:!0}],[sW.Cl.Deepgram]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.ElevenLabs]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.Google_AI_Studio]:[{key:"api_key",label:"API Key",placeholder:"aig-",type:"password",required:!0}],[sW.Cl.Groq]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.MistralAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.Deepseek]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.Cohere]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.Databricks]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.xAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.AIML]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.Cerebras]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.Sambanova]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.Perplexity]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.TogetherAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.Openrouter]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.FireworksAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.GradientAI]:[{key:"api_base",label:"GradientAI Endpoint",placeholder:"https://...",required:!1},{key:"api_key",label:"GradientAI API Key",type:"password",required:!0}],[sW.Cl.Triton]:[{key:"api_key",label:"API Key",type:"password",required:!1},{key:"api_base",label:"API Base",placeholder:"http://localhost:8000/generate",required:!1}],[sW.Cl.Hosted_Vllm]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[sW.Cl.Voyage]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.JinaAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.VolcEngine]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.DeepInfra]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.Oracle]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[sW.Cl.Snowflake]:[{key:"api_key",label:"Snowflake API Key / JWT Key for Authentication",type:"password",required:!0},{key:"api_base",label:"Snowflake API Endpoint",placeholder:"https://1234567890.snowflakecomputing.com/api/v2/cortex/inference:complete",tooltip:"Enter the full endpoint with path here. Example: https://1234567890.snowflakecomputing.com/api/v2/cortex/inference:complete",required:!0}]};var s5=e=>{let{selectedProvider:s,uploadProps:t}=e,l=sW.Cl[s],a=A.Z.useFormInstance(),r=d.useMemo(()=>s4[l]||[],[l]),i={name:"file",accept:".json",beforeUpload:e=>{if("application/json"===e.type){let s=new FileReader;s.onload=e=>{if(e.target){let s=e.target.result;console.log("Setting field value from JSON, length: ".concat(s.length)),a.setFieldsValue({vertex_credentials:s}),console.log("Form values after setting:",a.getFieldsValue())}},s.readAsText(e)}return!1},onChange(e){console.log("Upload onChange triggered in ProviderSpecificFields"),console.log("Current form values:",a.getFieldsValue()),"uploading"!==e.file.status&&console.log(e.file,e.fileList)}};return(0,c.jsx)(c.Fragment,{children:r.map(e=>{var s;return(0,c.jsxs)(d.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:e.label,name:e.key,rules:e.required?[{required:!0,message:"Required"}]:void 0,tooltip:e.tooltip,className:"vertex_credentials"===e.key?"mb-0":void 0,children:"select"===e.type?(0,c.jsx)(I.default,{placeholder:e.placeholder,defaultValue:e.defaultValue,children:null===(s=e.options)||void 0===s?void 0:s.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"upload"===e.type?(0,c.jsx)(ed.default,{...i,onChange:s=>{(null==t?void 0:t.onChange)&&t.onChange(s),setTimeout(()=>{let s=a.getFieldValue(e.key);console.log("".concat(e.key," value after upload:"),JSON.stringify(s))},500)},children:(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(ej.Z,{}),children:"Click to Upload"})}):(0,c.jsx)(_.Z,{placeholder:e.placeholder,type:"password"===e.type?"password":"text"})}),"vertex_credentials"===e.key&&(0,c.jsx)(s0.Z,{children:(0,c.jsx)(s1.Z,{children:(0,c.jsx)(k.Z,{className:"mb-3 mt-1",children:"Give a gcp service account(.json file)"})})}),"base_model"===e.key&&(0,c.jsxs)(s0.Z,{children:[(0,c.jsx)(s1.Z,{span:10}),(0,c.jsx)(s1.Z,{span:10,children:(0,c.jsxs)(k.Z,{className:"mb-2",children:["The actual model your azure deployment uses. Used for accurate cost tracking. Select name from"," ",(0,c.jsx)(s2,{href:"https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json",target:"_blank",children:"here"})]})})]})]},e.key)})})};let{Title:s3,Link:s6}=en.default;var s8=e=>{let{isVisible:s,onCancel:t,onAddCredential:l,onUpdateCredential:a,uploadProps:r,addOrEdit:i,existingCredential:n}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)(sW.Cl.OpenAI),[x,h]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{n&&(o.setFieldsValue({credential_name:n.credential_name,custom_llm_provider:n.credential_info.custom_llm_provider,api_base:n.credential_values.api_base,api_version:n.credential_values.api_version,base_model:n.credential_values.base_model,api_key:n.credential_values.api_key}),u(n.credential_info.custom_llm_provider))},[n]),(0,c.jsx)(T.Z,{title:"add"===i?"Add New Credential":"Edit Credential",visible:s,onCancel:()=>{t(),o.resetFields()},footer:null,width:600,children:(0,c.jsxs)(A.Z,{form:o,onFinish:e=>{let s=Object.entries(e).reduce((e,s)=>{let[t,l]=s;return""!==l&&null!=l&&(e[t]=l),e},{});"add"===i?l(s):a(s),o.resetFields()},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Credential Name:",name:"credential_name",rules:[{required:!0,message:"Credential name is required"}],initialValue:null==n?void 0:n.credential_name,children:(0,c.jsx)(eG.o,{placeholder:"Enter a friendly name for these credentials",disabled:null!=n&&!!n.credential_name})}),(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Required"}],label:"Provider:",name:"custom_llm_provider",tooltip:"Helper to auto-populate provider specific fields",children:(0,c.jsx)(I.default,{showSearch:!0,onChange:e=>{u(e),o.setFieldValue("custom_llm_provider",e)},children:Object.entries(sW.Cl).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:s,children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:sW.cd[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(s5,{selectedProvider:m,uploadProps:r}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(s6,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{children:[(0,c.jsx)(L.ZP,{onClick:()=>{t(),o.resetFields()},style:{marginRight:10},children:"Cancel"}),(0,c.jsx)(L.ZP,{htmlType:"submit",children:"add"===i?"Add Credential":"Update Credential"})]})]})]})})},s7=e=>{let{isVisible:s,onCancel:t,onConfirm:l,credentialName:a}=e,[r,i]=(0,d.useState)(""),n=r===a,o=()=>{i(""),t()};return(0,c.jsx)(T.Z,{title:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(e_.Z,{className:"h-6 w-6 text-red-600 mr-2"}),"Delete Credential"]}),open:s,footer:null,onCancel:o,closable:!0,destroyOnClose:!0,maskClosable:!1,children:(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)(e_.Z,{className:"h-5 w-5"})}),(0,c.jsx)("div",{children:(0,c.jsx)("p",{className:"text-base font-medium text-red-600",children:"This action cannot be undone and may break existing integrations."})})]}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsxs)("span",{className:"underline italic",children:["'",a,"'"]})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:r,onChange:e=>i(e.target.value),placeholder:"Enter credential name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(b.Z,{onClick:o,variant:"secondary",className:"mr-2",children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:()=>{n&&(i(""),l())},color:"red",className:"focus:ring-red-500",disabled:!n,children:"Delete Credential"})]})]})})},s9=e=>{let{accessToken:s,uploadProps:t,credentialList:l,fetchCredentials:a}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p]=A.Z.useForm(),g=["credential_name","custom_llm_provider"],f=async e=>{if(!s)return;let t=Object.entries(e).filter(e=>{let[s]=e;return!g.includes(s)}).reduce((e,s)=>{let[t,l]=s;return{...e,[t]:l}},{}),l={credential_name:e.credential_name,credential_values:t,credential_info:{custom_llm_provider:e.custom_llm_provider}};await (0,j.credentialUpdateCall)(s,e.credential_name,l),eo.Z.success("Credential updated successfully"),o(!1),a(s)},v=async e=>{if(!s)return;let t=Object.entries(e).filter(e=>{let[s]=e;return!g.includes(s)}).reduce((e,s)=>{let[t,l]=s;return{...e,[t]:l}},{}),l={credential_name:e.credential_name,credential_values:t,credential_info:{custom_llm_provider:e.custom_llm_provider}};await (0,j.credentialCreateCall)(s,l),eo.Z.success("Credential added successfully"),i(!1),a(s)};(0,d.useEffect)(()=>{s&&a(s)},[s]);let y=e=>{let s={openai:"blue",azure:"indigo",anthropic:"purple",default:"gray"},t=s[e.toLowerCase()]||s.default;return(0,c.jsx)(e6.Z,{color:t,size:"xs",children:e})},_=async e=>{s&&(await (0,j.credentialDeleteCall)(s,e),eo.Z.success("Credential deleted successfully"),h(null),a(s))},N=e=>{h(e)};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(k.Z,{children:"Configured credentials for different AI providers. Add and manage your API credentials."})}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Credential Name"}),(0,c.jsx)(sF.Z,{children:"Provider"}),(0,c.jsx)(sF.Z,{children:"Description"})]})}),(0,c.jsx)(sM.Z,{children:l&&0!==l.length?l.map((e,s)=>{var t,l;return(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:e.credential_name}),(0,c.jsx)(sO.Z,{children:y((null===(t=e.credential_info)||void 0===t?void 0:t.custom_llm_provider)||"-")}),(0,c.jsx)(sO.Z,{children:(null===(l=e.credential_info)||void 0===l?void 0:l.description)||"-"}),(0,c.jsxs)(sO.Z,{children:[(0,c.jsx)(b.Z,{icon:sX.Z,variant:"light",size:"sm",onClick:()=>{u(e),o(!0)}}),(0,c.jsx)(b.Z,{icon:W.Z,variant:"light",size:"sm",onClick:()=>N(e.credential_name)})]})]},s)}):(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sO.Z,{colSpan:4,className:"text-center py-4 text-gray-500",children:"No credentials configured"})})})]})}),(0,c.jsx)(b.Z,{onClick:()=>i(!0),className:"mt-4",children:"Add Credential"}),r&&(0,c.jsx)(s8,{onAddCredential:v,isVisible:r,onCancel:()=>i(!1),uploadProps:t,addOrEdit:"add",onUpdateCredential:f,existingCredential:null}),n&&(0,c.jsx)(s8,{onAddCredential:v,isVisible:n,existingCredential:m,onUpdateCredential:f,uploadProps:t,onCancel:()=>o(!1),addOrEdit:"edit"}),x&&(0,c.jsx)(s7,{isVisible:!0,onCancel:()=>{h(null)},onConfirm:()=>_(x),credentialName:x})]})};let te=e=>{var s;return(null==e?void 0:null===(s=e.model_info)||void 0===s?void 0:s.team_public_model_name)?e.model_info.team_public_model_name:(null==e?void 0:e.model_name)||"-"};var ts=t(21487),tt=e=>{let{value:s,onValueChange:t,label:l="Select Time Range",className:a="",showTimeRange:r=!0}=e,[i,n]=(0,d.useState)(!1),o=(0,d.useRef)(null),m=(0,d.useCallback)(e=>{n(!0),setTimeout(()=>n(!1),1500),t(e),requestIdleCallback(()=>{if(e.from){let s;let l={...e},a=new Date(e.from);s=new Date(e.to?e.to:e.from),a.toDateString(),s.toDateString(),a.setHours(0,0,0,0),s.setHours(23,59,59,999),l.from=a,l.to=s,t(l)}},{timeout:100})},[t]),u=(0,d.useCallback)((e,s)=>{if(!e||!s)return"";let t=e=>e.toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0,timeZoneName:"short"});if(e.toDateString()!==s.toDateString())return"".concat(t(e)," - ").concat(t(s));{let t=e.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),l=e.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0}),a=s.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0,timeZoneName:"short"});return"".concat(t,": ").concat(l," - ").concat(a)}},[]);return(0,c.jsxs)("div",{className:a,children:[l&&(0,c.jsx)(k.Z,{className:"mb-2",children:l}),(0,c.jsxs)("div",{className:"relative w-fit",children:[(0,c.jsx)("div",{ref:o,children:(0,c.jsx)(ts.Z,{enableSelect:!0,value:s,onValueChange:m,placeholder:"Select date range",enableClear:!1,style:{zIndex:100}})}),i&&(0,c.jsx)("div",{className:"absolute top-1/2 animate-pulse",style:{left:"calc(100% + 8px)",transform:"translateY(-50%)",zIndex:110},children:(0,c.jsxs)("div",{className:"flex items-center gap-1 text-green-600 text-sm font-medium bg-white px-2 py-1 rounded-full border border-green-200 shadow-sm whitespace-nowrap",children:[(0,c.jsx)("div",{className:"w-3 h-3 bg-green-500 text-white rounded-full flex items-center justify-center text-xs",children:"✓"}),(0,c.jsx)("span",{className:"text-xs",children:"Selected"})]})})]}),r&&s.from&&s.to&&(0,c.jsx)(k.Z,{className:"mt-2 text-xs text-gray-500",children:u(s.from,s.to)})]})},tl=t(75105),ta=t(40278),tr=t(79326),ti=t(59664),tn=e=>{let{modelMetrics:s,modelMetricsCategories:t,customTooltip:l,premiumUser:a}=e;return(0,c.jsx)(ti.Z,{title:"Time to First token (s)",className:"h-72",data:s,index:"date",showLegend:!1,categories:t,colors:["indigo","rose"],connectNulls:!0,customTooltip:l})},to=e=>{let{teamData:s,canEditTeam:t,handleMemberDelete:l,setSelectedEditMember:a,setIsEditMemberModalVisible:r,setIsAddMemberModalVisible:i}=e,n=e=>{if(null==e)return"0";if("number"==typeof e){let s=Number(e);return s===Math.floor(s)?s.toString():eP(s,8).replace(/\.?0+$/,"")}return"0"},o=e=>{if(!e)return 0;let t=s.team_memberships.find(s=>s.user_id===e);return(null==t?void 0:t.spend)||0},d=e=>{var t;if(!e)return null;let l=s.team_memberships.find(s=>s.user_id===e);console.log("membership=".concat(l));let a=null==l?void 0:null===(t=l.litellm_budget_table)||void 0===t?void 0:t.max_budget;return null==a?null:n(a)},m=e=>{var t,l;if(!e)return"No Limits";let a=s.team_memberships.find(s=>s.user_id===e),r=null==a?void 0:null===(t=a.litellm_budget_table)||void 0===t?void 0:t.rpm_limit,i=null==a?void 0:null===(l=a.litellm_budget_table)||void 0===l?void 0:l.tpm_limit,o=[r?"".concat(n(r)," RPM"):null,i?"".concat(n(i)," TPM"):null].filter(Boolean);return o.length>0?o.join(" / "):"No Limits"};return(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-auto max-h-[50vh]",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sP.Z,{className:"min-w-full",children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"User ID"}),(0,c.jsx)(sF.Z,{children:"User Email"}),(0,c.jsx)(sF.Z,{children:"Role"}),(0,c.jsxs)(sF.Z,{children:["Team Member Spend (USD)"," ",(0,c.jsx)(B.Z,{title:"This is the amount spent by a user in the team.",children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(sF.Z,{children:"Team Member Budget (USD)"}),(0,c.jsxs)(sF.Z,{children:["Team Member Rate Limits"," ",(0,c.jsx)(B.Z,{title:"Rate limits for this member's usage within this team.",children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(sF.Z,{className:"sticky right-0 bg-white z-10 border-l border-gray-200",children:"Actions"})]})}),(0,c.jsx)(sM.Z,{children:s.team_info.members_with_roles.map((e,i)=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_id})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_email?e.user_email:"No Email"})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.role})}),(0,c.jsx)(sO.Z,{children:(0,c.jsxs)(k.Z,{className:"font-mono",children:["$",eP(o(e.user_id),4)]})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:d(e.user_id)?"$".concat(eP(Number(d(e.user_id)),4)):"No Limit"})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:m(e.user_id)})}),(0,c.jsx)(sO.Z,{className:"sticky right-0 bg-white z-10 border-l border-gray-200",children:t&&(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(sL.Z,{icon:sX.Z,size:"sm",onClick:()=>{var t,l,i;let n=s.team_memberships.find(s=>s.user_id===e.user_id);a({...e,max_budget_in_team:(null==n?void 0:null===(t=n.litellm_budget_table)||void 0===t?void 0:t.max_budget)||null,tpm_limit:(null==n?void 0:null===(l=n.litellm_budget_table)||void 0===l?void 0:l.tpm_limit)||null,rpm_limit:(null==n?void 0:null===(i=n.litellm_budget_table)||void 0===i?void 0:i.rpm_limit)||null}),r(!0)},className:"cursor-pointer hover:text-blue-600"}),(0,c.jsx)(sL.Z,{icon:W.Z,size:"sm",onClick:()=>l(e),className:"cursor-pointer hover:text-red-600"})]})})]},i))})]})})}),(0,c.jsx)(b.Z,{onClick:()=>i(!0),children:"Add Member"})]})},tc=t(61994),td=t(85180),tm=t(89245),tu=t(78355);let tx={"/key/generate":"Member can generate a virtual key for this team","/key/service-account/generate":"Member can generate a service account key (not belonging to any user) for this team","/key/update":"Member can update a virtual key belonging to this team","/key/delete":"Member can delete a virtual key belonging to this team","/key/info":"Member can get info about a virtual key belonging to this team","/key/regenerate":"Member can regenerate a virtual key belonging to this team","/key/{key_id}/regenerate":"Member can regenerate a virtual key belonging to this team","/key/list":"Member can list virtual keys belonging to this team","/key/block":"Member can block a virtual key belonging to this team","/key/unblock":"Member can unblock a virtual key belonging to this team"},th=e=>e.includes("/info")||e.includes("/list")?"GET":"POST",tp=e=>{let s=th(e),t=tx[e];if(!t){for(let[s,l]of Object.entries(tx))if(e.includes(s)){t=l;break}}return t||(t="Access ".concat(e)),{method:s,endpoint:e,description:t,route:e}};var tg=e=>{let{teamId:s,accessToken:t,canEditTeam:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)(!0),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),g=async()=>{try{if(m(!0),!t)return;let e=await (0,j.getTeamPermissionsCall)(t,s),l=e.all_available_permissions||[];r(l);let a=e.team_member_permissions||[];n(a),p(!1)}catch(e){eo.Z.fromBackend("Failed to load permissions"),console.error("Error fetching permissions:",e)}finally{m(!1)}};(0,d.useEffect)(()=>{g()},[s,t]);let f=(e,s)=>{n(s?[...i,e]:i.filter(s=>s!==e)),p(!0)},v=async()=>{try{if(!t)return;x(!0),await (0,j.teamPermissionsUpdateCall)(t,s,i),eo.Z.success("Permissions updated successfully"),p(!1)}catch(e){eo.Z.fromBackend("Failed to update permissions"),console.error("Error updating permissions:",e)}finally{x(!1)}};if(o)return(0,c.jsx)("div",{className:"p-6 text-center",children:"Loading permissions..."});let y=a.length>0;return(0,c.jsxs)(G.Z,{className:"bg-white shadow-md rounded-md p-6",children:[(0,c.jsxs)("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center border-b pb-4 mb-6",children:[(0,c.jsx)(S.Z,{className:"mb-2 sm:mb-0",children:"Member Permissions"}),l&&h&&(0,c.jsxs)("div",{className:"flex gap-3",children:[(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(tm.Z,{}),onClick:()=>{g()},children:"Reset"}),(0,c.jsxs)(b.Z,{onClick:v,loading:u,className:"flex items-center gap-2",children:[(0,c.jsx)(tu.Z,{})," Save Changes"]})]})]}),(0,c.jsx)(k.Z,{className:"mb-6 text-gray-600",children:"Control what team members can do when they are not team admins."}),y?(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sP.Z,{className:" min-w-full",children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Method"}),(0,c.jsx)(sF.Z,{children:"Endpoint"}),(0,c.jsx)(sF.Z,{children:"Description"}),(0,c.jsx)(sF.Z,{className:"sticky right-0 bg-white shadow-[-4px_0_4px_-4px_rgba(0,0,0,0.1)] text-center",children:"Allow Access"})]})}),(0,c.jsx)(sM.Z,{children:a.map(e=>{let s=tp(e);return(0,c.jsxs)(sR.Z,{className:"hover:bg-gray-50 transition-colors",children:[(0,c.jsx)(sO.Z,{children:(0,c.jsx)("span",{className:"px-2 py-1 rounded text-xs font-medium ".concat("GET"===s.method?"bg-blue-100 text-blue-800":"bg-green-100 text-green-800"),children:s.method})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)("span",{className:"font-mono text-sm text-gray-800",children:s.endpoint})}),(0,c.jsx)(sO.Z,{className:"text-gray-700",children:s.description}),(0,c.jsx)(sO.Z,{className:"sticky right-0 bg-white shadow-[-4px_0_4px_-4px_rgba(0,0,0,0.1)] text-center",children:(0,c.jsx)(tc.Z,{checked:i.includes(e),onChange:s=>f(e,s.target.checked),disabled:!l})})]},e)})})]})}):(0,c.jsx)("div",{className:"py-12",children:(0,c.jsx)(td.Z,{description:"No permissions available"})})]})},tj=t(42264),tf=e=>{var s,t,l;let{visible:a,onCancel:r,onSubmit:i,initialData:n,mode:o,config:m}=e,[u]=A.Z.useForm();console.log("Initial Data:",n),(0,d.useEffect)(()=>{if(a){if("edit"===o&&n){let e={...n,role:n.role||m.defaultRole,max_budget_in_team:n.max_budget_in_team||null,tpm_limit:n.tpm_limit||null,rpm_limit:n.rpm_limit||null};console.log("Setting form values:",e),u.setFieldsValue(e)}else{var e;u.resetFields(),u.setFieldsValue({role:m.defaultRole||(null===(e=m.roleOptions[0])||void 0===e?void 0:e.value)})}}},[a,n,o,u,m.defaultRole,m.roleOptions]);let x=async e=>{try{let s=Object.entries(e).reduce((e,s)=>{let[t,l]=s;if("string"==typeof l){let s=l.trim();return""===s&&("max_budget_in_team"===t||"tpm_limit"===t||"rpm_limit"===t)?{...e,[t]:null}:{...e,[t]:s}}return{...e,[t]:l}},{});console.log("Submitting form data:",s),i(s),u.resetFields()}catch(e){console.error("Form submission error:",e)}},h=e=>{switch(e.type){case"input":return(0,c.jsx)(_.Z,{placeholder:e.placeholder});case"numerical":return(0,c.jsx)(O,{step:e.step||1,min:e.min||0,style:{width:"100%"},placeholder:e.placeholder||"Enter a numerical value"});case"select":var s;return(0,c.jsx)(e3.Z,{children:null===(s=e.options)||void 0===s?void 0:s.map(e=>(0,c.jsx)(ei.Z,{value:e.value,children:e.label},e.value))});default:return null}};return(0,c.jsx)(T.Z,{title:m.title||("add"===o?"Add Member":"Edit Member"),open:a,width:1e3,footer:null,onCancel:r,children:(0,c.jsxs)(A.Z,{form:u,onFinish:x,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[m.showEmail&&(0,c.jsx)(A.Z.Item,{label:"Email",name:"user_email",className:"mb-4",rules:[{type:"email",message:"Please enter a valid email!"}],children:(0,c.jsx)(_.Z,{placeholder:"user@example.com"})}),m.showEmail&&m.showUserId&&(0,c.jsx)("div",{className:"text-center mb-4",children:(0,c.jsx)(k.Z,{children:"OR"})}),m.showUserId&&(0,c.jsx)(A.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,c.jsx)(_.Z,{placeholder:"user_123"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{children:"Role"}),"edit"===o&&n&&(0,c.jsxs)("span",{className:"text-gray-500 text-sm",children:["(Current: ",(t=n.role,(null===(l=m.roleOptions.find(e=>e.value===t))||void 0===l?void 0:l.label)||t),")"]})]}),name:"role",className:"mb-4",rules:[{required:!0,message:"Please select a role!"}],children:(0,c.jsx)(e3.Z,{children:"edit"===o&&n?[...m.roleOptions.filter(e=>e.value===n.role),...m.roleOptions.filter(e=>e.value!==n.role)].map(e=>(0,c.jsx)(ei.Z,{value:e.value,children:e.label},e.value)):m.roleOptions.map(e=>(0,c.jsx)(ei.Z,{value:e.value,children:e.label},e.value))})}),null===(s=m.additionalFields)||void 0===s?void 0:s.map(e=>(0,c.jsx)(A.Z.Item,{label:e.label,name:e.name,className:"mb-4",rules:e.rules,children:h(e)},e.name)),(0,c.jsxs)("div",{className:"text-right mt-6",children:[(0,c.jsx)(L.ZP,{onClick:r,className:"mr-2",children:"Cancel"}),(0,c.jsx)(L.ZP,{type:"default",htmlType:"submit",children:"add"===o?"Add Member":"Save Changes"})]})]})})},tv=e=>{let{isVisible:s,onCancel:t,onSubmit:l,accessToken:a,title:r="Add Team Member",roles:i=[{label:"admin",value:"admin",description:"Admin role. Can create team keys, add members, and manage settings."},{label:"user",value:"user",description:"User role. Can view team info, but not manage it."}],defaultRole:n="user"}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)("user_email"),f=async(e,s)=>{if(!e){u([]);return}h(!0);try{let t=new URLSearchParams;if(t.append(s,e),null==a)return;let l=(await (0,j.userFilterUICall)(a,t)).map(e=>({label:"user_email"===s?"".concat(e.user_email):"".concat(e.user_id),value:"user_email"===s?e.user_email:e.user_id,user:e}));u(l)}catch(e){console.error("Error fetching users:",e)}finally{h(!1)}},v=(0,d.useCallback)(eC()((e,s)=>f(e,s),300),[]),y=(e,s)=>{g(s),v(e,s)},b=(e,s)=>{let t=s.user;o.setFieldsValue({user_email:t.user_email,user_id:t.user_id,role:o.getFieldValue("role")})};return(0,c.jsx)(T.Z,{title:r,open:s,onCancel:()=>{o.resetFields(),u([]),t()},footer:null,width:800,children:(0,c.jsxs)(A.Z,{form:o,onFinish:l,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",initialValues:{role:n},children:[(0,c.jsx)(A.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,c.jsx)(I.default,{showSearch:!0,className:"w-full",placeholder:"Search by email",filterOption:!1,onSearch:e=>y(e,"user_email"),onSelect:(e,s)=>b(e,s),options:"user_email"===p?m:[],loading:x,allowClear:!0})}),(0,c.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,c.jsx)(A.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,c.jsx)(I.default,{showSearch:!0,className:"w-full",placeholder:"Search by user ID",filterOption:!1,onSearch:e=>y(e,"user_id"),onSelect:(e,s)=>b(e,s),options:"user_id"===p?m:[],loading:x,allowClear:!0})}),(0,c.jsx)(A.Z.Item,{label:"Member Role",name:"role",className:"mb-4",children:(0,c.jsx)(I.default,{defaultValue:n,children:i.map(e=>(0,c.jsx)(I.default.Option,{value:e.value,children:(0,c.jsxs)(B.Z,{title:e.description,children:[(0,c.jsx)("span",{className:"font-medium",children:e.label}),(0,c.jsxs)("span",{className:"ml-2 text-gray-500 text-sm",children:["- ",e.description]})]})},e.value))})}),(0,c.jsx)("div",{className:"text-right mt-4",children:(0,c.jsx)(L.ZP,{type:"default",htmlType:"submit",children:"Add Member"})})]})})},ty=e=>{var s,t,l,a,r,i,n,o,m,u,x,h,p,g,f;let{teamId:v,onClose:N,accessToken:Z,is_team_admin:w,is_proxy_admin:C,userModels:T,editTeam:E,premiumUser:M=!1,onUpdate:D}=e,[R,z]=(0,d.useState)(null),[q,K]=(0,d.useState)(!0),[H,Y]=(0,d.useState)(!1),[J]=A.Z.useForm(),[W,$]=(0,d.useState)(!1),[Q,X]=(0,d.useState)(null),[ee,es]=(0,d.useState)(!1),[et,el]=(0,d.useState)([]),[ea,er]=(0,d.useState)(!1),[ei,en]=(0,d.useState)({}),[ec,ed]=(0,d.useState)([]);console.log("userModels in team info",T);let em=w||C,eu=async()=>{try{if(K(!0),!Z)return;let e=await (0,j.teamInfoCall)(Z,v);z(e)}catch(e){eo.Z.fromBackend("Failed to load team information"),console.error("Error fetching team info:",e)}finally{K(!1)}};(0,d.useEffect)(()=>{eu()},[v,Z]),(0,d.useEffect)(()=>{(async()=>{try{if(!Z)return;let e=(await (0,j.getGuardrailsList)(Z)).guardrails.map(e=>e.guardrail_name);ed(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})()},[Z]);let ex=async e=>{try{if(null==Z)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role};await (0,j.teamMemberAddCall)(Z,v,s),eo.Z.success("Team member added successfully"),Y(!1),J.resetFields();let t=await (0,j.teamInfoCall)(Z,v);z(t),D(t)}catch(a){var s,t,l;let e="Failed to add team member";(null==a?void 0:null===(l=a.raw)||void 0===l?void 0:null===(t=l.detail)||void 0===t?void 0:null===(s=t.error)||void 0===s?void 0:s.includes("Assigning team admins is a premium feature"))?e="Assigning admins is an enterprise-only feature. Please upgrade your LiteLLM plan to enable this.":(null==a?void 0:a.message)&&(e=a.message),eo.Z.fromBackend(e),console.error("Error adding team member:",a)}},eh=async e=>{try{if(null==Z)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role,max_budget_in_team:e.max_budget_in_team,tpm_limit:e.tpm_limit,rpm_limit:e.rpm_limit};console.log("Updating member with values:",s),tj.ZP.destroy(),await (0,j.teamMemberUpdateCall)(Z,v,s),eo.Z.success("Team member updated successfully"),$(!1);let t=await (0,j.teamInfoCall)(Z,v);z(t),D(t)}catch(l){var s,t;let e="Failed to update team member";(null==l?void 0:null===(t=l.raw)||void 0===t?void 0:null===(s=t.detail)||void 0===s?void 0:s.includes("Assigning team admins is a premium feature"))?e="Assigning admins is an enterprise-only feature. Please upgrade your LiteLLM plan to enable this.":(null==l?void 0:l.message)&&(e=l.message),$(!1),tj.ZP.destroy(),eo.Z.fromBackend(e),console.error("Error updating team member:",l)}},ep=async e=>{try{if(null==Z)return;await (0,j.teamMemberDeleteCall)(Z,v,e),eo.Z.success("Team member removed successfully");let s=await (0,j.teamInfoCall)(Z,v);z(s),D(s)}catch(e){eo.Z.fromBackend("Failed to remove team member"),console.error("Error removing team member:",e)}},eg=async e=>{try{if(!Z)return;let s={};try{s=e.metadata?JSON.parse(e.metadata):{}}catch(e){eo.Z.fromBackend("Invalid JSON in metadata field");return}let t=e=>null==e||"string"==typeof e&&""===e.trim()||"number"==typeof e&&Number.isNaN(e)?null:e,l={team_id:v,team_alias:e.team_alias,models:e.models,tpm_limit:t(e.tpm_limit),rpm_limit:t(e.rpm_limit),max_budget:e.max_budget,budget_duration:e.budget_duration,metadata:{...s,guardrails:e.guardrails||[],logging:e.logging_settings||[]},organization_id:e.organization_id};void 0!==e.team_member_budget&&(l.team_member_budget=Number(e.team_member_budget)),void 0!==e.team_member_key_duration&&(l.team_member_key_duration=e.team_member_key_duration),(void 0!==e.team_member_tpm_limit||void 0!==e.team_member_rpm_limit)&&(l.team_member_tpm_limit=t(e.team_member_tpm_limit),l.team_member_rpm_limit=t(e.team_member_rpm_limit));let{servers:a,accessGroups:r}=e.mcp_servers_and_groups||{servers:[],accessGroups:[]};(a&&a.length>0||r&&r.length>0)&&(l.object_permission={},a&&a.length>0&&(l.object_permission.mcp_servers=a),r&&r.length>0&&(l.object_permission.mcp_access_groups=r)),delete e.mcp_servers_and_groups,await (0,j.teamUpdateCall)(Z,l),eo.Z.success("Team settings updated successfully"),es(!1),eu()}catch(e){console.error("Error updating team:",e)}};if(q)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!(null==R?void 0:R.team_info))return(0,c.jsx)("div",{className:"p-4",children:"Team not found"});let{team_info:ej}=R,ef=async(e,s)=>{await eM(e)&&(en(e=>({...e,[s]:!0})),setTimeout(()=>{en(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",onClick:N,className:"mb-4",children:"Back to Teams"}),(0,c.jsx)(S.Z,{children:ej.team_alias}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:ej.team_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:ei["team-id"]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>ef(ej.team_id,"team-id"),className:"left-2 z-10 transition-all duration-200 ".concat(ei["team-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,c.jsxs)(e7.Z,{defaultIndex:E?3:0,children:[(0,c.jsx)(e9.Z,{className:"mb-4",children:[(0,c.jsx)(e8.Z,{children:"Overview"},"overview"),...em?[(0,c.jsx)(e8.Z,{children:"Members"},"members"),(0,c.jsx)(e8.Z,{children:"Member Permissions"},"member-permissions"),(0,c.jsx)(e8.Z,{children:"Settings"},"settings")]:[]]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Budget Status"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eP(ej.spend,4)]}),(0,c.jsxs)(k.Z,{children:["of ",null===ej.max_budget?"Unlimited":"$".concat(eP(ej.max_budget,4))]}),ej.budget_duration&&(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Reset: ",ej.budget_duration]}),(0,c.jsx)("br",{}),ej.team_member_budget_table&&(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Team Member Budget: $",eP(ej.team_member_budget_table.max_budget,4)]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Rate Limits"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["TPM: ",ej.tpm_limit||"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",ej.rpm_limit||"Unlimited"]}),ej.max_parallel_requests&&(0,c.jsxs)(k.Z,{children:["Max Parallel Requests: ",ej.max_parallel_requests]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Models"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:0===ej.models.length?(0,c.jsx)(e6.Z,{color:"red",children:"All proxy models"}):ej.models.map((e,s)=>(0,c.jsx)(e6.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Virtual Keys"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["User Keys: ",R.keys.filter(e=>e.user_id).length]}),(0,c.jsxs)(k.Z,{children:["Service Account Keys: ",R.keys.filter(e=>!e.user_id).length]}),(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Total: ",R.keys.length]})]})]}),(0,c.jsx)(sg,{objectPermission:ej.object_permission,variant:"card",accessToken:Z}),(0,c.jsx)(sj,{loggingConfigs:(null===(s=ej.metadata)||void 0===s?void 0:s.logging)||[],disabledCallbacks:[],variant:"card"})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(to,{teamData:R,canEditTeam:em,handleMemberDelete:ep,setSelectedEditMember:X,setIsEditMemberModalVisible:$,setIsAddMemberModalVisible:Y})}),em&&(0,c.jsx)(se.Z,{children:(0,c.jsx)(tg,{teamId:v,accessToken:Z,canEditTeam:em})}),(0,c.jsx)(se.Z,{children:(0,c.jsxs)(G.Z,{className:"overflow-y-auto max-h-[65vh]",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Team Settings"}),em&&!ee&&(0,c.jsx)(b.Z,{onClick:()=>es(!0),children:"Edit Settings"})]}),ee?(0,c.jsxs)(A.Z,{form:J,onFinish:eg,initialValues:{...ej,team_alias:ej.team_alias,models:ej.models,tpm_limit:ej.tpm_limit,rpm_limit:ej.rpm_limit,max_budget:ej.max_budget,budget_duration:ej.budget_duration,team_member_tpm_limit:null===(t=ej.team_member_budget_table)||void 0===t?void 0:t.tpm_limit,team_member_rpm_limit:null===(l=ej.team_member_budget_table)||void 0===l?void 0:l.rpm_limit,guardrails:(null===(a=ej.metadata)||void 0===a?void 0:a.guardrails)||[],metadata:ej.metadata?JSON.stringify((e=>{let{logging:s,...t}=e;return t})(ej.metadata),null,2):"",logging_settings:(null===(r=ej.metadata)||void 0===r?void 0:r.logging)||[],organization_id:ej.organization_id,vector_stores:(null===(i=ej.object_permission)||void 0===i?void 0:i.vector_stores)||[],mcp_servers:(null===(n=ej.object_permission)||void 0===n?void 0:n.mcp_servers)||[],mcp_access_groups:(null===(o=ej.object_permission)||void 0===o?void 0:o.mcp_access_groups)||[],mcp_servers_and_groups:{servers:(null===(m=ej.object_permission)||void 0===m?void 0:m.mcp_servers)||[],accessGroups:(null===(u=ej.object_permission)||void 0===u?void 0:u.mcp_access_groups)||[]}},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Team Name",name:"team_alias",rules:[{required:!0,message:"Please input a team name"}],children:(0,c.jsx)(P.default,{type:""})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),Array.from(new Set(T)).map((e,s)=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},s))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Budget (USD)",name:"team_member_budget",tooltip:"This is the individual budget for a user in the team.",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Key Duration (eg: 1d, 1mo)",name:"team_member_key_duration",tooltip:"Set a limit to the duration of a team member's key. Format: 30s (seconds), 30m (minutes), 30h (hours), 30d (days), 1mo (month)",children:(0,c.jsx)(_.Z,{placeholder:"e.g., 30d"})}),(0,c.jsx)(A.Z.Item,{label:"Team Member TPM Limit",name:"team_member_tpm_limit",tooltip:"Default tokens per minute limit for an individual team member. This limit applies to all requests the user makes within this team. Can be overridden per member.",children:(0,c.jsx)(O,{step:1,style:{width:"100%"},placeholder:"e.g., 1000"})}),(0,c.jsx)(A.Z.Item,{label:"Team Member RPM Limit",name:"team_member_rpm_limit",tooltip:"Default requests per minute limit for an individual team member. This limit applies to all requests the user makes within this team. Can be overridden per member.",children:(0,c.jsx)(O,{step:1,style:{width:"100%"},placeholder:"e.g., 100"})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Setup your first guardrail",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",help:"Select existing guardrails or enter new ones",children:(0,c.jsx)(I.default,{mode:"tags",placeholder:"Select or enter guardrails",options:ec.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:"Vector Stores",name:"vector_stores",children:(0,c.jsx)(U,{onChange:e=>J.setFieldValue("vector_stores",e),value:J.getFieldValue("vector_stores"),accessToken:Z||"",placeholder:"Select vector stores"})}),(0,c.jsx)(A.Z.Item,{label:"MCP Servers / Access Groups",name:"mcp_servers_and_groups",children:(0,c.jsx)(eD,{onChange:e=>J.setFieldValue("mcp_servers_and_groups",e),value:J.getFieldValue("mcp_servers_and_groups"),accessToken:Z||"",placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{label:"Organization ID",name:"organization_id",children:(0,c.jsx)(P.default,{type:""})}),(0,c.jsx)(A.Z.Item,{label:"Logging Settings",name:"logging_settings",children:(0,c.jsx)(sa,{value:J.getFieldValue("logging_settings"),onChange:e=>J.setFieldValue("logging_settings",e)})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:10})}),(0,c.jsx)("div",{className:"sticky z-10 bg-white p-4 border-t border-gray-200 bottom-[-1.5rem] inset-x-[-1.5rem]",children:(0,c.jsxs)("div",{className:"flex justify-end items-center gap-2",children:[(0,c.jsx)(L.ZP,{htmlType:"button",onClick:()=>es(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team Name"}),(0,c.jsx)("div",{children:ej.team_alias})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team ID"}),(0,c.jsx)("div",{className:"font-mono",children:ej.team_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:new Date(ej.created_at).toLocaleString()})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:ej.models.map((e,s)=>(0,c.jsx)(e6.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Rate Limits"}),(0,c.jsxs)("div",{children:["TPM: ",ej.tpm_limit||"Unlimited"]}),(0,c.jsxs)("div",{children:["RPM: ",ej.rpm_limit||"Unlimited"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team Budget"}),(0,c.jsxs)("div",{children:["Max Budget:"," ",null!==ej.max_budget?"$".concat(eP(ej.max_budget,4)):"No Limit"]}),(0,c.jsxs)("div",{children:["Budget Reset: ",ej.budget_duration||"Never"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["Team Member Settings"," ",(0,c.jsx)(B.Z,{title:"These are limits on individual team members",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),(0,c.jsxs)("div",{children:["Max Budget: ",(null===(x=ej.team_member_budget_table)||void 0===x?void 0:x.max_budget)||"No Limit"]}),(0,c.jsxs)("div",{children:["Key Duration: ",(null===(h=ej.metadata)||void 0===h?void 0:h.team_member_key_duration)||"No Limit"]}),(0,c.jsxs)("div",{children:["TPM Limit: ",(null===(p=ej.team_member_budget_table)||void 0===p?void 0:p.tpm_limit)||"No Limit"]}),(0,c.jsxs)("div",{children:["RPM Limit: ",(null===(g=ej.team_member_budget_table)||void 0===g?void 0:g.rpm_limit)||"No Limit"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization ID"}),(0,c.jsx)("div",{children:ej.organization_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Status"}),(0,c.jsx)(e6.Z,{color:ej.blocked?"red":"green",children:ej.blocked?"Blocked":"Active"})]}),(0,c.jsx)(sg,{objectPermission:ej.object_permission,variant:"inline",className:"pt-4 border-t border-gray-200",accessToken:Z}),(0,c.jsx)(sj,{loggingConfigs:(null===(f=ej.metadata)||void 0===f?void 0:f.logging)||[],disabledCallbacks:[],variant:"inline",className:"pt-4 border-t border-gray-200"})]})]})})]})]}),(0,c.jsx)(tf,{visible:W,onCancel:()=>$(!1),onSubmit:eh,initialData:Q,mode:"edit",config:{title:"Edit Member",showEmail:!0,showUserId:!0,roleOptions:[{label:"Admin",value:"admin"},{label:"User",value:"user"}],additionalFields:[{name:"max_budget_in_team",label:(0,c.jsxs)("span",{children:["Team Member Budget (USD)"," ",(0,c.jsx)(B.Z,{title:"Maximum amount in USD this member can spend within this team. This is separate from any global user budget limits",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),type:"numerical",step:.01,min:0,placeholder:"Budget limit for this member within this team"},{name:"tpm_limit",label:(0,c.jsxs)("span",{children:["Team Member TPM Limit"," ",(0,c.jsx)(B.Z,{title:"Maximum tokens per minute this member can use within this team. This is separate from any global user TPM limit",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),type:"numerical",step:1,min:0,placeholder:"Tokens per minute limit for this member in this team"},{name:"rpm_limit",label:(0,c.jsxs)("span",{children:["Team Member RPM Limit"," ",(0,c.jsx)(B.Z,{title:"Maximum requests per minute this member can make within this team. This is separate from any global user RPM limit",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),type:"numerical",step:1,min:0,placeholder:"Requests per minute limit for this member in this team"}]}}),(0,c.jsx)(tv,{isVisible:H,onCancel:()=>Y(!1),onSubmit:ex,accessToken:Z})]})},tb=t(45589);let{Title:t_,Link:tN}=en.default;var tZ=e=>{let{isVisible:s,onCancel:t,onAddCredential:l,existingCredential:a,setIsCredentialModalOpen:r}=e,[i]=A.Z.useForm();return console.log("existingCredential in add credentials tab: ".concat(JSON.stringify(a))),(0,c.jsx)(T.Z,{title:"Reuse Credentials",visible:s,onCancel:()=>{t(),i.resetFields()},footer:null,width:600,children:(0,c.jsxs)(A.Z,{form:i,onFinish:e=>{l(e),i.resetFields(),r(!1)},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Credential Name:",name:"credential_name",rules:[{required:!0,message:"Credential name is required"}],initialValue:null==a?void 0:a.credential_name,children:(0,c.jsx)(eG.o,{placeholder:"Enter a friendly name for these credentials"})}),Object.entries((null==a?void 0:a.credential_values)||{}).map(e=>{let[s,t]=e;return(0,c.jsx)(A.Z.Item,{label:s,name:s,initialValue:t,children:(0,c.jsx)(eG.o,{placeholder:"Enter ".concat(s),disabled:!0})},s)}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(tN,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{children:[(0,c.jsx)(L.ZP,{onClick:()=>{t(),i.resetFields()},style:{marginRight:10},children:"Cancel"}),(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Reuse Credentials"})]})]})]})})},tw=t(45246),tk=t(96473);let{Text:tS}=en.default;var tC=e=>{let{form:s,showCacheControl:t,onCacheControlChange:l}=e,a=e=>{let t=s.getFieldValue("litellm_extra_params");try{let l=t?JSON.parse(t):{};e.length>0?l.cache_control_injection_points=e:delete l.cache_control_injection_points,Object.keys(l).length>0?s.setFieldValue("litellm_extra_params",JSON.stringify(l,null,2)):s.setFieldValue("litellm_extra_params","")}catch(e){console.error("Error updating cache control points:",e)}};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Cache Control Injection Points",name:"cache_control",valuePropName:"checked",className:"mb-4",tooltip:"Tell litellm where to inject cache control checkpoints. You can specify either by role (to apply to all messages of that role) or by specific message index.",children:(0,c.jsx)(eK.Z,{onChange:l,className:"bg-gray-600"})}),t&&(0,c.jsxs)("div",{className:"ml-6 pl-4 border-l-2 border-gray-200",children:[(0,c.jsx)(tS,{className:"text-sm text-gray-500 block mb-4",children:"Providers like Anthropic, Bedrock API require users to specify where to inject cache control checkpoints, litellm can automatically add them for you as a cost saving feature."}),(0,c.jsx)(A.Z.List,{name:"cache_control_injection_points",initialValue:[{location:"message"}],children:(e,t)=>{let{add:l,remove:r}=t;return(0,c.jsxs)(c.Fragment,{children:[e.map((t,l)=>(0,c.jsxs)("div",{className:"flex items-center mb-4 gap-4",children:[(0,c.jsx)(A.Z.Item,{...t,label:"Type",name:[t.name,"location"],initialValue:"message",className:"mb-0",style:{width:"180px"},children:(0,c.jsx)(I.default,{disabled:!0,options:[{value:"message",label:"Message"}]})}),(0,c.jsx)(A.Z.Item,{...t,label:"Role",name:[t.name,"role"],className:"mb-0",style:{width:"180px"},tooltip:"LiteLLM will mark all messages of this role as cacheable",children:(0,c.jsx)(I.default,{placeholder:"Select a role",allowClear:!0,options:[{value:"user",label:"User"},{value:"system",label:"System"},{value:"assistant",label:"Assistant"}],onChange:()=>{a(s.getFieldValue("cache_control_points"))}})}),(0,c.jsx)(A.Z.Item,{...t,label:"Index",name:[t.name,"index"],className:"mb-0",style:{width:"180px"},tooltip:"(Optional) If set litellm will mark the message at this index as cacheable",children:(0,c.jsx)(O,{type:"number",placeholder:"Optional",step:1,min:0,onChange:()=>{a(s.getFieldValue("cache_control_points"))}})}),e.length>1&&(0,c.jsx)(tw.Z,{className:"text-red-500 cursor-pointer text-lg ml-12",onClick:()=>{r(t.name),setTimeout(()=>{a(s.getFieldValue("cache_control_points"))},0)}})]},t.key)),(0,c.jsx)(A.Z.Item,{children:(0,c.jsxs)("button",{type:"button",className:"flex items-center justify-center w-full border border-dashed border-gray-300 py-2 px-4 text-gray-600 hover:text-blue-600 hover:border-blue-300 transition-all rounded",onClick:()=>l(),children:[(0,c.jsx)(tk.Z,{className:"mr-2"}),"Add Injection Point"]})})]})}})]})]})},tI=t(44851),tA=t(67960),tT=t(70464);let{TextArea:tE}=P.default,{Panel:tL}=tI.default;var tP=e=>{let{modelInfo:s,value:t,onChange:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]);(0,d.useEffect)(()=>{if(null==t?void 0:t.routes){let e=t.routes.map((e,s)=>({id:e.id||"route-".concat(s,"-").concat(Date.now()),model:e.name||e.model||"",utterances:e.utterances||[],description:e.description||"",score_threshold:e.score_threshold||.5}));r(e),m(e.map(e=>e.id))}else r([]),m([])},[t]);let u=e=>{let s=a.filter(s=>s.id!==e);r(s),h(s),m(s=>s.filter(s=>s!==e))},x=(e,s,t)=>{let l=a.map(l=>l.id===e?{...l,[s]:t}:l);r(l),h(l)},h=e=>{let s={routes:e.map(e=>({name:e.model,utterances:e.utterances,description:e.description,score_threshold:e.score_threshold}))};null==l||l(s)},p=s.map(e=>({value:e.model_group,label:e.model_group}));return(0,c.jsxs)("div",{className:"w-full max-w-none",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6 w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold",children:"Routes Configuration"}),(0,c.jsx)(B.Z,{title:"Configure routing logic to automatically select the best model based on user input patterns",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsx)(L.ZP,{type:"primary",icon:(0,c.jsx)(tk.Z,{}),onClick:()=>{let e="route-".concat(Date.now()),s=[...a,{id:e,model:"",utterances:[],description:"",score_threshold:.5}];r(s),h(s),m(s=>[...s,e])},className:"bg-blue-600 hover:bg-blue-700",children:"Add Route"})]}),0===a.length?(0,c.jsx)("div",{className:"text-center py-12 text-gray-500 bg-gray-50 rounded-lg border-2 border-dashed border-gray-200 mb-6",children:(0,c.jsx)(k.Z,{children:"No routes configured. Click “Add Route” to get started."})}):(0,c.jsx)("div",{className:"space-y-3 mb-6 w-full",children:a.map((e,s)=>(0,c.jsx)(tA.Z,{className:"border border-gray-200 shadow-sm w-full",bodyStyle:{padding:0},children:(0,c.jsx)(tI.default,{ghost:!0,expandIcon:e=>{let{isActive:s}=e;return(0,c.jsx)(tT.Z,{rotate:s?180:0})},activeKey:o,onChange:e=>m(Array.isArray(e)?e:[e].filter(Boolean)),items:[{key:e.id,label:(0,c.jsxs)("div",{className:"flex justify-between items-center py-2",children:[(0,c.jsxs)(k.Z,{className:"font-medium text-base",children:["Route ",s+1,": ",e.model||"Unnamed"]}),(0,c.jsx)(L.ZP,{type:"text",danger:!0,icon:(0,c.jsx)(ep.Z,{}),onClick:s=>{s.stopPropagation(),u(e.id)},className:"mr-2"})]}),children:(0,c.jsxs)("div",{className:"px-6 pb-6 w-full",children:[(0,c.jsxs)("div",{className:"mb-4 w-full",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-2 block",children:"Model"}),(0,c.jsx)(I.default,{value:e.model,onChange:s=>x(e.id,"model",s),placeholder:"Select model",showSearch:!0,style:{width:"100%"},options:p})]}),(0,c.jsxs)("div",{className:"mb-4 w-full",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-2 block",children:"Description"}),(0,c.jsx)(tE,{value:e.description,onChange:s=>x(e.id,"description",s.target.value),placeholder:"Describe when this route should be used...",rows:2,style:{width:"100%"}})]}),(0,c.jsxs)("div",{className:"mb-4 w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium",children:"Score Threshold"}),(0,c.jsx)(B.Z,{title:"Minimum similarity score to route to this model (0-1)",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsx)(e4.Z,{value:e.score_threshold,onChange:s=>x(e.id,"score_threshold",s||0),min:0,max:1,step:.1,style:{width:"100%"},placeholder:"0.5"})]}),(0,c.jsxs)("div",{className:"w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium",children:"Example Utterances"}),(0,c.jsx)(B.Z,{title:"Training examples for this route. Type an utterance and press Enter to add it.",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500 mb-2",children:"Type an utterance and press Enter to add it. You can also paste multiple lines."}),(0,c.jsx)(I.default,{mode:"tags",value:e.utterances,onChange:s=>x(e.id,"utterances",s),placeholder:"Type an utterance and press Enter...",style:{width:"100%"},tokenSeparators:["\n"],maxTagCount:"responsive",allowClear:!0})]})]})}]})},e.id))}),(0,c.jsxs)("div",{className:"border-t pt-6 w-full",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4 w-full",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold",children:"JSON Preview"}),(0,c.jsx)(L.ZP,{type:"link",onClick:()=>n(!i),className:"text-blue-600 p-0",children:i?"Hide":"Show"})]}),i&&(0,c.jsx)(tA.Z,{className:"bg-gray-50 w-full",children:(0,c.jsx)("pre",{className:"text-sm overflow-auto max-h-64 w-full",children:JSON.stringify({routes:a.map(e=>({name:e.model,utterances:e.utterances,description:e.description,score_threshold:e.score_threshold}))},null,2)})})]})]})},tM=e=>{let{isVisible:s,onCancel:t,onSuccess:l,modelData:a,accessToken:r,userRole:i}=e,[n]=A.Z.useForm(),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)(!1),[b,N]=(0,d.useState)(null);(0,d.useEffect)(()=>{s&&a&&Z()},[s,a]),(0,d.useEffect)(()=>{let e=async()=>{if(r)try{let e=await (0,j.modelAvailableCall)(r,"","",!1,null,!0,!0);x(e.data.map(e=>e.id))}catch(e){console.error("Error fetching model access groups:",e)}},t=async()=>{if(r)try{let e=await eq(r);p(e)}catch(e){console.error("Error fetching model info:",e)}};s&&(e(),t())},[s,r]);let Z=()=>{try{var e,s,t,l,r,i;let o=null;(null===(e=a.litellm_params)||void 0===e?void 0:e.auto_router_config)&&(o="string"==typeof a.litellm_params.auto_router_config?JSON.parse(a.litellm_params.auto_router_config):a.litellm_params.auto_router_config),N(o),n.setFieldsValue({auto_router_name:a.model_name,auto_router_default_model:(null===(s=a.litellm_params)||void 0===s?void 0:s.auto_router_default_model)||"",auto_router_embedding_model:(null===(t=a.litellm_params)||void 0===t?void 0:t.auto_router_embedding_model)||"",model_access_group:(null===(l=a.model_info)||void 0===l?void 0:l.access_groups)||[]});let c=new Set(h.map(e=>e.model_group));f(!c.has(null===(r=a.litellm_params)||void 0===r?void 0:r.auto_router_default_model)),y(!c.has(null===(i=a.litellm_params)||void 0===i?void 0:i.auto_router_embedding_model))}catch(e){console.error("Error parsing auto router config:",e),eo.Z.fromBackend("Error loading auto router configuration")}},w=async()=>{try{m(!0);let e=await n.validateFields(),s={...a.litellm_params,auto_router_config:JSON.stringify(b),auto_router_default_model:e.auto_router_default_model,auto_router_embedding_model:e.auto_router_embedding_model||void 0},i={...a.model_info,access_groups:e.model_access_group||[]},o={model_name:e.auto_router_name,litellm_params:s,model_info:i};await (0,j.modelPatchUpdateCall)(r,o,a.model_info.id);let c={...a,model_name:e.auto_router_name,litellm_params:s,model_info:i};eo.Z.success("Auto router configuration updated successfully"),l(c),t()}catch(e){console.error("Error updating auto router:",e),eo.Z.fromBackend("Failed to update auto router configuration")}finally{m(!1)}},S=h.map(e=>({value:e.model_group,label:e.model_group}));return(0,c.jsx)(T.Z,{title:"Edit Auto Router Configuration",open:s,onCancel:t,footer:[(0,c.jsx)(L.ZP,{onClick:t,children:"Cancel"},"cancel"),(0,c.jsx)(L.ZP,{loading:o,onClick:w,children:"Save Changes"},"submit")],width:1e3,destroyOnClose:!0,children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsx)(k.Z,{className:"text-gray-600",children:"Edit the auto router configuration including routing logic, default models, and access settings."}),(0,c.jsxs)(A.Z,{form:n,layout:"vertical",className:"space-y-4",children:[(0,c.jsx)(A.Z.Item,{label:"Auto Router Name",name:"auto_router_name",rules:[{required:!0,message:"Auto router name is required"}],children:(0,c.jsx)(_.Z,{placeholder:"e.g., auto_router_1, smart_routing"})}),(0,c.jsx)("div",{className:"w-full",children:(0,c.jsx)(tP,{modelInfo:h,value:b,onChange:e=>{N(e)}})}),(0,c.jsx)(A.Z.Item,{label:"Default Model",name:"auto_router_default_model",rules:[{required:!0,message:"Default model is required"}],children:(0,c.jsx)(I.default,{placeholder:"Select a default model",onChange:e=>{f("custom"===e)},options:[...S,{value:"custom",label:"Enter custom model name"}],showSearch:!0})}),(0,c.jsx)(A.Z.Item,{label:"Embedding Model",name:"auto_router_embedding_model",children:(0,c.jsx)(I.default,{placeholder:"Select an embedding model (optional)",onChange:e=>{y("custom"===e)},options:[...S,{value:"custom",label:"Enter custom model name"}],showSearch:!0,allowClear:!0})}),"Admin"===i&&(0,c.jsx)(A.Z.Item,{label:"Model Access Groups",name:"model_access_group",tooltip:"Control who can access this auto router",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],options:u.map(e=>({value:e,label:e})),maxTagCount:"responsive",allowClear:!0})})]})]})})};function tO(e){var s,t,l,a,r,i,n,o,m,u,x,h,p,g,f,v,N,Z,w,C,E,M,D,F,R,z,U,q;let{modelId:K,onClose:H,modelData:Y,accessToken:J,userID:$,userRole:Q,editModel:X,setEditModalVisible:ee,setSelectedModel:es,onModelUpdate:et,modelAccessGroups:el}=e,[ea]=A.Z.useForm(),[er,ei]=(0,d.useState)(null),[en,ec]=(0,d.useState)(!1),[ed,em]=(0,d.useState)(!1),[eu,ex]=(0,d.useState)(!1),[eh,ep]=(0,d.useState)(!1),[eg,ej]=(0,d.useState)(!1),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)(!1),[e_,eN]=(0,d.useState)({}),[eZ,ew]=(0,d.useState)(!1),[ek,eS]=(0,d.useState)([]),eC="Admin"===Q||(null==Y?void 0:null===(s=Y.model_info)||void 0===s?void 0:s.created_by)===$,eI=(null==Y?void 0:null===(t=Y.litellm_params)||void 0===t?void 0:t.auto_router_config)!=null,eA=(null==Y?void 0:null===(l=Y.litellm_params)||void 0===l?void 0:l.litellm_credential_name)!=null&&(null==Y?void 0:null===(a=Y.litellm_params)||void 0===a?void 0:a.litellm_credential_name)!=void 0;console.log("usingExistingCredential, ",eA),console.log("modelData.litellm_params.litellm_credential_name, ",null==Y?void 0:null===(r=Y.litellm_params)||void 0===r?void 0:r.litellm_credential_name),(0,d.useEffect)(()=>{let e=async()=>{var e,s,t,l,a,r,i;if(!J)return;let n=await (0,j.modelInfoV1Call)(J,K);console.log("modelInfoResponse, ",n);let o=n.data[0];o&&!o.litellm_model_name&&(o={...o,litellm_model_name:null!==(i=null!==(r=null!==(a=null==o?void 0:null===(s=o.litellm_params)||void 0===s?void 0:s.litellm_model_name)&&void 0!==a?a:null==o?void 0:null===(t=o.litellm_params)||void 0===t?void 0:t.model)&&void 0!==r?r:null==o?void 0:null===(l=o.model_info)||void 0===l?void 0:l.key)&&void 0!==i?i:null}),ei(o),(null==o?void 0:null===(e=o.litellm_params)||void 0===e?void 0:e.cache_control_injection_points)&&eb(!0)},s=async()=>{if(J)try{let e=(await (0,j.getGuardrailsList)(J)).guardrails.map(e=>e.guardrail_name);eS(e)}catch(e){console.error("Failed to fetch guardrails:",e)}};(async()=>{if(console.log("accessToken, ",J),!J||eA)return;let e=await (0,j.credentialGetCall)(J,null,K);console.log("existingCredentialResponse, ",e),ev({credential_name:e.credential_name,credential_values:e.credential_values,credential_info:e.credential_info})})(),e(),s()},[J,K]);let eT=async e=>{var s;if(console.log("values, ",e),!J)return;let t={credential_name:e.credential_name,model_id:K,credential_info:{custom_llm_provider:null===(s=er.litellm_params)||void 0===s?void 0:s.custom_llm_provider}};eo.Z.info("Storing credential.."),console.log("credentialResponse, ",await (0,j.credentialCreateCall)(J,t)),eo.Z.success("Credential stored successfully")},eE=async e=>{try{var s;let t;if(!J)return;ep(!0),console.log("values.model_name, ",e.model_name);let l={...er.litellm_params,model:e.litellm_model_name,api_base:e.api_base,custom_llm_provider:e.custom_llm_provider,organization:e.organization,tpm:e.tpm,rpm:e.rpm,max_retries:e.max_retries,timeout:e.timeout,stream_timeout:e.stream_timeout,input_cost_per_token:e.input_cost/1e6,output_cost_per_token:e.output_cost/1e6};e.guardrails&&(l.guardrails=e.guardrails),e.cache_control&&(null===(s=e.cache_control_injection_points)||void 0===s?void 0:s.length)>0?l.cache_control_injection_points=e.cache_control_injection_points:delete l.cache_control_injection_points;try{t=e.model_info?JSON.parse(e.model_info):Y.model_info,e.model_access_group&&(t={...t,access_groups:e.model_access_group})}catch(e){eo.Z.fromBackend("Invalid JSON in Model Info");return}let a={model_name:e.model_name,litellm_params:l,model_info:t};await (0,j.modelPatchUpdateCall)(J,a,K);let r={...er,model_name:e.model_name,litellm_model_name:e.litellm_model_name,litellm_params:l,model_info:t};ei(r),et&&et(r),eo.Z.success("Model settings updated successfully"),ex(!1),ej(!1)}catch(e){console.error("Error updating model:",e),eo.Z.fromBackend("Failed to update model settings")}finally{ep(!1)}};if(!Y)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",onClick:H,className:"mb-4",children:"Back to Models"}),(0,c.jsx)(k.Z,{children:"Model not found"})]});let eL=async()=>{try{if(!J)return;await (0,j.modelDeleteCall)(J,K),eo.Z.success("Model deleted successfully"),et&&et({deleted:!0,model_info:{id:K}}),H()}catch(e){console.error("Error deleting the model:",e),eo.Z.fromBackend("Failed to delete model")}},eP=async(e,s)=>{await eM(e)&&(eN(e=>({...e,[s]:!0})),setTimeout(()=>{eN(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",onClick:H,className:"mb-4",children:"Back to Models"}),(0,c.jsxs)(S.Z,{children:["Public Model Name: ",te(Y)]}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:Y.model_info.id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:e_["model-id"]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>eP(Y.model_info.id,"model-id"),className:"left-2 z-10 transition-all duration-200 ".concat(e_["model-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)("div",{className:"flex gap-2",children:["Admin"===Q&&(0,c.jsx)(b.Z,{icon:tb.Z,variant:"secondary",onClick:()=>em(!0),className:"flex items-center",children:"Re-use Credentials"}),eC&&(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>ec(!0),className:"flex items-center",children:"Delete Model"})]})]}),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{className:"mb-6",children:[(0,c.jsx)(e8.Z,{children:"Overview"}),(0,c.jsx)(e8.Z,{children:"Raw JSON"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6 mb-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Provider"}),(0,c.jsxs)("div",{className:"mt-2 flex items-center space-x-2",children:[Y.provider&&(0,c.jsx)("img",{src:(0,sW.dr)(Y.provider).logo,alt:"".concat(Y.provider," logo"),className:"w-4 h-4",onError:e=>{let s=e.target,t=s.parentElement;if(t){var l;let e=document.createElement("div");e.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=(null===(l=Y.provider)||void 0===l?void 0:l.charAt(0))||"-",t.replaceChild(e,s)}}}),(0,c.jsx)(S.Z,{children:Y.provider||"Not Set"})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"LiteLLM Model"}),(0,c.jsx)("div",{className:"mt-2 overflow-hidden",children:(0,c.jsx)(B.Z,{title:Y.litellm_model_name||"Not Set",children:(0,c.jsx)("div",{className:"break-all text-sm font-medium leading-relaxed cursor-pointer",children:Y.litellm_model_name||"Not Set"})})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Pricing"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["Input: $",Y.input_cost,"/1M tokens"]}),(0,c.jsxs)(k.Z,{children:["Output: $",Y.output_cost,"/1M tokens"]})]})]})]}),(0,c.jsxs)("div",{className:"mb-6 text-sm text-gray-500 flex items-center gap-x-6",children:[(0,c.jsxs)("div",{className:"flex items-center gap-x-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})}),"Created At"," ",Y.model_info.created_at?new Date(Y.model_info.created_at).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"Not Set"]}),(0,c.jsxs)("div",{className:"flex items-center gap-x-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})}),"Created By ",Y.model_info.created_by||"Not Set"]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Model Settings"}),(0,c.jsxs)("div",{className:"flex gap-2",children:[eI&&eC&&!eg&&(0,c.jsx)(b.Z,{variant:"primary",onClick:()=>ew(!0),className:"flex items-center",children:"Edit Auto Router"}),eC&&!eg&&(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>ej(!0),className:"flex items-center",children:"Edit Model"})]})]}),er?(0,c.jsx)(A.Z,{form:ea,onFinish:eE,initialValues:{model_name:er.model_name,litellm_model_name:er.litellm_model_name,api_base:er.litellm_params.api_base,custom_llm_provider:er.litellm_params.custom_llm_provider,organization:er.litellm_params.organization,tpm:er.litellm_params.tpm,rpm:er.litellm_params.rpm,max_retries:er.litellm_params.max_retries,timeout:er.litellm_params.timeout,stream_timeout:er.litellm_params.stream_timeout,input_cost:er.litellm_params.input_cost_per_token?1e6*er.litellm_params.input_cost_per_token:(null===(i=er.model_info)||void 0===i?void 0:i.input_cost_per_token)*1e6||null,output_cost:(null===(n=er.litellm_params)||void 0===n?void 0:n.output_cost_per_token)?1e6*er.litellm_params.output_cost_per_token:(null===(o=er.model_info)||void 0===o?void 0:o.output_cost_per_token)*1e6||null,cache_control:null!==(m=er.litellm_params)&&void 0!==m&&!!m.cache_control_injection_points,cache_control_injection_points:(null===(u=er.litellm_params)||void 0===u?void 0:u.cache_control_injection_points)||[],model_access_group:Array.isArray(null===(x=er.model_info)||void 0===x?void 0:x.access_groups)?er.model_info.access_groups:[],guardrails:Array.isArray(null===(h=er.litellm_params)||void 0===h?void 0:h.guardrails)?er.litellm_params.guardrails:[]},layout:"vertical",onValuesChange:()=>ex(!0),children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Model Name"}),eg?(0,c.jsx)(A.Z.Item,{name:"model_name",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter model name"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:er.model_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"LiteLLM Model Name"}),eg?(0,c.jsx)(A.Z.Item,{name:"litellm_model_name",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter LiteLLM model name"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:er.litellm_model_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Input Cost (per 1M tokens)"}),eg?(0,c.jsx)(A.Z.Item,{name:"input_cost",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter input cost"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null==er?void 0:null===(p=er.litellm_params)||void 0===p?void 0:p.input_cost_per_token)?((null===(g=er.litellm_params)||void 0===g?void 0:g.input_cost_per_token)*1e6).toFixed(4):(null==er?void 0:null===(f=er.model_info)||void 0===f?void 0:f.input_cost_per_token)?(1e6*er.model_info.input_cost_per_token).toFixed(4):null})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Output Cost (per 1M tokens)"}),eg?(0,c.jsx)(A.Z.Item,{name:"output_cost",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter output cost"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null==er?void 0:null===(v=er.litellm_params)||void 0===v?void 0:v.output_cost_per_token)?(1e6*er.litellm_params.output_cost_per_token).toFixed(4):(null==er?void 0:null===(N=er.model_info)||void 0===N?void 0:N.output_cost_per_token)?(1e6*er.model_info.output_cost_per_token).toFixed(4):null})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"API Base"}),eg?(0,c.jsx)(A.Z.Item,{name:"api_base",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter API base"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(Z=er.litellm_params)||void 0===Z?void 0:Z.api_base)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Custom LLM Provider"}),eg?(0,c.jsx)(A.Z.Item,{name:"custom_llm_provider",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter custom LLM provider"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(w=er.litellm_params)||void 0===w?void 0:w.custom_llm_provider)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization"}),eg?(0,c.jsx)(A.Z.Item,{name:"organization",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter organization"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(C=er.litellm_params)||void 0===C?void 0:C.organization)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"TPM (Tokens per Minute)"}),eg?(0,c.jsx)(A.Z.Item,{name:"tpm",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter TPM"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(E=er.litellm_params)||void 0===E?void 0:E.tpm)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"RPM (Requests per Minute)"}),eg?(0,c.jsx)(A.Z.Item,{name:"rpm",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter RPM"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(M=er.litellm_params)||void 0===M?void 0:M.rpm)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Max Retries"}),eg?(0,c.jsx)(A.Z.Item,{name:"max_retries",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter max retries"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(D=er.litellm_params)||void 0===D?void 0:D.max_retries)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Timeout (seconds)"}),eg?(0,c.jsx)(A.Z.Item,{name:"timeout",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter timeout"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(F=er.litellm_params)||void 0===F?void 0:F.timeout)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Stream Timeout (seconds)"}),eg?(0,c.jsx)(A.Z.Item,{name:"stream_timeout",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter stream timeout"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(R=er.litellm_params)||void 0===R?void 0:R.stream_timeout)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Model Access Groups"}),eg?(0,c.jsx)(A.Z.Item,{name:"model_access_group",className:"mb-0",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],maxTagCount:"responsive",allowClear:!0,style:{width:"100%"},options:null==el?void 0:el.map(e=>({value:e,label:e}))})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(z=er.model_info)||void 0===z?void 0:z.access_groups)?Array.isArray(er.model_info.access_groups)?er.model_info.access_groups.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:er.model_info.access_groups.map((e,s)=>(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-blue-100 text-blue-800",children:e},s))}):"No groups assigned":er.model_info.access_groups:"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Apply safety guardrails to this model to filter content or enforce policies",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),eg?(0,c.jsx)(A.Z.Item,{name:"guardrails",className:"mb-0",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing guardrails or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],maxTagCount:"responsive",allowClear:!0,style:{width:"100%"},options:ek.map(e=>({value:e,label:e}))})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(U=er.litellm_params)||void 0===U?void 0:U.guardrails)?Array.isArray(er.litellm_params.guardrails)?er.litellm_params.guardrails.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:er.litellm_params.guardrails.map((e,s)=>(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-green-100 text-green-800",children:e},s))}):"No guardrails assigned":er.litellm_params.guardrails:"Not Set"})]}),eg?(0,c.jsx)(tC,{form:ea,showCacheControl:ey,onCacheControlChange:e=>eb(e)}):(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Cache Control"}),(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(q=er.litellm_params)||void 0===q?void 0:q.cache_control_injection_points)?(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{children:"Enabled"}),(0,c.jsx)("div",{className:"mt-2",children:er.litellm_params.cache_control_injection_points.map((e,s)=>(0,c.jsxs)("div",{className:"text-sm text-gray-600 mb-1",children:["Location: ",e.location,",",e.role&&(0,c.jsxs)("span",{children:[" Role: ",e.role]}),void 0!==e.index&&(0,c.jsxs)("span",{children:[" Index: ",e.index]})]},s))})]}):"Disabled"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Model Info"}),eg?(0,c.jsx)(A.Z.Item,{name:"model_info",className:"mb-0",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{"gpt-4": 100, "claude-v1": 200}',defaultValue:JSON.stringify(Y.model_info,null,2)})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify(er.model_info,null,2)})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team ID"}),(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:Y.model_info.team_id||"Not Set"})]})]}),eg&&(0,c.jsxs)("div",{className:"mt-6 flex justify-end gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{ea.resetFields(),ex(!1),ej(!1)},children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",onClick:()=>ea.submit(),loading:eh,children:"Save Changes"})]})]})}):(0,c.jsx)(k.Z,{children:"Loading..."})]})]}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(G.Z,{children:(0,c.jsx)("pre",{className:"bg-gray-100 p-4 rounded text-xs overflow-auto",children:JSON.stringify(Y,null,2)})})})]})]}),en&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Model"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this model?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(L.ZP,{onClick:eL,className:"ml-2",danger:!0,children:"Delete"}),(0,c.jsx)(L.ZP,{onClick:()=>ec(!1),children:"Cancel"})]})]})]})}),ed&&!eA?(0,c.jsx)(tZ,{isVisible:ed,onCancel:()=>em(!1),onAddCredential:eT,existingCredential:ef,setIsCredentialModalOpen:em}):(0,c.jsx)(T.Z,{open:ed,onCancel:()=>em(!1),title:"Using Existing Credential",children:(0,c.jsx)(k.Z,{children:Y.litellm_params.litellm_credential_name})}),(0,c.jsx)(tM,{isVisible:eZ,onCancel:()=>ew(!1),onSuccess:e=>{ei(e),et&&et(e)},modelData:er||Y,accessToken:J||"",userRole:Q||""})]})}var tD=e=>{let{selectedProvider:s,providerModels:t,getPlaceholder:l}=e,a=A.Z.useFormInstance(),r=e=>{let t=e.target.value,l=(a.getFieldValue("model_mappings")||[]).map(e=>"custom"===e.public_name||"custom"===e.litellm_model?s===sW.Cl.Azure?{public_name:t,litellm_model:"azure/".concat(t)}:{public_name:t,litellm_model:t}:e);a.setFieldsValue({model_mappings:l})};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(A.Z.Item,{label:"LiteLLM Model Name(s)",tooltip:"The model name LiteLLM will send to the LLM API",className:"mb-0",children:[(0,c.jsx)(A.Z.Item,{name:"model",rules:[{required:!0,message:"Please enter ".concat(s===sW.Cl.Azure?"a deployment name":"at least one model",".")}],noStyle:!0,children:s===sW.Cl.Azure||s===sW.Cl.OpenAI_Compatible||s===sW.Cl.Ollama?(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(_.Z,{placeholder:l(s),onChange:s===sW.Cl.Azure?e=>{let s=e.target.value,t=s?[{public_name:s,litellm_model:"azure/".concat(s)}]:[];a.setFieldsValue({model:s,model_mappings:t})}:void 0})}):t.length>0?(0,c.jsx)(I.default,{mode:"multiple",allowClear:!0,showSearch:!0,placeholder:"Select models",onChange:e=>{let t=Array.isArray(e)?e:[e];if(t.includes("all-wildcard"))a.setFieldsValue({model_name:void 0,model_mappings:[]});else if(JSON.stringify(a.getFieldValue("model"))!==JSON.stringify(t)){let e=t.map(e=>s===sW.Cl.Azure?{public_name:e,litellm_model:"azure/".concat(e)}:{public_name:e,litellm_model:e});a.setFieldsValue({model:t,model_mappings:e})}},optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{label:"Custom Model Name (Enter below)",value:"custom"},{label:"All ".concat(s," Models (Wildcard)"),value:"all-wildcard"},...t.map(e=>({label:e,value:e}))],style:{width:"100%"}}):(0,c.jsx)(_.Z,{placeholder:l(s)})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.model!==s.model,children:e=>{let{getFieldValue:t}=e,l=t("model")||[];return(Array.isArray(l)?l:[l]).includes("custom")&&(0,c.jsx)(A.Z.Item,{name:"custom_model_name",rules:[{required:!0,message:"Please enter a custom model name."}],className:"mt-2",children:(0,c.jsx)(_.Z,{placeholder:s===sW.Cl.Azure?"Enter Azure deployment name":"Enter custom model name",onChange:r})})}})]}),(0,c.jsxs)(s0.Z,{children:[(0,c.jsx)(s1.Z,{span:10}),(0,c.jsx)(s1.Z,{span:14,children:(0,c.jsx)(k.Z,{className:"mb-3 mt-1",children:s===sW.Cl.Azure?"Your deployment name will be saved as the public model name, and LiteLLM will use 'azure/deployment-name' internally":"The model name LiteLLM will send to the LLM API"})})]})]})},tF=t(67187);let tR=e=>{let{content:s,children:t,width:l="auto",className:a=""}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)("top"),m=(0,d.useRef)(null),u=()=>{if(m.current){let e=m.current.getBoundingClientRect(),s=e.top,t=window.innerHeight-e.bottom;s<300&&t>300?o("bottom"):o("top")}};return(0,c.jsxs)("div",{className:"relative inline-block",ref:m,children:[t||(0,c.jsx)(tF.Z,{className:"ml-1 text-gray-500 cursor-help",onMouseEnter:()=>{u(),i(!0)},onMouseLeave:()=>i(!1)}),r&&(0,c.jsxs)("div",{className:"absolute left-1/2 -translate-x-1/2 z-50 bg-black/90 text-white p-2 rounded-md text-sm font-normal shadow-lg ".concat(a),style:{["top"===n?"bottom":"top"]:"100%",width:l,marginBottom:"top"===n?"8px":"0",marginTop:"bottom"===n?"8px":"0"},children:[s,(0,c.jsx)("div",{className:"absolute left-1/2 -translate-x-1/2 w-0 h-0",style:{top:"top"===n?"100%":"auto",bottom:"bottom"===n?"100%":"auto",borderTop:"top"===n?"6px solid rgba(0, 0, 0, 0.9)":"6px solid transparent",borderBottom:"bottom"===n?"6px solid rgba(0, 0, 0, 0.9)":"6px solid transparent",borderLeft:"6px solid transparent",borderRight:"6px solid transparent"}})]})]})};var tz=()=>{let e=A.Z.useFormInstance(),[s,t]=(0,d.useState)(0),l=A.Z.useWatch("model",e)||[],a=Array.isArray(l)?l:[l],r=A.Z.useWatch("custom_model_name",e),i=!a.includes("all-wildcard"),n=A.Z.useWatch("custom_llm_provider",e);if((0,d.useEffect)(()=>{if(r&&a.includes("custom")){let s=(e.getFieldValue("model_mappings")||[]).map(e=>"custom"===e.public_name||"custom"===e.litellm_model?n===sW.Cl.Azure?{public_name:r,litellm_model:"azure/".concat(r)}:{public_name:r,litellm_model:r}:e);e.setFieldValue("model_mappings",s),t(e=>e+1)}},[r,a,n,e]),(0,d.useEffect)(()=>{if(a.length>0&&!a.includes("all-wildcard")){let s=e.getFieldValue("model_mappings")||[];if(s.length!==a.length||!a.every(e=>s.some(s=>"custom"===e?"custom"===s.litellm_model||s.litellm_model===r:n===sW.Cl.Azure?s.litellm_model==="azure/".concat(e):s.litellm_model===e))){let s=a.map(e=>"custom"===e&&r?n===sW.Cl.Azure?{public_name:r,litellm_model:"azure/".concat(r)}:{public_name:r,litellm_model:r}:n===sW.Cl.Azure?{public_name:e,litellm_model:"azure/".concat(e)}:{public_name:e,litellm_model:e});e.setFieldValue("model_mappings",s),t(e=>e+1)}}},[a,r,n,e]),!i)return null;let o=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"mb-2 font-normal",children:"The name you specify in your API calls to LiteLLM Proxy"}),(0,c.jsxs)("div",{className:"mb-2 font-normal",children:[(0,c.jsx)("strong",{children:"Example:"})," If you name your public model"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:"example-name"}),", and choose"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:"openai/qwen-plus-latest"})," as the LiteLLM model"]}),(0,c.jsxs)("div",{className:"mb-2 font-normal",children:[(0,c.jsx)("strong",{children:"Usage:"})," You make an API call to the LiteLLM proxy with"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:'model = "example-name"'})]}),(0,c.jsxs)("div",{className:"font-normal",children:[(0,c.jsx)("strong",{children:"Result:"})," LiteLLM sends"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:"qwen-plus-latest"})," to the provider"]})]}),m=(0,c.jsx)("div",{children:"The model name LiteLLM will send to the LLM API"}),u=[{title:(0,c.jsxs)("span",{className:"flex items-center",children:["Public Model Name",(0,c.jsx)(tR,{content:o,width:"500px"})]}),dataIndex:"public_name",key:"public_name",render:(s,t,l)=>(0,c.jsx)(eG.o,{value:s,onChange:s=>{let t=[...e.getFieldValue("model_mappings")];t[l].public_name=s.target.value,e.setFieldValue("model_mappings",t)}})},{title:(0,c.jsxs)("span",{className:"flex items-center",children:["LiteLLM Model Name",(0,c.jsx)(tR,{content:m,width:"360px"})]}),dataIndex:"litellm_model",key:"litellm_model"}];return(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(A.Z.Item,{label:"Model Mappings",name:"model_mappings",tooltip:"Map public model names to LiteLLM model names for load balancing",labelCol:{span:10},wrapperCol:{span:16},labelAlign:"left",rules:[{required:!0,validator:async(e,s)=>{if(!s||0===s.length)throw Error("At least one model mapping is required");if(s.filter(e=>!e.public_name||""===e.public_name.trim()).length>0)throw Error("All model mappings must have valid public names")}}],children:(0,c.jsx)(em.Z,{dataSource:e.getFieldValue("model_mappings"),columns:u,pagination:!1,size:"small"},s)})})},tU=t(90464);let{Link:tq}=en.default;var tV=e=>{let{showAdvancedSettings:s,setShowAdvancedSettings:t,teams:l,guardrailsList:a}=e,[r]=A.Z.useForm(),[i,n]=d.useState(!1),[o,m]=d.useState("per_token"),[u,x]=d.useState(!1),h=(e,s)=>s&&(isNaN(Number(s))||0>Number(s))?Promise.reject("Please enter a valid positive number"):Promise.resolve(),p=(e,s)=>{if(!s)return Promise.resolve();try{return JSON.parse(s),Promise.resolve()}catch(e){return Promise.reject("Please enter valid JSON")}};return(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)(N.Z,{className:"mt-2 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Advanced Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsxs)("div",{className:"bg-white rounded-lg",children:[(0,c.jsx)(A.Z.Item,{label:"Custom Pricing",name:"custom_pricing",valuePropName:"checked",className:"mb-4",children:(0,c.jsx)(eK.Z,{onChange:e=>{n(e),e||r.setFieldsValue({input_cost_per_token:void 0,output_cost_per_token:void 0,input_cost_per_second:void 0})},className:"bg-gray-600"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Apply safety guardrails to this key to filter content or enforce policies",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",className:"mt-4",help:"Select existing guardrails. Go to 'Guardrails' tab to create new guardrails.",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},placeholder:"Select or enter guardrails",options:a.map(e=>({value:e,label:e}))})}),i&&(0,c.jsxs)("div",{className:"ml-6 pl-4 border-l-2 border-gray-200",children:[(0,c.jsx)(A.Z.Item,{label:"Pricing Model",name:"pricing_model",className:"mb-4",children:(0,c.jsx)(I.default,{defaultValue:"per_token",onChange:e=>m(e),options:[{value:"per_token",label:"Per Million Tokens"},{value:"per_second",label:"Per Second"}]})}),"per_token"===o?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Input Cost (per 1M tokens)",name:"input_cost_per_token",rules:[{validator:h}],className:"mb-4",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Output Cost (per 1M tokens)",name:"output_cost_per_token",rules:[{validator:h}],className:"mb-4",children:(0,c.jsx)(_.Z,{})})]}):(0,c.jsx)(A.Z.Item,{label:"Cost Per Second",name:"input_cost_per_second",rules:[{validator:h}],className:"mb-4",children:(0,c.jsx)(_.Z,{})})]}),(0,c.jsx)(A.Z.Item,{label:"Use in pass through routes",name:"use_in_pass_through",valuePropName:"checked",className:"mb-4 mt-4",tooltip:(0,c.jsxs)("span",{children:["Allow using these credentials in pass through routes."," ",(0,c.jsx)(tq,{href:"https://docs.litellm.ai/docs/pass_through/vertex_ai",target:"_blank",children:"Learn more"})]}),children:(0,c.jsx)(eK.Z,{onChange:e=>{let s=r.getFieldValue("litellm_extra_params");try{let t=s?JSON.parse(s):{};e?t.use_in_pass_through=!0:delete t.use_in_pass_through,Object.keys(t).length>0?r.setFieldValue("litellm_extra_params",JSON.stringify(t,null,2)):r.setFieldValue("litellm_extra_params","")}catch(s){e?r.setFieldValue("litellm_extra_params",JSON.stringify({use_in_pass_through:!0},null,2)):r.setFieldValue("litellm_extra_params","")}},className:"bg-gray-600"})}),(0,c.jsx)(tC,{form:r,showCacheControl:u,onCacheControlChange:e=>{if(x(e),!e){let e=r.getFieldValue("litellm_extra_params");try{let s=e?JSON.parse(e):{};delete s.cache_control_injection_points,Object.keys(s).length>0?r.setFieldValue("litellm_extra_params",JSON.stringify(s,null,2)):r.setFieldValue("litellm_extra_params","")}catch(e){r.setFieldValue("litellm_extra_params","")}}}}),(0,c.jsx)(A.Z.Item,{label:"LiteLLM Params",name:"litellm_extra_params",tooltip:"Optional litellm params used for making a litellm.completion() call.",className:"mb-4 mt-4",rules:[{validator:p}],children:(0,c.jsx)(tU.Z,{rows:4,placeholder:'{ "rpm": 100, "timeout": 0, "stream_timeout": 0 }'})}),(0,c.jsxs)(s0.Z,{className:"mb-4",children:[(0,c.jsx)(s1.Z,{span:10}),(0,c.jsx)(s1.Z,{span:10,children:(0,c.jsxs)(k.Z,{className:"text-gray-600 text-sm",children:["Pass JSON of litellm supported params"," ",(0,c.jsx)(tq,{href:"https://docs.litellm.ai/docs/completion/input",target:"_blank",children:"litellm.completion() call"})]})})]}),(0,c.jsx)(A.Z.Item,{label:"Model Info",name:"model_info_params",tooltip:"Optional model info params. Returned when calling `/model/info` endpoint.",className:"mb-0",rules:[{validator:p}],children:(0,c.jsx)(tU.Z,{rows:4,placeholder:'{ "mode": "chat" }'})})]})})]})})},tB=t(29),tK=t.n(tB),tG=t(23639);let{Text:tH}=en.default;var tY=e=>{let{formValues:s,accessToken:t,testMode:l,modelName:a="this model",onClose:r,onTestComplete:i}=e,[n,o]=d.useState(null),[m,u]=d.useState(null),[x,h]=d.useState(null),[p,g]=d.useState(!0),[f,v]=d.useState(!1),[y,b]=d.useState(!1),_=async()=>{g(!0),b(!1),o(null),u(null),h(null),v(!1),await new Promise(e=>setTimeout(e,100));try{console.log("Testing connection with form values:",s);let a=await s$(s,t,null);if(!a){console.log("No result from prepareModelAddRequest"),o("Failed to prepare model data. Please check your form inputs."),v(!1),g(!1);return}console.log("Result from prepareModelAddRequest:",a);let{litellmParamsObj:r,modelInfoObj:i,modelName:n}=a[0],c=await (0,j.testConnectionRequest)(t,r,i,null==i?void 0:i.mode);if("success"===c.status)eo.Z.success("Connection test successful!"),o(null),v(!0);else{var e,l;let s=(null===(e=c.result)||void 0===e?void 0:e.error)||c.message||"Unknown error";o(s),u(r),h(null===(l=c.result)||void 0===l?void 0:l.raw_request_typed_dict),v(!1)}}catch(e){console.error("Test connection error:",e),o(e instanceof Error?e.message:String(e)),v(!1)}finally{g(!1),i&&i()}};d.useEffect(()=>{let e=setTimeout(()=>{_()},200);return()=>clearTimeout(e)},[]);let N=e=>e?e.split("stack trace:")[0].trim().replace(/^litellm\.(.*?)Error: /,""):"Unknown error",Z="string"==typeof n?N(n):(null==n?void 0:n.message)?N(n.message):"Unknown error",w=x?((e,s,t)=>{let l=JSON.stringify(s,null,2).split("\n").map(e=>" ".concat(e)).join("\n"),a=Object.entries(t).map(e=>{let[s,t]=e;return"-H '".concat(s,": ").concat(t,"'")}).join(" \\\n ");return"curl -X POST \\\n ".concat(e," \\\n ").concat(a?"".concat(a," \\\n "):"","-H 'Content-Type: application/json' \\\n -d '{\n").concat(l,"\n }'")})(x.raw_request_api_base,x.raw_request_body,x.raw_request_headers||{}):"";return(0,c.jsxs)("div",{style:{padding:"24px",borderRadius:"8px",backgroundColor:"#fff"},children:[p?(0,c.jsxs)("div",{style:{textAlign:"center",padding:"32px 20px"},className:"jsx-dc9a0e2d897fe63b",children:[(0,c.jsx)("div",{style:{marginBottom:"16px"},className:"jsx-dc9a0e2d897fe63b loading-spinner",children:(0,c.jsx)("div",{style:{border:"3px solid #f3f3f3",borderTop:"3px solid #1890ff",borderRadius:"50%",width:"30px",height:"30px",animation:"spin 1s linear infinite",margin:"0 auto"},className:"jsx-dc9a0e2d897fe63b"})}),(0,c.jsxs)(tH,{style:{fontSize:"16px"},children:["Testing connection to ",a,"..."]}),(0,c.jsx)(tK(),{id:"dc9a0e2d897fe63b",children:"@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}"})]}):f?(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"32px 20px"},children:[(0,c.jsx)("div",{style:{color:"#52c41a",fontSize:"24px",display:"flex",alignItems:"center"},children:(0,c.jsx)("svg",{viewBox:"64 64 896 896",focusable:"false","data-icon":"check-circle",width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true",children:(0,c.jsx)("path",{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z"})})}),(0,c.jsxs)(tH,{type:"success",style:{fontSize:"18px",fontWeight:500,marginLeft:"10px"},children:["Connection to ",a," successful!"]})]}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",marginBottom:"20px"},children:[(0,c.jsx)(eg.Z,{style:{color:"#ff4d4f",fontSize:"24px",marginRight:"12px"}}),(0,c.jsxs)(tH,{type:"danger",style:{fontSize:"18px",fontWeight:500},children:["Connection to ",a," failed"]})]}),(0,c.jsxs)("div",{style:{backgroundColor:"#fff2f0",border:"1px solid #ffccc7",borderRadius:"8px",padding:"16px",marginBottom:"20px",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.03)"},children:[(0,c.jsxs)(tH,{strong:!0,style:{display:"block",marginBottom:"8px"},children:["Error:"," "]}),(0,c.jsx)(tH,{type:"danger",style:{fontSize:"14px",lineHeight:"1.5"},children:Z}),n&&(0,c.jsx)("div",{style:{marginTop:"12px"},children:(0,c.jsx)(L.ZP,{type:"link",onClick:()=>b(!y),style:{paddingLeft:0,height:"auto"},children:y?"Hide Details":"Show Details"})})]}),y&&(0,c.jsxs)("div",{style:{marginBottom:"20px"},children:[(0,c.jsx)(tH,{strong:!0,style:{display:"block",marginBottom:"8px",fontSize:"15px"},children:"Troubleshooting Details"}),(0,c.jsx)("pre",{style:{backgroundColor:"#f5f5f5",padding:"16px",borderRadius:"8px",fontSize:"13px",maxHeight:"200px",overflow:"auto",border:"1px solid #e8e8e8",lineHeight:"1.5"},children:"string"==typeof n?n:JSON.stringify(n,null,2)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(tH,{strong:!0,style:{display:"block",marginBottom:"8px",fontSize:"15px"},children:"API Request"}),(0,c.jsx)("pre",{style:{backgroundColor:"#f5f5f5",padding:"16px",borderRadius:"8px",fontSize:"13px",maxHeight:"250px",overflow:"auto",border:"1px solid #e8e8e8",lineHeight:"1.5"},children:w||"No request data available"}),(0,c.jsx)(L.ZP,{style:{marginTop:"8px"},icon:(0,c.jsx)(tG.Z,{}),onClick:()=>{navigator.clipboard.writeText(w||""),eo.Z.success("Copied to clipboard")},children:"Copy to Clipboard"})]})]})}),(0,c.jsx)(K.Z,{style:{margin:"24px 0 16px"}}),(0,c.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:(0,c.jsx)(L.ZP,{type:"link",href:"https://docs.litellm.ai/docs/providers",target:"_blank",icon:(0,c.jsx)(V.Z,{}),children:"View Documentation"})})]})};let tJ=[{value:"chat",label:"Chat - /chat/completions"},{value:"completion",label:"Completion - /completions"},{value:"embedding",label:"Embedding - /embeddings"},{value:"audio_speech",label:"Audio Speech - /audio/speech"},{value:"audio_transcription",label:"Audio Transcription - /audio/transcriptions"},{value:"image_generation",label:"Image Generation - /images/generations"},{value:"rerank",label:"Rerank - /rerank"},{value:"realtime",label:"Realtime - /realtime"},{value:"batch",label:"Batch - /batch"}];var tW=t(92858);let t$=async(e,s,t,l)=>{try{console.log("=== AUTO ROUTER SUBMIT HANDLER CALLED ==="),console.log("handling auto router submit for formValues:",e),console.log("Access token:",s?"Present":"Missing"),console.log("Form:",t?"Present":"Missing"),console.log("Callback:",l?"Present":"Missing");let a={model_name:e.auto_router_name,litellm_params:{model:"auto_router/".concat(e.auto_router_name),auto_router_config:JSON.stringify(e.auto_router_config),auto_router_default_model:e.auto_router_default_model},model_info:{}};e.auto_router_embedding_model&&"custom"!==e.auto_router_embedding_model?a.litellm_params.auto_router_embedding_model=e.auto_router_embedding_model:e.custom_embedding_model&&(a.litellm_params.auto_router_embedding_model=e.custom_embedding_model),e.team_id&&(a.model_info.team_id=e.team_id),e.model_access_group&&e.model_access_group.length>0&&(a.model_info.access_groups=e.model_access_group),console.log("Auto router configuration to be created:",a),console.log("Auto router config (stringified):",a.litellm_params.auto_router_config),console.log("Calling modelCreateCall with:",{accessToken:s?"Present":"Missing",config:a});let r=await (0,j.modelCreateCall)(s,a);console.log("response for auto router create call:",r),t.resetFields()}catch(e){console.error("Failed to add auto router:",e),eo.Z.fromBackend("Failed to add auto router: "+e)}},{Title:tQ,Link:tX}=en.default;var t0=e=>{let{form:s,handleOk:t,accessToken:l,userRole:a}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(""),[x,h]=(0,d.useState)([]),[p,g]=(0,d.useState)([]),[f,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(!1),[N,Z]=(0,d.useState)(null);(0,d.useEffect)(()=>{(async()=>{h((await (0,j.modelAvailableCall)(l,"","",!1,null,!0,!0)).data.map(e=>e.id))})()},[l]),(0,d.useEffect)(()=>{(async()=>{try{let e=await eq(l);console.log("Fetched models for auto router:",e),g(e)}catch(e){console.error("Error fetching model info for auto router:",e)}})()},[l]);let w=eI.ZL.includes(a),S=async()=>{o(!0),u("test-".concat(Date.now())),i(!0)},C=()=>{console.log("Auto router submit triggered!"),console.log("Router config:",N);let e=s.getFieldsValue();if(console.log("Form values:",e),!e.auto_router_name){eo.Z.fromBackend("Please enter an Auto Router Name");return}if(!e.auto_router_default_model){eo.Z.fromBackend("Please select a Default Model");return}if(s.setFieldsValue({custom_llm_provider:"auto_router",model:e.auto_router_name,api_key:"not_required_for_auto_router"}),!N||!N.routes||0===N.routes.length){eo.Z.fromBackend("Please configure at least one route for the auto router");return}if(N.routes.filter(e=>!e.name||!e.description||0===e.utterances.length).length>0){eo.Z.fromBackend("Please ensure all routes have a target model, description, and at least one utterance");return}s.validateFields().then(e=>{console.log("Form validation passed, submitting with values:",e);let a={...e,auto_router_config:N};console.log("Final submit values:",a),t$(a,l,s,t)}).catch(e=>{console.error("Validation failed:",e);let s=e.errorFields||[];if(s.length>0){let e=s.map(e=>{let s=e.name[0];return({auto_router_name:"Auto Router Name",auto_router_default_model:"Default Model",auto_router_embedding_model:"Embedding Model"})[s]||s});eo.Z.fromBackend("Please fill in the following required fields: ".concat(e.join(", ")))}else eo.Z.fromBackend("Please fill in all required fields")})};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(tQ,{level:2,children:"Add Auto Router"}),(0,c.jsx)(k.Z,{className:"text-gray-600 mb-6",children:"Create an auto router with intelligent routing logic that automatically selects the best model based on user input patterns and semantic matching."}),(0,c.jsx)(tA.Z,{children:(0,c.jsxs)(A.Z,{form:s,onFinish:C,labelCol:{span:10},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Auto router name is required"}],label:"Auto Router Name",name:"auto_router_name",tooltip:"Unique name for this auto router configuration",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(_.Z,{placeholder:"e.g., auto_router_1, smart_routing"})}),(0,c.jsx)("div",{className:"w-full mb-4",children:(0,c.jsx)(tP,{modelInfo:p,value:N,onChange:e=>{Z(e),s.setFieldValue("auto_router_config",e)}})}),(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Default model is required"}],label:"Default Model",name:"auto_router_default_model",tooltip:"Fallback model to use when auto routing logic cannot determine the best model",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(I.default,{placeholder:"Select a default model",onChange:e=>{v("custom"===e)},options:[...Array.from(new Set(p.map(e=>e.model_group))).map(e=>({value:e,label:e})),{value:"custom",label:"Enter custom model name"}],style:{width:"100%"},showSearch:!0})}),(0,c.jsx)(A.Z.Item,{label:"Embedding Model",name:"auto_router_embedding_model",tooltip:"Optional: Embedding model to use for semantic routing decisions",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(I.default,{value:s.getFieldValue("auto_router_embedding_model"),placeholder:"Select an embedding model (optional)",onChange:e=>{b("custom"===e),s.setFieldValue("auto_router_embedding_model",e)},options:[...Array.from(new Set(p.map(e=>e.model_group))).map(e=>({value:e,label:e})),{value:"custom",label:"Enter custom model name"}],style:{width:"100%"},showSearch:!0,allowClear:!0})}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"Additional Settings"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),w&&(0,c.jsx)(A.Z.Item,{label:"Model Access Group",name:"model_access_group",className:"mb-4",tooltip:"Use model access groups to control who can access this auto router",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],options:x.map(e=>({value:e,label:e})),maxTagCount:"responsive",allowClear:!0})}),(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(en.default.Link,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{className:"space-x-2",children:[(0,c.jsx)(L.ZP,{onClick:S,loading:n,children:"Test Connect"}),(0,c.jsx)(L.ZP,{onClick:()=>{console.log("Add Auto Router button clicked!"),console.log("Current router config:",N),console.log("Current form values:",s.getFieldsValue()),C()},children:"Add Auto Router"})]})]})]})}),(0,c.jsx)(T.Z,{title:"Connection Test Results",open:r,onCancel:()=>{i(!1),o(!1)},footer:[(0,c.jsx)(L.ZP,{onClick:()=>{i(!1),o(!1)},children:"Close"},"close")],width:700,children:r&&(0,c.jsx)(tY,{formValues:s.getFieldsValue(),accessToken:l,testMode:"chat",modelName:s.getFieldValue("auto_router_name"),onClose:()=>{i(!1),o(!1)},onTestComplete:()=>o(!1)},m)})]})};let{Title:t1,Link:t2}=en.default;var t4=e=>{let{form:s,handleOk:t,selectedProvider:l,setSelectedProvider:a,providerModels:r,setProviderModelsFn:i,getPlaceholder:n,uploadProps:o,showAdvancedSettings:m,setShowAdvancedSettings:u,teams:x,credentials:h,accessToken:p,userRole:g,premiumUser:f}=e,[v]=A.Z.useForm(),[y,b]=(0,d.useState)("chat"),[_,N]=(0,d.useState)(!1),[Z,w]=(0,d.useState)(!1),[S,C]=(0,d.useState)([]),[E,P]=(0,d.useState)("");(0,d.useEffect)(()=>{(async()=>{try{let e=(await (0,j.getGuardrailsList)(p)).guardrails.map(e=>e.guardrail_name);C(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})()},[p]);let M=async()=>{w(!0),P("test-".concat(Date.now())),N(!0)},[O,D]=(0,d.useState)(!1),[F,R]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{R((await (0,j.modelAvailableCall)(p,"","",!1,null,!0,!0)).data.map(e=>e.id))})()},[p]);let z=eI.ZL.includes(g);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(e7.Z,{className:"w-full",children:[(0,c.jsxs)(e9.Z,{className:"mb-4",children:[(0,c.jsx)(e8.Z,{children:"Add Model"}),(0,c.jsx)(e8.Z,{children:"Add Auto Router"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsx)(t1,{level:2,children:"Add Model"}),(0,c.jsx)(tA.Z,{children:(0,c.jsx)(A.Z,{form:s,onFinish:e=>{console.log("\uD83D\uDD25 Form onFinish triggered with values:",e),t()},onFinishFailed:e=>{console.log("\uD83D\uDCA5 Form onFinishFailed triggered:",e)},labelCol:{span:10},wrapperCol:{span:16},labelAlign:"left",children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Required"}],label:"Provider:",name:"custom_llm_provider",tooltip:"E.g. OpenAI, Azure OpenAI, Anthropic, Bedrock, etc.",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(I.default,{showSearch:!0,value:l,onChange:e=>{a(e),i(e),s.setFieldsValue({model:[],model_name:void 0})},children:Object.entries(sW.Cl).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:s,children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:sW.cd[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(tD,{selectedProvider:l,providerModels:r,getPlaceholder:n}),(0,c.jsx)(tz,{}),(0,c.jsx)(A.Z.Item,{label:"Mode",name:"mode",className:"mb-1",children:(0,c.jsx)(I.default,{style:{width:"100%"},value:y,onChange:e=>b(e),options:tJ})}),(0,c.jsxs)(s0.Z,{children:[(0,c.jsx)(s1.Z,{span:10}),(0,c.jsx)(s1.Z,{span:10,children:(0,c.jsxs)(k.Z,{className:"mb-5 mt-1",children:[(0,c.jsx)("strong",{children:"Optional"})," - LiteLLM endpoint to use when health checking this model"," ",(0,c.jsx)(t2,{href:"https://docs.litellm.ai/docs/proxy/health#health",target:"_blank",children:"Learn more"})]})})]}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(en.default.Text,{className:"text-sm text-gray-500 mb-2",children:"Either select existing credentials OR enter new provider credentials below"})}),(0,c.jsx)(A.Z.Item,{label:"Existing Credentials",name:"litellm_credential_name",children:(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Select or search for existing credentials",optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{value:null,label:"None"},...h.map(e=>({value:e.credential_name,label:e.credential_name}))],allowClear:!0})}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"OR"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.litellm_credential_name!==s.litellm_credential_name||e.provider!==s.provider,children:e=>{let{getFieldValue:s}=e,t=s("litellm_credential_name");return(console.log("\uD83D\uDD11 Credential Name Changed:",t),t)?(0,c.jsx)("div",{className:"text-gray-500 text-sm text-center",children:"Using existing credentials - no additional provider fields needed"}):(0,c.jsx)(s5,{selectedProvider:l,uploadProps:o})}}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"Additional Model Info Settings"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),(0,c.jsx)(A.Z.Item,{label:"Team-BYOK Model",tooltip:"Only use this model + credential combination for this team. Useful when teams want to onboard their own OpenAI keys.",className:"mb-4",children:(0,c.jsx)(B.Z,{title:f?"":"This is an enterprise-only feature. Upgrade to premium to restrict model+credential combinations to a specific team.",placement:"top",children:(0,c.jsx)(tW.Z,{checked:O,onChange:e=>{D(e),e||s.setFieldValue("team_id",void 0)},disabled:!f})})}),O&&(0,c.jsx)(A.Z.Item,{label:"Select Team",name:"team_id",className:"mb-4",tooltip:"Only keys for this team will be able to call this model.",rules:[{required:O&&!z,message:"Please select a team."}],children:(0,c.jsx)(q,{teams:x,disabled:!f})}),z&&(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(A.Z.Item,{label:"Model Access Group",name:"model_access_group",className:"mb-4",tooltip:"Use model access groups to give users access to select models, and add new ones to the group over time.",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],options:F.map(e=>({value:e,label:e})),maxTagCount:"responsive",allowClear:!0})})}),(0,c.jsx)(tV,{showAdvancedSettings:m,setShowAdvancedSettings:u,teams:x,guardrailsList:S}),(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(en.default.Link,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{className:"space-x-2",children:[(0,c.jsx)(L.ZP,{onClick:M,loading:Z,children:"Test Connect"}),(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Add Model"})]})]})]})})})]}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(t0,{form:v,handleOk:()=>{v.validateFields().then(e=>{t$(e,p,v,t)}).catch(e=>{console.error("Validation failed:",e)})},accessToken:p,userRole:g})})]})]}),(0,c.jsx)(T.Z,{title:"Connection Test Results",open:_,onCancel:()=>{N(!1),w(!1)},footer:[(0,c.jsx)(L.ZP,{onClick:()=>{N(!1),w(!1)},children:"Close"},"close")],width:700,children:_&&(0,c.jsx)(tY,{formValues:s.getFieldsValue(),accessToken:p,testMode:y,modelName:s.getFieldValue("model_name")||s.getFieldValue("model"),onClose:()=>{N(!1),w(!1)},onTestComplete:()=>w(!1)},E)})]})},t5=t(8048);let t3=(e,s,t,l,a,r,i,n,o,d,m)=>[{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Model ID"}),accessorKey:"model_info.id",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.model_info.id,children:(0,c.jsx)("div",{className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",onClick:()=>l(t.model_info.id),children:t.model_info.id})})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Model Information"}),accessorKey:"model_name",size:250,cell:e=>{let{row:s}=e,t=s.original,l=r(s.original)||"-",a=(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"Provider:"})," ",t.provider||"-"]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"Public Model Name:"})," ",l]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"LiteLLM Model Name:"})," ",t.litellm_model_name||"-"]})]});return(0,c.jsx)(B.Z,{title:a,children:(0,c.jsxs)("div",{className:"flex items-start space-x-2 min-w-0 w-full max-w-[250px]",children:[(0,c.jsx)("div",{className:"flex-shrink-0 mt-0.5",children:t.provider?(0,c.jsx)("img",{src:(0,sW.dr)(t.provider).logo,alt:"".concat(t.provider," logo"),className:"w-4 h-4",onError:e=>{let s=e.target,l=s.parentElement;if(l){var a;let e=document.createElement("div");e.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=(null===(a=t.provider)||void 0===a?void 0:a.charAt(0))||"-",l.replaceChild(e,s)}}}):(0,c.jsx)("div",{className:"w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",children:"-"})}),(0,c.jsxs)("div",{className:"flex flex-col min-w-0 flex-1",children:[(0,c.jsx)("div",{className:"text-xs font-medium text-gray-900 truncate max-w-[210px]",children:l}),(0,c.jsx)("div",{className:"text-xs text-gray-500 truncate mt-0.5 max-w-[210px]",children:t.litellm_model_name||"-"})]})]})})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Credentials"}),accessorKey:"litellm_credential_name",size:180,cell:e=>{var s;let{row:t}=e,l=null===(s=t.original.litellm_params)||void 0===s?void 0:s.litellm_credential_name;return l?(0,c.jsx)(B.Z,{title:"Credential: ".concat(l),children:(0,c.jsxs)("div",{className:"flex items-center space-x-2 max-w-[180px]",children:[(0,c.jsx)(tb.Z,{className:"w-4 h-4 text-blue-500 flex-shrink-0"}),(0,c.jsx)("span",{className:"text-xs truncate",title:l,children:l})]})}):(0,c.jsxs)("div",{className:"flex items-center space-x-2 max-w-[180px]",children:[(0,c.jsx)(tb.Z,{className:"w-4 h-4 text-gray-300 flex-shrink-0"}),(0,c.jsx)("span",{className:"text-xs text-gray-400",children:"No credentials"})]})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Created By"}),accessorKey:"model_info.created_by",sortingFn:"datetime",size:160,cell:e=>{let{row:s}=e,t=s.original,l=t.model_info.created_by,a=t.model_info.created_at?new Date(t.model_info.created_at).toLocaleDateString():null;return(0,c.jsxs)("div",{className:"flex flex-col min-w-0 max-w-[160px]",children:[(0,c.jsx)("div",{className:"text-xs font-medium text-gray-900 truncate",title:l||"Unknown",children:l||"Unknown"}),(0,c.jsx)("div",{className:"text-xs text-gray-500 truncate mt-0.5",title:a||"Unknown date",children:a||"Unknown date"})]})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Updated At"}),accessorKey:"model_info.updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.model_info.updated_at?new Date(t.model_info.updated_at).toLocaleDateString():"-"})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Costs"}),accessorKey:"input_cost",size:120,cell:e=>{let{row:s}=e,t=s.original,l=t.input_cost,a=t.output_cost;return l||a?(0,c.jsx)(B.Z,{title:"Cost per 1M tokens",children:(0,c.jsxs)("div",{className:"flex flex-col min-w-0 max-w-[120px]",children:[l&&(0,c.jsxs)("div",{className:"text-xs font-medium text-gray-900 truncate",children:["In: $",l]}),a&&(0,c.jsxs)("div",{className:"text-xs text-gray-500 truncate mt-0.5",children:["Out: $",a]})]})}):(0,c.jsx)("div",{className:"max-w-[120px]",children:(0,c.jsx)("span",{className:"text-xs text-gray-400",children:"-"})})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Team ID"}),accessorKey:"model_info.team_id",cell:e=>{let{row:s}=e,t=s.original;return t.model_info.team_id?(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:t.model_info.team_id,children:(0,c.jsxs)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>a(t.model_info.team_id),children:[t.model_info.team_id.slice(0,7),"..."]})})}):"-"}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Model Access Group"}),accessorKey:"model_info.model_access_group",enableSorting:!1,cell:e=>{let{row:s}=e,t=s.original,l=t.model_info.access_groups;if(!l||0===l.length)return"-";let a=t.model_info.id,r=d.has(a),i=l.length>1,n=()=>{let e=new Set(d);r?e.delete(a):e.add(a),m(e)};return(0,c.jsxs)("div",{className:"flex items-center gap-1 overflow-hidden",children:[(0,c.jsx)(e6.Z,{size:"xs",color:"blue",className:"text-xs px-1.5 py-0.5 h-5 leading-tight flex-shrink-0",children:l[0]}),(r||!i&&2===l.length)&&l.slice(1).map((e,s)=>(0,c.jsx)(e6.Z,{size:"xs",color:"blue",className:"text-xs px-1.5 py-0.5 h-5 leading-tight flex-shrink-0",children:e},s+1)),i&&(0,c.jsx)("button",{onClick:e=>{e.stopPropagation(),n()},className:"text-xs text-blue-600 hover:text-blue-800 px-1 py-0.5 rounded hover:bg-blue-50 h-5 leading-tight flex-shrink-0 whitespace-nowrap",children:r?"−":"+".concat(l.length-1)})]})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Status"}),accessorKey:"model_info.db_model",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("div",{className:"\n inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium\n ".concat(t.model_info.db_model?"bg-blue-50 text-blue-600":"bg-gray-100 text-gray-600","\n "),children:t.model_info.db_model?"DB Model":"Config Model"})}},{id:"actions",header:"",cell:t=>{var a;let{row:r}=t,i=r.original,n="Admin"===e||(null===(a=i.model_info)||void 0===a?void 0:a.created_by)===s;return(0,c.jsx)("div",{className:"flex items-center justify-end gap-2 pr-4",children:(0,c.jsx)(sL.Z,{icon:W.Z,size:"sm",onClick:()=>{n&&(l(i.model_info.id),o(!1))},className:n?"cursor-pointer":"opacity-50 cursor-not-allowed"})})}}];var t6=t(93142),t8=t(867),t7=t(3810),t9=t(5540),le=t(8881);let{Text:ls}=en.default;var lt=e=>{let{accessToken:s,onReloadSuccess:t,buttonText:l="Reload Price Data",showIcon:a=!0,size:r="middle",type:i="primary",className:n=""}=e,[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)(6),[b,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)(!1);(0,d.useEffect)(()=>{w();let e=setInterval(()=>{w()},3e4);return()=>clearInterval(e)},[s]);let w=async()=>{if(s){Z(!0);try{console.log("Fetching reload status...");let e=await (0,j.getModelCostMapReloadStatus)(s);console.log("Received status:",e),_(e)}catch(e){console.error("Failed to fetch reload status:",e),_({scheduled:!1,interval_hours:null,last_run:null,next_run:null})}finally{Z(!1)}}},k=async()=>{if(!s){eo.Z.fromBackend("No access token available");return}m(!0);try{let e=await (0,j.reloadModelCostMap)(s);"success"===e.status?(eo.Z.success("Price data reloaded successfully! ".concat(e.models_count||0," models updated.")),null==t||t(),await w()):eo.Z.fromBackend("Failed to reload price data")}catch(e){console.error("Error reloading price data:",e),eo.Z.fromBackend("Failed to reload price data. Please try again.")}finally{m(!1)}},S=async()=>{if(!s){eo.Z.fromBackend("No access token available");return}if(v<=0){eo.Z.fromBackend("Hours must be greater than 0");return}x(!0);try{let e=await (0,j.scheduleModelCostMapReload)(s,v);"success"===e.status?(eo.Z.success("Periodic reload scheduled for every ".concat(v," hours")),f(!1),await w()):eo.Z.fromBackend("Failed to schedule periodic reload")}catch(e){console.error("Error scheduling reload:",e),eo.Z.fromBackend("Failed to schedule periodic reload. Please try again.")}finally{x(!1)}},C=async()=>{if(!s){eo.Z.fromBackend("No access token available");return}p(!0);try{let e=await (0,j.cancelModelCostMapReload)(s);"success"===e.status?(eo.Z.success("Periodic reload cancelled successfully"),await w()):eo.Z.fromBackend("Failed to cancel periodic reload")}catch(e){console.error("Error cancelling reload:",e),eo.Z.fromBackend("Failed to cancel periodic reload. Please try again.")}finally{p(!1)}},I=e=>{if(!e)return"Never";try{return new Date(e).toLocaleString()}catch(s){return e}};return(0,c.jsxs)("div",{className:n,children:[(0,c.jsxs)(t6.Z,{direction:"horizontal",size:"middle",style:{marginBottom:16},children:[(0,c.jsx)(t8.Z,{title:"Hard Refresh Price Data",description:"This will immediately fetch the latest pricing information from the remote source. Continue?",onConfirm:k,okText:"Yes",cancelText:"No",okButtonProps:{style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem",transition:"all 0.2s ease-in-out"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#4f46e5"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#6366f1"}},children:(0,c.jsx)(L.ZP,{type:i,size:r,loading:o,icon:a?(0,c.jsx)(tm.Z,{}):void 0,style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem",transition:"all 0.2s ease-in-out"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#4f46e5"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#6366f1"},children:l})}),(null==b?void 0:b.scheduled)?(0,c.jsx)(L.ZP,{type:"default",size:r,danger:!0,icon:(0,c.jsx)(le.Z,{}),loading:h,onClick:C,style:{borderColor:"#ff4d4f",color:"#ff4d4f",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem"},children:"Cancel Periodic Reload"}):(0,c.jsx)(L.ZP,{type:"default",size:r,icon:(0,c.jsx)(t9.Z,{}),onClick:()=>f(!0),style:{borderColor:"#d9d9d9",color:"#6366f1",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem"},children:"Set Up Periodic Reload"})]}),b&&(0,c.jsx)(tA.Z,{size:"small",style:{backgroundColor:"#f8f9fa",border:"1px solid #e9ecef",borderRadius:8},children:(0,c.jsxs)(t6.Z,{direction:"vertical",size:"small",style:{width:"100%"},children:[b.scheduled?(0,c.jsx)("div",{children:(0,c.jsxs)(t7.Z,{color:"green",icon:(0,c.jsx)(t9.Z,{}),children:["Scheduled every ",b.interval_hours," hours"]})}):(0,c.jsx)(ls,{type:"secondary",children:"No periodic reload scheduled"}),(0,c.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,c.jsx)(ls,{type:"secondary",style:{fontSize:"12px"},children:"Last run:"}),(0,c.jsx)(ls,{style:{fontSize:"12px"},children:I(b.last_run)})]}),b.scheduled&&(0,c.jsxs)(c.Fragment,{children:[b.next_run&&(0,c.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,c.jsx)(ls,{type:"secondary",style:{fontSize:"12px"},children:"Next run:"}),(0,c.jsx)(ls,{style:{fontSize:"12px"},children:I(b.next_run)})]}),(0,c.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,c.jsx)(ls,{type:"secondary",style:{fontSize:"12px"},children:"Status:"}),(0,c.jsx)(t7.Z,{color:(null==b?void 0:b.scheduled)?b.last_run?"success":"processing":"default",children:(null==b?void 0:b.scheduled)?b.last_run?"Active":"Ready":"Not scheduled"})]})]})]})}),(0,c.jsxs)(T.Z,{title:"Set Up Periodic Reload",open:g,onOk:S,onCancel:()=>f(!1),confirmLoading:u,okText:"Schedule",cancelText:"Cancel",okButtonProps:{style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white"}},children:[(0,c.jsx)("div",{style:{marginBottom:16},children:(0,c.jsx)(ls,{children:"Set up automatic reload of price data every:"})}),(0,c.jsx)("div",{style:{marginBottom:16},children:(0,c.jsx)(e4.Z,{min:1,max:168,value:v,onChange:e=>y(e||6),addonAfter:"hours",style:{width:"100%"}})}),(0,c.jsx)("div",{children:(0,c.jsxs)(ls,{type:"secondary",children:["This will automatically fetch the latest pricing data from the remote source every ",v," hours."]})})]})]})},ll=t(15731),la=t(91126);let lr=(e,s,t,l,a,r,i,n,o,d,m)=>[{header:()=>(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(tc.Z,{checked:t,indeterminate:s.length>0&&!t,onChange:e=>a(e.target.checked),onClick:e=>e.stopPropagation()}),(0,c.jsx)("span",{children:"Model ID"})]}),accessorKey:"model_info.id",enableSorting:!0,sortingFn:"alphanumeric",cell:e=>{let{row:t}=e,a=t.original,r=a.model_name,i=s.includes(r);return(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(tc.Z,{checked:i,onChange:e=>l(r,e.target.checked),onClick:e=>e.stopPropagation()}),(0,c.jsx)(B.Z,{title:a.model_info.id,children:(0,c.jsx)("div",{className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",onClick:()=>m&&m(a.model_info.id),children:a.model_info.id})})]})}},{header:"Model Name",accessorKey:"model_name",enableSorting:!0,sortingFn:"alphanumeric",cell:e=>{let{row:s}=e,t=s.original,l=n(t)||t.model_name;return(0,c.jsx)("div",{className:"font-medium text-sm",children:(0,c.jsx)(B.Z,{title:l,children:(0,c.jsx)("div",{className:"truncate max-w-[200px]",children:l})})})}},{header:"Health Status",accessorKey:"health_status",enableSorting:!0,sortingFn:(e,s,t)=>{var l,a;let r=e.getValue("health_status")||"unknown",i=s.getValue("health_status")||"unknown",n={healthy:0,checking:1,unknown:2,unhealthy:3};return(null!==(l=n[r])&&void 0!==l?l:4)-(null!==(a=n[i])&&void 0!==a?a:4)},cell:s=>{var t;let{row:l}=s,a=l.original,r={status:a.health_status,loading:a.health_loading,error:a.health_error};if(r.loading)return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsxs)("div",{className:"flex space-x-1",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-indigo-500 rounded-full animate-pulse"}),(0,c.jsx)("div",{className:"w-2 h-2 bg-indigo-500 rounded-full animate-pulse",style:{animationDelay:"0.2s"}}),(0,c.jsx)("div",{className:"w-2 h-2 bg-indigo-500 rounded-full animate-pulse",style:{animationDelay:"0.4s"}})]}),(0,c.jsx)(k.Z,{className:"text-gray-600 text-sm",children:"Checking..."})]});let n=a.model_name,o="healthy"===r.status&&(null===(t=e[n])||void 0===t?void 0:t.successResponse);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[i(r.status),o&&d&&(0,c.jsx)(B.Z,{title:"View response details",placement:"top",children:(0,c.jsx)("button",{onClick:()=>{var s;return d(n,null===(s=e[n])||void 0===s?void 0:s.successResponse)},className:"p-1 text-green-600 hover:text-green-800 hover:bg-green-50 rounded cursor-pointer transition-colors",children:(0,c.jsx)(ll.Z,{className:"h-4 w-4"})})})]})}},{header:"Error Details",accessorKey:"health_error",enableSorting:!1,cell:s=>{let{row:t}=s,l=t.original.model_name,a=e[l];if(!(null==a?void 0:a.error))return(0,c.jsx)(k.Z,{className:"text-gray-400 text-sm",children:"No errors"});let r=a.error,i=a.fullError||a.error;return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"max-w-[200px]",children:(0,c.jsx)(B.Z,{title:r,placement:"top",children:(0,c.jsx)(k.Z,{className:"text-red-600 text-sm truncate",children:r})})}),o&&i!==r&&(0,c.jsx)(B.Z,{title:"View full error details",placement:"top",children:(0,c.jsx)("button",{onClick:()=>o(l,r,i),className:"p-1 text-red-600 hover:text-red-800 hover:bg-red-50 rounded cursor-pointer transition-colors",children:(0,c.jsx)(ll.Z,{className:"h-4 w-4"})})})]})}},{header:"Last Check",accessorKey:"last_check",enableSorting:!0,sortingFn:(e,s,t)=>{let l=e.getValue("last_check")||"Never checked",a=s.getValue("last_check")||"Never checked";if("Never checked"===l&&"Never checked"===a)return 0;if("Never checked"===l)return 1;if("Never checked"===a)return -1;if("Check in progress..."===l&&"Check in progress..."===a)return 0;if("Check in progress..."===l)return -1;if("Check in progress..."===a)return 1;let r=new Date(l),i=new Date(a);return isNaN(r.getTime())&&isNaN(i.getTime())?0:isNaN(r.getTime())?1:isNaN(i.getTime())?-1:i.getTime()-r.getTime()},cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(k.Z,{className:"text-gray-600 text-sm",children:t.health_loading?"Check in progress...":t.last_check})}},{header:"Last Success",accessorKey:"last_success",enableSorting:!0,sortingFn:(e,s,t)=>{let l=e.getValue("last_success")||"Never succeeded",a=s.getValue("last_success")||"Never succeeded";if("Never succeeded"===l&&"Never succeeded"===a)return 0;if("Never succeeded"===l)return 1;if("Never succeeded"===a)return -1;if("None"===l&&"None"===a)return 0;if("None"===l)return 1;if("None"===a)return -1;let r=new Date(l),i=new Date(a);return isNaN(r.getTime())&&isNaN(i.getTime())?0:isNaN(r.getTime())?1:isNaN(i.getTime())?-1:i.getTime()-r.getTime()},cell:s=>{let{row:t}=s,l=e[t.original.model_name],a=(null==l?void 0:l.lastSuccess)||"None";return(0,c.jsx)(k.Z,{className:"text-gray-600 text-sm",children:a})}},{header:"Actions",id:"actions",cell:e=>{let{row:s}=e,t=s.original,l=t.model_name,a=t.health_status&&"none"!==t.health_status,i=t.health_loading?"Checking...":a?"Re-run Health Check":"Run Health Check";return(0,c.jsx)(B.Z,{title:i,placement:"top",children:(0,c.jsx)("button",{className:"p-2 rounded-md transition-colors ".concat(t.health_loading?"text-gray-400 cursor-not-allowed bg-gray-100":"text-indigo-600 hover:text-indigo-700 hover:bg-indigo-50"),onClick:()=>{t.health_loading||r(l)},disabled:t.health_loading,children:t.health_loading?(0,c.jsxs)("div",{className:"flex space-x-1",children:[(0,c.jsx)("div",{className:"w-1 h-1 bg-gray-400 rounded-full animate-pulse"}),(0,c.jsx)("div",{className:"w-1 h-1 bg-gray-400 rounded-full animate-pulse",style:{animationDelay:"0.2s"}}),(0,c.jsx)("div",{className:"w-1 h-1 bg-gray-400 rounded-full animate-pulse",style:{animationDelay:"0.4s"}})]}):a?(0,c.jsx)(sl.Z,{className:"h-4 w-4"}):(0,c.jsx)(la.Z,{className:"h-4 w-4"})})})},enableSorting:!1}],li=[{pattern:/Missing .* API Key/i,replacement:"Missing API Key"},{pattern:/Connection timeout/i,replacement:"Connection timeout"},{pattern:/Network.*not.*ok/i,replacement:"Network connection failed"},{pattern:/403.*Forbidden/i,replacement:"Access forbidden - check API key permissions"},{pattern:/401.*Unauthorized/i,replacement:"Unauthorized - invalid API key"},{pattern:/429.*rate limit/i,replacement:"Rate limit exceeded"},{pattern:/500.*Internal Server Error/i,replacement:"Provider internal server error"},{pattern:/litellm\.AuthenticationError/i,replacement:"Authentication failed"},{pattern:/litellm\.RateLimitError/i,replacement:"Rate limit exceeded"},{pattern:/litellm\.APIError/i,replacement:"API error"}];var ln=e=>{let{accessToken:s,modelData:t,all_models_on_proxy:l,getDisplayModelName:a,setSelectedModelId:r}=e,[i,n]=(0,d.useState)({}),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(null),[v,y]=(0,d.useState)(!1),[_,N]=(0,d.useState)(null),Z=(0,d.useRef)(null);(0,d.useEffect)(()=>{s&&(null==t?void 0:t.data)&&(async()=>{let e={};t.data.forEach(s=>{e[s.model_name]={status:"none",lastCheck:"None",lastSuccess:"None",loading:!1,error:void 0,fullError:void 0,successResponse:void 0}});try{let l=await (0,j.latestHealthChecksCall)(s);l&&l.latest_health_checks&&"object"==typeof l.latest_health_checks&&Object.entries(l.latest_health_checks).forEach(s=>{let[l,a]=s;if(!a)return;let r=null,i=t.data.find(e=>e.model_name===l);if(i)r=i.model_name;else{let e=t.data.find(e=>e.model_info&&e.model_info.id===l);if(e)r=e.model_name;else if(a.model_name){let e=t.data.find(e=>e.model_name===a.model_name);e&&(r=e.model_name)}}if(r){let s=a.error_message||void 0;e[r]={status:a.status||"unknown",lastCheck:a.checked_at?new Date(a.checked_at).toLocaleString():"None",lastSuccess:"healthy"===a.status&&a.checked_at?new Date(a.checked_at).toLocaleString():"None",loading:!1,error:s?w(s):void 0,fullError:s,successResponse:"healthy"===a.status?a:void 0}}})}catch(e){console.warn("Failed to load health check history (using default states):",e)}n(e)})()},[s,t]);let w=e=>{var s;if(!e)return"Health check failed";let t="string"==typeof e?e:JSON.stringify(e),l=t.match(/(\w+Error):\s*(\d{3})/i);if(l)return"".concat(l[1],": ").concat(l[2]);let a=t.match(/(AuthenticationError|RateLimitError|BadRequestError|InternalServerError|TimeoutError|NotFoundError|ForbiddenError|ServiceUnavailableError|BadGatewayError|ContentPolicyViolationError|\w+Error)/i),r=t.match(/\b(400|401|403|404|408|429|500|502|503|504)\b/);if(a&&r)return"".concat(a[1],": ").concat(r[1]);if(r){let e=r[1];return"".concat({400:"BadRequestError",401:"AuthenticationError",403:"ForbiddenError",404:"NotFoundError",408:"TimeoutError",429:"RateLimitError",500:"InternalServerError",502:"BadGatewayError",503:"ServiceUnavailableError",504:"GatewayTimeoutError"}[e],": ").concat(e)}if(a){let e=a[1],s={AuthenticationError:"401",RateLimitError:"429",BadRequestError:"400",InternalServerError:"500",TimeoutError:"408",NotFoundError:"404",ForbiddenError:"403",ServiceUnavailableError:"503",BadGatewayError:"502",GatewayTimeoutError:"504",ContentPolicyViolationError:"400"}[e];return s?"".concat(e,": ").concat(s):e}for(let{pattern:e,replacement:s}of li)if(e.test(t))return s;if(/missing.*api.*key|invalid.*key|unauthorized/i.test(t))return"AuthenticationError: 401";if(/rate.*limit|too.*many.*requests/i.test(t))return"RateLimitError: 429";if(/timeout|timed.*out/i.test(t))return"TimeoutError: 408";if(/not.*found/i.test(t))return"NotFoundError: 404";if(/forbidden|access.*denied/i.test(t))return"ForbiddenError: 403";if(/internal.*server.*error/i.test(t))return"InternalServerError: 500";let i=t.replace(/[\n\r]+/g," ").replace(/\s+/g," ").trim(),n=null===(s=i.split(/[.!?]/)[0])||void 0===s?void 0:s.trim();return n&&n.length>0?n.length>100?n.substring(0,97)+"...":n:i.length>100?i.substring(0,97)+"...":i},C=async e=>{if(s){n(s=>({...s,[e]:{...s[e],loading:!0,status:"checking"}}));try{var l,a;let r=await (0,j.individualModelHealthCheckCall)(s,e),i=new Date().toLocaleString();if(r.unhealthy_count>0&&r.unhealthy_endpoints&&r.unhealthy_endpoints.length>0){let s=(null===(l=r.unhealthy_endpoints[0])||void 0===l?void 0:l.error)||"Health check failed",t=w(s);n(l=>{var a;return{...l,[e]:{status:"unhealthy",lastCheck:i,lastSuccess:(null===(a=l[e])||void 0===a?void 0:a.lastSuccess)||"None",loading:!1,error:t,fullError:s}}})}else n(s=>({...s,[e]:{status:"healthy",lastCheck:i,lastSuccess:i,loading:!1,successResponse:r}}));try{let l=await (0,j.latestHealthChecksCall)(s),r=t.data.find(s=>s.model_name===e);if(r){let s=r.model_info.id,t=null===(a=l.latest_health_checks)||void 0===a?void 0:a[s];if(t){let s=t.error_message||void 0;n(l=>{var a,r,i,n,o,c,d;return{...l,[e]:{status:t.status||(null===(a=l[e])||void 0===a?void 0:a.status)||"unknown",lastCheck:t.checked_at?new Date(t.checked_at).toLocaleString():(null===(r=l[e])||void 0===r?void 0:r.lastCheck)||"None",lastSuccess:"healthy"===t.status?t.checked_at?new Date(t.checked_at).toLocaleString():(null===(i=l[e])||void 0===i?void 0:i.lastSuccess)||"None":(null===(n=l[e])||void 0===n?void 0:n.lastSuccess)||"None",loading:!1,error:s?w(s):null===(o=l[e])||void 0===o?void 0:o.error,fullError:s||(null===(c=l[e])||void 0===c?void 0:c.fullError),successResponse:"healthy"===t.status?t:null===(d=l[e])||void 0===d?void 0:d.successResponse}}})}}}catch(e){console.debug("Could not fetch updated status from database (non-critical):",e)}}catch(a){let s=new Date().toLocaleString(),t=a instanceof Error?a.message:String(a),l=w(t);n(a=>{var r;return{...a,[e]:{status:"unhealthy",lastCheck:s,lastSuccess:(null===(r=a[e])||void 0===r?void 0:r.lastSuccess)||"None",loading:!1,error:l,fullError:t}}})}}},I=async()=>{let e=o.length>0?o:l,a=e.reduce((e,s)=>(e[s]={...i[s],loading:!0,status:"checking"},e),{});n(e=>({...e,...a}));let r={},c=e.map(async e=>{if(s)try{let l=await (0,j.individualModelHealthCheckCall)(s,e);r[e]=l;let a=new Date().toLocaleString();if(l.unhealthy_count>0&&l.unhealthy_endpoints&&l.unhealthy_endpoints.length>0){var t;let s=(null===(t=l.unhealthy_endpoints[0])||void 0===t?void 0:t.error)||"Health check failed",r=w(s);n(t=>{var l;return{...t,[e]:{status:"unhealthy",lastCheck:a,lastSuccess:(null===(l=t[e])||void 0===l?void 0:l.lastSuccess)||"None",loading:!1,error:r,fullError:s}}})}else n(s=>({...s,[e]:{status:"healthy",lastCheck:a,lastSuccess:a,loading:!1,successResponse:l}}))}catch(a){console.error("Health check failed for ".concat(e,":"),a);let s=new Date().toLocaleString(),t=a instanceof Error?a.message:String(a),l=w(t);n(a=>{var r;return{...a,[e]:{status:"unhealthy",lastCheck:s,lastSuccess:(null===(r=a[e])||void 0===r?void 0:r.lastSuccess)||"None",loading:!1,error:l,fullError:t}}})}});await Promise.allSettled(c);try{if(!s)return;let l=await (0,j.latestHealthChecksCall)(s);l.latest_health_checks&&Object.entries(l.latest_health_checks).forEach(s=>{let[l,a]=s,r=t.data.find(e=>e.model_info.id===l);if(r&&e.includes(r.model_name)&&a){let e=r.model_name,s=a.error_message||void 0;n(t=>{let l=t[e];return{...t,[e]:{status:a.status||(null==l?void 0:l.status)||"unknown",lastCheck:a.checked_at?new Date(a.checked_at).toLocaleString():(null==l?void 0:l.lastCheck)||"None",lastSuccess:"healthy"===a.status&&a.checked_at?new Date(a.checked_at).toLocaleString():(null==l?void 0:l.lastSuccess)||"None",loading:!1,error:s?w(s):null==l?void 0:l.error,fullError:s||(null==l?void 0:l.fullError),successResponse:"healthy"===a.status?a:null==l?void 0:l.successResponse}}})}})}catch(e){console.warn("Failed to fetch updated health statuses from database (non-critical):",e)}},A=e=>{x(e),e?m(l):m([])},E=()=>{p(!1),f(null)},P=()=>{y(!1),N(null)};return(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Model Health Status"}),(0,c.jsx)(k.Z,{className:"text-gray-600 mt-1",children:"Run health checks on individual models to verify they are working correctly"})]}),(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[o.length>0&&(0,c.jsx)(b.Z,{size:"sm",variant:"light",onClick:()=>A(!1),className:"px-3 py-1 text-sm",children:"Clear Selection"}),(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",onClick:I,disabled:Object.values(i).some(e=>e.loading),className:"px-3 py-1 text-sm",children:o.length>0&&o.length{s?m(s=>[...s,e]):(m(s=>s.filter(s=>s!==e)),x(!1))},A,C,e=>{switch(e){case"healthy":return(0,c.jsx)(e6.Z,{color:"emerald",children:"healthy"});case"unhealthy":return(0,c.jsx)(e6.Z,{color:"red",children:"unhealthy"});case"checking":return(0,c.jsx)(e6.Z,{color:"blue",children:"checking"});case"none":return(0,c.jsx)(e6.Z,{color:"gray",children:"none"});default:return(0,c.jsx)(e6.Z,{color:"gray",children:"unknown"})}},a,(e,s,t)=>{f({modelName:e,cleanedError:s,fullError:t}),p(!0)},(e,s)=>{N({modelName:e,response:s}),y(!0)},r),data:t.data.map(e=>{let s=i[e.model_name]||{status:"none",lastCheck:"None",loading:!1};return{model_name:e.model_name,model_info:e.model_info,provider:e.provider,litellm_model_name:e.litellm_model_name,health_status:s.status,last_check:s.lastCheck,last_success:s.lastSuccess||"None",health_loading:s.loading,health_error:s.error,health_full_error:s.fullError}}),isLoading:!1,table:Z})}),(0,c.jsx)(T.Z,{title:g?"Health Check Error - ".concat(g.modelName):"Error Details",open:h,onCancel:E,footer:[(0,c.jsx)(L.ZP,{onClick:E,children:"Close"},"close")],width:800,children:g&&(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Error:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-red-50 border border-red-200 rounded-md",children:(0,c.jsx)(k.Z,{className:"text-red-800",children:g.cleanedError})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Full Error Details:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md max-h-96 overflow-y-auto",children:(0,c.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:g.fullError})})]})]})}),(0,c.jsx)(T.Z,{title:_?"Health Check Response - ".concat(_.modelName):"Response Details",open:v,onCancel:P,footer:[(0,c.jsx)(L.ZP,{onClick:P,children:"Close"},"close")],width:800,children:_&&(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Status:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-green-50 border border-green-200 rounded-md",children:(0,c.jsx)(k.Z,{className:"text-green-800",children:"Health check passed successfully"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Response Details:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md max-h-96 overflow-y-auto",children:(0,c.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:JSON.stringify(_.response,null,2)})})]})]})})]})},lo=t(61778),lc=t(12660),ld=e=>{let{value:s={},onChange:t}=e,[l,a]=(0,d.useState)(Object.entries(s)),r=e=>{let s=l.filter((s,t)=>t!==e);a(s),null==t||t(Object.fromEntries(s))},i=(e,s,r)=>{let i=[...l];i[e]=[s,r],a(i),null==t||t(Object.fromEntries(i))};return(0,c.jsxs)("div",{children:[l.map((e,s)=>{let[t,l]=e;return(0,c.jsxs)(t6.Z,{style:{display:"flex",marginBottom:8},align:"center",children:[(0,c.jsx)(eG.o,{placeholder:"Header Name",value:t,onChange:e=>i(s,e.target.value,l)}),(0,c.jsx)(eG.o,{placeholder:"Header Value",value:l,onChange:e=>i(s,t,e.target.value)}),(0,c.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:(0,c.jsx)(tw.Z,{onClick:()=>r(s),style:{cursor:"pointer"}})})]},s)}),(0,c.jsx)(L.ZP,{type:"dashed",onClick:()=>{a([...l,["",""]])},icon:(0,c.jsx)(tk.Z,{}),children:"Add Header"})]})},lm=t(77565),lu=e=>{let{pathValue:s,targetValue:t,includeSubpath:l}=e,a=(0,j.getProxyBaseUrl)();return s&&t?(0,c.jsxs)(G.Z,{className:"p-5",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Route Preview"}),(0,c.jsx)(sJ.Z,{className:"text-gray-600 mb-5",children:"How your requests will be routed"}),(0,c.jsxs)("div",{className:"space-y-5",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-base font-semibold text-gray-900 mb-3",children:"Basic routing:"}),(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Your endpoint"}),(0,c.jsx)("code",{className:"font-mono text-sm text-gray-900",children:s?"".concat(a).concat(s):""})]}),(0,c.jsx)("div",{className:"text-gray-400",children:(0,c.jsx)(lm.Z,{className:"text-lg"})}),(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Forwards to"}),(0,c.jsx)("code",{className:"font-mono text-sm text-gray-900",children:t})]})]})]}),l&&(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-base font-semibold text-gray-900 mb-3",children:"With subpaths:"}),(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Your endpoint + subpath"}),(0,c.jsxs)("code",{className:"font-mono text-sm text-gray-900",children:[s&&"".concat(a).concat(s),(0,c.jsx)("span",{className:"text-blue-600",children:"/v1/text-to-image/base/model"})]})]}),(0,c.jsx)("div",{className:"text-gray-400",children:(0,c.jsx)(lm.Z,{className:"text-lg"})}),(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Forwards to"}),(0,c.jsxs)("code",{className:"font-mono text-sm text-gray-900",children:[t,(0,c.jsx)("span",{className:"text-blue-600",children:"/v1/text-to-image/base/model"})]})]})]}),(0,c.jsxs)("div",{className:"mt-3 text-sm text-gray-600",children:["Any path after ",s," will be appended to the target URL"]})]})}),!l&&(0,c.jsx)("div",{className:"mt-4 p-3 bg-blue-50 rounded-md border border-blue-200",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)(V.Z,{className:"text-blue-500 mt-0.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{className:"text-sm text-blue-700",children:[(0,c.jsx)("span",{className:"font-medium",children:"Not seeing the routing you wanted?"})," Try enabling - Include Subpaths - above - this allows subroutes like"," ",(0,c.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded font-mono text-xs",children:"/api/v1/models"})," to be forwarded automatically."]})]})})]})]}):null};let{Option:lx}=I.default;var lh=e=>{let{accessToken:s,setPassThroughItems:t,passThroughItems:l}=e,[a]=A.Z.useForm(),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(""),[x,h]=(0,d.useState)(""),[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)(!0),y=()=>{a.resetFields(),h(""),g(""),v(!0),i(!1)},N=e=>{let s=e;e&&!e.startsWith("/")&&(s="/"+e),h(s),a.setFieldsValue({path:s})},Z=async e=>{console.log("addPassThrough called with:",e),o(!0);try{console.log("formValues: ".concat(JSON.stringify(e)));let r=(await (0,j.createPassThroughEndpoint)(s,e)).endpoints[0],n=[...l,r];t(n),eo.Z.success("Pass-through endpoint created successfully"),a.resetFields(),h(""),g(""),v(!0),i(!1)}catch(e){eo.Z.fromBackend("Error creating pass-through endpoint: "+e)}finally{o(!1)}};return(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{className:"mx-auto mb-4 mt-4",onClick:()=>i(!0),children:"+ Add Pass-Through Endpoint"}),(0,c.jsx)(T.Z,{title:(0,c.jsxs)("div",{className:"flex items-center space-x-3 pb-4 border-b border-gray-100",children:[(0,c.jsx)(lc.Z,{className:"text-xl text-blue-500"}),(0,c.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add Pass-Through Endpoint"})]}),open:r,width:1e3,onCancel:y,footer:null,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,c.jsxs)("div",{className:"mt-6",children:[(0,c.jsx)(lo.Z,{message:"What is a Pass-Through Endpoint?",description:"Route requests from your LiteLLM proxy to any external API. Perfect for custom models, image generation APIs, or any service you want to proxy through LiteLLM.",type:"info",showIcon:!0,className:"mb-6"}),(0,c.jsxs)(A.Z,{form:a,onFinish:Z,layout:"vertical",className:"space-y-6",initialValues:{include_subpath:!0,path:x,target:p},children:[(0,c.jsxs)(G.Z,{className:"p-5",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Route Configuration"}),(0,c.jsx)(sJ.Z,{className:"text-gray-600 mb-5",children:"Configure how requests to your domain will be forwarded to the target API"}),(0,c.jsxs)("div",{className:"space-y-5",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Path Prefix"}),name:"path",rules:[{required:!0,message:"Path is required",pattern:/^\//}],extra:(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-1",children:"Example: /bria, /adobe-photoshop, /elasticsearch"}),className:"mb-4",children:(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsx)(_.Z,{placeholder:"bria",value:x,onChange:e=>N(e.target.value),className:"flex-1"})})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Target URL"}),name:"target",rules:[{required:!0,message:"Target URL is required"},{type:"url",message:"Please enter a valid URL"}],extra:(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-1",children:"Example:https://engine.prod.bria-api.com"}),className:"mb-4",children:(0,c.jsx)(_.Z,{placeholder:"https://engine.prod.bria-api.com",value:p,onChange:e=>{g(e.target.value),a.setFieldsValue({target:e.target.value})}})}),(0,c.jsxs)("div",{className:"flex items-center justify-between py-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-sm font-medium text-gray-700",children:"Include Subpaths"}),(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-0.5",children:"Forward all subpaths to the target API (recommended for REST APIs)"})]}),(0,c.jsx)(A.Z.Item,{name:"include_subpath",valuePropName:"checked",className:"mb-0",children:(0,c.jsx)(tW.Z,{checked:f,onChange:v})})]})]})]}),(0,c.jsx)(lu,{pathValue:x,targetValue:p,includeSubpath:f}),(0,c.jsxs)(G.Z,{className:"p-6",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Headers"}),(0,c.jsx)(sJ.Z,{className:"text-gray-600 mb-6",children:"Add headers that will be sent with every request to the target API"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Authentication Headers",(0,c.jsx)(B.Z,{title:"Authentication and other headers to forward with requests",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"headers",rules:[{required:!0,message:"Please configure the headers"}],extra:(0,c.jsxs)("div",{className:"text-xs text-gray-500 mt-2",children:[(0,c.jsx)("div",{className:"font-medium mb-1",children:"Add authentication tokens and other required headers"}),(0,c.jsx)("div",{children:"Common examples: auth_token, Authorization, x-api-key"})]}),children:(0,c.jsx)(ld,{})})]}),(0,c.jsxs)(G.Z,{className:"p-6",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Billing"}),(0,c.jsx)(sJ.Z,{className:"text-gray-600 mb-6",children:"Optional cost tracking for this endpoint"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Cost Per Request (USD)",(0,c.jsx)(B.Z,{title:"Optional: Track costs for requests to this endpoint",children:(0,c.jsx)(V.Z,{className:"ml-2 text-gray-400 hover:text-gray-600"})})]}),name:"cost_per_request",extra:(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-2",children:"The cost charged for each request through this endpoint"}),children:(0,c.jsx)(O,{min:0,step:.001,precision:4,placeholder:"2.0000",size:"large"})})]}),(0,c.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:y,children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",loading:n,onClick:()=>{console.log("Submit button clicked"),a.submit()},children:n?"Creating...":"Add Pass-Through Endpoint"})]})]})]})})]})},lp=t(87769),lg=t(42208);let lj=e=>{let{value:s}=e,[t,l]=(0,d.useState)(!1),a=JSON.stringify(s,null,2);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("pre",{className:"font-mono text-xs bg-gray-50 p-2 rounded max-w-md overflow-auto",children:t?a:"••••••••"}),(0,c.jsx)("button",{onClick:()=>l(!t),className:"p-1 hover:bg-gray-100 rounded",type:"button",children:t?(0,c.jsx)(lp.Z,{className:"w-4 h-4 text-gray-500"}):(0,c.jsx)(lg.Z,{className:"w-4 h-4 text-gray-500"})})]})};var lf=e=>{let{endpointData:s,onClose:t,accessToken:l,isAdmin:a,onEndpointUpdated:r}=e,[i,n]=(0,d.useState)(s),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(!1),[h]=A.Z.useForm(),p=async e=>{try{if(!l||!(null==i?void 0:i.id))return;let s={};if(e.headers)try{s="string"==typeof e.headers?JSON.parse(e.headers):e.headers}catch(e){eo.Z.fromBackend("Invalid JSON format for headers");return}let t={path:i.path,target:e.target,headers:s,include_subpath:e.include_subpath,cost_per_request:e.cost_per_request};await (0,j.updatePassThroughEndpoint)(l,i.id,t),n({...i,...t}),x(!1),r&&r()}catch(e){console.error("Error updating endpoint:",e),eo.Z.fromBackend("Failed to update pass through endpoint")}},g=async()=>{try{if(!l||!(null==i?void 0:i.id))return;await (0,j.deletePassThroughEndpointsCall)(l,i.id),eo.Z.success("Pass through endpoint deleted successfully"),t(),r&&r()}catch(e){console.error("Error deleting endpoint:",e),eo.Z.fromBackend("Failed to delete pass through endpoint")}};return o?(0,c.jsx)("div",{className:"p-4",children:"Loading..."}):i?(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(L.ZP,{onClick:t,className:"mb-4",children:"← Back"}),(0,c.jsxs)(S.Z,{children:["Pass Through Endpoint: ",i.path]}),(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:i.id})]})}),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{className:"mb-4",children:[(0,c.jsx)(e8.Z,{children:"Overview"},"overview"),a?(0,c.jsx)(e8.Z,{children:"Settings"},"settings"):(0,c.jsx)(c.Fragment,{})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Path"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{className:"font-mono",children:i.path})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Target"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{children:i.target})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Configuration"}),(0,c.jsxs)("div",{className:"mt-2 space-y-2",children:[(0,c.jsx)("div",{children:(0,c.jsx)(e6.Z,{color:i.include_subpath?"green":"gray",children:i.include_subpath?"Include Subpath":"Exact Path"})}),void 0!==i.cost_per_request&&(0,c.jsx)("div",{children:(0,c.jsxs)(k.Z,{children:["Cost per request: $",i.cost_per_request]})})]})]})]}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(lu,{pathValue:i.path,targetValue:i.target,includeSubpath:i.include_subpath||!1})}),i.headers&&Object.keys(i.headers).length>0&&(0,c.jsxs)(G.Z,{className:"mt-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Headers"}),(0,c.jsxs)(e6.Z,{color:"blue",children:[Object.keys(i.headers).length," headers configured"]})]}),(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(lj,{value:i.headers})})]})]}),a&&(0,c.jsx)(se.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Pass Through Endpoint Settings"}),(0,c.jsx)("div",{className:"space-x-2",children:!u&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(b.Z,{onClick:()=>x(!0),children:"Edit Settings"}),(0,c.jsx)(b.Z,{onClick:g,variant:"secondary",color:"red",children:"Delete Endpoint"})]})})]}),u?(0,c.jsxs)(A.Z,{form:h,onFinish:p,initialValues:{target:i.target,headers:i.headers?JSON.stringify(i.headers,null,2):"",include_subpath:i.include_subpath||!1,cost_per_request:i.cost_per_request},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Target URL",name:"target",rules:[{required:!0,message:"Please input a target URL"}],children:(0,c.jsx)(_.Z,{placeholder:"https://api.example.com"})}),(0,c.jsx)(A.Z.Item,{label:"Headers (JSON)",name:"headers",children:(0,c.jsx)(P.default.TextArea,{rows:5,placeholder:'{"Authorization": "Bearer your-token", "Content-Type": "application/json"}'})}),(0,c.jsx)(A.Z.Item,{label:"Include Subpath",name:"include_subpath",valuePropName:"checked",children:(0,c.jsx)(eK.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Cost per Request",name:"cost_per_request",children:(0,c.jsx)(e4.Z,{min:0,step:.01,precision:2,placeholder:"0.00",addonBefore:"$"})}),(0,c.jsxs)("div",{className:"flex justify-end gap-2 mt-6",children:[(0,c.jsx)(L.ZP,{onClick:()=>x(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{children:"Save Changes"})]})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Path"}),(0,c.jsx)("div",{className:"font-mono",children:i.path})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Target URL"}),(0,c.jsx)("div",{children:i.target})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Include Subpath"}),(0,c.jsx)(e6.Z,{color:i.include_subpath?"green":"gray",children:i.include_subpath?"Yes":"No"})]}),void 0!==i.cost_per_request&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Cost per Request"}),(0,c.jsxs)("div",{children:["$",i.cost_per_request]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Headers"}),i.headers&&Object.keys(i.headers).length>0?(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(lj,{value:i.headers})}):(0,c.jsx)("div",{className:"text-gray-500",children:"No headers configured"})]})]})]})})]})]})]}):(0,c.jsx)("div",{className:"p-4",children:"Pass through endpoint not found"})},lv=t(19130);function ly(e){let{data:s=[],columns:t,getRowCanExpand:l,renderSubComponent:a,isLoading:r=!1,loadingMessage:i="\uD83D\uDE85 Loading logs...",noDataMessage:n="No logs found"}=e,o=(0,sT.b7)({data:s,columns:t,getRowCanExpand:l,getRowId:(e,s)=>{var t;return null!==(t=null==e?void 0:e.request_id)&&void 0!==t?t:String(s)},getCoreRowModel:(0,sE.sC)(),getExpandedRowModel:(0,sE.rV)()});return(0,c.jsx)("div",{className:"rounded-lg custom-border overflow-x-auto w-full max-w-full box-border",children:(0,c.jsxs)(lv.iA,{className:"[&_td]:py-0.5 [&_th]:py-1 table-fixed w-full box-border",style:{minWidth:"400px"},children:[(0,c.jsx)(lv.ss,{children:o.getHeaderGroups().map(e=>(0,c.jsx)(lv.SC,{children:e.headers.map(e=>(0,c.jsx)(lv.xs,{className:"py-1 h-8",children:e.isPlaceholder?null:(0,sT.ie)(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,c.jsx)(lv.RM,{children:r?(0,c.jsx)(lv.SC,{children:(0,c.jsx)(lv.pj,{colSpan:t.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:i})})})}):o.getRowModel().rows.length>0?o.getRowModel().rows.map(e=>(0,c.jsxs)(d.Fragment,{children:[(0,c.jsx)(lv.SC,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(lv.pj,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap",children:(0,sT.ie)(e.column.columnDef.cell,e.getContext())},e.id))}),e.getIsExpanded()&&(0,c.jsx)(lv.SC,{children:(0,c.jsx)(lv.pj,{colSpan:e.getVisibleCells().length,className:"p-0",children:(0,c.jsx)("div",{className:"w-full max-w-full overflow-hidden box-border",children:a({row:e})})})})]},e.id)):(0,c.jsx)(lv.SC,{children:(0,c.jsx)(lv.pj,{colSpan:t.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:n})})})})})]})})}let lb=e=>{let{value:s}=e,[t,l]=(0,d.useState)(!1),a=JSON.stringify(s);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("span",{className:"font-mono text-xs",children:t?a:"••••••••"}),(0,c.jsx)("button",{onClick:()=>l(!t),className:"p-1 hover:bg-gray-100 rounded",type:"button",children:t?(0,c.jsx)(lp.Z,{className:"w-4 h-4 text-gray-500"}):(0,c.jsx)(lg.Z,{className:"w-4 h-4 text-gray-500"})})]})};var l_=e=>{let{accessToken:s,userRole:t,userID:l,modelData:a}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(null);(0,d.useEffect)(()=>{s&&t&&l&&(0,j.getPassThroughEndpointsCall)(s).then(e=>{i(e.endpoints)})},[s,t,l]);let p=async e=>{h(e),u(!0)},g=async()=>{if(null!=x&&s){try{await (0,j.deletePassThroughEndpointsCall)(s,x);let e=r.filter(e=>e.id!==x);i(e),eo.Z.success("Endpoint deleted successfully.")}catch(e){console.error("Error deleting the endpoint:",e),eo.Z.fromBackend("Error deleting the endpoint: "+e)}u(!1),h(null)}},f=(e,s)=>{p(e)},v=[{header:"ID",accessorKey:"id",cell:e=>(0,c.jsx)(B.Z,{title:e.row.original.id,children:(0,c.jsx)("div",{className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",onClick:()=>e.row.original.id&&o(e.row.original.id),children:e.row.original.id})})},{header:"Path",accessorKey:"path"},{header:"Target",accessorKey:"target",cell:e=>(0,c.jsx)(k.Z,{children:e.getValue()})},{header:"Headers",accessorKey:"headers",cell:e=>(0,c.jsx)(lb,{value:e.getValue()||{}})},{header:"Actions",id:"actions",cell:e=>{let{row:s}=e;return(0,c.jsxs)("div",{className:"flex space-x-1",children:[(0,c.jsx)(sL.Z,{icon:sX.Z,size:"sm",onClick:()=>s.original.id&&o(s.original.id),title:"Edit"}),(0,c.jsx)(sL.Z,{icon:W.Z,size:"sm",onClick:()=>f(s.original.id,s.index),title:"Delete"})]})}}];if(!s)return null;if(n){console.log("selectedEndpointId",n),console.log("generalSettings",r);let e=r.find(e=>e.id===n);return e?(0,c.jsx)(lf,{endpointData:e,onClose:()=>o(null),accessToken:s,isAdmin:"Admin"===t||"admin"===t,onEndpointUpdated:()=>{s&&(0,j.getPassThroughEndpointsCall)(s).then(e=>{i(e.endpoints)})}}):(0,c.jsx)("div",{children:"Endpoint not found"})}return(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Pass Through Endpoints"}),(0,c.jsx)(k.Z,{className:"text-tremor-content",children:"Configure and manage your pass-through endpoints"})]}),(0,c.jsx)(lh,{accessToken:s,setPassThroughItems:i,passThroughItems:r}),(0,c.jsx)(ly,{data:r,columns:v,renderSubComponent:()=>(0,c.jsx)("div",{}),getRowCanExpand:()=>!1,isLoading:!1,noDataMessage:"No pass-through endpoints configured"}),m&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Pass-Through Endpoint"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this pass-through endpoint? This action cannot be undone."})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:g,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{u(!1),h(null)},children:"Cancel"})]})]})]})})]})},lN=e=>{let{accessToken:s,initialModelGroupAlias:t={},onAliasUpdate:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)({aliasName:"",targetModelGroup:""}),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!0);(0,d.useEffect)(()=>{r(Object.entries(t).map((e,s)=>{let[t,l]=e;return{id:"".concat(s,"-").concat(t),aliasName:t,targetModelGroup:l}}))},[t]);let h=async e=>{if(!s)return console.error("Access token is missing"),!1;try{let t={};return e.forEach(e=>{t[e.aliasName]=e.targetModelGroup}),console.log("Saving model group alias:",t),await (0,j.setCallbacksCall)(s,{router_settings:{model_group_alias:t}}),l&&l(t),!0}catch(e){return console.error("Failed to save model group alias settings:",e),eo.Z.fromBackend("Failed to save model group alias settings"),!1}},p=async()=>{if(!i.aliasName||!i.targetModelGroup){eo.Z.fromBackend("Please provide both alias name and target model group");return}if(a.some(e=>e.aliasName===i.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=[...a,{id:"".concat(Date.now(),"-").concat(i.aliasName),aliasName:i.aliasName,targetModelGroup:i.targetModelGroup}];await h(e)&&(r(e),n({aliasName:"",targetModelGroup:""}),eo.Z.success("Alias added successfully"))},g=e=>{m({...e})},f=async()=>{if(!o)return;if(!o.aliasName||!o.targetModelGroup){eo.Z.fromBackend("Please provide both alias name and target model group");return}if(a.some(e=>e.id!==o.id&&e.aliasName===o.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=a.map(e=>e.id===o.id?o:e);await h(e)&&(r(e),m(null),eo.Z.success("Alias updated successfully"))},v=()=>{m(null)},y=async e=>{let s=a.filter(s=>s.id!==e);await h(s)&&(r(s),eo.Z.success("Alias deleted successfully"))},b=a.reduce((e,s)=>(e[s.aliasName]=s.targetModelGroup,e),{});return(0,c.jsxs)(ez.Zb,{className:"mb-6",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between cursor-pointer",onClick:()=>x(!u),children:[(0,c.jsxs)("div",{className:"flex flex-col",children:[(0,c.jsx)(ez.Dx,{className:"mb-0",children:"Model Group Alias Settings"}),(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Create aliases for your model groups to simplify API calls. For example, you can create an alias 'gpt-4o' that points to 'gpt-4o-mini-openai' model group."})]}),(0,c.jsx)("div",{className:"flex items-center",children:u?(0,c.jsx)(sz.Z,{className:"w-5 h-5 text-gray-500"}):(0,c.jsx)(sU.Z,{className:"w-5 h-5 text-gray-500"})})]}),u&&(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(ez.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Add New Alias"}),(0,c.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Alias Name"}),(0,c.jsx)("input",{type:"text",value:i.aliasName,onChange:e=>n({...i,aliasName:e.target.value}),placeholder:"e.g., gpt-4o",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Target Model Group"}),(0,c.jsx)("input",{type:"text",value:i.targetModelGroup,onChange:e=>n({...i,targetModelGroup:e.target.value}),placeholder:"e.g., gpt-4o-mini-openai",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),(0,c.jsx)("div",{className:"flex items-end",children:(0,c.jsxs)("button",{onClick:p,disabled:!i.aliasName||!i.targetModelGroup,className:"flex items-center px-4 py-2 rounded-md text-sm ".concat(i.aliasName&&i.targetModelGroup?"bg-green-600 text-white hover:bg-green-700":"bg-gray-300 text-gray-500 cursor-not-allowed"),children:[(0,c.jsx)(eF.Z,{className:"w-4 h-4 mr-1"}),"Add Alias"]})})]})]}),(0,c.jsx)(ez.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Manage Existing Aliases"}),(0,c.jsx)("div",{className:"rounded-lg custom-border relative mb-6",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(ez.iA,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(ez.ss,{children:(0,c.jsxs)(ez.SC,{children:[(0,c.jsx)(ez.xs,{className:"py-1 h-8",children:"Alias Name"}),(0,c.jsx)(ez.xs,{className:"py-1 h-8",children:"Target Model Group"}),(0,c.jsx)(ez.xs,{className:"py-1 h-8",children:"Actions"})]})}),(0,c.jsxs)(ez.RM,{children:[a.map(e=>(0,c.jsx)(ez.SC,{className:"h-8",children:o&&o.id===e.id?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ez.pj,{className:"py-0.5",children:(0,c.jsx)("input",{type:"text",value:o.aliasName,onChange:e=>m({...o,aliasName:e.target.value}),className:"w-full px-2 py-1 border border-gray-300 rounded-md text-sm"})}),(0,c.jsx)(ez.pj,{className:"py-0.5",children:(0,c.jsx)("input",{type:"text",value:o.targetModelGroup,onChange:e=>m({...o,targetModelGroup:e.target.value}),className:"w-full px-2 py-1 border border-gray-300 rounded-md text-sm"})}),(0,c.jsx)(ez.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:f,className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:"Save"}),(0,c.jsx)("button",{onClick:v,className:"text-xs bg-gray-50 text-gray-600 px-2 py-1 rounded hover:bg-gray-100",children:"Cancel"})]})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ez.pj,{className:"py-0.5 text-sm text-gray-900",children:e.aliasName}),(0,c.jsx)(ez.pj,{className:"py-0.5 text-sm text-gray-500",children:e.targetModelGroup}),(0,c.jsx)(ez.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>g(e),className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:(0,c.jsx)(eR.Z,{className:"w-3 h-3"})}),(0,c.jsx)("button",{onClick:()=>y(e.id),className:"text-xs bg-red-50 text-red-600 px-2 py-1 rounded hover:bg-red-100",children:(0,c.jsx)(W.Z,{className:"w-3 h-3"})})]})})]})},e.id)),0===a.length&&(0,c.jsx)(ez.SC,{children:(0,c.jsx)(ez.pj,{colSpan:3,className:"py-0.5 text-sm text-gray-500 text-center",children:"No aliases added yet. Add a new alias above."})})]})]})})}),(0,c.jsxs)(ez.Zb,{children:[(0,c.jsx)(ez.Dx,{className:"mb-4",children:"Configuration Example"}),(0,c.jsx)(ez.xv,{className:"text-gray-600 mb-4",children:"Here's how your current aliases would look in the config.yaml:"}),(0,c.jsx)("div",{className:"bg-gray-100 rounded-lg p-4 font-mono text-sm",children:(0,c.jsxs)("div",{className:"text-gray-700",children:["router_settings:",(0,c.jsx)("br",{}),"\xa0\xa0model_group_alias:",0===Object.keys(b).length?(0,c.jsxs)("span",{className:"text-gray-500",children:[(0,c.jsx)("br",{}),"\xa0\xa0\xa0\xa0# No aliases configured yet"]}):Object.entries(b).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{children:[(0,c.jsx)("br",{}),'\xa0\xa0\xa0\xa0"',s,'": "',t,'"']},s)})]})})]})]})]})};let lZ={"BadRequestError (400)":"BadRequestErrorRetries","AuthenticationError (401)":"AuthenticationErrorRetries","TimeoutError (408)":"TimeoutErrorRetries","RateLimitError (429)":"RateLimitErrorRetries","ContentPolicyViolationError (400)":"ContentPolicyViolationErrorRetries","InternalServerError (500)":"InternalServerErrorRetries"};var lw=e=>{let{accessToken:s,token:t,userRole:l,userID:a,modelData:r={data:[]},keys:i,setModelData:n,premiumUser:o,teams:m}=e,[u]=A.Z.useForm(),[x]=A.Z.useForm(),[h,p]=(0,d.useState)(null),[g,f]=(0,d.useState)(""),[_,N]=(0,d.useState)([]),[Z,w]=(0,d.useState)([]),[C,I]=(0,d.useState)(sW.Cl.OpenAI),[T,E]=(0,d.useState)(null),[L,P]=(0,d.useState)(!1),[M,O]=(0,d.useState)(!1),[D,F]=(0,d.useState)(null),[R,z]=(0,d.useState)([]),[U,q]=(0,d.useState)([]),[B,K]=(0,d.useState)(null),[H,Y]=(0,d.useState)([]),[J,W]=(0,d.useState)([]),[$,Q]=(0,d.useState)([]),[X,ee]=(0,d.useState)([]),[es,et]=(0,d.useState)([]),[el,ea]=(0,d.useState)([]),[er,ec]=(0,d.useState)([]),[ed,em]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[eu,ex]=(0,d.useState)(null),[eh,ep]=(0,d.useState)(null),[eg,ej]=(0,d.useState)(0),[ef,ev]=(0,d.useState)({}),[ey,eb]=(0,d.useState)([]),[e_,eN]=(0,d.useState)(!1),[eZ,ew]=(0,d.useState)(null),[ek,eS]=(0,d.useState)(null),[eC,eA]=(0,d.useState)([]),[eT,eE]=(0,d.useState)([]),[eL,eP]=(0,d.useState)({}),[eM,eO]=(0,d.useState)(!1),[eD,eF]=(0,d.useState)(null),[eR,ez]=(0,d.useState)(!1),[eU,eq]=(0,d.useState)(null),[eV,eB]=(0,d.useState)(null),[eK,eG]=(0,d.useState)(null),[eH,eY]=(0,d.useState)(null),[eJ,eW]=(0,d.useState)(""),[e$,eQ]=(0,d.useState)("personal"),[eX,e0]=(0,d.useState)("current_team"),[e1,e2]=(0,d.useState)(!1),[e5,e6]=(0,d.useState)(!1),[st,sa]=(0,d.useState)(!1),[sr,si]=(0,d.useState)(new Set),sn=(0,d.useRef)(null),so=(0,d.useRef)(null),[sc,sd]=(0,d.useState)({pageIndex:0,pageSize:50}),[sm,su]=(0,d.useState)(0),sx=(0,d.useMemo)(()=>r&&r.data&&0!==r.data.length?r.data.filter(e=>{var s,t,l,a,r;let i=""===eJ||e.model_name.toLowerCase().includes(eJ.toLowerCase()),n="all"===B||e.model_name===B||!B||"wildcard"===B&&(null===(s=e.model_name)||void 0===s?void 0:s.includes("*")),o="all"===eH||(null===(t=e.model_info.access_groups)||void 0===t?void 0:t.includes(eH))||!eH,c=!0;return"current_team"===eX&&(c="personal"===e$?(null===(l=e.model_info)||void 0===l?void 0:l.direct_access)===!0:(null===(r=e.model_info)||void 0===r?void 0:null===(a=r.access_via_team_ids)||void 0===a?void 0:a.includes(e$))===!0),i&&n&&o&&c}):[],[r,eJ,B,eH,e$,eX]),sh=(0,d.useMemo)(()=>{let e=sc.pageIndex*sc.pageSize,s=e+sc.pageSize;return sx.slice(e,s)},[sx,sc.pageIndex,sc.pageSize]);(0,d.useEffect)(()=>{sd(e=>({...e,pageIndex:0}))},[eJ,B,eH,e$,eX]);let sp=async(e,t,r)=>{if(console.log("Updating model metrics for group:",e),!s||!a||!l||!t||!r)return;console.log("inside updateModelMetrics - startTime:",t,"endTime:",r),K(e);let i=null==eZ?void 0:eZ.token;void 0===i&&(i=null);let n=ek;void 0===n&&(n=null);try{let o=await (0,j.modelMetricsCall)(s,a,l,e,t.toISOString(),r.toISOString(),i,n);console.log("Model metrics response:",o),Y(o.data),W(o.all_api_bases);let c=await (0,j.streamingModelMetricsCall)(s,e,t.toISOString(),r.toISOString());Q(c.data),ee(c.all_api_bases);let d=await (0,j.modelExceptionsCall)(s,a,l,e,t.toISOString(),r.toISOString(),i,n);console.log("Model exceptions response:",d),et(d.data),ea(d.exception_types);let m=await (0,j.modelMetricsSlowResponsesCall)(s,a,l,e,t.toISOString(),r.toISOString(),i,n);if(console.log("slowResponses:",m),ec(m),e){let l=await (0,j.adminGlobalActivityExceptions)(s,null==t?void 0:t.toISOString().split("T")[0],null==r?void 0:r.toISOString().split("T")[0],e);ev(l);let a=await (0,j.adminGlobalActivityExceptionsPerDeployment)(s,null==t?void 0:t.toISOString().split("T")[0],null==r?void 0:r.toISOString().split("T")[0],e);eb(a)}}catch(e){console.error("Failed to fetch model metrics",e)}},sg=async e=>{try{let s=await (0,j.credentialListCall)(e);console.log("credentials: ".concat(JSON.stringify(s))),eE(s.credentials)}catch(e){console.error("Error fetching credentials:",e)}};(0,d.useEffect)(()=>{sp(B,ed.from,ed.to)},[eZ,ek,eV]),(0,d.useEffect)(()=>{let e=e=>{sn.current&&!sn.current.contains(e.target)&&sa(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let sj={name:"file",accept:".json",beforeUpload:e=>{if("application/json"===e.type){let s=new FileReader;s.onload=e=>{if(e.target){let s=e.target.result;console.log("Resetting vertex_credentials to JSON; jsonStr: ".concat(s)),u.setFieldsValue({vertex_credentials:s}),console.log("Form values right after setting:",u.getFieldsValue())}},s.readAsText(e)}return!1},onChange(e){console.log("Upload onChange triggered with values:",e),console.log("Current form values:",u.getFieldsValue()),"uploading"!==e.file.status&&console.log(e.file,e.fileList),"done"===e.file.status?eo.Z.success("".concat(e.file.name," file uploaded successfully")):"error"===e.file.status&&eo.Z.fromBackend("".concat(e.file.name," file upload failed."))}},sf=()=>{f(new Date().toLocaleString())},sv=async()=>{if(!s){console.error("Access token is missing");return}try{let e={router_settings:{}};"global"===B?(console.log("Saving global retry policy:",eh),eh&&(e.router_settings.retry_policy=eh),eo.Z.success("Global retry settings saved successfully")):(console.log("Saving model group retry policy for",B,":",eu),eu&&(e.router_settings.model_group_retry_policy=eu),eo.Z.success("Retry settings saved successfully for ".concat(B))),await (0,j.setCallbacksCall)(s,e)}catch(e){console.error("Failed to save retry settings:",e),eo.Z.fromBackend("Failed to save retry settings")}};if((0,d.useEffect)(()=>{if(!s||!t||!l||!a)return;let e=async()=>{try{var e,t,r,i,o,c,d,m,u,x,h,p;let g=await (0,j.modelInfoCall)(s,a,l);console.log("Model data response:",g.data),n(g);let f=await (0,j.modelSettingsCall)(s);f&&w(f);let v=new Set;for(let e=0;e0&&(_=y[y.length-1],console.log("_initial_model_group:",_)),console.log("selectedModelGroup:",B);let N=await (0,j.modelMetricsCall)(s,a,l,_,null===(e=ed.from)||void 0===e?void 0:e.toISOString(),null===(t=ed.to)||void 0===t?void 0:t.toISOString(),null==eZ?void 0:eZ.token,ek);console.log("Model metrics response:",N),Y(N.data),W(N.all_api_bases);let Z=await (0,j.streamingModelMetricsCall)(s,_,null===(r=ed.from)||void 0===r?void 0:r.toISOString(),null===(i=ed.to)||void 0===i?void 0:i.toISOString());Q(Z.data),ee(Z.all_api_bases);let k=await (0,j.modelExceptionsCall)(s,a,l,_,null===(o=ed.from)||void 0===o?void 0:o.toISOString(),null===(c=ed.to)||void 0===c?void 0:c.toISOString(),null==eZ?void 0:eZ.token,ek);console.log("Model exceptions response:",k),et(k.data),ea(k.exception_types);let S=await (0,j.modelMetricsSlowResponsesCall)(s,a,l,_,null===(d=ed.from)||void 0===d?void 0:d.toISOString(),null===(m=ed.to)||void 0===m?void 0:m.toISOString(),null==eZ?void 0:eZ.token,ek),C=await (0,j.adminGlobalActivityExceptions)(s,null===(u=ed.from)||void 0===u?void 0:u.toISOString().split("T")[0],null===(x=ed.to)||void 0===x?void 0:x.toISOString().split("T")[0],_);ev(C);let I=await (0,j.adminGlobalActivityExceptionsPerDeployment)(s,null===(h=ed.from)||void 0===h?void 0:h.toISOString().split("T")[0],null===(p=ed.to)||void 0===p?void 0:p.toISOString().split("T")[0],_);eb(I),console.log("dailyExceptions:",C),console.log("dailyExceptionsPerDeplyment:",I),console.log("slowResponses:",S),ec(S);let A=await (0,j.allEndUsersCall)(s);eA(null==A?void 0:A.map(e=>e.user_id));let T=(await (0,j.getCallbacksCall)(s,a,l)).router_settings;console.log("routerSettingsInfo:",T);let E=T.model_group_retry_policy,L=T.num_retries;console.log("model_group_retry_policy:",E),console.log("default_retries:",L),ex(E),ep(T.retry_policy),ej(L);let P=T.model_group_alias||{};eP(P)}catch(e){console.error("There was an error fetching the model data",e)}};s&&t&&l&&a&&e();let r=async()=>{let e=await (0,j.modelCostMap)(s);console.log("received model cost map data: ".concat(Object.keys(e))),p(e)};null==h&&r(),sf()},[s,t,l,a,h,g,eV]),!r||!s||!t||!l||!a)return(0,c.jsx)("div",{children:"Loading..."});let sy=[],sb=[];for(let e=0;e(console.log("GET PROVIDER CALLED! - ".concat(h)),null!=h&&"object"==typeof h&&e in h)?h[e].litellm_provider:"openai";if(t){let e=t.split("/"),s=e[0];(i=l)||(i=1===e.length?u(t):s)}else i="-";a&&(n=null==a?void 0:a.input_cost_per_token,o=null==a?void 0:a.output_cost_per_token,c=null==a?void 0:a.max_tokens,d=null==a?void 0:a.max_input_tokens),(null==s?void 0:s.litellm_params)&&(m=Object.fromEntries(Object.entries(null==s?void 0:s.litellm_params).filter(e=>{let[s]=e;return"model"!==s&&"api_base"!==s}))),r.data[e].provider=i,r.data[e].input_cost=n,r.data[e].output_cost=o,r.data[e].litellm_model_name=t,sb.push(i),r.data[e].input_cost&&(r.data[e].input_cost=(1e6*Number(r.data[e].input_cost)).toFixed(2)),r.data[e].output_cost&&(r.data[e].output_cost=(1e6*Number(r.data[e].output_cost)).toFixed(2)),r.data[e].max_tokens=c,r.data[e].max_input_tokens=d,r.data[e].api_base=null==s?void 0:null===(sw=s.litellm_params)||void 0===sw?void 0:sw.api_base,r.data[e].cleanedLitellmParams=m,sy.push(s.model_name),console.log(r.data[e])}if(l&&"Admin Viewer"==l){let{Title:e,Paragraph:s}=en.default;return(0,c.jsxs)("div",{children:[(0,c.jsx)(e,{level:1,children:"Access Denied"}),(0,c.jsx)(s,{children:"Ask your proxy admin for access to view all models"})]})}let sk=(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mb-1",children:"Select API Key Name"}),o?(0,c.jsxs)("div",{children:[(0,c.jsxs)(e3.Z,{defaultValue:"all-keys",children:[(0,c.jsx)(ei.Z,{value:"all-keys",onClick:()=>{ew(null)},children:"All Keys"},"all-keys"),null==i?void 0:i.map((e,s)=>e&&null!==e.key_alias&&e.key_alias.length>0?(0,c.jsx)(ei.Z,{value:String(s),onClick:()=>{ew(e)},children:e.key_alias},s):null)]}),(0,c.jsx)(k.Z,{className:"mt-1",children:"Select Customer Name"}),(0,c.jsxs)(e3.Z,{defaultValue:"all-customers",children:[(0,c.jsx)(ei.Z,{value:"all-customers",onClick:()=>{eS(null)},children:"All Customers"},"all-customers"),null==eC?void 0:eC.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,onClick:()=>{eS(e)},children:e},s))]}),(0,c.jsx)(k.Z,{className:"mt-1",children:"Select Team"}),(0,c.jsxs)(e3.Z,{className:"w-64 relative z-50",defaultValue:"all",value:null!=eK?eK:"all",onValueChange:e=>eG("all"===e?null:e),children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Teams"}),null==m?void 0:m.filter(e=>e.team_id).map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:e.team_alias?"".concat(e.team_alias," (").concat(e.team_id.slice(0,8),"...)"):"Team ".concat(e.team_id.slice(0,8),"...")},e.team_id))]})]}):(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mt-1",children:"Select Team"}),(0,c.jsxs)(e3.Z,{className:"w-64 relative z-50",defaultValue:"all",value:null!=eK?eK:"all",onValueChange:e=>eG("all"===e?null:e),children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Teams"}),null==m?void 0:m.filter(e=>e.team_id).map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:e.team_alias?"".concat(e.team_alias," (").concat(e.team_id.slice(0,8),"...)"):"Team ".concat(e.team_id.slice(0,8),"...")},e.team_id))]})]})]}),sS=e=>{var s,t;let{payload:l,active:a}=e;if(!a||!l)return null;let r=null===(t=l[0])||void 0===t?void 0:null===(s=t.payload)||void 0===s?void 0:s.date,i=l.sort((e,s)=>s.value-e.value);if(i.length>5){let e=i.length-5;(i=i.slice(0,5)).push({dataKey:"".concat(e," other deployments"),value:l.slice(5).reduce((e,s)=>e+s.value,0),color:"gray"})}return(0,c.jsxs)("div",{className:"w-150 rounded-tremor-default border border-tremor-border bg-tremor-background p-2 text-tremor-default shadow-tremor-dropdown",children:[r&&(0,c.jsxs)("p",{className:"text-tremor-content-emphasis mb-2",children:["Date: ",r]}),i.map((e,s)=>{let t=parseFloat(e.value.toFixed(5)),l=0===t&&e.value>0?"<0.00001":t.toFixed(5);return(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 mt-1 rounded-full bg-".concat(e.color,"-500")}),(0,c.jsx)("p",{className:"text-tremor-content",children:e.dataKey})]}),(0,c.jsx)("p",{className:"font-medium text-tremor-content-emphasis text-righ ml-2",children:l})]},s)})]})};console.log("selectedProvider: ".concat(C)),console.log("providerModels.length: ".concat(_.length));let sC=Object.keys(sW.Cl).find(e=>sW.Cl[e]===C);return(sC&&Z&&Z.find(e=>e.name===sW.fK[sC]),eU)?(0,c.jsx)("div",{className:"w-full h-full",children:(0,c.jsx)(ty,{teamId:eU,onClose:()=>eq(null),accessToken:s,is_team_admin:"Admin"===l,is_proxy_admin:"Proxy Admin"===l,userModels:sy,editTeam:!1,onUpdate:sf})}):(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("h2",{className:"text-lg font-semibold",children:"Model Management"}),eI.ZL.includes(l)?(0,c.jsx)("p",{className:"text-sm text-gray-600",children:"Add and manage models for the proxy"}):(0,c.jsx)("p",{className:"text-sm text-gray-600",children:"Add models for teams you are an admin for."})]})}),eD?(0,c.jsx)(tO,{modelId:eD,editModel:!0,onClose:()=>{eF(null),ez(!1)},modelData:r.data.find(e=>e.model_info.id===eD),accessToken:s,userID:a,userRole:l,setEditModalVisible:O,setSelectedModel:F,onModelUpdate:e=>{n({...r,data:r.data.map(s=>s.model_info.id===e.model_info.id?e:s)}),sf()},modelAccessGroups:U}):(0,c.jsxs)(e7.Z,{index:sm,onIndexChange:su,className:"gap-2 h-[75vh] w-full ",children:[(0,c.jsxs)(e9.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsxs)("div",{className:"flex",children:[eI.ZL.includes(l)?(0,c.jsx)(e8.Z,{children:"All Models"}):(0,c.jsx)(e8.Z,{children:"Your Models"}),(0,c.jsx)(e8.Z,{children:"Add Model"}),eI.ZL.includes(l)&&(0,c.jsx)(e8.Z,{children:"LLM Credentials"}),eI.ZL.includes(l)&&(0,c.jsx)(e8.Z,{children:"Pass-Through Endpoints"}),eI.ZL.includes(l)&&(0,c.jsx)(e8.Z,{children:"Health Status"}),eI.ZL.includes(l)&&(0,c.jsx)(e8.Z,{children:"Model Analytics"}),eI.ZL.includes(l)&&(0,c.jsx)(e8.Z,{children:"Model Retry Settings"}),eI.ZL.includes(l)&&(0,c.jsx)(e8.Z,{children:"Model Group Alias"}),eI.ZL.includes(l)&&(0,c.jsx)(e8.Z,{children:"Price Data Reload"})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[g&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",g]}),(0,c.jsx)(sL.Z,{icon:sl.Z,variant:"shadow",size:"xs",className:"self-center",onClick:sf})]})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsx)(y.Z,{children:(0,c.jsx)("div",{className:"flex flex-col space-y-4",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsxs)("div",{className:"border-b px-6 py-4 bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold text-gray-900",children:"Current Team:"}),(0,c.jsxs)(e3.Z,{className:"w-80",defaultValue:"personal",value:e$,onValueChange:e=>eQ(e),children:[(0,c.jsx)(ei.Z,{value:"personal",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"Personal"})]})}),null==m?void 0:m.filter(e=>e.team_id).map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e.team_alias?"".concat(e.team_alias.slice(0,30),"..."):"Team ".concat(e.team_id.slice(0,30),"...")})]})},e.team_id))]})]}),(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold text-gray-900",children:"View:"}),(0,c.jsxs)(e3.Z,{className:"w-64",defaultValue:"current_team",value:eX,onValueChange:e=>e0(e),children:[(0,c.jsx)(ei.Z,{value:"current_team",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-purple-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"Current Team Models"})]})}),(0,c.jsx)(ei.Z,{value:"all",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-gray-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"All Available Models"})]})})]})]})]}),"current_team"===eX&&(0,c.jsxs)("div",{className:"flex items-start gap-2 mt-3",children:[(0,c.jsx)(V.Z,{className:"text-gray-400 mt-0.5 flex-shrink-0 text-xs"}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"personal"===e$?(0,c.jsxs)("span",{children:["To access these models: Create a Virtual Key without selecting a team on the"," ",(0,c.jsx)("a",{href:"/?login=success&page=api-keys",className:"text-gray-600 hover:text-gray-800 underline",children:"Virtual Keys page"})]}):(0,c.jsxs)("span",{children:['To access these models: Create a Virtual Key and select Team as "',e$,'" on the'," ",(0,c.jsx)("a",{href:"/?login=success&page=api-keys",className:"text-gray-600 hover:text-gray-800 underline",children:"Virtual Keys page"})]})})]})]}),(0,c.jsx)("div",{className:"border-b px-6 py-4",children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search model names...",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:eJ,onChange:e=>eW(e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 ".concat(e1?"bg-gray-100":""),onClick:()=>e2(!e1),children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filters"]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",onClick:()=>{eW(""),K("all"),eY(null),eQ("personal"),e0("current_team"),sd({pageIndex:0,pageSize:50})},children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Reset Filters"]})]}),e1&&(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-3",children:[(0,c.jsx)("div",{className:"w-64",children:(0,c.jsxs)(e3.Z,{value:null!=B?B:"all",onValueChange:e=>K("all"===e?"all":e),placeholder:"Filter by Public Model Name",children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Models"}),(0,c.jsx)(ei.Z,{value:"wildcard",children:"Wildcard Models (*)"}),R.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,children:e},s))]})}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsxs)(e3.Z,{value:null!=eH?eH:"all",onValueChange:e=>eY("all"===e?null:e),placeholder:"Filter by Model Access Group",children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Model Access Groups"}),U.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,children:e},s))]})})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-sm text-gray-700",children:sx.length>0?"Showing ".concat(sc.pageIndex*sc.pageSize+1," - ").concat(Math.min((sc.pageIndex+1)*sc.pageSize,sx.length)," of ").concat(sx.length," results"):"Showing 0 results"}),sx.length>sc.pageSize&&(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("button",{onClick:()=>sd(e=>({...e,pageIndex:e.pageIndex-1})),disabled:0===sc.pageIndex,className:"px-3 py-1 text-sm border rounded-md ".concat(0===sc.pageIndex?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Previous"}),(0,c.jsx)("button",{onClick:()=>sd(e=>({...e,pageIndex:e.pageIndex+1})),disabled:sc.pageIndex>=Math.ceil(sx.length/sc.pageSize)-1,className:"px-3 py-1 text-sm border rounded-md ".concat(sc.pageIndex>=Math.ceil(sx.length/sc.pageSize)-1?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Next"})]})]})]})}),(0,c.jsx)(t5.C,{columns:t3(l,a,o,eF,eq,te,e=>{F(e),O(!0)},sf,ez,sr,si),data:sh,isLoading:!1,table:so})]})})})}),(0,c.jsx)(se.Z,{className:"h-full",children:(0,c.jsx)(t4,{form:u,handleOk:()=>{console.log("\uD83D\uDE80 handleOk called from model dashboard!"),console.log("Current form values:",u.getFieldsValue()),u.validateFields().then(e=>{console.log("✅ Validation passed, submitting:",e),sQ(e,s,u,sf)}).catch(e=>{var s;console.error("❌ Validation failed:",e),console.error("Form errors:",e.errorFields);let t=(null===(s=e.errorFields)||void 0===s?void 0:s.map(e=>"".concat(e.name.join("."),": ").concat(e.errors.join(", "))).join(" | "))||"Unknown validation error";eo.Z.fromBackend("Please fill in the following required fields: ".concat(t))})},selectedProvider:C,setSelectedProvider:I,providerModels:_,setProviderModelsFn:e=>{let s=(0,sW.bK)(e,h);N(s),console.log("providerModels: ".concat(s))},getPlaceholder:sW.ph,uploadProps:sj,showAdvancedSettings:eM,setShowAdvancedSettings:eO,teams:m,credentials:eT,accessToken:s,userRole:l,premiumUser:o})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(s9,{accessToken:s,uploadProps:sj,credentialList:eT,fetchCredentials:sg})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(l_,{accessToken:s,userRole:l,userID:a,modelData:r})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(ln,{accessToken:s,modelData:r,all_models_on_proxy:sy,getDisplayModelName:te,setSelectedModelId:eF})}),(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)(y.Z,{numItems:4,className:"mt-2 mb-2",children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(tt,{value:ed,className:"mr-2",onValueChange:e=>{em(e),sp(B,e.from,e.to)}})}),(0,c.jsxs)(v.Z,{className:"ml-2",children:[(0,c.jsx)(k.Z,{children:"Select Model Group"}),(0,c.jsx)(e3.Z,{defaultValue:B||R[0],value:B||R[0],children:R.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,onClick:()=>sp(e,ed.from,ed.to),children:e},s))})]}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(tr.Z,{trigger:"click",content:sk,overlayStyle:{width:"20vw"},children:(0,c.jsx)(b.Z,{icon:sZ.Z,size:"md",variant:"secondary",className:"mt-4 ml-2",style:{border:"none"},onClick:()=>eN(!0)})})})]}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(G.Z,{className:"mr-2 max-h-[400px] min-h-[400px]",children:(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{variant:"line",defaultValue:"1",children:[(0,c.jsx)(e8.Z,{value:"1",children:"Avg. Latency per Token"}),(0,c.jsx)(e8.Z,{value:"2",children:"Time to first token"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsx)("p",{className:"text-gray-500 italic",children:" (seconds/token)"}),(0,c.jsx)(k.Z,{className:"text-gray-500 italic mt-1 mb-1",children:"average Latency for successfull requests divided by the total tokens"}),H&&J&&(0,c.jsx)(tl.Z,{title:"Model Latency",className:"h-72",data:H,showLegend:!1,index:"date",categories:J,connectNulls:!0,customTooltip:sS})]}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(tn,{modelMetrics:$,modelMetricsCategories:X,customTooltip:sS,premiumUser:o})})]})]})})}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(G.Z,{className:"ml-2 max-h-[400px] min-h-[400px] overflow-y-auto",children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Deployment"}),(0,c.jsx)(sF.Z,{children:"Success Responses"}),(0,c.jsxs)(sF.Z,{children:["Slow Responses ",(0,c.jsx)("p",{children:"Success Responses taking 600+s"})]})]})}),(0,c.jsx)(sM.Z,{children:er.map((e,s)=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:e.api_base}),(0,c.jsx)(sO.Z,{children:e.total_count}),(0,c.jsx)(sO.Z,{children:e.slow_count})]},s))})]})})})]}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 w-full mt-2",children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(S.Z,{children:["All Exceptions for ",B]}),(0,c.jsx)(ta.Z,{className:"h-60",data:es,index:"model",categories:el,stack:!0,yAxisWidth:30})]})}),(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full mt-2",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(S.Z,{children:["All Up Rate Limit Errors (429) for ",B]}),(0,c.jsxs)(y.Z,{numItems:1,children:[(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sJ.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Num Rate Limit Errors ",ef.sum_num_rate_limit_exceptions]}),(0,c.jsx)(ta.Z,{className:"h-40",data:ef.daily_data,index:"date",colors:["rose"],categories:["num_rate_limit_exceptions"],onValueChange:e=>console.log(e)})]}),(0,c.jsx)(v.Z,{})]})]}),o?(0,c.jsx)(c.Fragment,{children:ey.map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:e.api_base?e.api_base:"Unknown API Base"}),(0,c.jsx)(y.Z,{numItems:1,children:(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sJ.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Num Rate Limit Errors (429) ",e.sum_num_rate_limit_exceptions]}),(0,c.jsx)(ta.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["rose"],categories:["num_rate_limit_exceptions"],onValueChange:e=>console.log(e)})]})})]},s))}):(0,c.jsx)(c.Fragment,{children:ey&&ey.length>0&&ey.slice(0,1).map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"✨ Rate Limit Errors by Deployment"}),(0,c.jsx)("p",{className:"mb-2 text-gray-500 italic text-[12px]",children:"Upgrade to see exceptions for all deployments"}),(0,c.jsx)(b.Z,{variant:"primary",className:"mb-2",children:(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"Get Free Trial"})}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:e.api_base}),(0,c.jsx)(y.Z,{numItems:1,children:(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sJ.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Num Rate Limit Errors ",e.sum_num_rate_limit_exceptions]}),(0,c.jsx)(ta.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["rose"],categories:["num_rate_limit_exceptions"],onValueChange:e=>console.log(e)})]})})]})]},s))})]})]}),(0,c.jsxs)(se.Z,{children:[(0,c.jsx)("div",{className:"flex items-center gap-4 mb-6",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(k.Z,{children:"Retry Policy Scope:"}),(0,c.jsxs)(e3.Z,{className:"ml-2 w-48",defaultValue:"global",value:"global"===B?"global":B||R[0],onValueChange:e=>K(e),children:[(0,c.jsx)(ei.Z,{value:"global",children:"Global Default"}),R.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,onClick:()=>K(e),children:e},s))]})]})}),"global"===B?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(S.Z,{children:"Global Retry Policy"}),(0,c.jsx)(k.Z,{className:"mb-6",children:"Default retry settings applied to all model groups unless overridden"})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(S.Z,{children:["Retry Policy for ",B]}),(0,c.jsx)(k.Z,{className:"mb-6",children:"Model-specific retry settings. Falls back to global defaults if not set."})]}),lZ&&(0,c.jsx)("table",{children:(0,c.jsx)("tbody",{children:Object.entries(lZ).map((e,s)=>{var t,l,a,r;let i,[n,o]=e;if("global"===B)i=null!==(t=null==eh?void 0:eh[o])&&void 0!==t?t:eg;else{let e=null==eu?void 0:null===(l=eu[B])||void 0===l?void 0:l[o];i=null!=e?e:null!==(a=null==eh?void 0:eh[o])&&void 0!==a?a:eg}return(0,c.jsxs)("tr",{className:"flex justify-between items-center mt-2",children:[(0,c.jsxs)("td",{children:[(0,c.jsx)(k.Z,{children:n}),"global"!==B&&(0,c.jsxs)(k.Z,{className:"text-xs text-gray-500 ml-2",children:["(Global: ",null!==(r=null==eh?void 0:eh[o])&&void 0!==r?r:eg,")"]})]}),(0,c.jsx)("td",{children:(0,c.jsx)(e4.Z,{className:"ml-5",value:i,min:0,step:1,onChange:e=>{"global"===B?ep(s=>null==e?s:{...null!=s?s:{},[o]:e}):ex(s=>{var t;let l=null!==(t=null==s?void 0:s[B])&&void 0!==t?t:{};return{...null!=s?s:{},[B]:{...l,[o]:e}}})}})})]},s)})})}),(0,c.jsx)(b.Z,{className:"mt-6 mr-8",onClick:sv,children:"Save"})]}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(lN,{accessToken:s,initialModelGroupAlias:eL,onAliasUpdate:eP})}),(0,c.jsx)(se.Z,{children:(0,c.jsxs)("div",{className:"p-6",children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(S.Z,{children:"Price Data Management"}),(0,c.jsx)(k.Z,{className:"text-tremor-content",children:"Manage model pricing data and configure automatic reload schedules"})]}),(0,c.jsx)(lt,{accessToken:s,onReloadSuccess:()=>{(async()=>{p(await (0,j.modelCostMap)(s))})()},buttonText:"Reload Price Data",size:"middle",type:"primary",className:"w-full"})]})})]})]})]})})})},lk=e=>{let{visible:s,possibleUIRoles:t,onCancel:l,user:a,onSubmit:r}=e,[i,n]=(0,d.useState)(a),[o]=A.Z.useForm();(0,d.useEffect)(()=>{o.resetFields()},[a]);let m=async()=>{o.resetFields(),l()},u=async e=>{r(e),o.resetFields(),l()};return a?(0,c.jsx)(T.Z,{visible:s,onCancel:m,footer:null,title:"Edit User "+a.user_id,width:1e3,children:(0,c.jsx)(A.Z,{form:o,onFinish:u,initialValues:a,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"User Email",tooltip:"Email of the User",name:"user_email",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"user_id",name:"user_id",hidden:!0,children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"User Role",name:"user_role",children:(0,c.jsx)(I.default,{children:t&&Object.entries(t).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:"Spend (USD)",name:"spend",tooltip:"(float) - Spend of all LLM calls completed by this user",help:"Across all keys (including keys with team_id).",children:(0,c.jsx)(e4.Z,{min:0,step:.01})}),(0,c.jsx)(A.Z.Item,{label:"User Budget (USD)",name:"max_budget",tooltip:"(float) - Maximum budget of this user",help:"Maximum budget of this user.",children:(0,c.jsx)(O,{min:0,step:.01})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsx)(eE,{})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})})]})})}):null},lS=t(16853);function lC(e){let{userData:s,onCancel:t,onSubmit:l,teams:a,accessToken:r,userID:i,userRole:n,userModels:o,possibleUIRoles:m,isBulkEdit:u=!1}=e,[x]=A.Z.useForm();return d.useEffect(()=>{var e,t,l,a,r,i;x.setFieldsValue({user_id:s.user_id,user_email:null===(e=s.user_info)||void 0===e?void 0:e.user_email,user_role:null===(t=s.user_info)||void 0===t?void 0:t.user_role,models:(null===(l=s.user_info)||void 0===l?void 0:l.models)||[],max_budget:null===(a=s.user_info)||void 0===a?void 0:a.max_budget,budget_duration:null===(r=s.user_info)||void 0===r?void 0:r.budget_duration,metadata:(null===(i=s.user_info)||void 0===i?void 0:i.metadata)?JSON.stringify(s.user_info.metadata,null,2):void 0})},[s,x]),(0,c.jsxs)(A.Z,{form:x,onFinish:e=>{if(e.metadata&&"string"==typeof e.metadata)try{e.metadata=JSON.parse(e.metadata)}catch(e){console.error("Error parsing metadata JSON:",e);return}l(e)},layout:"vertical",children:[!u&&(0,c.jsx)(A.Z.Item,{label:"User ID",name:"user_id",children:(0,c.jsx)(_.Z,{disabled:!0})}),!u&&(0,c.jsx)(A.Z.Item,{label:"Email",name:"user_email",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Global Proxy Role"," ",(0,c.jsx)(B.Z,{title:"This is the role that the user will globally on the proxy. This role is independent of any team/org specific roles.",children:(0,c.jsx)(V.Z,{})})]}),name:"user_role",children:(0,c.jsx)(I.default,{children:m&&Object.entries(m).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Personal Models"," ",(0,c.jsx)(B.Z,{title:"Select which models this user can access outside of team-scope. Choose 'All Proxy Models' to grant access to all models available on the proxy.",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},disabled:!eI.ZL.includes(n||""),children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),(0,c.jsx)(I.default.Option,{value:"no-default-models",children:"No Default Models"},"no-default-models"),o.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsx)(eE,{})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(lS.Z,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",type:"button",onClick:t,children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})]})}let{Text:lI,Title:lA}=en.default;var lT=e=>{let{visible:s,onCancel:t,selectedUsers:l,possibleUIRoles:a,accessToken:r,onSuccess:i,teams:n,userRole:o,userModels:m,allowAllUsers:u=!1}=e,[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)([]),[f,v]=(0,d.useState)(null),[y,b]=(0,d.useState)(!1),[_,N]=(0,d.useState)(!1),Z=()=>{g([]),v(null),b(!1),N(!1),t()},w=d.useMemo(()=>({user_id:"bulk_edit",user_info:{user_email:"",user_role:"",teams:[],models:[],max_budget:null,spend:0,metadata:{},created_at:null,updated_at:null},keys:[],teams:n||[]}),[n,s]),k=async e=>{if(console.log("formValues",e),!r){eo.Z.fromBackend("Access token not found");return}h(!0);try{let s=l.map(e=>e.user_id),a={};e.user_role&&""!==e.user_role&&(a.user_role=e.user_role),null!==e.max_budget&&void 0!==e.max_budget&&(a.max_budget=e.max_budget),e.models&&e.models.length>0&&(a.models=e.models),e.budget_duration&&""!==e.budget_duration&&(a.budget_duration=e.budget_duration),e.metadata&&Object.keys(e.metadata).length>0&&(a.metadata=e.metadata);let n=Object.keys(a).length>0,o=y&&p.length>0;if(!n&&!o){eo.Z.fromBackend("Please modify at least one field or select teams to add users to");return}let c=[];if(n){if(_){let e=await (0,j.userBulkUpdateUserCall)(r,a,void 0,!0);c.push("Updated all users (".concat(e.total_requested," total)"))}else await (0,j.userBulkUpdateUserCall)(r,a,s),c.push("Updated ".concat(s.length," user(s)"))}if(o){let e=[];for(let s of p)try{let t=null;_?t=null:l.map(e=>({user_id:e.user_id,role:"user",user_email:e.user_email||null}));let a=await (0,j.teamBulkMemberAddCall)(r,s,t||null,f||void 0,_);console.log("result",a),e.push({teamId:s,success:!0,successfulAdditions:a.successful_additions,failedAdditions:a.failed_additions})}catch(t){console.error("Failed to add users to team ".concat(s,":"),t),e.push({teamId:s,success:!1,error:t})}let s=e.filter(e=>e.success),t=e.filter(e=>!e.success);if(s.length>0){let e=s.reduce((e,s)=>e+s.successfulAdditions,0);c.push("Added users to ".concat(s.length," team(s) (").concat(e," total additions)"))}t.length>0&&tj.ZP.warning("Failed to add users to ".concat(t.length," team(s)"))}c.length>0&&eo.Z.success(c.join(". ")),g([]),v(null),b(!1),N(!1),i(),t()}catch(e){console.error("Bulk operation failed:",e),eo.Z.fromBackend("Failed to perform bulk operations")}finally{h(!1)}};return(0,c.jsxs)(T.Z,{visible:s,onCancel:Z,footer:null,title:_?"Bulk Edit All Users":"Bulk Edit ".concat(l.length," User(s)"),width:800,children:[u&&(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsx)(tc.Z,{checked:_,onChange:e=>N(e.target.checked),children:(0,c.jsx)(lI,{strong:!0,children:"Update ALL users in the system"})}),_&&(0,c.jsx)("div",{style:{marginTop:8},children:(0,c.jsx)(lI,{type:"warning",style:{fontSize:"12px"},children:"⚠️ This will apply changes to ALL users in the system, not just the selected ones."})})]}),!_&&(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsxs)(lA,{level:5,children:["Selected Users (",l.length,"):"]}),(0,c.jsx)(em.Z,{size:"small",bordered:!0,dataSource:l,pagination:!1,scroll:{y:200},rowKey:"user_id",columns:[{title:"User ID",dataIndex:"user_id",key:"user_id",width:"30%",render:e=>(0,c.jsx)(lI,{strong:!0,style:{fontSize:"12px"},children:e.length>20?"".concat(e.slice(0,20),"..."):e})},{title:"Email",dataIndex:"user_email",key:"user_email",width:"25%",render:e=>(0,c.jsx)(lI,{type:"secondary",style:{fontSize:"12px"},children:e||"No email"})},{title:"Current Role",dataIndex:"user_role",key:"user_role",width:"25%",render:e=>{var s;return(0,c.jsx)(lI,{style:{fontSize:"12px"},children:(null==a?void 0:null===(s=a[e])||void 0===s?void 0:s.ui_label)||e})}},{title:"Budget",dataIndex:"max_budget",key:"max_budget",width:"20%",render:e=>(0,c.jsx)(lI,{style:{fontSize:"12px"},children:null!==e?"$".concat(e):"Unlimited"})}]})]}),(0,c.jsx)(K.Z,{}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsxs)(lI,{children:[(0,c.jsx)("strong",{children:"Instructions:"})," Fill in the fields below with the values you want to apply to all selected users. You can bulk edit: role, budget, models, and metadata. You can also add users to teams."]})}),(0,c.jsx)(tA.Z,{title:"Team Management",size:"small",className:"mb-4",style:{backgroundColor:"#fafafa"},children:(0,c.jsxs)(t6.Z,{direction:"vertical",style:{width:"100%"},children:[(0,c.jsx)(tc.Z,{checked:y,onChange:e=>b(e.target.checked),children:"Add selected users to teams"}),y&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(lI,{strong:!0,children:"Select Teams:"}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select teams to add users to",value:p,onChange:g,style:{width:"100%",marginTop:8},options:(null==n?void 0:n.map(e=>({label:e.team_alias||e.team_id,value:e.team_id})))||[]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(lI,{strong:!0,children:"Team Budget (Optional):"}),(0,c.jsx)(e4.Z,{placeholder:"Max budget per user in team",value:f,onChange:e=>v(e),style:{width:"100%",marginTop:8},min:0,step:.01,precision:2}),(0,c.jsx)(lI,{type:"secondary",style:{fontSize:"12px"},children:"Leave empty for unlimited budget within team limits"})]}),(0,c.jsx)(lI,{type:"secondary",style:{fontSize:"12px"},children:'Users will be added with "user" role by default. All users will be added to each selected team.'})]})]})}),(0,c.jsx)(lC,{userData:w,onCancel:Z,onSubmit:k,teams:n,accessToken:r,userID:"bulk_edit",userRole:o,userModels:m,possibleUIRoles:a,isBulkEdit:!0}),x&&(0,c.jsx)("div",{style:{textAlign:"center",marginTop:"10px"},children:(0,c.jsxs)(lI,{children:["Updating ",_?"all users":l.length," user(s)..."]})})]})};let lE=(e,s,t,l,a,r)=>{let i=[{header:"User ID",accessorKey:"user_id",cell:e=>{let{row:s}=e;return(0,c.jsx)(B.Z,{title:s.original.user_id,children:(0,c.jsx)("span",{className:"text-xs",children:s.original.user_id?"".concat(s.original.user_id.slice(0,7),"..."):"-"})})}},{header:"Email",accessorKey:"user_email",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.user_email||"-"})}},{header:"Global Proxy Role",accessorKey:"user_role",cell:s=>{var t;let{row:l}=s;return(0,c.jsx)("span",{className:"text-xs",children:(null==e?void 0:null===(t=e[l.original.user_role])||void 0===t?void 0:t.ui_label)||"-"})}},{header:"Spend (USD)",accessorKey:"spend",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.spend?eP(s.original.spend,4):"-"})}},{header:"Budget (USD)",accessorKey:"max_budget",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:null!==s.original.max_budget?s.original.max_budget:"Unlimited"})}},{header:()=>(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{children:"SSO ID"}),(0,c.jsx)(B.Z,{title:"SSO ID is the ID of the user in the SSO provider. If the user is not using SSO, this will be null.",children:(0,c.jsx)(ll.Z,{className:"w-4 h-4"})})]}),accessorKey:"sso_user_id",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:null!==s.original.sso_user_id?s.original.sso_user_id:"-"})}},{header:"API Keys",accessorKey:"key_count",cell:e=>{let{row:s}=e;return(0,c.jsx)(y.Z,{numItems:2,children:s.original.key_count>0?(0,c.jsxs)(e6.Z,{size:"xs",color:"indigo",children:[s.original.key_count," Keys"]}):(0,c.jsx)(e6.Z,{size:"xs",color:"gray",children:"No Keys"})})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.created_at?new Date(s.original.created_at).toLocaleDateString():"-"})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.updated_at?new Date(s.original.updated_at).toLocaleDateString():"-"})}},{id:"actions",header:"",cell:e=>{let{row:s}=e;return(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(B.Z,{title:"Edit user details",zIndex:9999,children:(0,c.jsx)(sL.Z,{icon:sX.Z,size:"sm",onClick:()=>a(s.original.user_id,!0)})}),(0,c.jsx)(B.Z,{title:"Delete user",zIndex:9999,children:(0,c.jsx)(sL.Z,{icon:W.Z,size:"sm",onClick:()=>t(s.original.user_id)})}),(0,c.jsx)(B.Z,{title:"Reset Password",zIndex:9999,children:(0,c.jsx)(sL.Z,{icon:sl.Z,size:"sm",onClick:()=>l(s.original.user_id)})})]})}}];if(r){let{onSelectUser:e,onSelectAll:s,isUserSelected:t,isAllSelected:l,isIndeterminate:a}=r;return[{id:"select",header:()=>(0,c.jsx)(tc.Z,{indeterminate:a,checked:l,onChange:e=>s(e.target.checked),onClick:e=>e.stopPropagation()}),cell:s=>{let{row:l}=s;return(0,c.jsx)(tc.Z,{checked:t(l.original),onChange:s=>e(l.original,s.target.checked),onClick:e=>e.stopPropagation()})}},...i]}return i};function lL(e){var s,t,l,a,r,i,n,o,m,u,x,h,p,g,f,v,_,N,Z,w,C,I,A,T,E,P,M,O,D,F,R,z,U,q,V,B,K;let{userId:H,onClose:Y,accessToken:J,userRole:$,onDelete:Q,possibleUIRoles:X,initialTab:ee=0,startInEditMode:es=!1}=e,[et,el]=(0,d.useState)(null),[ea,er]=(0,d.useState)(!1),[ei,en]=(0,d.useState)(!0),[ed,em]=(0,d.useState)(es),[eu,ex]=(0,d.useState)([]),[eh,ep]=(0,d.useState)(!1),[eg,ej]=(0,d.useState)(null),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)(ee),[e_,eN]=(0,d.useState)({}),[eZ,ew]=(0,d.useState)(!1);d.useEffect(()=>{ev((0,j.getProxyBaseUrl)())},[]),d.useEffect(()=>{console.log("userId: ".concat(H,", userRole: ").concat($,", accessToken: ").concat(J)),(async()=>{try{if(!J)return;let e=await (0,j.userInfoCall)(J,H,$||"",!1,null,null,!0);el(e);let s=(await (0,j.modelAvailableCall)(J,H,$||"")).data.map(e=>e.id);ex(s)}catch(e){console.error("Error fetching user data:",e),eo.Z.fromBackend("Failed to fetch user data")}finally{en(!1)}})()},[J,H,$]);let ek=async()=>{if(!J){eo.Z.fromBackend("Access token not found");return}try{eo.Z.success("Generating password reset link...");let e=await (0,j.invitationCreateCall)(J,H);ej(e),ep(!0)}catch(e){eo.Z.fromBackend("Failed to generate password reset link")}},eS=async()=>{try{if(!J)return;await (0,j.userDeleteCall)(J,[H]),eo.Z.success("User deleted successfully"),Q&&Q(),Y()}catch(e){console.error("Error deleting user:",e),eo.Z.fromBackend("Failed to delete user")}},eC=async e=>{try{if(!J||!et)return;await (0,j.userUpdateUserCall)(J,e,null),el({...et,user_info:{...et.user_info,user_email:e.user_email,models:e.models,max_budget:e.max_budget,budget_duration:e.budget_duration,metadata:e.metadata}}),eo.Z.success("User updated successfully"),em(!1)}catch(e){console.error("Error updating user:",e),eo.Z.fromBackend("Failed to update user")}};if(ei)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",onClick:Y,className:"mb-4",children:"Back to Users"}),(0,c.jsx)(k.Z,{children:"Loading user data..."})]});if(!et)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",onClick:Y,className:"mb-4",children:"Back to Users"}),(0,c.jsx)(k.Z,{children:"User not found"})]});let eA=async(e,s)=>{await eM(e)&&(eN(e=>({...e,[s]:!0})),setTimeout(()=>{eN(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",onClick:Y,className:"mb-4",children:"Back to Users"}),(0,c.jsx)(S.Z,{children:(null===(s=et.user_info)||void 0===s?void 0:s.user_email)||"User"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:et.user_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:e_["user-id"]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>eA(et.user_id,"user-id"),className:"left-2 z-10 transition-all duration-200 ".concat(e_["user-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),$&&eI.LQ.includes($)&&(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)(b.Z,{icon:sl.Z,variant:"secondary",onClick:ek,className:"flex items-center",children:"Reset Password"}),(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>er(!0),className:"flex items-center",children:"Delete User"})]})]}),ea&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete User"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this user?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:eS,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>er(!1),children:"Cancel"})]})]})]})}),(0,c.jsxs)(e7.Z,{defaultIndex:ey,onIndexChange:eb,children:[(0,c.jsxs)(e9.Z,{className:"mb-4",children:[(0,c.jsx)(e8.Z,{children:"Overview"}),(0,c.jsx)(e8.Z,{children:"Details"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Spend"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eP((null===(t=et.user_info)||void 0===t?void 0:t.spend)||0,4)]}),(0,c.jsxs)(k.Z,{children:["of"," ",(null===(l=et.user_info)||void 0===l?void 0:l.max_budget)!==null?"$".concat(eP(et.user_info.max_budget,4)):"Unlimited"]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Teams"}),(0,c.jsx)("div",{className:"mt-2",children:(null===(a=et.teams)||void 0===a?void 0:a.length)&&(null===(r=et.teams)||void 0===r?void 0:r.length)>0?(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[null===(i=et.teams)||void 0===i?void 0:i.slice(0,eZ?et.teams.length:20).map((e,s)=>(0,c.jsx)(e6.Z,{color:"blue",title:e.team_alias,children:e.team_alias},s)),!eZ&&(null===(n=et.teams)||void 0===n?void 0:n.length)>20&&(0,c.jsxs)(e6.Z,{color:"gray",className:"cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!0),children:["+",et.teams.length-20," more"]}),eZ&&(null===(o=et.teams)||void 0===o?void 0:o.length)>20&&(0,c.jsx)(e6.Z,{color:"gray",className:"cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!1),children:"Show Less"})]}):(0,c.jsx)(k.Z,{children:"No teams"})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"API Keys"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsxs)(k.Z,{children:[(null===(m=et.keys)||void 0===m?void 0:m.length)||0," keys"]})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Personal Models"}),(0,c.jsx)("div",{className:"mt-2",children:(null===(x=et.user_info)||void 0===x?void 0:null===(u=x.models)||void 0===u?void 0:u.length)&&(null===(p=et.user_info)||void 0===p?void 0:null===(h=p.models)||void 0===h?void 0:h.length)>0?null===(f=et.user_info)||void 0===f?void 0:null===(g=f.models)||void 0===g?void 0:g.map((e,s)=>(0,c.jsx)(k.Z,{children:e},s)):(0,c.jsx)(k.Z,{children:"All proxy models"})})]})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"User Settings"}),!ed&&$&&eI.LQ.includes($)&&(0,c.jsx)(b.Z,{variant:"light",onClick:()=>em(!0),children:"Edit Settings"})]}),ed&&et?(0,c.jsx)(lC,{userData:et,onCancel:()=>em(!1),onSubmit:eC,teams:et.teams,accessToken:J,userID:H,userRole:$,userModels:eu,possibleUIRoles:X}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"User ID"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"font-mono",children:et.user_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:e_["user-id"]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>eA(et.user_id,"user-id"),className:"left-2 z-10 transition-all duration-200 ".concat(e_["user-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Email"}),(0,c.jsx)(k.Z,{children:(null===(v=et.user_info)||void 0===v?void 0:v.user_email)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Global Proxy Role"}),(0,c.jsx)(k.Z,{children:(null===(_=et.user_info)||void 0===_?void 0:_.user_role)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created"}),(0,c.jsx)(k.Z,{children:(null===(N=et.user_info)||void 0===N?void 0:N.created_at)?new Date(et.user_info.created_at).toLocaleString():"Unknown"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)(k.Z,{children:(null===(Z=et.user_info)||void 0===Z?void 0:Z.updated_at)?new Date(et.user_info.updated_at).toLocaleString():"Unknown"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Teams"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:(null===(w=et.teams)||void 0===w?void 0:w.length)&&(null===(C=et.teams)||void 0===C?void 0:C.length)>0?(0,c.jsxs)(c.Fragment,{children:[null===(I=et.teams)||void 0===I?void 0:I.slice(0,eZ?et.teams.length:20).map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",title:e.team_alias||e.team_id,children:e.team_alias||e.team_id},s)),!eZ&&(null===(A=et.teams)||void 0===A?void 0:A.length)>20&&(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded text-xs cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!0),children:["+",et.teams.length-20," more"]}),eZ&&(null===(T=et.teams)||void 0===T?void 0:T.length)>20&&(0,c.jsx)("span",{className:"px-2 py-1 bg-gray-100 rounded text-xs cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!1),children:"Show Less"})]}):(0,c.jsx)(k.Z,{children:"No teams"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Personal Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:(null===(P=et.user_info)||void 0===P?void 0:null===(E=P.models)||void 0===E?void 0:E.length)&&(null===(O=et.user_info)||void 0===O?void 0:null===(M=O.models)||void 0===M?void 0:M.length)>0?null===(F=et.user_info)||void 0===F?void 0:null===(D=F.models)||void 0===D?void 0:D.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:e},s)):(0,c.jsx)(k.Z,{children:"All proxy models"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"API Keys"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:(null===(R=et.keys)||void 0===R?void 0:R.length)&&(null===(z=et.keys)||void 0===z?void 0:z.length)>0?et.keys.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-green-100 rounded text-xs",children:e.key_alias||e.token},s)):(0,c.jsx)(k.Z,{children:"No API keys"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Max Budget"}),(0,c.jsx)(k.Z,{children:(null===(U=et.user_info)||void 0===U?void 0:U.max_budget)!==null&&(null===(q=et.user_info)||void 0===q?void 0:q.max_budget)!==void 0?"$".concat(eP(et.user_info.max_budget,4)):"Unlimited"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Budget Reset"}),(0,c.jsx)(k.Z,{children:eT(null!==(K=null===(V=et.user_info)||void 0===V?void 0:V.budget_duration)&&void 0!==K?K:null)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Metadata"}),(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify((null===(B=et.user_info)||void 0===B?void 0:B.metadata)||{},null,2)})]})]})]})})]})]}),(0,c.jsx)(ec,{isInvitationLinkModalVisible:eh,setIsInvitationLinkModalVisible:ep,baseUrl:ef||"",invitationLinkData:eg,modalType:"resetPassword"})]})}function lP(e){let{data:s=[],columns:t,isLoading:l=!1,onSortChange:a,currentSort:r,accessToken:i,userRole:n,possibleUIRoles:o,handleEdit:m,handleDelete:u,handleResetPassword:x,selectedUsers:h=[],onSelectionChange:p,enableSelection:g=!1,filters:j,updateFilters:f,initialFilters:v,teams:y,userListResponse:b,currentPage:_,handlePageChange:N}=e,[Z,w]=d.useState([{id:(null==r?void 0:r.sortBy)||"created_at",desc:(null==r?void 0:r.sortOrder)==="desc"}]),[k,S]=d.useState(null),[C,I]=d.useState(!1),[A,T]=d.useState(!1),E=function(e){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];S(e),I(s)},L=(e,s)=>{p&&(s?p([...h,e]):p(h.filter(s=>s.user_id!==e.user_id)))},P=e=>{p&&(e?p(s):p([]))},M=e=>h.some(s=>s.user_id===e.user_id),O=s.length>0&&h.length===s.length,D=h.length>0&&h.lengtho?lE(o,m,u,x,E,g?{selectedUsers:h,onSelectUser:L,onSelectAll:P,isUserSelected:M,isAllSelected:O,isIndeterminate:D}:void 0):t,[o,m,u,x,E,t,g,h,O,D]),R=(0,sT.b7)({data:s,columns:F,state:{sorting:Z},onSortingChange:e=>{if(w(e),e.length>0){let s=e[0],t=s.id,l=s.desc?"desc":"asc";null==a||a(t,l)}},getCoreRowModel:(0,sE.sC)(),getSortedRowModel:(0,sE.tj)(),enableSorting:!0});return(d.useEffect(()=>{r&&w([{id:r.sortBy,desc:"desc"===r.sortOrder}])},[r]),k)?(0,c.jsx)(lL,{userId:k,onClose:()=>{S(null),I(!1)},accessToken:i,userRole:n,possibleUIRoles:o,initialTab:C?1:0,startInEditMode:C}):(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsx)("div",{className:"border-b px-6 py-4",children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search by email...",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:j.email,onChange:e=>f({email:e.target.value})}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 ".concat(A?"bg-gray-100":""),onClick:()=>T(!A),children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filters",(j.user_id||j.user_role||j.team)&&(0,c.jsx)("span",{className:"w-2 h-2 rounded-full bg-blue-500"})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",onClick:()=>{f(v)},children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Reset Filters"]})]}),A&&(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Filter by User ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:j.user_id,onChange:e=>f({user_id:e.target.value})}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})]}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsx)(e3.Z,{value:j.user_role,onValueChange:e=>f({user_role:e}),placeholder:"Select Role",children:o&&Object.entries(o).map(e=>{let[s,t]=e;return(0,c.jsx)(ei.Z,{value:s,children:t.ui_label},s)})})}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsx)(e3.Z,{value:j.team,onValueChange:e=>f({team:e}),placeholder:"Select Team",children:null==y?void 0:y.map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:e.team_alias||e.team_id},e.team_id))})}),(0,c.jsx)("div",{className:"relative w-64",children:(0,c.jsx)("input",{type:"text",placeholder:"Filter by SSO ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:j.sso_user_id,onChange:e=>f({sso_user_id:e.target.value})})})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Showing"," ",b&&b.users&&b.users.length>0?(b.page-1)*b.page_size+1:0," ","-"," ",b&&b.users?Math.min(b.page*b.page_size,b.total):0," ","of ",b?b.total:0," results"]}),(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>N(_-1),disabled:1===_,className:"px-3 py-1 text-sm border rounded-md ".concat(1===_?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Previous"}),(0,c.jsx)("button",{onClick:()=>N(_+1),disabled:!b||_>=b.total_pages,className:"px-3 py-1 text-sm border rounded-md ".concat(!b||_>=b.total_pages?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Next"})]})]})]})}),(0,c.jsx)("div",{className:"overflow-auto",children:(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sP.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sD.Z,{children:R.getHeaderGroups().map(e=>(0,c.jsx)(sR.Z,{children:e.headers.map(e=>(0,c.jsx)(sF.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sT.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sq.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sz.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sV.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sM.Z,{children:l?(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sO.Z,{colSpan:F.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"\uD83D\uDE85 Loading users..."})})})}):s.length>0?R.getRowModel().rows.map(e=>(0,c.jsx)(sR.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sO.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:()=>{"user_id"===e.column.id&&E(e.getValue(),!1)},style:{cursor:"user_id"===e.column.id?"pointer":"default",color:"user_id"===e.column.id?"#3b82f6":"inherit"},children:(0,sT.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sO.Z,{colSpan:F.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No users found"})})})})})]})})})})]})}var lM=t(67982),lO=t(87908),lD=e=>{var s;let{accessToken:t,possibleUIRoles:l,userID:a,userRole:r}=e,[i,n]=(0,d.useState)(!0),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)({}),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)([]),{Paragraph:N}=en.default,{Option:Z}=I.default;(0,d.useEffect)(()=>{(async()=>{if(!t){n(!1);return}try{let e=await (0,j.getInternalUserSettings)(t);if(m(e),p(e.values||{}),t)try{let e=await (0,j.modelAvailableCall)(t,a,r);if(e&&e.data){let s=e.data.map(e=>e.id);y(s)}}catch(e){console.error("Error fetching available models:",e)}}catch(e){console.error("Error fetching SSO settings:",e),eo.Z.fromBackend("Failed to fetch SSO settings")}finally{n(!1)}})()},[t]);let w=async()=>{if(t){f(!0);try{let e=Object.entries(h).reduce((e,s)=>{let[t,l]=s;return e[t]=""===l?null:l,e},{}),s=await (0,j.updateInternalUserSettings)(t,e);m({...o,values:s.settings}),x(!1)}catch(e){console.error("Error updating SSO settings:",e),eo.Z.fromBackend("Failed to update settings: "+e)}finally{f(!1)}}},C=(e,s)=>{p(t=>({...t,[e]:s}))},A=e=>e&&Array.isArray(e)?e.map(e=>"string"==typeof e?{team_id:e,user_role:"user"}:"object"==typeof e&&e.team_id?{team_id:e.team_id,max_budget_in_team:e.max_budget_in_team,user_role:e.user_role||"user"}:{team_id:"",user_role:"user"}):[],T=e=>{let s=A(e),t=(e,t,l)=>{let a=[...s];a[e]={...a[e],[t]:l},C("teams",a)},l=e=>{C("teams",s.filter((s,t)=>t!==e))};return(0,c.jsxs)("div",{className:"space-y-3",children:[s.map((e,s)=>(0,c.jsxs)("div",{className:"border rounded-lg p-4 bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["Team ",s+1]}),(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",icon:ep.Z,onClick:()=>l(s),className:"text-red-500 hover:text-red-700",children:"Remove"})]}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-1",children:"Team ID"}),(0,c.jsx)(_.Z,{value:e.team_id,onChange:e=>t(s,"team_id",e.target.value),placeholder:"Enter team ID"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-1",children:"Max Budget in Team"}),(0,c.jsx)(e4.Z,{style:{width:"100%"},value:e.max_budget_in_team,onChange:e=>t(s,"max_budget_in_team",e),placeholder:"Optional",min:0,step:.01,precision:2})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-1",children:"User Role"}),(0,c.jsxs)(I.default,{style:{width:"100%"},value:e.user_role,onChange:e=>t(s,"user_role",e),children:[(0,c.jsx)(Z,{value:"user",children:"User"}),(0,c.jsx)(Z,{value:"admin",children:"Admin"})]})]})]})]},s)),(0,c.jsx)(b.Z,{variant:"secondary",icon:tk.Z,onClick:()=>{C("teams",[...s,{team_id:"",user_role:"user"}])},className:"w-full",children:"Add Team"})]})},E=(e,s,t)=>{var a;let r=s.type;if("teams"===e)return(0,c.jsx)("div",{className:"mt-2",children:T(h[e]||[])});if("user_role"===e&&l)return(0,c.jsx)(I.default,{style:{width:"100%"},value:h[e]||"",onChange:s=>C(e,s),className:"mt-2",children:Object.entries(l).filter(e=>{let[s]=e;return s.includes("internal_user")}).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(Z,{value:s,children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("span",{children:t}),(0,c.jsx)("span",{className:"ml-2 text-xs text-gray-500",children:l})]})},s)})});if("budget_duration"===e)return(0,c.jsx)(eE,{value:h[e]||null,onChange:s=>C(e,s),className:"mt-2"});if("boolean"===r)return(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(eK.Z,{checked:!!h[e],onChange:s=>C(e,s)})});if("array"===r&&(null===(a=s.items)||void 0===a?void 0:a.enum))return(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},value:h[e]||[],onChange:s=>C(e,s),className:"mt-2",children:s.items.enum.map(e=>(0,c.jsx)(Z,{value:e,children:e},e))});if("models"===e)return(0,c.jsxs)(I.default,{mode:"multiple",style:{width:"100%"},value:h[e]||[],onChange:s=>C(e,s),className:"mt-2",children:[(0,c.jsx)(Z,{value:"no-default-models",children:"No Default Models"}),v.map(e=>(0,c.jsx)(Z,{value:e,children:F(e)},e))]});if("string"===r&&s.enum)return(0,c.jsx)(I.default,{style:{width:"100%"},value:h[e]||"",onChange:s=>C(e,s),className:"mt-2",children:s.enum.map(e=>(0,c.jsx)(Z,{value:e,children:e},e))});else return(0,c.jsx)(_.Z,{value:void 0!==h[e]?String(h[e]):"",onChange:s=>C(e,s.target.value),placeholder:s.description||"",className:"mt-2"})},L=(e,s)=>{if(null==s)return(0,c.jsx)("span",{className:"text-gray-400",children:"Not set"});if("teams"===e&&Array.isArray(s)){if(0===s.length)return(0,c.jsx)("span",{className:"text-gray-400",children:"No teams assigned"});let e=A(s);return(0,c.jsx)("div",{className:"space-y-2 mt-1",children:e.map((e,s)=>(0,c.jsx)("div",{className:"border rounded-lg p-3 bg-white",children:(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-2 text-sm",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium text-gray-600",children:"Team ID:"}),(0,c.jsx)("p",{className:"text-gray-900",children:e.team_id||"Not specified"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium text-gray-600",children:"Max Budget:"}),(0,c.jsx)("p",{className:"text-gray-900",children:void 0!==e.max_budget_in_team?"$".concat(eP(e.max_budget_in_team,4)):"No limit"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium text-gray-600",children:"Role:"}),(0,c.jsx)("p",{className:"text-gray-900 capitalize",children:e.user_role})]})]})},s))})}if("user_role"===e&&l&&l[s]){let{ui_label:e,description:t}=l[s];return(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium",children:e}),t&&(0,c.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:t})]})}return"budget_duration"===e?(0,c.jsx)("span",{children:eT(s)}):"boolean"==typeof s?(0,c.jsx)("span",{children:s?"Enabled":"Disabled"}):"models"===e&&Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:F(e)},s))}):"object"==typeof s?Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:"object"==typeof e?JSON.stringify(e):String(e)},s))}):(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify(s,null,2)}):(0,c.jsx)("span",{children:String(s)})};return i?(0,c.jsx)("div",{className:"flex justify-center items-center h-64",children:(0,c.jsx)(lO.Z,{size:"large"})}):o?(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Default User Settings"}),!i&&o&&(u?(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{x(!1),p(o.values||{})},disabled:g,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:w,loading:g,children:"Save Changes"})]}):(0,c.jsx)(b.Z,{onClick:()=>x(!0),children:"Edit Settings"}))]}),(null==o?void 0:null===(s=o.field_schema)||void 0===s?void 0:s.description)&&(0,c.jsx)(N,{className:"mb-4",children:o.field_schema.description}),(0,c.jsx)(lM.Z,{}),(0,c.jsx)("div",{className:"mt-4 space-y-4",children:(()=>{let{values:e,field_schema:s}=o;return s&&s.properties?Object.entries(s.properties).map(s=>{let[t,l]=s,a=e[t],r=t.replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase());return(0,c.jsxs)("div",{className:"mb-6 pb-6 border-b border-gray-200 last:border-0",children:[(0,c.jsx)(k.Z,{className:"font-medium text-lg",children:r}),(0,c.jsx)(N,{className:"text-sm text-gray-500 mt-1",children:l.description||"No description available"}),u?(0,c.jsx)("div",{className:"mt-2",children:E(t,l,a)}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:L(t,a)})]},t)}):(0,c.jsx)(k.Z,{children:"No schema information available"})})()})]}):(0,c.jsx)(G.Z,{children:(0,c.jsx)(k.Z,{children:"No settings available or you do not have permission to view them."})})},lF=t(19616);let lR={email:"",user_id:"",user_role:"",sso_user_id:"",team:"",model:"",min_spend:null,max_spend:null,sort_by:"created_at",sort_order:"desc"};var lz=e=>{var s;let{accessToken:t,token:l,userRole:a,userID:r,teams:i}=e,n=(0,h.NL)(),[o,m]=(0,d.useState)(1),[u,x]=(0,d.useState)(!1),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(!1),[y,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)("users"),[w,k]=(0,d.useState)(lR),[S,C,I]=(0,lF.G)(w,{wait:300}),[A,T]=(0,d.useState)(!1),[E,L]=(0,d.useState)(null),[P,M]=(0,d.useState)(null),[O,D]=(0,d.useState)([]),[F,R]=(0,d.useState)(!1),[z,U]=(0,d.useState)(!1),[q,V]=(0,d.useState)([]),B=e=>{_(e),v(!0)};(0,d.useEffect)(()=>()=>{I.cancel()},[I]),(0,d.useEffect)(()=>{M((0,j.getProxyBaseUrl)())},[]),(0,d.useEffect)(()=>{(async()=>{try{if(!r||!a||!t)return;let e=(await (0,j.modelAvailableCall)(t,r,a)).data.map(e=>e.id);console.log("available_model_names:",e),V(e)}catch(e){console.error("Error fetching user models:",e)}})()},[t,r,a]);let K=e=>{k(s=>{let t={...s,...e};return C(t),t})},G=async e=>{if(!t){eo.Z.fromBackend("Access token not found");return}try{eo.Z.success("Generating password reset link...");let s=await (0,j.invitationCreateCall)(t,e);L(s),T(!0)}catch(e){eo.Z.fromBackend("Failed to generate password reset link")}},H=async()=>{if(y&&t)try{await (0,j.userDeleteCall)(t,[y]),n.setQueriesData({queryKey:["userList"]},e=>{if(void 0===e)return e;let s=e.users.filter(e=>e.user_id!==y);return{...e,users:s}}),eo.Z.success("User deleted successfully")}catch(e){console.error("Error deleting user:",e),eo.Z.fromBackend("Failed to delete user")}v(!1),_(null)},Y=async()=>{g(null),x(!1)},J=async e=>{if(console.log("inside handleEditSubmit:",e),t&&l&&a&&r){try{let s=await (0,j.userUpdateUserCall)(t,e,null);n.setQueriesData({queryKey:["userList"]},e=>{if(void 0===e)return e;let t=e.users.map(e=>e.user_id===s.data.user_id?eL(e,s.data):e);return{...e,users:t}}),eo.Z.success("User ".concat(e.user_id," updated successfully"))}catch(e){console.error("There was an error updating the user",e)}g(null),x(!1)}},W=async e=>{m(e)},$=(0,sk.a)({queryKey:["userList",{debouncedFilter:S,currentPage:o}],queryFn:async()=>{if(!t)throw Error("Access token required");return await (0,j.userListCall)(t,S.user_id?[S.user_id]:null,o,25,S.email||null,S.user_role||null,S.team||null,S.sso_user_id||null,S.sort_by,S.sort_order)},enabled:!!(t&&l&&a&&r),placeholderData:e=>e}),Q=$.data,X=(0,sk.a)({queryKey:["userRoles"],initialData:()=>({}),queryFn:async()=>{if(!t)throw Error("Access token required");return await (0,j.getPossibleUserRoles)(t)},enabled:!!(t&&l&&a&&r)}).data;if($.isLoading||!t||!l||!a||!r)return(0,c.jsx)("div",{children:"Loading..."});let ee=lE(X,e=>{g(e),x(!0)},B,G,()=>{});return(0,c.jsxs)("div",{className:"w-full p-8 overflow-hidden",children:[(0,c.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,c.jsxs)("div",{className:"flex space-x-3",children:[(0,c.jsx)(ek,{userID:r,accessToken:t,teams:i,possibleUIRoles:X}),(0,c.jsx)(b.Z,{onClick:()=>{U(!z),D([])},variant:z?"primary":"secondary",className:"flex items-center",children:z?"Cancel Selection":"Select Users"}),z&&(0,c.jsxs)(b.Z,{onClick:()=>{if(0===O.length){eo.Z.fromBackend("Please select users to edit");return}R(!0)},disabled:0===O.length,className:"flex items-center",children:["Bulk Edit (",O.length," selected)"]})]})}),(0,c.jsxs)(e7.Z,{defaultIndex:0,onIndexChange:e=>Z(0===e?"users":"settings"),children:[(0,c.jsxs)(e9.Z,{className:"mb-4",children:[(0,c.jsx)(e8.Z,{children:"Users"}),(0,c.jsx)(e8.Z,{children:"Default User Settings"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsx)(lP,{data:(null===(s=$.data)||void 0===s?void 0:s.users)||[],columns:ee,isLoading:$.isLoading,accessToken:t,userRole:a,onSortChange:(e,s)=>{K({sort_by:e,sort_order:s})},currentSort:{sortBy:w.sort_by,sortOrder:w.sort_order},possibleUIRoles:X,handleEdit:e=>{g(e),x(!0)},handleDelete:B,handleResetPassword:G,enableSelection:z,selectedUsers:O,onSelectionChange:e=>{D(e)},filters:w,updateFilters:K,initialFilters:lR,teams:i,userListResponse:Q,currentPage:o,handlePageChange:W})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(lD,{accessToken:t,possibleUIRoles:X,userID:r,userRole:a})})]})]}),(0,c.jsx)(lk,{visible:u,possibleUIRoles:X,onCancel:Y,user:p,onSubmit:J}),f&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete User"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this user?"}),(0,c.jsxs)("p",{className:"text-sm font-medium text-gray-900 mt-2",children:["User ID: ",y]})]})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:H,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{v(!1),_(null)},children:"Cancel"})]})]})]})}),(0,c.jsx)(ec,{isInvitationLinkModalVisible:A,setIsInvitationLinkModalVisible:T,baseUrl:P||"",invitationLinkData:E,modalType:"resetPassword"}),(0,c.jsx)(lT,{visible:F,onCancel:()=>R(!1),selectedUsers:O,possibleUIRoles:X,accessToken:t,onSuccess:()=>{n.invalidateQueries({queryKey:["userList"]}),D([]),U(!1)},teams:i,userRole:a,userModels:q,allowAllUsers:!!a&&(0,eI.tY)(a)})]})},lU=e=>{var s;let{accessToken:t,userID:l,userRole:a}=e,[r,i]=(0,d.useState)(!0),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)({}),[p,g]=(0,d.useState)(!1),[f,v]=(0,d.useState)([]),{Paragraph:y}=en.default,{Option:N}=I.default;(0,d.useEffect)(()=>{(async()=>{if(!t){i(!1);return}try{let e=await (0,j.getDefaultTeamSettings)(t);if(o(e),h(e.values||{}),t)try{let e=await (0,j.modelAvailableCall)(t,l,a);if(e&&e.data){let s=e.data.map(e=>e.id);v(s)}}catch(e){console.error("Error fetching available models:",e)}}catch(e){console.error("Error fetching team SSO settings:",e),eo.Z.fromBackend("Failed to fetch team settings")}finally{i(!1)}})()},[t]);let Z=async()=>{if(t){g(!0);try{let e=await (0,j.updateDefaultTeamSettings)(t,x);o({...n,values:e.settings}),u(!1),eo.Z.success("Default team settings updated successfully")}catch(e){console.error("Error updating team settings:",e),eo.Z.fromBackend("Failed to update team settings")}finally{g(!1)}}},w=(e,s)=>{h(t=>({...t,[e]:s}))},C=(e,s,t)=>{var l;let a=s.type;return"budget_duration"===e?(0,c.jsx)(eE,{value:x[e]||null,onChange:s=>w(e,s),className:"mt-2"}):"boolean"===a?(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(eK.Z,{checked:!!x[e],onChange:s=>w(e,s)})}):"array"===a&&(null===(l=s.items)||void 0===l?void 0:l.enum)?(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},value:x[e]||[],onChange:s=>w(e,s),className:"mt-2",children:s.items.enum.map(e=>(0,c.jsx)(N,{value:e,children:e},e))}):"models"===e?(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},value:x[e]||[],onChange:s=>w(e,s),className:"mt-2",children:f.map(e=>(0,c.jsx)(N,{value:e,children:F(e)},e))}):"string"===a&&s.enum?(0,c.jsx)(I.default,{style:{width:"100%"},value:x[e]||"",onChange:s=>w(e,s),className:"mt-2",children:s.enum.map(e=>(0,c.jsx)(N,{value:e,children:e},e))}):(0,c.jsx)(_.Z,{value:void 0!==x[e]?String(x[e]):"",onChange:s=>w(e,s.target.value),placeholder:s.description||"",className:"mt-2"})},A=(e,s)=>null==s?(0,c.jsx)("span",{className:"text-gray-400",children:"Not set"}):"budget_duration"===e?(0,c.jsx)("span",{children:eT(s)}):"boolean"==typeof s?(0,c.jsx)("span",{children:s?"Enabled":"Disabled"}):"models"===e&&Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:F(e)},s))}):"object"==typeof s?Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:"object"==typeof e?JSON.stringify(e):String(e)},s))}):(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify(s,null,2)}):(0,c.jsx)("span",{children:String(s)});return r?(0,c.jsx)("div",{className:"flex justify-center items-center h-64",children:(0,c.jsx)(lO.Z,{size:"large"})}):n?(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{className:"text-xl",children:"Default Team Settings"}),!r&&n&&(m?(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{u(!1),h(n.values||{})},disabled:p,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:Z,loading:p,children:"Save Changes"})]}):(0,c.jsx)(b.Z,{onClick:()=>u(!0),children:"Edit Settings"}))]}),(0,c.jsx)(k.Z,{children:"These settings will be applied by default when creating new teams."}),(null==n?void 0:null===(s=n.field_schema)||void 0===s?void 0:s.description)&&(0,c.jsx)(y,{className:"mb-4 mt-2",children:n.field_schema.description}),(0,c.jsx)(lM.Z,{}),(0,c.jsx)("div",{className:"mt-4 space-y-4",children:(()=>{let{values:e,field_schema:s}=n;return s&&s.properties?Object.entries(s.properties).map(s=>{let[t,l]=s,a=e[t],r=t.replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase());return(0,c.jsxs)("div",{className:"mb-6 pb-6 border-b border-gray-200 last:border-0",children:[(0,c.jsx)(k.Z,{className:"font-medium text-lg",children:r}),(0,c.jsx)(y,{className:"text-sm text-gray-500 mt-1",children:l.description||"No description available"}),m?(0,c.jsx)("div",{className:"mt-2",children:C(t,l,a)}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:A(t,a)})]},t)}):(0,c.jsx)(k.Z,{children:"No schema information available"})})()})]}):(0,c.jsx)(G.Z,{children:(0,c.jsx)(k.Z,{children:"No team settings available or you do not have permission to view them."})})},lq=e=>{let{accessToken:s,userID:t}=e,[l,a]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{if(s&&t)try{let e=await (0,j.availableTeamListCall)(s);a(e)}catch(e){console.error("Error fetching available teams:",e)}})()},[s,t]);let r=async e=>{if(s&&t)try{await (0,j.teamMemberAddCall)(s,e,{user_id:t,role:"user"}),eo.Z.success("Successfully joined team"),a(s=>s.filter(s=>s.team_id!==e))}catch(e){console.error("Error joining team:",e),eo.Z.fromBackend("Failed to join team")}};return(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Team Name"}),(0,c.jsx)(sF.Z,{children:"Description"}),(0,c.jsx)(sF.Z,{children:"Members"}),(0,c.jsx)(sF.Z,{children:"Models"}),(0,c.jsx)(sF.Z,{children:"Actions"})]})}),(0,c.jsxs)(sM.Z,{children:[l.map(e=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{children:e.team_alias})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{children:e.description||"No description available"})}),(0,c.jsx)(sO.Z,{children:(0,c.jsxs)(k.Z,{children:[e.members_with_roles.length," members"]})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)("div",{className:"flex flex-col",children:e.models&&0!==e.models.length?e.models.map((e,s)=>(0,c.jsx)(e6.Z,{size:"xs",className:"mb-1",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(e.slice(0,30),"..."):e})},s)):(0,c.jsx)(e6.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})})})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(b.Z,{size:"xs",variant:"secondary",onClick:()=>r(e.team_id),children:"Join Team"})})]},e.team_id)),0===l.length&&(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sO.Z,{colSpan:5,className:"text-center",children:(0,c.jsx)(k.Z,{children:"No available teams to join"})})})]})]})})},lV=t(32489),lB=t(76865);let lK=(e,s)=>{let t=[];return e&&e.models.length>0?(console.log("organization.models: ".concat(e.models)),t=e.models):t=s,R(t,s)};var lG=e=>{let{teams:s,searchParams:t,accessToken:l,setTeams:a,userID:r,userRole:i,organizations:n,premiumUser:o=!1}=e,[m,u]=(0,d.useState)(""),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[S,C]=(0,d.useState)(!1),[E,M]=(0,d.useState)({team_id:"",team_alias:"",organization_id:"",sort_by:"created_at",sort_order:"desc"});(0,d.useEffect)(()=>{console.log("inside useeffect - ".concat(m)),l&&f(l,r,i,x,a),eY()},[m]);let[R]=A.Z.useForm(),[z]=A.Z.useForm(),{Title:q,Paragraph:K}=en.default,[H,Y]=(0,d.useState)(""),[J,$]=(0,d.useState)(!1),[Q,X]=(0,d.useState)(null),[ee,es]=(0,d.useState)(null),[et,el]=(0,d.useState)(!1),[ea,ec]=(0,d.useState)(!1),[ed,em]=(0,d.useState)(!1),[eu,ex]=(0,d.useState)(!1),[eh,ep]=(0,d.useState)([]),[eg,ej]=(0,d.useState)(!1),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)([]),[e_,eN]=(0,d.useState)({}),[eZ,ew]=(0,d.useState)([]),[ek,eS]=(0,d.useState)({}),[eC,eA]=(0,d.useState)([]),[eT,eE]=(0,d.useState)([]),[eM,eO]=(0,d.useState)(!1),[eF,eR]=(0,d.useState)(""),[ez,eU]=(0,d.useState)({});(0,d.useEffect)(()=>{console.log("currentOrgForCreateTeam: ".concat(p));let e=lK(p,eh);console.log("models: ".concat(e)),eb(e),R.setFieldValue("models",[])},[p,eh]),(0,d.useEffect)(()=>{(async()=>{try{if(null==l)return;let e=(await (0,j.getGuardrailsList)(l)).guardrails.map(e=>e.guardrail_name);ew(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})()},[l]);let eq=async()=>{try{if(null==l)return;let e=await (0,j.fetchMCPAccessGroups)(l);eE(e)}catch(e){console.error("Failed to fetch MCP access groups:",e)}};(0,d.useEffect)(()=>{eq()},[l]),(0,d.useEffect)(()=>{s&&eN(s.reduce((e,s)=>(e[s.team_id]={keys:s.keys||[],team_info:{members_with_roles:s.members_with_roles||[]}},e),{}))},[s]);let eV=async e=>{ev(e),ej(!0)},eK=async()=>{if(null!=ef&&null!=s&&null!=l){try{await (0,j.teamDeleteCall)(l,ef),f(l,r,i,x,a)}catch(e){console.error("Error deleting the team:",e)}ej(!1),ev(null)}},eG=()=>{ej(!1),ev(null)};(0,d.useEffect)(()=>{(async()=>{try{if(null===r||null===i||null===l)return;let e=await D(r,i,l);e&&ep(e)}catch(e){console.error("Error fetching user models:",e)}})()},[l,r,i,s]);let eH=async e=>{try{if(console.log("formValues: ".concat(JSON.stringify(e))),null!=l){var t,r,i;let n=null==e?void 0:e.team_alias,o=null!==(i=null==s?void 0:s.map(e=>e.team_alias))&&void 0!==i?i:[],c=(null==e?void 0:e.organization_id)||(null==x?void 0:x.organization_id);if(""===c||"string"!=typeof c?e.organization_id=null:e.organization_id=c.trim(),o.includes(n))throw Error("Team alias ".concat(n," already exists, please pick another alias"));if(eo.Z.info("Creating Team"),eC.length>0){let s={};if(e.metadata)try{s=JSON.parse(e.metadata)}catch(e){console.warn("Invalid JSON in metadata field, starting with empty object")}s={...s,logging:eC.filter(e=>e.callback_name)},e.metadata=JSON.stringify(s)}if((e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0||e.allowed_mcp_servers_and_groups&&((null===(t=e.allowed_mcp_servers_and_groups.servers)||void 0===t?void 0:t.length)>0||(null===(r=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===r?void 0:r.length)>0))&&(e.object_permission={},e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0&&(e.object_permission.vector_stores=e.allowed_vector_store_ids,delete e.allowed_vector_store_ids),e.allowed_mcp_servers_and_groups)){let{servers:s,accessGroups:t}=e.allowed_mcp_servers_and_groups;s&&s.length>0&&(e.object_permission.mcp_servers=s),t&&t.length>0&&(e.object_permission.mcp_access_groups=t),delete e.allowed_mcp_servers_and_groups}e.allowed_mcp_access_groups&&e.allowed_mcp_access_groups.length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_access_groups=e.allowed_mcp_access_groups,delete e.allowed_mcp_access_groups),Object.keys(ez).length>0&&(e.model_aliases=ez);let d=await (0,j.teamCreateCall)(l,e);null!==s?a([...s,d]):a([d]),console.log("response for team create call: ".concat(d)),eo.Z.success("Team created"),R.resetFields(),eA([]),eU({}),ec(!1)}}catch(e){console.error("Error creating the team:",e),eo.Z.fromBackend("Error creating the team: "+e)}},eY=()=>{u(new Date().toLocaleString())},eJ=(e,s)=>{let t={...E,[e]:s};M(t),l&&(0,j.v2TeamListCall)(l,t.organization_id||null,null,t.team_id||null,t.team_alias||null).then(e=>{e&&e.teams&&a(e.teams)}).catch(e=>{console.error("Error fetching teams:",e)})};return(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[("Admin"==i||"Org Admin"==i)&&(0,c.jsx)(b.Z,{className:"w-fit",onClick:()=>ec(!0),children:"+ Create New Team"}),ee?(0,c.jsx)(ty,{teamId:ee,onUpdate:e=>{a(s=>{if(null==s)return s;let t=s.map(s=>e.team_id===s.team_id?eL(s,e):s);return l&&f(l,r,i,x,a),t})},onClose:()=>{es(null),el(!1)},accessToken:l,is_team_admin:(e=>{if(null==e||null==e.members_with_roles)return!1;for(let s=0;se.team_id===ee)),is_proxy_admin:"Admin"==i,userModels:eh,editTeam:et}):(0,c.jsxs)(e7.Z,{className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(e9.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(e8.Z,{children:"Your Teams"}),(0,c.jsx)(e8.Z,{children:"Available Teams"}),(0,eI.tY)(i||"")&&(0,c.jsx)(e8.Z,{children:"Default Team Settings"})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[m&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",m]}),(0,c.jsx)(sL.Z,{icon:sl.Z,variant:"shadow",size:"xs",className:"self-center",onClick:eY})]})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)(k.Z,{children:["Click on “Team ID” to view team details ",(0,c.jsx)("b",{children:"and"})," manage team members."]}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"w-full mx-auto flex-auto overflow-hidden overflow-y-auto max-h-[50vh]",children:[(0,c.jsx)("div",{className:"border-b px-6 py-4",children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search by Team Name...",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:E.team_alias,onChange:e=>eJ("team_alias",e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 ".concat(S?"bg-gray-100":""),onClick:()=>C(!S),children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filters",(E.team_id||E.team_alias||E.organization_id)&&(0,c.jsx)("span",{className:"w-2 h-2 rounded-full bg-blue-500"})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",onClick:()=>{M({team_id:"",team_alias:"",organization_id:"",sort_by:"created_at",sort_order:"desc"}),l&&(0,j.v2TeamListCall)(l,null,r||null,null,null).then(e=>{e&&e.teams&&a(e.teams)}).catch(e=>{console.error("Error fetching teams:",e)})},children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Reset Filters"]})]}),S&&(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Enter Team ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:E.team_id,onChange:e=>eJ("team_id",e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})]}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsx)(e3.Z,{value:E.organization_id||"",onValueChange:e=>eJ("organization_id",e),placeholder:"Select Organization",children:null==n?void 0:n.map(e=>(0,c.jsx)(ei.Z,{value:e.organization_id||"",children:e.organization_alias||e.organization_id},e.organization_id))})})]})]})}),(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Team Name"}),(0,c.jsx)(sF.Z,{children:"Team ID"}),(0,c.jsx)(sF.Z,{children:"Created"}),(0,c.jsx)(sF.Z,{children:"Spend (USD)"}),(0,c.jsx)(sF.Z,{children:"Budget (USD)"}),(0,c.jsx)(sF.Z,{children:"Models"}),(0,c.jsx)(sF.Z,{children:"Organization"}),(0,c.jsx)(sF.Z,{children:"Info"})]})}),(0,c.jsx)(sM.Z,{children:s&&s.length>0?s.filter(e=>!x||e.organization_id===x.organization_id).sort((e,s)=>new Date(s.created_at).getTime()-new Date(e.created_at).getTime()).map(e=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:e.team_alias}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.team_id,children:(0,c.jsxs)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>{es(e.team_id)},children:[e.team_id.slice(0,7),"..."]})})})}),(0,c.jsx)(sO.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:e.created_at?new Date(e.created_at).toLocaleDateString():"N/A"}),(0,c.jsx)(sO.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:eP(e.spend,4)}),(0,c.jsx)(sO.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:null!==e.max_budget&&void 0!==e.max_budget?e.max_budget:"No limit"}),(0,c.jsx)(sO.Z,{style:{maxWidth:"8-x",whiteSpace:"pre-wrap",overflow:"hidden"},className:e.models.length>3?"px-0":"",children:(0,c.jsx)("div",{className:"flex flex-col",children:Array.isArray(e.models)?(0,c.jsx)("div",{className:"flex flex-col",children:0===e.models.length?(0,c.jsx)(e6.Z,{size:"xs",className:"mb-1",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"flex items-start",children:[e.models.length>3&&(0,c.jsx)("div",{children:(0,c.jsx)(sL.Z,{icon:ek[e.team_id]?sz.Z:sU.Z,className:"cursor-pointer",size:"xs",onClick:()=>{eS(s=>({...s,[e.team_id]:!s[e.team_id]}))}})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[e.models.slice(0,3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(e6.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s):(0,c.jsx)(e6.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s)),e.models.length>3&&!ek[e.team_id]&&(0,c.jsx)(e6.Z,{size:"xs",color:"gray",className:"cursor-pointer",children:(0,c.jsxs)(k.Z,{children:["+",e.models.length-3," ",e.models.length-3==1?"more model":"more models"]})}),ek[e.team_id]&&(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:e.models.slice(3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(e6.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s+3):(0,c.jsx)(e6.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s+3))})]})]})})}):null})}),(0,c.jsx)(sO.Z,{children:e.organization_id}),(0,c.jsxs)(sO.Z,{children:[(0,c.jsxs)(k.Z,{children:[e_&&e.team_id&&e_[e.team_id]&&e_[e.team_id].keys&&e_[e.team_id].keys.length," ","Keys"]}),(0,c.jsxs)(k.Z,{children:[e_&&e.team_id&&e_[e.team_id]&&e_[e.team_id].team_info&&e_[e.team_id].team_info.members_with_roles&&e_[e.team_id].team_info.members_with_roles.length," ","Members"]})]}),(0,c.jsx)(sO.Z,{children:"Admin"==i?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sL.Z,{icon:sX.Z,size:"sm",onClick:()=>{es(e.team_id),el(!0)}}),(0,c.jsx)(sL.Z,{onClick:()=>eV(e.team_id),icon:W.Z,size:"sm"})]}):null})]},e.team_id)):null})]}),eg&&(()=>{var e;let t=null==s?void 0:s.find(e=>e.team_id===ef),l=(null==t?void 0:t.team_alias)||"",a=(null==t?void 0:null===(e=t.keys)||void 0===e?void 0:e.length)||0,r=eF===l;return(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl w-full max-w-2xl min-h-[380px] py-6 overflow-hidden transform transition-all flex flex-col justify-between",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Delete Team"}),(0,c.jsx)("button",{onClick:()=>{eG(),eR("")},className:"text-gray-400 hover:text-gray-500 focus:outline-none",children:(0,c.jsx)(lV.Z,{size:20})})]}),(0,c.jsxs)("div",{className:"px-6 py-4",children:[a>0&&(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)(lB.Z,{size:20})}),(0,c.jsxs)("div",{children:[(0,c.jsxs)("p",{className:"text-base font-medium text-red-600",children:["Warning: This team has ",a," associated key",a>1?"s":"","."]}),(0,c.jsx)("p",{className:"text-base text-red-600 mt-2",children:"Deleting the team will also delete all associated keys. This action is irreversible."})]})]}),(0,c.jsx)("p",{className:"text-base text-gray-600 mb-5",children:"Are you sure you want to force delete this team and all its keys?"}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsx)("span",{className:"underline",children:l})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:eF,onChange:e=>eR(e.target.value),placeholder:"Enter team name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]})]})]}),(0,c.jsxs)("div",{className:"px-6 py-4 bg-gray-50 flex justify-end gap-4",children:[(0,c.jsx)("button",{onClick:()=>{eG(),eR("")},className:"px-5 py-3 bg-white border border-gray-300 rounded-md text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:"Cancel"}),(0,c.jsx)("button",{onClick:eK,disabled:!r,className:"px-5 py-3 rounded-md text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 ".concat(r?"bg-red-600 hover:bg-red-700":"bg-red-300 cursor-not-allowed"),children:"Force Delete"})]})]})})})()]})})})]}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(lq,{accessToken:l,userID:r})}),(0,eI.tY)(i||"")&&(0,c.jsx)(se.Z,{children:(0,c.jsx)(lU,{accessToken:l,userID:r||"",userRole:i||""})})]})]}),("Admin"==i||"Org Admin"==i)&&(0,c.jsx)(T.Z,{title:"Create Team",visible:ea,width:1e3,footer:null,onOk:()=>{ec(!1),R.resetFields(),eA([]),eU({})},onCancel:()=>{ec(!1),R.resetFields(),eA([]),eU({})},children:(0,c.jsxs)(A.Z,{form:R,onFinish:eH,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Team Name",name:"team_alias",rules:[{required:!0,message:"Please input a team name"}],children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Organization"," ",(0,c.jsx)(B.Z,{title:(0,c.jsxs)("span",{children:["Organizations can have multiple teams. Learn more about"," ",(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/user_management_heirarchy",target:"_blank",rel:"noopener noreferrer",style:{color:"#1890ff",textDecoration:"underline"},onClick:e=>e.stopPropagation(),children:"user management hierarchy"})]}),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"organization_id",initialValue:x?x.organization_id:null,className:"mt-8",children:(0,c.jsx)(I.default,{showSearch:!0,allowClear:!0,placeholder:"Search or select an Organization",onChange:e=>{R.setFieldValue("organization_id",e),g((null==n?void 0:n.find(s=>s.organization_id===e))||null)},filterOption:(e,s)=>{var t;return!!s&&((null===(t=s.children)||void 0===t?void 0:t.toString())||"").toLowerCase().includes(e.toLowerCase())},optionFilterProp:"children",children:null==n?void 0:n.map(e=>(0,c.jsxs)(I.default.Option,{value:e.organization_id,children:[(0,c.jsx)("span",{className:"font-medium",children:e.organization_alias})," ",(0,c.jsxs)("span",{className:"text-gray-500",children:["(",e.organization_id,")"]})]},e.organization_id))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Models"," ",(0,c.jsx)(B.Z,{title:"These are the models that your selected team has access to",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),ey.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsxs)(N.Z,{className:"mt-20 mb-8",onClick:()=>{eM||(eq(),eO(!0))},children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Additional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:"Team ID",name:"team_id",help:"ID of the team you want to create. If not provided, it will be generated automatically.",children:(0,c.jsx)(_.Z,{onChange:e=>{e.target.value=e.target.value.trim()}})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Budget (USD)",name:"team_member_budget",normalize:e=>e?Number(e):void 0,tooltip:"This is the individual budget for a user in the team.",children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Key Duration (eg: 1d, 1mo)",name:"team_member_key_duration",tooltip:"Set a limit to the duration of a team member's key. Format: 30s (seconds), 30m (minutes), 30h (hours), 30d (days), 1mo (month)",children:(0,c.jsx)(_.Z,{placeholder:"e.g., 30d"})}),(0,c.jsx)(A.Z.Item,{label:"Team Member RPM Limit",name:"team_member_rpm_limit",tooltip:"The RPM (Requests Per Minute) limit for individual team members",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Team Member TPM Limit",name:"team_member_tpm_limit",tooltip:"The TPM (Tokens Per Minute) limit for individual team members",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",help:"Additional team metadata. Enter metadata as JSON object.",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Setup your first guardrail",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",className:"mt-8",help:"Select existing guardrails or enter new ones",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},placeholder:"Select or enter guardrails",options:eZ.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Vector Stores"," ",(0,c.jsx)(B.Z,{title:"Select which vector stores this team can access by default. Leave empty for access to all vector stores",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_vector_store_ids",className:"mt-8",help:"Select vector stores this team can access. Leave empty for access to all vector stores",children:(0,c.jsx)(U,{onChange:e=>R.setFieldValue("allowed_vector_store_ids",e),value:R.getFieldValue("allowed_vector_store_ids"),accessToken:l||"",placeholder:"Select vector stores (optional)"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed MCP Servers"," ",(0,c.jsx)(B.Z,{title:"Select which MCP servers or access groups this team can access by default. ",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_mcp_servers_and_groups",className:"mt-8",help:"Select MCP servers or access groups this team can access. ",children:(0,c.jsx)(eD,{onChange:e=>R.setFieldValue("allowed_mcp_servers_and_groups",e),value:R.getFieldValue("allowed_mcp_servers_and_groups"),accessToken:l||"",placeholder:"Select MCP servers or access groups (optional)"})})]})]}),(0,c.jsxs)(N.Z,{className:"mt-8 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Logging Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(er,{value:eC,onChange:eA,premiumUser:o})})})]}),(0,c.jsxs)(N.Z,{className:"mt-8 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Model Aliases"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600 mb-4",children:"Create custom aliases for models that can be used by team members in API calls. This allows you to create shortcuts for specific models."}),(0,c.jsx)(eB,{accessToken:l||"",initialModelAliases:ez,onAliasUpdate:eU,showExampleConfig:!1})]})})]})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Create Team"})})]})})]})})})},lH=e=>{var s,t,l,a,r;let{organizationId:i,onClose:n,accessToken:o,is_org_admin:m,is_proxy_admin:u,userModels:x,editOrg:h}=e,[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(!0),[N]=A.Z.useForm(),[Z,w]=(0,d.useState)(!1),[C,T]=(0,d.useState)(!1),[E,M]=(0,d.useState)(!1),[D,R]=(0,d.useState)(null),[z,q]=(0,d.useState)({}),V=m||u,B=async()=>{try{if(v(!0),!o)return;let e=await (0,j.organizationInfoCall)(o,i);g(e)}catch(e){eo.Z.fromBackend("Failed to load organization information"),console.error("Error fetching organization info:",e)}finally{v(!1)}};(0,d.useEffect)(()=>{B()},[i,o]);let K=async e=>{try{if(null==o)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role};await (0,j.organizationMemberAddCall)(o,i,s),eo.Z.success("Organization member added successfully"),T(!1),N.resetFields(),B()}catch(e){eo.Z.fromBackend("Failed to add organization member"),console.error("Error adding organization member:",e)}},H=async e=>{try{if(!o)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role};await (0,j.organizationMemberUpdateCall)(o,i,s),eo.Z.success("Organization member updated successfully"),M(!1),N.resetFields(),B()}catch(e){eo.Z.fromBackend("Failed to update organization member"),console.error("Error updating organization member:",e)}},Y=async e=>{try{if(!o)return;await (0,j.organizationMemberDeleteCall)(o,i,e.user_id),eo.Z.success("Organization member deleted successfully"),M(!1),N.resetFields(),B()}catch(e){eo.Z.fromBackend("Failed to delete organization member"),console.error("Error deleting organization member:",e)}},J=async e=>{try{if(!o)return;let s={organization_id:i,organization_alias:e.organization_alias,models:e.models,litellm_budget_table:{tpm_limit:e.tpm_limit,rpm_limit:e.rpm_limit,max_budget:e.max_budget,budget_duration:e.budget_duration},metadata:e.metadata?JSON.parse(e.metadata):null};if((void 0!==e.vector_stores||void 0!==e.mcp_servers_and_groups)&&(s.object_permission={...null==p?void 0:p.object_permission,vector_stores:e.vector_stores||[]},void 0!==e.mcp_servers_and_groups)){let{servers:t,accessGroups:l}=e.mcp_servers_and_groups||{servers:[],accessGroups:[]};t&&t.length>0&&(s.object_permission.mcp_servers=t),l&&l.length>0&&(s.object_permission.mcp_access_groups=l)}await (0,j.organizationUpdateCall)(o,s),eo.Z.success("Organization settings updated successfully"),w(!1),B()}catch(e){eo.Z.fromBackend("Failed to update organization settings"),console.error("Error updating organization:",e)}};if(f)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!p)return(0,c.jsx)("div",{className:"p-4",children:"Organization not found"});let $=async(e,s)=>{await eM(e)&&(q(e=>({...e,[s]:!0})),setTimeout(()=>{q(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"w-full h-screen p-4 bg-white",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:st.Z,onClick:n,variant:"light",className:"mb-4",children:"Back to Organizations"}),(0,c.jsx)(S.Z,{children:p.organization_alias}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:p.organization_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:z["org-id"]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>$(p.organization_id,"org-id"),className:"left-2 z-10 transition-all duration-200 ".concat(z["org-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,c.jsxs)(e7.Z,{defaultIndex:h?2:0,children:[(0,c.jsxs)(e9.Z,{className:"mb-4",children:[(0,c.jsx)(e8.Z,{children:"Overview"}),(0,c.jsx)(e8.Z,{children:"Members"}),(0,c.jsx)(e8.Z,{children:"Settings"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Organization Details"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["Created: ",new Date(p.created_at).toLocaleDateString()]}),(0,c.jsxs)(k.Z,{children:["Updated: ",new Date(p.updated_at).toLocaleDateString()]}),(0,c.jsxs)(k.Z,{children:["Created By: ",p.created_by]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Budget Status"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eP(p.spend,4)]}),(0,c.jsxs)(k.Z,{children:["of"," ",null===p.litellm_budget_table.max_budget?"Unlimited":"$".concat(eP(p.litellm_budget_table.max_budget,4))]}),p.litellm_budget_table.budget_duration&&(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Reset: ",p.litellm_budget_table.budget_duration]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Rate Limits"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["TPM: ",p.litellm_budget_table.tpm_limit||"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",p.litellm_budget_table.rpm_limit||"Unlimited"]}),p.litellm_budget_table.max_parallel_requests&&(0,c.jsxs)(k.Z,{children:["Max Parallel Requests: ",p.litellm_budget_table.max_parallel_requests]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Models"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:0===p.models.length?(0,c.jsx)(e6.Z,{color:"red",children:"All proxy models"}):p.models.map((e,s)=>(0,c.jsx)(e6.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Teams"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:null===(s=p.teams)||void 0===s?void 0:s.map((e,s)=>(0,c.jsx)(e6.Z,{color:"red",children:e.team_id},s))})]}),(0,c.jsx)(sg,{objectPermission:p.object_permission,variant:"card",accessToken:o})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[75vh]",children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"User ID"}),(0,c.jsx)(sF.Z,{children:"Role"}),(0,c.jsx)(sF.Z,{children:"Spend"}),(0,c.jsx)(sF.Z,{children:"Created At"}),(0,c.jsx)(sF.Z,{})]})}),(0,c.jsx)(sM.Z,{children:null===(t=p.members)||void 0===t?void 0:t.map((e,s)=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_id})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_role})}),(0,c.jsx)(sO.Z,{children:(0,c.jsxs)(k.Z,{children:["$",eP(e.spend,4)]})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{children:new Date(e.created_at).toLocaleString()})}),(0,c.jsx)(sO.Z,{children:V&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sL.Z,{icon:sX.Z,size:"sm",onClick:()=>{R({role:e.user_role,user_email:e.user_email,user_id:e.user_id}),M(!0)}}),(0,c.jsx)(sL.Z,{icon:W.Z,size:"sm",onClick:()=>{Y(e)}})]})})]},s))})]})}),V&&(0,c.jsx)(b.Z,{onClick:()=>{T(!0)},children:"Add Member"})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsxs)(G.Z,{className:"overflow-y-auto max-h-[65vh]",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Organization Settings"}),V&&!Z&&(0,c.jsx)(b.Z,{onClick:()=>w(!0),children:"Edit Settings"})]}),Z?(0,c.jsxs)(A.Z,{form:N,onFinish:J,initialValues:{organization_alias:p.organization_alias,models:p.models,tpm_limit:p.litellm_budget_table.tpm_limit,rpm_limit:p.litellm_budget_table.rpm_limit,max_budget:p.litellm_budget_table.max_budget,budget_duration:p.litellm_budget_table.budget_duration,metadata:p.metadata?JSON.stringify(p.metadata,null,2):"",vector_stores:(null===(l=p.object_permission)||void 0===l?void 0:l.vector_stores)||[],mcp_servers_and_groups:{servers:(null===(a=p.object_permission)||void 0===a?void 0:a.mcp_servers)||[],accessGroups:(null===(r=p.object_permission)||void 0===r?void 0:r.mcp_access_groups)||[]}},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Organization Name",name:"organization_alias",rules:[{required:!0,message:"Please input an organization name"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),x.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Vector Stores",name:"vector_stores",children:(0,c.jsx)(U,{onChange:e=>N.setFieldValue("vector_stores",e),value:N.getFieldValue("vector_stores"),accessToken:o||"",placeholder:"Select vector stores"})}),(0,c.jsx)(A.Z.Item,{label:"MCP Servers & Access Groups",name:"mcp_servers_and_groups",children:(0,c.jsx)(eD,{onChange:e=>N.setFieldValue("mcp_servers_and_groups",e),value:N.getFieldValue("mcp_servers_and_groups"),accessToken:o||"",placeholder:"Select MCP servers and access groups"})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)("div",{className:"sticky z-10 bg-white p-4 border-t border-gray-200 bottom-[-1.5rem] inset-x-[-1.5rem]",children:(0,c.jsxs)("div",{className:"flex justify-end items-center gap-2",children:[(0,c.jsx)(L.ZP,{onClick:()=>w(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization Name"}),(0,c.jsx)("div",{children:p.organization_alias})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization ID"}),(0,c.jsx)("div",{className:"font-mono",children:p.organization_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:new Date(p.created_at).toLocaleString()})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:p.models.map((e,s)=>(0,c.jsx)(e6.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Rate Limits"}),(0,c.jsxs)("div",{children:["TPM: ",p.litellm_budget_table.tpm_limit||"Unlimited"]}),(0,c.jsxs)("div",{children:["RPM: ",p.litellm_budget_table.rpm_limit||"Unlimited"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Budget"}),(0,c.jsxs)("div",{children:["Max:"," ",null!==p.litellm_budget_table.max_budget?"$".concat(eP(p.litellm_budget_table.max_budget,4)):"No Limit"]}),(0,c.jsxs)("div",{children:["Reset: ",p.litellm_budget_table.budget_duration||"Never"]})]}),(0,c.jsx)(sg,{objectPermission:p.object_permission,variant:"inline",className:"pt-4 border-t border-gray-200",accessToken:o})]})]})})]})]}),(0,c.jsx)(tv,{isVisible:C,onCancel:()=>T(!1),onSubmit:K,accessToken:o,title:"Add Organization Member",roles:[{label:"org_admin",value:"org_admin",description:"Can add and remove members, and change their roles."},{label:"internal_user",value:"internal_user",description:"Can view/create keys for themselves within organization."},{label:"internal_user_viewer",value:"internal_user_viewer",description:"Can only view their keys within organization."}],defaultRole:"internal_user"}),(0,c.jsx)(tf,{visible:E,onCancel:()=>M(!1),onSubmit:H,initialData:D,mode:"edit",config:{title:"Edit Member",showEmail:!0,showUserId:!0,roleOptions:[{label:"Org Admin",value:"org_admin"},{label:"Internal User",value:"internal_user"},{label:"Internal User Viewer",value:"internal_user_viewer"}]}})]})};let lY=async(e,s)=>{s(await (0,j.organizationListCall)(e))};var lJ=e=>{let{organizations:s,userRole:t,userModels:l,accessToken:a,lastRefreshed:r,handleRefreshClick:i,currentOrg:n,guardrailsList:o=[],setOrganizations:m,premiumUser:u}=e,[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(!1),[f,_]=(0,d.useState)(!1),[N,Z]=(0,d.useState)(null),[w,S]=(0,d.useState)(!1),[C]=A.Z.useForm(),[E,L]=(0,d.useState)({});(0,d.useEffect)(()=>{a&&lY(a,m)},[a]);let M=e=>{e&&(Z(e),_(!0))},D=async()=>{if(N&&a)try{await (0,j.organizationDeleteCall)(a,N),eo.Z.success("Organization deleted successfully"),_(!1),Z(null),lY(a,m)}catch(e){console.error("Error deleting organization:",e)}},R=async e=>{try{var s,t,l,r;if(!a)return;console.log("values in organizations new create call: ".concat(JSON.stringify(e))),(e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0||e.allowed_mcp_servers_and_groups&&((null===(s=e.allowed_mcp_servers_and_groups.servers)||void 0===s?void 0:s.length)>0||(null===(t=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===t?void 0:t.length)>0))&&(e.object_permission={},e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0&&(e.object_permission.vector_stores=e.allowed_vector_store_ids,delete e.allowed_vector_store_ids),e.allowed_mcp_servers_and_groups&&((null===(l=e.allowed_mcp_servers_and_groups.servers)||void 0===l?void 0:l.length)>0&&(e.object_permission.mcp_servers=e.allowed_mcp_servers_and_groups.servers),(null===(r=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===r?void 0:r.length)>0&&(e.object_permission.mcp_access_groups=e.allowed_mcp_servers_and_groups.accessGroups),delete e.allowed_mcp_servers_and_groups)),await (0,j.organizationCreateCall)(a,e),eo.Z.success("Organization created successfully"),S(!1),C.resetFields(),lY(a,m)}catch(e){console.error("Error creating organization:",e)}};return u?(0,c.jsxs)("div",{className:"w-full mx-4 h-[75vh]",children:[(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[("Admin"===t||"Org Admin"===t)&&(0,c.jsx)(b.Z,{className:"w-fit",onClick:()=>S(!0),children:"+ Create New Organization"}),x?(0,c.jsx)(lH,{organizationId:x,onClose:()=>{h(null),g(!1)},accessToken:a,is_org_admin:!0,is_proxy_admin:"Admin"===t,userModels:l,editOrg:p}):(0,c.jsxs)(e7.Z,{className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(e9.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsx)("div",{className:"flex",children:(0,c.jsx)(e8.Z,{children:"Your Organizations"})}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[r&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",r]}),(0,c.jsx)(sL.Z,{icon:sl.Z,variant:"shadow",size:"xs",className:"self-center",onClick:i})]})]}),(0,c.jsx)(ss.Z,{children:(0,c.jsxs)(se.Z,{children:[(0,c.jsx)(k.Z,{children:"Click on “Organization ID” to view organization details."}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Organization ID"}),(0,c.jsx)(sF.Z,{children:"Organization Name"}),(0,c.jsx)(sF.Z,{children:"Created"}),(0,c.jsx)(sF.Z,{children:"Spend (USD)"}),(0,c.jsx)(sF.Z,{children:"Budget (USD)"}),(0,c.jsx)(sF.Z,{children:"Models"}),(0,c.jsx)(sF.Z,{children:"TPM / RPM Limits"}),(0,c.jsx)(sF.Z,{children:"Info"}),(0,c.jsx)(sF.Z,{children:"Actions"})]})}),(0,c.jsx)(sM.Z,{children:s&&s.length>0?s.sort((e,s)=>new Date(s.created_at).getTime()-new Date(e.created_at).getTime()).map(e=>{var s,l,a,r,i,n,o,d,m;return(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.organization_id,children:(0,c.jsxs)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>h(e.organization_id),children:[null===(s=e.organization_id)||void 0===s?void 0:s.slice(0,7),"..."]})})})}),(0,c.jsx)(sO.Z,{children:e.organization_alias}),(0,c.jsx)(sO.Z,{children:e.created_at?new Date(e.created_at).toLocaleDateString():"N/A"}),(0,c.jsx)(sO.Z,{children:eP(e.spend,4)}),(0,c.jsx)(sO.Z,{children:(null===(l=e.litellm_budget_table)||void 0===l?void 0:l.max_budget)!==null&&(null===(a=e.litellm_budget_table)||void 0===a?void 0:a.max_budget)!==void 0?null===(r=e.litellm_budget_table)||void 0===r?void 0:r.max_budget:"No limit"}),(0,c.jsx)(sO.Z,{style:{maxWidth:"8-x",whiteSpace:"pre-wrap",overflow:"hidden"},className:e.models.length>3?"px-0":"",children:(0,c.jsx)("div",{className:"flex flex-col",children:Array.isArray(e.models)?(0,c.jsx)("div",{className:"flex flex-col",children:0===e.models.length?(0,c.jsx)(e6.Z,{size:"xs",className:"mb-1",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"flex items-start",children:[e.models.length>3&&(0,c.jsx)("div",{children:(0,c.jsx)(sL.Z,{icon:E[e.organization_id||""]?sz.Z:sU.Z,className:"cursor-pointer",size:"xs",onClick:()=>{L(s=>({...s,[e.organization_id||""]:!s[e.organization_id||""]}))}})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[e.models.slice(0,3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(e6.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s):(0,c.jsx)(e6.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s)),e.models.length>3&&!E[e.organization_id||""]&&(0,c.jsx)(e6.Z,{size:"xs",color:"gray",className:"cursor-pointer",children:(0,c.jsxs)(k.Z,{children:["+",e.models.length-3," ",e.models.length-3==1?"more model":"more models"]})}),E[e.organization_id||""]&&(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:e.models.slice(3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(e6.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s+3):(0,c.jsx)(e6.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s+3))})]})]})})}):null})}),(0,c.jsx)(sO.Z,{children:(0,c.jsxs)(k.Z,{children:["TPM:"," ",(null===(i=e.litellm_budget_table)||void 0===i?void 0:i.tpm_limit)?null===(n=e.litellm_budget_table)||void 0===n?void 0:n.tpm_limit:"Unlimited",(0,c.jsx)("br",{}),"RPM:"," ",(null===(o=e.litellm_budget_table)||void 0===o?void 0:o.rpm_limit)?null===(d=e.litellm_budget_table)||void 0===d?void 0:d.rpm_limit:"Unlimited"]})}),(0,c.jsx)(sO.Z,{children:(0,c.jsxs)(k.Z,{children:[(null===(m=e.members)||void 0===m?void 0:m.length)||0," Members"]})}),(0,c.jsx)(sO.Z,{children:"Admin"===t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sL.Z,{icon:sX.Z,size:"sm",onClick:()=>{h(e.organization_id),g(!0)}}),(0,c.jsx)(sL.Z,{onClick:()=>M(e.organization_id),icon:W.Z,size:"sm"})]})})]},e.organization_id)}):null})]})})})})]})})]})]})}),(0,c.jsx)(T.Z,{title:"Create Organization",visible:w,width:800,footer:null,onCancel:()=>{S(!1),C.resetFields()},children:(0,c.jsxs)(A.Z,{form:C,onFinish:R,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"Organization Name",name:"organization_alias",rules:[{required:!0,message:"Please input an organization name"}],children:(0,c.jsx)(eG.o,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),l&&l.length>0&&l.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Vector Stores"," ",(0,c.jsx)(B.Z,{title:"Select which vector stores this organization can access by default. Leave empty for access to all vector stores",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_vector_store_ids",className:"mt-4",help:"Select vector stores this organization can access. Leave empty for access to all vector stores",children:(0,c.jsx)(U,{onChange:e=>C.setFieldValue("allowed_vector_store_ids",e),value:C.getFieldValue("allowed_vector_store_ids"),accessToken:a||"",placeholder:"Select vector stores (optional)"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed MCP Servers"," ",(0,c.jsx)(B.Z,{title:"Select which MCP servers and access groups this organization can access by default.",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_mcp_servers_and_groups",className:"mt-4",help:"Select MCP servers and access groups this organization can access.",children:(0,c.jsx)(eD,{onChange:e=>C.setFieldValue("allowed_mcp_servers_and_groups",e),value:C.getFieldValue("allowed_mcp_servers_and_groups"),accessToken:a||"",placeholder:"Select MCP servers and access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(b.Z,{type:"submit",children:"Create Organization"})})]})}),f?(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Organization"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this organization?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:D,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{_(!1),Z(null)},children:"Cancel"})]})]})]})}):(0,c.jsx)(c.Fragment,{})]}):(0,c.jsx)("div",{children:(0,c.jsxs)(k.Z,{children:["This is a LiteLLM Enterprise feature, and requires a valid key to use. Get a trial key"," ",(0,c.jsx)("a",{href:"https://www.litellm.ai/#pricing",target:"_blank",rel:"noopener noreferrer",children:"here"}),"."]})})},lW=t(94789);let l$={google:"https://artificialanalysis.ai/img/logos/google_small.svg",microsoft:"https://upload.wikimedia.org/wikipedia/commons/a/a8/Microsoft_Azure_Logo.svg",okta:"https://www.okta.com/sites/default/files/Okta_Logo_BrightBlue_Medium.png",generic:""},lQ={google:{envVarMap:{google_client_id:"GOOGLE_CLIENT_ID",google_client_secret:"GOOGLE_CLIENT_SECRET"},fields:[{label:"GOOGLE CLIENT ID",name:"google_client_id"},{label:"GOOGLE CLIENT SECRET",name:"google_client_secret"}]},microsoft:{envVarMap:{microsoft_client_id:"MICROSOFT_CLIENT_ID",microsoft_client_secret:"MICROSOFT_CLIENT_SECRET",microsoft_tenant:"MICROSOFT_TENANT"},fields:[{label:"MICROSOFT CLIENT ID",name:"microsoft_client_id"},{label:"MICROSOFT CLIENT SECRET",name:"microsoft_client_secret"},{label:"MICROSOFT TENANT",name:"microsoft_tenant"}]},okta:{envVarMap:{generic_client_id:"GENERIC_CLIENT_ID",generic_client_secret:"GENERIC_CLIENT_SECRET",generic_authorization_endpoint:"GENERIC_AUTHORIZATION_ENDPOINT",generic_token_endpoint:"GENERIC_TOKEN_ENDPOINT",generic_userinfo_endpoint:"GENERIC_USERINFO_ENDPOINT"},fields:[{label:"GENERIC CLIENT ID",name:"generic_client_id"},{label:"GENERIC CLIENT SECRET",name:"generic_client_secret"},{label:"AUTHORIZATION ENDPOINT",name:"generic_authorization_endpoint",placeholder:"https://your-okta-domain/authorize"},{label:"TOKEN ENDPOINT",name:"generic_token_endpoint",placeholder:"https://your-okta-domain/token"},{label:"USERINFO ENDPOINT",name:"generic_userinfo_endpoint",placeholder:"https://your-okta-domain/userinfo"}]},generic:{envVarMap:{generic_client_id:"GENERIC_CLIENT_ID",generic_client_secret:"GENERIC_CLIENT_SECRET",generic_authorization_endpoint:"GENERIC_AUTHORIZATION_ENDPOINT",generic_token_endpoint:"GENERIC_TOKEN_ENDPOINT",generic_userinfo_endpoint:"GENERIC_USERINFO_ENDPOINT"},fields:[{label:"GENERIC CLIENT ID",name:"generic_client_id"},{label:"GENERIC CLIENT SECRET",name:"generic_client_secret"},{label:"AUTHORIZATION ENDPOINT",name:"generic_authorization_endpoint"},{label:"TOKEN ENDPOINT",name:"generic_token_endpoint"},{label:"USERINFO ENDPOINT",name:"generic_userinfo_endpoint"}]}};var lX=e=>{let{isAddSSOModalVisible:s,isInstructionsModalVisible:t,handleAddSSOOk:l,handleAddSSOCancel:a,handleShowInstructions:r,handleInstructionsOk:i,handleInstructionsCancel:n,form:o,accessToken:m,ssoConfigured:u=!1}=e,[x,h]=(0,d.useState)(!1);(0,d.useEffect)(()=>{(async()=>{if(s&&m)try{let s=await (0,j.getSSOSettings)(m);if(console.log("Raw SSO data received:",s),s&&s.values){console.log("SSO values:",s.values),console.log("user_email from API:",s.values.user_email);let l=null;if(s.values.google_client_id)l="google";else if(s.values.microsoft_client_id)l="microsoft";else if(s.values.generic_client_id){var e,t;l=(null===(e=s.values.generic_authorization_endpoint)||void 0===e?void 0:e.includes("okta"))||(null===(t=s.values.generic_authorization_endpoint)||void 0===t?void 0:t.includes("auth0"))?"okta":"generic"}let a={sso_provider:l,proxy_base_url:s.values.proxy_base_url,user_email:s.values.user_email,...s.values};console.log("Setting form values:",a),o.resetFields(),setTimeout(()=>{o.setFieldsValue(a),console.log("Form values set, current form values:",o.getFieldsValue())},100)}}catch(e){console.error("Failed to load SSO settings:",e)}})()},[s,m,o]);let p=async e=>{if(!m){eo.Z.fromBackend("No access token available");return}try{await (0,j.updateSSOSettings)(m,e),r(e)}catch(e){console.error("Failed to save SSO settings:",e),eo.Z.fromBackend("Failed to save SSO settings")}},g=async()=>{if(!m){eo.Z.fromBackend("No access token available");return}try{await (0,j.updateSSOSettings)(m,{google_client_id:null,google_client_secret:null,microsoft_client_id:null,microsoft_client_secret:null,microsoft_tenant:null,generic_client_id:null,generic_client_secret:null,generic_authorization_endpoint:null,generic_token_endpoint:null,generic_userinfo_endpoint:null,proxy_base_url:null,user_email:null,sso_provider:null}),o.resetFields(),h(!1),l(),eo.Z.success("SSO settings cleared successfully")}catch(e){console.error("Failed to clear SSO settings:",e),eo.Z.fromBackend("Failed to clear SSO settings")}},f=e=>{let s=lQ[e];return s?s.fields.map(e=>(0,c.jsx)(A.Z.Item,{label:e.label,name:e.name,rules:[{required:!0,message:"Please enter the ".concat(e.label.toLowerCase())}],children:e.name.includes("client")?(0,c.jsx)(P.default.Password,{}):(0,c.jsx)(_.Z,{placeholder:e.placeholder})},e.name)):null};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(T.Z,{title:u?"Edit SSO Settings":"Add SSO",visible:s,width:800,footer:null,onOk:l,onCancel:a,children:(0,c.jsxs)(A.Z,{form:o,onFinish:p,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"SSO Provider",name:"sso_provider",rules:[{required:!0,message:"Please select an SSO provider"}],children:(0,c.jsx)(I.default,{children:Object.entries(l$).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:s,children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"4px 0"},children:[t&&(0,c.jsx)("img",{src:t,alt:s,style:{height:24,width:24,marginRight:12,objectFit:"contain"}}),(0,c.jsxs)("span",{children:[s.charAt(0).toUpperCase()+s.slice(1)," SSO"]})]})},s)})})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.sso_provider!==s.sso_provider,children:e=>{let{getFieldValue:s}=e,t=s("sso_provider");return t?f(t):null}}),(0,c.jsx)(A.Z.Item,{label:"Proxy Admin Email",name:"user_email",rules:[{required:!0,message:"Please enter the email of the proxy admin"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"PROXY BASE URL",name:"proxy_base_url",rules:[{required:!0,message:"Please enter the proxy base url"}],children:(0,c.jsx)(_.Z,{})})]}),(0,c.jsxs)("div",{style:{textAlign:"right",marginTop:"10px",display:"flex",justifyContent:"flex-end",alignItems:"center",gap:"8px"},children:[u&&(0,c.jsx)(L.ZP,{onClick:()=>h(!0),style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#5558eb",e.currentTarget.style.borderColor="#5558eb"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#6366f1",e.currentTarget.style.borderColor="#6366f1"},children:"Clear"}),(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})]})]})}),(0,c.jsxs)(T.Z,{title:"Confirm Clear SSO Settings",visible:x,onOk:g,onCancel:()=>h(!1),okText:"Yes, Clear",cancelText:"Cancel",okButtonProps:{danger:!0,style:{backgroundColor:"#dc2626",borderColor:"#dc2626"}},children:[(0,c.jsx)("p",{children:"Are you sure you want to clear all SSO settings? This action cannot be undone."}),(0,c.jsx)("p",{children:"Users will no longer be able to login using SSO after this change."})]}),(0,c.jsxs)(T.Z,{title:"SSO Setup Instructions",visible:t,width:800,footer:null,onOk:i,onCancel:n,children:[(0,c.jsx)("p",{children:"Follow these steps to complete the SSO setup:"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"1. DO NOT Exit this TAB"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"2. Open a new tab, visit your proxy base url"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"3. Confirm your SSO is configured correctly and you can login on the new Tab"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"4. If Step 3 is successful, you can close this tab"}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{onClick:i,children:"Done"})})]})]})},l0=t(62272),l1=t(92403),l2=t(29271),l4=t(34419),l5=e=>{let{accessToken:s,userID:t,proxySettings:l}=e,[a]=A.Z.useForm(),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)("");(0,d.useEffect)(()=>{let e="";u(l&&l.PROXY_BASE_URL&&void 0!==l.PROXY_BASE_URL?l.PROXY_BASE_URL:window.location.origin)},[l]);let x="".concat(m,"/scim/v2"),h=async e=>{if(!s||!t){eo.Z.fromBackend("You need to be logged in to create a SCIM token");return}try{i(!0);let l={key_alias:e.key_alias||"SCIM Access Token",team_id:null,models:[],allowed_routes:["/scim/*"]},a=await (0,j.keyCreateCall)(s,t,l);o(a),eo.Z.success("SCIM token created successfully")}catch(e){console.error("Error creating SCIM token:",e),eo.Z.fromBackend("Failed to create SCIM token: "+(0,sy.O)(e))}finally{i(!1)}};return(0,c.jsx)(y.Z,{numItems:1,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("div",{className:"flex items-center mb-4",children:(0,c.jsx)(S.Z,{children:"SCIM Configuration"})}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"System for Cross-domain Identity Management (SCIM) allows you to automatically provision and manage users and groups in LiteLLM."}),(0,c.jsx)(lM.Z,{}),(0,c.jsxs)("div",{className:"space-y-8",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-2",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full bg-blue-100 text-blue-700 mr-2",children:"1"}),(0,c.jsxs)(S.Z,{className:"text-lg flex items-center",children:[(0,c.jsx)(l0.Z,{className:"h-5 w-5 mr-2"}),"SCIM Tenant URL"]})]}),(0,c.jsx)(k.Z,{className:"text-gray-600 mb-3",children:"Use this URL in your identity provider SCIM integration settings."}),(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(_.Z,{value:x,disabled:!0,className:"flex-grow"}),(0,c.jsx)(C.CopyToClipboard,{text:x,onCopy:()=>eo.Z.success("URL copied to clipboard"),children:(0,c.jsxs)(b.Z,{variant:"primary",className:"ml-2 flex items-center",children:[(0,c.jsx)(tG.Z,{className:"h-4 w-4 mr-1"}),"Copy"]})})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-2",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full bg-blue-100 text-blue-700 mr-2",children:"2"}),(0,c.jsxs)(S.Z,{className:"text-lg flex items-center",children:[(0,c.jsx)(l1.Z,{className:"h-5 w-5 mr-2"}),"Authentication Token"]})]}),(0,c.jsx)(lW.Z,{title:"Using SCIM",color:"blue",className:"mb-4",children:"You need a SCIM token to authenticate with the SCIM API. Create one below and use it in your SCIM provider configuration."}),n?(0,c.jsxs)(G.Z,{className:"border border-yellow-300 bg-yellow-50",children:[(0,c.jsxs)("div",{className:"flex items-center mb-2 text-yellow-800",children:[(0,c.jsx)(l2.Z,{className:"h-5 w-5 mr-2"}),(0,c.jsx)(S.Z,{className:"text-lg text-yellow-800",children:"Your SCIM Token"})]}),(0,c.jsx)(k.Z,{className:"text-yellow-800 mb-4 font-medium",children:"Make sure to copy this token now. You will not be able to see it again."}),(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(_.Z,{value:n.key,className:"flex-grow mr-2 bg-white",type:"password",disabled:!0}),(0,c.jsx)(C.CopyToClipboard,{text:n.key,onCopy:()=>eo.Z.success("Token copied to clipboard"),children:(0,c.jsxs)(b.Z,{variant:"primary",className:"flex items-center",children:[(0,c.jsx)(tG.Z,{className:"h-4 w-4 mr-1"}),"Copy"]})})]}),(0,c.jsxs)(b.Z,{className:"mt-4 flex items-center",variant:"secondary",onClick:()=>o(null),children:[(0,c.jsx)(l4.Z,{className:"h-4 w-4 mr-1"}),"Create Another Token"]})]}):(0,c.jsx)("div",{className:"bg-gray-50 p-4 rounded-lg",children:(0,c.jsxs)(A.Z,{form:a,onFinish:h,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{name:"key_alias",label:"Token Name",rules:[{required:!0,message:"Please enter a name for your token"}],children:(0,c.jsx)(_.Z,{placeholder:"SCIM Access Token"})}),(0,c.jsx)(A.Z.Item,{children:(0,c.jsxs)(b.Z,{variant:"primary",type:"submit",loading:r,className:"flex items-center",children:[(0,c.jsx)(l1.Z,{className:"h-4 w-4 mr-1"}),"Create SCIM Token"]})})]})})]})]})]})})},l3=e=>{let{accessToken:s,onSuccess:t}=e,[l]=A.Z.useForm(),[a,r]=(0,d.useState)(!1);(0,d.useEffect)(()=>{(async()=>{if(s)try{let e=await (0,j.getSSOSettings)(s);if(e&&e.values){let s=e.values.ui_access_mode,t={};s&&"object"==typeof s?t={ui_access_mode_type:s.type,restricted_sso_group:s.restricted_sso_group,sso_group_jwt_field:s.sso_group_jwt_field}:"string"==typeof s&&(t={ui_access_mode_type:s,restricted_sso_group:e.values.restricted_sso_group,sso_group_jwt_field:e.values.team_ids_jwt_field||e.values.sso_group_jwt_field}),l.setFieldsValue(t)}}catch(e){console.error("Failed to load UI access settings:",e)}})()},[s,l]);let i=async e=>{if(!s){eo.Z.fromBackend("No access token available");return}r(!0);try{let l;l="all_authenticated_users"===e.ui_access_mode_type?{ui_access_mode:"none"}:{ui_access_mode:{type:e.ui_access_mode_type,restricted_sso_group:e.restricted_sso_group,sso_group_jwt_field:e.sso_group_jwt_field}},await (0,j.updateSSOSettings)(s,l),t()}catch(e){console.error("Failed to save UI access settings:",e),eo.Z.fromBackend("Failed to save UI access settings")}finally{r(!1)}};return(0,c.jsxs)("div",{style:{padding:"16px"},children:[(0,c.jsx)("div",{style:{marginBottom:"16px"},children:(0,c.jsx)(k.Z,{style:{fontSize:"14px",color:"#6b7280"},children:"Configure who can access the UI interface and how group information is extracted from JWT tokens."})}),(0,c.jsxs)(A.Z,{form:l,onFinish:i,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"UI Access Mode",name:"ui_access_mode_type",tooltip:"Controls who can access the UI interface",children:(0,c.jsxs)(I.default,{placeholder:"Select access mode",children:[(0,c.jsx)(I.default.Option,{value:"all_authenticated_users",children:"All Authenticated Users"}),(0,c.jsx)(I.default.Option,{value:"restricted_sso_group",children:"Restricted SSO Group"})]})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.ui_access_mode_type!==s.ui_access_mode_type,children:e=>{let{getFieldValue:s}=e;return"restricted_sso_group"===s("ui_access_mode_type")?(0,c.jsx)(A.Z.Item,{label:"Restricted SSO Group",name:"restricted_sso_group",rules:[{required:!0,message:"Please enter the restricted SSO group"}],children:(0,c.jsx)(_.Z,{placeholder:"ui-access-group"})}):null}}),(0,c.jsx)(A.Z.Item,{label:"SSO Group JWT Field",name:"sso_group_jwt_field",tooltip:"JWT field name that contains team/group information. Use dot notation to access nested fields.",children:(0,c.jsx)(_.Z,{placeholder:"groups"})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"16px"},children:(0,c.jsx)(L.ZP,{type:"primary",htmlType:"submit",loading:a,style:{backgroundColor:"#6366f1",borderColor:"#6366f1"},children:"Update UI Access Control"})})]})]})},l6=e=>{let{searchParams:s,accessToken:t,userID:l,showSSOBanner:a,premiumUser:r,proxySettings:i,userRole:n}=e,[o]=A.Z.useForm(),[u]=A.Z.useForm(),{Title:x,Paragraph:h}=en.default,[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)(null),[y,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)(!1),[w,k]=(0,d.useState)(!1),[S,C]=(0,d.useState)(!1),[I,E]=(0,d.useState)(!1),[M,O]=(0,d.useState)(!1),[D,F]=(0,d.useState)(!1),[R,z]=(0,d.useState)(!1),[U,q]=(0,d.useState)(!1),[V,B]=(0,d.useState)(!1),[K,H]=(0,d.useState)(!1),[Y,J]=(0,d.useState)([]),[W,$]=(0,d.useState)(null),[Q,X]=(0,d.useState)(!1);(0,m.useRouter)();let[ee,es]=(0,d.useState)(null);console.log=function(){};let et=sA(),el="All IP Addresses Allowed",ea=et;ea+="/fallback/login";let er=async()=>{if(t&&r)try{let e=await (0,j.getSSOSettings)(t);if(console.log("SSO data:",e),e&&e.values){let s=e.values.google_client_id&&e.values.google_client_secret,t=e.values.microsoft_client_id&&e.values.microsoft_client_secret,l=e.values.generic_client_id&&e.values.generic_client_secret;X(s||t||l)}else X(!1)}catch(e){console.error("Error checking SSO configuration:",e),X(!1)}},ei=async()=>{try{if(!0!==r){eo.Z.fromBackend("This feature is only available for premium users. Please upgrade your account.");return}if(t){let e=await (0,j.getAllowedIPs)(t);J(e&&e.length>0?e:[el])}else J([el])}catch(e){console.error("Error fetching allowed IPs:",e),eo.Z.fromBackend("Failed to fetch allowed IPs ".concat(e)),J([el])}finally{!0===r&&z(!0)}},ec=async e=>{try{if(t){await (0,j.addAllowedIP)(t,e.ip);let s=await (0,j.getAllowedIPs)(t);J(s),eo.Z.success("IP address added successfully")}}catch(e){console.error("Error adding IP:",e),eo.Z.fromBackend("Failed to add IP address ".concat(e))}finally{q(!1)}},ed=async e=>{$(e),B(!0)},em=async()=>{if(W&&t)try{await (0,j.deleteAllowedIP)(t,W);let e=await (0,j.getAllowedIPs)(t);J(e.length>0?e:[el]),eo.Z.success("IP address deleted successfully")}catch(e){console.error("Error deleting IP:",e),eo.Z.fromBackend("Failed to delete IP address ".concat(e))}finally{B(!1),$(null)}};(0,d.useEffect)(()=>{(async()=>{if(null!=t){let e=[],s=await (0,j.userGetAllUsersCall)(t,"proxy_admin_viewer");console.log("proxy admin viewer response: ",s);let l=s.users;console.log("proxy viewers response: ".concat(l)),l.forEach(s=>{e.push({user_role:s.user_role,user_id:s.user_id,user_email:s.user_email})}),console.log("proxy viewers: ".concat(l));let a=(await (0,j.userGetAllUsersCall)(t,"proxy_admin")).users;a.forEach(s=>{e.push({user_role:s.user_role,user_id:s.user_id,user_email:s.user_email})}),console.log("proxy admins: ".concat(a)),console.log("combinedList: ".concat(e)),v(e),es(await (0,j.getPossibleUserRoles)(t))}})()},[t]),(0,d.useEffect)(()=>{er()},[t,r]);let eu=()=>{H(!1)};return console.log("admins: ".concat(null==f?void 0:f.length)),(0,c.jsxs)("div",{className:"w-full m-2 mt-2 p-8",children:[(0,c.jsx)(x,{level:4,children:"Admin Access "}),(0,c.jsx)(h,{children:"Go to 'Internal Users' page to add other admins."}),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{children:[(0,c.jsx)(e8.Z,{children:"Security Settings"}),(0,c.jsx)(e8.Z,{children:"SCIM"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(x,{level:4,children:" ✨ Security Settings"}),(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"1rem",marginTop:"1rem",marginLeft:"0.5rem"},children:[(0,c.jsx)("div",{children:(0,c.jsx)(b.Z,{style:{width:"150px"},onClick:()=>!0===r?O(!0):eo.Z.fromBackend("Only premium users can add SSO"),children:Q?"Edit SSO Settings":"Add SSO"})}),(0,c.jsx)("div",{children:(0,c.jsx)(b.Z,{style:{width:"150px"},onClick:ei,children:"Allowed IPs"})}),(0,c.jsx)("div",{children:(0,c.jsx)(b.Z,{style:{width:"150px"},onClick:()=>!0===r?H(!0):eo.Z.fromBackend("Only premium users can configure UI access control"),children:"UI Access Control"})})]})]}),(0,c.jsxs)("div",{className:"flex justify-start mb-4",children:[(0,c.jsx)(lX,{isAddSSOModalVisible:M,isInstructionsModalVisible:D,handleAddSSOOk:()=>{O(!1),o.resetFields(),t&&r&&er()},handleAddSSOCancel:()=>{O(!1),o.resetFields()},handleShowInstructions:e=>{O(!1),F(!0)},handleInstructionsOk:()=>{F(!1),t&&r&&er()},handleInstructionsCancel:()=>{F(!1),t&&r&&er()},form:o,accessToken:t,ssoConfigured:Q}),(0,c.jsx)(T.Z,{title:"Manage Allowed IP Addresses",width:800,visible:R,onCancel:()=>z(!1),footer:[(0,c.jsx)(b.Z,{className:"mx-1",onClick:()=>q(!0),children:"Add IP Address"},"add"),(0,c.jsx)(b.Z,{onClick:()=>z(!1),children:"Close"},"close")],children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"IP Address"}),(0,c.jsx)(sF.Z,{className:"text-right",children:"Action"})]})}),(0,c.jsx)(sM.Z,{children:Y.map((e,s)=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:e}),(0,c.jsx)(sO.Z,{className:"text-right",children:e!==el&&(0,c.jsx)(b.Z,{onClick:()=>ed(e),color:"red",size:"xs",children:"Delete"})})]},s))})]})}),(0,c.jsx)(T.Z,{title:"Add Allowed IP Address",visible:U,onCancel:()=>q(!1),footer:null,children:(0,c.jsxs)(A.Z,{onFinish:ec,children:[(0,c.jsx)(A.Z.Item,{name:"ip",rules:[{required:!0,message:"Please enter an IP address"}],children:(0,c.jsx)(P.default,{placeholder:"Enter IP address"})}),(0,c.jsx)(A.Z.Item,{children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Add IP Address"})})]})}),(0,c.jsx)(T.Z,{title:"Confirm Delete",visible:V,onCancel:()=>B(!1),onOk:em,footer:[(0,c.jsx)(b.Z,{className:"mx-1",onClick:()=>em(),children:"Yes"},"delete"),(0,c.jsx)(b.Z,{onClick:()=>B(!1),children:"Close"},"close")],children:(0,c.jsxs)("p",{children:["Are you sure you want to delete the IP address: ",W,"?"]})}),(0,c.jsx)(T.Z,{title:"UI Access Control Settings",visible:K,width:600,footer:null,onOk:eu,onCancel:()=>{H(!1)},children:(0,c.jsx)(l3,{accessToken:t,onSuccess:()=>{eu(),eo.Z.success("UI Access Control settings updated successfully")}})})]}),(0,c.jsxs)(lW.Z,{title:"Login without SSO",color:"teal",children:["If you need to login without sso, you can access"," ",(0,c.jsxs)("a",{href:ea,target:"_blank",children:[(0,c.jsx)("b",{children:ea})," "]})]})]}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(l5,{accessToken:t,userID:l,proxySettings:i})})]})]})]})};let{Title:l8}=en.default;var l7=e=>{let{accessToken:s}=e,[t,l]=(0,d.useState)(!0),[a,r]=(0,d.useState)([]);(0,d.useEffect)(()=>{i()},[s]);let i=async()=>{if(s){l(!0);try{let e=await (0,j.getEmailEventSettings)(s);r(e.settings)}catch(e){console.error("Failed to fetch email event settings:",e),eo.Z.fromBackend(e)}finally{l(!1)}}},n=(e,s)=>{r(a.map(t=>t.event===e?{...t,enabled:s}:t))},o=async()=>{if(s)try{await (0,j.updateEmailEventSettings)(s,{settings:a}),eo.Z.success("Email event settings updated successfully")}catch(e){console.error("Failed to update email event settings:",e),eo.Z.fromBackend(e)}},m=async()=>{if(s)try{await (0,j.resetEmailEventSettings)(s),eo.Z.success("Email event settings reset to defaults"),i()}catch(e){console.error("Failed to reset email event settings:",e),eo.Z.fromBackend(e)}},u=e=>{if(e.includes("Virtual Key Created"))return"An email will be sent to the user when a new virtual key is created with their user ID";if(e.includes("New User Invitation"))return"An email will be sent to the email address of the user when a new user is created";{let s=e.split(/(?=[A-Z])/).join(" ").toLowerCase();return"Receive an email notification when ".concat(s)}};return(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(l8,{level:4,children:"Email Notifications"}),(0,c.jsx)(k.Z,{children:"Select which events should trigger email notifications."}),(0,c.jsx)(K.Z,{}),t?(0,c.jsx)("div",{style:{textAlign:"center",padding:"20px"},children:(0,c.jsx)(lO.Z,{size:"large"})}):(0,c.jsx)("div",{className:"space-y-4",children:a.map(e=>(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(tc.Z,{checked:e.enabled,onChange:s=>n(e.event,s.target.checked)}),(0,c.jsxs)("div",{className:"ml-3",children:[(0,c.jsx)(k.Z,{children:e.event}),(0,c.jsx)("div",{className:"text-sm text-gray-500 block",children:u(e.event)})]})]},e.event))}),(0,c.jsxs)("div",{className:"mt-6 flex space-x-4",children:[(0,c.jsx)(b.Z,{onClick:o,disabled:t,children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:m,variant:"secondary",disabled:t,children:"Reset to Defaults"})]})]})};let{Title:l9}=en.default;var ae=e=>{let{accessToken:s,premiumUser:t,alerts:l}=e,a=async()=>{if(!s)return;let e={};l.filter(e=>"email"===e.name).forEach(s=>{var t;Object.entries(null!==(t=s.variables)&&void 0!==t?t:{}).forEach(s=>{let[t,l]=s,a=document.querySelector('input[name="'.concat(t,'"]'));a&&a.value&&(e[t]=null==a?void 0:a.value)})}),console.log("updatedVariables",e);try{await (0,j.setCallbacksCall)(s,{general_settings:{alerting:["email"]},environment_variables:e}),eo.Z.success("Email settings updated successfully")}catch(e){eo.Z.fromBackend(e)}};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"mt-6 mb-6",children:(0,c.jsx)(l7,{accessToken:s})}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(l9,{level:4,children:"Email Server Settings"}),(0,c.jsxs)(k.Z,{children:[(0,c.jsxs)("a",{href:"https://docs.litellm.ai/docs/proxy/email",target:"_blank",style:{color:"blue"},children:[" ","LiteLLM Docs: email alerts"]})," ",(0,c.jsx)("br",{})]}),(0,c.jsx)("div",{className:"flex w-full",children:l.filter(e=>"email"===e.name).map((e,s)=>{var l;return(0,c.jsx)(sO.Z,{children:(0,c.jsx)("ul",{children:(0,c.jsx)(y.Z,{numItems:2,children:Object.entries(null!==(l=e.variables)&&void 0!==l?l:{}).map(e=>{let[s,l]=e;return(0,c.jsxs)("li",{className:"mx-2 my-2",children:[!0!=t&&("EMAIL_LOGO_URL"===s||"EMAIL_SUPPORT_CONTACT"===s)?(0,c.jsxs)("div",{children:[(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:(0,c.jsxs)(k.Z,{className:"mt-2",children:[" ✨ ",s]})}),(0,c.jsx)(_.Z,{name:s,defaultValue:l,type:"password",disabled:!0,style:{width:"400px"}})]}):(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mt-2",children:s}),(0,c.jsx)(_.Z,{name:s,defaultValue:l,type:"password",style:{width:"400px"}})]}),(0,c.jsxs)("p",{style:{fontSize:"small",fontStyle:"italic"},children:["SMTP_HOST"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the SMTP host address, e.g. `smtp.resend.com`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"SMTP_PORT"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the SMTP port number, e.g. `587`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"SMTP_USERNAME"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the SMTP username, e.g. `username`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"SMTP_PASSWORD"===s&&(0,c.jsx)("span",{style:{color:"red"},children:" Required * "}),"SMTP_SENDER_EMAIL"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the sender email address, e.g. `sender@berri.ai`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"TEST_EMAIL_ADDRESS"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Email Address to send `Test Email Alert` to. example: `info@berri.ai`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"EMAIL_LOGO_URL"===s&&(0,c.jsx)("div",{style:{color:"gray"},children:"(Optional) Customize the Logo that appears in the email, pass a url to your logo"}),"EMAIL_SUPPORT_CONTACT"===s&&(0,c.jsx)("div",{style:{color:"gray"},children:"(Optional) Customize the support email address that appears in the email. Default is support@berri.ai"})]})]},s)})})})},s)})}),(0,c.jsx)(b.Z,{className:"mt-2",onClick:()=>a(),children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:async()=>{if(s)try{await (0,j.serviceHealthCheck)(s,"email"),eo.Z.success("Email test triggered. Check your configured email inbox/logs.")}catch(e){eo.Z.fromBackend(e)}},className:"mx-2",children:"Test Email Alerts"})]})]})},as=e=>{let{alertingSettings:s,handleInputChange:t,handleResetField:l,handleSubmit:a,premiumUser:r}=e,[i]=A.Z.useForm();return(0,c.jsxs)(A.Z,{form:i,onFinish:()=>{console.log("INSIDE ONFINISH");let e=i.getFieldsValue(),s=Object.entries(e).every(e=>{let[s,t]=e;return"boolean"!=typeof t&&(""===t||null==t)});console.log("formData: ".concat(JSON.stringify(e),", isEmpty: ").concat(s)),s?console.log("Some form fields are empty."):a(e)},labelAlign:"left",children:[s.map((e,s)=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsxs)(sO.Z,{align:"center",children:[(0,c.jsx)(k.Z,{children:e.field_name}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:e.field_description})]}),e.premium_field?r?(0,c.jsx)(A.Z.Item,{name:e.field_name,children:(0,c.jsx)(sO.Z,{children:"Integer"===e.field_type?(0,c.jsx)(e4.Z,{step:1,value:e.field_value,onChange:s=>t(e.field_name,s)}):"Boolean"===e.field_type?(0,c.jsx)(tW.Z,{checked:e.field_value,onChange:s=>t(e.field_name,s)}):(0,c.jsx)(P.default,{value:e.field_value,onChange:s=>t(e.field_name,s)})})}):(0,c.jsx)(sO.Z,{children:(0,c.jsx)(b.Z,{className:"flex items-center justify-center",children:(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"✨ Enterprise Feature"})})}):(0,c.jsx)(A.Z.Item,{name:e.field_name,className:"mb-0",valuePropName:"Boolean"===e.field_type?"checked":"value",children:(0,c.jsx)(sO.Z,{children:"Integer"===e.field_type?(0,c.jsx)(e4.Z,{step:1,value:e.field_value,onChange:s=>t(e.field_name,s),className:"p-0"}):"Boolean"===e.field_type?(0,c.jsx)(tW.Z,{checked:e.field_value,onChange:s=>{t(e.field_name,s),i.setFieldsValue({[e.field_name]:s})}}):(0,c.jsx)(P.default,{value:e.field_value,onChange:s=>t(e.field_name,s)})})}),(0,c.jsx)(sO.Z,{children:!0==e.stored_in_db?(0,c.jsx)(e6.Z,{icon:eb.Z,className:"text-white",children:"In DB"}):!1==e.stored_in_db?(0,c.jsx)(e6.Z,{className:"text-gray bg-white outline",children:"In Config"}):(0,c.jsx)(e6.Z,{className:"text-gray bg-white outline",children:"Not Set"})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(sL.Z,{icon:W.Z,color:"red",onClick:()=>l(e.field_name,s),children:"Reset"})})]},s)),(0,c.jsx)("div",{children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Update Settings"})})]})},at=e=>{let{accessToken:s,premiumUser:t}=e,[l,a]=(0,d.useState)([]);return(0,d.useEffect)(()=>{s&&(0,j.alertingSettingsCall)(s).then(e=>{a(e)})},[s]),(0,c.jsx)(as,{alertingSettings:l,handleInputChange:(e,s)=>{let t=l.map(t=>t.field_name===e?{...t,field_value:s}:t);console.log("updatedSettings: ".concat(JSON.stringify(t))),a(t)},handleResetField:(e,t)=>{if(s)try{let s=l.map(s=>s.field_name===e?{...s,stored_in_db:null,field_value:s.field_default_value}:s);a(s)}catch(e){console.log("ERROR OCCURRED!")}},handleSubmit:e=>{if(!s||(console.log("formValues: ".concat(e)),null==e||void 0==e))return;let t={};l.forEach(e=>{t[e.field_name]=e.field_value});let a={...e,...t};console.log("mergedFormValues: ".concat(JSON.stringify(a)));let{slack_alerting:r,...i}=a;console.log("slack_alerting: ".concat(r,", alertingArgs: ").concat(JSON.stringify(i)));try{(0,j.updateConfigFieldSetting)(s,"alerting_args",i),"boolean"==typeof r&&(!0==r?(0,j.updateConfigFieldSetting)(s,"alerting",["slack"]):(0,j.updateConfigFieldSetting)(s,"alerting",[])),eo.Z.success("Wait 10s for proxy to update.")}catch(e){}},premiumUser:t})},al=t(38994);let{Title:aa,Paragraph:ar}=en.default;var ai=e=>{let{accessToken:s,userRole:t,userID:l,premiumUser:a}=e,[r,n]=(0,d.useState)([]),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(!1),[h]=A.Z.useForm(),[p]=A.Z.useForm(),[g,f]=(0,d.useState)(null),[v,N]=(0,d.useState)(""),[Z,w]=(0,d.useState)({}),[S,C]=(0,d.useState)([]),[E,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)([]),[F,R]=(0,d.useState)([]),[z,U]=(0,d.useState)(!1),[q,V]=(0,d.useState)(null),[B,K]=(0,d.useState)(!1),[H,Y]=(0,d.useState)(null);(0,d.useEffect)(()=>{if(z&&q){let e=Object.fromEntries(Object.entries(q.variables||{}).map(e=>{let[s,t]=e;return[s,null!=t?t:""]}));p.setFieldsValue(e)}},[z,q,p]);let J=e=>{S.includes(e)?C(S.filter(s=>s!==e)):C([...S,e])},Q={llm_exceptions:"LLM Exceptions",llm_too_slow:"LLM Responses Too Slow",llm_requests_hanging:"LLM Requests Hanging",budget_alerts:"Budget Alerts (API Keys, Users)",db_exceptions:"Database Exceptions (Read/Write)",daily_reports:"Weekly/Monthly Spend Reports",outage_alerts:"Outage Alerts",region_outage_alerts:"Region Outage Alerts"};(0,d.useEffect)(()=>{s&&t&&l&&(0,j.getCallbacksCall)(s,l,t).then(e=>{n(e.callbacks),D(e.available_callbacks);let s=e.alerts;if(s&&s.length>0){let e=s[0],t=e.variables.SLACK_WEBHOOK_URL;C(e.active_alerts),N(t),w(e.alerts_to_webhook)}m(s)})},[s,t,l]);let X=e=>S&&S.includes(e),ee=async e=>{if(!s||!q)return;let a={};Object.entries(e).forEach(e=>{let[s,t]=e;"callback"!==s&&(a[s]=t)});let r={environment_variables:e,litellm_settings:{success_callback:[q.name]}};try{if(await (0,j.setCallbacksCall)(s,r),eo.Z.success("Callback updated successfully"),U(!1),p.resetFields(),V(null),l&&t){let e=await (0,j.getCallbacksCall)(s,l,t);n(e.callbacks)}}catch(e){eo.Z.fromBackend(e)}},es=async e=>{if(!s)return;let a=null==e?void 0:e.callback,r={};Object.entries(e).forEach(e=>{let[s,t]=e;"callback"!==s&&(r[s]=t)});try{await (0,j.setCallbacksCall)(s,{environment_variables:e,litellm_settings:{success_callback:[a]}}),eo.Z.success("Callback ".concat(a," added successfully")),M(!1),h.resetFields(),f(null),R([]);let r=await (0,j.getCallbacksCall)(s,l||"",t||"");n(r.callbacks)}catch(e){eo.Z.fromBackend(e)}},el=e=>{f(e.litellm_callback_name),e&&e.litellm_callback_params?R(e.litellm_callback_params):R([])},ea=async()=>{if(!s)return;let e={};Object.entries(Q).forEach(s=>{let[t,l]=s,a=document.querySelector('input[name="'.concat(t,'"]')),r=(null==a?void 0:a.value)||"";e[t]=r});try{await (0,j.setCallbacksCall)(s,{general_settings:{alert_to_webhook_url:e,alert_types:S}})}catch(e){eo.Z.fromBackend(e)}eo.Z.success("Alerts updated successfully")},er=e=>{Y(e),K(!0)},en=async()=>{if(H&&s)try{if(await (0,j.deleteCallback)(s,H),eo.Z.success("Callback ".concat(H," deleted successfully")),l&&t){let e=await (0,j.getCallbacksCall)(s,l,t);n(e.callbacks)}K(!1),Y(null)}catch(e){console.error("Failed to delete callback:",e),eo.Z.fromBackend(e)}};return s?(0,c.jsxs)("div",{className:"w-full mx-4",children:[(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{variant:"line",defaultValue:"1",children:[(0,c.jsx)(e8.Z,{value:"1",children:"Logging Callbacks"}),(0,c.jsx)(e8.Z,{value:"2",children:"Alerting Types"}),(0,c.jsx)(e8.Z,{value:"3",children:"Alerting Settings"}),(0,c.jsx)(e8.Z,{value:"4",children:"Email Alerts"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsx)(aa,{level:4,children:"Active Logging Callbacks"}),(0,c.jsx)(y.Z,{numItems:2,children:(0,c.jsx)(G.Z,{className:"max-h-[50vh]",children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sF.Z,{children:"Callback Name"})})}),(0,c.jsx)(sM.Z,{children:r.map((e,t)=>(0,c.jsxs)(sR.Z,{className:"flex justify-between",children:[(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{children:e.name})}),(0,c.jsx)(sO.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"flex justify-between",children:[(0,c.jsx)(sL.Z,{icon:sX.Z,size:"sm",onClick:()=>{V(e),U(!0)}}),(0,c.jsx)(sL.Z,{icon:W.Z,size:"sm",onClick:()=>er(e.name),className:"text-red-500 hover:text-red-700 cursor-pointer"}),(0,c.jsx)(b.Z,{onClick:async()=>{try{await (0,j.serviceHealthCheck)(s,e.name),eo.Z.success("Health check triggered")}catch(e){eo.Z.fromBackend((0,sy.O)(e))}},className:"ml-2",variant:"secondary",children:"Test Callback"})]})})]},t))})]})})}),(0,c.jsx)(b.Z,{className:"mt-2",onClick:()=>M(!0),children:"Add Callback"})]}),(0,c.jsx)(se.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(k.Z,{className:"my-2",children:["Alerts are only supported for Slack Webhook URLs. Get your webhook urls from"," ",(0,c.jsx)("a",{href:"https://api.slack.com/messaging/webhooks",target:"_blank",style:{color:"blue"},children:"here"})]}),(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{}),(0,c.jsx)(sF.Z,{}),(0,c.jsx)(sF.Z,{children:"Slack Webhook URL"})]})}),(0,c.jsx)(sM.Z,{children:Object.entries(Q).map((e,s)=>{let[t,l]=e;return(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:"region_outage_alerts"==t?a?(0,c.jsx)(tW.Z,{id:"switch",name:"switch",checked:X(t),onChange:()=>J(t)}):(0,c.jsx)(b.Z,{className:"flex items-center justify-center",children:(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"✨ Enterprise Feature"})}):(0,c.jsx)(tW.Z,{id:"switch",name:"switch",checked:X(t),onChange:()=>J(t)})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{children:l})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(_.Z,{name:t,type:"password",defaultValue:Z&&Z[t]?Z[t]:v})})]},s)})})]}),(0,c.jsx)(b.Z,{size:"xs",className:"mt-2",onClick:ea,children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:async()=>{try{await (0,j.serviceHealthCheck)(s,"slack"),eo.Z.success("Alert test triggered. Test request to slack made - check logs/alerts on slack to verify")}catch(e){eo.Z.fromBackend((0,sy.O)(e))}},className:"mx-2",children:"Test Alerts"})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(at,{accessToken:s,premiumUser:a})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(ae,{accessToken:s,premiumUser:a,alerts:o})})]})]})}),(0,c.jsxs)(T.Z,{title:"Add Logging Callback",visible:E,width:800,onCancel:()=>{M(!1),f(null),R([])},footer:null,children:[(0,c.jsxs)("a",{href:"https://docs.litellm.ai/docs/proxy/logging",className:"mb-8 mt-4",target:"_blank",style:{color:"blue"},children:[" ","LiteLLM Docs: Logging"]}),(0,c.jsx)(A.Z,{form:h,onFinish:es,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(al.Z,{label:"Callback",name:"callback",rules:[{required:!0,message:"Please select a callback"}],children:(0,c.jsx)(I.default,{onChange:e=>{let s=O[e];s&&el(s)},children:Object.entries(i).map(e=>{var s;let[t,l]=e;return(0,c.jsx)(ei.Z,{value:$[t],children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(null===(s=et[l])||void 0===s?void 0:s.logo)?(0,c.jsx)("div",{className:"w-5 h-5 flex items-center justify-center",children:(0,c.jsx)("img",{src:et[l].logo,alt:"".concat(t," logo"),className:"w-5 h-5",onError:e=>{e.currentTarget.style.display="none"}})}):(0,c.jsx)("div",{className:"w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",children:l.charAt(0).toUpperCase()}),(0,c.jsx)("span",{children:l})]})},l)})})}),F&&F.map(e=>(0,c.jsx)(al.Z,{label:e,name:e,rules:[{required:!0,message:"Please enter the value for "+e}],children:(0,c.jsx)(P.default.Password,{})},e)),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})})]})})]}),(0,c.jsx)(T.Z,{visible:z,width:800,title:"Edit ".concat(null==q?void 0:q.name," Settings"),onCancel:()=>{U(!1),V(null)},footer:null,children:(0,c.jsxs)(A.Z,{form:p,onFinish:ee,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(c.Fragment,{children:q&&q.variables&&Object.entries(q.variables).map(e=>{let[s]=e;return(0,c.jsx)(al.Z,{label:s,name:s,rules:[{required:!0,message:"Please enter the value for ".concat(s)}],children:(0,c.jsx)(P.default.Password,{})},s)})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})})]})}),(0,c.jsx)(T.Z,{title:"Confirm Delete",visible:B,onOk:en,onCancel:()=>{K(!1),Y(null)},okText:"Delete",cancelText:"Cancel",okButtonProps:{danger:!0},children:(0,c.jsxs)("p",{children:["Are you sure you want to delete the callback - ",H,"? This action cannot be undone."]})})]}):null},an=t(54250),ao=t(70450),ac=e=>{let{models:s,accessToken:t,routerSettings:l,setRouterSettings:a}=e,[r]=A.Z.useForm(),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(""),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{try{let e=await eq(t);console.log("Fetched models for fallbacks:",e),x(e)}catch(e){console.error("Error fetching model info for fallbacks:",e)}})()},[t]);let g=()=>{n(!1),r.resetFields(),p([]),m("")};return(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{className:"mx-auto",onClick:()=>n(!0),icon:()=>(0,c.jsx)("span",{className:"mr-1",children:"+"}),children:"Add Fallbacks"}),(0,c.jsx)(T.Z,{title:(0,c.jsx)("div",{className:"pb-4 border-b border-gray-100",children:(0,c.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add Fallbacks"})}),open:i,width:900,footer:null,onOk:()=>{n(!1),r.resetFields(),p([]),m("")},onCancel:g,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,c.jsxs)("div",{className:"mt-6",children:[(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsx)("p",{className:"text-gray-600",children:"Configure fallback models to improve reliability. When the primary model fails or is unavailable, requests will automatically route to the specified fallback models in order."})}),(0,c.jsxs)(A.Z,{form:r,onFinish:e=>{console.log(e);let{model_name:s,models:i}=e,o=[...l.fallbacks||[],{[s]:i}],c={...l,fallbacks:o};console.log(c);try{(0,j.setCallbacksCall)(t,{router_settings:c}),a(c)}catch(e){eo.Z.fromBackend("Failed to update router settings: "+e)}eo.Z.success("router settings updated successfully"),n(!1),r.resetFields(),p([]),m("")},layout:"vertical",className:"space-y-6",children:[(0,c.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,c.jsxs)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Primary Model ",(0,c.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"model_name",rules:[{required:!0,message:"Please select the primary model that needs fallbacks"}],className:"!mb-0",children:[(0,c.jsx)(an.Z,{placeholder:"Select the model that needs fallback protection",value:o,onValueChange:e=>{m(e);let s=h.filter(s=>s!==e);p(s),r.setFieldValue("models",s),r.setFieldValue("model_name",e)},children:Array.from(new Set(u.map(e=>e.model_group))).map((e,s)=>(0,c.jsx)(ao.Z,{value:e,children:e},s))}),(0,c.jsx)("p",{className:"text-sm text-gray-500 mt-1",children:"This is the primary model that users will request"})]}),(0,c.jsx)("div",{className:"border-t border-gray-200 my-6"}),(0,c.jsxs)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Fallback Models (select multiple) ",(0,c.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"models",rules:[{required:!0,message:"Please select at least one fallback model"}],className:"!mb-0",children:[(0,c.jsxs)("div",{className:"space-y-3",children:[h.length>0&&(0,c.jsxs)("div",{className:"border border-gray-200 rounded-lg p-3 bg-gray-50",children:[(0,c.jsx)("p",{className:"text-sm font-medium text-gray-700 mb-2",children:"Fallback Order:"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:h.map((e,s)=>(0,c.jsxs)("div",{className:"flex items-center bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm",children:[(0,c.jsxs)("span",{className:"font-medium mr-2",children:[s+1,"."]}),(0,c.jsx)("span",{children:e}),(0,c.jsx)("button",{type:"button",onClick:()=>{let s=h.filter(s=>s!==e);p(s),r.setFieldValue("models",s)},className:"ml-2 text-blue-600 hover:text-blue-800",children:"\xd7"})]},e))})]}),(0,c.jsx)(an.Z,{placeholder:"Add a fallback model",value:"",onValueChange:e=>{if(e&&!h.includes(e)){let s=[...h,e];p(s),r.setFieldValue("models",s)}},children:Array.from(new Set(u.map(e=>e.model_group))).filter(e=>e!==o&&!h.includes(e)).sort().map(e=>(0,c.jsx)(ao.Z,{value:e,children:e},e))})]}),(0,c.jsxs)("p",{className:"text-sm text-gray-500 mt-1",children:[(0,c.jsx)("strong",{children:"Order matters:"})," Models will be tried in the order shown above (1st, 2nd, 3rd, etc.)"]})]})]}),(0,c.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:g,children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",type:"submit",children:"Add Fallbacks"})]})]})]})})]})},ad=t(26433);async function am(e,s){console.log=function(){},console.log("isLocal:",!1);let t=window.location.origin,l=new ad.ZP.OpenAI({apiKey:s,baseURL:t,dangerouslyAllowBrowser:!0});try{let s=await l.chat.completions.create({model:e,messages:[{role:"user",content:"Hi, this is a test message"}],mock_testing_fallbacks:!0});eo.Z.success((0,c.jsxs)("span",{children:["Test model=",(0,c.jsx)("strong",{children:e}),", received model=",(0,c.jsx)("strong",{children:s.model}),". See"," ",(0,c.jsx)("a",{href:"#",onClick:()=>window.open("https://docs.litellm.ai/docs/proxy/reliability","_blank"),style:{textDecoration:"underline",color:"blue"},children:"curl"})]}))}catch(e){eo.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e))}}let au={ttl:3600,lowest_latency_buffer:0},ax=e=>{let{selectedStrategy:s,strategyArgs:t,paramExplanation:l}=e;return(0,c.jsxs)(N.Z,{children:[(0,c.jsx)(w.Z,{className:"text-sm font-medium text-tremor-content-strong dark:text-dark-tremor-content-strong",children:"Routing Strategy Specific Args"}),(0,c.jsx)(Z.Z,{children:"latency-based-routing"==s?(0,c.jsx)(G.Z,{children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Setting"}),(0,c.jsx)(sF.Z,{children:"Value"})]})}),(0,c.jsx)(sM.Z,{children:Object.entries(t).map(e=>{let[s,t]=e;return(0,c.jsxs)(sR.Z,{children:[(0,c.jsxs)(sO.Z,{children:[(0,c.jsx)(k.Z,{children:s}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:l[s]})]}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(_.Z,{name:s,defaultValue:"object"==typeof t?JSON.stringify(t,null,2):t.toString()})})]},s)})})]})}):(0,c.jsx)(k.Z,{children:"No specific settings"})})]})};var ah=e=>{let{accessToken:s,userRole:t,userID:l,modelData:a}=e,[r,i]=(0,d.useState)({}),[n,o]=(0,d.useState)({}),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1),[p]=A.Z.useForm(),[g,f]=(0,d.useState)(null),[N,Z]=(0,d.useState)(null),[w,C]=(0,d.useState)(null),I={routing_strategy_args:"(dict) Arguments to pass to the routing strategy",routing_strategy:"(string) Routing strategy to use",allowed_fails:"(int) Number of times a deployment can fail before being added to cooldown",cooldown_time:"(int) time in seconds to cooldown a deployment after failure",num_retries:"(int) Number of retries for failed requests. Defaults to 0.",timeout:"(float) Timeout for requests. Defaults to None.",retry_after:"(int) Minimum time to wait before retrying a failed request",ttl:"(int) Sliding window to look back over when calculating the average latency of a deployment. Default - 1 hour (in seconds).",lowest_latency_buffer:"(float) Shuffle between deployments within this % of the lowest latency. Default - 0 (i.e. always pick lowest latency)."};(0,d.useEffect)(()=>{s&&t&&l&&((0,j.getCallbacksCall)(s,l,t).then(e=>{console.log("callbacks",e);let s=e.router_settings;"model_group_retry_policy"in s&&delete s.model_group_retry_policy,i(s)}),(0,j.getGeneralSettingsCall)(s).then(e=>{u(e)}))},[s,t,l]);let T=async e=>{if(!s)return;console.log("received key: ".concat(e)),console.log("routerSettings['fallbacks']: ".concat(r.fallbacks));let t=r.fallbacks.map(s=>(e in s&&delete s[e],s)).filter(e=>Object.keys(e).length>0),l={...r,fallbacks:t};try{await (0,j.setCallbacksCall)(s,{router_settings:l}),i(l),eo.Z.success("Router settings updated successfully")}catch(e){eo.Z.fromBackend("Failed to update router settings: "+e)}},E=(e,s)=>{u(m.map(t=>t.field_name===e?{...t,field_value:s}:t))},L=(e,t)=>{if(!s)return;let l=m[t].field_value;if(null!=l&&void 0!=l)try{(0,j.updateConfigFieldSetting)(s,e,l);let t=m.map(s=>s.field_name===e?{...s,stored_in_db:!0}:s);u(t)}catch(e){}},P=(e,t)=>{if(s)try{(0,j.deleteConfigFieldSetting)(s,e);let t=m.map(s=>s.field_name===e?{...s,stored_in_db:null,field_value:null}:s);u(t)}catch(e){}},M=e=>{if(!s)return;console.log("router_settings",e);let t=Object.fromEntries(Object.entries(e).map(e=>{let[s,t]=e;if("routing_strategy_args"!==s&&"routing_strategy"!==s){var l;return[s,(null===(l=document.querySelector('input[name="'.concat(s,'"]')))||void 0===l?void 0:l.value)||t]}if("routing_strategy"==s)return[s,N];if("routing_strategy_args"==s&&"latency-based-routing"==N){let e={},s=document.querySelector('input[name="lowest_latency_buffer"]'),t=document.querySelector('input[name="ttl"]');return(null==s?void 0:s.value)&&(e.lowest_latency_buffer=Number(s.value)),(null==t?void 0:t.value)&&(e.ttl=Number(t.value)),console.log("setRoutingStrategyArgs: ".concat(e)),["routing_strategy_args",e]}return null}).filter(e=>null!=e));console.log("updatedVariables",t);try{(0,j.setCallbacksCall)(s,{router_settings:t})}catch(e){eo.Z.fromBackend("Failed to update router settings: "+e)}eo.Z.success("router settings updated successfully")};return s?(0,c.jsx)("div",{className:"w-full mx-4",children:(0,c.jsxs)(e7.Z,{className:"gap-2 p-8 h-[75vh] w-full mt-2",children:[(0,c.jsxs)(e9.Z,{variant:"line",defaultValue:"1",children:[(0,c.jsx)(e8.Z,{value:"1",children:"Loadbalancing"}),(0,c.jsx)(e8.Z,{value:"2",children:"Fallbacks"}),(0,c.jsx)(e8.Z,{value:"3",children:"General"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:[(0,c.jsx)(S.Z,{children:"Router Settings"}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Setting"}),(0,c.jsx)(sF.Z,{children:"Value"})]})}),(0,c.jsx)(sM.Z,{children:Object.entries(r).filter(e=>{let[s,t]=e;return"fallbacks"!=s&&"context_window_fallbacks"!=s&&"routing_strategy_args"!=s}).map(e=>{let[s,t]=e;return(0,c.jsxs)(sR.Z,{children:[(0,c.jsxs)(sO.Z,{children:[(0,c.jsx)(k.Z,{children:s}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:I[s]})]}),(0,c.jsx)(sO.Z,{children:"routing_strategy"==s?(0,c.jsxs)(e3.Z,{defaultValue:t,className:"w-full max-w-md",onValueChange:Z,children:[(0,c.jsx)(ei.Z,{value:"usage-based-routing",children:"usage-based-routing"}),(0,c.jsx)(ei.Z,{value:"latency-based-routing",children:"latency-based-routing"}),(0,c.jsx)(ei.Z,{value:"simple-shuffle",children:"simple-shuffle"})]}):(0,c.jsx)(_.Z,{name:s,defaultValue:"object"==typeof t?JSON.stringify(t,null,2):t.toString()})})]},s)})})]}),(0,c.jsx)(ax,{selectedStrategy:N,strategyArgs:r&&r.routing_strategy_args&&Object.keys(r.routing_strategy_args).length>0?r.routing_strategy_args:au,paramExplanation:I})]}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(b.Z,{className:"mt-2",onClick:()=>M(r),children:"Save Changes"})})]})}),(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Model Name"}),(0,c.jsx)(sF.Z,{children:"Fallbacks"})]})}),(0,c.jsx)(sM.Z,{children:r.fallbacks&&r.fallbacks.map((e,t)=>Object.entries(e).map(e=>{let[l,a]=e;return(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:l}),(0,c.jsx)(sO.Z,{children:Array.isArray(a)?a.join(", "):a}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(b.Z,{onClick:()=>am(l,s),children:"Test Fallback"})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(sL.Z,{icon:W.Z,size:"sm",onClick:()=>T(l)})})]},t.toString()+l)}))})]}),(0,c.jsx)(ac,{models:(null==a?void 0:a.data)?a.data.map(e=>e.model_name):[],accessToken:s,routerSettings:r,setRouterSettings:i})]}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(G.Z,{children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Setting"}),(0,c.jsx)(sF.Z,{children:"Value"}),(0,c.jsx)(sF.Z,{children:"Status"}),(0,c.jsx)(sF.Z,{children:"Action"})]})}),(0,c.jsx)(sM.Z,{children:m.filter(e=>"TypedDictionary"!==e.field_type).map((e,s)=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsxs)(sO.Z,{children:[(0,c.jsx)(k.Z,{children:e.field_name}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:e.field_description})]}),(0,c.jsx)(sO.Z,{children:"Integer"==e.field_type?(0,c.jsx)(e4.Z,{step:1,value:e.field_value,onChange:s=>E(e.field_name,s)}):null}),(0,c.jsx)(sO.Z,{children:!0==e.stored_in_db?(0,c.jsx)(e6.Z,{icon:eb.Z,className:"text-white",children:"In DB"}):!1==e.stored_in_db?(0,c.jsx)(e6.Z,{className:"text-gray bg-white outline",children:"In Config"}):(0,c.jsx)(e6.Z,{className:"text-gray bg-white outline",children:"Not Set"})}),(0,c.jsxs)(sO.Z,{children:[(0,c.jsx)(b.Z,{onClick:()=>L(e.field_name,s),children:"Update"}),(0,c.jsx)(sL.Z,{icon:W.Z,color:"red",onClick:()=>P(e.field_name,s),children:"Reset"})]})]},s))})]})})})]})]})}):null},ap=e=>{let{isModalVisible:s,accessToken:t,setIsModalVisible:l,setBudgetList:a}=e,[r]=A.Z.useForm(),i=async e=>{if(null!=t&&void 0!=t)try{eo.Z.info("Making API Call");let s=await (0,j.budgetCreateCall)(t,e);console.log("key create Response:",s),a(e=>e?[...e,s]:[s]),eo.Z.success("Budget Created"),r.resetFields()}catch(e){console.error("Error creating the key:",e),eo.Z.fromBackend("Error creating the key: ".concat(e))}};return(0,c.jsx)(T.Z,{title:"Create Budget",visible:s,width:800,footer:null,onOk:()=>{l(!1),r.resetFields()},onCancel:()=>{l(!1),r.resetFields()},children:(0,c.jsxs)(A.Z,{form:r,onFinish:i,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Budget ID",name:"budget_id",rules:[{required:!0,message:"Please input a human-friendly name for the budget"}],help:"A human-friendly name for the budget",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"Max Tokens per minute",name:"tpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e4.Z,{step:1,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Max Requests per minute",name:"rpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e4.Z,{step:1,precision:2,width:200})}),(0,c.jsxs)(N.Z,{className:"mt-20 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Optional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(e4.Z,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})})]})]})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Create Budget"})})]})})},ag=e=>{let{isModalVisible:s,accessToken:t,setIsModalVisible:l,setBudgetList:a,existingBudget:r,handleUpdateCall:i}=e;console.log("existingBudget",r);let[n]=A.Z.useForm();(0,d.useEffect)(()=>{n.setFieldsValue(r)},[r,n]);let o=async e=>{if(null!=t&&void 0!=t)try{eo.Z.info("Making API Call"),l(!0);let s=await (0,j.budgetUpdateCall)(t,e);a(e=>e?[...e,s]:[s]),eo.Z.success("Budget Updated"),n.resetFields(),i()}catch(e){console.error("Error creating the key:",e),eo.Z.fromBackend("Error creating the key: ".concat(e))}};return(0,c.jsx)(T.Z,{title:"Edit Budget",visible:s,width:800,footer:null,onOk:()=>{l(!1),n.resetFields()},onCancel:()=>{l(!1),n.resetFields()},children:(0,c.jsxs)(A.Z,{form:n,onFinish:o,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",initialValues:r,children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Budget ID",name:"budget_id",rules:[{required:!0,message:"Please input a human-friendly name for the budget"}],help:"A human-friendly name for the budget",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"Max Tokens per minute",name:"tpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e4.Z,{step:1,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Max Requests per minute",name:"rpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e4.Z,{step:1,precision:2,width:200})}),(0,c.jsxs)(N.Z,{className:"mt-20 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Optional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(e4.Z,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})})]})]})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})})]})})},aj=t(17906),af=e=>{let{accessToken:s}=e,[t,l]=(0,d.useState)(!1),[a,r]=(0,d.useState)(!1),[i,n]=(0,d.useState)(null),[o,m]=(0,d.useState)([]);(0,d.useEffect)(()=>{s&&(0,j.getBudgetList)(s).then(e=>{m(e)})},[s]);let u=async(e,t)=>{console.log("budget_id",e),null!=s&&(n(o.find(s=>s.budget_id===e)||null),r(!0))},x=async(e,t)=>{if(null==s)return;eo.Z.info("Request made"),await (0,j.budgetDeleteCall)(s,e);let l=[...o];l.splice(t,1),m(l),eo.Z.success("Budget Deleted.")},h=async()=>{null!=s&&(0,j.getBudgetList)(s).then(e=>{m(e)})};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[(0,c.jsx)(b.Z,{size:"sm",variant:"primary",className:"mb-2",onClick:()=>l(!0),children:"+ Create Budget"}),(0,c.jsx)(ap,{accessToken:s,isModalVisible:t,setIsModalVisible:l,setBudgetList:m}),i&&(0,c.jsx)(ag,{accessToken:s,isModalVisible:a,setIsModalVisible:r,setBudgetList:m,existingBudget:i,handleUpdateCall:h}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Create a budget to assign to customers."}),(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Budget ID"}),(0,c.jsx)(sF.Z,{children:"Max Budget"}),(0,c.jsx)(sF.Z,{children:"TPM"}),(0,c.jsx)(sF.Z,{children:"RPM"})]})}),(0,c.jsx)(sM.Z,{children:o.slice().sort((e,s)=>new Date(s.updated_at).getTime()-new Date(e.updated_at).getTime()).map((e,s)=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:e.budget_id}),(0,c.jsx)(sO.Z,{children:e.max_budget?e.max_budget:"n/a"}),(0,c.jsx)(sO.Z,{children:e.tpm_limit?e.tpm_limit:"n/a"}),(0,c.jsx)(sO.Z,{children:e.rpm_limit?e.rpm_limit:"n/a"}),(0,c.jsx)(sL.Z,{icon:sX.Z,size:"sm",onClick:()=>u(e.budget_id,s)}),(0,c.jsx)(sL.Z,{icon:W.Z,size:"sm",onClick:()=>x(e.budget_id,s)})]},s))})]})]}),(0,c.jsxs)("div",{className:"mt-5",children:[(0,c.jsx)(k.Z,{className:"text-base",children:"How to use budget id"}),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{children:[(0,c.jsx)(e8.Z,{children:"Assign Budget to Customer"}),(0,c.jsx)(e8.Z,{children:"Test it (Curl)"}),(0,c.jsx)(e8.Z,{children:"Test it (OpenAI SDK)"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsx)(aj.Z,{language:"bash",children:"\ncurl -X POST --location '/end_user/new' \n-H 'Authorization: Bearer ' \n-H 'Content-Type: application/json' \n-d '{\"user_id\": \"my-customer-id', \"budget_id\": \"\"}' # \uD83D\uDC48 KEY CHANGE\n\n "})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(aj.Z,{language:"bash",children:'\ncurl -X POST --location \'/chat/completions\' \n-H \'Authorization: Bearer \' \n-H \'Content-Type: application/json\' \n-d \'{\n "model": "gpt-3.5-turbo\', \n "messages":[{"role": "user", "content": "Hey, how\'s it going?"}],\n "user": "my-customer-id"\n}\' # \uD83D\uDC48 KEY CHANGE\n\n '})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(aj.Z,{language:"python",children:'from openai import OpenAI\nclient = OpenAI(\n base_url="",\n api_key=""\n)\n\ncompletion = client.chat.completions.create(\n model="gpt-3.5-turbo",\n messages=[\n {"role": "system", "content": "You are a helpful assistant."},\n {"role": "user", "content": "Hello!"}\n ],\n user="my-customer-id"\n)\n\nprint(completion.choices[0].message)'})})]})]})]})]})},av=t(77398),ay=t.n(av);let ab=e=>{try{return new Date(e).toLocaleString("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0}).replace(",","")}catch(e){return"Error converting time"}},a_=e=>{let{utcTime:s}=e;return(0,c.jsx)("span",{style:{fontFamily:"monospace",width:"180px",display:"inline-block"},children:ab(s)})},aN=(e,s)=>{var t,l;return(null===(l=e.metadata)||void 0===l?void 0:null===(t=l.mcp_tool_call_metadata)||void 0===t?void 0:t.mcp_server_logo_url)?e.metadata.mcp_tool_call_metadata.mcp_server_logo_url:s?(0,sW.dr)(s).logo:""},aZ=[{id:"expander",header:()=>null,cell:e=>{let{row:s}=e;return(0,c.jsx)(()=>{let[e,t]=d.useState(s.getIsExpanded()),l=d.useCallback(()=>{t(e=>!e),s.getToggleExpandedHandler()()},[s]);return s.getCanExpand()?(0,c.jsx)("button",{onClick:l,style:{cursor:"pointer"},"aria-label":e?"Collapse row":"Expand row",className:"w-6 h-6 flex items-center justify-center focus:outline-none",children:(0,c.jsx)("svg",{className:"w-4 h-4 transform transition-transform duration-75 ".concat(e?"rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})}):(0,c.jsx)("span",{className:"w-6 h-6 flex items-center justify-center",children:"●"})},{})}},{header:"Time",accessorKey:"startTime",cell:e=>(0,c.jsx)(a_,{utcTime:e.getValue()})},{header:"Status",accessorKey:"metadata.status",cell:e=>{let s="failure"!==(e.getValue()||"Success").toLowerCase();return(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block text-center w-16 ".concat(s?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:s?"Success":"Failure"})}},{header:"Session ID",accessorKey:"session_id",cell:e=>{let s=String(e.getValue()||""),t=e.row.original.onSessionClick;return(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal text-xs max-w-[15ch] truncate block",onClick:()=>null==t?void 0:t(s),children:String(e.getValue()||"")})})}},{header:"Request ID",accessorKey:"request_id",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)("span",{className:"font-mono text-xs max-w-[15ch] truncate block",children:String(e.getValue()||"")})})},{header:"Cost",accessorKey:"spend",cell:e=>(0,c.jsxs)("span",{children:["$",eP(e.getValue()||0,6)]})},{header:"Duration (s)",accessorKey:"duration",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Team Name",accessorKey:"metadata.user_api_key_team_alias",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Key Hash",accessorKey:"metadata.user_api_key",cell:e=>{let s=String(e.getValue()||"-"),t=e.row.original.onKeyHashClick;return(0,c.jsx)(B.Z,{title:s,children:(0,c.jsx)("span",{className:"font-mono max-w-[15ch] truncate block cursor-pointer hover:text-blue-600",onClick:()=>null==t?void 0:t(s),children:s})})}},{header:"Key Name",accessorKey:"metadata.user_api_key_alias",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Model",accessorKey:"model",cell:e=>{let s=e.row.original,t=s.custom_llm_provider,l=String(e.getValue()||"");return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[t&&(0,c.jsx)("img",{src:aN(s,t),alt:"",className:"w-4 h-4",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)(B.Z,{title:l,children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:l})})]})}},{header:"Tokens",accessorKey:"total_tokens",cell:e=>{let s=e.row.original;return(0,c.jsxs)("span",{className:"text-sm",children:[String(s.total_tokens||"0"),(0,c.jsxs)("span",{className:"text-gray-400 text-xs ml-1",children:["(",String(s.prompt_tokens||"0"),"+",String(s.completion_tokens||"0"),")"]})]})}},{header:"Internal User",accessorKey:"user",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"End User",accessorKey:"end_user",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Tags",accessorKey:"request_tags",cell:e=>{let s=e.getValue();if(!s||0===Object.keys(s).length)return"-";let t=Object.entries(s),l=t[0],a=t.slice(1);return(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:(0,c.jsx)(B.Z,{title:(0,c.jsx)("div",{className:"flex flex-col gap-1",children:t.map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{children:[s,": ",String(t)]},s)})}),children:(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded-full text-xs",children:[l[0],": ",String(l[1]),a.length>0&&" +".concat(a.length)]})})})}}],aw=e=>(0,c.jsx)(e6.Z,{color:"gray",className:"flex items-center gap-1",children:(0,c.jsx)("span",{className:"whitespace-nowrap text-xs",children:e})}),ak=[{id:"expander",header:()=>null,cell:e=>{let{row:s}=e;return(0,c.jsx)(()=>{let[e,t]=d.useState(s.getIsExpanded()),l=d.useCallback(()=>{t(e=>!e),s.getToggleExpandedHandler()()},[s]);return s.getCanExpand()?(0,c.jsx)("button",{onClick:l,style:{cursor:"pointer"},"aria-label":e?"Collapse row":"Expand row",className:"w-6 h-6 flex items-center justify-center focus:outline-none",children:(0,c.jsx)("svg",{className:"w-4 h-4 transform transition-transform ".concat(e?"rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})}):(0,c.jsx)("span",{className:"w-6 h-6 flex items-center justify-center",children:"●"})},{})}},{header:"Timestamp",accessorKey:"updated_at",cell:e=>(0,c.jsx)(a_,{utcTime:e.getValue()})},{header:"Table Name",accessorKey:"table_name",cell:e=>{let s=e.getValue(),t=s;switch(s){case"LiteLLM_VerificationToken":t="Keys";break;case"LiteLLM_TeamTable":t="Teams";break;case"LiteLLM_OrganizationTable":t="Organizations";break;case"LiteLLM_UserTable":t="Users";break;case"LiteLLM_ProxyModelTable":t="Models";break;default:t=s}return(0,c.jsx)("span",{children:t})}},{header:"Action",accessorKey:"action",cell:e=>(0,c.jsx)("span",{children:aw(e.getValue())})},{header:"Changed By",accessorKey:"changed_by",cell:e=>{let s=e.row.original.changed_by,t=e.row.original.changed_by_api_key;return(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsx)("div",{className:"font-medium",children:s}),t&&(0,c.jsx)(B.Z,{title:t,children:(0,c.jsxs)("div",{className:"text-xs text-muted-foreground max-w-[15ch] truncate",children:[" ",t]})})]})}},{header:"Affected Item ID",accessorKey:"object_id",cell:e=>(0,c.jsx)(()=>{let s=e.getValue(),[t,l]=(0,d.useState)(!1);if(!s)return(0,c.jsx)(c.Fragment,{children:"-"});let a=async()=>{try{await navigator.clipboard.writeText(String(s)),l(!0),setTimeout(()=>l(!1),1500)}catch(e){console.error("Failed to copy object ID: ",e)}};return(0,c.jsx)(B.Z,{title:t?"Copied!":String(s),children:(0,c.jsx)("span",{className:"max-w-[20ch] truncate block cursor-pointer hover:text-blue-600",onClick:a,children:String(s)})})},{})}],aS=async(e,s,t,l)=>{console.log("prefetchLogDetails called with",e.length,"logs");let a=e.map(e=>{if(e.request_id)return console.log("Prefetching details for request_id:",e.request_id),l.prefetchQuery({queryKey:["logDetails",e.request_id,s],queryFn:async()=>{console.log("Fetching details for",e.request_id);let l=await (0,j.uiSpendLogDetailsCall)(t,e.request_id,s);return console.log("Received details for",e.request_id,":",l?"success":"failed"),l},staleTime:6e5,gcTime:6e5})});try{let e=await Promise.all(a);return console.log("All prefetch promises completed:",e.length),e}catch(e){throw console.error("Error in prefetchLogDetails:",e),e}};function aC(e){let{row:s,hasMessages:t,hasResponse:l,hasError:a,errorInfo:r,getRawRequest:i,formattedResponse:n}=e,o=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let s=document.createElement("textarea");s.value=e,s.style.position="fixed",s.style.opacity="0",document.body.appendChild(s),s.focus(),s.select();let t=document.execCommand("copy");if(document.body.removeChild(s),!t)throw Error("execCommand failed");return!0}}catch(e){return console.error("Copy failed:",e),!1}},d=async()=>{await o(JSON.stringify(i(),null,2))?eo.Z.success("Request copied to clipboard"):eo.Z.fromBackend("Failed to copy request")},m=async()=>{await o(JSON.stringify(n(),null,2))?eo.Z.success("Response copied to clipboard"):eo.Z.fromBackend("Failed to copy response")};return(0,c.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4 w-full max-w-full overflow-hidden box-border",children:[(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b",children:[(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Request"}),(0,c.jsx)("button",{onClick:d,className:"p-1 hover:bg-gray-200 rounded",title:"Copy request",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,c.jsx)("div",{className:"p-4 overflow-auto max-h-96 w-full max-w-full box-border",children:(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all w-full max-w-full overflow-hidden break-words",children:JSON.stringify(i(),null,2)})})]}),(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b",children:[(0,c.jsxs)("h3",{className:"text-lg font-medium",children:["Response",a&&(0,c.jsxs)("span",{className:"ml-2 text-sm text-red-600",children:["• HTTP code ",(null==r?void 0:r.error_code)||400]})]}),(0,c.jsx)("button",{onClick:m,className:"p-1 hover:bg-gray-200 rounded",title:"Copy response",disabled:!l,children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,c.jsx)("div",{className:"p-4 overflow-auto max-h-96 bg-gray-50 w-full max-w-full box-border",children:l?(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all w-full max-w-full overflow-hidden break-words",children:JSON.stringify(n(),null,2)}):(0,c.jsx)("div",{className:"text-gray-500 text-sm italic text-center py-4",children:"Response data not available"})})]})]})}let aI=e=>{var s;let{errorInfo:t}=e,[l,a]=d.useState({}),[r,i]=d.useState(!1),n=e=>{a(s=>({...s,[e]:!s[e]}))},o=t.traceback&&(s=t.traceback)?Array.from(s.matchAll(/File "([^"]+)", line (\d+)/g)).map(e=>{let t=e[1],l=e[2],a=t.split("/").pop()||t,r=e.index||0,i=s.indexOf('File "',r+1),n=i>-1?s.substring(r,i).trim():s.substring(r).trim(),o=n.split("\n"),c="";return o.length>1&&(c=o[o.length-1].trim()),{filePath:t,fileName:a,lineNumber:l,code:c,inFunction:n.includes(" in ")?n.split(" in ")[1].split("\n")[0]:""}}):[];return(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsx)("div",{className:"p-4 border-b",children:(0,c.jsxs)("h3",{className:"text-lg font-medium flex items-center text-red-600",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})}),"Error Details"]})}),(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"bg-red-50 rounded-md p-4 mb-4",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"text-red-800 font-medium w-20",children:"Type:"}),(0,c.jsx)("span",{className:"text-red-700",children:t.error_class||"Unknown Error"})]}),(0,c.jsxs)("div",{className:"flex mt-2",children:[(0,c.jsx)("span",{className:"text-red-800 font-medium w-20 flex-shrink-0",children:"Message:"}),(0,c.jsx)("span",{className:"text-red-700 break-words whitespace-pre-wrap",children:t.error_message||"Unknown error occurred"})]})]}),t.traceback&&(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,c.jsx)("h4",{className:"font-medium",children:"Traceback"}),(0,c.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,c.jsx)("button",{onClick:()=>{let e=!r;if(i(e),o.length>0){let s={};o.forEach((t,l)=>{s[l]=e}),a(s)}},className:"text-gray-500 hover:text-gray-700 flex items-center text-sm",children:r?"Collapse All":"Expand All"}),(0,c.jsxs)("button",{onClick:()=>navigator.clipboard.writeText(t.traceback||""),className:"text-gray-500 hover:text-gray-700 flex items-center",title:"Copy traceback",children:[(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),(0,c.jsx)("span",{className:"ml-1",children:"Copy"})]})]})]}),(0,c.jsx)("div",{className:"bg-white rounded-md border border-gray-200 overflow-hidden shadow-sm",children:o.map((e,s)=>(0,c.jsxs)("div",{className:"border-b border-gray-200 last:border-b-0",children:[(0,c.jsxs)("div",{className:"px-4 py-2 flex items-center justify-between cursor-pointer hover:bg-gray-50",onClick:()=>n(s),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("span",{className:"text-gray-400 mr-2 w-12 text-right",children:e.lineNumber}),(0,c.jsx)("span",{className:"text-gray-600 font-medium",children:e.fileName}),(0,c.jsx)("span",{className:"text-gray-500 mx-1",children:"in"}),(0,c.jsx)("span",{className:"text-indigo-600 font-medium",children:e.inFunction||e.fileName})]}),(0,c.jsx)("svg",{className:"w-5 h-5 text-gray-500 transition-transform ".concat(l[s]?"transform rotate-180":""),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),(l[s]||!1)&&e.code&&(0,c.jsx)("div",{className:"px-12 py-2 font-mono text-sm text-gray-800 bg-gray-50 overflow-x-auto border-t border-gray-100",children:e.code})]},s))})]})]})]})},aA=e=>{let{show:s}=e;return s?(0,c.jsxs)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-4 flex items-start",children:[(0,c.jsx)("div",{className:"text-blue-500 mr-3 flex-shrink-0 mt-0.5",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,c.jsx)("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),(0,c.jsx)("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"text-sm font-medium text-blue-800",children:"Request/Response Data Not Available"}),(0,c.jsxs)("p",{className:"text-sm text-blue-700 mt-1",children:["To view request and response details, enable prompt storage in your LiteLLM configuration by adding the following to your ",(0,c.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded",children:"proxy_config.yaml"})," file:"]}),(0,c.jsx)("pre",{className:"mt-2 bg-white p-3 rounded border border-blue-200 text-xs font-mono overflow-auto",children:"general_settings:\n store_model_in_db: true\n store_prompts_in_spend_logs: true"}),(0,c.jsx)("p",{className:"text-xs text-blue-700 mt-2",children:"Note: This will only affect new requests after the configuration change."})]})]}):null};var aT=t(35829);let aE=e=>{let{sessionId:s,logs:t,onBack:l}=e,[a,r]=(0,d.useState)(null),[i,n]=(0,d.useState)({}),o=t.reduce((e,s)=>e+(s.spend||0),0),m=t.reduce((e,s)=>e+(s.total_tokens||0),0),u=t.reduce((e,s)=>{var t,l;return e+((null===(l=s.metadata)||void 0===l?void 0:null===(t=l.additional_usage_values)||void 0===t?void 0:t.cache_read_input_tokens)||0)},0),x=t.reduce((e,s)=>{var t,l;return e+((null===(l=s.metadata)||void 0===l?void 0:null===(t=l.additional_usage_values)||void 0===t?void 0:t.cache_creation_input_tokens)||0)},0),h=m+u+x,p=t.length>0?new Date(t[0].startTime):new Date;(((t.length>0?new Date(t[t.length-1].endTime):new Date).getTime()-p.getTime())/1e3).toFixed(2),t.map(e=>({time:new Date(e.startTime).toISOString(),tokens:e.total_tokens||0,cost:e.spend||0}));let g=async(e,s)=>{await eM(e)&&(n(e=>({...e,[s]:!0})),setTimeout(()=>{n(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",onClick:l,className:"mb-4",children:"Back to All Logs"}),(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsx)("h1",{className:"text-2xl font-semibold text-gray-900",children:"Session Details"}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)("p",{className:"text-sm text-gray-500 font-mono",children:s}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:i["session-id"]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>g(s,"session-id"),className:"left-2 z-10 transition-all duration-200 ".concat(i["session-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]}),(0,c.jsxs)("a",{href:"https://docs.litellm.ai/docs/proxy/ui_logs_sessions",target:"_blank",rel:"noopener noreferrer",className:"text-sm text-blue-600 hover:text-blue-800 flex items-center gap-1",children:["Get started with session management here",(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})]}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Requests"}),(0,c.jsx)(aT.Z,{children:t.length})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Cost"}),(0,c.jsxs)(aT.Z,{children:["$",eP(o,6)]})]}),(0,c.jsx)(B.Z,{title:(0,c.jsxs)("div",{className:"text-white min-w-[200px]",children:[(0,c.jsx)("div",{className:"text-lg font-medium mb-3",children:"Usage breakdown"}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-base font-medium mb-2",children:"Input usage:"}),(0,c.jsxs)("div",{className:"space-y-2 text-sm text-gray-300",children:[(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"input:"}),(0,c.jsx)("span",{className:"ml-8",children:eP(t.reduce((e,s)=>e+(s.prompt_tokens||0),0))})]}),u>0&&(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"input_cached_tokens:"}),(0,c.jsx)("span",{className:"ml-8",children:eP(u)})]}),x>0&&(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"input_cache_creation_tokens:"}),(0,c.jsx)("span",{className:"ml-8",children:eP(x)})]})]})]}),(0,c.jsxs)("div",{className:"border-t border-gray-600 pt-3",children:[(0,c.jsx)("div",{className:"text-base font-medium mb-2",children:"Output usage:"}),(0,c.jsx)("div",{className:"space-y-2 text-sm text-gray-300",children:(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"output:"}),(0,c.jsx)("span",{className:"ml-8",children:eP(t.reduce((e,s)=>e+(s.completion_tokens||0),0))})]})})]}),(0,c.jsx)("div",{className:"border-t border-gray-600 pt-3",children:(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-base font-medium",children:"Total usage:"}),(0,c.jsx)("span",{className:"text-sm text-gray-300",children:eP(h)})]})})]})]}),placement:"top",overlayStyle:{minWidth:"300px"},children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)(k.Z,{children:"Total Tokens"}),(0,c.jsx)("span",{className:"text-gray-400 text-sm",children:"ⓘ"})]}),(0,c.jsx)(aT.Z,{children:eP(h)})]})})]}),(0,c.jsx)(S.Z,{children:"Session Logs"}),(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(ly,{columns:aZ,data:t,renderSubComponent:aY,getRowCanExpand:()=>!0,loadingMessage:"Loading logs...",noDataMessage:"No logs found"})})]})};function aL(e){let{data:s}=e,[t,l]=(0,d.useState)(!0),[a,r]=(0,d.useState)({});if(!s||0===s.length)return null;let i=e=>new Date(1e3*e).toLocaleString(),n=(e,s)=>"".concat(((s-e)*1e3).toFixed(2),"ms"),o=(e,s)=>{let t="".concat(e,"-").concat(s);r(e=>({...e,[t]:!e[t]}))};return(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow mb-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b cursor-pointer hover:bg-gray-50",onClick:()=>l(!t),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 text-gray-600 transition-transform ".concat(t?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Vector Store Requests"})]}),(0,c.jsx)("span",{className:"text-sm text-gray-500",children:t?"Click to collapse":"Click to expand"})]}),t&&(0,c.jsx)("div",{className:"p-4",children:s.map((e,s)=>(0,c.jsxs)("div",{className:"mb-6 last:mb-0",children:[(0,c.jsx)("div",{className:"bg-white rounded-lg border p-4 mb-4",children:(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Query:"}),(0,c.jsx)("span",{className:"font-mono",children:e.query})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Vector Store ID:"}),(0,c.jsx)("span",{className:"font-mono",children:e.vector_store_id})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Provider:"}),(0,c.jsx)("span",{className:"flex items-center",children:(()=>{let{logo:s,displayName:t}=(0,sW.dr)(e.custom_llm_provider);return(0,c.jsxs)(c.Fragment,{children:[s&&(0,c.jsx)("img",{src:s,alt:"".concat(t," logo"),className:"h-5 w-5 mr-2"}),t]})})()})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Start Time:"}),(0,c.jsx)("span",{children:i(e.start_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"End Time:"}),(0,c.jsx)("span",{children:i(e.end_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Duration:"}),(0,c.jsx)("span",{children:n(e.start_time,e.end_time)})]})]})]})}),(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Search Results"}),(0,c.jsx)("div",{className:"space-y-2",children:e.vector_store_search_response.data.map((e,t)=>{let l=a["".concat(s,"-").concat(t)]||!1;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex items-center p-3 bg-gray-50 cursor-pointer",onClick:()=>o(s,t),children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(l?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsxs)("span",{className:"font-medium mr-2",children:["Result ",t+1]}),(0,c.jsxs)("span",{className:"text-gray-500 text-sm",children:["Score: ",(0,c.jsx)("span",{className:"font-mono",children:e.score.toFixed(4)})]})]})]}),l&&(0,c.jsx)("div",{className:"p-3 border-t bg-white",children:e.content.map((e,s)=>(0,c.jsxs)("div",{className:"mb-2 last:mb-0",children:[(0,c.jsx)("div",{className:"text-xs text-gray-500 mb-1",children:e.type}),(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all bg-gray-50 p-2 rounded",children:e.text})]},s))})]},t)})})]},s))})]})}let aP=e=>e>=.8?"text-green-600":"text-yellow-600";var aM=e=>{let{entities:s}=e,[t,l]=(0,d.useState)(!0),[a,r]=(0,d.useState)({}),i=e=>{r(s=>({...s,[e]:!s[e]}))};return s&&0!==s.length?(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"flex items-center mb-2 cursor-pointer",onClick:()=>l(!t),children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(t?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsxs)("h4",{className:"font-medium",children:["Detected Entities (",s.length,")"]})]}),t&&(0,c.jsx)("div",{className:"space-y-2",children:s.map((e,s)=>{let t=a[s]||!1;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 cursor-pointer hover:bg-gray-100",onClick:()=>i(s),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(t?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsx)("span",{className:"font-medium mr-2",children:e.entity_type}),(0,c.jsxs)("span",{className:"font-mono ".concat(aP(e.score)),children:["Score: ",e.score.toFixed(2)]})]}),(0,c.jsxs)("span",{className:"text-xs text-gray-500",children:["Position: ",e.start,"-",e.end]})]}),t&&(0,c.jsx)("div",{className:"p-3 border-t bg-white",children:(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-2",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Entity Type:"}),(0,c.jsx)("span",{children:e.entity_type})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Position:"}),(0,c.jsxs)("span",{children:["Characters ",e.start,"-",e.end]})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Confidence:"}),(0,c.jsx)("span",{className:aP(e.score),children:e.score.toFixed(2)})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[e.recognition_metadata&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Recognizer:"}),(0,c.jsx)("span",{children:e.recognition_metadata.recognizer_name})]}),(0,c.jsxs)("div",{className:"flex overflow-hidden",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Identifier:"}),(0,c.jsx)("span",{className:"truncate text-xs font-mono",children:e.recognition_metadata.recognizer_identifier})]})]}),e.analysis_explanation&&(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Explanation:"}),(0,c.jsx)("span",{children:e.analysis_explanation})]})]})]})})]},s)})})]}):null};let aO=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"slate";return(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block ".concat({green:"bg-green-100 text-green-800",red:"bg-red-100 text-red-800",blue:"bg-blue-50 text-blue-700",slate:"bg-slate-100 text-slate-800",amber:"bg-amber-100 text-amber-800"}[s]),children:e})},aD=e=>e?aO("detected","red"):aO("not detected","slate"),aF=e=>{let{title:s,count:t,defaultOpen:l=!0,right:a,children:r}=e,[i,n]=(0,d.useState)(l);return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 cursor-pointer hover:bg-gray-100",onClick:()=>n(e=>!e),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(i?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsxs)("h5",{className:"font-medium",children:[s," ","number"==typeof t&&(0,c.jsxs)("span",{className:"text-gray-500 font-normal",children:["(",t,")"]})]})]}),(0,c.jsx)("div",{children:a})]}),i&&(0,c.jsx)("div",{className:"p-3 border-t bg-white",children:r})]})},aR=e=>{let{label:s,children:t,mono:l}=e;return(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:s}),(0,c.jsx)("span",{className:l?"font-mono text-sm break-all":"",children:t})]})},az=()=>(0,c.jsx)("div",{className:"my-3 border-t"});var aU=e=>{var s,t,l,a,r,i,n,o,d,m;let{response:u}=e;if(!u)return null;let x=null!==(r=null!==(a=u.outputs)&&void 0!==a?a:u.output)&&void 0!==r?r:[],h="GUARDRAIL_INTERVENED"===u.action?"red":"green",p=(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(null===(s=u.guardrailCoverage)||void 0===s?void 0:s.textCharacters)&&aO("text guarded ".concat(null!==(i=u.guardrailCoverage.textCharacters.guarded)&&void 0!==i?i:0,"/").concat(null!==(n=u.guardrailCoverage.textCharacters.total)&&void 0!==n?n:0),"blue"),(null===(t=u.guardrailCoverage)||void 0===t?void 0:t.images)&&aO("images guarded ".concat(null!==(o=u.guardrailCoverage.images.guarded)&&void 0!==o?o:0,"/").concat(null!==(d=u.guardrailCoverage.images.total)&&void 0!==d?d:0),"blue")]}),g=u.usage&&(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(u.usage).map(e=>{let[s,t]=e;return"number"==typeof t?(0,c.jsxs)("span",{className:"px-2 py-1 bg-slate-100 text-slate-800 rounded-md text-xs font-medium",children:[s,": ",t]},s):null})});return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"border rounded-lg p-4",children:[(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(aR,{label:"Action:",children:aO(null!==(m=u.action)&&void 0!==m?m:"N/A",h)}),u.actionReason&&(0,c.jsx)(aR,{label:"Action Reason:",children:u.actionReason}),u.blockedResponse&&(0,c.jsx)(aR,{label:"Blocked Response:",children:(0,c.jsx)("span",{className:"italic",children:u.blockedResponse})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(aR,{label:"Coverage:",children:p}),(0,c.jsx)(aR,{label:"Usage:",children:g})]})]}),x.length>0&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(az,{}),(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Outputs"}),(0,c.jsx)("div",{className:"space-y-2",children:x.map((e,s)=>{var t;return(0,c.jsx)("div",{className:"p-3 bg-gray-50 rounded-md",children:(0,c.jsx)("div",{className:"text-sm whitespace-pre-wrap",children:null!==(t=e.text)&&void 0!==t?t:(0,c.jsx)("em",{children:"(non-text output)"})})},s)})})]})]}),(null===(l=u.assessments)||void 0===l?void 0:l.length)?(0,c.jsx)("div",{className:"space-y-3",children:u.assessments.map((e,s)=>{var t,l,a,r,i,n,o,d,m,u,x,h,p,g,j,f,v,y,b,_,N,Z,w,k;let S=(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[e.wordPolicy&&aO("word","slate"),e.contentPolicy&&aO("content","slate"),e.topicPolicy&&aO("topic","slate"),e.sensitiveInformationPolicy&&aO("sensitive-info","slate"),e.contextualGroundingPolicy&&aO("contextual-grounding","slate"),e.automatedReasoningPolicy&&aO("automated-reasoning","slate")]});return(0,c.jsxs)(aF,{title:"Assessment #".concat(s+1),defaultOpen:!0,right:(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[(null===(t=e.invocationMetrics)||void 0===t?void 0:t.guardrailProcessingLatency)!=null&&aO("".concat(e.invocationMetrics.guardrailProcessingLatency," ms"),"amber"),S]}),children:[e.wordPolicy&&(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Word Policy"}),(null!==(f=null===(l=e.wordPolicy.customWords)||void 0===l?void 0:l.length)&&void 0!==f?f:0)>0&&(0,c.jsx)(aF,{title:"Custom Words",defaultOpen:!0,children:(0,c.jsx)("div",{className:"space-y-2",children:e.wordPolicy.customWords.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aO(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-mono text-sm break-all",children:e.match})]}),aD(e.detected)]},s)})})}),(null!==(v=null===(a=e.wordPolicy.managedWordLists)||void 0===a?void 0:a.length)&&void 0!==v?v:0)>0&&(0,c.jsx)(aF,{title:"Managed Word Lists",defaultOpen:!1,children:(0,c.jsx)("div",{className:"space-y-2",children:e.wordPolicy.managedWordLists.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aO(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-mono text-sm break-all",children:e.match}),e.type&&aO(e.type,"slate")]}),aD(e.detected)]},s)})})})]}),(null===(i=e.contentPolicy)||void 0===i?void 0:null===(r=i.filters)||void 0===r?void 0:r.length)?(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Content Policy"}),(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)("table",{className:"min-w-full text-sm",children:[(0,c.jsx)("thead",{children:(0,c.jsxs)("tr",{className:"text-left text-gray-600",children:[(0,c.jsx)("th",{className:"py-1 pr-4",children:"Type"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Action"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Detected"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Strength"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Confidence"})]})}),(0,c.jsx)("tbody",{children:e.contentPolicy.filters.map((e,s)=>{var t,l,a,r;return(0,c.jsxs)("tr",{className:"border-t",children:[(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(t=e.type)&&void 0!==t?t:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aO(null!==(l=e.action)&&void 0!==l?l:"—",e.detected?"red":"slate")}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aD(e.detected)}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(a=e.filterStrength)&&void 0!==a?a:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(r=e.confidence)&&void 0!==r?r:"—"})]},s)})})]})})]}):null,(null===(o=e.contextualGroundingPolicy)||void 0===o?void 0:null===(n=o.filters)||void 0===n?void 0:n.length)?(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Contextual Grounding"}),(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)("table",{className:"min-w-full text-sm",children:[(0,c.jsx)("thead",{children:(0,c.jsxs)("tr",{className:"text-left text-gray-600",children:[(0,c.jsx)("th",{className:"py-1 pr-4",children:"Type"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Action"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Detected"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Score"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Threshold"})]})}),(0,c.jsx)("tbody",{children:e.contextualGroundingPolicy.filters.map((e,s)=>{var t,l,a,r;return(0,c.jsxs)("tr",{className:"border-t",children:[(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(t=e.type)&&void 0!==t?t:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aO(null!==(l=e.action)&&void 0!==l?l:"—",e.detected?"red":"slate")}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aD(e.detected)}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(a=e.score)&&void 0!==a?a:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(r=e.threshold)&&void 0!==r?r:"—"})]},s)})})]})})]}):null,e.sensitiveInformationPolicy&&(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Sensitive Information"}),(null!==(y=null===(d=e.sensitiveInformationPolicy.piiEntities)||void 0===d?void 0:d.length)&&void 0!==y?y:0)>0&&(0,c.jsx)(aF,{title:"PII Entities",defaultOpen:!0,children:(0,c.jsx)("div",{className:"space-y-2",children:e.sensitiveInformationPolicy.piiEntities.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aO(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),e.type&&aO(e.type,"slate"),(0,c.jsx)("span",{className:"font-mono text-xs break-all",children:e.match})]}),aD(e.detected)]},s)})})}),(null!==(b=null===(m=e.sensitiveInformationPolicy.regexes)||void 0===m?void 0:m.length)&&void 0!==b?b:0)>0&&(0,c.jsx)(aF,{title:"Custom Regexes",defaultOpen:!1,children:(0,c.jsx)("div",{className:"space-y-2",children:e.sensitiveInformationPolicy.regexes.map((e,s)=>{var t,l;return(0,c.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between p-2 bg-gray-50 rounded gap-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aO(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-medium",children:null!==(l=e.name)&&void 0!==l?l:"regex"}),(0,c.jsx)("span",{className:"font-mono text-xs break-all",children:e.regex})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(e.detected),e.match&&(0,c.jsx)("span",{className:"font-mono text-xs break-all",children:e.match})]})]},s)})})})]}),(null===(x=e.topicPolicy)||void 0===x?void 0:null===(u=x.topics)||void 0===u?void 0:u.length)?(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Topic Policy"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:e.topicPolicy.topics.map((e,s)=>{var t,l;return(0,c.jsx)("div",{className:"px-3 py-1.5 bg-gray-50 rounded-md text-xs",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aO(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-medium",children:null!==(l=e.name)&&void 0!==l?l:"topic"}),e.type&&aO(e.type,"slate"),aD(e.detected)]})},s)})})]}):null,e.invocationMetrics&&(0,c.jsx)(aF,{title:"Invocation Metrics",defaultOpen:!1,children:(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(aR,{label:"Latency (ms)",children:null!==(_=e.invocationMetrics.guardrailProcessingLatency)&&void 0!==_?_:"—"}),(0,c.jsx)(aR,{label:"Coverage:",children:(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(null===(h=e.invocationMetrics.guardrailCoverage)||void 0===h?void 0:h.textCharacters)&&aO("text ".concat(null!==(N=e.invocationMetrics.guardrailCoverage.textCharacters.guarded)&&void 0!==N?N:0,"/").concat(null!==(Z=e.invocationMetrics.guardrailCoverage.textCharacters.total)&&void 0!==Z?Z:0),"blue"),(null===(p=e.invocationMetrics.guardrailCoverage)||void 0===p?void 0:p.images)&&aO("images ".concat(null!==(w=e.invocationMetrics.guardrailCoverage.images.guarded)&&void 0!==w?w:0,"/").concat(null!==(k=e.invocationMetrics.guardrailCoverage.images.total)&&void 0!==k?k:0),"blue")]})})]}),(0,c.jsx)("div",{className:"space-y-2",children:(0,c.jsx)(aR,{label:"Usage:",children:(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:e.invocationMetrics.usage&&Object.entries(e.invocationMetrics.usage).map(e=>{let[s,t]=e;return"number"==typeof t?(0,c.jsxs)("span",{className:"px-2 py-1 bg-slate-100 text-slate-800 rounded-md text-xs font-medium",children:[s,": ",t]},s):null})})})})]})}),(null===(j=e.automatedReasoningPolicy)||void 0===j?void 0:null===(g=j.findings)||void 0===g?void 0:g.length)?(0,c.jsx)(aF,{title:"Automated Reasoning Findings",defaultOpen:!1,children:(0,c.jsx)("div",{className:"space-y-2",children:e.automatedReasoningPolicy.findings.map((e,s)=>(0,c.jsx)("pre",{className:"bg-gray-50 rounded p-2 text-xs overflow-x-auto",children:JSON.stringify(e,null,2)},s))})}):null]},s)})}):null,(0,c.jsx)(aF,{title:"Raw Bedrock Guardrail Response",defaultOpen:!1,children:(0,c.jsx)("pre",{className:"bg-gray-50 rounded p-3 text-xs overflow-x-auto",children:JSON.stringify(u,null,2)})})]})},aq=e=>{var s,t;let{data:l}=e,[a,r]=(0,d.useState)(!0),i=null!==(t=l.guardrail_provider)&&void 0!==t?t:"presidio";if(!l)return null;let n="string"==typeof l.guardrail_status&&"success"===l.guardrail_status.toLowerCase(),o=n?null:"Guardrail failed to run.",m=l.masked_entity_count?Object.values(l.masked_entity_count).reduce((e,s)=>e+s,0):0,u=e=>new Date(1e3*e).toLocaleString();return(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow mb-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b cursor-pointer hover:bg-gray-50",onClick:()=>r(!a),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 text-gray-600 transition-transform ".concat(a?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Guardrail Information"}),(0,c.jsx)(B.Z,{title:o,placement:"top",arrow:!0,destroyTooltipOnHide:!0,children:(0,c.jsx)("span",{className:"ml-3 px-2 py-1 rounded-md text-xs font-medium inline-block ".concat(n?"bg-green-100 text-green-800":"bg-red-100 text-red-800 cursor-help"),children:l.guardrail_status})}),m>0&&(0,c.jsxs)("span",{className:"ml-3 px-2 py-1 bg-blue-50 text-blue-700 rounded-md text-xs font-medium",children:[m," masked ",1===m?"entity":"entities"]})]}),(0,c.jsx)("span",{className:"text-sm text-gray-500",children:a?"Click to collapse":"Click to expand"})]}),a&&(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"bg-white rounded-lg border p-4 mb-4",children:[(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Guardrail Name:"}),(0,c.jsx)("span",{className:"font-mono",children:l.guardrail_name})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Mode:"}),(0,c.jsx)("span",{className:"font-mono",children:l.guardrail_mode})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Status:"}),(0,c.jsx)(B.Z,{title:o,placement:"top",arrow:!0,destroyTooltipOnHide:!0,children:(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block ".concat(n?"bg-green-100 text-green-800":"bg-red-100 text-red-800 cursor-help"),children:l.guardrail_status})})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Start Time:"}),(0,c.jsx)("span",{children:u(l.start_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"End Time:"}),(0,c.jsx)("span",{children:u(l.end_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Duration:"}),(0,c.jsxs)("span",{children:[l.duration.toFixed(4),"s"]})]})]})]}),l.masked_entity_count&&Object.keys(l.masked_entity_count).length>0&&(0,c.jsxs)("div",{className:"mt-4 pt-4 border-t",children:[(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Masked Entity Summary"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(l.masked_entity_count).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{className:"px-3 py-1.5 bg-blue-50 text-blue-700 rounded-md text-xs font-medium",children:[s,": ",t]},s)})})]})]}),"presidio"===i&&(null===(s=l.guardrail_response)||void 0===s?void 0:s.length)>0&&(0,c.jsx)(aM,{entities:l.guardrail_response}),"bedrock"===i&&l.guardrail_response&&(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(aU,{response:l.guardrail_response})})]})]})};let aV={TEAM_ID:"Team ID",KEY_HASH:"Key Hash",REQUEST_ID:"Request ID",MODEL:"Model",USER_ID:"User ID",END_USER:"End User",STATUS:"Status",KEY_ALIAS:"Key Alias"},aB="".concat("../ui/assets/","audit-logs-preview.png");function aK(e){let{userID:s,userRole:t,token:l,accessToken:a,isActive:r,premiumUser:i,allTeams:n}=e,[o,m]=(0,d.useState)(ay()().subtract(24,"hours").format("YYYY-MM-DDTHH:mm")),u=(0,d.useRef)(null),x=(0,d.useRef)(null),[h,p]=(0,d.useState)(1),[g]=(0,d.useState)(50),[f,v]=(0,d.useState)({}),[y,b]=(0,d.useState)(""),[_,N]=(0,d.useState)(""),[Z,w]=(0,d.useState)(""),[S,C]=(0,d.useState)("all"),[I,A]=(0,d.useState)("all"),[T,E]=(0,d.useState)(!1),[L,P]=(0,d.useState)(!1),M=(0,sk.a)({queryKey:["all_audit_logs",a,l,t,s,o],queryFn:async()=>{if(!a||!l||!t||!s)return[];let e=ay()(o).utc().format("YYYY-MM-DD HH:mm:ss"),r=ay()().utc().format("YYYY-MM-DD HH:mm:ss"),i=[],n=1,c=1;do{let s=await (0,j.uiAuditLogsCall)(a,e,r,n,50);i=i.concat(s.audit_logs),c=s.total_pages,n++}while(n<=c);return i},enabled:!!a&&!!l&&!!t&&!!s&&r,refetchInterval:5e3,refetchIntervalInBackground:!0}),O=(0,d.useCallback)(async e=>{if(a)try{let s=(await (0,j.keyListCall)(a,null,null,e,null,null,1,10)).keys.find(s=>s.key_alias===e);s?N(s.token):N("")}catch(e){console.error("Error fetching key hash for alias:",e),N("")}},[a]);(0,d.useEffect)(()=>{if(!a)return;let e=!1,s=!1;f["Team ID"]?y!==f["Team ID"]&&(b(f["Team ID"]),e=!0):""!==y&&(b(""),e=!0),f["Key Hash"]?_!==f["Key Hash"]&&(N(f["Key Hash"]),s=!0):f["Key Alias"]?O(f["Key Alias"]):""!==_&&(N(""),s=!0),(e||s)&&p(1)},[f,a,O,y,_]),(0,d.useEffect)(()=>{p(1)},[y,_,o,Z,S,I]),(0,d.useEffect)(()=>{function e(e){u.current&&!u.current.contains(e.target)&&E(!1),x.current&&!x.current.contains(e.target)&&P(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let D=(0,d.useMemo)(()=>M.data?M.data.filter(e=>{var s,t,l,a,r,i,n;let o=!0,c=!0,d=!0,m=!0,u=!0;if(y){let r="string"==typeof e.before_value?null===(s=JSON.parse(e.before_value))||void 0===s?void 0:s.team_id:null===(t=e.before_value)||void 0===t?void 0:t.team_id,i="string"==typeof e.updated_values?null===(l=JSON.parse(e.updated_values))||void 0===l?void 0:l.team_id:null===(a=e.updated_values)||void 0===a?void 0:a.team_id;o=r===y||i===y}if(_)try{let s="string"==typeof e.before_value?JSON.parse(e.before_value):e.before_value,t="string"==typeof e.updated_values?JSON.parse(e.updated_values):e.updated_values,l=null==s?void 0:s.token,a=null==t?void 0:t.token;c="string"==typeof l&&l.includes(_)||"string"==typeof a&&a.includes(_)}catch(e){c=!1}if(Z&&(d=null===(r=e.object_id)||void 0===r?void 0:r.toLowerCase().includes(Z.toLowerCase())),"all"!==S&&(m=(null===(i=e.action)||void 0===i?void 0:i.toLowerCase())===S.toLowerCase()),"all"!==I){let s="";switch(I){case"keys":s="litellm_verificationtoken";break;case"teams":s="litellm_teamtable";break;case"users":s="litellm_usertable";break;default:s=I}u=(null===(n=e.table_name)||void 0===n?void 0:n.toLowerCase())===s}return o&&c&&d&&m&&u}):[],[M.data,y,_,Z,S,I]),F=D.length,R=Math.ceil(F/g)||1,z=(0,d.useMemo)(()=>{let e=(h-1)*g,s=e+g;return D.slice(e,s)},[D,h,g]),U=!M.data||0===M.data.length,q=(0,d.useCallback)(e=>{let{row:s}=e;return(0,c.jsx)(e=>{let{rowData:s}=e,{before_value:t,updated_values:l,table_name:a,action:r}=s,i=(e,s)=>{if(!e||0===Object.keys(e).length)return(0,c.jsx)(k.Z,{children:"N/A"});if(s){let s=Object.keys(e),t=["token","spend","max_budget"];if(s.every(e=>t.includes(e))&&s.length>0)return(0,c.jsxs)("div",{children:[s.includes("token")&&(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Token:"})," ",e.token||"N/A"]}),s.includes("spend")&&(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Spend:"})," ",void 0!==e.spend?"$".concat(eP(e.spend,6)):"N/A"]}),s.includes("max_budget")&&(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Max Budget:"})," ",void 0!==e.max_budget?"$".concat(eP(e.max_budget,6)):"N/A"]})]});if(e["No differing fields detected in 'before' state"]||e["No differing fields detected in 'updated' state"]||e["No fields changed"])return(0,c.jsx)(k.Z,{children:e[Object.keys(e)[0]]})}return(0,c.jsx)("pre",{className:"p-2 bg-gray-50 border rounded text-xs overflow-auto max-h-60",children:JSON.stringify(e,null,2)})},n=t,o=l;if(("updated"===r||"rotated"===r)&&t&&l&&("LiteLLM_TeamTable"===a||"LiteLLM_UserTable"===a||"LiteLLM_VerificationToken"===a)){let e={},s={};new Set([...Object.keys(t),...Object.keys(l)]).forEach(a=>{JSON.stringify(t[a])!==JSON.stringify(l[a])&&(t.hasOwnProperty(a)&&(e[a]=t[a]),l.hasOwnProperty(a)&&(s[a]=l[a]))}),Object.keys(t).forEach(a=>{l.hasOwnProperty(a)||e.hasOwnProperty(a)||(e[a]=t[a],s[a]=void 0)}),Object.keys(l).forEach(a=>{t.hasOwnProperty(a)||s.hasOwnProperty(a)||(s[a]=l[a],e[a]=void 0)}),n=Object.keys(e).length>0?e:{"No differing fields detected in 'before' state":"N/A"},o=Object.keys(s).length>0?s:{"No differing fields detected in 'updated' state":"N/A"},0===Object.keys(e).length&&0===Object.keys(s).length&&(n={"No fields changed":"N/A"},o={"No fields changed":"N/A"})}return(0,c.jsxs)("div",{className:"-mx-4 p-4 bg-slate-100 border-y border-slate-300 grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"font-semibold mb-2 text-sm text-slate-700",children:"Before Value:"}),i(n,"LiteLLM_VerificationToken"===a)]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"font-semibold mb-2 text-sm text-slate-700",children:"Updated Value:"}),i(o,"LiteLLM_VerificationToken"===a)]})]})},{rowData:s.original})},[]);if(!i)return(0,c.jsxs)("div",{style:{textAlign:"center",marginTop:"20px"},children:[(0,c.jsx)("h1",{style:{display:"block",marginBottom:"10px"},children:"✨ Enterprise Feature."}),(0,c.jsx)(k.Z,{style:{display:"block",marginBottom:"10px"},children:"This is a LiteLLM Enterprise feature, and requires a valid key to use."}),(0,c.jsx)(k.Z,{style:{display:"block",marginBottom:"20px",fontStyle:"italic"},children:"Here's a preview of what Audit Logs offer:"}),(0,c.jsx)("img",{src:aB,alt:"Audit Logs Preview",style:{maxWidth:"100%",maxHeight:"700px",borderRadius:"8px",boxShadow:"0 4px 8px rgba(0,0,0,0.1)",margin:"0 auto"},onError:e=>{console.error("Failed to load audit logs preview image"),e.target.style.display="none"}})]});let V=F>0?(h-1)*g+1:0,B=Math.min(h*g,F);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"flex items-center justify-between mb-4"}),(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsxs)("div",{className:"border-b px-6 py-4",children:[(0,c.jsx)("h1",{className:"text-xl font-semibold py-4",children:"Audit Logs"}),(0,c.jsx)(e=>{let{show:s}=e;return s?(0,c.jsxs)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-4 flex items-start mb-6",children:[(0,c.jsx)("div",{className:"text-blue-500 mr-3 flex-shrink-0 mt-0.5",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,c.jsx)("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),(0,c.jsx)("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"text-sm font-medium text-blue-800",children:"Audit Logs Not Available"}),(0,c.jsx)("p",{className:"text-sm text-blue-700 mt-1",children:"To enable audit logging, add the following configuration to your LiteLLM proxy configuration file:"}),(0,c.jsx)("pre",{className:"mt-2 bg-white p-3 rounded border border-blue-200 text-xs font-mono overflow-auto",children:"litellm_settings:\n store_audit_logs: true"}),(0,c.jsx)("p",{className:"text-xs text-blue-700 mt-2",children:"Note: This will only affect new requests after the configuration change and proxy restart."})]})]}):null},{show:U}),(0,c.jsxs)("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between space-y-4 md:space-y-0",children:[(0,c.jsx)("div",{className:"flex flex-wrap items-center gap-3",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsx)("input",{type:"text",placeholder:"Search by Object ID...",value:Z,onChange:e=>w(e.target.value),className:"px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})}),(0,c.jsxs)("button",{onClick:()=>{M.refetch()},className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",title:"Refresh data",children:[(0,c.jsx)("svg",{className:"w-4 h-4 ".concat(M.isFetching?"animate-spin":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),(0,c.jsx)("span",{children:"Refresh"})]})]})}),(0,c.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,c.jsxs)("div",{className:"relative",ref:u,children:[(0,c.jsx)("label",{htmlFor:"actionFilterDisplay",className:"mr-2 text-sm font-medium text-gray-700 sr-only",children:"Action:"}),(0,c.jsxs)("button",{id:"actionFilterDisplay",onClick:()=>E(!T),className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 bg-white w-40 text-left justify-between",children:[(0,c.jsxs)("span",{children:["all"===S&&"All Actions","created"===S&&"Created","updated"===S&&"Updated","deleted"===S&&"Deleted","rotated"===S&&"Rotated"]}),(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M19 9l-7 7-7-7"})})]}),T&&(0,c.jsx)("div",{className:"absolute left-0 mt-2 w-40 bg-white rounded-lg shadow-lg border p-1 z-50",children:(0,c.jsx)("div",{className:"space-y-1",children:[{label:"All Actions",value:"all"},{label:"Created",value:"created"},{label:"Updated",value:"updated"},{label:"Deleted",value:"deleted"},{label:"Rotated",value:"rotated"}].map(e=>(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(S===e.value?"bg-blue-50 text-blue-600 font-medium":"font-normal"),onClick:()=>{C(e.value),E(!1)},children:e.label},e.value))})})]}),(0,c.jsxs)("div",{className:"relative",ref:x,children:[(0,c.jsx)("label",{htmlFor:"tableFilterDisplay",className:"mr-2 text-sm font-medium text-gray-700 sr-only",children:"Table:"}),(0,c.jsxs)("button",{id:"tableFilterDisplay",onClick:()=>P(!L),className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 bg-white w-40 text-left justify-between",children:[(0,c.jsxs)("span",{children:["all"===I&&"All Tables","keys"===I&&"Keys","teams"===I&&"Teams","users"===I&&"Users"]}),(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M19 9l-7 7-7-7"})})]}),L&&(0,c.jsx)("div",{className:"absolute left-0 mt-2 w-40 bg-white rounded-lg shadow-lg border p-1 z-50",children:(0,c.jsx)("div",{className:"space-y-1",children:[{label:"All Tables",value:"all"},{label:"Keys",value:"keys"},{label:"Teams",value:"teams"},{label:"Users",value:"users"}].map(e=>(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(I===e.value?"bg-blue-50 text-blue-600 font-medium":"font-normal"),onClick:()=>{A(e.value),P(!1)},children:e.label},e.value))})})]}),(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Showing ",M.isLoading?"...":V," -"," ",M.isLoading?"...":B," of"," ",M.isLoading?"...":F," results"]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Page ",M.isLoading?"...":h," of"," ",M.isLoading?"...":R]}),(0,c.jsx)("button",{onClick:()=>p(e=>Math.max(1,e-1)),disabled:M.isLoading||1===h,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Previous"}),(0,c.jsx)("button",{onClick:()=>p(e=>Math.min(R,e+1)),disabled:M.isLoading||h===R,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Next"})]})]})]})]}),(0,c.jsx)(ly,{columns:ak,data:z,renderSubComponent:q,getRowCanExpand:()=>!0})]})]})}let aG=(e,s,t)=>{if(e)return"".concat(ay()(s).format("MMM D, h:mm A")," - ").concat(ay()(t).format("MMM D, h:mm A"));let l=ay()(),a=ay()(s),r=l.diff(a,"minutes");if(r>=0&&r<2)return"Last 1 Minute";if(r>=2&&r<16)return"Last 15 Minutes";if(r>=16&&r<61)return"Last Hour";let i=l.diff(a,"hours");return i>=1&&i<5?"Last 4 Hours":i>=5&&i<25?"Last 24 Hours":i>=25&&i<169?"Last 7 Days":"".concat(a.format("MMM D")," - ").concat(l.format("MMM D"))};function aH(e){var s,t,l;let{accessToken:a,token:r,userRole:i,userID:n,allTeams:o,premiumUser:m}=e,[u,x]=(0,d.useState)(""),[p,g]=(0,d.useState)(!1),[f,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(1),[_]=(0,d.useState)(50),N=(0,d.useRef)(null),Z=(0,d.useRef)(null),w=(0,d.useRef)(null),[k,S]=(0,d.useState)(ay()().subtract(24,"hours").format("YYYY-MM-DDTHH:mm")),[C,I]=(0,d.useState)(ay()().format("YYYY-MM-DDTHH:mm")),[A,T]=(0,d.useState)(!1),[E,L]=(0,d.useState)(!1),[P,M]=(0,d.useState)(""),[O,D]=(0,d.useState)(""),[F,R]=(0,d.useState)(""),[z,U]=(0,d.useState)(""),[q,V]=(0,d.useState)(""),[B,K]=(0,d.useState)(null),[G,H]=(0,d.useState)(null),[Y,J]=(0,d.useState)(""),[W,$]=(0,d.useState)(""),[Q,X]=(0,d.useState)(i&&eI.lo.includes(i)),[ee,es]=(0,d.useState)("request logs"),[et,el]=(0,d.useState)(null),[ea,er]=(0,d.useState)(null),ei=(0,h.NL)(),[en,eo]=(0,d.useState)(()=>{let e=sessionStorage.getItem("isLiveTail");return null===e||JSON.parse(e)});(0,d.useEffect)(()=>{sessionStorage.setItem("isLiveTail",JSON.stringify(en))},[en]);let[ec,ed]=(0,d.useState)({value:24,unit:"hours"});(0,d.useEffect)(()=>{(async()=>{G&&a&&K({...(await (0,j.keyInfoV1Call)(a,G)).info,token:G,api_key:G})})()},[G,a]),(0,d.useEffect)(()=>{function e(e){N.current&&!N.current.contains(e.target)&&v(!1),Z.current&&!Z.current.contains(e.target)&&g(!1),w.current&&!w.current.contains(e.target)&&L(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,d.useEffect)(()=>{i&&eI.lo.includes(i)&&X(!0)},[i]);let em=(0,sk.a)({queryKey:["logs","table",y,_,k,C,F,z,Q?n:null,Y,q],queryFn:async()=>{if(!a||!r||!i||!n)return{data:[],total:0,page:1,page_size:_,total_pages:0};let e=ay()(k).utc().format("YYYY-MM-DD HH:mm:ss"),s=A?ay()(C).utc().format("YYYY-MM-DD HH:mm:ss"):ay()().utc().format("YYYY-MM-DD HH:mm:ss"),t=await (0,j.uiSpendLogsCall)(a,z||void 0,F||void 0,void 0,e,s,y,_,Q?n:void 0,W,Y,q);return await aS(t.data,e,a,ei),t.data=t.data.map(s=>{let t=ei.getQueryData(["logDetails",s.request_id,e]);return(null==t?void 0:t.messages)&&(null==t?void 0:t.response)&&(s.messages=t.messages,s.response=t.response),s}),t},enabled:!!a&&!!r&&!!i&&!!n&&"request logs"===ee,refetchInterval:!!en&&1===y&&15e3,refetchIntervalInBackground:!0}),{filters:eu,filteredLogs:ex,allTeams:eh,allKeyAliases:ep,handleFilterChange:eg,handleFilterReset:ej}=function(e){let{logs:s,accessToken:t,startTime:l,endTime:a,pageSize:r=25,isCustomDate:i,setCurrentPage:n,userID:o,userRole:c}=e,m=(0,d.useMemo)(()=>({[aV.TEAM_ID]:"",[aV.KEY_HASH]:"",[aV.REQUEST_ID]:"",[aV.MODEL]:"",[aV.USER_ID]:"",[aV.END_USER]:"",[aV.STATUS]:"",[aV.KEY_ALIAS]:""}),[]),[u,x]=(0,d.useState)(m),[h,p]=(0,d.useState)({data:[],total:0,page:1,page_size:50,total_pages:0}),g=(0,d.useRef)(0),f=(0,d.useCallback)(async function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!t)return;console.log("Filters being sent to API:",e);let n=Date.now();g.current=n;let o=ay()(l).utc().format("YYYY-MM-DD HH:mm:ss"),c=i?ay()(a).utc().format("YYYY-MM-DD HH:mm:ss"):ay()().utc().format("YYYY-MM-DD HH:mm:ss");try{let l=await (0,j.uiSpendLogsCall)(t,e[aV.KEY_HASH]||void 0,e[aV.TEAM_ID]||void 0,e[aV.REQUEST_ID]||void 0,o,c,s,r,e[aV.USER_ID]||void 0,e[aV.END_USER]||void 0,e[aV.STATUS]||void 0,e[aV.MODEL]||void 0,e[aV.KEY_ALIAS]||void 0);n===g.current&&l.data&&p(l)}catch(e){console.error("Error searching users:",e)}},[t,l,a,i,r]),v=(0,d.useMemo)(()=>eC()((e,s)=>f(e,s),300),[f]);(0,d.useEffect)(()=>()=>v.cancel(),[v]);let y=(0,sk.a)({queryKey:["allKeys"],queryFn:async()=>{if(!t)throw Error("Access token required");return await sS(t)},enabled:!!t}).data||[],b=(0,d.useMemo)(()=>!!(u[aV.KEY_ALIAS]||u[aV.KEY_HASH]||u[aV.REQUEST_ID]||u[aV.USER_ID]||u[aV.END_USER]),[u]),_=(0,d.useMemo)(()=>{if(!s||!s.data)return{data:[],total:0,page:1,page_size:50,total_pages:0};if(b)return s;let e=[...s.data];return u[aV.TEAM_ID]&&(e=e.filter(e=>e.team_id===u[aV.TEAM_ID])),u[aV.STATUS]&&(e=e.filter(e=>"success"===u[aV.STATUS]?!e.status||"success"===e.status:e.status===u[aV.STATUS])),u[aV.MODEL]&&(e=e.filter(e=>e.model===u[aV.MODEL])),u[aV.KEY_HASH]&&(e=e.filter(e=>e.api_key===u[aV.KEY_HASH])),u[aV.END_USER]&&(e=e.filter(e=>e.end_user===u[aV.END_USER])),{data:e,total:s.total,page:s.page,page_size:s.page_size,total_pages:s.total_pages}},[s,u,b]),N=(0,d.useMemo)(()=>b?h&&h.data&&h.data.length>0?h:s||{data:[],total:0,page:1,page_size:50,total_pages:0}:_,[b,h,_,s]),{data:Z}=(0,sk.a)({queryKey:["allTeamsForLogFilters",t],queryFn:async()=>t&&await sC(t)||[],enabled:!!t});return{filters:u,filteredLogs:N,allKeyAliases:y,allTeams:Z,handleFilterChange:e=>{x(s=>{let t={...s,...e};for(let e of Object.keys(m))e in t||(t[e]=m[e]);return JSON.stringify(t)!==JSON.stringify(s)&&(n(1),v(t,1)),t})},handleFilterReset:()=>{x(m),p({data:[],total:0,page:1,page_size:50,total_pages:0}),v(m,1)}}}({logs:em.data||{data:[],total:0,page:1,page_size:_||10,total_pages:1},accessToken:a,startTime:k,endTime:C,pageSize:_,isCustomDate:A,setCurrentPage:b,userID:n,userRole:i}),ef=(0,d.useCallback)(async e=>{if(a)try{let s=(await (0,j.keyListCall)(a,null,null,e,null,null,y,_)).keys.find(s=>s.key_alias===e);s&&U(s.token)}catch(e){console.error("Error fetching key hash for alias:",e)}},[a,y,_]);(0,d.useEffect)(()=>{a&&(eu["Team ID"]?R(eu["Team ID"]):R(""),J(eu.Status||""),V(eu.Model||""),$(eu["End User"]||""),eu["Key Hash"]?U(eu["Key Hash"]):eu["Key Alias"]?ef(eu["Key Alias"]):U(""))},[eu,a,ef]);let ev=(0,sk.a)({queryKey:["sessionLogs",ea],queryFn:async()=>{if(!a||!ea)return{data:[],total:0,page:1,page_size:50,total_pages:1};let e=await (0,j.sessionSpendLogsCall)(a,ea);return{data:e.data||e||[],total:(e.data||e||[]).length,page:1,page_size:1e3,total_pages:1}},enabled:!!a&&!!ea});if((0,d.useEffect)(()=>{var e;(null===(e=em.data)||void 0===e?void 0:e.data)&&et&&!em.data.data.some(e=>e.request_id===et)&&el(null)},[null===(s=em.data)||void 0===s?void 0:s.data,et]),!a||!r||!i||!n)return null;let ey=ex.data.filter(e=>!u||e.request_id.includes(u)||e.model.includes(u)||e.user&&e.user.includes(u)).map(e=>({...e,duration:(Date.parse(e.endTime)-Date.parse(e.startTime))/1e3,onKeyHashClick:e=>H(e),onSessionClick:e=>{e&&er(e)}}))||[],eb=(null===(l=ev.data)||void 0===l?void 0:null===(t=l.data)||void 0===t?void 0:t.map(e=>({...e,onKeyHashClick:e=>H(e),onSessionClick:e=>{}})))||[],e_=[{name:"Team ID",label:"Team ID",isSearchable:!0,searchFn:async e=>o&&0!==o.length?o.filter(s=>s.team_id.toLowerCase().includes(e.toLowerCase())||s.team_alias&&s.team_alias.toLowerCase().includes(e.toLowerCase())).map(e=>({label:"".concat(e.team_alias||e.team_id," (").concat(e.team_id,")"),value:e.team_id})):[]},{name:"Status",label:"Status",isSearchable:!1,options:[{label:"Success",value:"success"},{label:"Failure",value:"failure"}]},{name:"Model",label:"Model",isSearchable:!1},{name:"Key Alias",label:"Key Alias",isSearchable:!0,searchFn:async e=>a?(await sS(a)).filter(s=>s.toLowerCase().includes(e.toLowerCase())).map(e=>({label:e,value:e})):[]},{name:"End User",label:"End User",isSearchable:!0,searchFn:async e=>{if(!a)return[];let s=await (0,j.allEndUsersCall)(a);return((null==s?void 0:s.map(e=>e.user_id))||[]).filter(s=>s.toLowerCase().includes(e.toLowerCase())).map(e=>({label:e,value:e}))}},{name:"Key Hash",label:"Key Hash",isSearchable:!1}];if(ea&&ev.data)return(0,c.jsx)("div",{className:"w-full p-6",children:(0,c.jsx)(aE,{sessionId:ea,logs:ev.data.data,onBack:()=>er(null)})});let eN=[{label:"Last 15 Minutes",value:15,unit:"minutes"},{label:"Last Hour",value:1,unit:"hours"},{label:"Last 4 Hours",value:4,unit:"hours"},{label:"Last 24 Hours",value:24,unit:"hours"},{label:"Last 7 Days",value:7,unit:"days"}],eZ=eN.find(e=>e.value===ec.value&&e.unit===ec.unit),ew=A?aG(A,k,C):null==eZ?void 0:eZ.label;return(0,c.jsx)("div",{className:"w-full max-w-screen p-6 overflow-x-hidden box-border",children:(0,c.jsxs)(e7.Z,{defaultIndex:0,onIndexChange:e=>es(0===e?"request logs":"audit logs"),children:[(0,c.jsxs)(e9.Z,{children:[(0,c.jsx)(e8.Z,{children:"Request Logs"}),(0,c.jsx)(e8.Z,{children:"Audit Logs"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,c.jsx)("h1",{className:"text-xl font-semibold",children:ea?(0,c.jsxs)(c.Fragment,{children:["Session: ",(0,c.jsx)("span",{className:"font-mono",children:ea}),(0,c.jsx)("button",{className:"ml-4 px-3 py-1 text-sm border rounded hover:bg-gray-50",onClick:()=>er(null),children:"← Back to All Logs"})]}):"Request Logs"})}),B&&G&&B.api_key===G?(0,c.jsx)(sN,{keyId:G,keyData:B,accessToken:a,userID:n,userRole:i,teams:o,onClose:()=>H(null),premiumUser:m,backButtonText:"Back to Logs"}):ea?(0,c.jsx)("div",{className:"bg-white rounded-lg shadow",children:(0,c.jsx)(ly,{columns:aZ,data:eb,renderSubComponent:aY,getRowCanExpand:()=>!0})}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sw,{options:e_,onApplyFilters:eg,onResetFilters:ej}),(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full box-border",children:[(0,c.jsx)("div",{className:"border-b px-6 py-4 w-full max-w-full box-border",children:(0,c.jsxs)("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between space-y-4 md:space-y-0 w-full max-w-full box-border",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 w-full max-w-full box-border",children:[(0,c.jsxs)("div",{className:"relative w-64 min-w-0 flex-shrink-0",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search by Request ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:u,onChange:e=>x(e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-shrink",children:[(0,c.jsxs)("div",{className:"relative z-50",ref:w,children:[(0,c.jsxs)("button",{onClick:()=>L(!E),className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})}),ew]}),E&&(0,c.jsx)("div",{className:"absolute right-0 mt-2 w-64 bg-white rounded-lg shadow-lg border p-2 z-50",children:(0,c.jsxs)("div",{className:"space-y-1",children:[eN.map(e=>(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(ew===e.label?"bg-blue-50 text-blue-600":""),onClick:()=>{I(ay()().format("YYYY-MM-DDTHH:mm")),S(ay()().subtract(e.value,e.unit).format("YYYY-MM-DDTHH:mm")),ed({value:e.value,unit:e.unit}),T(!1),L(!1)},children:e.label},e.label)),(0,c.jsx)("div",{className:"border-t my-2"}),(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(A?"bg-blue-50 text-blue-600":""),onClick:()=>T(!A),children:"Custom Range"})]})})]}),(0,c.jsx)(()=>(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-900",children:"Live Tail"}),(0,c.jsx)(tW.Z,{color:"green",checked:en,defaultChecked:!0,onChange:eo})]}),{}),(0,c.jsxs)("button",{onClick:()=>{em.refetch()},className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",title:"Refresh data",children:[(0,c.jsx)("svg",{className:"w-4 h-4 ".concat(em.isFetching?"animate-spin":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),(0,c.jsx)("span",{children:"Refresh"})]})]}),A&&(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{children:(0,c.jsx)("input",{type:"datetime-local",value:k,onChange:e=>{S(e.target.value),b(1)},className:"px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})}),(0,c.jsx)("span",{className:"text-gray-500",children:"to"}),(0,c.jsx)("div",{children:(0,c.jsx)("input",{type:"datetime-local",value:C,onChange:e=>{I(e.target.value),b(1)},className:"px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})})]})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700 whitespace-nowrap",children:["Showing ",em.isLoading?"...":ex?(y-1)*_+1:0," -"," ",em.isLoading?"...":ex?Math.min(y*_,ex.total):0," ","of ",em.isLoading?"...":ex?ex.total:0," results"]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700 min-w-[90px]",children:["Page ",em.isLoading?"...":y," of"," ",em.isLoading?"...":ex?ex.total_pages:1]}),(0,c.jsx)("button",{onClick:()=>b(e=>Math.max(1,e-1)),disabled:em.isLoading||1===y,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Previous"}),(0,c.jsx)("button",{onClick:()=>b(e=>Math.min(ex.total_pages||1,e+1)),disabled:em.isLoading||y===(ex.total_pages||1),className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Next"})]})]})]})}),en&&1===y&&(0,c.jsxs)("div",{className:"mb-4 px-4 py-2 bg-green-50 border border-greem-200 rounded-md flex items-center justify-between",children:[(0,c.jsx)("div",{className:"flex items-center gap-2",children:(0,c.jsx)("span",{className:"text-sm text-green-700",children:"Auto-refreshing every 15 seconds"})}),(0,c.jsx)("button",{onClick:()=>eo(!1),className:"text-sm text-green-600 hover:text-green-800",children:"Stop"})]}),(0,c.jsx)(ly,{columns:aZ,data:ey,renderSubComponent:aY,getRowCanExpand:()=>!0})]})]})]}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(aK,{userID:n,userRole:i,token:r,accessToken:a,isActive:"audit logs"===ee,premiumUser:m,allTeams:o})})]})]})})}function aY(e){var s,t,l,a,r,i,n,o;let{row:d}=e,m=e=>{if("string"==typeof e)try{return JSON.parse(e)}catch(e){}return e},u=d.original.metadata||{},x="failure"===u.status,h=x?u.error_information:null,p=d.original.messages&&(Array.isArray(d.original.messages)?d.original.messages.length>0:Object.keys(d.original.messages).length>0),g=d.original.response&&Object.keys(m(d.original.response)).length>0,j=u.vector_store_request_metadata&&Array.isArray(u.vector_store_request_metadata)&&u.vector_store_request_metadata.length>0,f=d.original.metadata&&d.original.metadata.guardrail_information,v=f&&(null===(o=d.original.metadata)||void 0===o?void 0:o.guardrail_information.masked_entity_count)?Object.values(d.original.metadata.guardrail_information.masked_entity_count).reduce((e,s)=>e+("number"==typeof s?s:0),0):0;return(0,c.jsxs)("div",{className:"p-6 bg-gray-50 space-y-6 w-full max-w-full overflow-hidden box-border",children:[(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full overflow-hidden",children:[(0,c.jsx)("div",{className:"p-4 border-b",children:(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Request Details"})}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 p-4 w-full max-w-full overflow-hidden",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Request ID:"}),(0,c.jsx)("span",{className:"font-mono text-sm",children:d.original.request_id})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Model:"}),(0,c.jsx)("span",{children:d.original.model})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Model ID:"}),(0,c.jsx)("span",{children:d.original.model_id})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Call Type:"}),(0,c.jsx)("span",{children:d.original.call_type})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Provider:"}),(0,c.jsx)("span",{children:d.original.custom_llm_provider||"-"})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"API Base:"}),(0,c.jsx)(B.Z,{title:d.original.api_base||"-",children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:d.original.api_base||"-"})})]}),(null==d?void 0:null===(s=d.original)||void 0===s?void 0:s.requester_ip_address)&&(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"IP Address:"}),(0,c.jsx)("span",{children:null==d?void 0:null===(t=d.original)||void 0===t?void 0:t.requester_ip_address})]}),f&&(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Guardrail:"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-mono",children:d.original.metadata.guardrail_information.guardrail_name}),v>0&&(0,c.jsxs)("span",{className:"ml-2 px-2 py-0.5 bg-blue-50 text-blue-700 rounded-md text-xs font-medium",children:[v," masked"]})]})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Tokens:"}),(0,c.jsxs)("span",{children:[d.original.total_tokens," (",d.original.prompt_tokens," prompt tokens +"," ",d.original.completion_tokens," completion tokens)"]})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cache Read Tokens:"}),(0,c.jsx)("span",{children:eP((null===(a=d.original.metadata)||void 0===a?void 0:null===(l=a.additional_usage_values)||void 0===l?void 0:l.cache_read_input_tokens)||0)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cache Creation Tokens:"}),(0,c.jsx)("span",{children:eP(null===(r=d.original.metadata)||void 0===r?void 0:r.additional_usage_values.cache_creation_input_tokens)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cost:"}),(0,c.jsxs)("span",{children:["$",eP(d.original.spend||0,6)]})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cache Hit:"}),(0,c.jsx)("span",{children:d.original.cache_hit})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Status:"}),(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block text-center w-16 ".concat("failure"!==((null===(i=d.original.metadata)||void 0===i?void 0:i.status)||"Success").toLowerCase()?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:"failure"!==((null===(n=d.original.metadata)||void 0===n?void 0:n.status)||"Success").toLowerCase()?"Success":"Failure"})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Start Time:"}),(0,c.jsx)("span",{children:d.original.startTime})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"End Time:"}),(0,c.jsx)("span",{children:d.original.endTime})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Duration:"}),(0,c.jsxs)("span",{children:[d.original.duration," s."]})]})]})]})]}),(0,c.jsx)(aA,{show:!p&&!g}),(0,c.jsx)("div",{className:"w-full max-w-full overflow-hidden",children:(0,c.jsx)(aC,{row:d,hasMessages:p,hasResponse:g,hasError:x,errorInfo:h,getRawRequest:()=>{var e;return(null===(e=d.original)||void 0===e?void 0:e.proxy_server_request)?m(d.original.proxy_server_request):m(d.original.messages)},formattedResponse:()=>x&&h?{error:{message:h.error_message||"An error occurred",type:h.error_class||"error",code:h.error_code||"unknown",param:null}}:m(d.original.response)})}),f&&(0,c.jsx)(aq,{data:d.original.metadata.guardrail_information}),j&&(0,c.jsx)(aL,{data:u.vector_store_request_metadata}),x&&h&&(0,c.jsx)(aI,{errorInfo:h}),d.original.request_tags&&Object.keys(d.original.request_tags).length>0&&(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsx)("div",{className:"flex justify-between items-center p-4 border-b",children:(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Request Tags"})}),(0,c.jsx)("div",{className:"p-4",children:(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(d.original.request_tags).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded-full text-xs",children:[s,": ",String(t)]},s)})})})]}),d.original.metadata&&Object.keys(d.original.metadata).length>0&&(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b",children:[(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Metadata"}),(0,c.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(JSON.stringify(d.original.metadata,null,2))},className:"p-1 hover:bg-gray-200 rounded",title:"Copy metadata",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,c.jsx)("div",{className:"p-4 overflow-auto max-h-64",children:(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all",children:JSON.stringify(d.original.metadata,null,2)})})]})]})}var aJ=t(97851),aW=t(14042),a$=t(49634);let aQ=[{label:"Today",shortLabel:"today",getValue:()=>({from:ay()().startOf("day").toDate(),to:ay()().endOf("day").toDate()})},{label:"Last 7 days",shortLabel:"7d",getValue:()=>({from:ay()().subtract(7,"days").startOf("day").toDate(),to:ay()().endOf("day").toDate()})},{label:"Last 30 days",shortLabel:"30d",getValue:()=>({from:ay()().subtract(30,"days").startOf("day").toDate(),to:ay()().endOf("day").toDate()})},{label:"Month to date",shortLabel:"MTD",getValue:()=>({from:ay()().startOf("month").toDate(),to:ay()().endOf("day").toDate()})},{label:"Year to date",shortLabel:"YTD",getValue:()=>({from:ay()().startOf("year").toDate(),to:ay()().endOf("day").toDate()})}];var aX=e=>{let{value:s,onValueChange:t,label:l="Select Time Range",showTimeRange:a=!0}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(s),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(""),[p,g]=(0,d.useState)(""),j=(0,d.useRef)(null),f=(0,d.useCallback)(e=>{if(!e.from||!e.to)return null;for(let s of aQ){let t=s.getValue(),l=ay()(e.from).isSame(ay()(t.from),"day"),a=ay()(e.to).isSame(ay()(t.to),"day");if(l&&a)return s.shortLabel}return null},[]);(0,d.useEffect)(()=>{u(f(s))},[s,f]);let v=(0,d.useCallback)(()=>{if(!x||!p)return{isValid:!0,error:""};let e=ay()(x,"YYYY-MM-DD"),s=ay()(p,"YYYY-MM-DD");return e.isValid()&&s.isValid()?s.isBefore(e)?{isValid:!1,error:"End date cannot be before start date"}:{isValid:!0,error:""}:{isValid:!1,error:"Invalid date format"}},[x,p])();(0,d.useEffect)(()=>{s.from&&h(ay()(s.from).format("YYYY-MM-DD")),s.to&&g(ay()(s.to).format("YYYY-MM-DD")),o(s)},[s]),(0,d.useEffect)(()=>{let e=e=>{j.current&&!j.current.contains(e.target)&&i(!1)};return r&&document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[r]);let y=(0,d.useCallback)((e,s)=>{if(!e||!s)return"Select date range";let t=e=>ay()(e).format("D MMM, HH:mm");return"".concat(t(e)," - ").concat(t(s))},[]),_=(0,d.useCallback)(e=>{let s;if(!e.from)return e;let t={...e},l=new Date(e.from);return s=new Date(e.to?e.to:e.from),l.toDateString(),s.toDateString(),l.setHours(0,0,0,0),s.setHours(23,59,59,999),t.from=l,t.to=s,t},[]),N=e=>{let{from:s,to:t}=e.getValue();o({from:s,to:t}),u(e.shortLabel),h(ay()(s).format("YYYY-MM-DD")),g(ay()(t).format("YYYY-MM-DD"))},Z=(0,d.useCallback)(()=>{try{if(x&&p&&v.isValid){let e=ay()(x,"YYYY-MM-DD").startOf("day"),s=ay()(p,"YYYY-MM-DD").endOf("day");if(e.isValid()&&s.isValid()){let t={from:e.toDate(),to:s.toDate()};o(t);let l=f(t);u(l)}}}catch(e){console.warn("Invalid date format:",e)}},[x,p,v.isValid,f]);return(0,d.useEffect)(()=>{Z()},[Z]),(0,c.jsxs)("div",{children:[l&&(0,c.jsx)(k.Z,{className:"mb-2",children:l}),(0,c.jsxs)("div",{className:"relative",ref:j,children:[(0,c.jsx)("div",{className:"w-[300px] px-3 py-2 text-sm border border-gray-300 rounded-md bg-white cursor-pointer hover:border-gray-400 focus:border-blue-500 focus:ring-1 focus:ring-blue-500",onClick:()=>i(!r),children:(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(t9.Z,{className:"text-gray-600"}),(0,c.jsx)("span",{className:"text-gray-900",children:y(s.from,s.to)})]}),(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-400 transition-transform ".concat(r?"rotate-180":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})}),r&&(0,c.jsx)("div",{className:"absolute top-full left-0 z-[9999] min-w-[600px] mt-1 bg-white border border-gray-200 rounded-lg shadow-xl",children:(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsxs)("div",{className:"w-1/2 border-r border-gray-200",children:[(0,c.jsx)("div",{className:"p-3 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-sm font-semibold text-gray-900",children:"Relative time (today, 7d, 30d, MTD, YTD)"})}),(0,c.jsx)("div",{className:"h-[350px] overflow-y-auto",children:aQ.map(e=>{let s=m===e.shortLabel;return(0,c.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 cursor-pointer border-b border-gray-100 transition-colors ".concat(s?"bg-blue-50 hover:bg-blue-100 border-blue-200":"hover:bg-gray-50"),onClick:()=>N(e),children:[(0,c.jsx)("span",{className:"text-sm ".concat(s?"text-blue-700 font-medium":"text-gray-700"),children:e.label}),(0,c.jsx)("span",{className:"text-xs px-2 py-1 rounded ".concat(s?"text-blue-700 bg-blue-100":"text-gray-500 bg-gray-100"),children:e.shortLabel})]},e.label)})})]}),(0,c.jsxs)("div",{className:"w-1/2 relative",children:[(0,c.jsx)("div",{className:"p-3.5 border-b border-gray-200",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(a$.Z,{className:"text-gray-600"}),(0,c.jsx)("span",{className:"text-sm font-semibold text-gray-900",children:"Start and end dates"})]})}),(0,c.jsxs)("div",{className:"p-6 space-y-6 pb-20",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"text-sm text-gray-700 mb-1 block",children:"Start date"}),(0,c.jsx)("input",{type:"date",value:x,onChange:e=>h(e.target.value),className:"w-65 px-3 py-2 text-sm border rounded-md cursor-pointer hover:border-gray-400 focus:border-blue-500 focus:ring-1 focus:ring-blue-500 ".concat(v.isValid?"border-gray-300":"border-red-300 focus:border-red-500 focus:ring-red-200")})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"text-sm text-gray-700 mb-1 block",children:"End date"}),(0,c.jsx)("input",{type:"date",value:p,onChange:e=>g(e.target.value),className:"w-65 px-3 py-2 text-sm border rounded-md cursor-pointer hover:border-gray-400 focus:border-blue-500 focus:ring-1 focus:ring-blue-500 ".concat(v.isValid?"border-gray-300":"border-red-300 focus:border-red-500 focus:ring-red-200")})]}),!v.isValid&&v.error&&(0,c.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-md p-3",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4 text-red-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})}),(0,c.jsx)("span",{className:"text-sm text-red-700 font-medium",children:v.error})]})}),n.from&&n.to&&v.isValid&&(0,c.jsxs)("div",{className:"bg-blue-50 p-3 rounded-md",children:[(0,c.jsx)("div",{className:"text-xs text-blue-700 font-medium",children:"Preview:"}),(0,c.jsx)("div",{className:"text-sm text-blue-800",children:y(n.from,n.to)})]})]}),(0,c.jsx)("div",{className:"absolute bottom-4 right-4",children:(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{o(s),s.from&&h(ay()(s.from).format("YYYY-MM-DD")),s.to&&g(ay()(s.to).format("YYYY-MM-DD")),u(f(s)),i(!1)},children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:()=>{n.from&&n.to&&v.isValid&&(t(n),requestIdleCallback(()=>{t(_(n))},{timeout:100}),i(!1))},disabled:!n.from||!n.to||!v.isValid,children:"Apply"})]})})]})]})})]}),a&&s.from&&s.to&&(0,c.jsxs)(k.Z,{className:"mt-2 text-xs text-gray-500",children:[ay()(s.from).format("MMM D, YYYY [at] HH:mm:ss")," -"," ",ay()(s.to).format("MMM D, YYYY [at] HH:mm:ss")]})]})},a0=e=>{let{userID:s,userRole:t,accessToken:l,userSpend:a,userMaxBudget:r,selectedTeam:i}=e;console.log("userSpend: ".concat(a));let[n,o]=(0,d.useState)(null!==a?a:0),[m,u]=(0,d.useState)(i?Number(eP(i.max_budget,4)):null);(0,d.useEffect)(()=>{if(i){if("Default Team"===i.team_alias)u(r);else{let e=!1;if(i.team_memberships)for(let t of i.team_memberships)t.user_id===s&&"max_budget"in t.litellm_budget_table&&null!==t.litellm_budget_table.max_budget&&(u(t.litellm_budget_table.max_budget),e=!0);e||u(i.max_budget)}}},[i,r]);let[x,h]=(0,d.useState)([]);(0,d.useEffect)(()=>{let e=async()=>{if(!l||!s||!t)return};(async()=>{try{if(null===s||null===t)return;if(null!==l){let e=(await (0,j.modelAvailableCall)(l,s,t)).data.map(e=>e.id);console.log("available_model_names:",e),h(e)}}catch(e){console.error("Error fetching user models:",e)}})(),e()},[t,l,s]),(0,d.useEffect)(()=>{null!==a&&o(a)},[a]);let p=[];i&&i.models&&(p=i.models),p&&p.includes("all-proxy-models")?(console.log("user models:",x),p=x):p&&p.includes("all-team-models")?p=i.models:p&&0===p.length&&(p=x);let g=null!==m?"$".concat(eP(Number(m),4)," limit"):"No limit",f=void 0!==n?eP(n,4):null;return console.log("spend in view user spend: ".concat(n)),(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsxs)("div",{className:"flex justify-between gap-x-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content",children:"Total Spend"}),(0,c.jsxs)("p",{className:"text-2xl text-tremor-content-strong dark:text-dark-tremor-content-strong font-semibold",children:["$",f]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content",children:"Max Budget"}),(0,c.jsx)("p",{className:"text-2xl text-tremor-content-strong dark:text-dark-tremor-content-strong font-semibold",children:g})]})]})})};let a1=e=>{let{key:s,info:t}=e;return{token:s,...t}};var a2=e=>{let{topKeys:s,accessToken:t,userID:l,userRole:a,teams:r,premiumUser:i,showTags:n=!1}=e,[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(null),[h,p]=(0,d.useState)(void 0),[g,f]=(0,d.useState)("table"),[v,y]=(0,d.useState)(new Set),_=e=>{y(s=>{let t=new Set(s);return t.has(e)?t.delete(e):t.add(e),t})},N=async e=>{if(t)try{let s=await (0,j.keyInfoV1Call)(t,e.api_key),l=a1(s);p(l),x(e.api_key),m(!0)}catch(e){console.error("Error fetching key info:",e)}},Z=()=>{m(!1),x(null),p(void 0)};d.useEffect(()=>{let e=e=>{"Escape"===e.key&&o&&Z()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[o]);let w=[{header:"Key ID",accessorKey:"api_key",cell:e=>(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.getValue(),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>N(e.row.original),children:e.getValue()?"".concat(e.getValue().slice(0,7),"..."):"-"})})})},{header:"Key Alias",accessorKey:"key_alias",cell:e=>e.getValue()||"-"}],k={header:"Spend (USD)",accessorKey:"spend",cell:e=>{let s=e.getValue();return s>0&&s<.01?"<$0.01":"$".concat(eP(s,2))}},S=n?[...w,{header:"Tags",accessorKey:"tags",cell:e=>{let s=e.getValue(),t=e.row.original.api_key,l=v.has(t);if(!s||0===s.length)return"-";let a=s.sort((e,s)=>s.usage-e.usage),r=l?a:a.slice(0,2),i=s.length>2;return(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[r.map((e,s)=>(0,c.jsx)(B.Z,{title:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Tag Name:"})," ",e.tag]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Spend:"})," ",e.usage>0&&e.usage<.01?"<$0.01":"$".concat(eP(e.usage,2))]})]}),children:(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded-full text-xs",children:[e.tag.slice(0,7),"..."]})},s)),i&&(0,c.jsx)("button",{onClick:()=>_(t),className:"ml-1 p-1 hover:bg-gray-200 rounded-full transition-colors",title:l?"Show fewer tags":"Show all tags",children:l?(0,c.jsx)(sq.Z,{className:"h-3 w-3 text-gray-500"}):(0,c.jsx)(sz.Z,{className:"h-3 w-3 text-gray-500"})})]})})}},k]:[...w,k],C=s.map(e=>({...e,display_key_alias:e.key_alias&&e.key_alias.length>10?"".concat(e.key_alias.slice(0,10),"..."):e.key_alias||"-"}));return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"mb-4 flex justify-end items-center",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>f("table"),className:"px-3 py-1 text-sm rounded-md ".concat("table"===g?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"),children:"Table View"}),(0,c.jsx)("button",{onClick:()=>f("chart"),className:"px-3 py-1 text-sm rounded-md ".concat("chart"===g?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"),children:"Chart View"})]})}),"chart"===g?(0,c.jsx)("div",{className:"relative",children:(0,c.jsx)(ta.Z,{className:"mt-4 h-40 cursor-pointer hover:opacity-90",data:C,index:"display_key_alias",categories:["spend"],colors:["cyan"],yAxisWidth:120,tickGap:5,layout:"vertical",showXAxis:!1,showLegend:!1,valueFormatter:e=>e?"$".concat(eP(e,2)):"No Key Alias",onValueChange:e=>N(e),showTooltip:!0,customTooltip:e=>{var s,t;let l=null===(t=e.payload)||void 0===t?void 0:null===(s=t[0])||void 0===s?void 0:s.payload;return(0,c.jsx)("div",{className:"relative z-50 p-3 bg-black/90 shadow-lg rounded-lg text-white max-w-xs",children:(0,c.jsxs)("div",{className:"space-y-1.5",children:[(0,c.jsxs)("div",{className:"text-sm",children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Key Alias: "}),(0,c.jsx)("span",{className:"font-mono text-gray-100 break-all",children:null==l?void 0:l.key_alias})]}),(0,c.jsxs)("div",{className:"text-sm",children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Key ID: "}),(0,c.jsx)("span",{className:"font-mono text-gray-100 break-all",children:null==l?void 0:l.api_key})]}),(0,c.jsxs)("div",{className:"text-sm",children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Spend: "}),(0,c.jsxs)("span",{className:"text-white font-medium",children:["$",eP(null==l?void 0:l.spend,2)]})]})]})})}})}):(0,c.jsx)("div",{className:"border rounded-lg overflow-hidden",children:(0,c.jsx)(ly,{columns:S,data:s,renderSubComponent:()=>(0,c.jsx)(c.Fragment,{}),getRowCanExpand:()=>!1,isLoading:!1})}),o&&u&&h&&(console.log("Rendering modal with:",{isModalOpen:o,selectedKey:u,keyData:h}),(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",onClick:e=>{e.target===e.currentTarget&&Z()},children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl relative w-11/12 max-w-6xl max-h-[90vh] overflow-y-auto min-h-[750px]",children:[(0,c.jsx)("button",{onClick:Z,className:"absolute top-4 right-4 text-gray-500 hover:text-gray-700 focus:outline-none","aria-label":"Close",children:(0,c.jsx)("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M6 18L18 6M6 6l12 12"})})}),(0,c.jsx)("div",{className:"p-6 h-full",children:(0,c.jsx)(sN,{keyId:u,onClose:Z,keyData:h,accessToken:t,userID:l,userRole:a,teams:r,premiumUser:i})})]})}))]})};function a4(e){return e>=1e6?(e/1e6).toFixed(2)+"M":e>=1e3?e/1e3+"k":e.toString()}function a5(e){return 0===e?"$0":e>=1e6?"$"+e/1e6+"M":e>=1e3?"$"+e/1e3+"k":"$"+e}let a3={blue:"#3b82f6",cyan:"#06b6d4",indigo:"#6366f1",green:"#22c55e",red:"#ef4444",purple:"#8b5cf6"},a6=e=>{let{active:s,payload:t,label:l}=e;if(s&&t&&t.length){let e=e=>e.replace("metrics.","").replace(/_/g," ").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),s=(e,s)=>{let t=s.substring(s.indexOf(".")+1);if(e.metrics&&t in e.metrics)return e.metrics[t]};return(0,c.jsxs)("div",{className:"w-56 rounded-tremor-default border border-tremor-border bg-tremor-background p-2 text-tremor-default shadow-tremor-dropdown",children:[(0,c.jsx)("p",{className:"text-tremor-content-strong",children:l}),t.map(t=>{var l;let a=null===(l=t.dataKey)||void 0===l?void 0:l.toString();if(!a||!t.payload)return null;let r=s(t.payload,a),i=a.includes("spend"),n=void 0!==r?i?"$".concat(r.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})):r.toLocaleString():"N/A",o=a3[t.color]||t.color;return(0,c.jsxs)("div",{className:"flex items-center justify-between space-x-4",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full ring-2 ring-white drop-shadow-md",style:{backgroundColor:o}}),(0,c.jsx)("p",{className:"font-medium text-tremor-content dark:text-dark-tremor-content",children:e(a)})]}),(0,c.jsx)("p",{className:"font-medium text-tremor-content-emphasis dark:text-dark-tremor-content-emphasis",children:n})]},a)})]})}return null},a8=e=>{let{categories:s,colors:t}=e,l=e=>e.replace("metrics.","").replace(/_/g," ").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ");return(0,c.jsx)("div",{className:"flex items-center justify-end space-x-4",children:s.map((e,s)=>{let a=a3[t[s]]||t[s];return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full ring-4 ring-white",style:{backgroundColor:a}}),(0,c.jsx)("p",{className:"text-sm text-tremor-content dark:text-dark-tremor-content",children:l(e)})]},e)})})},a7=e=>{var s,t;let{modelName:l,metrics:a}=e;return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)(y.Z,{numItems:4,className:"gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Requests"}),(0,c.jsx)(S.Z,{children:a.total_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Successful Requests"}),(0,c.jsx)(S.Z,{children:a.total_successful_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Tokens"}),(0,c.jsx)(S.Z,{children:a.total_tokens.toLocaleString()}),(0,c.jsxs)(k.Z,{children:[Math.round(a.total_tokens/a.total_successful_requests)," avg per successful request"]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Spend"}),(0,c.jsxs)(S.Z,{children:["$",eP(a.total_spend,2)]}),(0,c.jsxs)(k.Z,{children:["$",eP(a.total_spend/a.total_successful_requests,3)," per successful request"]})]})]}),a.top_api_keys&&a.top_api_keys.length>0&&(0,c.jsxs)(G.Z,{className:"mt-4",children:[(0,c.jsx)(S.Z,{children:"Top API Keys by Spend"}),(0,c.jsx)("div",{className:"mt-3",children:(0,c.jsx)("div",{className:"grid grid-cols-1 gap-2",children:a.top_api_keys.map((e,s)=>(0,c.jsxs)("div",{className:"flex justify-between items-center p-3 bg-gray-50 rounded-lg",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:e.key_alias||"".concat(e.api_key.substring(0,10),"...")}),e.team_id&&(0,c.jsxs)(k.Z,{className:"text-xs text-gray-500",children:["Team: ",e.team_id]})]}),(0,c.jsxs)("div",{className:"text-right",children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["$",eP(e.spend,2)]}),(0,c.jsxs)(k.Z,{className:"text-xs text-gray-500",children:[e.requests.toLocaleString()," requests | ",e.tokens.toLocaleString()," tokens"]})]})]},e.api_key))})})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Total Tokens"}),(0,c.jsx)(a8,{categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"]})]}),(0,c.jsx)(tl.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"],valueFormatter:a4,customTooltip:a6,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Requests per day"}),(0,c.jsx)(a8,{categories:["metrics.api_requests"],colors:["blue"]})]}),(0,c.jsx)(ta.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.api_requests"],colors:["blue"],valueFormatter:a4,customTooltip:a6,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Spend per day"}),(0,c.jsx)(a8,{categories:["metrics.spend"],colors:["green"]})]}),(0,c.jsx)(ta.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.spend"],colors:["green"],valueFormatter:e=>"$".concat(eP(e,2))})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Success vs Failed Requests"}),(0,c.jsx)(a8,{categories:["metrics.successful_requests","metrics.failed_requests"],colors:["green","red"]})]}),(0,c.jsx)(tl.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.successful_requests","metrics.failed_requests"],colors:["green","red"],valueFormatter:a4,stack:!0,customTooltip:a6,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Prompt Caching Metrics"}),(0,c.jsx)(a8,{categories:["metrics.cache_read_input_tokens","metrics.cache_creation_input_tokens"],colors:["cyan","purple"]})]}),(0,c.jsxs)("div",{className:"mb-2",children:[(0,c.jsxs)(k.Z,{children:["Cache Read: ",(null===(s=a.total_cache_read_input_tokens)||void 0===s?void 0:s.toLocaleString())||0," tokens"]}),(0,c.jsxs)(k.Z,{children:["Cache Creation: ",(null===(t=a.total_cache_creation_input_tokens)||void 0===t?void 0:t.toLocaleString())||0," tokens"]})]}),(0,c.jsx)(tl.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.cache_read_input_tokens","metrics.cache_creation_input_tokens"],colors:["cyan","purple"],valueFormatter:a4,customTooltip:a6,showLegend:!1})]})]})]})},a9=e=>{let{modelMetrics:s}=e,t=Object.keys(s).sort((e,t)=>""===e?1:""===t?-1:s[t].total_spend-s[e].total_spend),l={total_requests:0,total_successful_requests:0,total_tokens:0,total_spend:0,total_cache_read_input_tokens:0,total_cache_creation_input_tokens:0,daily_data:{}};Object.values(s).forEach(e=>{l.total_requests+=e.total_requests,l.total_successful_requests+=e.total_successful_requests,l.total_tokens+=e.total_tokens,l.total_spend+=e.total_spend,l.total_cache_read_input_tokens+=e.total_cache_read_input_tokens||0,l.total_cache_creation_input_tokens+=e.total_cache_creation_input_tokens||0,e.daily_data.forEach(e=>{l.daily_data[e.date]||(l.daily_data[e.date]={prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,spend:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0}),l.daily_data[e.date].prompt_tokens+=e.metrics.prompt_tokens,l.daily_data[e.date].completion_tokens+=e.metrics.completion_tokens,l.daily_data[e.date].total_tokens+=e.metrics.total_tokens,l.daily_data[e.date].api_requests+=e.metrics.api_requests,l.daily_data[e.date].spend+=e.metrics.spend,l.daily_data[e.date].successful_requests+=e.metrics.successful_requests,l.daily_data[e.date].failed_requests+=e.metrics.failed_requests,l.daily_data[e.date].cache_read_input_tokens+=e.metrics.cache_read_input_tokens||0,l.daily_data[e.date].cache_creation_input_tokens+=e.metrics.cache_creation_input_tokens||0})});let a=Object.entries(l.daily_data).map(e=>{let[s,t]=e;return{date:s,metrics:t}}).sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime());return(0,c.jsxs)("div",{className:"space-y-8",children:[(0,c.jsxs)("div",{className:"border rounded-lg p-4",children:[(0,c.jsx)(S.Z,{children:"Overall Usage"}),(0,c.jsxs)(y.Z,{numItems:4,className:"gap-4 mb-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Requests"}),(0,c.jsx)(S.Z,{children:l.total_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Successful Requests"}),(0,c.jsx)(S.Z,{children:l.total_successful_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Tokens"}),(0,c.jsx)(S.Z,{children:l.total_tokens.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Spend"}),(0,c.jsxs)(S.Z,{children:["$",eP(l.total_spend,2)]})]})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Total Tokens Over Time"}),(0,c.jsx)(a8,{categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"]})]}),(0,c.jsx)(tl.Z,{className:"mt-4",data:a,index:"date",categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"],valueFormatter:a4,customTooltip:a6,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Requests Over Time"}),(0,c.jsx)(tl.Z,{className:"mt-4",data:a,index:"date",categories:["metrics.successful_requests","metrics.failed_requests"],colors:["emerald","red"],valueFormatter:e=>e.toLocaleString(),stack:!0,customTooltip:a6,showLegend:!1})]})]})]}),(0,c.jsx)(tI.default,{defaultActiveKey:t[0],children:t.map(e=>(0,c.jsx)(tI.default.Panel,{header:(0,c.jsxs)("div",{className:"flex justify-between items-center w-full",children:[(0,c.jsx)(S.Z,{children:s[e].label||"Unknown Item"}),(0,c.jsxs)("div",{className:"flex space-x-4 text-sm text-gray-500",children:[(0,c.jsxs)("span",{children:["$",eP(s[e].total_spend,2)]}),(0,c.jsxs)("span",{children:[s[e].total_requests.toLocaleString()," requests"]})]})]}),children:(0,c.jsx)(a7,{modelName:e||"Unknown Model",metrics:s[e]})},e))})]})},re=(e,s)=>{let t=e.metadata.key_alias||"key-hash-".concat(s),l=e.metadata.team_id;return l?"".concat(t," (team_id: ").concat(l,")"):t},rs=(e,s)=>{let t={};return e.results.forEach(e=>{Object.entries(e.breakdown[s]||{}).forEach(l=>{let[a,r]=l;t[a]||(t[a]={label:"api_keys"===s?re(r,a):a,total_requests:0,total_successful_requests:0,total_failed_requests:0,total_tokens:0,prompt_tokens:0,completion_tokens:0,total_spend:0,total_cache_read_input_tokens:0,total_cache_creation_input_tokens:0,top_api_keys:[],daily_data:[]}),t[a].total_requests+=r.metrics.api_requests,t[a].prompt_tokens+=r.metrics.prompt_tokens,t[a].completion_tokens+=r.metrics.completion_tokens,t[a].total_tokens+=r.metrics.total_tokens,t[a].total_spend+=r.metrics.spend,t[a].total_successful_requests+=r.metrics.successful_requests,t[a].total_failed_requests+=r.metrics.failed_requests,t[a].total_cache_read_input_tokens+=r.metrics.cache_read_input_tokens||0,t[a].total_cache_creation_input_tokens+=r.metrics.cache_creation_input_tokens||0,t[a].daily_data.push({date:e.date,metrics:{prompt_tokens:r.metrics.prompt_tokens,completion_tokens:r.metrics.completion_tokens,total_tokens:r.metrics.total_tokens,api_requests:r.metrics.api_requests,spend:r.metrics.spend,successful_requests:r.metrics.successful_requests,failed_requests:r.metrics.failed_requests,cache_read_input_tokens:r.metrics.cache_read_input_tokens||0,cache_creation_input_tokens:r.metrics.cache_creation_input_tokens||0}})})}),"api_keys"!==s&&Object.entries(t).forEach(l=>{let[a,r]=l,i={};e.results.forEach(e=>{var t;let l=null===(t=e.breakdown[s])||void 0===t?void 0:t[a];l&&"api_key_breakdown"in l&&Object.entries(l.api_key_breakdown||{}).forEach(e=>{let[s,t]=e;i[s]||(i[s]={api_key:s,key_alias:t.metadata.key_alias,team_id:t.metadata.team_id,spend:0,requests:0,tokens:0}),i[s].spend+=t.metrics.spend,i[s].requests+=t.metrics.api_requests,i[s].tokens+=t.metrics.total_tokens})}),t[a].top_api_keys=Object.values(i).sort((e,s)=>s.spend-e.spend).slice(0,5)}),Object.values(t).forEach(e=>{e.daily_data.sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime())}),t};var rt=e=>{let{accessToken:s,selectedTags:t,formatAbbreviatedNumber:l}=e,[a,r]=(0,d.useState)({results:[],total_count:0,page:1,page_size:50,total_pages:0}),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(1),u=async()=>{if(s){n(!0);try{let e=await (0,j.perUserAnalyticsCall)(s,o,50,t.length>0?t:void 0);r(e)}catch(e){console.error("Failed to fetch per-user data:",e)}finally{n(!1)}}};return(0,d.useEffect)(()=>{u()},[s,t,o]),(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(S.Z,{children:"Per User Usage"}),(0,c.jsx)(sJ.Z,{children:"Individual developer usage metrics"}),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{className:"mb-6",children:[(0,c.jsx)(e8.Z,{children:"User Details"}),(0,c.jsx)(e8.Z,{children:"Usage Distribution"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"User ID"}),(0,c.jsx)(sF.Z,{children:"User Email"}),(0,c.jsx)(sF.Z,{children:"User Agent"}),(0,c.jsx)(sF.Z,{className:"text-right",children:"Success Generations"}),(0,c.jsx)(sF.Z,{className:"text-right",children:"Total Tokens"}),(0,c.jsx)(sF.Z,{className:"text-right",children:"Failed Requests"}),(0,c.jsx)(sF.Z,{className:"text-right",children:"Total Cost"})]})}),(0,c.jsx)(sM.Z,{children:a.results.slice(0,10).map((e,s)=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{className:"font-medium",children:e.user_id})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{children:e.user_email||"N/A"})}),(0,c.jsx)(sO.Z,{children:(0,c.jsx)(k.Z,{children:e.user_agent||"Unknown"})}),(0,c.jsx)(sO.Z,{className:"text-right",children:(0,c.jsx)(k.Z,{children:l(e.successful_requests)})}),(0,c.jsx)(sO.Z,{className:"text-right",children:(0,c.jsx)(k.Z,{children:l(e.total_tokens)})}),(0,c.jsx)(sO.Z,{className:"text-right",children:(0,c.jsx)(k.Z,{children:l(e.failed_requests)})}),(0,c.jsx)(sO.Z,{className:"text-right",children:(0,c.jsxs)(k.Z,{children:["$",l(e.spend,4)]})})]},s))})]}),a.results.length>10&&(0,c.jsxs)("div",{className:"mt-4 flex justify-between items-center",children:[(0,c.jsxs)(k.Z,{className:"text-sm text-gray-500",children:["Showing 10 of ",a.total_count," results"]}),(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",onClick:()=>{o>1&&m(o-1)},disabled:1===o,children:"Previous"}),(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",onClick:()=>{o=a.total_pages,children:"Next"})]})]})]}),(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsx)(S.Z,{className:"text-lg",children:"User Usage Distribution"}),(0,c.jsx)(sJ.Z,{children:"Number of users by successful request frequency"})]}),(0,c.jsx)(ta.Z,{data:(()=>{let e=new Map;a.results.forEach(s=>{let t=s.user_agent||"Unknown";e.set(t,(e.get(t)||0)+1)});let s=Array.from(e.entries()).sort((e,s)=>{let[,t]=e,[,l]=s;return l-t}).slice(0,8).map(e=>{let[s]=e;return s}),t={"1-9 requests":{range:[1,9],agents:{}},"10-99 requests":{range:[10,99],agents:{}},"100-999 requests":{range:[100,999],agents:{}},"1K-9.9K requests":{range:[1e3,9999],agents:{}},"10K-99.9K requests":{range:[1e4,99999],agents:{}},"100K+ requests":{range:[1e5,1/0],agents:{}}};return a.results.forEach(e=>{let l=e.successful_requests,a=e.user_agent||"Unknown";s.includes(a)&&Object.entries(t).forEach(e=>{let[s,t]=e;l>=t.range[0]&&l<=t.range[1]&&(t.agents[a]||(t.agents[a]=0),t.agents[a]++)})}),Object.entries(t).map(e=>{let[t,l]=e,a={category:t};return s.forEach(e=>{a[e]=l.agents[e]||0}),a})})(),index:"category",categories:(()=>{let e=new Map;return a.results.forEach(s=>{let t=s.user_agent||"Unknown";e.set(t,(e.get(t)||0)+1)}),Array.from(e.entries()).sort((e,s)=>{let[,t]=e,[,l]=s;return l-t}).slice(0,8).map(e=>{let[s]=e;return s})})(),colors:["blue","green","orange","red","purple","yellow","pink","indigo"],valueFormatter:e=>"".concat(e," users"),yAxisWidth:80,showLegend:!0,stack:!0})]})]})]})]})},rl=t(49096),ra=t(53335);let{cva:rr,cx:ri,compose:rn}=(0,rl.ZD)({hooks:{onComplete:e=>(0,ra.m6)(e)}});function ro(e){var s,t;let{className:l="",...a}=e,r=(0,d.useId)();return s=()=>{let e=document.getAnimations().filter(e=>e instanceof CSSAnimation&&"spin"===e.animationName),s=e.find(e=>{var s;return(null===(s=e.effect.target)||void 0===s?void 0:s.getAttribute("data-spinner-id"))===r}),t=e.find(e=>{var s;return e.effect instanceof KeyframeEffect&&(null===(s=e.effect.target)||void 0===s?void 0:s.getAttribute("data-spinner-id"))!==r});s&&t&&(s.currentTime=t.currentTime)},t=[r],(0,d.useLayoutEffect)(s,t),(0,c.jsxs)("svg",{"data-spinner-id":r,className:ri("pointer-events-none size-12 animate-spin text-current",l),fill:"none",viewBox:"0 0 24 24",...a,children:[(0,c.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,c.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}let rc=e=>{let{isDateChanging:s=!1}=e;return(0,c.jsx)("div",{className:"flex items-center justify-center h-40",children:(0,c.jsxs)("div",{className:"flex items-center justify-center gap-3",children:[(0,c.jsx)(ro,{className:"size-5"}),(0,c.jsxs)("div",{className:"flex flex-col",children:[(0,c.jsx)("span",{className:"text-gray-600 text-sm font-medium",children:s?"Processing date selection...":"Loading chart data..."}),(0,c.jsx)("span",{className:"text-gray-400 text-xs mt-1",children:s?"This will only take a moment":"Fetching your data"})]})]})})};var rd=e=>{let{accessToken:s,userRole:t}=e,[l,a]=(0,d.useState)({results:[]}),[r,i]=(0,d.useState)({results:[]}),[n,o]=(0,d.useState)({results:[]}),[m,u]=(0,d.useState)({results:[]}),[x,h]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)([]),[b,_]=(0,d.useState)([]),[N,Z]=(0,d.useState)(!1),[w,C]=(0,d.useState)(!1),[A,T]=(0,d.useState)(!1),[E,L]=(0,d.useState)(!1),[P,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)(!1),F=new Date,R=async()=>{if(s){Z(!0);try{let e=await (0,j.tagDistinctCall)(s);v(e.results.map(e=>e.tag))}catch(e){console.error("Failed to fetch available tags:",e)}finally{Z(!1)}}},z=async()=>{if(s){C(!0);try{let e=await (0,j.tagDauCall)(s,F,p||void 0,b.length>0?b:void 0);a(e)}catch(e){console.error("Failed to fetch DAU data:",e)}finally{C(!1)}}},U=async()=>{if(s){T(!0);try{let e=await (0,j.tagWauCall)(s,F,p||void 0,b.length>0?b:void 0);i(e)}catch(e){console.error("Failed to fetch WAU data:",e)}finally{T(!1)}}},q=async()=>{if(s){L(!0);try{let e=await (0,j.tagMauCall)(s,F,p||void 0,b.length>0?b:void 0);o(e)}catch(e){console.error("Failed to fetch MAU data:",e)}finally{L(!1)}}},V=async()=>{if(s&&x.from&&x.to){M(!0);try{let e=await (0,j.userAgentSummaryCall)(s,x.from,x.to,b.length>0?b:void 0);u(e)}catch(e){console.error("Failed to fetch user agent summary data:",e)}finally{M(!1),D(!1)}}};(0,d.useEffect)(()=>{R()},[s]),(0,d.useEffect)(()=>{if(!s)return;let e=setTimeout(()=>{z(),U(),q()},50);return()=>clearTimeout(e)},[s,p,b]),(0,d.useEffect)(()=>{if(!x.from||!x.to)return;let e=setTimeout(()=>{V()},50);return()=>clearTimeout(e)},[s,x,b]);let K=e=>e.startsWith("User-Agent: ")?e.replace("User-Agent: ",""):e,H=e=>e.length>15?e.substring(0,15)+"...":e,Y=e=>Object.entries(e.reduce((e,s)=>(e[s.tag]=(e[s.tag]||0)+s.active_users,e),{})).sort((e,s)=>{let[,t]=e,[,l]=s;return l-t}).map(e=>{let[s]=e;return s}),J=Y(l.results).slice(0,10),W=Y(r.results).slice(0,10),$=Y(n.results).slice(0,10),Q=(()=>{let e=[],s=new Date;for(let t=6;t>=0;t--){let l=new Date(s);l.setDate(l.getDate()-t);let a={date:l.toISOString().split("T")[0]};J.forEach(e=>{a[K(e)]=0}),e.push(a)}return l.results.forEach(s=>{let t=K(s.tag),l=e.find(e=>e.date===s.date);l&&(l[t]=s.active_users)}),e})(),X=(()=>{let e=[];for(let s=1;s<=7;s++){let t={week:"Week ".concat(s)};W.forEach(e=>{t[K(e)]=0}),e.push(t)}return r.results.forEach(s=>{let t=K(s.tag),l=s.date.match(/Week (\d+)/);if(l){let a="Week ".concat(l[1]),r=e.find(e=>e.week===a);r&&(r[t]=s.active_users)}}),e})(),ee=(()=>{let e=[];for(let s=1;s<=7;s++){let t={month:"Month ".concat(s)};$.forEach(e=>{t[K(e)]=0}),e.push(t)}return n.results.forEach(s=>{let t=K(s.tag),l=s.date.match(/Month (\d+)/);if(l){let a="Month ".concat(l[1]),r=e.find(e=>e.month===a);r&&(r[t]=s.active_users)}}),e})(),es=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e>=1e8||e>=1e7||e>=1e6?(e/1e6).toFixed(s)+"M":e>=1e4?(e/1e3).toFixed(s)+"K":e>=1e3?(e/1e3).toFixed(s)+"K":e.toFixed(s)};return(0,c.jsxs)("div",{className:"space-y-6 mt-6",children:[(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-start",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Summary by User Agent"}),(0,c.jsx)(sJ.Z,{children:"Performance metrics for different user agents"})]}),(0,c.jsxs)("div",{className:"w-96",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium block mb-2",children:"Filter by User Agents"}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"All User Agents",value:b,onChange:_,style:{width:"100%"},showSearch:!0,allowClear:!0,loading:N,optionFilterProp:"label",className:"rounded-md",maxTagCount:"responsive",children:f.map(e=>{let s=K(e),t=s.length>50?"".concat(s.substring(0,50),"..."):s;return(0,c.jsx)(I.default.Option,{value:e,label:t,title:s,children:t},e)})})]})]}),(0,c.jsx)(aX,{value:x,onValueChange:e=>{D(!0),M(!0),h(e)}}),P?(0,c.jsx)(rc,{isDateChanging:O}):(0,c.jsxs)(y.Z,{numItems:4,className:"gap-4",children:[(m.results||[]).slice(0,4).map((e,s)=>{let t=K(e.tag),l=H(t);return(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(B.Z,{title:t,placement:"top",children:(0,c.jsx)(S.Z,{className:"truncate",children:l})}),(0,c.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Success Requests"}),(0,c.jsx)(aT.Z,{className:"text-lg",children:es(e.successful_requests)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Tokens"}),(0,c.jsx)(aT.Z,{className:"text-lg",children:es(e.total_tokens)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Cost"}),(0,c.jsxs)(aT.Z,{className:"text-lg",children:["$",es(e.total_spend,4)]})]})]})]},s)}),Array.from({length:Math.max(0,4-(m.results||[]).length)}).map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"No Data"}),(0,c.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Success Requests"}),(0,c.jsx)(aT.Z,{className:"text-lg",children:"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Tokens"}),(0,c.jsx)(aT.Z,{className:"text-lg",children:"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Cost"}),(0,c.jsx)(aT.Z,{className:"text-lg",children:"-"})]})]})]},"empty-".concat(s)))]})]})}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{className:"mb-6",children:[(0,c.jsx)(e8.Z,{children:"DAU/WAU/MAU"}),(0,c.jsx)(e8.Z,{children:"Per User Usage (Last 30 Days)"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(S.Z,{children:"DAU, WAU & MAU per Agent"}),(0,c.jsx)(sJ.Z,{children:"Active users across different time periods"})]}),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{className:"mb-6",children:[(0,c.jsx)(e8.Z,{children:"DAU"}),(0,c.jsx)(e8.Z,{children:"WAU"}),(0,c.jsx)(e8.Z,{children:"MAU"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(S.Z,{className:"text-lg",children:"Daily Active Users - Last 7 Days"})}),w?(0,c.jsx)(rc,{isDateChanging:!1}):(0,c.jsx)(ta.Z,{data:Q,index:"date",categories:J.map(K),valueFormatter:e=>es(e),yAxisWidth:60,showLegend:!0,stack:!0})]}),(0,c.jsxs)(se.Z,{children:[(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(S.Z,{className:"text-lg",children:"Weekly Active Users - Last 7 Weeks"})}),A?(0,c.jsx)(rc,{isDateChanging:!1}):(0,c.jsx)(ta.Z,{data:X,index:"week",categories:W.map(K),valueFormatter:e=>es(e),yAxisWidth:60,showLegend:!0,stack:!0})]}),(0,c.jsxs)(se.Z,{children:[(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(S.Z,{className:"text-lg",children:"Monthly Active Users - Last 7 Months"})}),E?(0,c.jsx)(rc,{isDateChanging:!1}):(0,c.jsx)(ta.Z,{data:ee,index:"month",categories:$.map(K),valueFormatter:e=>es(e),yAxisWidth:60,showLegend:!0,stack:!0})]})]})]})]}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(rt,{accessToken:s,selectedTags:b,formatAbbreviatedNumber:es})})]})]})})]})},rm=e=>{let{accessToken:s,entityType:t,entityId:l,userID:a,userRole:r,entityList:i,premiumUser:n}=e,[o,m]=(0,d.useState)({results:[],metadata:{total_spend:0,total_api_requests:0,total_successful_requests:0,total_failed_requests:0,total_tokens:0}}),u=rs(o,"models"),x=rs(o,"api_keys"),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)({from:new Date(Date.now()-24192e5),to:new Date}),b=async()=>{if(!s||!g.from||!g.to)return;let e=new Date(g.from),l=new Date(g.to);if("tag"===t)m(await (0,j.tagDailyActivityCall)(s,e,l,1,h.length>0?h:null));else if("team"===t)m(await (0,j.teamDailyActivityCall)(s,e,l,1,h.length>0?h:null));else throw Error("Invalid entity type")};(0,d.useEffect)(()=>{b()},[s,g,l,h]);let _=()=>{let e={};return o.results.forEach(s=>{Object.entries(s.breakdown.providers||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={provider:t,spend:0,requests:0,successful_requests:0,failed_requests:0,tokens:0});try{e[t].spend+=l.metrics.spend,e[t].requests+=l.metrics.api_requests,e[t].successful_requests+=l.metrics.successful_requests,e[t].failed_requests+=l.metrics.failed_requests,e[t].tokens+=l.metrics.total_tokens}catch(e){console.error("Error processing provider ".concat(t,": ").concat(e))}})}),Object.values(e).filter(e=>e.spend>0).sort((e,s)=>s.spend-e.spend)},N=e=>0===h.length?e:e.filter(e=>h.includes(e.metadata.id)),Z=()=>{let e={};return o.results.forEach(s=>{Object.entries(s.breakdown.entities||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{alias:l.metadata.team_alias||t,id:t}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests,e[t].metrics.failed_requests+=l.metrics.failed_requests,e[t].metrics.total_tokens+=l.metrics.total_tokens})}),N(Object.values(e).sort((e,s)=>s.metrics.spend-e.metrics.spend))};return(0,c.jsxs)("div",{style:{width:"100%"},children:[(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 w-full mb-4",children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(aX,{value:g,onValueChange:f})}),i&&i.length>0&&(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(k.Z,{children:["Filter by ","tag"===t?"Tags":"Teams"]}),(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select ".concat("tag"===t?"tags":"teams"," to filter..."),value:h,onChange:p,options:(()=>{if(i)return i})(),className:"mt-2",allowClear:!0})]})]}),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{variant:"solid",className:"mt-1",children:[(0,c.jsx)(e8.Z,{children:"Cost"}),(0,c.jsx)(e8.Z,{children:"Model Activity"}),(0,c.jsx)(e8.Z,{children:"Key Activity"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 w-full",children:[(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(S.Z,{children:["tag"===t?"Tag":"Team"," Spend Overview"]}),(0,c.jsxs)(y.Z,{numItems:5,className:"gap-4 mt-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Spend"}),(0,c.jsxs)(k.Z,{className:"text-2xl font-bold mt-2",children:["$",eP(o.metadata.total_spend,2)]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:o.metadata.total_api_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Successful Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-green-600",children:o.metadata.total_successful_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Failed Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-red-600",children:o.metadata.total_failed_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Tokens"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:o.metadata.total_tokens.toLocaleString()})]})]})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Daily Spend"}),(0,c.jsx)(ta.Z,{data:[...o.results].sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime()),index:"date",categories:["metrics.spend"],colors:["cyan"],valueFormatter:a5,yAxisWidth:100,showLegend:!1,customTooltip:e=>{let{payload:s,active:l}=e;if(!l||!(null==s?void 0:s[0]))return null;let a=s[0].payload,r=Object.keys(a.breakdown.entities||{}).length;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:a.date}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Total Spend: $",eP(a.metrics.spend,2)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Total Requests: ",a.metrics.api_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Successful: ",a.metrics.successful_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Failed: ",a.metrics.failed_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Total Tokens: ",a.metrics.total_tokens]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["tag"===t?"Total Tags":"Total Teams",": ",r]}),(0,c.jsxs)("div",{className:"mt-2 border-t pt-2",children:[(0,c.jsxs)("p",{className:"font-semibold",children:["Spend by ","tag"===t?"Tag":"Team",":"]}),Object.entries(a.breakdown.entities||{}).sort((e,s)=>{let[,t]=e,[,l]=s,a=t.metrics.spend;return l.metrics.spend-a}).slice(0,5).map(e=>{let[s,t]=e;return(0,c.jsxs)("p",{className:"text-sm text-gray-600",children:[t.metadata.team_alias||s,": $",eP(t.metrics.spend,2)]},s)}),r>5&&(0,c.jsxs)("p",{className:"text-sm text-gray-500 italic",children:["...and ",r-5," more"]})]})]})}})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-col space-y-2",children:[(0,c.jsxs)(S.Z,{children:["Spend Per ","tag"===t?"Tag":"Team"]}),(0,c.jsx)(sJ.Z,{className:"text-xs",children:"Showing Top 5 by Spend"}),(0,c.jsxs)("div",{className:"flex items-center text-sm text-gray-500",children:[(0,c.jsxs)("span",{children:["Get Started by Tracking cost per ",t," "]}),(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/enterprise#spend-tracking",className:"text-blue-500 hover:text-blue-700 ml-1",children:"here"})]})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-6",children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(ta.Z,{className:"mt-4 h-52",data:Z().slice(0,5).map(e=>({...e,metadata:{...e.metadata,alias_display:e.metadata.alias&&e.metadata.alias.length>15?"".concat(e.metadata.alias.slice(0,15),"..."):e.metadata.alias}})),index:"metadata.alias_display",categories:["metrics.spend"],colors:["cyan"],valueFormatter:a5,layout:"vertical",showLegend:!1,yAxisWidth:150,customTooltip:e=>{let{payload:s,active:t}=e;if(!t||!(null==s?void 0:s[0]))return null;let l=s[0].payload;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:l.metadata.alias}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Spend: $",eP(l.metrics.spend,4)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Requests: ",l.metrics.api_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-green-600",children:["Successful: ",l.metrics.successful_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-red-600",children:["Failed: ",l.metrics.failed_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Tokens: ",l.metrics.total_tokens.toLocaleString()]})]})}})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)("div",{className:"h-52 overflow-y-auto",children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"tag"===t?"Tag":"Team"}),(0,c.jsx)(sF.Z,{children:"Spend"}),(0,c.jsx)(sF.Z,{className:"text-green-600",children:"Successful"}),(0,c.jsx)(sF.Z,{className:"text-red-600",children:"Failed"}),(0,c.jsx)(sF.Z,{children:"Tokens"})]})}),(0,c.jsx)(sM.Z,{children:Z().filter(e=>e.metrics.spend>0).map(e=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:e.metadata.alias}),(0,c.jsxs)(sO.Z,{children:["$",eP(e.metrics.spend,4)]}),(0,c.jsx)(sO.Z,{className:"text-green-600",children:e.metrics.successful_requests.toLocaleString()}),(0,c.jsx)(sO.Z,{className:"text-red-600",children:e.metrics.failed_requests.toLocaleString()}),(0,c.jsx)(sO.Z,{children:e.metrics.total_tokens.toLocaleString()})]},e.metadata.id))})]})})})]})]})})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Top API Keys"}),(0,c.jsx)(a2,{topKeys:(()=>{console.log("debugTags",{spendData:o});let e={};return o.results.forEach(s=>{let{breakdown:t}=s,{entities:l}=t;console.log("debugTags",{entities:l});let a=Object.keys(l).reduce((e,s)=>{let{api_key_breakdown:t}=l[s];return Object.keys(t).forEach(l=>{let a={tag:s,usage:t[l].metrics.spend};e[l]?e[l].push(a):e[l]=[a]}),e},{});console.log("debugTags",{tagDictionary:a}),Object.entries(s.breakdown.api_keys||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{key_alias:l.metadata.key_alias,team_id:l.metadata.team_id||null,tags:a[t]||[]}},console.log("debugTags",{keySpend:e})),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests,e[t].metrics.failed_requests+=l.metrics.failed_requests,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{api_key:s,key_alias:t.metadata.key_alias||"-",tags:t.metadata.tags||"-",spend:t.metrics.spend}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),accessToken:s,userID:a,userRole:r,teams:null,premiumUser:n,showTags:"tag"===t})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Top Models"}),(0,c.jsx)(ta.Z,{className:"mt-4 h-40",data:(()=>{let e={};return o.results.forEach(s=>{Object.entries(s.breakdown.models||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={spend:0,requests:0,successful_requests:0,failed_requests:0,tokens:0});try{e[t].spend+=l.metrics.spend}catch(e){console.error("Error adding spend for ".concat(t,": ").concat(e,", got metrics: ").concat(JSON.stringify(l)))}e[t].requests+=l.metrics.api_requests,e[t].successful_requests+=l.metrics.successful_requests,e[t].failed_requests+=l.metrics.failed_requests,e[t].tokens+=l.metrics.total_tokens})}),Object.entries(e).map(e=>{let[s,t]=e;return{key:s,...t}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),index:"display_key",categories:["spend"],colors:["cyan"],valueFormatter:e=>"$".concat(eP(e,2)),layout:"vertical",yAxisWidth:200,showLegend:!1})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsx)(S.Z,{children:"Provider Usage"}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(aW.Z,{className:"mt-4 h-40",data:_(),index:"provider",category:"spend",valueFormatter:e=>"$".concat(eP(e,2)),colors:["cyan","blue","indigo","violet","purple"]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Provider"}),(0,c.jsx)(sF.Z,{children:"Spend"}),(0,c.jsx)(sF.Z,{className:"text-green-600",children:"Successful"}),(0,c.jsx)(sF.Z,{className:"text-red-600",children:"Failed"}),(0,c.jsx)(sF.Z,{children:"Tokens"})]})}),(0,c.jsx)(sM.Z,{children:_().map(e=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[e.provider&&(0,c.jsx)("img",{src:(0,sW.dr)(e.provider).logo,alt:"".concat(e.provider," logo"),className:"w-4 h-4",onError:s=>{let t=s.target,l=t.parentElement;if(l){var a;let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=(null===(a=e.provider)||void 0===a?void 0:a.charAt(0))||"-",l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e.provider})]})}),(0,c.jsxs)(sO.Z,{children:["$",eP(e.spend,2)]}),(0,c.jsx)(sO.Z,{className:"text-green-600",children:e.successful_requests.toLocaleString()}),(0,c.jsx)(sO.Z,{className:"text-red-600",children:e.failed_requests.toLocaleString()}),(0,c.jsx)(sO.Z,{children:e.tokens.toLocaleString()})]},e.provider))})]})})]})]})})})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(a9,{modelMetrics:u})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(a9,{modelMetrics:x})})]})]})]})},ru=e=>{let{isOpen:s,onClose:t,accessToken:l}=e,[a]=A.Z.useForm(),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)("cloudzero"),[p,g]=(0,d.useState)(!1);(0,d.useEffect)(()=>{s&&l&&j()},[s,l]);let j=async()=>{u(!0);try{let e=await fetch("/cloudzero/settings",{method:"GET",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"}});if(e.ok){let s=await e.json();o(s),a.setFieldsValue({connection_id:s.connection_id})}else if(404!==e.status){let s=await e.json();eo.Z.fromBackend("Failed to load existing settings: ".concat(s.error||"Unknown error"))}}catch(e){console.error("Error loading CloudZero settings:",e),eo.Z.fromBackend("Failed to load existing settings")}finally{u(!1)}},f=async e=>{if(!l){eo.Z.fromBackend("No access token available");return}i(!0);try{let s={...e,timezone:"UTC"},t=await fetch(n?"/cloudzero/settings":"/cloudzero/init",{method:n?"PUT":"POST",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify(s)}),a=await t.json();if(t.ok)return eo.Z.success(a.message||"CloudZero settings saved successfully"),o({api_key_masked:e.api_key.substring(0,4)+"****"+e.api_key.slice(-4),connection_id:e.connection_id,status:"configured"}),!0;return eo.Z.fromBackend(a.error||"Failed to save CloudZero settings"),!1}catch(e){return console.error("Error saving CloudZero settings:",e),eo.Z.fromBackend("Failed to save CloudZero settings"),!1}finally{i(!1)}},v=async()=>{if(!l){eo.Z.fromBackend("No access token available");return}g(!0);try{let e=await fetch("/cloudzero/export",{method:"POST",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify({limit:1e5,operation:"replace_hourly"})}),s=await e.json();e.ok?(eo.Z.success(s.message||"Export to CloudZero completed successfully"),t()):eo.Z.fromBackend(s.error||"Failed to export to CloudZero")}catch(e){console.error("Error exporting to CloudZero:",e),eo.Z.fromBackend("Failed to export to CloudZero")}finally{g(!1)}},y=async()=>{g(!0);try{eo.Z.info("CSV export functionality coming soon!"),t()}catch(e){console.error("Error exporting CSV:",e),eo.Z.fromBackend("Failed to export CSV")}finally{g(!1)}},N=async()=>{if("cloudzero"===x){if(!n){let e=await a.validateFields();if(!await f(e))return}await v()}else await y()},Z=()=>{a.resetFields(),h("cloudzero"),o(null),t()},w=[{value:"cloudzero",label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("img",{src:"/cloudzero.png",alt:"CloudZero",className:"w-5 h-5",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)("span",{children:"Export to CloudZero"})]})},{value:"csv",label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})}),(0,c.jsx)("span",{children:"Export to CSV"})]})}];return(0,c.jsx)(T.Z,{title:"Export Data",open:s,onCancel:Z,footer:null,width:600,destroyOnClose:!0,children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium mb-2 block",children:"Export Destination"}),(0,c.jsx)(I.default,{value:x,onChange:h,options:w,className:"w-full",size:"large"})]}),"cloudzero"===x&&(0,c.jsx)("div",{children:m?(0,c.jsx)("div",{className:"flex justify-center py-8",children:(0,c.jsx)(lO.Z,{size:"large"})}):(0,c.jsxs)(c.Fragment,{children:[n&&(0,c.jsx)(lW.Z,{title:"Existing CloudZero Configuration",icon:()=>(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}),color:"green",className:"mb-4",children:(0,c.jsxs)(k.Z,{children:["API Key: ",n.api_key_masked,(0,c.jsx)("br",{}),"Connection ID: ",n.connection_id]})}),!n&&(0,c.jsxs)(A.Z,{form:a,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"CloudZero API Key",name:"api_key",rules:[{required:!0,message:"Please enter your CloudZero API key"}],children:(0,c.jsx)(_.Z,{type:"password",placeholder:"Enter your CloudZero API key"})}),(0,c.jsx)(A.Z.Item,{label:"Connection ID",name:"connection_id",rules:[{required:!0,message:"Please enter the CloudZero connection ID"}],children:(0,c.jsx)(_.Z,{placeholder:"Enter CloudZero connection ID"})})]})]})}),"csv"===x&&(0,c.jsx)(lW.Z,{title:"CSV Export",icon:()=>(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})}),color:"blue",children:(0,c.jsx)(k.Z,{children:"Export your usage data as a CSV file for analysis in spreadsheet applications."})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2 pt-4",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:Z,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:N,loading:r||p,disabled:r||p,children:"cloudzero"===x?"Export to CloudZero":"Export CSV"})]})]})})},rx=e=>{var s,t,l,a,r,i,n,o,m,u;let{accessToken:x,userRole:h,userID:p,teams:g,premiumUser:f}=e,[b,_]=(0,d.useState)({results:[],metadata:{}}),[N,Z]=(0,d.useState)(!1),[w,C]=(0,d.useState)(!1),I=(0,d.useMemo)(()=>new Date(Date.now()-6048e5),[]),A=(0,d.useMemo)(()=>new Date,[]),[T,E]=(0,d.useState)({from:I,to:A}),[L,P]=(0,d.useState)([]),[M,O]=(0,d.useState)("groups"),[D,F]=(0,d.useState)(!1),R=async()=>{x&&P(Object.values(await (0,j.tagListCall)(x)).map(e=>({label:e.name,value:e.name})))};(0,d.useEffect)(()=>{R()},[x]);let z=(null===(s=b.metadata)||void 0===s?void 0:s.total_spend)||0,U=()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.providers||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{},api_key_breakdown:{}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests||0,e[t].metrics.failed_requests+=l.metrics.failed_requests||0,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{provider:s,spend:t.metrics.spend,requests:t.metrics.api_requests,successful_requests:t.metrics.successful_requests,failed_requests:t.metrics.failed_requests,tokens:t.metrics.total_tokens}})},q=(0,d.useCallback)(async()=>{if(!x||!T.from||!T.to)return;Z(!0);let e=new Date(T.from),s=new Date(T.to);try{try{let t=await (0,j.userDailyActivityAggregatedCall)(x,e,s);_(t);return}catch(e){}let t=await (0,j.userDailyActivityCall)(x,e,s);if(t.metadata.total_pages<=1){_(t);return}let l=[...t.results],a={...t.metadata};for(let r=2;r<=t.metadata.total_pages;r++){let t=await (0,j.userDailyActivityCall)(x,e,s,r);l.push(...t.results),t.metadata&&(a.total_spend+=t.metadata.total_spend||0,a.total_api_requests+=t.metadata.total_api_requests||0,a.total_successful_requests+=t.metadata.total_successful_requests||0,a.total_failed_requests+=t.metadata.total_failed_requests||0,a.total_tokens+=t.metadata.total_tokens||0)}_({results:l,metadata:a})}catch(e){console.error("Error fetching user spend data:",e)}finally{Z(!1),C(!1)}},[x,T.from,T.to]),V=(0,d.useCallback)(e=>{C(!0),Z(!0),E(e)},[]);(0,d.useEffect)(()=>{if(!T.from||!T.to)return;let e=setTimeout(()=>{q()},50);return()=>clearTimeout(e)},[q]);let B=rs(b,"models"),K=rs(b,"api_keys"),H=rs(b,"mcp_servers");return(0,c.jsxs)("div",{style:{width:"100%"},className:"p-8 relative",children:[(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{variant:"solid",className:"mt-1",children:[eI.ZL.includes(h||"")?(0,c.jsx)(e8.Z,{children:"Global Usage"}):(0,c.jsx)(e8.Z,{children:"Your Usage"}),(0,c.jsx)(e8.Z,{children:"Team Usage"}),eI.ZL.includes(h||"")?(0,c.jsx)(e8.Z,{children:"Tag Usage"}):(0,c.jsx)(c.Fragment,{}),eI.ZL.includes(h||"")?(0,c.jsx)(e8.Z,{children:"User Agent Activity"}):(0,c.jsx)(c.Fragment,{})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsx)(y.Z,{numItems:2,className:"gap-10 w-1/2 mb-4",children:(0,c.jsx)(v.Z,{children:(0,c.jsx)(aX,{value:T,onValueChange:V})})}),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{variant:"solid",className:"mt-1",children:[(0,c.jsx)(e8.Z,{children:"Cost"}),(0,c.jsx)(e8.Z,{children:"Model Activity"}),(0,c.jsx)(e8.Z,{children:"Key Activity"}),(0,c.jsx)(e8.Z,{children:"MCP Server Activity"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 w-full",children:[(0,c.jsxs)(v.Z,{numColSpan:2,children:[(0,c.jsxs)(k.Z,{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content mb-2 mt-2 text-lg",children:["Project Spend"," ",new Date().toLocaleString("default",{month:"long"})," ","1 - ",new Date(new Date().getFullYear(),new Date().getMonth()+1,0).getDate()]}),(0,c.jsx)(a0,{userID:p,userRole:h,accessToken:x,userSpend:z,selectedTeam:null,userMaxBudget:null})]}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Usage Metrics"}),(0,c.jsxs)(y.Z,{numItems:5,className:"gap-4 mt-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:(null===(l=b.metadata)||void 0===l?void 0:null===(t=l.total_api_requests)||void 0===t?void 0:t.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Successful Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-green-600",children:(null===(r=b.metadata)||void 0===r?void 0:null===(a=r.total_successful_requests)||void 0===a?void 0:a.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Failed Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-red-600",children:(null===(n=b.metadata)||void 0===n?void 0:null===(i=n.total_failed_requests)||void 0===i?void 0:i.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Tokens"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:(null===(m=b.metadata)||void 0===m?void 0:null===(o=m.total_tokens)||void 0===o?void 0:o.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Average Cost per Request"}),(0,c.jsxs)(k.Z,{className:"text-2xl font-bold mt-2",children:["$",eP((z||0)/((null===(u=b.metadata)||void 0===u?void 0:u.total_api_requests)||1),4)]})]})]})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Daily Spend"}),N?(0,c.jsx)(rc,{isDateChanging:w}):(0,c.jsx)(ta.Z,{data:[...b.results].sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime()),index:"date",categories:["metrics.spend"],colors:["cyan"],valueFormatter:a5,yAxisWidth:100,showLegend:!1,customTooltip:e=>{let{payload:s,active:t}=e;if(!t||!(null==s?void 0:s[0]))return null;let l=s[0].payload;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:l.date}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Spend: $",eP(l.metrics.spend,2)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Requests: ",l.metrics.api_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Successful: ",l.metrics.successful_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Failed: ",l.metrics.failed_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Tokens: ",l.metrics.total_tokens]})]})}})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)(S.Z,{children:"Top API Keys"}),(0,c.jsx)(a2,{topKeys:(()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.api_keys||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{key_alias:l.metadata.key_alias,team_id:null,tags:l.metadata.tags||[]}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests,e[t].metrics.failed_requests+=l.metrics.failed_requests,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),console.log("debugTags",{keySpend:e,userSpendData:b}),Object.entries(e).map(e=>{let[s,t]=e;return{api_key:s,key_alias:t.metadata.key_alias||"-",tags:t.metadata.tags||[],spend:t.metrics.spend}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),accessToken:x,userID:p,userRole:h,teams:null,premiumUser:f})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"groups"===M?"Top Public Model Names":"Top Litellm Models"}),(0,c.jsxs)("div",{className:"flex bg-gray-100 rounded-lg p-1",children:[(0,c.jsx)("button",{className:"px-3 py-1 text-sm rounded-md transition-colors ".concat("groups"===M?"bg-white shadow-sm text-gray-900":"text-gray-600 hover:text-gray-900"),onClick:()=>O("groups"),children:"Public Model Name"}),(0,c.jsx)("button",{className:"px-3 py-1 text-sm rounded-md transition-colors ".concat("individual"===M?"bg-white shadow-sm text-gray-900":"text-gray-600 hover:text-gray-900"),onClick:()=>O("individual"),children:"Litellm Model Name"})]})]}),N?(0,c.jsx)(rc,{isDateChanging:w}):(0,c.jsx)(ta.Z,{className:"mt-4 h-40",data:"groups"===M?(()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.model_groups||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{},api_key_breakdown:{}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests||0,e[t].metrics.failed_requests+=l.metrics.failed_requests||0,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{key:s,spend:t.metrics.spend,requests:t.metrics.api_requests,successful_requests:t.metrics.successful_requests,failed_requests:t.metrics.failed_requests,tokens:t.metrics.total_tokens}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})():(()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.models||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{},api_key_breakdown:{}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests||0,e[t].metrics.failed_requests+=l.metrics.failed_requests||0,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{key:s,spend:t.metrics.spend,requests:t.metrics.api_requests,successful_requests:t.metrics.successful_requests,failed_requests:t.metrics.failed_requests,tokens:t.metrics.total_tokens}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),index:"key",categories:["spend"],colors:["cyan"],valueFormatter:a5,layout:"vertical",yAxisWidth:200,showLegend:!1,customTooltip:e=>{let{payload:s,active:t}=e;if(!t||!(null==s?void 0:s[0]))return null;let l=s[0].payload;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:l.key}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Spend: $",eP(l.spend,2)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Total Requests: ",l.requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-green-600",children:["Successful: ",l.successful_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-red-600",children:["Failed: ",l.failed_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Tokens: ",l.tokens.toLocaleString()]})]})}})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(S.Z,{children:"Spend by Provider"})}),N?(0,c.jsx)(rc,{isDateChanging:w}):(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(aW.Z,{className:"mt-4 h-40",data:U(),index:"provider",category:"spend",valueFormatter:e=>"$".concat(eP(e,2)),colors:["cyan"]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Provider"}),(0,c.jsx)(sF.Z,{children:"Spend"}),(0,c.jsx)(sF.Z,{className:"text-green-600",children:"Successful"}),(0,c.jsx)(sF.Z,{className:"text-red-600",children:"Failed"}),(0,c.jsx)(sF.Z,{children:"Tokens"})]})}),(0,c.jsx)(sM.Z,{children:U().filter(e=>e.spend>0).map(e=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[e.provider&&(0,c.jsx)("img",{src:(0,sW.dr)(e.provider).logo,alt:"".concat(e.provider," logo"),className:"w-4 h-4",onError:s=>{let t=s.target,l=t.parentElement;if(l){var a;let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=(null===(a=e.provider)||void 0===a?void 0:a.charAt(0))||"-",l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e.provider})]})}),(0,c.jsxs)(sO.Z,{children:["$",eP(e.spend,2)]}),(0,c.jsx)(sO.Z,{className:"text-green-600",children:e.successful_requests.toLocaleString()}),(0,c.jsx)(sO.Z,{className:"text-red-600",children:e.failed_requests.toLocaleString()}),(0,c.jsx)(sO.Z,{children:e.tokens.toLocaleString()})]},e.provider))})]})})]})]})})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(a9,{modelMetrics:B})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(a9,{modelMetrics:K})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(a9,{modelMetrics:H})})]})]})]}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(rm,{accessToken:x,entityType:"team",userID:p,userRole:h,entityList:(null==g?void 0:g.map(e=>({label:e.team_alias,value:e.team_id})))||null,premiumUser:f})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(rm,{accessToken:x,entityType:"tag",userID:p,userRole:h,entityList:L,premiumUser:f})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(rd,{accessToken:x,userRole:h})})]})]}),(0,c.jsx)(ru,{isOpen:D,onClose:()=>F(!1),accessToken:x})]})},rh=e=>{let{proxySettings:s}=e,t="";return s&&s.PROXY_BASE_URL&&void 0!==s.PROXY_BASE_URL&&(t=s.PROXY_BASE_URL),(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(y.Z,{className:"gap-2 p-8 h-[80vh] w-full mt-2",children:(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsx)("p",{className:"text-2xl text-tremor-content-strong dark:text-dark-tremor-content-strong font-semibold",children:"OpenAI Compatible Proxy: API Reference"}),(0,c.jsxs)(k.Z,{className:"mt-2 mb-2",children:["LiteLLM is OpenAI Compatible. This means your API Key works with the OpenAI SDK. Just replace the base_url to point to your litellm proxy. Example Below"," "]}),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{children:[(0,c.jsx)(e8.Z,{children:"OpenAI Python SDK"}),(0,c.jsx)(e8.Z,{children:"LlamaIndex"}),(0,c.jsx)(e8.Z,{children:"Langchain Py"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsx)(aj.Z,{language:"python",children:'\nimport openai\nclient = openai.OpenAI(\n api_key="your_api_key",\n base_url="'.concat(t,'" # LiteLLM Proxy is OpenAI compatible, Read More: https://docs.litellm.ai/docs/proxy/user_keys\n)\n\nresponse = client.chat.completions.create(\n model="gpt-3.5-turbo", # model to send to the proxy\n messages = [\n {\n "role": "user",\n "content": "this is a test request, write a short poem"\n }\n ]\n)\n\nprint(response)\n ')})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(aj.Z,{language:"python",children:'\nimport os, dotenv\n\nfrom llama_index.llms import AzureOpenAI\nfrom llama_index.embeddings import AzureOpenAIEmbedding\nfrom llama_index import VectorStoreIndex, SimpleDirectoryReader, ServiceContext\n\nllm = AzureOpenAI(\n engine="azure-gpt-3.5", # model_name on litellm proxy\n temperature=0.0,\n azure_endpoint="'.concat(t,'", # litellm proxy endpoint\n api_key="sk-1234", # litellm proxy API Key\n api_version="2023-07-01-preview",\n)\n\nembed_model = AzureOpenAIEmbedding(\n deployment_name="azure-embedding-model",\n azure_endpoint="').concat(t,'",\n api_key="sk-1234",\n api_version="2023-07-01-preview",\n)\n\n\ndocuments = SimpleDirectoryReader("llama_index_data").load_data()\nservice_context = ServiceContext.from_defaults(llm=llm, embed_model=embed_model)\nindex = VectorStoreIndex.from_documents(documents, service_context=service_context)\n\nquery_engine = index.as_query_engine()\nresponse = query_engine.query("What did the author do growing up?")\nprint(response)\n\n ')})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(aj.Z,{language:"python",children:'\nfrom langchain.chat_models import ChatOpenAI\nfrom langchain.prompts.chat import (\n ChatPromptTemplate,\n HumanMessagePromptTemplate,\n SystemMessagePromptTemplate,\n)\nfrom langchain.schema import HumanMessage, SystemMessage\n\nchat = ChatOpenAI(\n openai_api_base="'.concat(t,'",\n model = "gpt-3.5-turbo",\n temperature=0.1\n)\n\nmessages = [\n SystemMessage(\n content="You are a helpful assistant that im using to make a test request to."\n ),\n HumanMessage(\n content="test from litellm. tell me why it\'s amazing in 1 sentence"\n ),\n]\nresponse = chat(messages)\n\nprint(response)\n\n ')})})]})]})]})})})},rp=t(243),rg=t(93837);async function rj(e,s,t,l,a,r,i,n,o,c,d,m,u,x){console.log=function(){},console.log("isLocal:",!1);let h=(0,j.getProxyBaseUrl)(),p={};a&&a.length>0&&(p["x-litellm-tags"]=a.join(","));let g=new ad.ZP.OpenAI({apiKey:l,baseURL:h,dangerouslyAllowBrowser:!0,defaultHeaders:p});try{let a;let p=Date.now(),j=!1,k=u&&u.length>0?[{type:"mcp",server_label:"litellm",server_url:"".concat(h,"/mcp"),require_approval:"never",allowed_tools:u,headers:{"x-litellm-api-key":"Bearer ".concat(l)}}]:void 0;for await(let l of(await g.chat.completions.create({model:t,stream:!0,stream_options:{include_usage:!0},litellm_trace_id:c,messages:e,...d?{vector_store_ids:d}:{},...m?{guardrails:m}:{},...k?{tools:k,tool_choice:"auto"}:{}},{signal:r}))){var f,v,y,b,_,N,Z,w;console.log("Stream chunk:",l);let e=null===(f=l.choices[0])||void 0===f?void 0:f.delta;if(console.log("Delta content:",null===(y=l.choices[0])||void 0===y?void 0:null===(v=y.delta)||void 0===v?void 0:v.content),console.log("Delta reasoning content:",null==e?void 0:e.reasoning_content),!j&&((null===(_=l.choices[0])||void 0===_?void 0:null===(b=_.delta)||void 0===b?void 0:b.content)||e&&e.reasoning_content)&&(j=!0,a=Date.now()-p,console.log("First token received! Time:",a,"ms"),n?(console.log("Calling onTimingData with:",a),n(a)):console.log("onTimingData callback is not defined!")),null===(Z=l.choices[0])||void 0===Z?void 0:null===(N=Z.delta)||void 0===N?void 0:N.content){let e=l.choices[0].delta.content;s(e,l.model)}if(e&&e.image&&x&&(console.log("Image generated:",e.image),x(e.image.url,l.model)),e&&e.reasoning_content){let s=e.reasoning_content;i&&i(s)}if(l.usage&&o){console.log("Usage data found:",l.usage);let e={completionTokens:l.usage.completion_tokens,promptTokens:l.usage.prompt_tokens,totalTokens:l.usage.total_tokens};(null===(w=l.usage.completion_tokens_details)||void 0===w?void 0:w.reasoning_tokens)&&(e.reasoningTokens=l.usage.completion_tokens_details.reasoning_tokens),o(e)}}}catch(e){throw(null==r?void 0:r.aborted)&&console.log("Chat completion request was cancelled"),e}}async function rf(e,s,t,l,a,r){console.log=function(){},console.log("isLocal:",!1);let i=(0,j.getProxyBaseUrl)(),n=new ad.ZP.OpenAI({apiKey:l,baseURL:i,dangerouslyAllowBrowser:!0,defaultHeaders:a&&a.length>0?{"x-litellm-tags":a.join(",")}:void 0});try{let l=await n.images.generate({model:t,prompt:e},{signal:r});if(console.log(l.data),l.data&&l.data[0]){if(l.data[0].url)s(l.data[0].url,t);else if(l.data[0].b64_json){let e=l.data[0].b64_json;s("data:image/png;base64,".concat(e),t)}else throw Error("No image data found in response")}else throw Error("Invalid response format")}catch(e){throw(null==r?void 0:r.aborted)?console.log("Image generation request was cancelled"):eo.Z.fromBackend("Error occurred while generating image. Please try again. Error: ".concat(e)),e}}async function rv(e,s,t,l,a,r,i){console.log=function(){},console.log("isLocal:",!1);let n=(0,j.getProxyBaseUrl)(),o=new ad.ZP.OpenAI({apiKey:a,baseURL:n,dangerouslyAllowBrowser:!0,defaultHeaders:r&&r.length>0?{"x-litellm-tags":r.join(",")}:void 0});try{let a=Array.isArray(e)?e:[e],r=[];for(let e=0;e1&&eo.Z.success("Successfully processed ".concat(r.length," images"))}catch(e){if(console.error("Error making image edit request:",e),null==i?void 0:i.aborted)console.log("Image edits request was cancelled");else{var c;let s="Failed to edit image(s)";(null==e?void 0:null===(c=e.error)||void 0===c?void 0:c.message)?s=e.error.message:(null==e?void 0:e.message)&&(s=e.message),eo.Z.fromBackend("Image edit failed: ".concat(s))}throw e}}async function ry(e,s,t,l){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5?arguments[5]:void 0,i=arguments.length>6?arguments[6]:void 0,n=arguments.length>7?arguments[7]:void 0,o=arguments.length>8?arguments[8]:void 0,c=arguments.length>9?arguments[9]:void 0,d=arguments.length>10?arguments[10]:void 0,m=arguments.length>11?arguments[11]:void 0,u=arguments.length>12?arguments[12]:void 0,x=arguments.length>13?arguments[13]:void 0,h=arguments.length>14?arguments[14]:void 0,p=arguments.length>15?arguments[15]:void 0;if(!l)throw Error("API key is required");console.log=function(){};let g=(0,j.getProxyBaseUrl)(),f={};a&&a.length>0&&(f["x-litellm-tags"]=a.join(","));let v=new ad.ZP.OpenAI({apiKey:l,baseURL:g,dangerouslyAllowBrowser:!0,defaultHeaders:f});try{let l=Date.now(),a=!1,g=e.map(e=>(Array.isArray(e.content),{role:e.role,content:e.content,type:"message"})),j=u&&u.length>0?[{type:"mcp",server_label:"litellm",server_url:"litellm_proxy/mcp",require_approval:"never",allowed_tools:u}]:void 0,f=await v.responses.create({model:t,input:g,stream:!0,litellm_trace_id:c,...x?{previous_response_id:x}:{},...d?{vector_store_ids:d}:{},...m?{guardrails:m}:{},...j?{tools:j,tool_choice:"required"}:{}},{signal:r}),S="";for await(let e of f)if(console.log("Response event:",e),"object"==typeof e&&null!==e){var y,b,_,N,Z,w,k;if(((null===(y=e.type)||void 0===y?void 0:y.startsWith("response.mcp_"))||"response.output_item.done"===e.type&&((null===(b=e.item)||void 0===b?void 0:b.type)==="mcp_list_tools"||(null===(_=e.item)||void 0===_?void 0:_.type)==="mcp_call"))&&(console.log("MCP event received:",e),p)){let s={type:e.type,sequence_number:e.sequence_number,output_index:e.output_index,item_id:e.item_id||(null===(w=e.item)||void 0===w?void 0:w.id),item:e.item,delta:e.delta,arguments:e.arguments,timestamp:Date.now()};p(s)}if("response.output_item.done"===e.type&&(null===(N=e.item)||void 0===N?void 0:N.type)==="mcp_call"&&(null===(Z=e.item)||void 0===Z?void 0:Z.name)&&(S=e.item.name,console.log("MCP tool used:",S)),"response.role.delta"===e.type)continue;if("response.output_text.delta"===e.type&&"string"==typeof e.delta){let r=e.delta;if(console.log("Text delta",r),r.trim().length>0&&(s("assistant",r,t),!a)){a=!0;let e=Date.now()-l;console.log("First token received! Time:",e,"ms"),n&&n(e)}}if("response.reasoning.delta"===e.type&&"delta"in e){let s=e.delta;"string"==typeof s&&i&&i(s)}if("response.completed"===e.type&&"response"in e){let s=e.response,t=s.usage;if(console.log("Usage data:",t),console.log("Response completed event:",s),s.id&&h&&(console.log("Response ID for session management:",s.id),h(s.id)),t&&o){console.log("Usage data:",t);let e={completionTokens:t.output_tokens,promptTokens:t.input_tokens,totalTokens:t.total_tokens};(null===(k=t.completion_tokens_details)||void 0===k?void 0:k.reasoning_tokens)&&(e.reasoningTokens=t.completion_tokens_details.reasoning_tokens),o(e,S)}}}return f}catch(e){throw(null==r?void 0:r.aborted)?console.log("Responses API request was cancelled"):eo.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e)),e}}var rb=t(85498);async function r_(e,s,t,l){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5?arguments[5]:void 0,i=arguments.length>6?arguments[6]:void 0,n=arguments.length>7?arguments[7]:void 0,o=arguments.length>8?arguments[8]:void 0,c=arguments.length>9?arguments[9]:void 0,d=arguments.length>10?arguments[10]:void 0,m=arguments.length>11?arguments[11]:void 0,u=arguments.length>12?arguments[12]:void 0;if(!l)throw Error("API key is required");console.log=function(){};let x=(0,j.getProxyBaseUrl)(),h={};a&&a.length>0&&(h["x-litellm-tags"]=a.join(","));let p=new rb.ZP({apiKey:l,baseURL:x,dangerouslyAllowBrowser:!0,defaultHeaders:h});try{let a=Date.now(),h=!1,g=u&&u.length>0?[{type:"mcp",server_label:"litellm",server_url:"".concat(x,"/mcp"),require_approval:"never",allowed_tools:u,headers:{"x-litellm-api-key":"Bearer ".concat(l)}}]:void 0,j={model:t,messages:e.map(e=>({role:e.role,content:e.content})),stream:!0,max_tokens:1024,litellm_trace_id:c};for await(let e of(d&&(j.vector_store_ids=d),m&&(j.guardrails=m),g&&(j.tools=g,j.tool_choice="auto"),p.messages.stream(j,{signal:r}))){if(console.log("Stream event:",e),"content_block_delta"===e.type){let l=e.delta;if(!h){h=!0;let e=Date.now()-a;console.log("First token received! Time:",e,"ms"),n&&n(e)}"text_delta"===l.type?s("assistant",l.text,t):"reasoning_delta"===l.type&&i&&i(l.text)}if("message_delta"===e.type&&e.usage&&o){let s=e.usage;console.log("Usage data found:",s);let t={completionTokens:s.output_tokens,promptTokens:s.input_tokens,totalTokens:s.input_tokens+s.output_tokens};o(t)}}}catch(e){throw(null==r?void 0:r.aborted)?console.log("Anthropic messages request was cancelled"):eo.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e)),e}}async function rN(e){try{return(await (0,j.mcpToolsCall)(e)).tools||[]}catch(e){return console.error("Error fetching MCP tools:",e),[]}}var rZ=t(49817),rw=t(94263),rk=e=>{let{endpointType:s,onEndpointChange:t,className:l}=e,a=[{value:rZ.KP.CHAT,label:"/v1/chat/completions"},{value:rZ.KP.RESPONSES,label:"/v1/responses"},{value:rZ.KP.ANTHROPIC_MESSAGES,label:"/v1/messages"},{value:rZ.KP.IMAGE,label:"/v1/images/generations"},{value:rZ.KP.IMAGE_EDITS,label:"/v1/images/edits"}];return(0,c.jsxs)("div",{className:l,children:[(0,c.jsx)(k.Z,{children:"Endpoint Type:"}),(0,c.jsx)(I.default,{showSearch:!0,value:s,style:{width:"100%"},onChange:t,options:a,className:"rounded-md"})]})},rS=e=>{let{onChange:s,value:t,className:l,accessToken:a}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{(async()=>{if(a)try{let e=await (0,j.tagListCall)(a);console.log("List tags response:",e),i(Object.values(e))}catch(e){console.error("Error fetching tags:",e)}})()},[]),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select tags",onChange:s,value:t,loading:n,className:l,options:r.map(e=>({label:e.name,value:e.name,title:e.description||e.name})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"}})},rC=t(88658),rI=t(83322),rA=e=>{let{reasoningContent:s}=e,[t,l]=(0,d.useState)(!0);return s?(0,c.jsxs)("div",{className:"reasoning-content mt-1 mb-2",children:[(0,c.jsxs)(L.ZP,{type:"text",className:"flex items-center text-xs text-gray-500 hover:text-gray-700",onClick:()=>l(!t),icon:(0,c.jsx)(rI.Z,{}),children:[t?"Hide reasoning":"Show reasoning",t?(0,c.jsx)(tT.Z,{className:"ml-1"}):(0,c.jsx)(lm.Z,{className:"ml-1"})]}),t&&(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-700",children:(0,c.jsx)(rp.U,{components:{code(e){let{node:s,inline:t,className:l,children:a,...r}=e,i=/language-(\w+)/.exec(l||"");return!t&&i?(0,c.jsx)(aj.Z,{style:rw.Z,language:i[1],PreTag:"div",className:"rounded-md my-2",...r,children:String(a).replace(/\n$/,"")}):(0,c.jsx)("code",{className:"".concat(l," px-1.5 py-0.5 rounded bg-gray-100 text-sm font-mono"),...r,children:a})}},children:s})})]}):null},rT=t(71282),rE=t(11741),rL=t(16601),rP=t(58630),rM=e=>{let{timeToFirstToken:s,usage:t,toolName:l}=e;return s||t?(0,c.jsxs)("div",{className:"response-metrics mt-2 pt-2 border-t border-gray-100 text-xs text-gray-500 flex flex-wrap gap-3",children:[void 0!==s&&(0,c.jsx)(B.Z,{title:"Time to first token",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(t9.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:[(s/1e3).toFixed(2),"s"]})]})}),(null==t?void 0:t.promptTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Prompt tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rT.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["In: ",t.promptTokens]})]})}),(null==t?void 0:t.completionTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Completion tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rE.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Out: ",t.completionTokens]})]})}),(null==t?void 0:t.reasoningTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Reasoning tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rI.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Reasoning: ",t.reasoningTokens]})]})}),(null==t?void 0:t.totalTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Total tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rL.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Total: ",t.totalTokens]})]})}),l&&(0,c.jsx)(B.Z,{title:"Tool used",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rP.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Tool: ",l]})]})})]}):null},rO=t(53508);let{Dragger:rD}=ed.default;var rF=e=>{let{responsesUploadedImage:s,responsesImagePreviewUrl:t,onImageUpload:l,onRemoveImage:a}=e;return(0,c.jsx)(c.Fragment,{children:!s&&(0,c.jsx)(rD,{beforeUpload:l,accept:"image/*,.pdf",showUploadList:!1,className:"inline-block",style:{padding:0,border:"none",background:"none"},children:(0,c.jsx)(B.Z,{title:"Attach image or PDF",children:(0,c.jsx)("button",{type:"button",className:"flex items-center justify-center w-8 h-8 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-md transition-colors",children:(0,c.jsx)(rO.Z,{style:{fontSize:"16px"}})})})})})};let rR=e=>new Promise((s,t)=>{let l=new FileReader;l.onload=()=>{s(l.result.split(",")[1])},l.onerror=t,l.readAsDataURL(e)}),rz=async(e,s)=>{let t=await rR(s),l=s.type||(s.name.toLowerCase().endsWith(".pdf")?"application/pdf":"image/jpeg");return{role:"user",content:[{type:"input_text",text:e},{type:"input_image",image_url:"data:".concat(l,";base64,").concat(t)}]}},rU=(e,s,t,l)=>{let a="";s&&l&&(a=l.toLowerCase().endsWith(".pdf")?"[PDF attached]":"[Image attached]");let r={role:"user",content:s?"".concat(e," ").concat(a):e};return s&&t&&(r.imagePreviewUrl=t),r},rq=e=>"user"===e.role&&"string"==typeof e.content&&(e.content.includes("[Image attached]")||e.content.includes("[PDF attached]"))&&!!e.imagePreviewUrl;var rV=t(50010),rB=e=>{let{message:s}=e;if(!rq(s))return null;let t="string"==typeof s.content&&s.content.includes("[PDF attached]");return(0,c.jsx)("div",{className:"mb-2",children:t?(0,c.jsx)("div",{className:"w-64 h-32 rounded-md border border-gray-200 bg-red-50 flex items-center justify-center",children:(0,c.jsx)(rV.Z,{style:{fontSize:"48px",color:"#dc2626"}})}):(0,c.jsx)("img",{src:s.imagePreviewUrl,alt:"User uploaded image",className:"max-w-64 rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"200px"}})})};let{Dragger:rK}=ed.default;var rG=e=>{let{chatUploadedImage:s,chatImagePreviewUrl:t,onImageUpload:l,onRemoveImage:a}=e;return(0,c.jsx)(c.Fragment,{children:!s&&(0,c.jsx)(rK,{beforeUpload:l,accept:"image/*,.pdf",showUploadList:!1,className:"inline-block",style:{padding:0,border:"none",background:"none"},children:(0,c.jsx)(B.Z,{title:"Attach image or PDF",children:(0,c.jsx)("button",{type:"button",className:"flex items-center justify-center w-8 h-8 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-md transition-colors",children:(0,c.jsx)(rO.Z,{style:{fontSize:"16px"}})})})})})};let rH=e=>new Promise((s,t)=>{let l=new FileReader;l.onload=()=>{s(l.result)},l.onerror=t,l.readAsDataURL(e)}),rY=async(e,s)=>({role:"user",content:[{type:"text",text:e},{type:"image_url",image_url:{url:await rH(s)}}]}),rJ=(e,s,t,l)=>{let a="";s&&l&&(a=l.toLowerCase().endsWith(".pdf")?"[PDF attached]":"[Image attached]");let r={role:"user",content:s?"".concat(e," ").concat(a):e};return s&&t&&(r.imagePreviewUrl=t),r},rW=e=>"user"===e.role&&"string"==typeof e.content&&(e.content.includes("[Image attached]")||e.content.includes("[PDF attached]"))&&!!e.imagePreviewUrl;var r$=e=>{let{message:s}=e;if(!rW(s))return null;let t="string"==typeof s.content&&s.content.includes("[PDF attached]");return(0,c.jsx)("div",{className:"mb-2",children:t?(0,c.jsx)("div",{className:"w-64 h-32 rounded-md border border-gray-200 bg-red-50 flex items-center justify-center",children:(0,c.jsx)(rV.Z,{style:{fontSize:"48px",color:"#dc2626"}})}):(0,c.jsx)("img",{src:s.imagePreviewUrl,alt:"User uploaded image",className:"max-w-64 rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"200px"}})})},rQ=e=>{let{endpointType:s,responsesSessionId:t,useApiSessionManagement:l,onToggleSessionManagement:a}=e;return s!==rZ.KP.RESPONSES?null:(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Session Management"}),(0,c.jsx)(B.Z,{title:"Choose between LiteLLM API session management (using previous_response_id) or UI-based session management (using chat history)",children:(0,c.jsx)(V.Z,{className:"text-gray-400",style:{fontSize:"12px"}})})]}),(0,c.jsx)(eK.Z,{checked:l,onChange:a,checkedChildren:"API",unCheckedChildren:"UI",size:"small"})]}),(0,c.jsxs)("div",{className:"text-xs p-2 rounded-md ".concat(t?"bg-green-50 text-green-700 border border-green-200":"bg-blue-50 text-blue-700 border border-blue-200"),children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-1",children:[(0,c.jsx)(V.Z,{style:{fontSize:"12px"}}),(()=>{if(!t)return l?"API Session: Ready":"UI Session: Ready";let e=l?"Response ID":"UI Session",s=t.slice(0,10);return"".concat(e,": ").concat(s,"...")})()]}),t&&(0,c.jsx)(B.Z,{title:(0,c.jsxs)("div",{className:"text-xs",children:[(0,c.jsx)("div",{className:"mb-1",children:"Copy response ID to continue session:"}),(0,c.jsx)("div",{className:"bg-gray-800 text-gray-100 p-2 rounded font-mono text-xs whitespace-pre-wrap",children:'curl -X POST "your-proxy-url/v1/responses" \\\n -H "Authorization: Bearer your-api-key" \\\n -H "Content-Type: application/json" \\\n -d \'{\n "model": "your-model",\n "input": [{"role": "user", "content": "your message", "type": "message"}],\n "previous_response_id": "'.concat(t,'",\n "stream": true\n }\'')})]}),overlayStyle:{maxWidth:"500px"},children:(0,c.jsx)("button",{onClick:()=>{t&&(navigator.clipboard.writeText(t),eo.Z.success("Response ID copied to clipboard!"))},className:"ml-2 p-1 hover:bg-green-100 rounded transition-colors",children:(0,c.jsx)(tG.Z,{style:{fontSize:"12px"}})})})]}),(0,c.jsx)("div",{className:"text-xs opacity-75 mt-1",children:t?l?"LiteLLM API session active - context maintained server-side":"UI session active - context maintained client-side":l?"LiteLLM will manage session using previous_response_id":"UI will manage session using chat history"})]})]})};let{Text:rX}=en.default,{Panel:r0}=tI.default;var r1=e=>{var s,t;let{events:l,className:a}=e;if(console.log("MCPEventsDisplay: Received events:",l),!l||0===l.length)return console.log("MCPEventsDisplay: No events, returning null"),null;let r=l.find(e=>{var s;return"response.output_item.done"===e.type&&(null===(s=e.item)||void 0===s?void 0:s.type)==="mcp_list_tools"&&e.item.tools&&e.item.tools.length>0}),i=l.filter(e=>{var s;return"response.output_item.done"===e.type&&(null===(s=e.item)||void 0===s?void 0:s.type)==="mcp_call"});return(console.log("MCPEventsDisplay: toolsEvent:",r),console.log("MCPEventsDisplay: mcpCallEvents:",i),r||0!==i.length)?(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac "+"mcp-events-display ".concat(a||""),children:[(0,c.jsx)(tK(),{id:"32b14b04f420f3ac",children:'.openai-mcp-tools.jsx-32b14b04f420f3ac{position:relative;margin:0;padding:0}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse.jsx-32b14b04f420f3ac{background:transparent!important;border:none!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-item.jsx-32b14b04f420f3ac{border:none!important;background:transparent!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-header.jsx-32b14b04f420f3ac{padding:0 0 0 20px!important;background:transparent!important;border:none!important;font-size:14px!important;color:#9ca3af!important;font-weight:400!important;line-height:20px!important;min-height:20px!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-header.jsx-32b14b04f420f3ac:hover{background:transparent!important;color:#6b7280!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-content.jsx-32b14b04f420f3ac{border:none!important;background:transparent!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-content-box.jsx-32b14b04f420f3ac{padding:4px 0 0 20px!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-expand-icon.jsx-32b14b04f420f3ac{position:absolute!important;left:2px!important;top:2px!important;color:#9ca3af!important;font-size:10px!important;width:16px!important;height:16px!important;display:-webkit-box!important;display:-webkit-flex!important;display:-moz-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center!important;-webkit-align-items:center!important;-moz-box-align:center!important;-ms-flex-align:center!important;align-items:center!important;-webkit-box-pack:center!important;-webkit-justify-content:center!important;-moz-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-expand-icon.jsx-32b14b04f420f3ac:hover{color:#6b7280!important}.openai-vertical-line.jsx-32b14b04f420f3ac{position:absolute;left:9px;top:18px;bottom:0;width:.5px;background-color:#f3f4f6;opacity:.8}.tool-item.jsx-32b14b04f420f3ac{font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:13px;color:#4b5563;line-height:18px;padding:0;margin:0;background:white;position:relative;z-index:1}.mcp-section.jsx-32b14b04f420f3ac{margin-bottom:12px;background:white;position:relative;z-index:1}.mcp-section.jsx-32b14b04f420f3ac:last-child{margin-bottom:0}.mcp-section-header.jsx-32b14b04f420f3ac{font-size:13px;color:#6b7280;font-weight:500;margin-bottom:4px}.mcp-code-block.jsx-32b14b04f420f3ac{background:#f9fafb;border:1px solid#f3f4f6;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;padding:8px;font-size:12px}.mcp-json.jsx-32b14b04f420f3ac{font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:#374151;margin:0;white-space:pre-wrap;word-wrap:break-word}.mcp-approved.jsx-32b14b04f420f3ac{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;font-size:13px;color:#6b7280}.mcp-checkmark.jsx-32b14b04f420f3ac{color:#10b981;margin-right:6px;font-weight:bold}.mcp-response-content.jsx-32b14b04f420f3ac{font-size:13px;color:#374151;line-height:1.5;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace}'}),(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac openai-mcp-tools",children:[(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac openai-vertical-line"}),(0,c.jsxs)(tI.default,{ghost:!0,size:"small",expandIconPosition:"start",defaultActiveKey:r?["list-tools"]:i.map((e,s)=>"mcp-call-".concat(s)),children:[r&&(0,c.jsx)(r0,{header:"List tools",children:(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac",children:null===(t=r.item)||void 0===t?void 0:null===(s=t.tools)||void 0===s?void 0:s.map((e,s)=>(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac tool-item",children:e.name},s))})},"list-tools"),i.map((e,s)=>{var t,l,a;return(0,c.jsx)(r0,{header:(null===(t=e.item)||void 0===t?void 0:t.name)||"Tool call",children:(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac",children:[(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:[(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section-header",children:"Request"}),(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-code-block",children:(null===(l=e.item)||void 0===l?void 0:l.arguments)&&(0,c.jsx)("pre",{className:"jsx-32b14b04f420f3ac mcp-json",children:(()=>{try{return JSON.stringify(JSON.parse(e.item.arguments),null,2)}catch(s){return e.item.arguments}})()})})]}),(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-approved",children:[(0,c.jsx)("span",{className:"jsx-32b14b04f420f3ac mcp-checkmark",children:"✓"})," Approved"]})}),(null===(a=e.item)||void 0===a?void 0:a.output)&&(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:[(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section-header",children:"Response"}),(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-response-content",children:e.item.output})]})]})},"mcp-call-".concat(s))})]})]})]}):(console.log("MCPEventsDisplay: No valid events found, returning null"),null)},r2=t(61935),r4=t(71891),r5=t(44625),r3=t(57400),r6=t(26430),r8=t(11894),r7=t(15883),r9=t(99890),ie=t(79276);let{TextArea:is}=P.default,{Dragger:it}=ed.default;var il=e=>{let{accessToken:s,token:t,userRole:l,userID:a,disabledPersonalKeyCreation:r}=e,[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedMCPTools");try{let s=e?JSON.parse(e):[];return Array.isArray(s)?s:s?[s]:[]}catch(e){return console.error("Error parsing selectedMCPTools from sessionStorage",e),[]}}),[h,p]=(0,d.useState)(!1),[g,j]=(0,d.useState)(()=>{let e=sessionStorage.getItem("apiKeySource");if(e)try{return JSON.parse(e)}catch(e){console.error("Error parsing apiKeySource from sessionStorage",e)}return r?"custom":"session"}),[f,v]=(0,d.useState)(()=>sessionStorage.getItem("apiKey")||""),[y,N]=(0,d.useState)(""),[Z,w]=(0,d.useState)(()=>{try{let e=sessionStorage.getItem("chatHistory");return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing chatHistory from sessionStorage",e),[]}}),[C,A]=(0,d.useState)(()=>sessionStorage.getItem("selectedModel")||void 0),[E,P]=(0,d.useState)(!1),[M,O]=(0,d.useState)([]),D=(0,d.useRef)(null),[F,R]=(0,d.useState)(()=>sessionStorage.getItem("endpointType")||rZ.KP.CHAT),[z,q]=(0,d.useState)(!1),K=(0,d.useRef)(null),[H,Y]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedTags");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedTags from sessionStorage",e),[]}}),[J,W]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedVectorStores");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedVectorStores from sessionStorage",e),[]}}),[$,Q]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedGuardrails");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedGuardrails from sessionStorage",e),[]}}),[X,ee]=(0,d.useState)(()=>sessionStorage.getItem("messageTraceId")||null),[es,et]=(0,d.useState)(()=>sessionStorage.getItem("responsesSessionId")||null),[el,ea]=(0,d.useState)(()=>{let e=sessionStorage.getItem("useApiSessionManagement");return!e||JSON.parse(e)}),[er,ei]=(0,d.useState)([]),[ec,ed]=(0,d.useState)([]),[em,eu]=(0,d.useState)(null),[ex,eh]=(0,d.useState)(null),[eg,ej]=(0,d.useState)(null),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)(!1),[e_,eN]=(0,d.useState)(""),[eZ,ew]=(0,d.useState)("openai"),[ek,eS]=(0,d.useState)([]),eC=(0,d.useRef)(null),eI=async()=>{let e="session"===g?s:f;if(e){p(!0);try{let s=await rN(e);m(s)}catch(e){console.error("Error fetching MCP tools:",e)}finally{p(!1)}}};(0,d.useEffect)(()=>{i&&eI()},[i,s,f,g]),(0,d.useEffect)(()=>{ey&&eN((0,rC.L)({apiKeySource:g,accessToken:s,apiKey:f,inputMessage:y,chatHistory:Z,selectedTags:H,selectedVectorStores:J,selectedGuardrails:$,selectedMCPTools:u,endpointType:F,selectedModel:C,selectedSdk:eZ}))},[ey,eZ,g,s,f,y,Z,H,J,$,u,F,C]),(0,d.useEffect)(()=>{let e=setTimeout(()=>{sessionStorage.setItem("chatHistory",JSON.stringify(Z))},500);return()=>{clearTimeout(e)}},[Z]),(0,d.useEffect)(()=>{sessionStorage.setItem("apiKeySource",JSON.stringify(g)),sessionStorage.setItem("apiKey",f),sessionStorage.setItem("endpointType",F),sessionStorage.setItem("selectedTags",JSON.stringify(H)),sessionStorage.setItem("selectedVectorStores",JSON.stringify(J)),sessionStorage.setItem("selectedGuardrails",JSON.stringify($)),sessionStorage.setItem("selectedMCPTools",JSON.stringify(u)),C?sessionStorage.setItem("selectedModel",C):sessionStorage.removeItem("selectedModel"),X?sessionStorage.setItem("messageTraceId",X):sessionStorage.removeItem("messageTraceId"),es?sessionStorage.setItem("responsesSessionId",es):sessionStorage.removeItem("responsesSessionId"),sessionStorage.setItem("useApiSessionManagement",JSON.stringify(el))},[g,f,C,F,H,J,$,X,es,el,u]),(0,d.useEffect)(()=>{let e="session"===g?s:f;if(!e||!t||!l||!a){console.log("userApiKey or token or userRole or userID is missing = ",e,t,l,a);return}(async()=>{try{if(!e){console.log("userApiKey is missing");return}let s=await eq(e);console.log("Fetched models:",s),O(s);let t=s.some(e=>e.model_group===C);s.length?t||A(s[0].model_group):A(void 0)}catch(e){console.error("Error fetching model info:",e)}})(),eI()},[s,a,l,g,f,t]),(0,d.useEffect)(()=>{eC.current&&setTimeout(()=>{var e;null===(e=eC.current)||void 0===e||e.scrollIntoView({behavior:"smooth",block:"end"})},100)},[Z]);let eA=(e,s,t)=>{console.log("updateTextUI called with:",e,s,t),w(l=>{let a=l[l.length-1];if(!a||a.role!==e||a.isImage)return[...l,{role:e,content:s,model:t}];{var r;let e={...a,content:a.content+s,model:null!==(r=a.model)&&void 0!==r?r:t};return[...l.slice(0,-1),e]}})},eT=e=>{w(s=>{let t=s[s.length-1];return t&&"assistant"===t.role&&!t.isImage?[...s.slice(0,s.length-1),{...t,reasoningContent:(t.reasoningContent||"")+e}]:s.length>0&&"user"===s[s.length-1].role?[...s,{role:"assistant",content:"",reasoningContent:e}]:s})},eE=e=>{console.log("updateTimingData called with:",e),w(s=>{let t=s[s.length-1];if(console.log("Current last message:",t),t&&"assistant"===t.role){console.log("Updating assistant message with timeToFirstToken:",e);let l=[...s.slice(0,s.length-1),{...t,timeToFirstToken:e}];return console.log("Updated chat history:",l),l}return t&&"user"===t.role?(console.log("Creating new assistant message with timeToFirstToken:",e),[...s,{role:"assistant",content:"",timeToFirstToken:e}]):(console.log("No appropriate message found to update timing"),s)})},eL=(e,s)=>{console.log("Received usage data:",e),w(t=>{let l=t[t.length-1];if(l&&"assistant"===l.role){console.log("Updating message with usage data:",e);let a={...l,usage:e,toolName:s};return console.log("Updated message:",a),[...t.slice(0,t.length-1),a]}return t})},eP=e=>{console.log("Received response ID for session management:",e),el&&et(e)},eM=e=>{console.log("ChatUI: Received MCP event:",e),eS(s=>{if(s.some(s=>s.item_id===e.item_id&&s.type===e.type&&s.sequence_number===e.sequence_number))return console.log("ChatUI: Duplicate MCP event, skipping"),s;let t=[...s,e];return console.log("ChatUI: Updated MCP events:",t),t})},eO=(e,s)=>{w(t=>[...t,{role:"assistant",content:e,model:s,isImage:!0}])},eD=(e,s)=>{w(t=>{let l=t[t.length-1];if(!l||"assistant"!==l.role||l.isImage)return[...t,{role:"assistant",content:"",model:s,image:{url:e,detail:"auto"}}];{var a;let r={...l,image:{url:e,detail:"auto"},model:null!==(a=l.model)&&void 0!==a?a:s};return[...t.slice(0,-1),r]}})},eF=e=>{ei(s=>[...s,e]);let s=URL.createObjectURL(e);return ed(e=>[...e,s]),!1},eR=e=>{ec[e]&&URL.revokeObjectURL(ec[e]),ei(s=>s.filter((s,t)=>t!==e)),ed(s=>s.filter((s,t)=>t!==e))},ez=()=>{ec.forEach(e=>{URL.revokeObjectURL(e)}),ei([]),ed([])},eV=()=>{ex&&URL.revokeObjectURL(ex),eu(null),eh(null)},eB=()=>{ef&&URL.revokeObjectURL(ef),ej(null),ev(null)},eK=async()=>{let e;if(""===y.trim())return;if(F===rZ.KP.IMAGE_EDITS&&0===er.length){eo.Z.fromBackend("Please upload at least one image for editing");return}if(!t||!l||!a)return;let r="session"===g?s:f;if(!r){eo.Z.fromBackend("Please provide an API key or select Current UI Session");return}K.current=new AbortController;let i=K.current.signal;if(F===rZ.KP.RESPONSES&&em)try{e=await rz(y,em)}catch(e){eo.Z.fromBackend("Failed to process image. Please try again.");return}else if(F===rZ.KP.CHAT&&eg)try{e=await rY(y,eg)}catch(e){eo.Z.fromBackend("Failed to process image. Please try again.");return}else e={role:"user",content:y};let n=X||(0,rg.Z)();X||ee(n),w([...Z,F===rZ.KP.RESPONSES&&em?rU(y,!0,ex||void 0,em.name):F===rZ.KP.CHAT&&eg?rJ(y,!0,ef||void 0,eg.name):rU(y,!1)]),eS([]),q(!0);try{if(C){if(F===rZ.KP.CHAT){let s=[...Z.filter(e=>!e.isImage).map(e=>{let{role:s,content:t}=e;return{role:s,content:"string"==typeof t?t:""}}),e];await rj(s,(e,s)=>eA("assistant",e,s),C,r,H,i,eT,eE,eL,n,J.length>0?J:void 0,$.length>0?$:void 0,u,eD)}else if(F===rZ.KP.IMAGE)await rf(y,(e,s)=>eO(e,s),C,r,H,i);else if(F===rZ.KP.IMAGE_EDITS)er.length>0&&await rv(1===er.length?er[0]:er,y,(e,s)=>eO(e,s),C,r,H,i);else if(F===rZ.KP.RESPONSES){let s;s=el&&es?[e]:[...Z.filter(e=>!e.isImage).map(e=>{let{role:s,content:t}=e;return{role:s,content:t}}),e],await ry(s,(e,s,t)=>eA(e,s,t),C,r,H,i,eT,eE,eL,n,J.length>0?J:void 0,$.length>0?$:void 0,u,el?es:null,eP,eM)}else if(F===rZ.KP.ANTHROPIC_MESSAGES){let s=[...Z.filter(e=>!e.isImage).map(e=>{let{role:s,content:t}=e;return{role:s,content:t}}),e];await r_(s,(e,s,t)=>eA(e,s,t),C,r,H,i,eT,eE,eL,n,J.length>0?J:void 0,$.length>0?$:void 0,u)}}}catch(e){i.aborted?console.log("Request was cancelled"):(console.error("Error fetching response",e),eA("assistant","Error fetching response:"+e))}finally{q(!1),K.current=null,F===rZ.KP.IMAGE_EDITS&&ez(),F===rZ.KP.RESPONSES&&em&&eV(),F===rZ.KP.CHAT&&eg&&eB()}N("")};if(l&&"Admin Viewer"===l){let{Title:e,Paragraph:s}=en.default;return(0,c.jsxs)("div",{children:[(0,c.jsx)(e,{level:1,children:"Access Denied"}),(0,c.jsx)(s,{children:"Ask your proxy admin for access to test models"})]})}let eG=(0,c.jsx)(r2.Z,{style:{fontSize:24},spin:!0});return(0,c.jsxs)("div",{className:"w-full h-screen p-4 bg-white",children:[(0,c.jsx)(G.Z,{className:"w-full rounded-xl shadow-md overflow-hidden",children:(0,c.jsxs)("div",{className:"flex h-[80vh] w-full gap-4",children:[(0,c.jsxs)("div",{className:"w-1/4 p-4 bg-gray-50 overflow-y-auto",children:[(0,c.jsx)(S.Z,{className:"text-xl font-semibold mb-6 mt-2",children:"Configurations"}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(l1.Z,{className:"mr-2"})," API Key Source"]}),(0,c.jsx)(I.default,{disabled:r,value:g,style:{width:"100%"},onChange:e=>{j(e)},options:[{value:"session",label:"Current UI Session"},{value:"custom",label:"Virtual Key"}],className:"rounded-md"}),"custom"===g&&(0,c.jsx)(_.Z,{className:"mt-2",placeholder:"Enter custom API key",type:"password",onValueChange:v,value:f,icon:l1.Z})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(eU.Z,{className:"mr-2"})," Select Model"]}),(0,c.jsx)(I.default,{value:C,placeholder:"Select a Model",onChange:e=>{console.log("selected ".concat(e)),A(e),P("custom"===e)},options:[...Array.from(new Set(M.map(e=>e.model_group))).map((e,s)=>({value:e,label:e,key:s})),{value:"custom",label:"Enter custom model",key:"custom"}],style:{width:"100%"},showSearch:!0,className:"rounded-md"}),E&&(0,c.jsx)(_.Z,{className:"mt-2",placeholder:"Enter custom model name",onValueChange:e=>{D.current&&clearTimeout(D.current),D.current=setTimeout(()=>{A(e)},500)}})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(lc.Z,{className:"mr-2"})," Endpoint Type"]}),(0,c.jsx)(rk,{endpointType:F,onEndpointChange:e=>{R(e)},className:"mb-4"}),(0,c.jsx)(rQ,{endpointType:F,responsesSessionId:es,useApiSessionManagement:el,onToggleSessionManagement:e=>{ea(e),e||et(null)}})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(r4.Z,{className:"mr-2"})," Tags"]}),(0,c.jsx)(rS,{value:H,onChange:Y,className:"mb-4",accessToken:s||""})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(rP.Z,{className:"mr-2"})," MCP Tool",(0,c.jsx)(B.Z,{className:"ml-1",title:"Select MCP tools to use in your conversation, only available for /v1/responses endpoint",children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select MCP tools",value:u,onChange:e=>x(e),loading:h,className:"mb-4",allowClear:!0,optionLabelProp:"label",disabled:F!==rZ.KP.RESPONSES,maxTagCount:"responsive",children:Array.isArray(o)&&o.map(e=>(0,c.jsx)(I.default.Option,{value:e.name,label:(0,c.jsx)("div",{className:"font-medium",children:e.name}),children:(0,c.jsxs)("div",{className:"flex flex-col py-1",children:[(0,c.jsx)("span",{className:"font-medium",children:e.name}),(0,c.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.description})]})},e.name))})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(r5.Z,{className:"mr-2"})," Vector Store",(0,c.jsx)(B.Z,{className:"ml-1",title:(0,c.jsxs)("span",{children:["Select vector store(s) to use for this LLM API call. You can set up your vector store"," ",(0,c.jsx)("a",{href:"?page=vector-stores",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(U,{value:J,onChange:W,className:"mb-4",accessToken:s||""})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(r3.Z,{className:"mr-2"})," Guardrails",(0,c.jsx)(B.Z,{className:"ml-1",title:(0,c.jsxs)("span",{children:["Select guardrail(s) to use for this LLM API call. You can set up your guardrails"," ",(0,c.jsx)("a",{href:"?page=guardrails",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(sc,{value:$,onChange:Q,className:"mb-4",accessToken:s||""})]})]})]}),(0,c.jsxs)("div",{className:"w-3/4 flex flex-col bg-white",children:[(0,c.jsxs)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:[(0,c.jsx)(S.Z,{className:"text-xl font-semibold mb-0",children:"Test Key"}),(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{onClick:()=>{w([]),ee(null),et(null),eS([]),ez(),eV(),eB(),sessionStorage.removeItem("chatHistory"),sessionStorage.removeItem("messageTraceId"),sessionStorage.removeItem("responsesSessionId"),eo.Z.success("Chat history cleared.")},className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:r6.Z,children:"Clear Chat"}),(0,c.jsx)(b.Z,{onClick:()=>eb(!0),className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:r8.Z,children:"Get Code"})]})]}),(0,c.jsxs)("div",{className:"flex-1 overflow-auto p-4 pb-0",children:[0===Z.length&&(0,c.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,c.jsx)(eU.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,c.jsx)(k.Z,{children:"Start a conversation or generate an image"})]}),Z.map((e,s)=>(0,c.jsx)("div",{children:(0,c.jsx)("div",{className:"mb-4 ".concat("user"===e.role?"text-right":"text-left"),children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:"user"===e.role?"#f0f8ff":"#ffffff",border:"user"===e.role?"1px solid #e6f0fa":"1px solid #f0f0f0",textAlign:"left"},children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:"user"===e.role?"#e6f0fa":"#f5f5f5"},children:"user"===e.role?(0,c.jsx)(r7.Z,{style:{fontSize:"12px",color:"#2563eb"}}):(0,c.jsx)(eU.Z,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,c.jsx)("strong",{className:"text-sm capitalize",children:e.role}),"assistant"===e.role&&e.model&&(0,c.jsx)("span",{className:"text-xs px-2 py-0.5 rounded bg-gray-100 text-gray-600 font-normal",children:e.model})]}),e.reasoningContent&&(0,c.jsx)(rA,{reasoningContent:e.reasoningContent}),"assistant"===e.role&&s===Z.length-1&&ek.length>0&&F===rZ.KP.RESPONSES&&(0,c.jsx)("div",{className:"mb-3",children:(0,c.jsx)(r1,{events:ek})}),(0,c.jsxs)("div",{className:"whitespace-pre-wrap break-words max-w-full message-content",style:{wordWrap:"break-word",overflowWrap:"break-word",wordBreak:"break-word",hyphens:"auto"},children:[e.isImage?(0,c.jsx)("img",{src:"string"==typeof e.content?e.content:"",alt:"Generated image",className:"max-w-full rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"500px"}}):(0,c.jsxs)(c.Fragment,{children:[F===rZ.KP.RESPONSES&&(0,c.jsx)(rB,{message:e}),F===rZ.KP.CHAT&&(0,c.jsx)(r$,{message:e}),(0,c.jsx)(rp.U,{components:{code(e){let{node:s,inline:t,className:l,children:a,...r}=e,i=/language-(\w+)/.exec(l||"");return!t&&i?(0,c.jsx)(aj.Z,{style:rw.Z,language:i[1],PreTag:"div",className:"rounded-md my-2",wrapLines:!0,wrapLongLines:!0,...r,children:String(a).replace(/\n$/,"")}):(0,c.jsx)("code",{className:"".concat(l," px-1.5 py-0.5 rounded bg-gray-100 text-sm font-mono"),style:{wordBreak:"break-word"},...r,children:a})},pre:e=>{let{node:s,...t}=e;return(0,c.jsx)("pre",{style:{overflowX:"auto",maxWidth:"100%"},...t})}},children:"string"==typeof e.content?e.content:""}),e.image&&(0,c.jsx)("div",{className:"mt-3",children:(0,c.jsx)("img",{src:e.image.url,alt:"Generated image",className:"max-w-full rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"500px"}})})]}),"assistant"===e.role&&(e.timeToFirstToken||e.usage)&&(0,c.jsx)(rM,{timeToFirstToken:e.timeToFirstToken,usage:e.usage,toolName:e.toolName})]})]})})},s)),z&&ek.length>0&&F===rZ.KP.RESPONSES&&Z.length>0&&"user"===Z[Z.length-1].role&&(0,c.jsx)("div",{className:"text-left mb-4",children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:"#ffffff",border:"1px solid #f0f0f0",textAlign:"left"},children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:"#f5f5f5"},children:(0,c.jsx)(eU.Z,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,c.jsx)("strong",{className:"text-sm capitalize",children:"Assistant"})]}),(0,c.jsx)(r1,{events:ek})]})}),z&&(0,c.jsx)("div",{className:"flex justify-center items-center my-4",children:(0,c.jsx)(lO.Z,{indicator:eG})}),(0,c.jsx)("div",{ref:eC,style:{height:"1px"}})]}),(0,c.jsxs)("div",{className:"p-4 border-t border-gray-200 bg-white",children:[F===rZ.KP.IMAGE_EDITS&&(0,c.jsx)("div",{className:"mb-4",children:0===er.length?(0,c.jsxs)(it,{beforeUpload:eF,accept:"image/*",showUploadList:!1,className:"border-dashed border-2 border-gray-300 rounded-lg p-4",children:[(0,c.jsx)("p",{className:"ant-upload-drag-icon",children:(0,c.jsx)(r9.Z,{style:{fontSize:"24px",color:"#666"}})}),(0,c.jsx)("p",{className:"ant-upload-text text-sm",children:"Click or drag images to upload"}),(0,c.jsx)("p",{className:"ant-upload-hint text-xs text-gray-500",children:"Support for PNG, JPG, JPEG formats. Multiple images supported."})]}):(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[er.map((e,s)=>(0,c.jsxs)("div",{className:"relative inline-block",children:[(0,c.jsx)("img",{src:ec[s]||"",alt:"Upload preview ".concat(s+1),className:"max-w-32 max-h-32 rounded-md border border-gray-200 object-cover"}),(0,c.jsx)("button",{className:"absolute top-1 right-1 bg-white shadow-sm border border-gray-200 rounded px-1 py-1 text-red-500 hover:bg-red-50 text-xs",onClick:()=>eR(s),children:(0,c.jsx)(ep.Z,{})})]},s)),(0,c.jsxs)("div",{className:"flex items-center justify-center w-32 h-32 border-2 border-dashed border-gray-300 rounded-md hover:border-gray-400 cursor-pointer",onClick:()=>{var e;return null===(e=document.getElementById("additional-image-upload"))||void 0===e?void 0:e.click()},children:[(0,c.jsxs)("div",{className:"text-center",children:[(0,c.jsx)(r9.Z,{style:{fontSize:"24px",color:"#666"}}),(0,c.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:"Add more"})]}),(0,c.jsx)("input",{id:"additional-image-upload",type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:e=>{Array.from(e.target.files||[]).forEach(e=>eF(e))}})]})]})}),F===rZ.KP.RESPONSES&&em&&(0,c.jsx)("div",{className:"mb-2",children:(0,c.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[(0,c.jsx)("div",{className:"relative inline-block",children:em.name.toLowerCase().endsWith(".pdf")?(0,c.jsx)("div",{className:"w-10 h-10 rounded-md bg-red-500 flex items-center justify-center",children:(0,c.jsx)(rV.Z,{style:{fontSize:"16px",color:"white"}})}):(0,c.jsx)("img",{src:ex||"",alt:"Upload preview",className:"w-10 h-10 rounded-md border border-gray-200 object-cover"})}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsx)("div",{className:"text-sm font-medium text-gray-900 truncate",children:em.name}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:em.name.toLowerCase().endsWith(".pdf")?"PDF":"Image"})]}),(0,c.jsx)("button",{className:"flex items-center justify-center w-6 h-6 text-gray-400 hover:text-gray-600 hover:bg-gray-200 rounded-full transition-colors",onClick:eV,children:(0,c.jsx)(ep.Z,{style:{fontSize:"12px"}})})]})}),F===rZ.KP.CHAT&&eg&&(0,c.jsx)("div",{className:"mb-2",children:(0,c.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[(0,c.jsx)("div",{className:"relative inline-block",children:eg.name.toLowerCase().endsWith(".pdf")?(0,c.jsx)("div",{className:"w-10 h-10 rounded-md bg-red-500 flex items-center justify-center",children:(0,c.jsx)(rV.Z,{style:{fontSize:"16px",color:"white"}})}):(0,c.jsx)("img",{src:ef||"",alt:"Upload preview",className:"w-10 h-10 rounded-md border border-gray-200 object-cover"})}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsx)("div",{className:"text-sm font-medium text-gray-900 truncate",children:eg.name}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:eg.name.toLowerCase().endsWith(".pdf")?"PDF":"Image"})]}),(0,c.jsx)("button",{className:"flex items-center justify-center w-6 h-6 text-gray-400 hover:text-gray-600 hover:bg-gray-200 rounded-full transition-colors",onClick:eB,children:(0,c.jsx)(ep.Z,{style:{fontSize:"12px"}})})]})}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsxs)("div",{className:"flex items-center flex-1 bg-white border border-gray-300 rounded-xl px-3 py-1 min-h-[44px]",children:[(0,c.jsxs)("div",{className:"flex-shrink-0 mr-2",children:[F===rZ.KP.RESPONSES&&!em&&(0,c.jsx)(rF,{responsesUploadedImage:em,responsesImagePreviewUrl:ex,onImageUpload:e=>(eu(e),eh(URL.createObjectURL(e)),!1),onRemoveImage:eV}),F===rZ.KP.CHAT&&!eg&&(0,c.jsx)(rG,{chatUploadedImage:eg,chatImagePreviewUrl:ef,onImageUpload:e=>(ej(e),ev(URL.createObjectURL(e)),!1),onRemoveImage:eB})]}),(0,c.jsx)(is,{value:y,onChange:e=>N(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),eK())},placeholder:F===rZ.KP.CHAT||F===rZ.KP.RESPONSES||F===rZ.KP.ANTHROPIC_MESSAGES?"Type your message... (Shift+Enter for new line)":F===rZ.KP.IMAGE_EDITS?"Describe how you want to edit the image...":"Describe the image you want to generate...",disabled:z,className:"flex-1",autoSize:{minRows:1,maxRows:4},style:{resize:"none",border:"none",boxShadow:"none",background:"transparent",padding:"4px 0",fontSize:"14px",lineHeight:"20px"}}),(0,c.jsx)(b.Z,{onClick:eK,disabled:z||!y.trim(),className:"flex-shrink-0 ml-2 !w-8 !h-8 !min-w-8 !p-0 !rounded-full !bg-blue-600 hover:!bg-blue-700 disabled:!bg-gray-300 !border-none !text-white disabled:!text-gray-500 !flex !items-center !justify-center",children:(0,c.jsx)(ie.Z,{style:{fontSize:"14px"}})})]}),z&&(0,c.jsx)(b.Z,{onClick:()=>{K.current&&(K.current.abort(),K.current=null,q(!1),eo.Z.info("Request cancelled"))},className:"bg-red-50 hover:bg-red-100 text-red-600 border-red-200",icon:ep.Z,children:"Cancel"})]})]})]})]})}),(0,c.jsxs)(T.Z,{title:"Generated Code",visible:ey,onCancel:()=>eb(!1),footer:null,width:800,children:[(0,c.jsxs)("div",{className:"flex justify-between items-end my-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium block mb-1 text-gray-700",children:"SDK Type"}),(0,c.jsx)(I.default,{value:eZ,onChange:e=>ew(e),style:{width:150},options:[{value:"openai",label:"OpenAI SDK"},{value:"azure",label:"Azure SDK"}]})]}),(0,c.jsx)(L.ZP,{onClick:()=>{navigator.clipboard.writeText(e_),eo.Z.success("Copied to clipboard!")},children:"Copy to Clipboard"})]}),(0,c.jsx)(aj.Z,{language:"python",style:rw.Z,wrapLines:!0,wrapLongLines:!0,className:"rounded-md",customStyle:{maxHeight:"60vh",overflowY:"auto"},children:e_})]}),"custom"===g&&(0,c.jsx)(T.Z,{title:"Select MCP Tool",visible:i,onCancel:()=>n(!1),onOk:()=>{n(!1),eo.Z.success("MCP tool selection updated")},width:800,children:h?(0,c.jsx)("div",{className:"flex justify-center items-center py-8",children:(0,c.jsx)(lO.Z,{indicator:(0,c.jsx)(r2.Z,{style:{fontSize:24},spin:!0})})}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)(k.Z,{className:"text-gray-600 block mb-4",children:"Select the MCP tools you want to use in your conversation."}),(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select MCP tools",value:u,onChange:e=>x(e),optionLabelProp:"label",allowClear:!0,maxTagCount:"responsive",children:o.map(e=>(0,c.jsx)(I.default.Option,{value:e.name,label:(0,c.jsx)("div",{className:"font-medium",children:e.name}),children:(0,c.jsxs)("div",{className:"flex flex-col py-1",children:[(0,c.jsx)("span",{className:"font-medium",children:e.name}),(0,c.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.description})]})},e.name))})]})})]})},ia=t(19226),ir=t(45937),ii=t(28595),io=t(68208),ic=t(9775),id=t(41361),im=t(37527),iu=t(88009),ix=t(48231),ih=t(41169),ip=t(55322),ig=t(11429),ij=t(70525),iv=t(95805),iy=t(51817),ib=t(21047);t(22135),t(40875);var i_=t(49663);let iN=function(){for(var e=arguments.length,s=Array(e),t=0;t{(async()=>{if(s){u(!0),h(null);try{let e=await (0,j.getRemainingUsers)(s);o(e)}catch(e){console.error("Failed to fetch usage data:",e),h("Failed to load usage data")}finally{u(!1)}}})()},[s]);let{isOverLimit:p,isNearLimit:g,usagePercentage:f,userMetrics:v,teamMetrics:y}=(e=>{if(!e)return{isOverLimit:!1,isNearLimit:!1,usagePercentage:0,userMetrics:{isOverLimit:!1,isNearLimit:!1,usagePercentage:0},teamMetrics:{isOverLimit:!1,isNearLimit:!1,usagePercentage:0}};let s=!!e.total_users_remaining&&e.total_users_remaining<=0,t=!!e.total_users_remaining&&e.total_users_remaining<=5&&e.total_users_remaining>0,l=e.total_users?e.total_users_used/e.total_users*100:0,a=!!e.total_teams_remaining&&e.total_teams_remaining<=0,r=!!e.total_teams_remaining&&e.total_teams_remaining<=5&&e.total_teams_remaining>0,i=e.total_teams?e.total_teams_used/e.total_teams*100:0,n=s||a;return{isOverLimit:n,isNearLimit:(t||r)&&!n,usagePercentage:Math.max(l,i),userMetrics:{isOverLimit:s,isNearLimit:t,usagePercentage:l},teamMetrics:{isOverLimit:a,isNearLimit:r,usagePercentage:i}}})(n),b=()=>p?"red":g?"yellow":"green",_=()=>p?"Over Limit":g?"Near Limit":"Active",N=()=>p?(0,c.jsx)(lB.Z,{className:"h-3 w-3"}):g?(0,c.jsx)(ij.Z,{className:"h-3 w-3"}):null;return s&&((null==n?void 0:n.total_users)!==null||(null==n?void 0:n.total_teams)!==null)?(0,c.jsx)("div",{className:"fixed bottom-4 left-4 z-50",style:{width:"".concat(Math.min(t,220),"px")},children:(0,c.jsx)(()=>{if(r){let e=p||g;return(0,c.jsx)("button",{onClick:()=>i(!1),className:iN("bg-white border border-gray-200 rounded-lg shadow-sm p-3 hover:shadow-md transition-all w-full",e&&p&&"border-red-200 bg-red-50",e&&g&&"border-yellow-200 bg-yellow-50"),title:"Show usage details",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(iv.Z,{className:"h-4 w-4 flex-shrink-0"}),e&&(0,c.jsx)("span",{className:"flex-shrink-0",children:N()}),(0,c.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium truncate",children:[n&&null!==n.total_users&&(0,c.jsxs)("span",{className:"flex-shrink-0",children:["U: ",n.total_users_used,"/",n.total_users]}),n&&null!==n.total_teams&&(0,c.jsxs)("span",{className:"flex-shrink-0",children:["T: ",n.total_teams_used,"/",n.total_teams]}),!n||null===n.total_users&&null===n.total_teams&&(0,c.jsx)("span",{className:"truncate",children:"Usage"})]})]})})}return m?(0,c.jsx)("div",{className:"bg-white border border-gray-200 rounded-lg shadow-sm p-4 w-full",children:(0,c.jsxs)("div",{className:"flex items-center justify-center gap-2 py-2",children:[(0,c.jsx)(iy.Z,{className:"h-4 w-4 animate-spin"}),(0,c.jsx)("span",{className:"text-sm text-gray-500 truncate",children:"Loading..."})]})}):x||!n?(0,c.jsx)("div",{className:"bg-white border border-gray-200 rounded-lg shadow-sm p-4 group w-full",children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex-1 min-w-0",children:(0,c.jsx)("span",{className:"text-sm text-gray-500 truncate block",children:x||"No data"})}),(0,c.jsx)("button",{onClick:()=>i(!0),className:"opacity-0 group-hover:opacity-100 p-1 hover:bg-gray-100 rounded transition-all flex-shrink-0",title:"Minimize",children:(0,c.jsx)(ib.Z,{className:"h-3 w-3 text-gray-400"})})]})}):(0,c.jsxs)("div",{className:iN("bg-white border rounded-lg shadow-sm p-3 transition-all duration-200 group w-full",p&&"border-red-200 bg-red-50",g&&"border-yellow-200 bg-yellow-50"),children:[(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2 mb-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[(0,c.jsx)(iv.Z,{className:"h-4 w-4 flex-shrink-0"}),(0,c.jsx)("span",{className:"font-medium text-sm truncate",children:"Usage"}),(p||g)&&(0,c.jsx)(e6.Z,{color:b(),className:"text-xs px-1.5 py-0.5 flex-shrink-0",children:_()})]}),(0,c.jsx)("button",{onClick:()=>i(!0),className:"opacity-0 group-hover:opacity-100 p-1 hover:bg-gray-100 rounded transition-all flex-shrink-0",title:"Minimize",children:(0,c.jsx)(ib.Z,{className:"h-3 w-3 text-gray-400"})})]}),(0,c.jsxs)("div",{className:"space-y-3 text-sm",children:[null!==n.total_users&&(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-1 text-xs text-gray-600 mb-1",children:[(0,c.jsx)(iv.Z,{className:"h-3 w-3"}),(0,c.jsx)("span",{className:"font-medium",children:"Users"})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Used:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[n.total_users_used,"/",n.total_users]})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Remaining:"}),(0,c.jsx)("span",{className:iN("font-medium text-right",v.isOverLimit&&"text-red-600",v.isNearLimit&&"text-yellow-600"),children:n.total_users_remaining})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Usage:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[Math.round(v.usagePercentage),"%"]})]}),(0,c.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,c.jsx)("div",{className:iN("h-2 rounded-full transition-all duration-300",v.isOverLimit&&"bg-red-500",v.isNearLimit&&"bg-yellow-500",!v.isOverLimit&&!v.isNearLimit&&"bg-green-500"),style:{width:"".concat(Math.min(v.usagePercentage,100),"%")}})})]}),null!==n.total_teams&&(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-1 text-xs text-gray-600 mb-1",children:[(0,c.jsx)(i_.Z,{className:"h-3 w-3"}),(0,c.jsx)("span",{className:"font-medium",children:"Teams"})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Used:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[n.total_teams_used,"/",n.total_teams]})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Remaining:"}),(0,c.jsx)("span",{className:iN("font-medium text-right",y.isOverLimit&&"text-red-600",y.isNearLimit&&"text-yellow-600"),children:n.total_teams_remaining})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Usage:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[Math.round(y.usagePercentage),"%"]})]}),(0,c.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,c.jsx)("div",{className:iN("h-2 rounded-full transition-all duration-300",y.isOverLimit&&"bg-red-500",y.isNearLimit&&"bg-yellow-500",!y.isOverLimit&&!y.isNearLimit&&"bg-green-500"),style:{width:"".concat(Math.min(y.usagePercentage,100),"%")}})})]})]})]})},{})}):null}var iw=t(13959);let{Sider:ik}=ia.default;var iS=e=>{let{accessToken:s,setPage:t,userRole:l,defaultSelectedKey:a,collapsed:r=!1}=e,i=[{key:"1",page:"api-keys",label:"Virtual Keys",icon:(0,c.jsx)(l1.Z,{style:{fontSize:"18px"}})},{key:"3",page:"llm-playground",label:"Test Key",icon:(0,c.jsx)(ii.Z,{style:{fontSize:"18px"}}),roles:eI.LQ},{key:"2",page:"models",label:"Models + Endpoints",icon:(0,c.jsx)(io.Z,{style:{fontSize:"18px"}}),roles:eI.LQ},{key:"12",page:"new_usage",label:"Usage",icon:(0,c.jsx)(ic.Z,{style:{fontSize:"18px"}}),roles:[...eI.ZL,...eI.lo]},{key:"6",page:"teams",label:"Teams",icon:(0,c.jsx)(id.Z,{style:{fontSize:"18px"}})},{key:"17",page:"organizations",label:"Organizations",icon:(0,c.jsx)(im.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"5",page:"users",label:"Internal Users",icon:(0,c.jsx)(r7.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"14",page:"api_ref",label:"API Reference",icon:(0,c.jsx)(lc.Z,{style:{fontSize:"18px"}})},{key:"16",page:"model-hub-table",label:"Model Hub",icon:(0,c.jsx)(iu.Z,{style:{fontSize:"18px"}})},{key:"15",page:"logs",label:"Logs",icon:(0,c.jsx)(ix.Z,{style:{fontSize:"18px"}})},{key:"11",page:"guardrails",label:"Guardrails",icon:(0,c.jsx)(r3.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"26",page:"tools",label:"Tools",icon:(0,c.jsx)(rP.Z,{style:{fontSize:"18px"}}),children:[{key:"18",page:"mcp-servers",label:"MCP Servers",icon:(0,c.jsx)(rP.Z,{style:{fontSize:"18px"}})},{key:"21",page:"vector-stores",label:"Vector Stores",icon:(0,c.jsx)(r5.Z,{style:{fontSize:"18px"}}),roles:eI.ZL}]},{key:"experimental",page:"experimental",label:"Experimental",icon:(0,c.jsx)(ih.Z,{style:{fontSize:"18px"}}),children:[{key:"9",page:"caching",label:"Caching",icon:(0,c.jsx)(r5.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"25",page:"prompts",label:"Prompts",icon:(0,c.jsx)(eh.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"10",page:"budgets",label:"Budgets",icon:(0,c.jsx)(im.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"20",page:"transform-request",label:"API Playground",icon:(0,c.jsx)(lc.Z,{style:{fontSize:"18px"}}),roles:[...eI.ZL,...eI.lo]},{key:"19",page:"tag-management",label:"Tag Management",icon:(0,c.jsx)(r4.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"4",page:"usage",label:"Old Usage",icon:(0,c.jsx)(ic.Z,{style:{fontSize:"18px"}})}]},{key:"settings",page:"settings",label:"Settings",icon:(0,c.jsx)(ip.Z,{style:{fontSize:"18px"}}),roles:eI.ZL,children:[{key:"11",page:"general-settings",label:"Router Settings",icon:(0,c.jsx)(ip.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"8",page:"settings",label:"Logging & Alerts",icon:(0,c.jsx)(ip.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"13",page:"admin-panel",label:"Admin Settings",icon:(0,c.jsx)(ip.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"14",page:"ui-theme",label:"UI Theme",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL}]}],n=(e=>{let s=i.find(s=>s.page===e);if(s)return s.key;for(let s of i)if(s.children){let t=s.children.find(s=>s.page===e);if(t)return t.key}return"1"})(a),o=i.filter(e=>{let s=!e.roles||e.roles.includes(l);return console.log("Menu item ".concat(e.label,": roles=").concat(e.roles,", userRole=").concat(l,", hasAccess=").concat(s)),!!s&&(e.children&&(e.children=e.children.filter(e=>!e.roles||e.roles.includes(l))),!0)});return(0,c.jsx)(ia.default,{style:{minHeight:"100vh"},children:(0,c.jsxs)(ik,{theme:"light",width:220,collapsed:r,collapsedWidth:80,collapsible:!0,trigger:null,style:{transition:"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",position:"relative"},children:[(0,c.jsx)(iw.ZP,{theme:{components:{Menu:{iconSize:18,fontSize:14}}},children:(0,c.jsx)(ir.Z,{mode:"inline",selectedKeys:[n],defaultOpenKeys:r?[]:["llm-tools"],inlineCollapsed:r,className:"custom-sidebar-menu",style:{borderRight:0,backgroundColor:"transparent",fontSize:"14px"},items:o.map(e=>{var s;return{key:e.key,icon:e.icon,label:e.label,children:null===(s=e.children)||void 0===s?void 0:s.map(e=>({key:e.key,icon:e.icon,label:e.label,onClick:()=>{let s=new URLSearchParams(window.location.search);s.set("page",e.page),window.history.pushState(null,"","?".concat(s.toString())),t(e.page)}})),onClick:e.children?void 0:()=>{let s=new URLSearchParams(window.location.search);s.set("page",e.page),window.history.pushState(null,"","?".concat(s.toString())),t(e.page)}}})})}),(0,eI.tY)(l)&&!r&&(0,c.jsx)(iZ,{accessToken:s,width:220})]})})},iC=t(96889),iI=t(92414),iA=t(46030);console.log("process.env.NODE_ENV","production");let iT=e=>null!==e&&("Admin"===e||"Admin Viewer"===e);var iE=e=>{let{accessToken:s,token:t,userRole:l,userID:a,keys:r,premiumUser:i}=e,n=new Date,[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)([]),[_,N]=(0,d.useState)([]),[Z,w]=(0,d.useState)([]),[C,I]=(0,d.useState)([]),[A,T]=(0,d.useState)([]),[E,L]=(0,d.useState)([]),[P,M]=(0,d.useState)([]),[O,D]=(0,d.useState)({}),[F,R]=(0,d.useState)([]),[z,U]=(0,d.useState)(""),[q,V]=(0,d.useState)(["all-tags"]),[B,K]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[H,Y]=(0,d.useState)(null),[J,W]=(0,d.useState)(0),$=new Date(n.getFullYear(),n.getMonth(),1),Q=new Date(n.getFullYear(),n.getMonth()+1,0),X=er($),ee=er(Q);function es(e){return new Intl.NumberFormat("en-US",{maximumFractionDigits:0,notation:"compact",compactDisplay:"short"}).format(e)}console.log("keys in usage",r),console.log("premium user in usage",i);let et=async()=>{if(s)try{let e=await (0,j.getProxyUISettings)(s);return console.log("usage tab: proxy_settings",e),e}catch(e){console.error("Error fetching proxy settings:",e)}};(0,d.useEffect)(()=>{ea(B.from,B.to)},[B,q]);let el=async(e,t,l)=>{if(!e||!t||!s)return;console.log("uiSelectedKey",l);let a=await (0,j.adminTopEndUsersCall)(s,l,e.toISOString(),t.toISOString());console.log("End user data updated successfully",a),f(a)},ea=async(e,t)=>{if(!e||!t||!s)return;let l=await et();null!=l&&l.DISABLE_EXPENSIVE_DB_QUERIES||(w((await (0,j.tagsSpendLogsCall)(s,e.toISOString(),t.toISOString(),0===q.length?void 0:q)).spend_per_tag),console.log("Tag spend data updated successfully"))};function er(e){let s=e.getFullYear(),t=e.getMonth()+1,l=e.getDate();return"".concat(s,"-").concat(t<10?"0"+t:t,"-").concat(l<10?"0"+l:l)}console.log("Start date is ".concat(X)),console.log("End date is ".concat(ee));let en=async(e,s,t)=>{try{let t=await e();s(t)}catch(e){console.error(t,e)}},eo=(e,s,t,l)=>{let a=[],r=new Date(s),i=e=>{if(e.includes("-"))return e;{let[s,t]=e.split(" ");return new Date(new Date().getFullYear(),new Date("".concat(s," 01 2024")).getMonth(),parseInt(t)).toISOString().split("T")[0]}},n=new Map(e.map(e=>{let s=i(e.date);return[s,{...e,date:s}]}));for(;r<=t;){let e=r.toISOString().split("T")[0];if(n.has(e))a.push(n.get(e));else{let s={date:e,api_requests:0,total_tokens:0};l.forEach(e=>{s[e]||(s[e]=0)}),a.push(s)}r.setDate(r.getDate()+1)}return a},ec=async()=>{if(s)try{let e=await (0,j.adminSpendLogsCall)(s),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0),r=eo(e,l,a,[]),i=Number(r.reduce((e,s)=>e+(s.spend||0),0).toFixed(2));W(i),m(r)}catch(e){console.error("Error fetching overall spend:",e)}},ed=()=>en(()=>s&&t?(0,j.adminspendByProvider)(s,t,X,ee):Promise.reject("No access token or token"),M,"Error fetching provider spend"),em=async()=>{s&&await en(async()=>(await (0,j.adminTopKeysCall)(s)).map(e=>({key:e.api_key.substring(0,10),api_key:e.api_key,key_alias:e.key_alias,spend:Number(e.total_spend.toFixed(2))})),x,"Error fetching top keys")},eu=async()=>{s&&await en(async()=>(await (0,j.adminTopModelsCall)(s)).map(e=>({key:e.model,spend:eP(e.total_spend,2)})),p,"Error fetching top models")},ex=async()=>{s&&await en(async()=>{let e=await (0,j.teamSpendLogsCall)(s),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0);return N(eo(e.daily_spend,l,a,e.teams)),T(e.teams),e.total_spend_per_team.map(e=>({name:e.team_id||"",value:eP(e.total_spend||0,2)}))},L,"Error fetching team spend")},eh=()=>{s&&en(async()=>(await (0,j.allTagNamesCall)(s)).tag_names,I,"Error fetching tag names")},ep=()=>{s&&en(()=>{var e,t;return(0,j.tagsSpendLogsCall)(s,null===(e=B.from)||void 0===e?void 0:e.toISOString(),null===(t=B.to)||void 0===t?void 0:t.toISOString(),void 0)},e=>w(e.spend_per_tag),"Error fetching top tags")},eg=()=>{s&&en(()=>(0,j.adminTopEndUsersCall)(s,null,void 0,void 0),f,"Error fetching top end users")},ej=async()=>{if(s)try{let e=await (0,j.adminGlobalActivity)(s,X,ee),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0),r=eo(e.daily_data||[],l,a,["api_requests","total_tokens"]);D({...e,daily_data:r})}catch(e){console.error("Error fetching global activity:",e)}},ef=async()=>{if(s)try{let e=await (0,j.adminGlobalActivityPerModel)(s,X,ee),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0),r=e.map(e=>({...e,daily_data:eo(e.daily_data||[],l,a,["api_requests","total_tokens"])}));R(r)}catch(e){console.error("Error fetching global activity per model:",e)}};return((0,d.useEffect)(()=>{(async()=>{if(s&&t&&l&&a){let e=await et();e&&(Y(e),null!=e&&e.DISABLE_EXPENSIVE_DB_QUERIES)||(console.log("fetching data - valiue of proxySettings",H),ec(),ed(),em(),eu(),ej(),ef(),iT(l)&&(ex(),eh(),ep(),eg()))}})()},[s,t,l,a,X,ee]),null==H?void 0:H.DISABLE_EXPENSIVE_DB_QUERIES)?(0,c.jsx)("div",{style:{width:"100%"},className:"p-8",children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Database Query Limit Reached"}),(0,c.jsxs)(k.Z,{className:"mt-4",children:["SpendLogs in DB has ",H.NUM_SPEND_LOGS_ROWS," rows.",(0,c.jsx)("br",{}),"Please follow our guide to view usage when SpendLogs has more than 1M rows."]}),(0,c.jsx)(b.Z,{className:"mt-4",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/spending_monitoring",target:"_blank",children:"View Usage Guide"})})]})}):(0,c.jsx)("div",{style:{width:"100%"},className:"p-8",children:(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{className:"mt-2",children:[(0,c.jsx)(e8.Z,{children:"All Up"}),iT(l)?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(e8.Z,{children:"Team Based Usage"}),(0,c.jsx)(e8.Z,{children:"Customer Usage"}),(0,c.jsx)(e8.Z,{children:"Tag Based Usage"})]}):(0,c.jsx)(c.Fragment,{children:(0,c.jsx)("div",{})})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{variant:"solid",className:"mt-1",children:[(0,c.jsx)(e8.Z,{children:"Cost"}),(0,c.jsx)(e8.Z,{children:"Activity"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 h-[100vh] w-full",children:[(0,c.jsxs)(v.Z,{numColSpan:2,children:[(0,c.jsxs)(k.Z,{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content mb-2 mt-2 text-lg",children:["Project Spend ",new Date().toLocaleString("default",{month:"long"})," 1 -"," ",new Date(new Date().getFullYear(),new Date().getMonth()+1,0).getDate()]}),(0,c.jsx)(a0,{userID:a,userRole:l,accessToken:s,userSpend:J,selectedTeam:null,userMaxBudget:null})]}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Monthly Spend"}),(0,c.jsx)(ta.Z,{data:o,index:"date",categories:["spend"],colors:["cyan"],valueFormatter:e=>"$ ".concat(eP(e,2)),yAxisWidth:100,tickGap:5})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)(S.Z,{children:"Top API Keys"}),(0,c.jsx)(a2,{topKeys:u,accessToken:s,userID:a,userRole:l,teams:null,premiumUser:i})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)(S.Z,{children:"Top Models"}),(0,c.jsx)(ta.Z,{className:"mt-4 h-40",data:h,index:"key",categories:["spend"],colors:["cyan"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1,valueFormatter:e=>"$".concat(eP(e,2))})]})}),(0,c.jsx)(v.Z,{numColSpan:1}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{className:"mb-2",children:[(0,c.jsx)(S.Z,{children:"Spend by Provider"}),(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(aW.Z,{className:"mt-4 h-40",variant:"pie",data:P,index:"provider",category:"spend",colors:["cyan"],valueFormatter:e=>"$".concat(eP(e,2))})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(sP.Z,{children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Provider"}),(0,c.jsx)(sF.Z,{children:"Spend"})]})}),(0,c.jsx)(sM.Z,{children:P.map(e=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:e.provider}),(0,c.jsx)(sO.Z,{children:1e-5>parseFloat(e.spend.toFixed(2))?"less than 0.00":eP(e.spend,2)})]},e.provider))})]})})]})})]})})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"All Up"}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sJ.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["API Requests ",es(O.sum_api_requests)]}),(0,c.jsx)(tl.Z,{className:"h-40",data:O.daily_data,valueFormatter:es,index:"date",colors:["cyan"],categories:["api_requests"],onValueChange:e=>console.log(e)})]}),(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sJ.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Tokens ",es(O.sum_total_tokens)]}),(0,c.jsx)(ta.Z,{className:"h-40",data:O.daily_data,valueFormatter:es,index:"date",colors:["cyan"],categories:["total_tokens"],onValueChange:e=>console.log(e)})]})]})]}),(0,c.jsx)(c.Fragment,{children:F.map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:e.model}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sJ.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["API Requests ",es(e.sum_api_requests)]}),(0,c.jsx)(tl.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["cyan"],categories:["api_requests"],valueFormatter:es,onValueChange:e=>console.log(e)})]}),(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sJ.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Tokens ",es(e.sum_total_tokens)]}),(0,c.jsx)(ta.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["cyan"],categories:["total_tokens"],valueFormatter:es,onValueChange:e=>console.log(e)})]})]})]},s))})]})})]})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(v.Z,{numColSpan:2,children:[(0,c.jsxs)(G.Z,{className:"mb-2",children:[(0,c.jsx)(S.Z,{children:"Total Spend Per Team"}),(0,c.jsx)(iC.Z,{data:E})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Daily Spend Per Team"}),(0,c.jsx)(ta.Z,{className:"h-72",data:_,showLegend:!0,index:"date",categories:A,yAxisWidth:80,stack:!0})]})]}),(0,c.jsx)(v.Z,{numColSpan:2})]})}),(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)("p",{className:"mb-2 text-gray-500 italic text-[12px]",children:["Customers of your LLM API calls. Tracked when a `user` param is passed in your LLM calls"," ",(0,c.jsx)("a",{className:"text-blue-500",href:"https://docs.litellm.ai/docs/proxy/users",target:"_blank",children:"docs here"})]}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(tt,{value:B,onValueChange:e=>{K(e),el(e.from,e.to,null)}})}),(0,c.jsxs)(v.Z,{children:[(0,c.jsx)(k.Z,{children:"Select Key"}),(0,c.jsxs)(e3.Z,{defaultValue:"all-keys",children:[(0,c.jsx)(ei.Z,{value:"all-keys",onClick:()=>{el(B.from,B.to,null)},children:"All Keys"},"all-keys"),null==r?void 0:r.map((e,s)=>e&&null!==e.key_alias&&e.key_alias.length>0?(0,c.jsx)(ei.Z,{value:String(s),onClick:()=>{el(B.from,B.to,e.token)},children:e.key_alias},s):null)]})]})]}),(0,c.jsx)(G.Z,{className:"mt-4",children:(0,c.jsxs)(sP.Z,{className:"max-h-[70vh] min-h-[500px]",children:[(0,c.jsx)(sD.Z,{children:(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sF.Z,{children:"Customer"}),(0,c.jsx)(sF.Z,{children:"Spend"}),(0,c.jsx)(sF.Z,{children:"Total Events"})]})}),(0,c.jsx)(sM.Z,{children:null==g?void 0:g.map((e,s)=>(0,c.jsxs)(sR.Z,{children:[(0,c.jsx)(sO.Z,{children:e.end_user}),(0,c.jsx)(sO.Z,{children:eP(e.total_spend,2)}),(0,c.jsx)(sO.Z,{children:e.total_count})]},s))})]})})]}),(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(tt,{className:"mb-4",value:B,onValueChange:e=>{K(e),ea(e.from,e.to)}})}),(0,c.jsx)(v.Z,{children:i?(0,c.jsx)("div",{children:(0,c.jsxs)(iI.Z,{value:q,onValueChange:e=>V(e),children:[(0,c.jsx)(iA.Z,{value:"all-tags",onClick:()=>V(["all-tags"]),children:"All Tags"},"all-tags"),C&&C.filter(e=>"all-tags"!==e).map((e,s)=>(0,c.jsx)(iA.Z,{value:String(e),children:e},e))]})}):(0,c.jsx)("div",{children:(0,c.jsxs)(iI.Z,{value:q,onValueChange:e=>V(e),children:[(0,c.jsx)(iA.Z,{value:"all-tags",onClick:()=>V(["all-tags"]),children:"All Tags"},"all-tags"),C&&C.filter(e=>"all-tags"!==e).map((e,s)=>(0,c.jsxs)(ei.Z,{value:String(e),disabled:!0,children:["✨ ",e," (Enterprise only Feature)"]},e))]})})})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 h-[75vh] w-full mb-4",children:[(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Spend Per Tag"}),(0,c.jsxs)(k.Z,{children:["Get Started by Tracking cost per tag"," ",(0,c.jsx)("a",{className:"text-blue-500",href:"https://docs.litellm.ai/docs/proxy/cost_tracking",target:"_blank",children:"here"})]}),(0,c.jsx)(ta.Z,{className:"h-72",data:Z,index:"name",categories:["spend"],colors:["cyan"]})]})}),(0,c.jsx)(v.Z,{numColSpan:2})]})]})]})]})})},iL=t(51853);let iP=e=>{let{responseTimeMs:s}=e;return null==s?null:(0,c.jsxs)("div",{className:"flex items-center space-x-1 text-xs text-gray-500 font-mono",children:[(0,c.jsx)("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{d:"M12 6V12L16 14M12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2Z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),(0,c.jsxs)("span",{children:[s.toFixed(0),"ms"]})]})},iM=e=>{let s=e;if("string"==typeof s)try{s=JSON.parse(s)}catch(e){}return s},iO=e=>{let{label:s,value:t}=e,[l,a]=d.useState(!1),[r,i]=d.useState(!1),n=(null==t?void 0:t.toString())||"N/A",o=n.length>50?n.substring(0,50)+"...":n;return(0,c.jsx)("tr",{className:"hover:bg-gray-50",children:(0,c.jsx)("td",{className:"px-4 py-2 align-top",colSpan:2,children:(0,c.jsxs)("div",{className:"flex items-center justify-between group",children:[(0,c.jsxs)("div",{className:"flex items-center flex-1",children:[(0,c.jsx)("button",{onClick:()=>a(!l),className:"text-gray-400 hover:text-gray-600 mr-2",children:l?"▼":"▶"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-sm text-gray-600",children:s}),(0,c.jsx)("pre",{className:"mt-1 text-sm font-mono text-gray-800 whitespace-pre-wrap",children:l?n:o})]})]}),(0,c.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(n),i(!0),setTimeout(()=>i(!1),2e3)},className:"opacity-0 group-hover:opacity-100 text-gray-400 hover:text-gray-600",children:(0,c.jsx)(iL.Z,{className:"h-4 w-4"})})]})})})},iD=e=>{var s,t,l,a,r,i,n,o,d,m,u,x,h,p;let{response:g}=e,j=null,f={},v={};try{if(null==g?void 0:g.error)try{let e="string"==typeof g.error.message?JSON.parse(g.error.message):g.error.message;j={message:(null==e?void 0:e.message)||"Unknown error",traceback:(null==e?void 0:e.traceback)||"No traceback available",litellm_params:(null==e?void 0:e.litellm_cache_params)||{},health_check_cache_params:(null==e?void 0:e.health_check_cache_params)||{}},f=iM(j.litellm_params)||{},v=iM(j.health_check_cache_params)||{}}catch(e){console.warn("Error parsing error details:",e),j={message:String(g.error.message||"Unknown error"),traceback:"Error parsing details",litellm_params:{},health_check_cache_params:{}}}else f=iM(null==g?void 0:g.litellm_cache_params)||{},v=iM(null==g?void 0:g.health_check_cache_params)||{}}catch(e){console.warn("Error in response parsing:",e),f={},v={}}let y={redis_host:(null==v?void 0:null===(l=v.redis_client)||void 0===l?void 0:null===(t=l.connection_pool)||void 0===t?void 0:null===(s=t.connection_kwargs)||void 0===s?void 0:s.host)||(null==v?void 0:null===(i=v.redis_async_client)||void 0===i?void 0:null===(r=i.connection_pool)||void 0===r?void 0:null===(a=r.connection_kwargs)||void 0===a?void 0:a.host)||(null==v?void 0:null===(n=v.connection_kwargs)||void 0===n?void 0:n.host)||(null==v?void 0:v.host)||"N/A",redis_port:(null==v?void 0:null===(m=v.redis_client)||void 0===m?void 0:null===(d=m.connection_pool)||void 0===d?void 0:null===(o=d.connection_kwargs)||void 0===o?void 0:o.port)||(null==v?void 0:null===(h=v.redis_async_client)||void 0===h?void 0:null===(x=h.connection_pool)||void 0===x?void 0:null===(u=x.connection_kwargs)||void 0===u?void 0:u.port)||(null==v?void 0:null===(p=v.connection_kwargs)||void 0===p?void 0:p.port)||(null==v?void 0:v.port)||"N/A",redis_version:(null==v?void 0:v.redis_version)||"N/A",startup_nodes:(()=>{try{var e,s,t,l,a,r,i,n,o,c,d,m,u;if(null==v?void 0:null===(e=v.redis_kwargs)||void 0===e?void 0:e.startup_nodes)return JSON.stringify(v.redis_kwargs.startup_nodes);let x=(null==v?void 0:null===(l=v.redis_client)||void 0===l?void 0:null===(t=l.connection_pool)||void 0===t?void 0:null===(s=t.connection_kwargs)||void 0===s?void 0:s.host)||(null==v?void 0:null===(i=v.redis_async_client)||void 0===i?void 0:null===(r=i.connection_pool)||void 0===r?void 0:null===(a=r.connection_kwargs)||void 0===a?void 0:a.host),h=(null==v?void 0:null===(c=v.redis_client)||void 0===c?void 0:null===(o=c.connection_pool)||void 0===o?void 0:null===(n=o.connection_kwargs)||void 0===n?void 0:n.port)||(null==v?void 0:null===(u=v.redis_async_client)||void 0===u?void 0:null===(m=u.connection_pool)||void 0===m?void 0:null===(d=m.connection_kwargs)||void 0===d?void 0:d.port);return x&&h?JSON.stringify([{host:x,port:h}]):"N/A"}catch(e){return"N/A"}})(),namespace:(null==v?void 0:v.namespace)||"N/A"};return(0,c.jsx)("div",{className:"bg-white rounded-lg shadow",children:(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{className:"border-b border-gray-200 px-4",children:[(0,c.jsx)(e8.Z,{className:"px-4 py-2 text-sm font-medium text-gray-600 hover:text-gray-800",children:"Summary"}),(0,c.jsx)(e8.Z,{className:"px-4 py-2 text-sm font-medium text-gray-600 hover:text-gray-800",children:"Raw Response"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{className:"p-4",children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-6",children:[(null==g?void 0:g.status)==="healthy"?(0,c.jsx)(eb.Z,{className:"h-5 w-5 text-green-500 mr-2"}):(0,c.jsx)(ey.Z,{className:"h-5 w-5 text-red-500 mr-2"}),(0,c.jsxs)(k.Z,{className:"text-sm font-medium ".concat((null==g?void 0:g.status)==="healthy"?"text-green-500":"text-red-500"),children:["Cache Status: ",(null==g?void 0:g.status)||"unhealthy"]})]}),(0,c.jsx)("table",{className:"w-full border-collapse",children:(0,c.jsxs)("tbody",{children:[j&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("tr",{children:(0,c.jsx)("td",{colSpan:2,className:"pt-4 pb-2 font-semibold text-red-600",children:"Error Details"})}),(0,c.jsx)(iO,{label:"Error Message",value:j.message}),(0,c.jsx)(iO,{label:"Traceback",value:j.traceback})]}),(0,c.jsx)("tr",{children:(0,c.jsx)("td",{colSpan:2,className:"pt-4 pb-2 font-semibold",children:"Cache Details"})}),(0,c.jsx)(iO,{label:"Cache Configuration",value:String(null==f?void 0:f.type)}),(0,c.jsx)(iO,{label:"Ping Response",value:String(g.ping_response)}),(0,c.jsx)(iO,{label:"Set Cache Response",value:g.set_cache_response||"N/A"}),(0,c.jsx)(iO,{label:"litellm_settings.cache_params",value:JSON.stringify(f,null,2)}),(null==f?void 0:f.type)==="redis"&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("tr",{children:(0,c.jsx)("td",{colSpan:2,className:"pt-4 pb-2 font-semibold",children:"Redis Details"})}),(0,c.jsx)(iO,{label:"Redis Host",value:y.redis_host||"N/A"}),(0,c.jsx)(iO,{label:"Redis Port",value:y.redis_port||"N/A"}),(0,c.jsx)(iO,{label:"Redis Version",value:y.redis_version||"N/A"}),(0,c.jsx)(iO,{label:"Startup Nodes",value:y.startup_nodes||"N/A"}),(0,c.jsx)(iO,{label:"Namespace",value:y.namespace||"N/A"})]})]})})]})}),(0,c.jsx)(se.Z,{className:"p-4",children:(0,c.jsx)("div",{className:"bg-gray-50 rounded-md p-4 font-mono text-sm",children:(0,c.jsx)("pre",{className:"whitespace-pre-wrap break-words overflow-auto max-h-[500px]",children:(()=>{try{let e={...g,litellm_cache_params:f,health_check_cache_params:v},s=JSON.parse(JSON.stringify(e,(e,s)=>{if("string"==typeof s)try{return JSON.parse(s)}catch(e){}return s}));return JSON.stringify(s,null,2)}catch(e){return"Error formatting JSON: "+e.message}})()})})})]})]})})},iF=e=>{let{accessToken:s,healthCheckResponse:t,runCachingHealthCheck:l,responseTimeMs:a}=e,[r,i]=d.useState(null),[n,o]=d.useState(!1),m=async()=>{o(!0);let e=performance.now();await l(),i(performance.now()-e),o(!1)};return(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)(b.Z,{onClick:m,disabled:n,className:"bg-indigo-600 hover:bg-indigo-700 disabled:bg-indigo-400 text-white text-sm px-4 py-2 rounded-md",children:n?"Running Health Check...":"Run Health Check"}),(0,c.jsx)(iP,{responseTimeMs:r})]}),t&&(0,c.jsx)(iD,{response:t})]})},iR=e=>{if(e)return e.toISOString().split("T")[0]};function iz(e){return new Intl.NumberFormat("en-US",{maximumFractionDigits:0,notation:"compact",compactDisplay:"short"}).format(e)}var iU=e=>{let{accessToken:s,token:t,userRole:l,userID:a,premiumUser:r}=e,[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)("0"),[b,_]=(0,d.useState)("0"),[N,Z]=(0,d.useState)("0"),[w,S]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[C,I]=(0,d.useState)(""),[A,T]=(0,d.useState)("");(0,d.useEffect)(()=>{s&&w&&((async()=>{p(await (0,j.adminGlobalCacheActivity)(s,iR(w.from),iR(w.to)))})(),I(new Date().toLocaleString()))},[s]);let E=Array.from(new Set(h.map(e=>{var s;return null!==(s=null==e?void 0:e.api_key)&&void 0!==s?s:""}))),L=Array.from(new Set(h.map(e=>{var s;return null!==(s=null==e?void 0:e.model)&&void 0!==s?s:""})));Array.from(new Set(h.map(e=>{var s;return null!==(s=null==e?void 0:e.call_type)&&void 0!==s?s:""})));let P=async(e,t)=>{e&&t&&s&&p(await (0,j.adminGlobalCacheActivity)(s,iR(e),iR(t)))};(0,d.useEffect)(()=>{console.log("DATA IN CACHE DASHBOARD",h);let e=h;o.length>0&&(e=e.filter(e=>o.includes(e.api_key))),u.length>0&&(e=e.filter(e=>u.includes(e.model))),console.log("before processed data in cache dashboard",e);let s=0,t=0,l=0,a=e.reduce((e,a)=>{console.log("Processing item:",a),a.call_type||(console.log("Item has no call_type:",a),a.call_type="Unknown"),s+=(a.total_rows||0)-(a.cache_hit_true_rows||0),t+=a.cache_hit_true_rows||0,l+=a.cached_completion_tokens||0;let r=e.find(e=>e.name===a.call_type);return r?(r["LLM API requests"]+=(a.total_rows||0)-(a.cache_hit_true_rows||0),r["Cache hit"]+=a.cache_hit_true_rows||0,r["Cached Completion Tokens"]+=a.cached_completion_tokens||0,r["Generated Completion Tokens"]+=a.generated_completion_tokens||0):e.push({name:a.call_type,"LLM API requests":(a.total_rows||0)-(a.cache_hit_true_rows||0),"Cache hit":a.cache_hit_true_rows||0,"Cached Completion Tokens":a.cached_completion_tokens||0,"Generated Completion Tokens":a.generated_completion_tokens||0}),e},[]);f(iz(t)),_(iz(l));let r=t+s;r>0?Z((t/r*100).toFixed(2)):Z("0"),n(a),console.log("PROCESSED DATA IN CACHE DASHBOARD",a)},[o,u,w,h]);let M=async()=>{try{eo.Z.info("Running cache health check..."),T("");let e=await (0,j.cachingHealthCheckCall)(null!==s?s:"");console.log("CACHING HEALTH CHECK RESPONSE",e),T(e)}catch(s){let e;if(console.error("Error running health check:",s),s&&s.message)try{let t=JSON.parse(s.message);t.error&&(t=t.error),e=t}catch(t){e={message:s.message}}else e={message:"Unknown error occurred"};T({error:e})}};return(0,c.jsxs)(e7.Z,{className:"gap-2 p-8 h-full w-full mt-2 mb-8",children:[(0,c.jsxs)(e9.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(e8.Z,{children:"Cache Analytics"}),(0,c.jsx)(e8.Z,{children:(0,c.jsx)("pre",{children:"Cache Health"})})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[C&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",C]}),(0,c.jsx)(sL.Z,{icon:sl.Z,variant:"shadow",size:"xs",className:"self-center",onClick:()=>{I(new Date().toLocaleString())}})]})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(y.Z,{numItems:3,className:"gap-4 mt-4",children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(iI.Z,{placeholder:"Select API Keys",value:o,onValueChange:m,children:E.map(e=>(0,c.jsx)(iA.Z,{value:e,children:e},e))})}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(iI.Z,{placeholder:"Select Models",value:u,onValueChange:x,children:L.map(e=>(0,c.jsx)(iA.Z,{value:e,children:e},e))})}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(tt,{value:w,onValueChange:e=>{S(e),P(e.from,e.to)}})})]}),(0,c.jsxs)("div",{className:"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3 mt-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("p",{className:"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content",children:"Cache Hit Ratio"}),(0,c.jsx)("div",{className:"mt-2 flex items-baseline space-x-2.5",children:(0,c.jsxs)("p",{className:"text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong",children:[N,"%"]})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("p",{className:"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content",children:"Cache Hits"}),(0,c.jsx)("div",{className:"mt-2 flex items-baseline space-x-2.5",children:(0,c.jsx)("p",{className:"text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong",children:g})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("p",{className:"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content",children:"Cached Tokens"}),(0,c.jsx)("div",{className:"mt-2 flex items-baseline space-x-2.5",children:(0,c.jsx)("p",{className:"text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong",children:b})})]})]}),(0,c.jsx)(sJ.Z,{className:"mt-4",children:"Cache Hits vs API Requests"}),(0,c.jsx)(ta.Z,{title:"Cache Hits vs API Requests",data:i,stack:!0,index:"name",valueFormatter:iz,categories:["LLM API requests","Cache hit"],colors:["sky","teal"],yAxisWidth:48}),(0,c.jsx)(sJ.Z,{className:"mt-4",children:"Cached Completion Tokens vs Generated Completion Tokens"}),(0,c.jsx)(ta.Z,{className:"mt-6",data:i,stack:!0,index:"name",valueFormatter:iz,categories:["Generated Completion Tokens","Cached Completion Tokens"],colors:["sky","teal"],yAxisWidth:48})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(iF,{accessToken:s,healthCheckResponse:A,runCachingHealthCheck:M})})]})]})},iq=t(91810);(a=n||(n={})).PresidioPII="Presidio PII",a.Bedrock="Bedrock Guardrail",a.Lakera="Lakera";let iV={},iB=e=>{let s={};return s.PresidioPII="Presidio PII",s.Bedrock="Bedrock Guardrail",s.Lakera="Lakera",Object.entries(e).forEach(e=>{let[t,l]=e;l&&"object"==typeof l&&"ui_friendly_name"in l&&(s[t.split("_").map((e,s)=>e.charAt(0).toUpperCase()+e.slice(1)).join("")]=l.ui_friendly_name)}),iV=s,s},iK=()=>Object.keys(iV).length>0?iV:n,iG={PresidioPII:"presidio",Bedrock:"bedrock",Lakera:"lakera_v2"},iH=e=>{Object.entries(e).forEach(e=>{let[s,t]=e;t&&"object"==typeof t&&"ui_friendly_name"in t&&(iG[s.split("_").map((e,s)=>e.charAt(0).toUpperCase()+e.slice(1)).join("")]=s)})},iY=e=>!!e&&"Presidio PII"===iK()[e],iJ="../ui/assets/logos/",iW={"Presidio PII":"".concat(iJ,"presidio.png"),"Bedrock Guardrail":"".concat(iJ,"bedrock.svg"),Lakera:"".concat(iJ,"lakeraai.jpeg"),"Azure Content Safety Prompt Shield":"".concat(iJ,"presidio.png"),"Azure Content Safety Text Moderation":"".concat(iJ,"presidio.png")},i$=e=>{if(!e)return{logo:"",displayName:"-"};let s=Object.keys(iG).find(s=>iG[s].toLowerCase()===e.toLowerCase());if(!s)return{logo:"",displayName:e};let t=iK()[s];return{logo:iW[t]||"",displayName:t||e}};var iQ=t(33866),iX=t(97416),i0=t(10798),i1=t(49638);let{Text:i2}=en.default,{Option:i4}=I.default,i5=e=>e.replace(/_/g," "),i3=e=>{switch(e){case"MASK":return(0,c.jsx)(iX.Z,{style:{marginRight:4}});case"BLOCK":return(0,c.jsx)(le.Z,{style:{marginRight:4}});default:return null}},i6=e=>{let{categories:s,selectedCategories:t,onChange:l}=e;return(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-2",children:[(0,c.jsx)(i0.Z,{className:"text-gray-500 mr-1"}),(0,c.jsx)(i2,{className:"text-gray-500 font-medium",children:"Filter by category"})]}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select categories to filter by",style:{width:"100%"},onChange:l,value:t,allowClear:!0,showSearch:!0,optionFilterProp:"children",className:"mb-4",tagRender:e=>(0,c.jsx)(t7.Z,{color:"blue",closable:e.closable,onClose:e.onClose,className:"mr-2 mb-2",children:e.label}),children:s.map(e=>(0,c.jsx)(i4,{value:e.category,children:e.category},e.category))})]})},i8=e=>{let{onSelectAll:s,onUnselectAll:t,hasSelectedEntities:l}=e;return(0,c.jsxs)("div",{className:"bg-gray-50 p-5 rounded-lg mb-6 border border-gray-200 shadow-sm",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(i2,{strong:!0,className:"text-gray-700 text-base",children:"Quick Actions"}),(0,c.jsx)(B.Z,{title:"Apply action to all PII types at once",children:(0,c.jsx)("div",{className:"ml-2 text-gray-400 cursor-help text-xs",children:"ⓘ"})})]}),(0,c.jsx)(L.ZP,{type:"default",onClick:t,disabled:!l,icon:(0,c.jsx)(i1.Z,{}),className:"border-gray-300 hover:text-red-600 hover:border-red-300",children:"Unselect All"})]}),(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsx)(L.ZP,{type:"default",onClick:()=>s("MASK"),className:"flex items-center justify-center h-10 border-blue-200 hover:border-blue-300 hover:text-blue-700 bg-blue-50 hover:bg-blue-100 text-blue-600",block:!0,icon:(0,c.jsx)(iX.Z,{}),children:"Select All & Mask"}),(0,c.jsx)(L.ZP,{type:"default",onClick:()=>s("BLOCK"),className:"flex items-center justify-center h-10 border-red-200 hover:border-red-300 hover:text-red-700 bg-red-50 hover:bg-red-100 text-red-600",block:!0,icon:(0,c.jsx)(le.Z,{}),children:"Select All & Block"})]})]})},i7=e=>{let{entities:s,selectedEntities:t,selectedActions:l,actions:a,onEntitySelect:r,onActionSelect:i,entityToCategoryMap:n}=e;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden shadow-sm",children:[(0,c.jsxs)("div",{className:"bg-gray-50 px-5 py-3 border-b flex",children:[(0,c.jsx)(i2,{strong:!0,className:"flex-1 text-gray-700",children:"PII Type"}),(0,c.jsx)(i2,{strong:!0,className:"w-32 text-right text-gray-700",children:"Action"})]}),(0,c.jsx)("div",{className:"max-h-[400px] overflow-y-auto",children:0===s.length?(0,c.jsx)("div",{className:"py-10 text-center text-gray-500",children:"No PII types match your filter criteria"}):s.map(e=>(0,c.jsxs)("div",{className:"px-5 py-3 flex items-center justify-between hover:bg-gray-50 border-b ".concat(t.includes(e)?"bg-blue-50":""),children:[(0,c.jsxs)("div",{className:"flex items-center flex-1",children:[(0,c.jsx)(tc.Z,{checked:t.includes(e),onChange:()=>r(e),className:"mr-3"}),(0,c.jsx)(i2,{className:t.includes(e)?"font-medium text-gray-900":"text-gray-700",children:i5(e)}),n.get(e)&&(0,c.jsx)(t7.Z,{className:"ml-2 text-xs",color:"blue",children:n.get(e)})]}),(0,c.jsx)("div",{className:"w-32",children:(0,c.jsx)(I.default,{value:t.includes(e)&&l[e]||"MASK",onChange:s=>i(e,s),style:{width:120},disabled:!t.includes(e),className:"".concat(t.includes(e)?"":"opacity-50"),dropdownMatchSelectWidth:!1,children:a.map(e=>(0,c.jsx)(i4,{value:e,children:(0,c.jsxs)("div",{className:"flex items-center",children:[i3(e),e]})},e))})})]},e))})]})},{Title:i9,Text:ne}=en.default;var ns=e=>{let{entities:s,actions:t,selectedEntities:l,selectedActions:a,onEntitySelect:r,onActionSelect:i,entityCategories:n=[]}=e,[o,m]=(0,d.useState)([]),u=new Map;n.forEach(e=>{e.entities.forEach(s=>{u.set(s,e.category)})});let x=s.filter(e=>0===o.length||o.includes(u.get(e)||""));return(0,c.jsxs)("div",{className:"pii-configuration",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-5",children:[(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsx)(i9,{level:4,className:"mb-0 font-semibold text-gray-800",children:"Configure PII Protection"})}),(0,c.jsx)(iQ.Z,{count:l.length,showZero:!0,style:{backgroundColor:l.length>0?"#4f46e5":"#d9d9d9"},overflowCount:999,children:(0,c.jsxs)(ne,{className:"text-gray-500",children:[l.length," items selected"]})})]}),(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(i6,{categories:n,selectedCategories:o,onChange:m}),(0,c.jsx)(i8,{onSelectAll:e=>{s.forEach(s=>{l.includes(s)||r(s),i(s,e)})},onUnselectAll:()=>{l.forEach(e=>{r(e)})},hasSelectedEntities:l.length>0})]}),(0,c.jsx)(i7,{entities:x,selectedEntities:l,selectedActions:a,actions:t,onEntitySelect:r,onActionSelect:i,entityToCategoryMap:u})]})},nt=e=>{var s;let{selectedProvider:t,accessToken:l,providerParams:a=null,value:r=null}=e,[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(a),[u,x]=(0,d.useState)(null);if((0,d.useEffect)(()=>{if(a){m(a);return}let e=async()=>{if(l){n(!0),x(null);try{let e=await (0,j.getGuardrailProviderSpecificParams)(l);console.log("Provider params API response:",e),m(e),iB(e),iH(e)}catch(e){console.error("Error fetching provider params:",e),x("Failed to load provider parameters")}finally{n(!1)}}};a||e()},[l,a]),!t)return null;if(i)return(0,c.jsx)(lO.Z,{tip:"Loading provider parameters..."});if(u)return(0,c.jsx)("div",{className:"text-red-500",children:u});let h=null===(s=iG[t])||void 0===s?void 0:s.toLowerCase(),p=o&&o[h];if(console.log("Provider key:",h),console.log("Provider fields:",p),!p||0===Object.keys(p).length)return(0,c.jsx)("div",{children:"No configuration fields available for this provider."});console.log("Value:",r);let g=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=arguments.length>2?arguments[2]:void 0;return Object.entries(e).map(e=>{let[l,a]=e,i=s?"".concat(s,".").concat(l):l,n=t?t[l]:null==r?void 0:r[l];return(console.log("Field value:",n),"ui_friendly_name"===l||"optional_params"===l&&"nested"===a.type&&a.fields)?null:"nested"===a.type&&a.fields?(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"mb-2 font-medium",children:l}),(0,c.jsx)("div",{className:"ml-4 border-l-2 border-gray-200 pl-4",children:g(a.fields,i,n)})]},i):(0,c.jsx)(A.Z.Item,{name:i,label:l,tooltip:a.description,rules:a.required?[{required:!0,message:"".concat(l," is required")}]:void 0,children:"select"===a.type&&a.options?(0,c.jsx)(I.default,{placeholder:a.description,defaultValue:n||a.default_value,children:a.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"multiselect"===a.type&&a.options?(0,c.jsx)(I.default,{mode:"multiple",placeholder:a.description,defaultValue:n||a.default_value,children:a.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"bool"===a.type||"boolean"===a.type?(0,c.jsxs)(I.default,{placeholder:a.description,defaultValue:void 0!==n?String(n):a.default_value,children:[(0,c.jsx)(I.default.Option,{value:"true",children:"True"}),(0,c.jsx)(I.default.Option,{value:"false",children:"False"})]}):"number"===a.type?(0,c.jsx)(O,{step:1,width:400,placeholder:a.description,defaultValue:void 0!==n?Number(n):void 0}):l.includes("password")||l.includes("secret")||l.includes("key")?(0,c.jsx)(eG.o,{placeholder:a.description,type:"password",defaultValue:n||""}):(0,c.jsx)(eG.o,{placeholder:a.description,type:"text",defaultValue:n||""})},i)})};return(0,c.jsx)(c.Fragment,{children:g(p)})};let{Title:nl}=en.default,na=e=>{let{field:s,fieldKey:t,fullFieldKey:l,value:a}=e,[r,i]=d.useState([]),[n,o]=d.useState(s.dict_key_options||[]);d.useEffect(()=>{if(a&&"object"==typeof a){let e=Object.keys(a);i(e.map(e=>({key:e,id:"".concat(e,"_").concat(Date.now(),"_").concat(Math.random())}))),o((s.dict_key_options||[]).filter(s=>!e.includes(s)))}},[a,s.dict_key_options]);let m=e=>{e&&(i([...r,{key:e,id:"".concat(e,"_").concat(Date.now())}]),o(n.filter(s=>s!==e)))},u=(e,s)=>{i(r.filter(s=>s.id!==e)),o([...n,s].sort())};return(0,c.jsxs)("div",{className:"space-y-3",children:[r.map(e=>(0,c.jsxs)("div",{className:"flex items-center space-x-3 p-3 border rounded-lg",children:[(0,c.jsx)("div",{className:"w-24 font-medium text-sm",children:e.key}),(0,c.jsx)("div",{className:"flex-1",children:(0,c.jsx)(A.Z.Item,{name:Array.isArray(l)?[...l,e.key]:[l,e.key],style:{marginBottom:0},initialValue:a&&"object"==typeof a?a[e.key]:void 0,normalize:"number"===s.dict_value_type?e=>{if(null==e||""===e)return;let s=Number(e);return isNaN(s)?e:s}:void 0,children:"number"===s.dict_value_type?(0,c.jsx)(O,{step:1,width:200,placeholder:"Enter ".concat(e.key," value")}):"boolean"===s.dict_value_type?(0,c.jsxs)(I.default,{placeholder:"Select ".concat(e.key," value"),children:[(0,c.jsx)(I.default.Option,{value:!0,children:"True"}),(0,c.jsx)(I.default.Option,{value:!1,children:"False"})]}):(0,c.jsx)(eG.o,{placeholder:"Enter ".concat(e.key," value"),type:"text"})})}),(0,c.jsx)("button",{type:"button",className:"text-red-500 hover:text-red-700 text-sm",onClick:()=>u(e.id,e.key),children:"Remove"})]},e.id)),n.length>0&&(0,c.jsxs)("div",{className:"flex items-center space-x-3 mt-2",children:[(0,c.jsx)(I.default,{placeholder:"Select category to configure",style:{width:200},onSelect:e=>e&&m(e),value:void 0,children:n.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}),(0,c.jsx)("span",{className:"text-sm text-gray-500",children:"Select a category to add threshold configuration"})]})]})};var nr=e=>{let{optionalParams:s,parentFieldKey:t,values:l}=e,a=(e,s)=>{let a="".concat(t,".").concat(e),r=null==l?void 0:l[e];return(console.log("value",r),"dict"===s.type&&s.dict_key_options)?(0,c.jsxs)("div",{className:"mb-8 p-6 bg-gray-50 rounded-lg border border-gray-200",children:[(0,c.jsx)("div",{className:"mb-4 font-medium text-gray-900 text-base",children:e}),(0,c.jsx)("p",{className:"text-sm text-gray-600 mb-4",children:s.description}),(0,c.jsx)(na,{field:s,fieldKey:e,fullFieldKey:[t,e],value:r})]},a):(0,c.jsx)("div",{className:"mb-8 p-6 bg-white rounded-lg border border-gray-200 shadow-sm",children:(0,c.jsx)(A.Z.Item,{name:[t,e],label:(0,c.jsxs)("div",{className:"mb-2",children:[(0,c.jsx)("div",{className:"font-medium text-gray-900 text-base",children:e}),(0,c.jsx)("p",{className:"text-sm text-gray-600 mt-1",children:s.description})]}),rules:s.required?[{required:!0,message:"".concat(e," is required")}]:void 0,className:"mb-0",initialValue:void 0!==r?r:s.default_value,normalize:"number"===s.type?e=>{if(null==e||""===e)return;let s=Number(e);return isNaN(s)?e:s}:void 0,children:"select"===s.type&&s.options?(0,c.jsx)(I.default,{placeholder:s.description,children:s.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"multiselect"===s.type&&s.options?(0,c.jsx)(I.default,{mode:"multiple",placeholder:s.description,children:s.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"bool"===s.type||"boolean"===s.type?(0,c.jsxs)(I.default,{placeholder:s.description,children:[(0,c.jsx)(I.default.Option,{value:"true",children:"True"}),(0,c.jsx)(I.default.Option,{value:"false",children:"False"})]}):"number"===s.type?(0,c.jsx)(O,{step:1,width:400,placeholder:s.description}):e.includes("password")||e.includes("secret")||e.includes("key")?(0,c.jsx)(eG.o,{placeholder:s.description,type:"password"}):(0,c.jsx)(eG.o,{placeholder:s.description,type:"text"})})},a)};return s.fields&&0!==Object.keys(s.fields).length?(0,c.jsxs)("div",{className:"guardrail-optional-params",children:[(0,c.jsxs)("div",{className:"mb-8 pb-4 border-b border-gray-100",children:[(0,c.jsx)(nl,{level:3,className:"mb-2 font-semibold text-gray-900",children:"Optional Parameters"}),(0,c.jsx)("p",{className:"text-gray-600 text-sm",children:s.description||"Configure additional settings for this guardrail provider"})]}),(0,c.jsx)("div",{className:"space-y-8",children:Object.entries(s.fields).map(e=>{let[s,t]=e;return a(s,t)})})]}):null};let{Title:ni,Text:nn,Link:no}=en.default,{Option:nc}=I.default,{Step:nd}=iq.default,nm={pre_call:"Before LLM Call - Runs before the LLM call and checks the input (Recommended)",during_call:"During LLM Call - Runs in parallel with the LLM call, with response held until check completes",post_call:"After LLM Call - Runs after the LLM call and checks only the output",logging_only:"Logging Only - Only runs on logging callbacks without affecting the LLM call",pre_mcp_call:"Before MCP Tool Call - Runs before MCP tool execution and validates tool calls",during_mcp_call:"During MCP Tool Call - Runs in parallel with MCP tool execution for monitoring"};var nu=e=>{let{visible:s,onClose:t,accessToken:l,onSuccess:a}=e,[r]=A.Z.useForm(),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(null),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)({}),[v,y]=(0,d.useState)(0),[N,Z]=(0,d.useState)(null),[w,k]=(0,d.useState)([]),[S,C]=(0,d.useState)(2),[E,L]=(0,d.useState)({});(0,d.useEffect)(()=>{l&&(async()=>{try{let[e,s]=await Promise.all([(0,j.getGuardrailUISettings)(l),(0,j.getGuardrailProviderSpecificParams)(l)]);x(e),Z(s),iB(s),iH(s)}catch(e){console.error("Error fetching guardrail data:",e),eo.Z.fromBackend("Failed to load guardrail configuration")}})()},[l]);let P=e=>{m(e),r.setFieldsValue({config:void 0,presidio_analyzer_api_base:void 0,presidio_anonymizer_api_base:void 0}),p([]),f({}),k([]),C(2),L({})},M=e=>{p(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},O=(e,s)=>{f(t=>({...t,[e]:s}))},D=async()=>{try{if(0===v&&(await r.validateFields(["guardrail_name","provider","mode","default_on"]),o)){let e=["guardrail_name","provider","mode","default_on"];"PresidioPII"===o&&e.push("presidio_analyzer_api_base","presidio_anonymizer_api_base"),await r.validateFields(e)}if(1===v&&iY(o)&&0===h.length){eo.Z.fromBackend("Please select at least one PII entity to continue");return}y(v+1)}catch(e){console.error("Form validation failed:",e)}},F=()=>{r.resetFields(),m(null),p([]),f({}),k([]),C(2),L({}),y(0)},R=()=>{F(),t()},z=async()=>{try{n(!0),await r.validateFields();let s=r.getFieldsValue(!0),i=iG[s.provider],c={guardrail_name:s.guardrail_name,litellm_params:{guardrail:i,mode:s.mode,default_on:s.default_on},guardrail_info:{}};if("PresidioPII"===s.provider&&h.length>0){let e={};h.forEach(s=>{e[s]=g[s]||"MASK"}),c.litellm_params.pii_entities_config=e,s.presidio_analyzer_api_base&&(c.litellm_params.presidio_analyzer_api_base=s.presidio_analyzer_api_base),s.presidio_anonymizer_api_base&&(c.litellm_params.presidio_anonymizer_api_base=s.presidio_anonymizer_api_base)}else if(s.config)try{let e=JSON.parse(s.config);c.guardrail_info=e}catch(e){eo.Z.fromBackend("Invalid JSON in configuration"),n(!1);return}if(console.log("values: ",JSON.stringify(s)),N&&o){var e;let t=null===(e=iG[o])||void 0===e?void 0:e.toLowerCase();console.log("providerKey: ",t);let l=N[t]||{},a=new Set;console.log("providerSpecificParams: ",JSON.stringify(l)),Object.keys(l).forEach(e=>{"optional_params"!==e&&a.add(e)}),l.optional_params&&l.optional_params.fields&&Object.keys(l.optional_params.fields).forEach(e=>{a.add(e)}),console.log("allowedParams: ",a),a.forEach(e=>{let t=s[e];if(null==t||""===t){var l;t=null===(l=s.optional_params)||void 0===l?void 0:l[e]}null!=t&&""!==t&&(c.litellm_params[e]=t)})}if(!l)throw Error("No access token available");console.log("Sending guardrail data:",JSON.stringify(c)),await (0,j.createGuardrailCall)(l,c),eo.Z.success("Guardrail created successfully"),F(),a(),t()}catch(e){console.error("Failed to create guardrail:",e),eo.Z.fromBackend("Failed to create guardrail: "+(e instanceof Error?e.message:String(e)))}finally{n(!1)}},U=()=>{var e;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{name:"guardrail_name",label:"Guardrail Name",rules:[{required:!0,message:"Please enter a guardrail name"}],children:(0,c.jsx)(_.Z,{placeholder:"Enter a name for this guardrail"})}),(0,c.jsx)(A.Z.Item,{name:"provider",label:"Guardrail Provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,c.jsx)(I.default,{placeholder:"Select a guardrail provider",onChange:P,labelInValue:!1,optionLabelProp:"label",dropdownRender:e=>e,showSearch:!0,children:Object.entries(iK()).map(e=>{let[s,t]=e;return(0,c.jsx)(nc,{value:s,label:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[iW[t]&&(0,c.jsx)("img",{src:iW[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,c.jsx)("span",{children:t})]}),children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[iW[t]&&(0,c.jsx)("img",{src:iW[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(A.Z.Item,{name:"mode",label:"Mode",tooltip:"How the guardrail should be applied",rules:[{required:!0,message:"Please select a mode"}],children:(0,c.jsx)(I.default,{optionLabelProp:"label",mode:"multiple",children:(null==u?void 0:null===(e=u.supported_modes)||void 0===e?void 0:e.map(e=>(0,c.jsx)(nc,{value:e,label:e,children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:e}),"pre_call"===e&&(0,c.jsx)(t7.Z,{color:"green",style:{marginLeft:"8px"},children:"Recommended"})]}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nm[e]})]})},e)))||(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(nc,{value:"pre_call",label:"pre_call",children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"pre_call"})," ",(0,c.jsx)(t7.Z,{color:"green",children:"Recommended"})]}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nm.pre_call})]})}),(0,c.jsx)(nc,{value:"during_call",label:"during_call",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{children:(0,c.jsx)("strong",{children:"during_call"})}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nm.during_call})]})}),(0,c.jsx)(nc,{value:"post_call",label:"post_call",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{children:(0,c.jsx)("strong",{children:"post_call"})}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nm.post_call})]})}),(0,c.jsx)(nc,{value:"logging_only",label:"logging_only",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{children:(0,c.jsx)("strong",{children:"logging_only"})}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nm.logging_only})]})})]})})}),(0,c.jsx)(A.Z.Item,{name:"default_on",label:"Always On",tooltip:"If enabled, this guardrail will be applied to all requests by default.",children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:!0,children:"Yes"}),(0,c.jsx)(I.default.Option,{value:!1,children:"No"})]})}),(0,c.jsx)(nt,{selectedProvider:o,accessToken:l,providerParams:N})]})},q=()=>u&&"PresidioPII"===o?(0,c.jsx)(ns,{entities:u.supported_entities,actions:u.supported_actions,selectedEntities:h,selectedActions:g,onEntitySelect:M,onActionSelect:O,entityCategories:u.pii_entity_categories}):null,V=()=>{var e;if(!o||!N)return null;console.log("guardrail_provider_map: ",iG),console.log("selectedProvider: ",o);let s=null===(e=iG[o])||void 0===e?void 0:e.toLowerCase(),t=N&&N[s];return t&&t.optional_params?(0,c.jsx)(nr,{optionalParams:t.optional_params,parentFieldKey:"optional_params"}):null};return(0,c.jsx)(T.Z,{title:"Add Guardrail",open:s,onCancel:R,footer:null,width:700,children:(0,c.jsxs)(A.Z,{form:r,layout:"vertical",initialValues:{mode:"pre_call",default_on:!1},children:[(0,c.jsxs)(iq.default,{current:v,className:"mb-6",children:[(0,c.jsx)(nd,{title:"Basic Info"}),(0,c.jsx)(nd,{title:iY(o)?"PII Configuration":"Provider Configuration"})]}),(()=>{switch(v){case 0:return U();case 1:if(iY(o))return q();return V();default:return null}})(),(0,c.jsxs)("div",{className:"flex justify-end space-x-2 mt-4",children:[v>0&&(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{y(v-1)},children:"Previous"}),v<2&&(0,c.jsx)(b.Z,{onClick:D,children:"Next"}),2===v&&(0,c.jsx)(b.Z,{onClick:z,loading:i,children:"Create Guardrail"}),(0,c.jsx)(b.Z,{variant:"secondary",onClick:R,children:"Cancel"})]})]})})};let{Title:nx,Text:nh}=en.default,{Option:np}=I.default;var ng=e=>{var s;let{visible:t,onClose:l,accessToken:a,onSuccess:r,guardrailId:i,initialValues:n}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)((null==n?void 0:n.provider)||null),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)([]),[y,N]=(0,d.useState)({});(0,d.useEffect)(()=>{(async()=>{try{if(!a)return;let e=await (0,j.getGuardrailUISettings)(a);g(e)}catch(e){console.error("Error fetching guardrail settings:",e),eo.Z.fromBackend("Failed to load guardrail settings")}})()},[a]),(0,d.useEffect)(()=>{(null==n?void 0:n.pii_entities_config)&&Object.keys(n.pii_entities_config).length>0&&(v(Object.keys(n.pii_entities_config)),N(n.pii_entities_config))},[n]);let Z=e=>{v(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},w=(e,s)=>{N(t=>({...t,[e]:s}))},k=async()=>{try{u(!0);let e=await o.validateFields(),s=iG[e.provider],t={guardrail_id:i,guardrail:{guardrail_name:e.guardrail_name,litellm_params:{guardrail:s,mode:e.mode,default_on:e.default_on},guardrail_info:{}}};if("PresidioPII"===e.provider&&f.length>0){let e={};f.forEach(s=>{e[s]=y[s]||"MASK"}),t.guardrail.litellm_params.pii_entities_config=e}else if(e.config)try{let s=JSON.parse(e.config);"Bedrock"===e.provider&&s?(s.guardrail_id&&(t.guardrail.litellm_params.guardrailIdentifier=s.guardrail_id),s.guardrail_version&&(t.guardrail.litellm_params.guardrailVersion=s.guardrail_version)):t.guardrail.guardrail_info=s}catch(e){eo.Z.fromBackend("Invalid JSON in configuration"),u(!1);return}if(!a)throw Error("No access token available");console.log("Sending guardrail update data:",JSON.stringify(t));let n=await fetch("/guardrails/".concat(i),{method:"PUT",headers:{Authorization:"Bearer ".concat(a),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok){let e=await n.text();throw Error(e||"Failed to update guardrail")}eo.Z.success("Guardrail updated successfully"),r(),l()}catch(e){console.error("Failed to update guardrail:",e),eo.Z.fromBackend("Failed to update guardrail: "+(e instanceof Error?e.message:String(e)))}finally{u(!1)}},S=()=>p&&x&&"PresidioPII"===x?(0,c.jsx)(ns,{entities:p.supported_entities,actions:p.supported_actions,selectedEntities:f,selectedActions:y,onEntitySelect:Z,onActionSelect:w,entityCategories:p.pii_entity_categories}):null;return(0,c.jsx)(T.Z,{title:"Edit Guardrail",open:t,onCancel:l,footer:null,width:700,children:(0,c.jsxs)(A.Z,{form:o,layout:"vertical",initialValues:n,children:[(0,c.jsx)(A.Z.Item,{name:"guardrail_name",label:"Guardrail Name",rules:[{required:!0,message:"Please enter a guardrail name"}],children:(0,c.jsx)(_.Z,{placeholder:"Enter a name for this guardrail"})}),(0,c.jsx)(A.Z.Item,{name:"provider",label:"Guardrail Provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,c.jsx)(I.default,{placeholder:"Select a guardrail provider",onChange:e=>{h(e),o.setFieldsValue({config:void 0}),v([]),N({})},disabled:!0,optionLabelProp:"label",children:Object.entries(iK()).map(e=>{let[s,t]=e;return(0,c.jsx)(np,{value:s,label:t,children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[iW[t]&&(0,c.jsx)("img",{src:iW[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(A.Z.Item,{name:"mode",label:"Mode",tooltip:"How the guardrail should be applied",rules:[{required:!0,message:"Please select a mode"}],children:(0,c.jsx)(I.default,{children:(null==p?void 0:null===(s=p.supported_modes)||void 0===s?void 0:s.map(e=>(0,c.jsx)(np,{value:e,children:e},e)))||(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(np,{value:"pre_call",children:"pre_call"}),(0,c.jsx)(np,{value:"post_call",children:"post_call"})]})})}),(0,c.jsx)(A.Z.Item,{name:"default_on",label:"Always On",tooltip:"If enabled, this guardrail will be applied to all requests by default",valuePropName:"checked",children:(0,c.jsx)(eK.Z,{})}),(()=>{if(!x)return null;if("PresidioPII"===x)return S();switch(x){case"Aporia":return(0,c.jsx)(A.Z.Item,{label:"Aporia Configuration",name:"config",tooltip:"JSON configuration for Aporia",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_aporia_api_key",\n "project_name": "your_project_name"\n}'})});case"AimSecurity":return(0,c.jsx)(A.Z.Item,{label:"Aim Security Configuration",name:"config",tooltip:"JSON configuration for Aim Security",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_aim_api_key"\n}'})});case"Bedrock":return(0,c.jsx)(A.Z.Item,{label:"Amazon Bedrock Configuration",name:"config",tooltip:"JSON configuration for Amazon Bedrock guardrails",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "guardrail_id": "your_guardrail_id",\n "guardrail_version": "your_guardrail_version"\n}'})});case"GuardrailsAI":return(0,c.jsx)(A.Z.Item,{label:"Guardrails.ai Configuration",name:"config",tooltip:"JSON configuration for Guardrails.ai",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_guardrails_api_key",\n "guardrail_id": "your_guardrail_id"\n}'})});case"LakeraAI":return(0,c.jsx)(A.Z.Item,{label:"Lakera AI Configuration",name:"config",tooltip:"JSON configuration for Lakera AI",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_lakera_api_key"\n}'})});case"PromptInjection":return(0,c.jsx)(A.Z.Item,{label:"Prompt Injection Configuration",name:"config",tooltip:"JSON configuration for prompt injection detection",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "threshold": 0.8\n}'})});default:return(0,c.jsx)(A.Z.Item,{label:"Custom Configuration",name:"config",tooltip:"JSON configuration for your custom guardrail",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "key1": "value1",\n "key2": "value2"\n}'})})}})(),(0,c.jsxs)("div",{className:"flex justify-end space-x-2 mt-4",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:l,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:k,loading:m,children:"Update Guardrail"})]})]})})},nj=e=>{let{guardrailsList:s,isLoading:t,onDeleteClick:l,accessToken:a,onGuardrailUpdated:r,isAdmin:i=!1,onGuardrailClick:n}=e,[o,m]=(0,d.useState)([{id:"created_at",desc:!0}]),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(null),g=e=>e?new Date(e).toLocaleString():"-",j=[{header:"Guardrail ID",accessorKey:"guardrail_id",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>e.getValue()&&n(e.getValue()),children:e.getValue()?"".concat(String(e.getValue()).slice(0,7),"..."):""})})},{header:"Name",accessorKey:"guardrail_name",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.guardrail_name,children:(0,c.jsx)("span",{className:"text-xs font-medium",children:t.guardrail_name||"-"})})}},{header:"Provider",accessorKey:"litellm_params.guardrail",cell:e=>{let{row:s}=e,{logo:t,displayName:l}=i$(s.original.litellm_params.guardrail);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[t&&(0,c.jsx)("img",{src:t,alt:"".concat(l," logo"),className:"w-4 h-4",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)("span",{className:"text-xs",children:l})]})}},{header:"Mode",accessorKey:"litellm_params.mode",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.litellm_params.mode})}},{header:"Default On",accessorKey:"litellm_params.default_on",cell:e=>{var s,t;let{row:l}=e,a=l.original;return(0,c.jsx)(e6.Z,{color:(null===(s=a.litellm_params)||void 0===s?void 0:s.default_on)?"green":"gray",className:"text-xs font-normal",size:"xs",children:(null===(t=a.litellm_params)||void 0===t?void 0:t.default_on)?"Default On":"Default Off"})}},{header:"Created At",accessorKey:"created_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.created_at,children:(0,c.jsx)("span",{className:"text-xs",children:g(t.created_at)})})}},{header:"Updated At",accessorKey:"updated_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.updated_at,children:(0,c.jsx)("span",{className:"text-xs",children:g(t.updated_at)})})}},{id:"actions",header:"",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("div",{className:"flex space-x-2",children:(0,c.jsx)(sL.Z,{icon:W.Z,size:"sm",onClick:()=>t.guardrail_id&&l(t.guardrail_id,t.guardrail_name||"Unnamed Guardrail"),className:"cursor-pointer hover:text-red-500",tooltip:"Delete guardrail"})})}}],f=(0,sT.b7)({data:s,columns:j,state:{sorting:o},onSortingChange:m,getCoreRowModel:(0,sE.sC)(),getSortedRowModel:(0,sE.tj)(),enableSorting:!0});return(0,c.jsxs)("div",{className:"rounded-lg custom-border relative",children:[(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sP.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sD.Z,{children:f.getHeaderGroups().map(e=>(0,c.jsx)(sR.Z,{children:e.headers.map(e=>(0,c.jsx)(sF.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sT.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sq.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sz.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sV.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sM.Z,{children:t?(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sO.Z,{colSpan:j.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"Loading..."})})})}):s.length>0?f.getRowModel().rows.map(e=>(0,c.jsx)(sR.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sO.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),children:(0,sT.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sO.Z,{colSpan:j.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No guardrails found"})})})})})]})}),h&&(0,c.jsx)(ng,{visible:u,onClose:()=>x(!1),accessToken:a,onSuccess:()=>{x(!1),p(null),r()},guardrailId:h.guardrail_id||"",initialValues:{guardrail_name:h.guardrail_name||"",provider:Object.keys(iG).find(e=>iG[e]===(null==h?void 0:h.litellm_params.guardrail))||"",mode:h.litellm_params.mode,default_on:h.litellm_params.default_on,pii_entities_config:h.litellm_params.pii_entities_config,...h.guardrail_info}})]})},nf=e=>{var s,t,l,a,r,i,n,o,m,u,x;let{guardrailId:h,onClose:p,accessToken:g,isAdmin:f}=e,[v,N]=(0,d.useState)(null),[Z,w]=(0,d.useState)(null),[C,T]=(0,d.useState)(!0),[E,M]=(0,d.useState)(!1),[O]=A.Z.useForm(),[D,F]=(0,d.useState)([]),[R,z]=(0,d.useState)({}),[U,q]=(0,d.useState)(null),[V,B]=(0,d.useState)({}),H=async()=>{try{var e;if(T(!0),!g)return;let s=await (0,j.getGuardrailInfo)(g,h);if(N(s),null===(e=s.litellm_params)||void 0===e?void 0:e.pii_entities_config){let e=s.litellm_params.pii_entities_config;if(F([]),z({}),Object.keys(e).length>0){let s=[],t={};Object.entries(e).forEach(e=>{let[l,a]=e;s.push(l),t[l]="string"==typeof a?a:"MASK"}),F(s),z(t)}}else F([]),z({})}catch(e){eo.Z.fromBackend("Failed to load guardrail information"),console.error("Error fetching guardrail info:",e)}finally{T(!1)}},Y=async()=>{try{if(!g)return;let e=await (0,j.getGuardrailProviderSpecificParams)(g);w(e)}catch(e){console.error("Error fetching guardrail provider specific params:",e)}},J=async()=>{try{if(!g)return;let e=await (0,j.getGuardrailUISettings)(g);q(e)}catch(e){console.error("Error fetching guardrail UI settings:",e)}};(0,d.useEffect)(()=>{Y()},[g]),(0,d.useEffect)(()=>{H(),J()},[h,g]),(0,d.useEffect)(()=>{if(v&&O){var e;O.setFieldsValue({guardrail_name:v.guardrail_name,...v.litellm_params,guardrail_info:v.guardrail_info?JSON.stringify(v.guardrail_info,null,2):"",...(null===(e=v.litellm_params)||void 0===e?void 0:e.optional_params)&&{optional_params:v.litellm_params.optional_params}})}},[v,Z,O]);let W=async e=>{try{var s,t,l;if(!g)return;let a={litellm_params:{}};e.guardrail_name!==v.guardrail_name&&(a.guardrail_name=e.guardrail_name),e.default_on!==(null===(s=v.litellm_params)||void 0===s?void 0:s.default_on)&&(a.litellm_params.default_on=e.default_on);let r=v.guardrail_info,i=e.guardrail_info?JSON.parse(e.guardrail_info):void 0;JSON.stringify(r)!==JSON.stringify(i)&&(a.guardrail_info=i);let n=(null===(t=v.litellm_params)||void 0===t?void 0:t.pii_entities_config)||{},o={};D.forEach(e=>{o[e]=R[e]||"MASK"}),JSON.stringify(n)!==JSON.stringify(o)&&(a.litellm_params.pii_entities_config=o);let c=Object.keys(iG).find(e=>{var s;return iG[e]===(null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)});if(console.log("values: ",JSON.stringify(e)),console.log("currentProvider: ",c),Z&&c){let s=Z[null===(l=iG[c])||void 0===l?void 0:l.toLowerCase()]||{},t=new Set;console.log("providerSpecificParams: ",JSON.stringify(s)),Object.keys(s).forEach(e=>{"optional_params"!==e&&t.add(e)}),s.optional_params&&s.optional_params.fields&&Object.keys(s.optional_params.fields).forEach(e=>{t.add(e)}),console.log("allowedParams: ",t),t.forEach(s=>{var t,l;let r=e[s];(null==r||""===r)&&(r=null===(l=e.optional_params)||void 0===l?void 0:l[s]);let i=null===(t=v.litellm_params)||void 0===t?void 0:t[s];JSON.stringify(r)!==JSON.stringify(i)&&(null!=r&&""!==r?a.litellm_params[s]=r:null!=i&&""!==i&&(a.litellm_params[s]=null))})}if(0===Object.keys(a.litellm_params).length&&delete a.litellm_params,0===Object.keys(a).length){eo.Z.info("No changes detected"),M(!1);return}await (0,j.updateGuardrailCall)(g,h,a),eo.Z.success("Guardrail updated successfully"),H(),M(!1)}catch(e){console.error("Error updating guardrail:",e),eo.Z.fromBackend("Failed to update guardrail")}};if(C)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!v)return(0,c.jsx)("div",{className:"p-4",children:"Guardrail not found"});let $=e=>e?new Date(e).toLocaleString():"-",{logo:Q,displayName:X}=i$((null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)||""),ee=async(e,s)=>{await eM(e)&&(B(e=>({...e,[s]:!0})),setTimeout(()=>{B(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",onClick:p,className:"mb-4",children:"Back to Guardrails"}),(0,c.jsx)(S.Z,{children:v.guardrail_name||"Unnamed Guardrail"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:v.guardrail_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:V["guardrail-id"]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>ee(v.guardrail_id,"guardrail-id"),className:"left-2 z-10 transition-all duration-200 ".concat(V["guardrail-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{className:"mb-4",children:[(0,c.jsx)(e8.Z,{children:"Overview"},"overview"),f?(0,c.jsx)(e8.Z,{children:"Settings"},"settings"):(0,c.jsx)(c.Fragment,{})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Provider"}),(0,c.jsxs)("div",{className:"mt-2 flex items-center space-x-2",children:[Q&&(0,c.jsx)("img",{src:Q,alt:"".concat(X," logo"),className:"w-6 h-6",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)(S.Z,{children:X})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Mode"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:(null===(t=v.litellm_params)||void 0===t?void 0:t.mode)||"-"}),(0,c.jsx)(e6.Z,{color:(null===(l=v.litellm_params)||void 0===l?void 0:l.default_on)?"green":"gray",children:(null===(a=v.litellm_params)||void 0===a?void 0:a.default_on)?"Default On":"Default Off"})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Created At"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:$(v.created_at)}),(0,c.jsxs)(k.Z,{children:["Last Updated: ",$(v.updated_at)]})]})]})]}),(null===(r=v.litellm_params)||void 0===r?void 0:r.pii_entities_config)&&Object.keys(v.litellm_params.pii_entities_config).length>0&&(0,c.jsx)(G.Z,{className:"mt-6",children:(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"PII Protection"}),(0,c.jsxs)(e6.Z,{color:"blue",children:[Object.keys(v.litellm_params.pii_entities_config).length," PII entities configured"]})]})}),v.guardrail_info&&Object.keys(v.guardrail_info).length>0&&(0,c.jsxs)(G.Z,{className:"mt-6",children:[(0,c.jsx)(k.Z,{children:"Guardrail Info"}),(0,c.jsx)("div",{className:"mt-2 space-y-2",children:Object.entries(v.guardrail_info).map(e=>{let[s,t]=e;return(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(k.Z,{className:"font-medium w-1/3",children:s}),(0,c.jsx)(k.Z,{className:"w-2/3",children:"object"==typeof t?JSON.stringify(t,null,2):String(t)})]},s)})})]})]}),f&&(0,c.jsx)(se.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Guardrail Settings"}),!E&&(0,c.jsx)(b.Z,{onClick:()=>M(!0),children:"Edit Settings"})]}),E?(0,c.jsxs)(A.Z,{form:O,onFinish:W,initialValues:{guardrail_name:v.guardrail_name,...v.litellm_params,guardrail_info:v.guardrail_info?JSON.stringify(v.guardrail_info,null,2):"",...(null===(i=v.litellm_params)||void 0===i?void 0:i.optional_params)&&{optional_params:v.litellm_params.optional_params}},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Guardrail Name",name:"guardrail_name",rules:[{required:!0,message:"Please input a guardrail name"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Default On",name:"default_on",children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:!0,children:"Yes"}),(0,c.jsx)(I.default.Option,{value:!1,children:"No"})]})}),(null===(n=v.litellm_params)||void 0===n?void 0:n.guardrail)==="presidio"&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(K.Z,{orientation:"left",children:"PII Protection"}),(0,c.jsx)("div",{className:"mb-6",children:U&&(0,c.jsx)(ns,{entities:U.supported_entities,actions:U.supported_actions,selectedEntities:D,selectedActions:R,onEntitySelect:e=>{F(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},onActionSelect:(e,s)=>{z(t=>({...t,[e]:s}))},entityCategories:U.pii_entity_categories})})]}),(0,c.jsx)(K.Z,{orientation:"left",children:"Provider Settings"}),(0,c.jsx)(nt,{selectedProvider:Object.keys(iG).find(e=>{var s;return iG[e]===(null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)})||null,accessToken:g,providerParams:Z,value:v.litellm_params}),Z&&(()=>{var e;let s=Object.keys(iG).find(e=>{var s;return iG[e]===(null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)});if(!s)return null;let t=Z[null===(e=iG[s])||void 0===e?void 0:e.toLowerCase()];return t&&t.optional_params?(0,c.jsx)(nr,{optionalParams:t.optional_params,parentFieldKey:"optional_params",values:v.litellm_params}):null})(),(0,c.jsx)(K.Z,{orientation:"left",children:"Advanced Settings"}),(0,c.jsx)(A.Z.Item,{label:"Guardrail Information",name:"guardrail_info",children:(0,c.jsx)(P.default.TextArea,{rows:5})}),(0,c.jsxs)("div",{className:"flex justify-end gap-2 mt-6",children:[(0,c.jsx)(L.ZP,{onClick:()=>M(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{children:"Save Changes"})]})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Guardrail ID"}),(0,c.jsx)("div",{className:"font-mono",children:v.guardrail_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Guardrail Name"}),(0,c.jsx)("div",{children:v.guardrail_name||"Unnamed Guardrail"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Provider"}),(0,c.jsx)("div",{children:X})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Mode"}),(0,c.jsx)("div",{children:(null===(o=v.litellm_params)||void 0===o?void 0:o.mode)||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Default On"}),(0,c.jsx)(e6.Z,{color:(null===(m=v.litellm_params)||void 0===m?void 0:m.default_on)?"green":"gray",children:(null===(u=v.litellm_params)||void 0===u?void 0:u.default_on)?"Yes":"No"})]}),(null===(x=v.litellm_params)||void 0===x?void 0:x.pii_entities_config)&&Object.keys(v.litellm_params.pii_entities_config).length>0&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"PII Protection"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsxs)(e6.Z,{color:"blue",children:[Object.keys(v.litellm_params.pii_entities_config).length," PII entities configured"]})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:$(v.created_at)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)("div",{children:$(v.updated_at)})]})]})]})})]})]})]})},nv=e=>{let{accessToken:s,userRole:t}=e,[l,a]=(0,d.useState)([]),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),f=!!t&&(0,eI.tY)(t),v=async()=>{if(s){o(!0);try{let e=await (0,j.getGuardrailsList)(s);console.log("guardrails: ".concat(JSON.stringify(e))),a(e.guardrails)}catch(e){console.error("Error fetching guardrails:",e)}finally{o(!1)}}};(0,d.useEffect)(()=>{v()},[s]);let y=async()=>{if(x&&s){u(!0);try{await (0,j.deleteGuardrailCall)(s,x.id),eo.Z.success('Guardrail "'.concat(x.name,'" deleted successfully')),v()}catch(e){console.error("Error deleting guardrail:",e),eo.Z.fromBackend("Failed to delete guardrail")}finally{u(!1),h(null)}}};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(b.Z,{onClick:()=>{p&&g(null),i(!0)},disabled:!s,children:"+ Add New Guardrail"})}),p?(0,c.jsx)(nf,{guardrailId:p,onClose:()=>g(null),accessToken:s,isAdmin:f}):(0,c.jsx)(nj,{guardrailsList:l,isLoading:n,onDeleteClick:(e,s)=>{h({id:e,name:s})},accessToken:s,onGuardrailUpdated:v,isAdmin:f,onGuardrailClick:e=>g(e)}),(0,c.jsx)(nu,{visible:r,onClose:()=>{i(!1)},accessToken:s,onSuccess:()=>{v()}}),x&&(0,c.jsxs)(T.Z,{title:"Delete Guardrail",open:null!==x,onOk:y,onCancel:()=>{h(null)},confirmLoading:m,okText:"Delete",okButtonProps:{danger:!0},children:[(0,c.jsxs)("p",{children:["Are you sure you want to delete guardrail: ",x.name," ?"]}),(0,c.jsx)("p",{children:"This action cannot be undone."})]})]})},ny=e=>{let{promptsList:s,isLoading:t,onPromptClick:l,onDeleteClick:a,accessToken:r,isAdmin:i}=e,[n,o]=(0,d.useState)([{id:"created_at",desc:!0}]),m=e=>e?new Date(e).toLocaleString():"-",u=[{header:"Prompt ID",accessorKey:"prompt_id",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>e.getValue()&&(null==l?void 0:l(e.getValue())),children:e.getValue()?"".concat(String(e.getValue()).slice(0,7),"..."):""})})},{header:"Created At",accessorKey:"created_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.created_at,children:(0,c.jsx)("span",{className:"text-xs",children:m(t.created_at)})})}},{header:"Updated At",accessorKey:"updated_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.updated_at,children:(0,c.jsx)("span",{className:"text-xs",children:m(t.updated_at)})})}},{header:"Type",accessorKey:"prompt_info.prompt_type",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.prompt_info.prompt_type,children:(0,c.jsx)("span",{className:"text-xs",children:t.prompt_info.prompt_type})})}},...i?[{header:"Actions",id:"actions",enableSorting:!1,cell:e=>{let{row:s}=e,t=s.original,l=t.prompt_id||"Unknown Prompt";return(0,c.jsx)("div",{className:"flex items-center gap-1",children:(0,c.jsx)(B.Z,{title:"Delete prompt",children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",color:"red",onClick:e=>{e.stopPropagation(),null==a||a(t.prompt_id,l)},icon:W.Z,className:"text-red-500 hover:text-red-700 hover:bg-red-50"})})})}}]:[]],x=(0,sT.b7)({data:s,columns:u,state:{sorting:n},onSortingChange:o,getCoreRowModel:(0,sE.sC)(),getSortedRowModel:(0,sE.tj)(),enableSorting:!0});return(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sP.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sD.Z,{children:x.getHeaderGroups().map(e=>(0,c.jsx)(sR.Z,{children:e.headers.map(e=>(0,c.jsx)(sF.Z,{className:"py-1 h-8",onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sT.ie)(e.column.columnDef.header,e.getContext())}),(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sq.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sz.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sV.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sM.Z,{children:t?(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sO.Z,{colSpan:u.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"Loading..."})})})}):s.length>0?x.getRowModel().rows.map(e=>(0,c.jsx)(sR.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sO.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap",children:(0,sT.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sO.Z,{colSpan:u.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No prompts found"})})})})})]})})})},nb=e=>{var s,t,l;let{promptId:a,onClose:r,accessToken:i,isAdmin:n,onDelete:o}=e,[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(!0),[_,N]=(0,d.useState)({}),[Z,w]=(0,d.useState)(!1),[C,I]=(0,d.useState)(!1),A=async()=>{try{if(v(!0),!i)return;let e=await (0,j.getPromptInfo)(i,a);u(e.prompt_spec),h(e.raw_prompt_template),g(e)}catch(e){eo.Z.fromBackend("Failed to load prompt information"),console.error("Error fetching prompt info:",e)}finally{v(!1)}};if((0,d.useEffect)(()=>{A()},[a,i]),f)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!m)return(0,c.jsx)("div",{className:"p-4",children:"Prompt not found"});let E=e=>e?new Date(e).toLocaleString():"-",P=async(e,s)=>{await eM(e)&&(N(e=>({...e,[s]:!0})),setTimeout(()=>{N(e=>({...e,[s]:!1}))},2e3))},M=async()=>{if(i&&m){I(!0);try{await (0,j.deletePromptCall)(i,m.prompt_id),eo.Z.success('Prompt "'.concat(m.prompt_id,'" deleted successfully')),null==o||o(),r()}catch(e){console.error("Error deleting prompt:",e),eo.Z.fromBackend("Failed to delete prompt")}finally{I(!1),w(!1)}}};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",onClick:r,className:"mb-4",children:"Back to Prompts"}),(0,c.jsxs)("div",{className:"flex justify-between items-start mb-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Prompt Details"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:m.prompt_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["prompt-id"]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>P(m.prompt_id,"prompt-id"),className:"left-2 z-10 transition-all duration-200 ".concat(_["prompt-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),n&&(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>{w(!0)},className:"flex items-center",children:"Delete Prompt"})]})]}),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{className:"mb-4",children:[(0,c.jsx)(e8.Z,{children:"Overview"},"overview"),x?(0,c.jsx)(e8.Z,{children:"Prompt Template"},"prompt-template"):(0,c.jsx)(c.Fragment,{}),n?(0,c.jsx)(e8.Z,{children:"Details"},"details"):(0,c.jsx)(c.Fragment,{}),(0,c.jsx)(e8.Z,{children:"Raw JSON"},"raw-json")]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Prompt ID"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{className:"font-mono text-sm",children:m.prompt_id})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Prompt Type"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:(null===(s=m.prompt_info)||void 0===s?void 0:s.prompt_type)||"-"}),(0,c.jsx)(e6.Z,{color:"blue",className:"mt-1",children:(null===(t=m.prompt_info)||void 0===t?void 0:t.prompt_type)||"Unknown"})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Created At"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:E(m.created_at)}),(0,c.jsxs)(k.Z,{children:["Last Updated: ",E(m.updated_at)]})]})]})]}),m.litellm_params&&Object.keys(m.litellm_params).length>0&&(0,c.jsxs)(G.Z,{className:"mt-6",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"LiteLLM Parameters"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(m.litellm_params,null,2)})})]})]}),x&&(0,c.jsx)(se.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Prompt Template"}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["prompt-content"]?(0,c.jsx)(sf.Z,{size:16}):(0,c.jsx)(sv.Z,{size:16}),onClick:()=>P(x.content,"prompt-content"),className:"transition-all duration-200 ".concat(_["prompt-content"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100"),children:_["prompt-content"]?"Copied!":"Copy Content"})]}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Template ID"}),(0,c.jsx)("div",{className:"font-mono text-sm bg-gray-50 p-2 rounded",children:x.litellm_prompt_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Content"}),(0,c.jsx)("div",{className:"mt-2 p-4 bg-gray-50 rounded-md border overflow-auto max-h-96",children:(0,c.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:x.content})})]}),x.metadata&&Object.keys(x.metadata).length>0&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Template Metadata"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap overflow-auto max-h-64",children:JSON.stringify(x.metadata,null,2)})})]})]})]})}),n&&(0,c.jsx)(se.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{className:"mb-4",children:"Prompt Details"}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompt ID"}),(0,c.jsx)("div",{className:"font-mono text-sm bg-gray-50 p-2 rounded",children:m.prompt_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompt Type"}),(0,c.jsx)("div",{children:(null===(l=m.prompt_info)||void 0===l?void 0:l.prompt_type)||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:E(m.created_at)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)("div",{children:E(m.updated_at)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"LiteLLM Parameters"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap overflow-auto max-h-96",children:JSON.stringify(m.litellm_params,null,2)})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompt Info"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(m.prompt_info,null,2)})})]})]})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Raw API Response"}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["raw-json"]?(0,c.jsx)(sf.Z,{size:16}):(0,c.jsx)(sv.Z,{size:16}),onClick:()=>P(JSON.stringify(p,null,2),"raw-json"),className:"transition-all duration-200 ".concat(_["raw-json"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100"),children:_["raw-json"]?"Copied!":"Copy JSON"})]}),(0,c.jsx)("div",{className:"p-4 bg-gray-50 rounded-md border overflow-auto",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(p,null,2)})})]})})]})]}),(0,c.jsxs)(T.Z,{title:"Delete Prompt",open:Z,onOk:M,onCancel:()=>{w(!1)},confirmLoading:C,okText:"Delete",okButtonProps:{danger:!0},children:[(0,c.jsxs)("p",{children:["Are you sure you want to delete prompt: ",(0,c.jsx)("strong",{children:null==m?void 0:m.prompt_id}),"?"]}),(0,c.jsx)("p",{children:"This action cannot be undone."})]})]})};let{Option:n_}=I.default;var nN=e=>{let{visible:s,onClose:t,accessToken:l,onSuccess:a}=e,[r]=A.Z.useForm(),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)("dotprompt"),h=()=>{r.resetFields(),m([]),x("dotprompt"),t()},p=async()=>{try{let e=await r.validateFields();if(console.log("values: ",e),!l){eo.Z.fromBackend("Access token is required");return}if("dotprompt"===u&&0===o.length){eo.Z.fromBackend("Please upload a .prompt file");return}n(!0);let s={};if("dotprompt"===u&&o.length>0){let t=o[0].originFileObj;try{let a=await (0,j.convertPromptFileToJson)(l,t);console.log("Conversion result:",a),s={prompt_id:e.prompt_id,litellm_params:{prompt_integration:"dotprompt",prompt_id:a.prompt_id,prompt_data:a.json_data},prompt_info:{prompt_type:"db"}}}catch(e){console.error("Error converting prompt file:",e),eo.Z.fromBackend("Failed to convert prompt file to JSON"),n(!1);return}}try{await (0,j.createPromptCall)(l,s),eo.Z.success("Prompt created successfully!"),h(),a()}catch(e){console.error("Error creating prompt:",e),eo.Z.fromBackend("Failed to create prompt")}}catch(e){console.error("Form validation error:",e)}finally{n(!1)}};return(0,c.jsx)(T.Z,{title:"Add New Prompt",open:s,onCancel:h,footer:[(0,c.jsx)(L.ZP,{onClick:h,children:"Cancel"},"cancel"),(0,c.jsx)(L.ZP,{loading:i,onClick:p,children:"Create Prompt"},"submit")],width:600,children:(0,c.jsxs)(A.Z,{form:r,layout:"vertical",requiredMark:!1,children:[(0,c.jsx)(A.Z.Item,{label:"Prompt ID",name:"prompt_id",rules:[{required:!0,message:"Please enter a prompt ID"},{pattern:/^[a-zA-Z0-9_-]+$/,message:"Prompt ID can only contain letters, numbers, underscores, and hyphens"}],children:(0,c.jsx)(eG.o,{placeholder:"Enter unique prompt ID (e.g., my_prompt_id)"})}),(0,c.jsx)(A.Z.Item,{label:"Prompt Integration",name:"prompt_integration",initialValue:"dotprompt",children:(0,c.jsx)(I.default,{value:u,onChange:x,children:(0,c.jsx)(n_,{value:"dotprompt",children:"dotprompt"})})}),"dotprompt"===u&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(K.Z,{}),(0,c.jsxs)(A.Z.Item,{label:"Prompt File",extra:"Upload a .prompt file that follows the Dotprompt specification",children:[(0,c.jsx)(ed.default,{beforeUpload:e=>(e.name.endsWith(".prompt")||eo.Z.fromBackend("Please upload a .prompt file"),!1),fileList:o,onChange:e=>{let{fileList:s}=e;m(s.slice(-1))},onRemove:()=>{m([])},children:(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(ej.Z,{}),children:"Select .prompt File"})}),o.length>0&&(0,c.jsxs)("div",{className:"mt-2 text-sm text-gray-600",children:["Selected: ",o[0].name]})]})]})]})})},nZ=e=>{let{accessToken:s,userRole:t}=e,[l,a]=(0,d.useState)([]),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)(null),f=!!t&&(0,eI.tY)(t),v=async()=>{if(s){i(!0);try{let e=await (0,j.getPromptsList)(s);console.log("prompts: ".concat(JSON.stringify(e))),a(e.prompts)}catch(e){console.error("Error fetching prompts:",e)}finally{i(!1)}}};(0,d.useEffect)(()=>{v()},[s]);let y=async()=>{if(p&&s){h(!0);try{await (0,j.deletePromptCall)(s,p.id),eo.Z.success('Prompt "'.concat(p.name,'" deleted successfully')),v()}catch(e){console.error("Error deleting prompt:",e),eo.Z.fromBackend("Failed to delete prompt")}finally{h(!1),g(null)}}};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[n?(0,c.jsx)(nb,{promptId:n,onClose:()=>o(null),accessToken:s,isAdmin:f,onDelete:v}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(b.Z,{onClick:()=>{n&&o(null),u(!0)},disabled:!s,children:"+ Add New Prompt"})}),(0,c.jsx)(ny,{promptsList:l,isLoading:r,onPromptClick:e=>{o(e)},onDeleteClick:(e,s)=>{g({id:e,name:s})},accessToken:s,isAdmin:f})]}),(0,c.jsx)(nN,{visible:m,onClose:()=>{u(!1)},accessToken:s,onSuccess:()=>{v()}}),p&&(0,c.jsxs)(T.Z,{title:"Delete Prompt",open:null!==p,onOk:y,onCancel:()=>{g(null)},confirmLoading:x,okText:"Delete",okButtonProps:{danger:!0},children:[(0,c.jsxs)("p",{children:["Are you sure you want to delete prompt: ",p.name," ?"]}),(0,c.jsx)("p",{children:"This action cannot be undone."})]})]})},nw=e=>{let{accessToken:s}=e,[t,l]=(0,d.useState)('{\n "model": "openai/gpt-4o",\n "messages": [\n {\n "role": "system",\n "content": "You are a helpful assistant."\n },\n {\n "role": "user",\n "content": "Explain quantum computing in simple terms"\n }\n ],\n "temperature": 0.7,\n "max_tokens": 500,\n "stream": true\n}'),[a,r]=(0,d.useState)(""),[i,n]=(0,d.useState)(!1),o=(e,s,t)=>{let l=JSON.stringify(s,null,2).split("\n").map(e=>" ".concat(e)).join("\n"),a=Object.entries(t).map(e=>{let[s,t]=e;return"-H '".concat(s,": ").concat(t,"'")}).join(" \\\n ");return"curl -X POST \\\n ".concat(e," \\\n ").concat(a?"".concat(a," \\\n "):"","-H 'Content-Type: application/json' \\\n -d '{\n").concat(l,"\n }'")},m=async()=>{n(!0);try{let e;try{e=JSON.parse(t)}catch(e){eo.Z.fromBackend("Invalid JSON in request body"),n(!1);return}let l={call_type:"completion",request_body:e};if(!s){eo.Z.fromBackend("No access token found"),n(!1);return}let a=await (0,j.transformRequestCall)(s,l);if(a.raw_request_api_base&&a.raw_request_body){let e=o(a.raw_request_api_base,a.raw_request_body,a.raw_request_headers||{});r(e),eo.Z.success("Request transformed successfully")}else{let e="string"==typeof a?a:JSON.stringify(a);r(e),eo.Z.info("Transformed request received in unexpected format")}}catch(e){console.error("Error transforming request:",e),eo.Z.fromBackend("Failed to transform request")}finally{n(!1)}};return(0,c.jsxs)("div",{className:"w-full m-2",style:{overflow:"hidden"},children:[(0,c.jsx)(S.Z,{children:"Playground"}),(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"See how LiteLLM transforms your request for the specified provider."}),(0,c.jsxs)("div",{style:{display:"flex",gap:"16px",width:"100%",minWidth:0,overflow:"hidden"},className:"mt-4",children:[(0,c.jsxs)("div",{style:{flex:"1 1 50%",display:"flex",flexDirection:"column",border:"1px solid #e8e8e8",borderRadius:"8px",padding:"24px",overflow:"hidden",maxHeight:"600px",minWidth:0},children:[(0,c.jsxs)("div",{style:{marginBottom:"24px"},children:[(0,c.jsx)("h2",{style:{fontSize:"24px",fontWeight:"bold",margin:"0 0 4px 0"},children:"Original Request"}),(0,c.jsx)("p",{style:{color:"#666",margin:0},children:"The request you would send to LiteLLM /chat/completions endpoint."})]}),(0,c.jsx)("textarea",{style:{flex:"1 1 auto",width:"100%",minHeight:"240px",padding:"16px",border:"1px solid #e8e8e8",borderRadius:"6px",fontFamily:"monospace",fontSize:"14px",resize:"none",marginBottom:"24px",overflow:"auto"},value:t,onChange:e=>l(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&"Enter"===e.key&&(e.preventDefault(),m())},placeholder:"Press Cmd/Ctrl + Enter to transform"}),(0,c.jsx)("div",{style:{display:"flex",justifyContent:"flex-end",marginTop:"auto"},children:(0,c.jsxs)(L.ZP,{type:"primary",style:{backgroundColor:"#000",display:"flex",alignItems:"center",gap:"8px"},onClick:m,loading:i,children:[(0,c.jsx)("span",{children:"Transform"}),(0,c.jsx)("span",{children:"→"})]})})]}),(0,c.jsxs)("div",{style:{flex:"1 1 50%",display:"flex",flexDirection:"column",border:"1px solid #e8e8e8",borderRadius:"8px",padding:"24px",overflow:"hidden",maxHeight:"800px",minWidth:0},children:[(0,c.jsxs)("div",{style:{marginBottom:"24px"},children:[(0,c.jsx)("h2",{style:{fontSize:"24px",fontWeight:"bold",margin:"0 0 4px 0"},children:"Transformed Request"}),(0,c.jsx)("p",{style:{color:"#666",margin:0},children:"How LiteLLM transforms your request for the specified provider."}),(0,c.jsx)("br",{}),(0,c.jsx)("p",{style:{color:"#666",margin:0},className:"text-xs",children:"Note: Sensitive headers are not shown."})]}),(0,c.jsxs)("div",{style:{position:"relative",backgroundColor:"#f5f5f5",borderRadius:"6px",flex:"1 1 auto",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,c.jsx)("pre",{style:{padding:"16px",fontFamily:"monospace",fontSize:"14px",margin:0,overflow:"auto",flex:"1 1 auto"},children:a||'curl -X POST \\\n https://api.openai.com/v1/chat/completions \\\n -H \'Authorization: Bearer sk-xxx\' \\\n -H \'Content-Type: application/json\' \\\n -d \'{\n "model": "gpt-4",\n "messages": [\n {\n "role": "system",\n "content": "You are a helpful assistant."\n }\n ],\n "temperature": 0.7\n }\''}),(0,c.jsx)(L.ZP,{type:"text",icon:(0,c.jsx)(tG.Z,{}),style:{position:"absolute",right:"8px",top:"8px"},size:"small",onClick:()=>{navigator.clipboard.writeText(a||""),eo.Z.success("Copied to clipboard")}})]})]})]}),(0,c.jsx)("div",{className:"mt-4 text-right w-full",children:(0,c.jsxs)("p",{className:"text-sm text-gray-500",children:["Found an error? File an issue"," ",(0,c.jsx)("a",{href:"https://github.com/BerriAI/litellm/issues",target:"_blank",rel:"noopener noreferrer",children:"here"}),"."]})})]})};let nk=e=>{try{let s=e.indexOf("/mcp/");if(-1===s)return{token:null,baseUrl:e};let t=e.split("/mcp/");if(2!==t.length)return{token:null,baseUrl:e};let l=t[0]+"/mcp/",a=t[1];if(!a)return{token:null,baseUrl:e};return{token:a,baseUrl:l}}catch(s){return console.error("Error parsing MCP URL:",s),{token:null,baseUrl:e}}},nS=e=>{let{token:s,baseUrl:t}=nk(e);return s?t+"...":e},nC=e=>{let{token:s}=nk(e);return{maskedUrl:nS(e),hasToken:!!s}},nI=e=>e?/^https?:\/\/[^\s/$.?#].[^\s]*$/i.test(e)?Promise.resolve():Promise.reject("Please enter a valid URL (e.g., http://service-name.domain:1234/path or https://example.com)"):Promise.resolve(),nA=e=>e&&e.includes("-")?Promise.reject("Server name cannot contain '-' (hyphen). Please use '_' (underscore) instead."):Promise.resolve(),nT=(e,s,t,l)=>[{accessorKey:"server_id",header:"Server ID",cell:e=>{let{row:t}=e;return(0,c.jsxs)("button",{onClick:()=>s(t.original.server_id),className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",children:[t.original.server_id.slice(0,7),"..."]})}},{accessorKey:"server_name",header:"Name"},{accessorKey:"alias",header:"Alias"},{id:"url",header:"URL",cell:e=>{let{row:s}=e,{maskedUrl:t}=nC(s.original.url);return(0,c.jsx)("span",{className:"font-mono text-sm",children:t})}},{accessorKey:"transport",header:"Transport",cell:e=>{let{getValue:s}=e;return(0,c.jsx)("span",{children:(s()||"http").toUpperCase()})}},{accessorKey:"auth_type",header:"Auth Type",cell:e=>{let{getValue:s}=e;return(0,c.jsx)("span",{children:s()||"none"})}},{id:"health_status",header:"Health Status",cell:e=>{let{row:s}=e,t=s.original,l=t.status||"unknown",a=t.last_health_check,r=t.health_check_error,i=(0,c.jsxs)("div",{className:"max-w-xs",children:[(0,c.jsxs)("div",{className:"font-semibold mb-1",children:["Health Status: ",l]}),a&&(0,c.jsxs)("div",{className:"text-xs mb-1",children:["Last Check: ",new Date(a).toLocaleString()]}),r&&(0,c.jsxs)("div",{className:"text-xs",children:[(0,c.jsx)("div",{className:"font-medium text-red-400 mb-1",children:"Error:"}),(0,c.jsx)("div",{className:"break-words",children:r})]}),!a&&!r&&(0,c.jsx)("div",{className:"text-xs text-gray-400",children:"No health check data available"})]});return(0,c.jsx)(B.Z,{title:i,placement:"top",children:(0,c.jsxs)("button",{className:"font-mono text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[10ch] ".concat((e=>{switch(e){case"healthy":return"text-green-500 bg-green-50 hover:bg-green-100";case"unhealthy":return"text-red-500 bg-red-50 hover:bg-red-100";default:return"text-gray-500 bg-gray-50 hover:bg-gray-100"}})(l)),children:[(0,c.jsx)("span",{className:"mr-1",children:"●"}),l.charAt(0).toUpperCase()+l.slice(1)]})})}},{id:"mcp_access_groups",header:"Access Groups",cell:e=>{let{row:s}=e,t=s.original.mcp_access_groups;if(Array.isArray(t)&&t.length>0&&"string"==typeof t[0]){let e=t.join(", ");return(0,c.jsx)(B.Z,{title:e,children:(0,c.jsx)("span",{className:"max-w-[200px] truncate block",children:e.length>30?"".concat(e.slice(0,30),"..."):e})})}return(0,c.jsx)("span",{className:"text-gray-400 italic",children:"None"})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.created_at?new Date(t.created_at).toLocaleDateString():"-"})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.updated_at?new Date(t.updated_at).toLocaleDateString():"-"})}},{id:"actions",header:"Actions",cell:e=>{let{row:s}=e;return(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sL.Z,{icon:sX.Z,size:"sm",onClick:()=>t(s.original.server_id),className:"cursor-pointer"}),(0,c.jsx)(sL.Z,{icon:W.Z,size:"sm",onClick:()=>l(s.original.server_id),className:"cursor-pointer"})]})}}];var nE=t(82376),nL=t(71437);let nP={NONE:"none",API_KEY:"api_key",BEARER_TOKEN:"bearer_token",BASIC:"basic"},nM={SSE:"sse"},nO=e=>(console.log(e),null==e)?nM.SSE:e,nD=e=>null==e?nP.NONE:e,nF=e=>nD(e)!==nP.NONE;var nR=t(62670),nz=e=>{let{value:s={},onChange:t,tools:l=[],disabled:a=!1}=e,r=(e,l)=>{let a={...s,tool_name_to_cost_per_query:{...s.tool_name_to_cost_per_query,[e]:l}};null==t||t(a)};return(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,c.jsx)(nR.Z,{className:"text-green-600"}),(0,c.jsx)(S.Z,{children:"Cost Configuration"}),(0,c.jsx)(B.Z,{title:"Configure costs for this MCP server's tool calls. Set a default rate and per-tool overrides.",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:["Default Cost per Query ($)",(0,c.jsx)(B.Z,{title:"Default cost charged for each tool call to this server.",children:(0,c.jsx)(V.Z,{className:"ml-1 text-gray-400"})})]}),(0,c.jsx)(e4.Z,{min:0,step:1e-4,precision:4,placeholder:"0.0000",value:s.default_cost_per_query,onChange:e=>{let l={...s,default_cost_per_query:e};null==t||t(l)},disabled:a,style:{width:"200px"},addonBefore:"$"}),(0,c.jsx)(k.Z,{className:"block mt-1 text-gray-500 text-sm",children:"Set a default cost for all tool calls to this server"})]}),l.length>0&&(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("label",{className:"block text-sm font-medium text-gray-700",children:["Tool-Specific Costs ($)",(0,c.jsx)(B.Z,{title:"Override the default cost for specific tools. Leave blank to use the default rate.",children:(0,c.jsx)(V.Z,{className:"ml-1 text-gray-400"})})]}),(0,c.jsx)(tI.default,{items:[{key:"1",label:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rP.Z,{className:"mr-2 text-blue-500"}),(0,c.jsx)("span",{className:"font-medium",children:"Available Tools"}),(0,c.jsx)(iQ.Z,{count:l.length,style:{backgroundColor:"#52c41a",marginLeft:"8px"}})]}),children:(0,c.jsx)("div",{className:"space-y-3 max-h-64 overflow-y-auto",children:l.map((e,t)=>{var l;return(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 rounded-lg",children:[(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900",children:e.name}),e.description&&(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm block mt-1",children:e.description})]}),(0,c.jsx)("div",{className:"ml-4",children:(0,c.jsx)(e4.Z,{min:0,step:1e-4,precision:4,placeholder:"Use default",value:null===(l=s.tool_name_to_cost_per_query)||void 0===l?void 0:l[e.name],onChange:s=>r(e.name,s),disabled:a,style:{width:"120px"},addonBefore:"$"})})]},t)})})}]})]})]}),(s.default_cost_per_query||s.tool_name_to_cost_per_query&&Object.keys(s.tool_name_to_cost_per_query).length>0)&&(0,c.jsxs)("div",{className:"mt-6 p-4 bg-blue-50 border border-blue-200 rounded-lg",children:[(0,c.jsx)(k.Z,{className:"text-blue-800 font-medium",children:"Cost Summary:"}),(0,c.jsxs)("div",{className:"mt-2 space-y-1",children:[s.default_cost_per_query&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• Default cost: $",s.default_cost_per_query.toFixed(4)," per query"]}),s.tool_name_to_cost_per_query&&Object.entries(s.tool_name_to_cost_per_query).map(e=>{let[s,t]=e;return null!=t&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• ",s,": $",t.toFixed(4)," per query"]},s)})]})]})]})})};let{Panel:nU}=tI.default;var nq=e=>{let{availableAccessGroups:s,mcpServer:t,searchValue:l,setSearchValue:a,getAccessGroupOptions:r}=e,i=A.Z.useFormInstance();return(0,d.useEffect)(()=>{t&&t.extra_headers&&i.setFieldValue("extra_headers",t.extra_headers)},[t,i]),(0,c.jsx)(tI.default,{className:"bg-gray-50 border border-gray-200 rounded-lg",expandIconPosition:"end",ghost:!1,children:(0,c.jsx)(nU,{header:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Permission Management / Access Control"})]}),(0,c.jsx)("p",{className:"text-sm text-gray-600 ml-4",children:"Configure access permissions and security settings (Optional)"})]}),className:"border-0",children:(0,c.jsxs)("div",{className:"space-y-6 pt-4",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["MCP Access Groups",(0,c.jsx)(B.Z,{title:"Specify access groups for this MCP server. Users must be in at least one of these groups to access the server.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"mcp_access_groups",className:"mb-4",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"value",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.value)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},onSearch:e=>a(e),tokenSeparators:[","],options:r(),maxTagCount:"responsive",allowClear:!0})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Extra Headers",(0,c.jsx)(B.Z,{title:"Forward custom headers from incoming requests to this MCP server (e.g., Authorization, X-Custom-Header, User-Agent)",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})}),(null==t?void 0:t.extra_headers)&&t.extra_headers.length>0&&(0,c.jsxs)("span",{className:"ml-2 text-xs bg-blue-100 text-blue-700 px-2 py-1 rounded-full",children:[t.extra_headers.length," configured"]})]}),name:"extra_headers",children:(0,c.jsx)(I.default,{mode:"tags",placeholder:(null==t?void 0:t.extra_headers)&&t.extra_headers.length>0?"Currently: ".concat(t.extra_headers.join(", ")):"Enter header names (e.g., Authorization, X-Custom-Header)",className:"rounded-lg",size:"large",tokenSeparators:[","],allowClear:!0})})]})},"permissions")})},nV=t(83669);let nB=e=>{let{accessToken:s,formValues:t,enabled:l=!0}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,c]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),x=!!(t.url&&t.transport&&t.auth_type&&s),h=async()=>{if(s&&t.url){n(!0),c(null);try{let e={server_id:t.server_id||"",server_name:t.server_name||"",url:t.url,transport:t.transport,auth_type:t.auth_type,mcp_info:t.mcp_info},l=await (0,j.testMCPToolsListRequest)(s,e);if(l.tools&&!l.error)r(l.tools),c(null),l.tools.length>0&&!m&&u(!0);else{let e=l.message||"Failed to retrieve tools list";c(e),r([]),u(!1)}}catch(e){console.error("Tools fetch error:",e),c(e instanceof Error?e.message:String(e)),r([]),u(!1)}finally{n(!1)}}},p=()=>{r([]),c(null),u(!1)};return(0,d.useEffect)(()=>{l&&(x?h():p())},[t.url,t.transport,t.auth_type,s,l,x]),{tools:a,isLoadingTools:i,toolsError:o,hasShownSuccessMessage:m,canFetchTools:x,fetchTools:h,clearTools:p}};var nK=e=>{let{accessToken:s,formValues:t,allowedTools:l,existingAllowedTools:a,onAllowedToolsChange:r}=e,i=(0,d.useRef)(0),{tools:n,isLoadingTools:o,toolsError:m,canFetchTools:u}=nB({accessToken:s,formValues:t,enabled:!0});(0,d.useEffect)(()=>{if(n.length>0&&n.length!==i.current&&0===l.length){if(a&&a.length>0){let e=n.map(e=>e.name);r(a.filter(s=>e.includes(s)))}else r(n.map(e=>e.name))}i.current=n.length},[n,l.length,a,r]);let x=e=>{l.includes(e)?r(l.filter(s=>s!==e)):r([...l,e])};return u||t.url?(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)("div",{className:"flex items-center justify-between",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(rP.Z,{className:"text-blue-600"}),(0,c.jsx)(S.Z,{children:"Tool Configuration"}),n.length>0&&(0,c.jsx)(iQ.Z,{count:n.length,style:{backgroundColor:"#52c41a"}})]})}),(0,c.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-3",children:(0,c.jsxs)(k.Z,{className:"text-blue-800 text-sm",children:[(0,c.jsx)("strong",{children:"Select which tools users can call:"})," Only checked tools will be available for users to invoke. Unchecked tools will be blocked from execution."]})}),o&&(0,c.jsxs)("div",{className:"flex items-center justify-center py-6",children:[(0,c.jsx)(lO.Z,{size:"large"}),(0,c.jsx)(k.Z,{className:"ml-3",children:"Loading tools..."})]}),m&&!o&&(0,c.jsxs)("div",{className:"text-center py-6 text-red-500 border rounded-lg border-dashed border-red-300 bg-red-50",children:[(0,c.jsx)(rP.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:"Unable to load tools"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm text-red-500",children:m})]}),!o&&!m&&0===n.length&&u&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,c.jsx)(rP.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{children:"No tools available for configuration"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm",children:"Connect to an MCP server with tools to configure them"})]}),!u&&t.url&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,c.jsx)(rP.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{children:"Complete required fields to configure tools"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm",children:"Fill in URL, Transport, and Authentication to load available tools"})]}),!o&&!m&&n.length>0&&(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-green-50 rounded-lg border border-green-200 flex-1",children:[(0,c.jsx)(nV.Z,{className:"text-green-600"}),(0,c.jsxs)(k.Z,{className:"text-green-700 font-medium",children:[l.length," of ",n.length," ",1===n.length?"tool":"tools"," enabled for user access"]})]}),(0,c.jsxs)("div",{className:"flex gap-2 ml-3",children:[(0,c.jsx)("button",{type:"button",onClick:()=>{r(n.map(e=>e.name))},className:"px-3 py-1.5 text-sm text-blue-600 hover:text-blue-700 hover:bg-blue-50 rounded-md transition-colors",children:"Enable All"}),(0,c.jsx)("button",{type:"button",onClick:()=>{r([])},className:"px-3 py-1.5 text-sm text-gray-600 hover:text-gray-700 hover:bg-gray-100 rounded-md transition-colors",children:"Disable All"})]})]}),(0,c.jsx)("div",{className:"space-y-2",children:n.map((e,s)=>(0,c.jsx)("div",{className:"p-4 rounded-lg border transition-colors cursor-pointer ".concat(l.includes(e.name)?"bg-blue-50 border-blue-300 hover:border-blue-400":"bg-gray-50 border-gray-200 hover:border-gray-300"),onClick:()=>x(e.name),children:(0,c.jsxs)("div",{className:"flex items-start gap-3",children:[(0,c.jsx)(tc.Z,{checked:l.includes(e.name),onChange:()=>x(e.name)}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900",children:e.name}),(0,c.jsx)("span",{className:"px-2 py-0.5 text-xs rounded-full font-medium ".concat(l.includes(e.name)?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:l.includes(e.name)?"Enabled":"Disabled"})]}),e.description&&(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm block mt-1",children:e.description}),(0,c.jsx)(k.Z,{className:"text-gray-400 text-xs block mt-1",children:l.includes(e.name)?"✓ Users can call this tool":"✗ Users cannot call this tool"})]})]})},s))})]})]})}):null},nG=e=>{let{mcpServer:s,accessToken:t,onCancel:l,onSuccess:a,availableAccessGroups:r}=e,[i]=A.Z.useForm(),[n,o]=(0,d.useState)({}),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)(!1),[y,N]=(0,d.useState)([]);(0,d.useEffect)(()=>{var e;(null===(e=s.mcp_info)||void 0===e?void 0:e.mcp_server_cost_info)&&o(s.mcp_info.mcp_server_cost_info)},[s]),(0,d.useEffect)(()=>{s.allowed_tools&&N(s.allowed_tools)},[s]),(0,d.useEffect)(()=>{if(s.mcp_access_groups){let e=s.mcp_access_groups.map(e=>"string"==typeof e?e:e.name||String(e));i.setFieldValue("mcp_access_groups",e)}},[s]),(0,d.useEffect)(()=>{Z()},[s,t]);let Z=async()=>{if(t&&s.url){h(!0);try{let e={server_id:s.server_id,server_name:s.server_name,url:s.url,transport:s.transport,auth_type:s.auth_type,mcp_info:s.mcp_info},l=await (0,j.testMCPToolsListRequest)(t,e);l.tools&&!l.error?u(l.tools):(console.error("Failed to fetch tools:",l.message),u([]))}catch(e){console.error("Tools fetch error:",e),u([])}finally{h(!1)}}},w=async e=>{if(t)try{let l=(e.mcp_access_groups||[]).map(e=>"string"==typeof e?e:e.name||String(e)),r={...e,server_id:s.server_id,mcp_info:{server_name:e.server_name||e.url,description:e.description,mcp_server_cost_info:Object.keys(n).length>0?n:null},mcp_access_groups:l,alias:e.alias,extra_headers:e.extra_headers||[],allowed_tools:y.length>0?y:null,disallowed_tools:e.disallowed_tools||[]},i=await (0,j.updateMCPServer)(t,r);eo.Z.success("MCP Server updated successfully"),a(i)}catch(e){eo.Z.fromBackend("Failed to update MCP Server"+((null==e?void 0:e.message)?": ".concat(e.message):""))}};return(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{className:"grid w-full grid-cols-2",children:[(0,c.jsx)(e8.Z,{children:"Server Configuration"}),(0,c.jsx)(e8.Z,{children:"Cost Configuration"})]}),(0,c.jsxs)(ss.Z,{className:"mt-6",children:[(0,c.jsx)(se.Z,{children:(0,c.jsxs)(A.Z,{form:i,onFinish:w,initialValues:s,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"MCP Server Name",name:"server_name",rules:[{validator:(e,s)=>nA(s)}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Alias",name:"alias",rules:[{validator:(e,s)=>nA(s)}],children:(0,c.jsx)(_.Z,{onChange:()=>v(!0)})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"description",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"MCP Server URL",name:"url",rules:[{required:!0,message:"Please enter a server URL"},{validator:(e,s)=>nI(s)}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Transport Type",name:"transport",rules:[{required:!0}],children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:"sse",children:"Server-Sent Events (SSE)"}),(0,c.jsx)(I.default.Option,{value:"http",children:"HTTP"})]})}),(0,c.jsx)(A.Z.Item,{label:"Authentication",name:"auth_type",rules:[{required:!0}],children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:"none",children:"None"}),(0,c.jsx)(I.default.Option,{value:"api_key",children:"API Key"}),(0,c.jsx)(I.default.Option,{value:"bearer_token",children:"Bearer Token"}),(0,c.jsx)(I.default.Option,{value:"basic",children:"Basic Auth"})]})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nq,{availableAccessGroups:r,mcpServer:s,searchValue:p,setSearchValue:g,getAccessGroupOptions:()=>{let e=r.map(e=>({value:e,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e})]})}));return p&&!r.some(e=>e.toLowerCase().includes(p.toLowerCase()))&&e.push({value:p,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:p}),(0,c.jsx)("span",{className:"text-gray-400 text-xs ml-1",children:"create new group"})]})}),e}})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nK,{accessToken:t,formValues:{server_id:s.server_id,server_name:s.server_name,url:s.url,transport:s.transport,auth_type:s.auth_type,mcp_info:s.mcp_info},allowedTools:y,existingAllowedTools:s.allowed_tools||null,onAllowedToolsChange:N})}),(0,c.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,c.jsx)(L.ZP,{onClick:l,children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsx)(nz,{value:n,onChange:o,tools:m,disabled:x}),(0,c.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,c.jsx)(L.ZP,{onClick:l,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:()=>i.submit(),children:"Save Changes"})]})]})})]})]})},nH=e=>{let{costConfig:s}=e,t=(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null,l=(null==s?void 0:s.tool_name_to_cost_per_query)&&Object.keys(s.tool_name_to_cost_per_query).length>0;return t||l?(0,c.jsx)("div",{className:"mt-6 pt-6 border-t border-gray-200",children:(0,c.jsxs)("div",{className:"space-y-4",children:[t&&(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Default Cost per Query"}),(0,c.jsxs)("div",{className:"text-green-600 font-mono",children:["$",s.default_cost_per_query.toFixed(4)]})]}),l&&(null==s?void 0:s.tool_name_to_cost_per_query)&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Tool-Specific Costs"}),(0,c.jsx)("div",{className:"mt-2 space-y-2",children:Object.entries(s.tool_name_to_cost_per_query).map(e=>{let[s,t]=e;return null!=t&&(0,c.jsxs)("div",{className:"flex justify-between items-center p-3 bg-gray-50 rounded-lg",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:s}),(0,c.jsxs)(k.Z,{className:"text-green-600 font-mono",children:["$",t.toFixed(4)," per query"]})]},s)})})]}),(0,c.jsxs)("div",{className:"mt-4 p-4 bg-blue-50 border border-blue-200 rounded-lg",children:[(0,c.jsx)(k.Z,{className:"text-blue-800 font-medium",children:"Cost Summary:"}),(0,c.jsxs)("div",{className:"mt-2 space-y-1",children:[t&&(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• Default cost: $",s.default_cost_per_query.toFixed(4)," per query"]}),l&&(null==s?void 0:s.tool_name_to_cost_per_query)&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• ",Object.keys(s.tool_name_to_cost_per_query).length," tool(s) with custom pricing"]})]})]})]})}):(0,c.jsx)("div",{className:"mt-6 pt-6 border-t border-gray-200",children:(0,c.jsx)("div",{className:"space-y-4",children:(0,c.jsx)("div",{className:"p-4 bg-gray-50 border border-gray-200 rounded-lg",children:(0,c.jsx)(k.Z,{className:"text-gray-600",children:"No cost configuration set for this server. Tool calls will be charged at $0.00 per tool call."})})})})};let nY=e=>{var s,t,l,a,r;let{mcpServer:i,onBack:n,isEditing:o,isProxyAdmin:m,accessToken:u,userRole:x,userID:h,availableAccessGroups:p}=e,[g,j]=(0,d.useState)(o),[f,v]=(0,d.useState)(!1),[_,N]=(0,d.useState)({}),{maskedUrl:Z,hasToken:w}=nC(i.url),C=(e,s)=>w?s?e:Z:e,I=async(e,s)=>{await eM(e)&&(N(e=>({...e,[s]:!0})),setTimeout(()=>{N(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4 max-w-full",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",className:"mb-4",onClick:n,children:"Back to All Servers"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(S.Z,{children:i.server_name}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["mcp-server_name"]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>I(i.server_name,"mcp-server_name"),className:"left-2 z-10 transition-all duration-200 ".concat(_["mcp-server_name"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")}),i.alias&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{className:"ml-4 text-gray-500",children:"Alias:"}),(0,c.jsx)("span",{className:"ml-1 font-mono text-blue-600",children:i.alias}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["mcp-alias"]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>I(i.alias,"mcp-alias"),className:"left-2 z-10 transition-all duration-200 ".concat(_["mcp-alias"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:i.server_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["mcp-server-id"]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>I(i.server_id,"mcp-server-id"),className:"left-2 z-10 transition-all duration-200 ".concat(_["mcp-server-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,c.jsxs)(e7.Z,{defaultIndex:g?2:0,children:[(0,c.jsx)(e9.Z,{className:"mb-4",children:[(0,c.jsx)(e8.Z,{children:"Overview"},"overview"),(0,c.jsx)(e8.Z,{children:"MCP Tools"},"tools"),...m?[(0,c.jsx)(e8.Z,{children:"Settings"},"settings")]:[]]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsxs)(se.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Transport"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{children:nO(null!==(a=i.transport)&&void 0!==a?a:void 0)})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Auth Type"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(k.Z,{children:nD(null!==(r=i.auth_type)&&void 0!==r?r:void 0)})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Host Url"}),(0,c.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"break-all overflow-wrap-anywhere",children:C(i.url,f)}),w&&(0,c.jsx)("button",{onClick:()=>v(!f),className:"p-1 hover:bg-gray-100 rounded",children:(0,c.jsx)(sL.Z,{icon:f?nE.Z:nL.Z,size:"sm",className:"text-gray-500"})})]})]})]}),(0,c.jsxs)(G.Z,{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:"Cost Configuration"}),(0,c.jsx)(nH,{costConfig:null===(s=i.mcp_info)||void 0===s?void 0:s.mcp_server_cost_info})]})]}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(od,{serverId:i.server_id,accessToken:u,auth_type:i.auth_type,userRole:x,userID:h,serverAlias:i.alias})}),(0,c.jsx)(se.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"MCP Server Settings"}),g?null:(0,c.jsx)(b.Z,{variant:"light",onClick:()=>j(!0),children:"Edit Settings"})]}),g?(0,c.jsx)(nG,{mcpServer:i,accessToken:u,onCancel:()=>j(!1),onSuccess:e=>{j(!1),n()},availableAccessGroups:p}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Server Name"}),(0,c.jsx)("div",{children:i.server_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Alias"}),(0,c.jsx)("div",{children:i.alias})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Description"}),(0,c.jsx)("div",{children:i.description})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"URL"}),(0,c.jsxs)("div",{className:"font-mono break-all overflow-wrap-anywhere max-w-full flex items-center gap-2",children:[C(i.url,f),w&&(0,c.jsx)("button",{onClick:()=>v(!f),className:"p-1 hover:bg-gray-100 rounded",children:(0,c.jsx)(sL.Z,{icon:f?nE.Z:nL.Z,size:"sm",className:"text-gray-500"})})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Transport"}),(0,c.jsx)("div",{children:nO(i.transport)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Extra Headers"}),(0,c.jsx)("div",{children:null===(t=i.extra_headers)||void 0===t?void 0:t.join(", ")})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Auth Type"}),(0,c.jsx)("div",{children:nD(i.auth_type)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Access Groups"}),(0,c.jsx)("div",{children:i.mcp_access_groups&&i.mcp_access_groups.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:i.mcp_access_groups.map((e,s)=>{var t;return(0,c.jsx)("span",{className:"px-2 py-1 bg-gray-100 rounded-md text-sm",children:"string"==typeof e?e:null!==(t=null==e?void 0:e.name)&&void 0!==t?t:""},s)})}):(0,c.jsx)(k.Z,{className:"text-gray-500",children:"No access groups defined"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Allowed Tools"}),(0,c.jsx)("div",{children:i.allowed_tools&&i.allowed_tools.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:i.allowed_tools.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-50 border border-blue-200 rounded-md text-sm",children:e},s))}):(0,c.jsx)(k.Z,{className:"text-gray-500",children:"All tools enabled"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Cost Configuration"}),(0,c.jsx)(nH,{costConfig:null===(l=i.mcp_info)||void 0===l?void 0:l.mcp_server_cost_info})]})]})]})})]})]})]})};var nJ=e=>{let{accessToken:s,formValues:t,onToolsLoaded:l}=e,{tools:a,isLoadingTools:r,toolsError:i,canFetchTools:n,fetchTools:o}=nB({accessToken:s,formValues:t,enabled:!0});return((0,d.useEffect)(()=>{null==l||l(a)},[a,l]),n||t.url)?(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(nV.Z,{className:"text-blue-600"}),(0,c.jsx)(S.Z,{children:"Connection Status"})]}),!n&&t.url&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,c.jsx)(rP.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{children:"Complete required fields to test connection"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm",children:"Fill in URL, Transport, and Authentication to test MCP server connection"})]}),n&&(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-gray-700 font-medium",children:r?"Testing connection to MCP server...":a.length>0?"Connection successful":i?"Connection failed":"Ready to test connection"}),(0,c.jsx)("br",{}),(0,c.jsxs)(k.Z,{className:"text-gray-500 text-sm",children:["Server: ",t.url]})]}),r&&(0,c.jsxs)("div",{className:"flex items-center text-blue-600",children:[(0,c.jsx)(lO.Z,{size:"small",className:"mr-2"}),(0,c.jsx)(k.Z,{className:"text-blue-600",children:"Connecting..."})]}),!r&&!i&&a.length>0&&(0,c.jsxs)("div",{className:"flex items-center text-green-600",children:[(0,c.jsx)(nV.Z,{className:"mr-1"}),(0,c.jsx)(k.Z,{className:"text-green-600 font-medium",children:"Connected"})]}),i&&(0,c.jsxs)("div",{className:"flex items-center text-red-600",children:[(0,c.jsx)(l2.Z,{className:"mr-1"}),(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:"Failed"})]})]}),r&&(0,c.jsxs)("div",{className:"flex items-center justify-center py-6",children:[(0,c.jsx)(lO.Z,{size:"large"}),(0,c.jsx)(k.Z,{className:"ml-3",children:"Testing connection and loading tools..."})]}),i&&(0,c.jsx)(lo.Z,{message:"Connection Failed",description:i,type:"error",showIcon:!0,action:(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(tm.Z,{}),onClick:o,size:"small",children:"Retry"})}),!r&&0===a.length&&!i&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-500 border rounded-lg border-dashed",children:[(0,c.jsx)(nV.Z,{className:"text-2xl mb-2 text-green-500"}),(0,c.jsx)(k.Z,{className:"text-green-600 font-medium",children:"Connection successful!"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-gray-500",children:"No tools found for this MCP server"})]})]})]})}):null},nW=e=>{let{isVisible:s}=e;return s?(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Stdio Configuration (JSON)",(0,c.jsx)(B.Z,{title:"Paste your stdio MCP server configuration in JSON format. You can use the full mcpServers structure from config.yaml or just the inner server configuration.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"stdio_config",rules:[{required:!0,message:"Please enter stdio configuration"},{validator:(e,s)=>{if(!s)return Promise.resolve();try{return JSON.parse(s),Promise.resolve()}catch(e){return Promise.reject("Please enter valid JSON")}}}],children:(0,c.jsx)(P.default.TextArea,{placeholder:'{\n "mcpServers": {\n "circleci-mcp-server": {\n "command": "npx",\n "args": ["-y", "@circleci/mcp-server-circleci"],\n "env": {\n "CIRCLECI_TOKEN": "your-circleci-token",\n "CIRCLECI_BASE_URL": "https://circleci.com"\n }\n }\n }\n}',rows:12,className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500 font-mono text-sm"})}):null};let n$="".concat("../ui/assets/logos/","mcp_logo.png");var nQ=e=>{let{userRole:s,accessToken:t,onCreateSuccess:l,isModalVisible:a,setModalVisible:r,availableAccessGroups:i}=e,[n]=A.Z.useForm(),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)({}),[h,p]=(0,d.useState)({}),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)([]),[N,Z]=(0,d.useState)([]),[w,k]=(0,d.useState)(""),[S,C]=(0,d.useState)(""),[E,L]=(0,d.useState)(""),P=(e,s)=>{if(!e){L("");return}"sse"!==s||e.endsWith("/sse")?"http"!==s||e.endsWith("/mcp")?L(""):L("Typically MCP HTTP URLs end with /mcp. You can add this url but this is a warning."):L("Typically MCP SSE URLs end with /sse. You can add this url but this is a warning.")},M=async e=>{m(!0);try{let s=e.mcp_access_groups,a={};if(e.stdio_config&&"stdio"===w)try{let s=JSON.parse(e.stdio_config),t=s;if(s.mcpServers&&"object"==typeof s.mcpServers){let l=Object.keys(s.mcpServers);if(l.length>0){let a=l[0];t=s.mcpServers[a],e.server_name||(e.server_name=a.replace(/-/g,"_"))}}a={command:t.command,args:t.args,env:t.env},console.log("Parsed stdio config:",a)}catch(e){eo.Z.fromBackend("Invalid JSON in stdio configuration");return}let i={...e,...a,stdio_config:void 0,mcp_info:{server_name:e.server_name||e.url,description:e.description,mcp_server_cost_info:Object.keys(u).length>0?u:null},mcp_access_groups:s,alias:e.alias,allowed_tools:N.length>0?N:null};if(console.log("Payload: ".concat(JSON.stringify(i))),null!=t){let e=await (0,j.createMCPServer)(t,i);eo.Z.success("MCP Server created successfully"),n.resetFields(),x({}),y([]),Z([]),L(""),f(!1),r(!1),l(e)}}catch(e){eo.Z.fromBackend("Error creating MCP Server: "+e)}finally{m(!1)}},O=()=>{n.resetFields(),x({}),y([]),Z([]),L(""),f(!1),r(!1)};return(d.useEffect(()=>{if(!g&&h.server_name){let e=h.server_name.replace(/\s+/g,"_");n.setFieldsValue({alias:e}),p(s=>({...s,alias:e}))}},[h.server_name]),d.useEffect(()=>{a||p({})},[a]),(0,eI.tY)(s))?(0,c.jsx)(T.Z,{title:(0,c.jsxs)("div",{className:"flex items-center space-x-3 pb-4 border-b border-gray-100",children:[(0,c.jsx)("img",{src:n$,alt:"MCP Logo",className:"w-8 h-8 object-contain",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"}}),(0,c.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add New MCP Server"})]}),open:a,width:1e3,onCancel:O,footer:null,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsxs)(A.Z,{form:n,onFinish:M,onValuesChange:(e,s)=>p(s),layout:"vertical",className:"space-y-6",children:[(0,c.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["MCP Server Name",(0,c.jsx)(B.Z,{title:"Best practice: Use a descriptive name that indicates the server's purpose (e.g., 'GitHub_MCP', 'Email_Service'). Hyphens '-' are not allowed; use underscores '_' instead.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"server_name",rules:[{required:!1,message:"Please enter a server name"},{validator:(e,s)=>nA(s)}],children:(0,c.jsx)(_.Z,{placeholder:"e.g., GitHub_MCP, Zapier_MCP, etc.",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Alias",(0,c.jsx)(B.Z,{title:"A short, unique identifier for this server. Defaults to the server name with spaces replaced by underscores.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"alias",rules:[{required:!1},{validator:(e,s)=>s&&s.includes("-")?Promise.reject("Alias cannot contain '-' (hyphen). Please use '_' (underscore) instead."):Promise.resolve()}],children:(0,c.jsx)(_.Z,{placeholder:"e.g., GitHub_MCP, Zapier_MCP, etc.",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500",onChange:()=>f(!0)})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Description"}),name:"description",rules:[{required:!1,message:"Please enter a server description!!!!!!!!!"}],children:(0,c.jsx)(_.Z,{placeholder:"Brief description of what this server does",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Transport Type"}),name:"transport",rules:[{required:!0,message:"Please select a transport type"}],children:(0,c.jsxs)(I.default,{placeholder:"Select transport",className:"rounded-lg",size:"large",onChange:e=>{if(k(e),"stdio"===e)n.setFieldsValue({url:void 0,auth_type:void 0}),L("");else{n.setFieldsValue({command:void 0,args:void 0,env:void 0});let s=n.getFieldValue("url");s&&P(s,e)}},value:w,children:[(0,c.jsx)(I.default.Option,{value:"http",children:"HTTP"}),(0,c.jsx)(I.default.Option,{value:"sse",children:"Server-Sent Events (SSE)"}),(0,c.jsx)(I.default.Option,{value:"stdio",children:"Standard Input/Output (stdio)"})]})}),"stdio"!==w&&(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"MCP Server URL"}),name:"url",rules:[{required:!0,message:"Please enter a server URL"},{validator:(e,s)=>nI(s)}],children:(0,c.jsxs)("div",{children:[(0,c.jsx)(_.Z,{placeholder:"https://your-mcp-server.com",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500",onChange:e=>P(e.target.value,w)}),E&&(0,c.jsx)("div",{className:"mt-1 text-red-500 text-sm font-medium",children:E})]})}),"stdio"!==w&&(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Authentication"}),name:"auth_type",rules:[{required:!0,message:"Please select an auth type"}],children:(0,c.jsxs)(I.default,{placeholder:"Select auth type",className:"rounded-lg",size:"large",children:[(0,c.jsx)(I.default.Option,{value:"none",children:"None"}),(0,c.jsx)(I.default.Option,{value:"api_key",children:"API Key"}),(0,c.jsx)(I.default.Option,{value:"bearer_token",children:"Bearer Token"}),(0,c.jsx)(I.default.Option,{value:"basic",children:"Basic Auth"})]})}),(0,c.jsx)(nW,{isVisible:"stdio"===w})]}),(0,c.jsx)("div",{className:"mt-8",children:(0,c.jsx)(nq,{availableAccessGroups:i,mcpServer:null,searchValue:S,setSearchValue:C,getAccessGroupOptions:()=>{let e=i.map(e=>({value:e,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e})]})}));return S&&!i.some(e=>e.toLowerCase().includes(S.toLowerCase()))&&e.push({value:S,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:S}),(0,c.jsx)("span",{className:"text-gray-400 text-xs ml-1",children:"create new group"})]})}),e}})}),(0,c.jsx)("div",{className:"mt-8 pt-6 border-t border-gray-200",children:(0,c.jsx)(nJ,{accessToken:t,formValues:h,onToolsLoaded:y})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nK,{accessToken:t,formValues:h,allowedTools:N,existingAllowedTools:null,onAllowedToolsChange:Z})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nz,{value:u,onChange:x,tools:v.filter(e=>N.includes(e.name)),disabled:!1})}),(0,c.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:O,children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",loading:o,children:o?"Creating...":"Add MCP Server"})]})]})})}):null},nX=t(64935),n0=t(11239),n1=t(54001),n2=t(96137),n4=t(96362),n5=t(80221),n3=t(29202);let{Title:n6,Text:n8}=en.default,{Panel:n7}=tI.default,n9=e=>{let{icon:s,title:t,description:l,children:a,serverName:r,accessGroups:i=["dev"]}=e,[n,o]=(0,d.useState)(!1),m=()=>{let e={"x-litellm-api-key":"Bearer YOUR_LITELLM_API_KEY"};if(n&&r){let s=[r.replace(/\s+/g,"_"),...i].join(",");e["x-mcp-servers"]=[s]}return e};return(0,c.jsxs)(tA.Z,{className:"border border-gray-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)("span",{className:"p-2 rounded-lg bg-gray-50",children:s}),(0,c.jsxs)("div",{children:[(0,c.jsx)(n6,{level:5,className:"mb-0",children:t}),(0,c.jsx)(n8,{className:"text-gray-600",children:l})]})]}),r&&("Implementation Example"===t||"Configuration"===t)&&(0,c.jsxs)(A.Z.Item,{className:"mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(eK.Z,{size:"small",checked:n,onChange:o}),(0,c.jsxs)(n8,{className:"text-sm",children:["Limit tools to specific MCP servers or MCP groups by passing the ",(0,c.jsx)("code",{children:"x-mcp-servers"})," header"]})]}),n&&(0,c.jsx)(lo.Z,{className:"mt-2",type:"info",showIcon:!0,message:"Two Options",description:(0,c.jsxs)("div",{children:[(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Option 1:"})," Get a specific server: ",(0,c.jsxs)("code",{children:['["',r.replace(/\s+/g,"_"),'"]']})]}),(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Option 2:"})," Get a group of MCPs: ",(0,c.jsx)("code",{children:'["dev-group"]'})]}),(0,c.jsxs)("p",{className:"mt-2 text-sm text-gray-600",children:["You can also mix both: ",(0,c.jsx)("code",{children:'["Server1,dev-group"]'})]})]})})]}),d.Children.map(a,e=>{if(d.isValidElement(e)&&e.props.hasOwnProperty("code")&&e.props.hasOwnProperty("copyKey")){let s=e.props.code;if(s&&s.includes('"headers":'))return d.cloneElement(e,{code:s.replace(/"headers":\s*{[^}]*}/,'"headers": '.concat(JSON.stringify(m(),null,8)))})}return e})]})};var oe=e=>{let{currentServerAccessGroups:s=[]}=e,t=(0,j.getProxyBaseUrl)(),[l,a]=(0,d.useState)({}),[r,i]=(0,d.useState)({openai:[],litellm:[],cursor:[],http:[]}),[n]=(0,d.useState)("Zapier_MCP"),o=async(e,s)=>{await eM(e)&&(a(e=>({...e,[s]:!0})),setTimeout(()=>{a(e=>({...e,[s]:!1}))},2e3))},m=e=>{let{code:s,copyKey:t,title:a,className:r=""}=e;return(0,c.jsxs)("div",{className:"relative group",children:[a&&(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(nX.Z,{size:16,className:"text-blue-600"}),(0,c.jsx)(n8,{strong:!0,className:"text-gray-700",children:a})]}),(0,c.jsxs)(tA.Z,{className:"bg-gray-50 border border-gray-200 relative ".concat(r),children:[(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:l[t]?(0,c.jsx)(sf.Z,{size:12}):(0,c.jsx)(sv.Z,{size:12}),onClick:()=>o(s,t),className:"absolute top-2 right-2 z-10 transition-all duration-200 ".concat(l[t]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")}),(0,c.jsx)("pre",{className:"text-sm overflow-x-auto pr-10 text-gray-800 font-mono leading-relaxed",children:s})]})]})},u=e=>{let{step:s,title:t,children:l}=e;return(0,c.jsxs)("div",{className:"flex gap-4",children:[(0,c.jsx)("div",{className:"flex-shrink-0",children:(0,c.jsx)("div",{className:"w-8 h-8 bg-blue-600 text-white rounded-full flex items-center justify-center text-sm font-semibold",children:s})}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(n8,{strong:!0,className:"text-gray-800 block mb-2",children:t}),l]})]})};return(0,c.jsx)("div",{children:(0,c.jsxs)(t6.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{className:"text-3xl font-bold text-gray-900 mb-3",children:"Connect to your MCP client"}),(0,c.jsx)(k.Z,{className:"text-lg text-gray-600",children:"Use tools directly from any MCP client with LiteLLM MCP. Enable your AI assistant to perform real-world tasks through a simple, secure connection."})]}),(0,c.jsxs)(e7.Z,{className:"w-full",children:[(0,c.jsx)(e9.Z,{className:"flex justify-start mt-8 mb-6",children:(0,c.jsxs)("div",{className:"flex bg-gray-100 p-1 rounded-lg",children:[(0,c.jsx)(e8.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(nX.Z,{size:18}),"OpenAI API"]})}),(0,c.jsx)(e8.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n0.Z,{size:18}),"LiteLLM Proxy"]})}),(0,c.jsx)(e8.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n5.Z,{size:18}),"Cursor"]})}),(0,c.jsx)(e8.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n3.Z,{size:18}),"Streamable HTTP"]})})]})}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t6.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-blue-50 to-indigo-50 p-6 rounded-lg border border-blue-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(nX.Z,{className:"text-blue-600",size:24}),(0,c.jsx)(n6,{level:4,className:"mb-0 text-blue-900",children:"OpenAI Responses API Integration"})]}),(0,c.jsx)(n8,{className:"text-blue-700",children:"Connect OpenAI Responses API to your LiteLLM MCP server for seamless tool integration"})]}),(0,c.jsxs)(t6.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsx)(n9,{icon:(0,c.jsx)(n1.Z,{className:"text-blue-600",size:16}),title:"API Key Setup",description:"Configure your OpenAI API key for authentication",children:(0,c.jsxs)(t6.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,c.jsx)("div",{children:(0,c.jsxs)(n8,{children:["Get your API key from the"," ",(0,c.jsxs)("a",{href:"https://platform.openai.com/api-keys",target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-700 inline-flex items-center gap-1",children:["OpenAI platform ",(0,c.jsx)(n4.Z,{size:12})]})]})}),(0,c.jsx)(m,{title:"Environment Variable",code:'export OPENAI_API_KEY="sk-..."',copyKey:"openai-env"})]})}),(0,c.jsx)(n9,{icon:(0,c.jsx)(n2.Z,{className:"text-blue-600",size:16}),title:"MCP Server Information",description:"Connection details for your LiteLLM MCP server",children:(0,c.jsx)(m,{title:"Server URL",code:"".concat(t,"/mcp"),copyKey:"openai-server-url"})}),(0,c.jsx)(n9,{icon:(0,c.jsx)(nX.Z,{className:"text-blue-600",size:16}),title:"Implementation Example",description:"Complete cURL example for using the Responses API",serverName:"Zapier Gmail",accessGroups:["dev"],children:(0,c.jsx)(m,{code:'curl --location \'https://api.openai.com/v1/responses\' \\\n--header \'Content-Type: application/json\' \\\n--header "Authorization: Bearer $OPENAI_API_KEY" \\\n--data \'{\n "model": "gpt-4.1",\n "tools": [\n {\n "type": "mcp",\n "server_label": "litellm",\n "server_url": "'.concat(t,'/mcp",\n "require_approval": "never",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n ],\n "input": "Run available tools",\n "tool_choice": "required"\n}\''),copyKey:"openai-curl",className:"text-xs"})})]})]}),{})}),(0,c.jsx)(se.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t6.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-emerald-50 to-green-50 p-6 rounded-lg border border-emerald-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n0.Z,{className:"text-emerald-600",size:24}),(0,c.jsx)(n6,{level:4,className:"mb-0 text-emerald-900",children:"LiteLLM Proxy API Integration"})]}),(0,c.jsx)(n8,{className:"text-emerald-700",children:"Connect to LiteLLM Proxy Responses API for seamless tool integration with multiple model providers"})]}),(0,c.jsxs)(t6.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsx)(n9,{icon:(0,c.jsx)(n1.Z,{className:"text-emerald-600",size:16}),title:"API Key Setup",description:"Configure your LiteLLM Proxy API key for authentication",children:(0,c.jsxs)(t6.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,c.jsx)("div",{children:(0,c.jsx)(n8,{children:"Get your API key from your LiteLLM Proxy dashboard or contact your administrator"})}),(0,c.jsx)(m,{title:"Environment Variable",code:'export LITELLM_API_KEY="sk-..."',copyKey:"litellm-env"})]})}),(0,c.jsx)(n9,{icon:(0,c.jsx)(n2.Z,{className:"text-emerald-600",size:16}),title:"MCP Server Information",description:"Connection details for your LiteLLM MCP server",children:(0,c.jsx)(m,{title:"Server URL",code:"".concat(t,"/mcp"),copyKey:"litellm-server-url"})}),(0,c.jsx)(n9,{icon:(0,c.jsx)(nX.Z,{className:"text-emerald-600",size:16}),title:"Implementation Example",description:"Complete cURL example for using the LiteLLM Proxy Responses API",serverName:n,accessGroups:["dev"],children:(0,c.jsx)(m,{code:"curl --location '".concat(t,'/v1/responses\' \\\n--header \'Content-Type: application/json\' \\\n--header "Authorization: Bearer $LITELLM_API_KEY" \\\n--data \'{\n "model": "gpt-4",\n "tools": [\n {\n "type": "mcp",\n "server_label": "litellm",\n "server_url": "').concat(t,'/mcp",\n "require_approval": "never",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n ],\n "input": "Run available tools",\n "tool_choice": "required"\n}\''),copyKey:"litellm-curl",className:"text-xs"})})]})]}),{})}),(0,c.jsx)(se.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t6.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-purple-50 to-blue-50 p-6 rounded-lg border border-purple-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n5.Z,{className:"text-purple-600",size:24}),(0,c.jsx)(n6,{level:4,className:"mb-0 text-purple-900",children:"Cursor IDE Integration"})]}),(0,c.jsx)(n8,{className:"text-purple-700",children:"Use tools directly from Cursor IDE with LiteLLM MCP. Enable your AI assistant to perform real-world tasks without leaving your coding environment."})]}),(0,c.jsxs)(tA.Z,{className:"border border-gray-200",children:[(0,c.jsx)(n6,{level:5,className:"mb-4 text-gray-800",children:"Setup Instructions"}),(0,c.jsxs)(t6.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsx)(u,{step:1,title:"Open Cursor Settings",children:(0,c.jsxs)(n8,{className:"text-gray-600",children:["Use the keyboard shortcut ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"⇧+⌘+J"})," (Mac) or"," ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Ctrl+Shift+J"})," (Windows/Linux)"]})}),(0,c.jsx)(u,{step:2,title:"Navigate to MCP Tools",children:(0,c.jsx)(n8,{className:"text-gray-600",children:'Go to the "MCP Tools" tab and click "New MCP Server"'})}),(0,c.jsxs)(u,{step:3,title:"Add Configuration",children:[(0,c.jsxs)(n8,{className:"text-gray-600 mb-3",children:["Copy the JSON configuration below and paste it into Cursor, then save with"," ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Cmd+S"})," or"," ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Ctrl+S"})]}),(0,c.jsx)(n9,{icon:(0,c.jsx)(nX.Z,{className:"text-purple-600",size:16}),title:"Configuration",description:"Cursor MCP configuration",serverName:"Zapier Gmail",accessGroups:["dev"],children:(0,c.jsx)(m,{code:'{\n "mcpServers": {\n "Zapier_MCP": {\n "server_url": "'.concat(t,'/mcp",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n }\n}'),copyKey:"cursor-config",className:"text-xs"})})]})]})]})]}),{})}),(0,c.jsx)(se.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t6.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-green-50 to-teal-50 p-6 rounded-lg border border-green-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n3.Z,{className:"text-green-600",size:24}),(0,c.jsx)(n6,{level:4,className:"mb-0 text-green-900",children:"Streamable HTTP Transport"})]}),(0,c.jsx)(n8,{className:"text-green-700",children:"Connect to LiteLLM MCP using HTTP transport. Compatible with any MCP client that supports HTTP streaming."})]}),(0,c.jsx)(n9,{icon:(0,c.jsx)(n3.Z,{className:"text-green-600",size:16}),title:"Universal MCP Connection",description:"Use this URL with any MCP client that supports HTTP transport",children:(0,c.jsxs)(t6.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,c.jsx)("div",{children:(0,c.jsx)(n8,{children:"Each MCP client supports different transports. Refer to your client documentation to determine the appropriate transport method."})}),(0,c.jsx)(m,{title:"Server URL",code:"".concat(t,"/mcp"),copyKey:"http-server-url"}),(0,c.jsx)(m,{title:"Headers Configuration",code:JSON.stringify({"x-litellm-api-key":"Bearer YOUR_LITELLM_API_KEY"},null,2),copyKey:"http-headers"}),(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(L.ZP,{type:"link",className:"p-0 h-auto text-blue-600 hover:text-blue-700",href:"https://modelcontextprotocol.io/docs/concepts/transports",icon:(0,c.jsx)(n4.Z,{size:14}),children:"Learn more about MCP transports"})})]})})]}),{})})]})]})]})})};let{Option:os}=I.default,ot=e=>{let{isModalOpen:s,title:t,confirmDelete:l,cancelDelete:a}=e;return s?(0,c.jsx)(T.Z,{open:s,onOk:l,okType:"danger",onCancel:a,children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:t}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)("p",{children:"Are you sure you want to delete this MCP Server?"})})]})}):null};var ol=e=>{let{accessToken:s,userRole:t,userID:l}=e,{data:a,isLoading:r,refetch:i,dataUpdatedAt:n}=(0,sk.a)({queryKey:["mcpServers"],queryFn:()=>{if(!s)throw Error("Access Token required");return(0,j.fetchMCPServers)(s)},enabled:!!s});d.useEffect(()=>{a&&(console.log("MCP Servers fetched:",a),a.forEach(e=>{console.log("Server: ".concat(e.server_name||e.server_id)),console.log(" allowed_tools:",e.allowed_tools)}))},[a]);let[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(null),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)("all"),[_,N]=(0,d.useState)("all"),[Z,w]=(0,d.useState)([]),[C,A]=(0,d.useState)(!1),T="Internal User"===t,E=d.useMemo(()=>{if(!a)return[];let e=new Set,s=[];return a.forEach(t=>{t.teams&&t.teams.forEach(t=>{let l=t.team_id;e.has(l)||(e.add(l),s.push(t))})}),s},[a]),L=d.useMemo(()=>a?Array.from(new Set(a.flatMap(e=>e.mcp_access_groups).filter(e=>null!=e))):[],[a]),P=e=>{y(e),O(e,_)},M=e=>{N(e),O(v,e)},O=(e,s)=>{if(!a)return w([]);let t=a;if("personal"===e){w([]);return}"all"!==e&&(t=t.filter(s=>{var t;return null===(t=s.teams)||void 0===t?void 0:t.some(s=>s.team_id===e)})),"all"!==s&&(t=t.filter(e=>{var t;return null===(t=e.mcp_access_groups)||void 0===t?void 0:t.some(e=>"string"==typeof e?e===s:e&&e.name===s)})),w(t)};(0,d.useEffect)(()=>{O(v,_)},[n]);let D=d.useMemo(()=>nT(null!=t?t:"",e=>{p(e),f(!1)},e=>{p(e),f(!0)},F),[t]);function F(e){m(e),x(!0)}let R=async()=>{if(null!=o&&null!=s){try{await (0,j.deleteMCPServer)(s,o),eo.Z.success("Deleted MCP Server successfully"),i()}catch(e){console.error("Error deleting the mcp server:",e)}x(!1),m(null)}};return s&&t&&l?(0,c.jsxs)("div",{className:"w-full h-full p-6",children:[(0,c.jsx)(ot,{isModalOpen:u,title:"Delete MCP Server",confirmDelete:R,cancelDelete:()=>{x(!1),m(null)}}),(0,c.jsx)(nQ,{userRole:t,accessToken:s,onCreateSuccess:e=>{w(s=>[...s,e]),A(!1)},isModalVisible:C,setModalVisible:A,availableAccessGroups:L}),(0,c.jsx)(S.Z,{children:"MCP Servers"}),(0,c.jsx)(k.Z,{className:"text-tremor-content mt-2",children:"Configure and manage your MCP servers"}),(0,eI.tY)(t)&&(0,c.jsx)(b.Z,{className:"mt-4 mb-4",onClick:()=>A(!0),children:"+ Add New MCP Server"}),(0,c.jsxs)(e7.Z,{className:"w-full h-full",children:[(0,c.jsx)(e9.Z,{className:"flex justify-between mt-2 w-full items-center",children:(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(e8.Z,{children:"All Servers"}),(0,c.jsx)(e8.Z,{children:"Connect"})]})}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:(0,c.jsx)(()=>h?(0,c.jsx)(nY,{mcpServer:Z.find(e=>e.server_id===h)||{server_id:"",server_name:"",alias:"",url:"",transport:"",auth_type:"",created_at:"",created_by:"",updated_at:"",updated_by:""},onBack:()=>{f(!1),p(null),i()},isProxyAdmin:(0,eI.tY)(t),isEditing:g,accessToken:s,userID:l,userRole:t,availableAccessGroups:L}):(0,c.jsxs)("div",{className:"w-full h-full",children:[(0,c.jsx)("div",{className:"w-full px-6",children:(0,c.jsx)("div",{className:"flex flex-col space-y-4",children:(0,c.jsx)("div",{className:"flex items-center justify-between bg-gray-50 rounded-lg p-4 border-2 border-gray-200",children:(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold text-gray-900",children:"Current Team:"}),(0,c.jsxs)(I.default,{value:v,onChange:P,style:{width:300},children:[(0,c.jsx)(os,{value:"all",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:T?"All Available Servers":"All Servers"})]})}),(0,c.jsx)(os,{value:"personal",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"Personal"})]})}),E.map(e=>(0,c.jsx)(os,{value:e.team_id,children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e.team_alias||e.team_id})]})},e.team_id))]}),(0,c.jsxs)(k.Z,{className:"text-lg font-semibold text-gray-900 ml-6",children:["Access Group:",(0,c.jsx)(B.Z,{title:"An MCP Access Group is a set of users or teams that have permission to access specific MCP servers. Use access groups to control and organize who can connect to which servers.",children:(0,c.jsx)(tF.Z,{style:{marginLeft:4,color:"#888"}})})]}),(0,c.jsxs)(I.default,{value:_,onChange:M,style:{width:300},children:[(0,c.jsx)(os,{value:"all",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"All Access Groups"})]})}),L.map(e=>(0,c.jsx)(os,{value:e,children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e})]})},e))]})]})})})}),(0,c.jsx)("div",{className:"w-full px-6 mt-6",children:(0,c.jsx)(ly,{data:Z,columns:D,renderSubComponent:()=>(0,c.jsx)("div",{}),getRowCanExpand:()=>!1,isLoading:r,noDataMessage:"No MCP servers configured"})})]}),{})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(oe,{})})]})]})]}):(console.log("Missing required authentication parameters",{accessToken:s,userRole:t,userID:l}),(0,c.jsx)("div",{className:"p-6 text-center text-gray-500",children:"Missing required authentication parameters."}))},oa=t(21770);function or(e){let{tool:s,needsAuth:t,authValue:l,onSubmit:a,isLoading:r,result:i,error:n,onClose:o}=e,[m]=A.Z.useForm(),[u,x]=d.useState("formatted"),[h,p]=d.useState(null),[g,j]=d.useState(null),f=d.useMemo(()=>"string"==typeof s.inputSchema?{type:"object",properties:{input:{type:"string",description:"Input for this tool"}},required:["input"]}:s.inputSchema,[s.inputSchema]),v=d.useMemo(()=>f.properties&&f.properties.params&&"object"===f.properties.params.type&&f.properties.params.properties?{type:"object",properties:f.properties.params.properties,required:f.properties.params.required||[]}:f,[f]);d.useEffect(()=>{h&&(i||n)&&j(Date.now()-h)},[i,n,h]);let y=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let s=document.createElement("textarea");s.value=e,s.style.position="fixed",s.style.opacity="0",document.body.appendChild(s),s.focus(),s.select();let t=document.execCommand("copy");if(document.body.removeChild(s),!t)throw Error("execCommand failed");return!0}}catch(e){return console.error("Copy failed:",e),!1}},N=async()=>{await y(JSON.stringify(i,null,2))?eo.Z.success("Result copied to clipboard"):eo.Z.fromBackend("Failed to copy result")},Z=async()=>{await y(s.name)?eo.Z.success("Tool name copied to clipboard"):eo.Z.fromBackend("Failed to copy tool name")};return(0,c.jsxs)("div",{className:"space-y-4 h-full",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between pb-3 border-b border-gray-200",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-3",children:[s.mcp_info.logo_url&&(0,c.jsx)("img",{src:s.mcp_info.logo_url,alt:"".concat(s.mcp_info.server_name," logo"),className:"w-6 h-6 object-contain"}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2 mb-1",children:[(0,c.jsx)("h2",{className:"text-lg font-semibold text-gray-900",children:"Test Tool:"}),(0,c.jsxs)("div",{className:"group inline-flex items-center space-x-1 bg-slate-50 hover:bg-slate-100 px-3 py-1 rounded-md cursor-pointer transition-colors border border-slate-200",onClick:Z,title:"Click to copy tool name",children:[(0,c.jsx)("span",{className:"font-mono text-slate-700 font-medium text-sm",children:s.name}),(0,c.jsx)("svg",{className:"w-3 h-3 text-slate-400 group-hover:text-slate-600 transition-colors",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})]})]}),(0,c.jsx)("p",{className:"text-xs text-gray-600",children:s.description}),(0,c.jsxs)("p",{className:"text-xs text-gray-500",children:["Provider: ",s.mcp_info.server_name]})]})]}),(0,c.jsx)(b.Z,{onClick:o,variant:"light",size:"sm",className:"text-gray-500 hover:text-gray-700",children:(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4 h-full",children:[(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg",children:[(0,c.jsx)("div",{className:"border-b border-gray-100 px-4 py-2",children:(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:"Input Parameters"}),(0,c.jsx)(B.Z,{title:"Configure the input parameters for this tool call",children:(0,c.jsx)(V.Z,{className:"text-gray-400 hover:text-gray-600"})})]})}),(0,c.jsx)("div",{className:"p-4",children:(0,c.jsxs)(A.Z,{form:m,onFinish:e=>{p(Date.now()),j(null);let s={};Object.entries(e).forEach(e=>{var t;let[l,a]=e,r=null===(t=v.properties)||void 0===t?void 0:t[l];if(r&&null!=a&&""!==a)switch(r.type){case"boolean":s[l]="true"===a||!0===a;break;case"number":s[l]=Number(a);break;case"string":s[l]=String(a);break;default:s[l]=a}else null!=a&&""!==a&&(s[l]=a)}),a(f.properties&&f.properties.params&&"object"===f.properties.params.type&&f.properties.params.properties?{params:s}:s)},layout:"vertical",className:"space-y-3",children:["string"==typeof s.inputSchema?(0,c.jsx)("div",{className:"space-y-3",children:(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Input ",(0,c.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"input",rules:[{required:!0,message:"Please enter input for this tool"}],className:"mb-3",children:(0,c.jsx)(_.Z,{placeholder:"Enter input for this tool",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})})}):void 0===v.properties?(0,c.jsx)("div",{className:"text-center py-6 bg-gray-50 rounded-lg border border-gray-200",children:(0,c.jsxs)("div",{className:"max-w-sm mx-auto",children:[(0,c.jsx)("h4",{className:"text-sm font-medium text-gray-900 mb-1",children:"No Parameters Required"}),(0,c.jsx)("p",{className:"text-xs text-gray-500",children:"This tool can be called without any input parameters."})]})}):(0,c.jsx)("div",{className:"space-y-3",children:Object.entries(v.properties).map(e=>{var s,t,l,a,r;let[i,n]=e;return(0,c.jsxs)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:[i," ",(null===(s=v.required)||void 0===s?void 0:s.includes(i))&&(0,c.jsx)("span",{className:"text-red-500",children:"*"}),n.description&&(0,c.jsx)(B.Z,{title:n.description,children:(0,c.jsx)(V.Z,{className:"ml-2 text-gray-400 hover:text-gray-600"})})]}),name:i,rules:[{required:null===(t=v.required)||void 0===t?void 0:t.includes(i),message:"Please enter ".concat(i)}],className:"mb-3",children:["string"===n.type&&n.enum&&(0,c.jsxs)("select",{className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors",defaultValue:n.default,children:[!(null===(l=v.required)||void 0===l?void 0:l.includes(i))&&(0,c.jsxs)("option",{value:"",children:["Select ",i]}),n.enum.map(e=>(0,c.jsx)("option",{value:e,children:e},e))]}),"string"===n.type&&!n.enum&&(0,c.jsx)(_.Z,{placeholder:n.description||"Enter ".concat(i),className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"}),"number"===n.type&&(0,c.jsx)("input",{type:"number",placeholder:n.description||"Enter ".concat(i),className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors"}),"boolean"===n.type&&(0,c.jsxs)("select",{className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors",defaultValue:(null===(a=n.default)||void 0===a?void 0:a.toString())||"",children:[!(null===(r=v.required)||void 0===r?void 0:r.includes(i))&&(0,c.jsxs)("option",{value:"",children:["Select ",i]}),(0,c.jsx)("option",{value:"true",children:"True"}),(0,c.jsx)("option",{value:"false",children:"False"})]})]},i)})}),(0,c.jsx)("div",{className:"pt-3 border-t border-gray-100",children:(0,c.jsx)(b.Z,{onClick:()=>m.submit(),disabled:r,variant:"primary",className:"w-full",loading:r,children:r?"Calling Tool...":i||n?"Call Again":"Call Tool"})})]})})]}),(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg",children:[(0,c.jsx)("div",{className:"border-b border-gray-100 px-4 py-2",children:(0,c.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:"Tool Result"})}),(0,c.jsx)("div",{className:"p-4",children:i||n||r?(0,c.jsxs)("div",{className:"space-y-3",children:[i&&!r&&!n&&(0,c.jsx)("div",{className:"p-2 bg-green-50 border border-green-200 rounded-lg",children:(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("svg",{className:"h-4 w-4 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}),(0,c.jsx)("h4",{className:"text-xs font-medium text-green-900",children:"Tool executed successfully"}),null!==g&&(0,c.jsxs)("span",{className:"text-xs text-green-600 ml-1",children:["• ",(g/1e3).toFixed(2),"s"]})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-1",children:[(0,c.jsxs)("div",{className:"flex bg-white rounded border border-green-300 p-0.5",children:[(0,c.jsx)("button",{onClick:()=>x("formatted"),className:"px-2 py-1 text-xs font-medium rounded transition-colors ".concat("formatted"===u?"bg-green-100 text-green-800":"text-green-600 hover:text-green-800"),children:"Formatted"}),(0,c.jsx)("button",{onClick:()=>x("json"),className:"px-2 py-1 text-xs font-medium rounded transition-colors ".concat("json"===u?"bg-green-100 text-green-800":"text-green-600 hover:text-green-800"),children:"JSON"})]}),(0,c.jsx)("button",{onClick:N,className:"p-1 hover:bg-green-100 rounded text-green-700",title:"Copy response",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]})]})}),(0,c.jsxs)("div",{className:"max-h-96 overflow-y-auto",children:[r&&(0,c.jsxs)("div",{className:"flex flex-col justify-center items-center h-48 text-gray-500",children:[(0,c.jsxs)("div",{className:"relative",children:[(0,c.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-gray-200"}),(0,c.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-blue-600 border-t-transparent absolute top-0"})]}),(0,c.jsx)("p",{className:"text-sm font-medium mt-3",children:"Calling tool..."}),(0,c.jsx)("p",{className:"text-xs text-gray-400 mt-1",children:"Please wait while we process your request"})]}),n&&(0,c.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-lg p-3",children:(0,c.jsxs)("div",{className:"flex items-start space-x-2",children:[(0,c.jsx)("div",{className:"flex-shrink-0",children:(0,c.jsx)("svg",{className:"h-4 w-4 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2 mb-1",children:[(0,c.jsx)("h4",{className:"text-xs font-medium text-red-900",children:"Tool Call Failed"}),null!==g&&(0,c.jsxs)("span",{className:"text-xs text-red-600",children:["• ",(g/1e3).toFixed(2),"s"]})]}),(0,c.jsx)("div",{className:"bg-white border border-red-200 rounded p-2 max-h-48 overflow-y-auto",children:(0,c.jsx)("pre",{className:"text-xs whitespace-pre-wrap text-red-700 font-mono",children:n.message})})]})]})}),i&&!r&&!n&&(0,c.jsx)("div",{className:"space-y-3",children:"formatted"===u?i.map((e,s)=>(0,c.jsxs)("div",{className:"border border-gray-200 rounded-lg overflow-hidden",children:["text"===e.type&&(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Text Response"})}),(0,c.jsx)("div",{className:"p-3",children:(0,c.jsx)("div",{className:"bg-white rounded border border-gray-200 max-h-64 overflow-y-auto",children:(0,c.jsx)("div",{className:"p-3 space-y-2",children:e.text.split("\n\n").map((e,s)=>{if(""===e.trim())return null;if(e.startsWith("##")){let t=e.replace(/^#+\s/,"");return(0,c.jsx)("div",{className:"border-b border-gray-200 pb-1 mb-2",children:(0,c.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:t})},s)}let t=/(https?:\/\/[^\s\)]+)/g;if(t.test(e)){let l=e.split(t);return(0,c.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded p-2",children:(0,c.jsx)("div",{className:"text-xs text-gray-700 leading-relaxed whitespace-pre-wrap",children:l.map((e,s)=>t.test(e)?(0,c.jsx)("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-800 underline break-all",children:e},s):e)})},s)}return e.includes("Score:")?(0,c.jsx)("div",{className:"bg-green-50 border-l-4 border-green-400 p-2 rounded-r",children:(0,c.jsx)("p",{className:"text-xs text-green-800 font-medium whitespace-pre-wrap",children:e})},s):(0,c.jsx)("div",{className:"bg-gray-50 rounded p-2 border border-gray-200",children:(0,c.jsx)("div",{className:"text-xs text-gray-700 leading-relaxed whitespace-pre-wrap font-mono",children:e})},s)}).filter(Boolean)})})})]}),"image"===e.type&&e.url&&(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Image Response"})}),(0,c.jsx)("div",{className:"p-3",children:(0,c.jsx)("div",{className:"bg-gray-50 rounded p-3 border border-gray-200",children:(0,c.jsx)("img",{src:e.url,alt:"Tool result",className:"max-w-full h-auto rounded shadow-sm"})})})]}),"embedded_resource"===e.type&&(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Embedded Resource"})}),(0,c.jsx)("div",{className:"p-3",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2 p-3 bg-blue-50 border border-blue-200 rounded",children:[(0,c.jsx)("div",{className:"flex-shrink-0",children:(0,c.jsx)("svg",{className:"h-5 w-5 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})})}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsxs)("p",{className:"text-xs font-medium text-blue-900",children:["Resource Type: ",e.resource_type]}),e.url&&(0,c.jsxs)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center text-xs text-blue-600 hover:text-blue-800 hover:underline mt-1 transition-colors",children:["View Resource",(0,c.jsxs)("svg",{className:"ml-1 h-3 w-3",fill:"currentColor",viewBox:"0 0 20 20",children:[(0,c.jsx)("path",{d:"M11 3a1 1 0 100 2h2.586l-6.293 6.293a1 1 0 101.414 1.414L15 6.414V9a1 1 0 102 0V4a1 1 0 00-1-1h-5z"}),(0,c.jsx)("path",{d:"M5 5a2 2 0 00-2 2v8a2 2 0 002 2h8a2 2 0 002-2v-3a1 1 0 10-2 0v3H5V7h3a1 1 0 000-2H5z"})]})]})]})]})})]})]},s)):(0,c.jsx)("div",{className:"bg-white rounded border border-gray-200",children:(0,c.jsx)("div",{className:"p-3 overflow-auto max-h-80 bg-gray-50",children:(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all text-gray-800",children:JSON.stringify(i,null,2)})})})})]})]}):(0,c.jsx)("div",{className:"flex flex-col justify-center items-center h-48 text-gray-500",children:(0,c.jsxs)("div",{className:"text-center max-w-sm",children:[(0,c.jsx)("div",{className:"mb-3",children:(0,c.jsx)("svg",{className:"mx-auto h-12 w-12 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1,d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,c.jsx)("h4",{className:"text-sm font-medium text-gray-900 mb-1",children:"Ready to Call Tool"}),(0,c.jsx)("p",{className:"text-xs text-gray-500 leading-relaxed",children:'Configure the input parameters and click "Call Tool" to see the results here.'})]})})})]})]})]})}var oi=t(29488),on=t(36724);let oo=e=>{let s,{visible:t,onOk:l,onCancel:a,authType:r}=e,[i]=A.Z.useForm();if(r===nP.API_KEY||r===nP.BEARER_TOKEN){let e=r===nP.API_KEY?"API Key":"Bearer Token";s=(0,c.jsx)(A.Z.Item,{name:"authValue",label:e,rules:[{required:!0,message:"Please input your ".concat(e)}],children:(0,c.jsx)(P.default.Password,{})})}else r===nP.BASIC&&(s=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{name:"username",label:"Username",rules:[{required:!0,message:"Please input your username"}],children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{name:"password",label:"Password",rules:[{required:!0,message:"Please input your password"}],children:(0,c.jsx)(P.default.Password,{})})]}));return(0,c.jsx)(T.Z,{open:t,title:"Authentication",onOk:()=>{i.validateFields().then(e=>{r===nP.BASIC?l("".concat(e.username.trim(),":").concat(e.password.trim())):l(e.authValue.trim())})},onCancel:a,destroyOnClose:!0,children:(0,c.jsx)(A.Z,{form:i,layout:"vertical",children:s})})},oc=e=>{let{authType:s,onAuthSubmit:t,onClearAuth:l,hasAuth:a}=e,[r,i]=(0,d.useState)(!1);return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)(on.xv,{className:"text-sm font-medium text-gray-700",children:["Authentication ",a?"✓":""]}),(0,c.jsxs)("div",{className:"flex gap-2",children:[a&&(0,c.jsx)(on.zx,{onClick:()=>{l()},size:"sm",variant:"secondary",className:"text-xs text-red-600 hover:text-red-700",children:"Clear"}),(0,c.jsx)(on.zx,{onClick:()=>i(!0),size:"sm",variant:"secondary",className:"text-xs",children:a?"Update":"Add Auth"})]})]}),(0,c.jsx)(on.xv,{className:"text-xs text-gray-500",children:a?"Authentication configured and saved locally":"Some tools may require authentication"}),(0,c.jsx)(oo,{visible:r,onOk:e=>{t(e),i(!1)},onCancel:()=>i(!1),authType:s})]})};var od=e=>{let{serverId:s,accessToken:t,auth_type:l,userRole:a,userID:r,serverAlias:i}=e,[n,o]=(0,d.useState)(""),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null);(0,d.useEffect)(()=>{if(nF(l)){let e=(0,oi.Ui)(s,i||void 0);e&&o(e)}},[s,i,l]);let f=e=>{o(e),e&&nF(l)&&((0,oi.Hc)(s,e,l||"none",i||void 0),eo.Z.success("Authentication token saved locally"))},v=()=>{o(""),(0,oi.e4)(s),eo.Z.info("Authentication token cleared")},{data:y,isLoading:b,error:_}=(0,sk.a)({queryKey:["mcpTools",s,n,i],queryFn:()=>{if(!t)throw Error("Access Token required");return(0,j.listMCPTools)(t,s,n,i||void 0)},enabled:!!t,staleTime:3e4}),{mutate:N,isPending:Z}=(0,oa.D)({mutationFn:async e=>{if(!t)throw Error("Access Token required");try{return await (0,j.callMCPTool)(t,e.tool.name,e.arguments,e.authValue,i||void 0)}catch(e){throw e}},onSuccess:e=>{h(e),g(null)},onError:e=>{g(e),h(null)}}),w=(null==y?void 0:y.tools)||[],k=""!==n;return(0,c.jsx)("div",{className:"w-full h-screen p-4 bg-white",children:(0,c.jsx)(on.Zb,{className:"w-full rounded-xl shadow-md overflow-hidden",children:(0,c.jsxs)("div",{className:"flex h-auto w-full gap-4",children:[(0,c.jsxs)("div",{className:"w-1/4 p-4 bg-gray-50 flex flex-col",children:[(0,c.jsx)(on.Dx,{className:"text-xl font-semibold mb-6 mt-2",children:"MCP Tools"}),(0,c.jsxs)("div",{className:"flex flex-col flex-1",children:[(0,c.jsxs)("div",{className:"flex flex-col flex-1 min-h-0",children:[(0,c.jsxs)(on.xv,{className:"font-medium block mb-3 text-gray-700 flex items-center",children:[(0,c.jsx)(rP.Z,{className:"mr-2"})," Available Tools",w.length>0&&(0,c.jsx)("span",{className:"ml-2 bg-blue-100 text-blue-800 text-xs font-medium px-2 py-0.5 rounded-full",children:w.length})]}),b&&(0,c.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 bg-white border border-gray-200 rounded-lg",children:[(0,c.jsxs)("div",{className:"relative mb-3",children:[(0,c.jsx)("div",{className:"animate-spin rounded-full h-6 w-6 border-2 border-gray-200"}),(0,c.jsx)("div",{className:"animate-spin rounded-full h-6 w-6 border-2 border-blue-600 border-t-transparent absolute top-0"})]}),(0,c.jsx)("p",{className:"text-xs font-medium text-gray-700",children:"Loading tools..."})]}),(null==y?void 0:y.error)&&!b&&!w.length&&(0,c.jsx)("div",{className:"p-3 text-xs text-red-800 rounded-lg bg-red-50 border border-red-200",children:(0,c.jsxs)("p",{className:"font-medium",children:["Error: ",y.message]})}),!b&&!(null==y?void 0:y.error)&&(!w||0===w.length)&&(0,c.jsxs)("div",{className:"p-4 text-center bg-white border border-gray-200 rounded-lg",children:[(0,c.jsx)("div",{className:"mx-auto w-8 h-8 bg-gray-200 rounded-full flex items-center justify-center mb-2",children:(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 8.172V5L8 4z"})})}),(0,c.jsx)("p",{className:"text-xs font-medium text-gray-700 mb-1",children:"No tools available"}),(0,c.jsx)("p",{className:"text-xs text-gray-500",children:"No tools found for this server"})]}),!b&&!(null==y?void 0:y.error)&&w.length>0&&(0,c.jsx)("div",{className:"space-y-2 flex-1 overflow-y-auto min-h-0 mcp-tools-scrollable",style:{maxHeight:"400px",scrollbarWidth:"auto",scrollbarColor:"#cbd5e0 #f7fafc"},children:w.map(e=>(0,c.jsxs)("div",{className:"border rounded-lg p-3 cursor-pointer transition-all hover:shadow-sm ".concat((null==m?void 0:m.name)===e.name?"border-blue-500 bg-blue-50 ring-1 ring-blue-200":"border-gray-200 bg-white hover:border-gray-300"),onClick:()=>{u(e),h(null),g(null)},children:[(0,c.jsxs)("div",{className:"flex items-start space-x-2",children:[e.mcp_info.logo_url&&(0,c.jsx)("img",{src:e.mcp_info.logo_url,alt:"".concat(e.mcp_info.server_name," logo"),className:"w-4 h-4 object-contain flex-shrink-0 mt-0.5"}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsx)("h4",{className:"font-mono text-xs font-medium text-gray-900 truncate",children:e.name}),(0,c.jsx)("p",{className:"text-xs text-gray-500 truncate",children:e.mcp_info.server_name}),(0,c.jsx)("p",{className:"text-xs text-gray-600 mt-1 line-clamp-2 leading-relaxed",children:e.description})]})]}),(null==m?void 0:m.name)===e.name&&(0,c.jsx)("div",{className:"mt-2 pt-2 border-t border-blue-200",children:(0,c.jsxs)("div",{className:"flex items-center text-xs font-medium text-blue-700",children:[(0,c.jsx)("svg",{className:"w-3 h-3 mr-1",fill:"currentColor",viewBox:"0 0 20 20",children:(0,c.jsx)("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})}),"Selected"]})})]},e.name))})]}),nF(l)&&(0,c.jsx)("div",{className:"pt-4 border-t border-gray-200 flex-shrink-0 mt-6",children:k?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(on.xv,{className:"font-medium block mb-3 text-gray-700 flex items-center",children:[(0,c.jsx)(r3.Z,{className:"mr-2"})," Authentication"]}),(0,c.jsx)(oc,{authType:l,onAuthSubmit:f,onClearAuth:v,hasAuth:k})]}):(0,c.jsxs)("div",{className:"p-4 bg-gradient-to-r from-orange-50 to-red-50 border border-orange-200 rounded-lg",children:[(0,c.jsxs)("div",{className:"flex items-center mb-3",children:[(0,c.jsx)(r3.Z,{className:"mr-2 text-orange-600 text-lg"}),(0,c.jsx)(on.xv,{className:"font-semibold text-orange-800",children:"Authentication Required"})]}),(0,c.jsx)(on.xv,{className:"text-sm text-orange-700 mb-4",children:"This MCP server requires authentication. You must add your credentials below to access the tools."}),(0,c.jsx)(oc,{authType:l,onAuthSubmit:f,onClearAuth:v,hasAuth:k})]})})]})]}),(0,c.jsxs)("div",{className:"w-3/4 flex flex-col bg-white",children:[(0,c.jsx)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:(0,c.jsx)(on.Dx,{className:"text-xl font-semibold mb-0",children:"Tool Testing Playground"})}),(0,c.jsx)("div",{className:"flex-1 overflow-auto p-4",children:m?(0,c.jsx)("div",{className:"h-full",children:(0,c.jsx)(or,{tool:m,needsAuth:nF(l),authValue:n,onSubmit:e=>{N({tool:m,arguments:e,authValue:n})},result:x,error:p,isLoading:Z,onClose:()=>u(null)})}):(0,c.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,c.jsx)(eU.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,c.jsx)(on.xv,{className:"text-lg font-medium text-gray-600 mb-2",children:"Select a Tool to Test"}),(0,c.jsx)(on.xv,{className:"text-center text-gray-500 max-w-md",children:"Choose a tool from the left sidebar to start testing its functionality with custom inputs."})]})})]})]})})})},om=t(57018),ou=e=>{let{tagId:s,onClose:t,accessToken:l,is_admin:a,editTag:r}=e,[i]=A.Z.useForm(),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(r),[x,h]=(0,d.useState)([]),p=async()=>{if(l)try{let e=(await (0,j.tagInfoCall)(l,[s]))[s];e&&(o(e),r&&i.setFieldsValue({name:e.name,description:e.description,models:e.models}))}catch(e){console.error("Error fetching tag details:",e),eo.Z.fromBackend("Error fetching tag details: "+e)}};(0,d.useEffect)(()=>{p()},[s,l]),(0,d.useEffect)(()=>{l&&e0("dummy-user","Admin",l,h)},[l]);let g=async e=>{if(l)try{await (0,j.tagUpdateCall)(l,{name:e.name,description:e.description,models:e.models}),eo.Z.success("Tag updated successfully"),u(!1),p()}catch(e){console.error("Error updating tag:",e),eo.Z.fromBackend("Error updating tag: "+e)}};return n?(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(om.zx,{onClick:t,className:"mb-4",children:"← Back to Tags"}),(0,c.jsxs)(om.Dx,{children:["Tag Name: ",n.name]}),(0,c.jsx)(om.xv,{className:"text-gray-500",children:n.description||"No description"})]}),a&&!m&&(0,c.jsx)(om.zx,{onClick:()=>u(!0),children:"Edit Tag"})]}),m?(0,c.jsx)(om.Zb,{children:(0,c.jsxs)(A.Z,{form:i,onFinish:g,layout:"vertical",initialValues:n,children:[(0,c.jsx)(A.Z.Item,{label:"Tag Name",name:"name",rules:[{required:!0,message:"Please input a tag name"}],children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"description",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed LLMs"," ",(0,c.jsx)(B.Z,{title:"Select which LLMs are allowed to process this type of data",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select LLMs",children:x.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(om.zx,{onClick:()=>u(!1),children:"Cancel"}),(0,c.jsx)(om.zx,{type:"submit",children:"Save Changes"})]})]})}):(0,c.jsx)("div",{className:"space-y-6",children:(0,c.jsxs)(om.Zb,{children:[(0,c.jsx)(om.Dx,{children:"Tag Details"}),(0,c.jsxs)("div",{className:"space-y-4 mt-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(om.xv,{className:"font-medium",children:"Name"}),(0,c.jsx)(om.xv,{children:n.name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(om.xv,{className:"font-medium",children:"Description"}),(0,c.jsx)(om.xv,{children:n.description||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(om.xv,{className:"font-medium",children:"Allowed LLMs"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-2",children:0===n.models.length?(0,c.jsx)(om.Ct,{color:"red",children:"All Models"}):n.models.map(e=>{var s;return(0,c.jsx)(om.Ct,{color:"blue",children:(0,c.jsx)(B.Z,{title:"ID: ".concat(e),children:(null===(s=n.model_info)||void 0===s?void 0:s[e])||e})},e)})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(om.xv,{className:"font-medium",children:"Created"}),(0,c.jsx)(om.xv,{children:n.created_at?new Date(n.created_at).toLocaleString():"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(om.xv,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)(om.xv,{children:n.updated_at?new Date(n.updated_at).toLocaleString():"-"})]})]})]})})]}):(0,c.jsx)("div",{children:"Loading..."})},ox=e=>{let{data:s,onEdit:t,onDelete:l,onSelectTag:a}=e,[r,i]=d.useState([{id:"created_at",desc:!0}]),n=[{header:"Tag Name",accessorKey:"name",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:t.name,children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5",onClick:()=>a(t.name),children:t.name})})})}},{header:"Description",accessorKey:"description",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.description,children:(0,c.jsx)("span",{className:"text-xs",children:t.description||"-"})})}},{header:"Allowed LLMs",accessorKey:"models",cell:e=>{var s,t;let{row:l}=e,a=l.original;return(0,c.jsx)("div",{style:{display:"flex",flexDirection:"column"},children:(null==a?void 0:null===(s=a.models)||void 0===s?void 0:s.length)===0?(0,c.jsx)(e6.Z,{size:"xs",className:"mb-1",color:"red",children:"All Models"}):null==a?void 0:null===(t=a.models)||void 0===t?void 0:t.map(e=>{var s;return(0,c.jsx)(e6.Z,{size:"xs",className:"mb-1",color:"blue",children:(0,c.jsx)(B.Z,{title:"ID: ".concat(e),children:(0,c.jsx)(k.Z,{children:(null===(s=a.model_info)||void 0===s?void 0:s[e])||e})})},e)})})}},{header:"Created",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:new Date(t.created_at).toLocaleDateString()})}},{id:"actions",header:"",cell:e=>{let{row:s}=e,a=s.original;return(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)(sL.Z,{icon:sX.Z,size:"sm",onClick:()=>t(a),className:"cursor-pointer"}),(0,c.jsx)(sL.Z,{icon:W.Z,size:"sm",onClick:()=>l(a.name),className:"cursor-pointer"})]})}}],o=(0,sT.b7)({data:s,columns:n,state:{sorting:r},onSortingChange:i,getCoreRowModel:(0,sE.sC)(),getSortedRowModel:(0,sE.tj)(),enableSorting:!0});return(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sP.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sD.Z,{children:o.getHeaderGroups().map(e=>(0,c.jsx)(sR.Z,{children:e.headers.map(e=>(0,c.jsx)(sF.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sT.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sq.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sz.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sV.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sM.Z,{children:o.getRowModel().rows.length>0?o.getRowModel().rows.map(e=>(0,c.jsx)(sR.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sO.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),children:(0,sT.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sO.Z,{colSpan:n.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No tags found"})})})})})]})})})},oh=e=>{let{accessToken:s,userID:t,userRole:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(null),[N,Z]=(0,d.useState)(""),[w]=A.Z.useForm(),[S,C]=(0,d.useState)([]),E=async()=>{if(s)try{let e=await (0,j.tagListCall)(s);console.log("List tags response:",e),r(Object.values(e))}catch(e){console.error("Error fetching tags:",e),eo.Z.fromBackend("Error fetching tags: "+e)}},L=async e=>{if(s)try{await (0,j.tagCreateCall)(s,{name:e.tag_name,description:e.description,models:e.allowed_llms}),eo.Z.success("Tag created successfully"),n(!1),w.resetFields(),E()}catch(e){console.error("Error creating tag:",e),eo.Z.fromBackend("Error creating tag: "+e)}},M=async e=>{f(e),p(!0)},O=async()=>{if(s&&g){try{await (0,j.tagDeleteCall)(s,g),eo.Z.success("Tag deleted successfully"),E()}catch(e){console.error("Error deleting tag:",e),eo.Z.fromBackend("Error deleting tag: "+e)}p(!1),f(null)}};return(0,d.useEffect)(()=>{t&&l&&s&&(async()=>{try{let e=await (0,j.modelInfoCall)(s,t,l);e&&e.data&&C(e.data)}catch(e){console.error("Error fetching models:",e),eo.Z.fromBackend("Error fetching models: "+e)}})()},[s,t,l]),(0,d.useEffect)(()=>{E()},[s]),(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:o?(0,c.jsx)(ou,{tagId:o,onClose:()=>{m(null),x(!1)},accessToken:s,is_admin:"Admin"===l,editTag:u}):(0,c.jsxs)("div",{className:"gap-2 p-8 h-[75vh] w-full mt-2",children:[(0,c.jsxs)("div",{className:"flex justify-between mt-2 w-full items-center mb-4",children:[(0,c.jsx)("h1",{children:"Tag Management"}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[N&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",N]}),(0,c.jsx)(sL.Z,{icon:sl.Z,variant:"shadow",size:"xs",className:"self-center cursor-pointer",onClick:()=>{E(),Z(new Date().toLocaleString())}})]})]}),(0,c.jsxs)(k.Z,{className:"mb-4",children:["Click on a tag name to view and edit its details.",(0,c.jsxs)("p",{children:["You can use tags to restrict the usage of certain LLMs based on tags passed in the request. Read more about tag routing"," ",(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/tag_routing",target:"_blank",rel:"noopener noreferrer",children:"here"}),"."]})]}),(0,c.jsx)(b.Z,{className:"mb-4",onClick:()=>n(!0),children:"+ Create New Tag"}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(ox,{data:a,onEdit:e=>{m(e.name),x(!0)},onDelete:M,onSelectTag:m})})}),(0,c.jsx)(T.Z,{title:"Create New Tag",visible:i,width:800,footer:null,onCancel:()=>{n(!1),w.resetFields()},children:(0,c.jsxs)(A.Z,{form:w,onFinish:L,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"Tag Name",name:"tag_name",rules:[{required:!0,message:"Please input a tag name"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"description",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Models"," ",(0,c.jsx)(B.Z,{title:"Select which LLMs are allowed to process requests from this tag",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_llms",children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select LLMs",children:S.map(e=>(0,c.jsx)(I.default.Option,{value:e.model_info.id,children:(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{children:e.model_name}),(0,c.jsxs)("span",{className:"text-gray-400 ml-2",children:["(",e.model_info.id,")"]})]})},e.model_info.id))})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(b.Z,{type:"submit",children:"Create Tag"})})]})}),h&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Tag"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this tag?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:O,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{p(!1),f(null)},children:"Cancel"})]})]})]})})]})})},op=e=>{let{data:s,onView:t,onEdit:l,onDelete:a}=e,[r,i]=d.useState([{id:"created_at",desc:!0}]),n=[{header:"Vector Store ID",accessorKey:"vector_store_id",cell:e=>{let{row:s}=e,l=s.original;return(0,c.jsx)("button",{onClick:()=>t(l.vector_store_id),className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",children:l.vector_store_id.length>15?"".concat(l.vector_store_id.slice(0,15),"..."):l.vector_store_id})}},{header:"Name",accessorKey:"vector_store_name",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.vector_store_name,children:(0,c.jsx)("span",{className:"text-xs",children:t.vector_store_name||"-"})})}},{header:"Description",accessorKey:"vector_store_description",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.vector_store_description,children:(0,c.jsx)("span",{className:"text-xs",children:t.vector_store_description||"-"})})}},{header:"Provider",accessorKey:"custom_llm_provider",cell:e=>{let{row:s}=e,t=s.original,{displayName:l,logo:a}=(0,sW.dr)(t.custom_llm_provider);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[a&&(0,c.jsx)("img",{src:a,alt:l,className:"h-4 w-4"}),(0,c.jsx)("span",{className:"text-xs",children:l})]})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:new Date(t.created_at).toLocaleDateString()})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:new Date(t.updated_at).toLocaleDateString()})}},{id:"actions",header:"",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)(sL.Z,{icon:sX.Z,size:"sm",onClick:()=>l(t.vector_store_id),className:"cursor-pointer"}),(0,c.jsx)(sL.Z,{icon:W.Z,size:"sm",onClick:()=>a(t.vector_store_id),className:"cursor-pointer"})]})}}],o=(0,sT.b7)({data:s,columns:n,state:{sorting:r},onSortingChange:i,getCoreRowModel:(0,sE.sC)(),getSortedRowModel:(0,sE.tj)(),enableSorting:!0});return(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sP.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sD.Z,{children:o.getHeaderGroups().map(e=>(0,c.jsx)(sR.Z,{children:e.headers.map(e=>(0,c.jsx)(sF.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sT.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sq.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sz.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sV.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sM.Z,{children:o.getRowModel().rows.length>0?o.getRowModel().rows.map(e=>(0,c.jsx)(sR.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sO.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),children:(0,sT.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sR.Z,{children:(0,c.jsx)(sO.Z,{colSpan:n.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No vector stores found"})})})})})]})})})};(r=o||(o={})).Bedrock="Amazon Bedrock",r.PgVector="PostgreSQL pgvector (LiteLLM Connector)",r.VertexRagEngine="Vertex AI RAG Engine",r.OpenAI="OpenAI",r.Azure="Azure OpenAI";let og={Bedrock:"bedrock",PgVector:"pg_vector",VertexRagEngine:"vertex_ai",OpenAI:"openai",Azure:"azure"},oj="/ui/assets/logos/",of={"Amazon Bedrock":"".concat(oj,"bedrock.svg"),"PostgreSQL pgvector (LiteLLM Connector)":"".concat(oj,"postgresql.svg"),"Vertex AI RAG Engine":"".concat(oj,"google.svg"),OpenAI:"".concat(oj,"openai_small.svg"),"Azure OpenAI":"".concat(oj,"microsoft_azure.svg")},ov={bedrock:[],pg_vector:[{name:"api_base",label:"API Base",tooltip:"Enter the base URL of your deployed litellm-pgvector server (e.g., http://your-server:8000)",placeholder:"http://your-deployed-server:8000",required:!0,type:"text"},{name:"api_key",label:"API Key",tooltip:"Enter the API key from your deployed litellm-pgvector server",placeholder:"your-deployed-api-key",required:!0,type:"password"}],vertex_rag_engine:[],openai:[{name:"api_key",label:"API Key",tooltip:"Enter your OpenAI API key",placeholder:"sk-...",required:!0,type:"password"}],azure:[{name:"api_key",label:"API Key",tooltip:"Enter your Azure OpenAI API key",placeholder:"your-azure-api-key",required:!0,type:"password"},{name:"api_base",label:"API Base",tooltip:"Enter your Azure OpenAI endpoint (e.g., https://your-resource.openai.azure.com/)",placeholder:"https://your-resource.openai.azure.com/",required:!0,type:"text"}]},oy=e=>ov[e]||[];var ob=e=>{let{isVisible:s,onCancel:t,onSuccess:l,accessToken:a,credentials:r}=e,[i]=A.Z.useForm(),[n,m]=(0,d.useState)("{}"),[u,x]=(0,d.useState)("bedrock"),h=async e=>{if(a)try{let s={};try{s=n.trim()?JSON.parse(n):{}}catch(e){eo.Z.fromBackend("Invalid JSON in metadata field");return}let t={vector_store_id:e.vector_store_id,custom_llm_provider:e.custom_llm_provider,vector_store_name:e.vector_store_name,vector_store_description:e.vector_store_description,vector_store_metadata:s,litellm_credential_name:e.litellm_credential_name},r=oy(e.custom_llm_provider).reduce((s,t)=>(s[t.name]=e[t.name],s),{});t.litellm_params=r,await (0,j.vectorStoreCreateCall)(a,t),eo.Z.success("Vector store created successfully"),i.resetFields(),m("{}"),l()}catch(e){console.error("Error creating vector store:",e),eo.Z.fromBackend("Error creating vector store: "+e)}},p=()=>{i.resetFields(),m("{}"),x("bedrock"),t()};return(0,c.jsx)(T.Z,{title:"Add New Vector Store",visible:s,width:1e3,footer:null,onCancel:p,children:(0,c.jsxs)(A.Z,{form:i,onFinish:h,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Provider"," ",(0,c.jsx)(B.Z,{title:"Select the provider for this vector store",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"custom_llm_provider",rules:[{required:!0,message:"Please select a provider"}],initialValue:"bedrock",children:(0,c.jsx)(I.default,{onChange:e=>x(e),children:Object.entries(o).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:og[s],children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:of[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s)})})}),"pg_vector"===u&&(0,c.jsx)(lo.Z,{message:"PG Vector Setup Required",description:(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{children:"LiteLLM provides a server to connect to PG Vector. To use this provider:"}),(0,c.jsxs)("ol",{style:{marginLeft:"16px",marginTop:"8px"},children:[(0,c.jsxs)("li",{children:["Deploy the litellm-pgvector server from:"," ",(0,c.jsx)("a",{href:"https://github.com/BerriAI/litellm-pgvector",target:"_blank",rel:"noopener noreferrer",children:"https://github.com/BerriAI/litellm-pgvector"})]}),(0,c.jsx)("li",{children:"Configure your PostgreSQL database with pgvector extension"}),(0,c.jsx)("li",{children:"Start the server and note the API base URL and API key"}),(0,c.jsx)("li",{children:"Enter those details in the fields below"})]})]}),type:"info",showIcon:!0,style:{marginBottom:"16px"}}),"vertex_rag_engine"===u&&(0,c.jsx)(lo.Z,{message:"Vertex AI RAG Engine Setup",description:(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{children:"To use Vertex AI RAG Engine:"}),(0,c.jsxs)("ol",{style:{marginLeft:"16px",marginTop:"8px"},children:[(0,c.jsxs)("li",{children:["Set up your Vertex AI RAG Engine corpus following the guide:"," ",(0,c.jsx)("a",{href:"https://cloud.google.com/vertex-ai/generative-ai/docs/rag-engine/rag-overview",target:"_blank",rel:"noopener noreferrer",children:"Vertex AI RAG Engine Overview"})]}),(0,c.jsx)("li",{children:"Create a corpus in your Google Cloud project"}),(0,c.jsx)("li",{children:"Note the corpus ID from the Vertex AI console"}),(0,c.jsx)("li",{children:"Enter the corpus ID in the Vector Store ID field below"})]})]}),type:"info",showIcon:!0,style:{marginBottom:"16px"}}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Vector Store ID"," ",(0,c.jsx)(B.Z,{title:"Enter the vector store ID from your api provider",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"vector_store_id",rules:[{required:!0,message:"Please input the vector store ID from your api provider"}],children:(0,c.jsx)(_.Z,{placeholder:"vertex_rag_engine"===u?"6917529027641081856 (Get corpus ID from Vertex AI console)":"Enter vector store ID from your provider"})}),oy(u).map(e=>(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:[e.label," ",(0,c.jsx)(B.Z,{title:e.tooltip,children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:e.name,rules:e.required?[{required:!0,message:"Please input the ".concat(e.label.toLowerCase())}]:[],children:(0,c.jsx)(_.Z,{type:e.type||"text",placeholder:e.placeholder})},e.name)),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Vector Store Name"," ",(0,c.jsx)(B.Z,{title:"Custom name you want to give to the vector store, this name will be rendered on the LiteLLM UI",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"vector_store_name",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"vector_store_description",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Existing Credentials"," ",(0,c.jsx)(B.Z,{title:"Optionally select API provider credentials for this vector store eg. Bedrock API KEY",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"litellm_credential_name",children:(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Select or search for existing credentials",optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{value:null,label:"None"},...r.map(e=>({value:e.credential_name,label:e.credential_name}))],allowClear:!0})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Metadata"," ",(0,c.jsx)(B.Z,{title:"JSON metadata for the vector store (optional)",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),children:(0,c.jsx)(P.default.TextArea,{rows:4,value:n,onChange:e=>m(e.target.value),placeholder:'{"key": "value"}'})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-3",children:[(0,c.jsx)(b.Z,{onClick:p,variant:"secondary",children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",type:"submit",children:"Create"})]})]})})},o_=e=>{let{isVisible:s,onCancel:t,onConfirm:l}=e;return(0,c.jsxs)(T.Z,{title:"Delete Vector Store",visible:s,footer:null,onCancel:t,children:[(0,c.jsx)("p",{children:"Are you sure you want to delete this vector store? This action cannot be undone."}),(0,c.jsxs)("div",{className:"px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:l,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:t,variant:"primary",children:"Cancel"})]})]})},oN=t(23907);let{TextArea:oZ}=P.default,{Text:ow,Title:ok}=en.default;var oS=e=>{let{vectorStoreId:s,accessToken:t,className:l=""}=e,[a,r]=(0,d.useState)(""),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)({}),h=async()=>{if(!a.trim()){tj.ZP.warning("Please enter a search query");return}n(!0);try{let e=await (0,j.vectorStoreSearchCall)(t,s,a),l={query:a,response:e,timestamp:Date.now()};m(e=>[l,...e]),r("")}catch(e){console.error("Error searching vector store:",e),eo.Z.fromBackend("Failed to search vector store")}finally{n(!1)}},p=e=>new Date(e).toLocaleString(),g=(e,s)=>{let t="".concat(e,"-").concat(s);x(e=>({...e,[t]:!e[t]}))};return(0,c.jsx)(tA.Z,{className:"w-full rounded-xl shadow-md",children:(0,c.jsxs)("div",{className:"flex flex-col h-[600px]",children:[(0,c.jsxs)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(r5.Z,{className:"mr-2 text-blue-500"}),(0,c.jsx)(ok,{level:4,className:"mb-0",children:"Test Vector Store"})]}),o.length>0&&(0,c.jsx)(L.ZP,{onClick:()=>{m([]),x({}),eo.Z.success("Search history cleared")},size:"small",children:"Clear History"})]}),(0,c.jsxs)("div",{className:"flex-1 overflow-auto p-4 pb-0",children:[0===o.length?(0,c.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,c.jsx)(r5.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,c.jsx)(ow,{children:"Test your vector store by entering a search query below"})]}):(0,c.jsx)("div",{className:"space-y-4",children:o.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("div",{className:"text-right",children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3 bg-blue-50 border border-blue-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,c.jsx)("strong",{className:"text-sm",children:"Query"}),(0,c.jsx)("span",{className:"text-xs text-gray-500",children:p(e.timestamp)})]}),(0,c.jsx)("div",{className:"text-left",children:e.query})]})}),(0,c.jsx)("div",{className:"text-left",children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3 bg-white border border-gray-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(r5.Z,{className:"text-green-500"}),(0,c.jsx)("strong",{className:"text-sm",children:"Vector Store Results"}),e.response&&(0,c.jsxs)("span",{className:"text-xs px-2 py-0.5 rounded bg-gray-100 text-gray-600",children:[(null===(t=e.response.data)||void 0===t?void 0:t.length)||0," results"]})]}),e.response&&e.response.data&&e.response.data.length>0?(0,c.jsx)("div",{className:"space-y-3",children:e.response.data.map((e,t)=>{let l=u["".concat(s,"-").concat(t)]||!1;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-3 cursor-pointer hover:bg-gray-100 transition-colors",onClick:()=>g(s,t),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[l?(0,c.jsx)(tT.Z,{className:"text-gray-500 mr-2"}):(0,c.jsx)(lm.Z,{className:"text-gray-500 mr-2"}),(0,c.jsxs)("span",{className:"font-medium text-sm",children:["Result ",t+1]}),!l&&e.content&&e.content[0]&&(0,c.jsxs)("span",{className:"ml-2 text-xs text-gray-500 truncate max-w-md",children:["- ",e.content[0].text.substring(0,100),"..."]})]}),(0,c.jsxs)("span",{className:"text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded",children:["Score: ",e.score.toFixed(4)]})]}),l&&(0,c.jsxs)("div",{className:"border-t bg-white p-3",children:[e.content&&e.content.map((e,s)=>(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsxs)("div",{className:"text-xs text-gray-500 mb-1",children:["Content (",e.type,")"]}),(0,c.jsx)("div",{className:"text-sm bg-gray-50 p-3 rounded border text-gray-800 max-h-40 overflow-y-auto",children:e.text})]},s)),(e.file_id||e.filename||e.attributes)&&(0,c.jsxs)("div",{className:"mt-3 pt-3 border-t border-gray-200",children:[(0,c.jsx)("div",{className:"text-xs text-gray-500 mb-2 font-medium",children:"Metadata"}),(0,c.jsxs)("div",{className:"space-y-2 text-xs",children:[e.file_id&&(0,c.jsxs)("div",{className:"bg-gray-50 p-2 rounded",children:[(0,c.jsx)("span",{className:"font-medium",children:"File ID:"})," ",e.file_id]}),e.filename&&(0,c.jsxs)("div",{className:"bg-gray-50 p-2 rounded",children:[(0,c.jsx)("span",{className:"font-medium",children:"Filename:"})," ",e.filename]}),e.attributes&&Object.keys(e.attributes).length>0&&(0,c.jsxs)("div",{className:"bg-gray-50 p-2 rounded",children:[(0,c.jsx)("span",{className:"font-medium block mb-1",children:"Attributes:"}),(0,c.jsx)("pre",{className:"text-xs bg-white p-2 rounded border overflow-x-auto",children:JSON.stringify(e.attributes,null,2)})]})]})]})]})]},t)})}):(0,c.jsx)("div",{className:"text-gray-500 text-sm",children:"No results found"})]})}),sr(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),h())},placeholder:"Enter your search query... (Shift+Enter for new line)",disabled:i,autoSize:{minRows:1,maxRows:4},style:{resize:"none"}})}),(0,c.jsx)(L.ZP,{type:"primary",onClick:h,disabled:i||!a.trim(),icon:(0,c.jsx)(oN.Z,{}),loading:i,children:"Search"})]})})]})})},oC=e=>{let{vectorStoreId:s,onClose:t,accessToken:l,is_admin:a,editVectorStore:r}=e,[i]=A.Z.useForm(),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(r),[x,h]=(0,d.useState)("{}"),[p,g]=(0,d.useState)([]),[f,v]=(0,d.useState)("details"),y=async()=>{if(l)try{let e=await (0,j.vectorStoreInfoCall)(l,s);if(e&&e.vector_store){if(o(e.vector_store),e.vector_store.vector_store_metadata){let s="string"==typeof e.vector_store.vector_store_metadata?JSON.parse(e.vector_store.vector_store_metadata):e.vector_store.vector_store_metadata;h(JSON.stringify(s,null,2))}r&&i.setFieldsValue({vector_store_id:e.vector_store.vector_store_id,custom_llm_provider:e.vector_store.custom_llm_provider,vector_store_name:e.vector_store.vector_store_name,vector_store_description:e.vector_store.vector_store_description})}}catch(e){console.error("Error fetching vector store details:",e),eo.Z.fromBackend("Error fetching vector store details: "+e)}},_=async()=>{if(l)try{let e=await (0,j.credentialListCall)(l);console.log("List credentials response:",e),g(e.credentials||[])}catch(e){console.error("Error fetching credentials:",e)}};(0,d.useEffect)(()=>{y(),_()},[s,l]);let N=async e=>{if(l)try{let s={};try{s=x?JSON.parse(x):{}}catch(e){eo.Z.fromBackend("Invalid JSON in metadata field");return}let t={vector_store_id:e.vector_store_id,custom_llm_provider:e.custom_llm_provider,vector_store_name:e.vector_store_name,vector_store_description:e.vector_store_description,vector_store_metadata:s};await (0,j.vectorStoreUpdateCall)(l,t),eo.Z.success("Vector store updated successfully"),u(!1),y()}catch(e){console.error("Error updating vector store:",e),eo.Z.fromBackend("Error updating vector store: "+e)}};return n?(0,c.jsxs)("div",{className:"p-4 max-w-full",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:st.Z,variant:"light",className:"mb-4",onClick:t,children:"Back to Vector Stores"}),(0,c.jsxs)(S.Z,{children:["Vector Store ID: ",n.vector_store_id]}),(0,c.jsx)(k.Z,{className:"text-gray-500",children:n.vector_store_description||"No description"})]}),a&&!m&&(0,c.jsx)(b.Z,{onClick:()=>u(!0),children:"Edit Vector Store"})]}),(0,c.jsxs)(e7.Z,{children:[(0,c.jsxs)(e9.Z,{className:"mb-6",children:[(0,c.jsx)(e8.Z,{children:"Details"}),(0,c.jsx)(e8.Z,{children:"Test Vector Store"})]}),(0,c.jsxs)(ss.Z,{children:[(0,c.jsx)(se.Z,{children:m?(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(S.Z,{children:"Edit Vector Store"})}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)(A.Z,{form:i,onFinish:N,layout:"vertical",initialValues:n,children:[(0,c.jsx)(A.Z.Item,{label:"Vector Store ID",name:"vector_store_id",rules:[{required:!0,message:"Please input a vector store ID"}],children:(0,c.jsx)(P.default,{disabled:!0})}),(0,c.jsx)(A.Z.Item,{label:"Vector Store Name",name:"vector_store_name",children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"vector_store_description",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Provider"," ",(0,c.jsx)(B.Z,{title:"Select the provider for this vector store",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"custom_llm_provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,c.jsx)(I.default,{children:Object.entries(sW.Cl).map(e=>{let[s,t]=e;return"Bedrock"===s?(0,c.jsx)(I.default.Option,{value:sW.fK[s],children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:sW.cd[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s):null})})}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(k.Z,{className:"text-sm text-gray-500 mb-2",children:"Either select existing credentials OR enter provider credentials below"})}),(0,c.jsx)(A.Z.Item,{label:"Existing Credentials",name:"litellm_credential_name",children:(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Select or search for existing credentials",optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{value:null,label:"None"},...p.map(e=>({value:e.credential_name,label:e.credential_name}))],allowClear:!0})}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"OR"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Metadata"," ",(0,c.jsx)(B.Z,{title:"JSON metadata for the vector store",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),children:(0,c.jsx)(P.default.TextArea,{rows:4,value:x,onChange:e=>h(e.target.value),placeholder:'{"key": "value"}'})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(L.ZP,{onClick:()=>u(!1),children:"Cancel"}),(0,c.jsx)(L.ZP,{type:"primary",htmlType:"submit",children:"Save Changes"})]})]})})]}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Vector Store Details"}),a&&(0,c.jsx)(b.Z,{onClick:()=>u(!0),children:"Edit Vector Store"})]}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"ID"}),(0,c.jsx)(k.Z,{children:n.vector_store_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Name"}),(0,c.jsx)(k.Z,{children:n.vector_store_name||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Description"}),(0,c.jsx)(k.Z,{children:n.vector_store_description||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Provider"}),(0,c.jsx)("div",{className:"flex items-center space-x-2 mt-1",children:(()=>{let e=n.custom_llm_provider||"bedrock",{displayName:s,logo:t}=(()=>{let s=Object.keys(sW.fK).find(s=>sW.fK[s].toLowerCase()===e.toLowerCase());if(!s)return{displayName:e,logo:""};let t=sW.Cl[s],l=sW.cd[t];return{displayName:t,logo:l}})();return(0,c.jsxs)(c.Fragment,{children:[t&&(0,c.jsx)("img",{src:t,alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let t=e.target,l=t.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=s.charAt(0),l.replaceChild(e,t)}}}),(0,c.jsx)(e6.Z,{color:"blue",children:s})]})})()})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Metadata"}),(0,c.jsx)("div",{className:"bg-gray-50 p-3 rounded mt-2 font-mono text-xs overflow-auto max-h-48",children:(0,c.jsx)("pre",{children:x})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created"}),(0,c.jsx)(k.Z,{children:n.created_at?new Date(n.created_at).toLocaleString():"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)(k.Z,{children:n.updated_at?new Date(n.updated_at).toLocaleString():"-"})]})]})})]})}),(0,c.jsx)(se.Z,{children:(0,c.jsx)(oS,{vectorStoreId:n.vector_store_id,accessToken:l||""})})]})]})]}):(0,c.jsx)("div",{children:"Loading..."})},oI=e=>{let{accessToken:s,userID:t,userRole:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(null),[h,p]=(0,d.useState)(""),[g,f]=(0,d.useState)([]),[_,N]=(0,d.useState)(null),[Z,w]=(0,d.useState)(!1),S=async()=>{if(s)try{let e=await (0,j.vectorStoreListCall)(s);console.log("List vector stores response:",e),r(e.data||[])}catch(e){console.error("Error fetching vector stores:",e),eo.Z.fromBackend("Error fetching vector stores: "+e)}},C=async()=>{if(s)try{let e=await (0,j.credentialListCall)(s);console.log("List credentials response:",e),f(e.credentials||[])}catch(e){console.error("Error fetching credentials:",e),eo.Z.fromBackend("Error fetching credentials: "+e)}},I=async e=>{x(e),m(!0)},A=async()=>{if(s&&u){try{await (0,j.vectorStoreDeleteCall)(s,u),eo.Z.success("Vector store deleted successfully"),S()}catch(e){console.error("Error deleting vector store:",e),eo.Z.fromBackend("Error deleting vector store: "+e)}m(!1),x(null)}};return(0,d.useEffect)(()=>{S(),C()},[s]),_?(0,c.jsx)("div",{className:"w-full h-full",children:(0,c.jsx)(oC,{vectorStoreId:_,onClose:()=>{N(null),w(!1),S()},accessToken:s,is_admin:(0,eI.tY)(l||""),editVectorStore:Z})}):(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsxs)("div",{className:"gap-2 p-8 h-[75vh] w-full mt-2",children:[(0,c.jsxs)("div",{className:"flex justify-between mt-2 w-full items-center mb-4",children:[(0,c.jsx)("h1",{children:"Vector Store Management"}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[h&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",h]}),(0,c.jsx)(sL.Z,{icon:sl.Z,variant:"shadow",size:"xs",className:"self-center cursor-pointer",onClick:()=>{S(),C(),p(new Date().toLocaleString())}})]})]}),(0,c.jsx)(k.Z,{className:"mb-4",children:(0,c.jsx)("p",{children:"You can use vector stores to store and retrieve LLM embeddings.."})}),(0,c.jsx)(b.Z,{className:"mb-4",onClick:()=>n(!0),children:"+ Add Vector Store"}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(op,{data:a,onView:e=>{N(e),w(!1)},onEdit:e=>{N(e),w(!0)},onDelete:I})})}),(0,c.jsx)(ob,{isVisible:i,onCancel:()=>n(!1),onSuccess:()=>{n(!1),S()},accessToken:s,credentials:g}),(0,c.jsx)(o_,{isVisible:o,onCancel:()=>m(!1),onConfirm:A})]})})},oA=e=>{let{userID:s,userRole:t,accessToken:l}=e,{logoUrl:a,setLogoUrl:r}=(0,g.F)(),[i,n]=(0,d.useState)(""),[o,m]=(0,d.useState)(!1);(0,d.useEffect)(()=>{l&&u()},[l]);let u=async()=>{try{let s=(0,j.getProxyBaseUrl)(),t=await fetch(s?"".concat(s,"/get/ui_theme_settings"):"/get/ui_theme_settings",{method:"GET",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"}});if(t.ok){var e;let s=await t.json(),l=(null===(e=s.values)||void 0===e?void 0:e.logo_url)||"";n(l),r(l||null)}}catch(e){console.error("Error fetching theme settings:",e)}},x=async()=>{m(!0);try{let e=(0,j.getProxyBaseUrl)();if((await fetch(e?"".concat(e,"/update/ui_theme_settings"):"/update/ui_theme_settings",{method:"PATCH",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify({logo_url:i||null})})).ok)eo.Z.success("Logo settings updated successfully!"),r(i||null);else throw Error("Failed to update settings")}catch(e){console.error("Error updating logo settings:",e),eo.Z.fromBackend("Failed to update logo settings")}finally{m(!1)}},h=async()=>{n(""),r(null),m(!0);try{let e=(0,j.getProxyBaseUrl)();if((await fetch(e?"".concat(e,"/update/ui_theme_settings"):"/update/ui_theme_settings",{method:"PATCH",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify({logo_url:null})})).ok)eo.Z.success("Logo reset to default!");else throw Error("Failed to reset logo")}catch(e){console.error("Error resetting logo:",e),eo.Z.fromBackend("Failed to reset logo")}finally{m(!1)}};return l?(0,c.jsxs)("div",{className:"w-full mx-auto max-w-4xl px-6 py-8",children:[(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(S.Z,{className:"text-2xl font-bold mb-2",children:"Logo Customization"}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"Customize your LiteLLM admin dashboard with a custom logo."})]}),(0,c.jsx)(G.Z,{className:"shadow-sm p-6",children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium text-gray-700 mb-2 block",children:"Custom Logo URL"}),(0,c.jsx)(_.Z,{placeholder:"https://example.com/logo.png",value:i,onValueChange:e=>{n(e),r(e||null)},className:"w-full"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500 mt-1",children:"Enter a URL for your custom logo or leave empty to use the default LiteLLM logo"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium text-gray-700 mb-2 block",children:"Current Logo"}),(0,c.jsx)("div",{className:"bg-gray-50 rounded-lg p-6 flex items-center justify-center min-h-[120px]",children:i?(0,c.jsx)("img",{src:i,alt:"Custom logo",className:"max-w-full max-h-24 object-contain",onError:e=>{var s;let t=e.target;t.style.display="none";let l=document.createElement("div");l.className="text-gray-500 text-sm",l.textContent="Failed to load image",null===(s=t.parentElement)||void 0===s||s.appendChild(l)}}):(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"Default LiteLLM logo will be used"})})]}),(0,c.jsxs)("div",{className:"flex gap-3 pt-4",children:[(0,c.jsx)(b.Z,{onClick:x,loading:o,disabled:o,color:"indigo",children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:h,loading:o,disabled:o,variant:"secondary",color:"gray",children:"Reset to Default"})]})]})})]}):null};let oT=new x.S;function oE(){return(0,c.jsxs)("div",{className:ri("h-screen","flex items-center justify-center gap-4"),children:[(0,c.jsx)("div",{className:"text-lg font-medium py-2 pr-4 border-r border-r-gray-200",children:"\uD83D\uDE85 LiteLLM"}),(0,c.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,c.jsx)(ro,{className:"size-4"}),(0,c.jsx)("span",{className:"text-gray-600 text-sm",children:"Loading..."})]})]})}function oL(){let[e,s]=(0,d.useState)(""),[t,l]=(0,d.useState)(!1),[a,r]=(0,d.useState)(!1),[i,n]=(0,d.useState)(null),[o,x]=(0,d.useState)(null),[v,y]=(0,d.useState)([]),[b,_]=(0,d.useState)([]),[N,Z]=(0,d.useState)([]),[w,k]=(0,d.useState)({PROXY_BASE_URL:"",PROXY_LOGOUT_URL:""}),[S,C]=(0,d.useState)(!0),I=(0,m.useSearchParams)(),[A,T]=(0,d.useState)({data:[]}),[E,L]=(0,d.useState)(null),[P,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)(!0),[F,R]=(0,d.useState)(null),z=I.get("invitation_id"),[U,q]=(0,d.useState)(()=>I.get("page")||"api-keys"),[V,B]=(0,d.useState)(null),[K,G]=(0,d.useState)(!1),H=e=>{y(s=>s?[...s,e]:[e]),M(()=>!P)},Y=!1===O&&null===E&&null===z;return((0,d.useEffect)(()=>{let e=function(e){let s=document.cookie.split("; ").find(s=>s.startsWith(e+"="));return s?s.split("=")[1]:null}("token");(0,j.getUiConfig)().then(s=>{L(e),D(!1)})},[]),(0,d.useEffect)(()=>{Y&&(window.location.href=(j.proxyBaseUrl||"")+"/sso/key/generate")},[Y]),(0,d.useEffect)(()=>{if(!E)return;let e=(0,u.o)(E);if(e){if(B(e.key),r(e.disabled_non_admin_personal_key_creation),e.user_role){let t=function(e){if(!e)return"Undefined Role";switch(e.toLowerCase()){case"app_owner":case"demo_app_owner":return"App Owner";case"app_admin":case"proxy_admin":return"Admin";case"proxy_admin_viewer":return"Admin Viewer";case"org_admin":return"Org Admin";case"internal_user":return"Internal User";case"internal_user_viewer":case"internal_viewer":return"Internal Viewer";case"app_user":return"App User";default:return"Unknown Role"}}(e.user_role);s(t),"Admin Viewer"==t&&q("usage")}e.user_email&&n(e.user_email),e.login_method&&C("username_password"==e.login_method),e.premium_user&&l(e.premium_user),e.auth_header_name&&(0,j.setGlobalLitellmHeaderName)(e.auth_header_name),e.user_id&&R(e.user_id)}},[E]),(0,d.useEffect)(()=>{V&&F&&e&&e0(F,e,V,Z),V&&F&&e&&f(V,F,e,null,x),V&&lY(V,_)},[V,F,e]),O||Y)?(0,c.jsx)(oE,{}):(0,c.jsx)(d.Suspense,{fallback:(0,c.jsx)(oE,{}),children:(0,c.jsx)(h.aH,{client:oT,children:(0,c.jsx)(g.f,{accessToken:V,children:z?(0,c.jsx)(sY,{userID:F,userRole:e,premiumUser:t,teams:o,keys:v,setUserRole:s,userEmail:i,setUserEmail:n,setTeams:x,setKeys:y,organizations:b,addKey:H,createClicked:P}):(0,c.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,c.jsx)(p.Z,{userID:F,userRole:e,premiumUser:t,userEmail:i,setProxySettings:k,proxySettings:w,accessToken:V,isPublicPage:!1,sidebarCollapsed:K,onToggleSidebar:()=>{G(!K)}}),(0,c.jsxs)("div",{className:"flex flex-1 overflow-auto",children:[(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(iS,{accessToken:V,setPage:e=>{let s=new URLSearchParams(I);s.set("page",e),window.history.pushState(null,"","?".concat(s.toString())),q(e)},userRole:e,defaultSelectedKey:U,collapsed:K})}),"api-keys"==U?(0,c.jsx)(sY,{userID:F,userRole:e,premiumUser:t,teams:o,keys:v,setUserRole:s,userEmail:i,setUserEmail:n,setTeams:x,setKeys:y,organizations:b,addKey:H,createClicked:P}):"models"==U?(0,c.jsx)(lw,{userID:F,userRole:e,token:E,keys:v,accessToken:V,modelData:A,setModelData:T,premiumUser:t,teams:o}):"llm-playground"==U?(0,c.jsx)(il,{userID:F,userRole:e,token:E,accessToken:V,disabledPersonalKeyCreation:a}):"users"==U?(0,c.jsx)(lz,{userID:F,userRole:e,token:E,keys:v,teams:o,accessToken:V,setKeys:y}):"teams"==U?(0,c.jsx)(lG,{teams:o,setTeams:x,searchParams:I,accessToken:V,userID:F,userRole:e,organizations:b,premiumUser:t}):"organizations"==U?(0,c.jsx)(lJ,{organizations:b,setOrganizations:_,userModels:N,accessToken:V,userRole:e,premiumUser:t}):"admin-panel"==U?(0,c.jsx)(l6,{setTeams:x,searchParams:I,accessToken:V,userID:F,showSSOBanner:S,premiumUser:t,proxySettings:w}):"api_ref"==U?(0,c.jsx)(rh,{proxySettings:w}):"settings"==U?(0,c.jsx)(ai,{userID:F,userRole:e,accessToken:V,premiumUser:t}):"budgets"==U?(0,c.jsx)(af,{accessToken:V}):"guardrails"==U?(0,c.jsx)(nv,{accessToken:V,userRole:e}):"prompts"==U?(0,c.jsx)(nZ,{accessToken:V,userRole:e}):"transform-request"==U?(0,c.jsx)(nw,{accessToken:V}):"general-settings"==U?(0,c.jsx)(ah,{userID:F,userRole:e,accessToken:V,modelData:A}):"ui-theme"==U?(0,c.jsx)(oA,{userID:F,userRole:e,accessToken:V}):"model-hub-table"==U?(0,c.jsx)(aJ.Z,{accessToken:V,publicPage:!1,premiumUser:t,userRole:e}):"caching"==U?(0,c.jsx)(iU,{userID:F,userRole:e,token:E,accessToken:V,premiumUser:t}):"pass-through-settings"==U?(0,c.jsx)(l_,{userID:F,userRole:e,accessToken:V,modelData:A}):"logs"==U?(0,c.jsx)(aH,{userID:F,userRole:e,token:E,accessToken:V,allTeams:null!=o?o:[],premiumUser:t}):"mcp-servers"==U?(0,c.jsx)(ol,{accessToken:V,userRole:e,userID:F}):"tag-management"==U?(0,c.jsx)(oh,{accessToken:V,userRole:e,userID:F}):"vector-stores"==U?(0,c.jsx)(oI,{accessToken:V,userRole:e,userID:F}):"new_usage"==U?(0,c.jsx)(rx,{userID:F,userRole:e,accessToken:V,teams:null!=o?o:[],premiumUser:t}):(0,c.jsx)(iE,{userID:F,userRole:e,token:E,accessToken:V,keys:v,premiumUser:t})]})]})})})})}}},function(e){e.O(0,[665,990,50,521,866,313,49,162,851,971,117,744],function(){return e(e.s=31283)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/page-a5ca703846f872ee.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/page-a5ca703846f872ee.js new file mode 100644 index 00000000000..752b3295241 --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/page-a5ca703846f872ee.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{36362:function(e,s,t){Promise.resolve().then(t.bind(t,98412))},12011:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return y}});var l=t(57437),a=t(2265),r=t(99376),i=t(20831),n=t(94789),o=t(12514),c=t(49804),d=t(67101),m=t(84264),u=t(49566),x=t(96761),h=t(84566),p=t(19250),g=t(14474),j=t(13634),f=t(73002),v=t(3914);function y(){let[e]=j.Z.useForm(),s=(0,r.useSearchParams)();(0,v.e)("token");let t=s.get("invitation_id"),y=s.get("action"),[b,_]=(0,a.useState)(null),[N,Z]=(0,a.useState)(""),[w,k]=(0,a.useState)(""),[S,C]=(0,a.useState)(null),[I,A]=(0,a.useState)(""),[T,E]=(0,a.useState)(""),[L,P]=(0,a.useState)(!0);return(0,a.useEffect)(()=>{(0,p.getUiConfig)().then(e=>{console.log("ui config in onboarding.tsx:",e),P(!1)})},[]),(0,a.useEffect)(()=>{t&&!L&&(0,p.getOnboardingCredentials)(t).then(e=>{let s=e.login_url;console.log("login_url:",s),A(s);let t=e.token,l=(0,g.o)(t);E(t),console.log("decoded:",l),_(l.key),console.log("decoded user email:",l.user_email),k(l.user_email),C(l.user_id)})},[t,L]),(0,l.jsx)("div",{className:"mx-auto w-full max-w-md mt-10",children:(0,l.jsxs)(o.Z,{children:[(0,l.jsx)(x.Z,{className:"text-sm mb-5 text-center",children:"\uD83D\uDE85 LiteLLM"}),(0,l.jsx)(x.Z,{className:"text-xl",children:"reset_password"===y?"Reset Password":"Sign up"}),(0,l.jsx)(m.Z,{children:"reset_password"===y?"Reset your password to access Admin UI.":"Claim your user account to login to Admin UI."}),"reset_password"!==y&&(0,l.jsx)(n.Z,{className:"mt-4",title:"SSO",icon:h.GH$,color:"sky",children:(0,l.jsxs)(d.Z,{numItems:2,className:"flex justify-between items-center",children:[(0,l.jsx)(c.Z,{children:"SSO is under the Enterprise Tier."}),(0,l.jsx)(c.Z,{children:(0,l.jsx)(i.Z,{variant:"primary",className:"mb-2",children:(0,l.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"Get Free Trial"})})})]})}),(0,l.jsxs)(j.Z,{className:"mt-10 mb-5 mx-auto",layout:"vertical",onFinish:e=>{console.log("in handle submit. accessToken:",b,"token:",T,"formValues:",e),b&&T&&(e.user_email=w,S&&t&&(0,p.claimOnboardingToken)(b,t,S,e.password).then(e=>{let s="/ui/";s+="?login=success",document.cookie="token="+T,console.log("redirecting to:",s);let t=(0,p.getProxyBaseUrl)();console.log("proxyBaseUrl:",t),t?window.location.href=t+s:window.location.href=s}))},children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(j.Z.Item,{label:"Email Address",name:"user_email",children:(0,l.jsx)(u.Z,{type:"email",disabled:!0,value:w,defaultValue:w,className:"max-w-md"})}),(0,l.jsx)(j.Z.Item,{label:"Password",name:"password",rules:[{required:!0,message:"password required to sign up"}],help:"reset_password"===y?"Enter your new password":"Create a password for your account",children:(0,l.jsx)(u.Z,{placeholder:"",type:"password",className:"max-w-md"})})]}),(0,l.jsx)("div",{className:"mt-10",children:(0,l.jsx)(f.ZP,{htmlType:"submit",children:"reset_password"===y?"Reset Password":"Sign Up"})})]})]})})}},98412:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return oP}});var l,a,r,i,n,o,c=t(57437),d=t(2265),m=t(99376),u=t(14474),x=t(21623),h=t(29827),p=t(65373),g=t(69734),j=t(19250);let f=async(e,s,t,l,a)=>{let r;r="Admin"!=t&&"Admin Viewer"!=t?await (0,j.teamListCall)(e,(null==l?void 0:l.organization_id)||null,s):await (0,j.teamListCall)(e,(null==l?void 0:l.organization_id)||null),console.log("givenTeams: ".concat(r)),a(r)};var v=t(49804),y=t(67101),b=t(20831),_=t(49566),N=t(87452),Z=t(88829),w=t(72208),k=t(84264),S=t(96761),C=t(29233),I=t(52787),A=t(13634),T=t(82680),E=t(29967),L=t(73002),P=t(64482),M=t(30150),O=e=>{let{step:s=.01,style:t={width:"100%"},placeholder:l="Enter a numerical value",min:a,max:r,onChange:i,...n}=e;return(0,c.jsx)(M.Z,{onWheel:e=>e.currentTarget.blur(),step:s,style:t,placeholder:l,min:a,max:r,onChange:i,...n})};let D=async(e,s,t)=>{try{if(null===e||null===s)return;if(null!==t){let l=(await (0,j.modelAvailableCall)(t,e,s,!0,null,!0)).data.map(e=>e.id),a=[],r=[];return l.forEach(e=>{e.endsWith("/*")?a.push(e):r.push(e)}),[...a,...r]}}catch(e){console.error("Error fetching user models:",e)}},F=e=>{if(e.endsWith("/*")){let s=e.replace("/*","");return"All ".concat(s," models")}return e},R=(e,s)=>{let t=[],l=[];return console.log("teamModels",e),console.log("allModels",s),e.forEach(e=>{if(e.endsWith("/*")){let a=e.replace("/*",""),r=s.filter(e=>e.startsWith(a+"/"));l.push(...r),t.push(e)}else l.push(e)}),[...t,...l].filter((e,s,t)=>t.indexOf(e)===s)};var z=t(63610),U=e=>{let{onChange:s,value:t,className:l,accessToken:a,placeholder:r="Select vector stores",disabled:i=!1}=e,[n,o]=(0,d.useState)([]),[m,u]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{(async()=>{if(a){u(!0);try{let e=await (0,j.vectorStoreListCall)(a);e.data&&o(e.data)}catch(e){console.error("Error fetching vector stores:",e)}finally{u(!1)}}})()},[a]),(0,c.jsx)("div",{children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:r,onChange:s,value:t,loading:m,className:l,options:n.map(e=>({label:"".concat(e.vector_store_name||e.vector_store_id," (").concat(e.vector_store_id,")"),value:e.vector_store_id,title:e.vector_store_description||e.vector_store_id})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"},disabled:i})})},q=e=>{let{teams:s,value:t,onChange:l,disabled:a}=e;return console.log("disabled",a),(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Search or select a team",value:t,onChange:l,disabled:a,filterOption:(e,t)=>{if(!t)return!1;let l=null==s?void 0:s.find(e=>e.team_id===t.key);if(!l)return!1;let a=e.toLowerCase().trim(),r=(l.team_alias||"").toLowerCase(),i=(l.team_id||"").toLowerCase();return r.includes(a)||i.includes(a)},optionFilterProp:"children",children:null==s?void 0:s.map(e=>(0,c.jsxs)(I.default.Option,{value:e.team_id,children:[(0,c.jsx)("span",{className:"font-medium",children:e.team_alias})," ",(0,c.jsxs)("span",{className:"text-gray-500",children:["(",e.team_id,")"]})]},e.team_id))})},V=t(15424),B=t(89970),K=t(23496),G=t(12514),H=t(91777),Y=t(82182),J=t(22452),W=t(74998);(l=i||(i={})).Braintrust="Braintrust",l.CustomCallbackAPI="Custom Callback API",l.Datadog="Datadog",l.Langfuse="Langfuse",l.LangfuseOtel="LangfuseOtel",l.LangSmith="LangSmith",l.Lago="Lago",l.OpenMeter="OpenMeter",l.OTel="Open Telemetry",l.S3="S3",l.Arize="Arize";let $={Braintrust:"braintrust",CustomCallbackAPI:"custom_callback_api",Datadog:"datadog",Langfuse:"langfuse",LangfuseOtel:"langfuse_otel",LangSmith:"langsmith",Lago:"lago",OpenMeter:"openmeter",OTel:"otel",S3:"s3",Arize:"arize"},Q=Object.fromEntries(Object.entries($).map(e=>{let[s,t]=e;return[t,s]})),X=e=>e.map(e=>Q[e]||e),ee=e=>e.map(e=>$[e]||e),es="/ui/assets/logos/",et={Langfuse:{logo:"".concat(es,"langfuse.png"),supports_key_team_logging:!0,dynamic_params:{langfuse_public_key:"text",langfuse_secret_key:"password",langfuse_host:"text"},description:"Langfuse v2 Logging Integration"},LangfuseOtel:{logo:"".concat(es,"langfuse.png"),supports_key_team_logging:!0,dynamic_params:{langfuse_public_key:"text",langfuse_secret_key:"password",langfuse_host:"text"},description:"Langfuse v3 OTEL Logging Integration"},Arize:{logo:"".concat(es,"arize.png"),supports_key_team_logging:!0,dynamic_params:{arize_api_key:"password",arize_space_id:"text"},description:"Arize Logging Integration"},LangSmith:{logo:"".concat(es,"langsmith.png"),supports_key_team_logging:!0,dynamic_params:{langsmith_api_key:"password",langsmith_project:"text",langsmith_base_url:"text",langsmith_sampling_rate:"number"},description:"Langsmith Logging Integration"},Braintrust:{logo:"".concat(es,"braintrust.png"),supports_key_team_logging:!1,dynamic_params:{},description:"Braintrust Logging Integration"},"Custom Callback API":{logo:"".concat(es,"custom.svg"),supports_key_team_logging:!0,dynamic_params:{},description:"Custom Callback API Logging Integration"},Datadog:{logo:"".concat(es,"datadog.png"),supports_key_team_logging:!1,dynamic_params:{},description:"Datadog Logging Integration"},Lago:{logo:"".concat(es,"lago.svg"),supports_key_team_logging:!1,dynamic_params:{},description:"Lago Billing Logging Integration"},OpenMeter:{logo:"".concat(es,"openmeter.png"),supports_key_team_logging:!1,dynamic_params:{},description:"OpenMeter Logging Integration"},"Open Telemetry":{logo:"".concat(es,"otel.png"),supports_key_team_logging:!1,dynamic_params:{},description:"OpenTelemetry Logging Integration"},S3:{logo:"".concat(es,"aws.svg"),supports_key_team_logging:!1,dynamic_params:{},description:"S3 Bucket (AWS) Logging Integration"}},{Option:el}=I.default;var ea=e=>{let{value:s=[],onChange:t,disabledCallbacks:l=[],onDisabledCallbacksChange:a}=e,r=Object.entries(et).filter(e=>{let[s,t]=e;return t.supports_key_team_logging}).map(e=>{let[s,t]=e;return s}),i=Object.keys(et),n=e=>{null==t||t(e)},o=e=>{n(s.filter((s,t)=>t!==e))},d=(e,t,l)=>{let a=[...s];if("callback_name"===t){let s=$[l]||l;a[e]={...a[e],[t]:s,callback_vars:{}}}else a[e]={...a[e],[t]:l};n(a)},m=(e,t,l)=>{let a=[...s];a[e]={...a[e],callback_vars:{...a[e].callback_vars,[t]:l}},n(a)},u=(e,s)=>{var t,l;if(!e.callback_name)return null;let a=null===(t=Object.entries($).find(s=>{let[t,l]=s;return l===e.callback_name}))||void 0===t?void 0:t[0];if(!a)return null;let r=(null===(l=et[a])||void 0===l?void 0:l.dynamic_params)||{};return 0===Object.keys(r).length?null:(0,c.jsxs)("div",{className:"mt-6 pt-4 border-t border-gray-100",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2 mb-4",children:[(0,c.jsx)("div",{className:"w-3 h-3 bg-blue-100 rounded-full flex items-center justify-center",children:(0,c.jsx)("div",{className:"w-1.5 h-1.5 bg-blue-500 rounded-full"})}),(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Integration Parameters"})]}),(0,c.jsx)("div",{className:"grid grid-cols-1 gap-4",children:Object.entries(r).map(t=>{let[l,a]=t;return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 capitalize flex items-center space-x-1",children:[(0,c.jsx)("span",{children:l.replace(/_/g," ")}),(0,c.jsx)(B.Z,{title:"Environment variable reference recommended: os.environ/".concat(l.toUpperCase()),children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})}),"password"===a&&(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-yellow-100 text-yellow-800",children:"Sensitive"}),"number"===a&&(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-yellow-100 text-yellow-800",children:"Number"})]}),"number"===a&&(0,c.jsx)("span",{className:"text-xs text-gray-500",children:"Value must be between 0 and 1"}),"number"===a?(0,c.jsx)(O,{step:.01,width:400,placeholder:"os.environ/".concat(l.toUpperCase()),value:e.callback_vars[l]||"",onChange:e=>m(s,l,e.target.value)}):(0,c.jsx)(_.Z,{type:"password"===a?"password":"text",placeholder:"os.environ/".concat(l.toUpperCase()),value:e.callback_vars[l]||"",onChange:e=>m(s,l,e.target.value)})]},l)})})]})};return(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)(H.Z,{className:"w-5 h-5 text-red-500"}),(0,c.jsx)("span",{className:"text-base font-semibold text-gray-800",children:"Disabled Callbacks"}),(0,c.jsx)(B.Z,{title:"Select callbacks to disable for this key. Disabled callbacks will not receive any logging data.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help"})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Disabled Callbacks"}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select callbacks to disable",value:l,onChange:e=>{let s=ee(e);null==a||a(s)},style:{width:"100%"},optionLabelProp:"label",children:i.map(e=>{var s,t;let l=null===(s=et[e])||void 0===s?void 0:s.logo,a=null===(t=et[e])||void 0===t?void 0:t.description;return(0,c.jsx)(el,{value:e,label:e,children:(0,c.jsx)(B.Z,{title:a,placement:"right",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[l&&(0,c.jsx)("img",{src:l,alt:e,className:"w-4 h-4 object-contain",onError:s=>{let t=s.target,l=t.parentElement;if(l){let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=e.charAt(0),l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e})]})})},e)})}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"Select callbacks that should be disabled for this key. These callbacks will not receive any logging data."})]})]}),(0,c.jsx)(K.Z,{}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)(Y.Z,{className:"w-5 h-5 text-blue-500"}),(0,c.jsx)("span",{className:"text-base font-semibold text-gray-800",children:"Logging Integrations"}),(0,c.jsx)(B.Z,{title:"Configure callback logging integrations for this team.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help"})})]}),(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{n([...s,{callback_name:"",callback_type:"success",callback_vars:{}}])},icon:J.Z,size:"sm",className:"hover:border-blue-400 hover:text-blue-500",type:"button",children:"Add Integration"})]}),(0,c.jsx)("div",{className:"space-y-4",children:s.map((e,s)=>{var t,l;let a=e.callback_name?null===(t=Object.entries($).find(s=>{let[t,l]=s;return l===e.callback_name}))||void 0===t?void 0:t[0]:void 0,i=a?null===(l=et[a])||void 0===l?void 0:l.logo:null;return(0,c.jsxs)(G.Z,{className:"border border-gray-200 shadow-sm hover:shadow-md transition-shadow duration-200",decoration:"top",decorationColor:"blue",children:[(0,c.jsxs)("div",{className:"flex justify-between items-start mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[i&&(0,c.jsx)("img",{src:i,alt:a,className:"w-5 h-5 object-contain"}),(0,c.jsxs)("span",{className:"text-sm font-medium",children:[a||"New Integration"," Configuration"]})]}),(0,c.jsx)(b.Z,{variant:"light",onClick:()=>o(s),icon:W.Z,size:"xs",color:"red",className:"hover:bg-red-50",type:"button",children:"Remove"})]}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Integration Type"}),(0,c.jsx)(I.default,{value:a,placeholder:"Select integration",onChange:e=>d(s,"callback_name",e),className:"w-full",optionLabelProp:"label",children:r.map(e=>{var s,t;let l=null===(s=et[e])||void 0===s?void 0:s.logo,a=null===(t=et[e])||void 0===t?void 0:t.description;return(0,c.jsx)(el,{value:e,label:e,children:(0,c.jsx)(B.Z,{title:a,placement:"right",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[l&&(0,c.jsx)("img",{src:l,alt:e,className:"w-4 h-4 object-contain",onError:s=>{let t=s.target,l=t.parentElement;if(l){let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=e.charAt(0),l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e})]})})},e)})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Event Type"}),(0,c.jsxs)(I.default,{value:e.callback_type,onChange:e=>d(s,"callback_type",e),className:"w-full",children:[(0,c.jsx)(el,{value:"success",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{children:"Success Only"})]})}),(0,c.jsx)(el,{value:"failure",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-red-500 rounded-full"}),(0,c.jsx)("span",{children:"Failure Only"})]})}),(0,c.jsx)(el,{value:"success_and_failure",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{children:"Success & Failure"})]})})]})]})]}),u(e,s)]})]},s)})}),0===s.length&&(0,c.jsxs)("div",{className:"text-center py-12 text-gray-500 border-2 border-dashed border-gray-200 rounded-lg bg-gray-50/50",children:[(0,c.jsx)(Y.Z,{className:"w-12 h-12 text-gray-300 mb-3 mx-auto"}),(0,c.jsx)("div",{className:"text-base font-medium mb-1",children:"No logging integrations configured"}),(0,c.jsx)("div",{className:"text-sm text-gray-400",children:'Click "Add Integration" to configure logging for this team'})]})]})},er=function(e){let{value:s,onChange:t,premiumUser:l=!1,disabledCallbacks:a=[],onDisabledCallbacksChange:r}=e;return l?(0,c.jsx)(ea,{value:s,onChange:t,disabledCallbacks:a,onDisabledCallbacksChange:r}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex flex-wrap gap-2 mb-3",children:[(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-green-50 border border-green-200 text-green-800 text-sm font-medium opacity-50",children:"✨ langfuse-logging"}),(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-green-50 border border-green-200 text-green-800 text-sm font-medium opacity-50",children:"✨ datadog-logging"})]}),(0,c.jsx)("div",{className:"p-3 bg-yellow-50 border border-yellow-200 rounded-lg",children:(0,c.jsxs)(k.Z,{className:"text-sm text-yellow-800",children:["Setting Key/Team logging settings is a LiteLLM Enterprise feature. Global Logging Settings are available for all free users. Get a trial key"," ",(0,c.jsx)("a",{href:"https://www.litellm.ai/#pricing",target:"_blank",rel:"noopener noreferrer",className:"underline",children:"here"}),"."]})})]})},ei=t(57365),en=t(93192),eo=t(9114);function ec(e){let{isInvitationLinkModalVisible:s,setIsInvitationLinkModalVisible:t,baseUrl:l,invitationLinkData:a,modalType:r="invitation"}=e,{Title:i,Paragraph:n}=en.default,o=()=>{if(!l)return"";let e=new URL(l).pathname,s=e&&"/"!==e?"".concat(e,"/ui"):"ui";if(null==a?void 0:a.has_user_setup_sso)return new URL(s,l).toString();let t="".concat(s,"?invitation_id=").concat(null==a?void 0:a.id);return"resetPassword"===r&&(t+="&action=reset_password"),new URL(t,l).toString()};return(0,c.jsxs)(T.Z,{title:"invitation"===r?"Invitation Link":"Reset Password Link",visible:s,width:800,footer:null,onOk:()=>{t(!1)},onCancel:()=>{t(!1)},children:[(0,c.jsx)(n,{children:"invitation"===r?"Copy and send the generated link to onboard this user to the proxy.":"Copy and send the generated link to the user to reset their password."}),(0,c.jsxs)("div",{className:"flex justify-between pt-5 pb-2",children:[(0,c.jsx)(k.Z,{className:"text-base",children:"User ID"}),(0,c.jsx)(k.Z,{children:null==a?void 0:a.user_id})]}),(0,c.jsxs)("div",{className:"flex justify-between pt-5 pb-2",children:[(0,c.jsx)(k.Z,{children:"invitation"===r?"Invitation Link":"Reset Password Link"}),(0,c.jsx)(k.Z,{children:(0,c.jsx)(k.Z,{children:o()})})]}),(0,c.jsx)("div",{className:"flex justify-end mt-5",children:(0,c.jsx)(C.CopyToClipboard,{text:o(),onCopy:()=>eo.Z.success("Copied!"),children:(0,c.jsx)(b.Z,{variant:"primary",children:"invitation"===r?"Copy invitation link":"Copy password reset link"})})})]})}var ed=t(65319),em=t(72188),eu=t(73879),ex=t(34310),eh=t(38434),ep=t(26349),eg=t(35291),ej=t(3632),ef=t(15452),ev=t.n(ef),ey=t(71157),eb=t(44643),e_=t(88532),eN=e=>{let{accessToken:s,teams:t,possibleUIRoles:l,onUsersCreated:a}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)([]),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(null),[y,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)(null),[w,S]=(0,d.useState)("http://localhost:4000");(0,d.useEffect)(()=>{(async()=>{try{let e=await (0,j.getProxyUISettings)(s);Z(e)}catch(e){console.error("Error fetching UI settings:",e)}})(),S(new URL("/",window.location.href).toString())},[s]);let I=async()=>{u(!0);let e=n.map(e=>({...e,status:"pending"}));o(e);let t=!1;for(let a=0;ae.trim()).filter(Boolean),0===e.teams.length&&delete e.teams),n.models&&"string"==typeof n.models&&""!==n.models.trim()&&(e.models=n.models.split(",").map(e=>e.trim()).filter(Boolean),0===e.models.length&&delete e.models),n.max_budget&&""!==n.max_budget.toString().trim()){let s=parseFloat(n.max_budget.toString());!isNaN(s)&&s>0&&(e.max_budget=s)}n.budget_duration&&""!==n.budget_duration.trim()&&(e.budget_duration=n.budget_duration.trim()),n.metadata&&"string"==typeof n.metadata&&""!==n.metadata.trim()&&(e.metadata=n.metadata.trim()),console.log("Sending user data:",e);let r=await (0,j.userCreateCall)(s,null,e);if(console.log("Full response:",r),r&&(r.key||r.user_id)){t=!0,console.log("Success case triggered");let e=(null===(l=r.data)||void 0===l?void 0:l.user_id)||r.user_id;try{if(null==N?void 0:N.SSO_ENABLED){let e=new URL("/ui",w).toString();o(s=>s.map((s,t)=>t===a?{...s,status:"success",key:r.key||r.user_id,invitation_link:e}:s))}else{let t=await (0,j.invitationCreateCall)(s,e),l=new URL("/ui?invitation_id=".concat(t.id),w).toString();o(e=>e.map((e,s)=>s===a?{...e,status:"success",key:r.key||r.user_id,invitation_link:l}:e))}}catch(e){console.error("Error creating invitation:",e),o(e=>e.map((e,s)=>s===a?{...e,status:"success",key:r.key||r.user_id,error:"User created but failed to generate invitation link"}:e))}}else{console.log("Error case triggered");let e=(null==r?void 0:r.error)||"Failed to create user";console.log("Error message:",e),o(s=>s.map((s,t)=>t===a?{...s,status:"failed",error:e}:s))}}catch(s){console.error("Caught error:",s);let e=(null==s?void 0:null===(i=s.response)||void 0===i?void 0:null===(r=i.data)||void 0===r?void 0:r.error)||(null==s?void 0:s.message)||String(s);o(s=>s.map((s,t)=>t===a?{...s,status:"failed",error:e}:s))}}u(!1),t&&a&&a()};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(b.Z,{className:"mb-0",onClick:()=>i(!0),children:"+ Bulk Invite Users"}),(0,c.jsx)(T.Z,{title:"Bulk Invite Users",visible:r,width:800,onCancel:()=>i(!1),bodyStyle:{maxHeight:"70vh",overflow:"auto"},footer:null,children:(0,c.jsx)("div",{className:"flex flex-col",children:0===n.length?(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsxs)("div",{className:"flex items-center mb-4",children:[(0,c.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center mr-3",children:"1"}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Download and fill the template"})]}),(0,c.jsxs)("div",{className:"ml-11 mb-6",children:[(0,c.jsx)("p",{className:"mb-4",children:"Add multiple users at once by following these steps:"}),(0,c.jsxs)("ol",{className:"list-decimal list-inside space-y-2 ml-2 mb-4",children:[(0,c.jsx)("li",{children:"Download our CSV template"}),(0,c.jsx)("li",{children:"Add your users' information to the spreadsheet"}),(0,c.jsx)("li",{children:"Save the file and upload it here"}),(0,c.jsx)("li",{children:"After creation, download the results file containing the API keys for each user"})]}),(0,c.jsxs)("div",{className:"bg-gray-50 p-4 rounded-md border border-gray-200 mb-4",children:[(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Template Column Names"}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-red-500 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"user_email"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:"User's email address (required)"})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-red-500 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"user_role"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'User\'s role (one of: "proxy_admin", "proxy_admin_view_only", "internal_user", "internal_user_view_only")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"teams"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Comma-separated team IDs (e.g., "team-1,team-2")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"max_budget"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Maximum budget as a number (e.g., "100")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"budget_duration"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Budget reset period (e.g., "30d", "1mo")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"models"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Comma-separated allowed models (e.g., "gpt-3.5-turbo,gpt-4")'})]})]})]})]}),(0,c.jsxs)(b.Z,{onClick:()=>{let e=new Blob([ev().unparse([["user_email","user_role","teams","max_budget","budget_duration","models"],["user@example.com","internal_user","team-id-1,team-id-2","100","30d","gpt-3.5-turbo,gpt-4"]])],{type:"text/csv"}),s=window.URL.createObjectURL(e),t=document.createElement("a");t.href=s,t.download="bulk_users_template.csv",document.body.appendChild(t),t.click(),document.body.removeChild(t),window.URL.revokeObjectURL(s)},size:"lg",className:"w-full md:w-auto",children:[(0,c.jsx)(eu.Z,{className:"mr-2"})," Download CSV Template"]})]}),(0,c.jsxs)("div",{className:"flex items-center mb-4",children:[(0,c.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center mr-3",children:"2"}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Upload your completed CSV"})]}),(0,c.jsxs)("div",{className:"ml-11",children:[y?(0,c.jsxs)("div",{className:"mb-4 p-4 rounded-md border ".concat(f?"bg-red-50 border-red-200":"bg-blue-50 border-blue-200"),children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center",children:[f?(0,c.jsx)(ex.Z,{className:"text-red-500 text-xl mr-3"}):(0,c.jsx)(eh.Z,{className:"text-blue-500 text-xl mr-3"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(en.default.Text,{strong:!0,className:f?"text-red-800":"text-blue-800",children:y.name}),(0,c.jsxs)(en.default.Text,{className:"block text-xs ".concat(f?"text-red-600":"text-blue-600"),children:[(y.size/1024).toFixed(1)," KB • ",new Date().toLocaleDateString()]})]})]}),(0,c.jsxs)(b.Z,{size:"xs",variant:"secondary",onClick:()=>{_(null),o([]),h(null),g(null),v(null)},className:"flex items-center",children:[(0,c.jsx)(ep.Z,{className:"mr-1"})," Remove"]})]}),f?(0,c.jsxs)("div",{className:"mt-3 text-red-600 text-sm flex items-start",children:[(0,c.jsx)(eg.Z,{className:"mr-2 mt-0.5"}),(0,c.jsx)("span",{children:f})]}):!p&&(0,c.jsxs)("div",{className:"mt-3 flex items-center",children:[(0,c.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-1.5",children:(0,c.jsx)("div",{className:"bg-blue-500 h-1.5 rounded-full w-full animate-pulse"})}),(0,c.jsx)("span",{className:"ml-2 text-xs text-blue-600",children:"Processing..."})]})]}):(0,c.jsx)(ed.default,{beforeUpload:e=>((h(null),g(null),v(null),_(e),"text/csv"===e.type||e.name.endsWith(".csv"))?e.size>5242880?v("File is too large (".concat((e.size/1048576).toFixed(1)," MB). Please upload a CSV file smaller than 5MB.")):ev().parse(e,{complete:e=>{if(!e.data||0===e.data.length){g("The CSV file appears to be empty. Please upload a file with data."),o([]);return}if(1===e.data.length){g("The CSV file only contains headers but no user data. Please add user data to your CSV."),o([]);return}let s=e.data[0];if(0===s.length||1===s.length&&""===s[0]){g("The CSV file doesn't contain any column headers. Please make sure your CSV has headers."),o([]);return}let l=["user_email","user_role"].filter(e=>!s.includes(e));if(l.length>0){g("Your CSV is missing these required columns: ".concat(l.join(", "),". Please add these columns to your CSV file.")),o([]);return}try{let l=e.data.slice(1).map((e,l)=>{var a,r,i,n,o,c;if(0===e.length||1===e.length&&""===e[0])return null;if(e.length=parseFloat(d.max_budget.toString())&&m.push("Max budget must be greater than 0")),d.budget_duration&&!d.budget_duration.match(/^\d+[dhmwy]$|^\d+mo$/)&&m.push('Invalid budget duration format "'.concat(d.budget_duration,'". Use format like "30d", "1mo", "2w", "6h"')),d.teams&&"string"==typeof d.teams&&t&&t.length>0){let e=t.map(e=>e.team_id),s=d.teams.split(",").map(e=>e.trim()).filter(s=>!e.includes(s));s.length>0&&m.push("Unknown team(s): ".concat(s.join(", ")))}return m.length>0&&(d.isValid=!1,d.error=m.join(", ")),d}).filter(Boolean),a=l.filter(e=>e.isValid);o(l),0===l.length?g("No valid data rows found in the CSV file. Please check your file format."):0===a.length?h("No valid users found in the CSV. Please check the errors below and fix your CSV file."):a.length{h("Failed to parse CSV file: ".concat(e.message)),o([])},header:!1}):(v("Invalid file type: ".concat(e.name,". Please upload a CSV file (.csv extension).")),eo.Z.fromBackend("Invalid file type. Please upload a CSV file.")),!1),accept:".csv",maxCount:1,showUploadList:!1,children:(0,c.jsxs)("div",{className:"border-2 border-dashed border-gray-300 rounded-lg p-8 text-center hover:border-blue-500 transition-colors cursor-pointer",children:[(0,c.jsx)(ej.Z,{className:"text-3xl text-gray-400 mb-2"}),(0,c.jsx)("p",{className:"mb-1",children:"Drag and drop your CSV file here"}),(0,c.jsx)("p",{className:"text-sm text-gray-500 mb-3",children:"or"}),(0,c.jsx)(b.Z,{size:"sm",children:"Browse files"}),(0,c.jsx)("p",{className:"text-xs text-gray-500 mt-4",children:"Only CSV files (.csv) are supported"})]})}),p&&(0,c.jsx)("div",{className:"mb-4 p-4 bg-yellow-50 border border-yellow-200 rounded-md",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)(e_.Z,{className:"h-5 w-5 text-yellow-500 mr-2 mt-0.5"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(en.default.Text,{strong:!0,className:"text-yellow-800",children:"CSV Structure Error"}),(0,c.jsx)(en.default.Paragraph,{className:"text-yellow-700 mt-1 mb-0",children:p}),(0,c.jsx)(en.default.Paragraph,{className:"text-yellow-700 mt-2 mb-0",children:"Please download our template and ensure your CSV follows the required format."})]})]})})]})]}):(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsxs)("div",{className:"flex items-center mb-4",children:[(0,c.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center mr-3",children:"3"}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:n.some(e=>"success"===e.status||"failed"===e.status)?"User Creation Results":"Review and create users"})]}),x&&(0,c.jsx)("div",{className:"ml-11 mb-4 p-4 bg-red-50 border border-red-200 rounded-md",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)(eg.Z,{className:"text-red-500 mr-2 mt-1"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:x}),n.some(e=>!e.isValid)&&(0,c.jsxs)("ul",{className:"mt-2 list-disc list-inside text-red-600 text-sm",children:[(0,c.jsx)("li",{children:"Check the table below for specific errors in each row"}),(0,c.jsx)("li",{children:"Common issues include invalid email formats, missing required fields, or incorrect role values"}),(0,c.jsx)("li",{children:"Fix these issues in your CSV file and upload again"})]})]})]})}),(0,c.jsxs)("div",{className:"ml-11",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-3",children:[(0,c.jsx)("div",{className:"flex items-center",children:n.some(e=>"success"===e.status||"failed"===e.status)?(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(k.Z,{className:"text-lg font-medium mr-3",children:"Creation Summary"}),(0,c.jsxs)(k.Z,{className:"text-sm bg-green-100 text-green-800 px-2 py-1 rounded mr-2",children:[n.filter(e=>"success"===e.status).length," Successful"]}),n.some(e=>"failed"===e.status)&&(0,c.jsxs)(k.Z,{className:"text-sm bg-red-100 text-red-800 px-2 py-1 rounded",children:[n.filter(e=>"failed"===e.status).length," Failed"]})]}):(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(k.Z,{className:"text-lg font-medium mr-3",children:"User Preview"}),(0,c.jsxs)(k.Z,{className:"text-sm bg-blue-100 text-blue-800 px-2 py-1 rounded",children:[n.filter(e=>e.isValid).length," of ",n.length," users valid"]})]})}),!n.some(e=>"success"===e.status||"failed"===e.status)&&(0,c.jsxs)("div",{className:"flex space-x-3",children:[(0,c.jsx)(b.Z,{onClick:()=>{o([]),h(null)},variant:"secondary",children:"Back"}),(0,c.jsx)(b.Z,{onClick:I,disabled:0===n.filter(e=>e.isValid).length||m,children:m?"Creating...":"Create ".concat(n.filter(e=>e.isValid).length," Users")})]})]}),n.some(e=>"success"===e.status)&&(0,c.jsx)("div",{className:"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-md",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"mr-3 mt-1",children:(0,c.jsx)(eb.Z,{className:"h-5 w-5 text-blue-500"})}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium text-blue-800",children:"User creation complete"}),(0,c.jsxs)(k.Z,{className:"block text-sm text-blue-700 mt-1",children:[(0,c.jsx)("span",{className:"font-medium",children:"Next step:"})," Download the credentials file containing API keys and invitation links. Users will need these API keys to make LLM requests through LiteLLM."]})]})]})}),(0,c.jsx)(em.Z,{dataSource:n,columns:[{title:"Row",dataIndex:"rowNumber",key:"rowNumber",width:80},{title:"Email",dataIndex:"user_email",key:"user_email"},{title:"Role",dataIndex:"user_role",key:"user_role"},{title:"Teams",dataIndex:"teams",key:"teams"},{title:"Budget",dataIndex:"max_budget",key:"max_budget"},{title:"Status",key:"status",render:(e,s)=>s.isValid?s.status&&"pending"!==s.status?"success"===s.status?(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(eb.Z,{className:"h-5 w-5 text-green-500 mr-2"}),(0,c.jsx)("span",{className:"text-green-500",children:"Success"})]}),s.invitation_link&&(0,c.jsx)("div",{className:"mt-1",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("span",{className:"text-xs text-gray-500 truncate max-w-[150px]",children:s.invitation_link}),(0,c.jsx)(C.CopyToClipboard,{text:s.invitation_link,onCopy:()=>eo.Z.success("Invitation link copied!"),children:(0,c.jsx)("button",{className:"ml-1 text-blue-500 text-xs hover:text-blue-700",children:"Copy"})})]})})]}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(ey.Z,{className:"h-5 w-5 text-red-500 mr-2"}),(0,c.jsx)("span",{className:"text-red-500",children:"Failed"})]}),s.error&&(0,c.jsx)("span",{className:"text-sm text-red-500 ml-7",children:JSON.stringify(s.error)})]}):(0,c.jsx)("span",{className:"text-gray-500",children:"Pending"}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(ey.Z,{className:"h-5 w-5 text-red-500 mr-2"}),(0,c.jsx)("span",{className:"text-red-500",children:"Invalid"})]}),s.error&&(0,c.jsx)("span",{className:"text-sm text-red-500 ml-7",children:s.error})]})}],size:"small",pagination:{pageSize:5},scroll:{y:300},rowClassName:e=>e.isValid?"":"bg-red-50"}),!n.some(e=>"success"===e.status||"failed"===e.status)&&(0,c.jsxs)("div",{className:"flex justify-end mt-4",children:[(0,c.jsx)(b.Z,{onClick:()=>{o([]),h(null)},variant:"secondary",className:"mr-3",children:"Back"}),(0,c.jsx)(b.Z,{onClick:I,disabled:0===n.filter(e=>e.isValid).length||m,children:m?"Creating...":"Create ".concat(n.filter(e=>e.isValid).length," Users")})]}),n.some(e=>"success"===e.status||"failed"===e.status)&&(0,c.jsxs)("div",{className:"flex justify-end mt-4",children:[(0,c.jsx)(b.Z,{onClick:()=>{o([]),h(null)},variant:"secondary",className:"mr-3",children:"Start New Bulk Import"}),(0,c.jsxs)(b.Z,{onClick:()=>{let e=n.map(e=>({user_email:e.user_email,user_role:e.user_role,status:e.status,key:e.key||"",invitation_link:e.invitation_link||"",error:e.error||""})),s=new Blob([ev().unparse(e)],{type:"text/csv"}),t=window.URL.createObjectURL(s),l=document.createElement("a");l.href=t,l.download="bulk_users_results.csv",document.body.appendChild(l),l.click(),document.body.removeChild(l),window.URL.revokeObjectURL(t)},variant:"primary",className:"flex items-center",children:[(0,c.jsx)(eu.Z,{className:"mr-2"})," Download User Credentials"]})]})]})]})})})]})};let{Option:eZ}=I.default,ew=()=>"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let s=16*Math.random()|0;return("x"==e?s:3&s|8).toString(16)});var ek=e=>{let{userID:s,accessToken:t,teams:l,possibleUIRoles:a,onUserCreated:r,isEmbedded:i=!1}=e,n=(0,h.NL)(),[o,m]=(0,d.useState)(null),[u]=A.Z.useForm(),[x,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)([]),[C,E]=(0,d.useState)(!1),[M,O]=(0,d.useState)(null),[D,R]=(0,d.useState)(null);(0,d.useEffect)(()=>{let e=async()=>{try{let e=await (0,j.modelAvailableCall)(t,s,"any"),l=[];for(let s=0;s{var l,a,c;try{eo.Z.info("Making API Call"),i||p(!0),e.models&&0!==e.models.length||"proxy_admin"===e.user_role||(console.log("formValues.user_role",e.user_role),e.models=["no-default-models"]),console.log("formValues in create user:",e);let a=await (0,j.userCreateCall)(t,null,e);await n.invalidateQueries({queryKey:["userList"]}),console.log("user create Response:",a),f(!0);let c=(null===(l=a.data)||void 0===l?void 0:l.user_id)||a.user_id;if(r&&i){r(c),u.resetFields();return}if(null==o?void 0:o.SSO_ENABLED){let e={id:ew(),user_id:c,is_accepted:!1,accepted_at:null,expires_at:new Date(Date.now()+6048e5),created_at:new Date,created_by:s,updated_at:new Date,updated_by:s,has_user_setup_sso:!0};O(e),E(!0)}else(0,j.invitationCreateCall)(t,c).then(e=>{e.has_user_setup_sso=!1,O(e),E(!0)});eo.Z.success("API user Created"),u.resetFields(),localStorage.removeItem("userData"+s)}catch(s){let e=(null===(c=s.response)||void 0===c?void 0:null===(a=c.data)||void 0===a?void 0:a.detail)||(null==s?void 0:s.message)||"Error creating the user";eo.Z.fromBackend(e),console.error("Error creating the user:",s)}};return i?(0,c.jsxs)(A.Z,{form:u,onFinish:z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"User Email",name:"user_email",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"User Role",name:"user_role",children:(0,c.jsx)(I.default,{children:a&&Object.entries(a).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:"Team ID",name:"team_id",children:(0,c.jsx)(I.default,{placeholder:"Select Team ID",style:{width:"100%"},children:l?l.map(e=>(0,c.jsx)(eZ,{value:e.team_id,children:e.team_alias},e.team_id)):(0,c.jsx)(eZ,{value:null,children:"Default Team"},"default")})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Create User"})})]}):(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{className:"mb-0",onClick:()=>p(!0),children:"+ Invite User"}),(0,c.jsx)(eN,{accessToken:t,teams:l,possibleUIRoles:a}),(0,c.jsxs)(T.Z,{title:"Invite User",visible:x,width:800,footer:null,onOk:()=>{p(!1),u.resetFields()},onCancel:()=>{p(!1),f(!1),u.resetFields()},children:[(0,c.jsx)(k.Z,{className:"mb-1",children:"Create a User who can own keys"}),(0,c.jsxs)(A.Z,{form:u,onFinish:z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"User Email",name:"user_email",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Global Proxy Role"," ",(0,c.jsx)(B.Z,{title:"This is the role that the user will globally on the proxy. This role is independent of any team/org specific roles.",children:(0,c.jsx)(V.Z,{})})]}),name:"user_role",children:(0,c.jsx)(I.default,{children:a&&Object.entries(a).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:"Team ID",className:"gap-2",name:"team_id",help:"If selected, user will be added as a 'user' role to the team.",children:(0,c.jsx)(I.default,{placeholder:"Select Team ID",style:{width:"100%"},children:l?l.map(e=>(0,c.jsx)(eZ,{value:e.team_id,children:e.team_alias},e.team_id)):(0,c.jsx)(eZ,{value:null,children:"Default Team"},"default")})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsxs)(N.Z,{children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)(S.Z,{children:"Personal Key Creation"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)(A.Z.Item,{className:"gap-2",label:(0,c.jsxs)("span",{children:["Models"," ",(0,c.jsx)(B.Z,{title:"Models user has access to, outside of team scope.",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",help:"Models user has access to, outside of team scope.",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),v.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})})})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Create User"})})]})]}),g&&(0,c.jsx)(ec,{isInvitationLinkModalVisible:C,setIsInvitationLinkModalVisible:E,baseUrl:D||"",invitationLinkData:M})]})},eS=t(7310),eC=t.n(eS),eI=t(20347);let{Option:eA}=I.default,eT=e=>e?({"24h":"daily","7d":"weekly","30d":"monthly"})[e]||e:"Not set";var eE=e=>{let{value:s,onChange:t,className:l="",style:a={}}=e;return(0,c.jsxs)(I.default,{style:{width:"100%",...a},value:s||void 0,onChange:t,className:l,placeholder:"n/a",children:[(0,c.jsx)(eA,{value:"24h",children:"daily"}),(0,c.jsx)(eA,{value:"7d",children:"weekly"}),(0,c.jsx)(eA,{value:"30d",children:"monthly"})]})};function eL(e,s){let t=structuredClone(e);for(let[e,l]of Object.entries(s))e in t&&(t[e]=l);return t}let eP=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return null==e?"-":e.toLocaleString("en-US",{minimumFractionDigits:s,maximumFractionDigits:s})},eM=async function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Copied to clipboard";if(!e)return!1;if(!navigator||!navigator.clipboard||!navigator.clipboard.writeText)return eO(e,s);try{return await navigator.clipboard.writeText(e),eo.Z.success(s),!0}catch(t){return console.error("Clipboard API failed: ",t),eO(e,s)}},eO=(e,s)=>{try{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.left="-999999px",t.style.top="-999999px",t.setAttribute("readonly",""),document.body.appendChild(t),t.focus(),t.select();let l=document.execCommand("copy");if(document.body.removeChild(t),l)return eo.Z.success(s),!0;throw Error("execCommand failed")}catch(e){return eo.Z.fromBackend("Failed to copy to clipboard"),console.error("Failed to copy: ",e),!1}};var eD=e=>{let{onChange:s,value:t,className:l,accessToken:a,placeholder:r="Select MCP servers",disabled:i=!1}=e,[n,o]=(0,d.useState)([]),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1);(0,d.useEffect)(()=>{(async()=>{if(a){h(!0);try{let[e,s]=await Promise.all([(0,j.fetchMCPServers)(a),(0,j.fetchMCPAccessGroups)(a)]),t=Array.isArray(e)?e:e.data||[],l=Array.isArray(s)?s:s.data||[];o(t),u(l)}catch(e){console.error("Error fetching MCP servers or access groups:",e)}finally{h(!1)}}})()},[a]);let p=[...m.map(e=>({label:e,value:e,isAccessGroup:!0,searchText:"".concat(e," Access Group")})),...n.map(e=>({label:"".concat(e.server_name||e.server_id," (").concat(e.server_id,")"),value:e.server_id,isAccessGroup:!1,searchText:"".concat(e.server_name||e.server_id," ").concat(e.server_id," MCP Server")}))],g=[...(null==t?void 0:t.servers)||[],...(null==t?void 0:t.accessGroups)||[]];return(0,c.jsx)("div",{children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:r,onChange:e=>{s({servers:e.filter(e=>!m.includes(e)),accessGroups:e.filter(e=>m.includes(e))})},value:g,loading:x,className:l,showSearch:!0,style:{width:"100%"},disabled:i,filterOption:(e,s)=>{var t;return((null===(t=p.find(e=>e.value===(null==s?void 0:s.value)))||void 0===t?void 0:t.searchText)||"").toLowerCase().includes(e.toLowerCase())},children:p.map(e=>(0,c.jsx)(I.default.Option,{value:e.value,label:e.label,children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,c.jsx)("span",{style:{display:"inline-block",width:8,height:8,borderRadius:"50%",background:e.isAccessGroup?"#52c41a":"#1890ff",flexShrink:0}}),(0,c.jsx)("span",{style:{flex:1},children:e.label}),(0,c.jsx)("span",{style:{color:e.isAccessGroup?"#52c41a":"#1890ff",fontSize:"12px",fontWeight:500,opacity:.8},children:e.isAccessGroup?"Access Group":"MCP Server"})]})},e.value))})})},eF=t(87908),eR=t(61994),ez=t(32489),eU=e=>{let{accessToken:s,selectedServers:t,toolPermissions:l,onChange:a,disabled:r=!1}=e,[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)({}),[u,x]=(0,d.useState)({}),[h,p]=(0,d.useState)({});(0,d.useEffect)(()=>{(async()=>{if(0===t.length){n([]);return}try{let e=await (0,j.fetchMCPServers)(s),l=(Array.isArray(e)?e:e.data||[]).filter(e=>t.includes(e.server_id));n(l)}catch(e){console.error("Error fetching MCP servers:",e),n([])}})()},[t,s]);let g=async e=>{x(s=>({...s,[e]:!0})),p(s=>({...s,[e]:""}));try{let t=await (0,j.listMCPTools)(s,e);t.error?(p(s=>({...s,[e]:t.message||"Failed to fetch tools"})),m(s=>({...s,[e]:[]}))):m(s=>({...s,[e]:t.tools||[]}))}catch(s){console.error("Error fetching tools for server ".concat(e,":"),s),p(s=>({...s,[e]:"Failed to fetch tools"})),m(s=>({...s,[e]:[]}))}finally{x(s=>({...s,[e]:!1}))}};(0,d.useEffect)(()=>{i.forEach(e=>{o[e.server_id]||u[e.server_id]||g(e.server_id)})},[i]);let f=(e,s)=>{let t=l[e]||[],r=t.includes(s)?t.filter(e=>e!==s):[...t,s];a({...l,[e]:r})},v=e=>{let s=o[e]||[];a({...l,[e]:s.map(e=>e.name)})},y=e=>{a({...l,[e]:[]})};return 0===t.length?null:(0,c.jsx)("div",{className:"space-y-4",children:i.map(e=>{let s=e.server_name||e.alias||e.server_id,t=o[e.server_id]||[],a=l[e.server_id]||[],i=u[e.server_id],n=h[e.server_id];return(0,c.jsxs)("div",{className:"border rounded-lg bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between p-4 border-b bg-white rounded-t-lg",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:s}),e.description&&(0,c.jsx)(k.Z,{className:"text-sm text-gray-500",children:e.description})]}),(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[(0,c.jsx)("button",{className:"text-sm text-blue-600 hover:text-blue-700 font-medium",onClick:()=>v(e.server_id),disabled:r||i,children:"Select All"}),(0,c.jsx)("button",{className:"text-sm text-blue-600 hover:text-blue-700 font-medium",onClick:()=>y(e.server_id),disabled:r||i,children:"Deselect All"}),(0,c.jsx)("button",{className:"text-gray-400 hover:text-gray-600",onClick:()=>{},children:(0,c.jsx)(ez.Z,{className:"w-4 h-4"})})]})]}),(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium text-gray-700 mb-3",children:"Available Tools"}),i&&(0,c.jsxs)("div",{className:"flex items-center justify-center py-8",children:[(0,c.jsx)(eF.Z,{size:"large"}),(0,c.jsx)(k.Z,{className:"ml-3 text-gray-500",children:"Loading tools..."})]}),n&&!i&&(0,c.jsxs)("div",{className:"p-4 bg-red-50 border border-red-200 rounded-lg text-center",children:[(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:"Unable to load tools"}),(0,c.jsx)(k.Z,{className:"text-sm text-red-500 mt-1",children:n})]}),!i&&!n&&t.length>0&&(0,c.jsx)("div",{className:"space-y-2",children:t.map(s=>{let t=a.includes(s.name);return(0,c.jsxs)("div",{className:"flex items-start gap-2",children:[(0,c.jsx)(eR.Z,{checked:t,onChange:()=>f(e.server_id,s.name),disabled:r}),(0,c.jsx)("div",{className:"flex-1 min-w-0",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900",children:s.name}),(0,c.jsxs)(k.Z,{className:"text-sm text-gray-500",children:["- ",s.description||"No description"]})]})})]},s.name)})}),!i&&!n&&0===t.length&&(0,c.jsx)("div",{className:"text-center py-6",children:(0,c.jsx)(k.Z,{className:"text-gray-500",children:"No tools available"})})]})]},e.server_id)})})},eq=t(77355),eV=t(93416),eB=t(95704),eK=t(69993);let eG=async e=>{try{let s=await (0,j.modelHubCall)(e);if(console.log("model_info:",s),(null==s?void 0:s.data.length)>0){let e=s.data.map(e=>({model_group:e.model_group,mode:null==e?void 0:e.mode}));return e.sort((e,s)=>e.model_group.localeCompare(s.model_group)),e}return[]}catch(e){throw console.error("Error fetching model info:",e),e}};var eH=e=>{let{accessToken:s,value:t,placeholder:l="Select a Model",onChange:a,disabled:r=!1,style:i,className:n,showLabel:o=!0,labelText:m="Select Model"}=e,[u,x]=(0,d.useState)(t),[h,p]=(0,d.useState)(!1),[g,j]=(0,d.useState)([]),f=(0,d.useRef)(null);return(0,d.useEffect)(()=>{x(t)},[t]),(0,d.useEffect)(()=>{s&&(async()=>{try{let e=await eG(s);console.log("Fetched models for selector:",e),e.length>0&&j(e)}catch(e){console.error("Error fetching model info:",e)}})()},[s]),(0,c.jsxs)("div",{children:[o&&(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(eK.Z,{className:"mr-2"})," ",m]}),(0,c.jsx)(I.default,{value:u,placeholder:l,onChange:e=>{"custom"===e?(p(!0),x(void 0)):(p(!1),x(e),a&&a(e))},options:[...Array.from(new Set(g.map(e=>e.model_group))).map((e,s)=>({value:e,label:e,key:s})),{value:"custom",label:"Enter custom model",key:"custom"}],style:{width:"100%",...i},showSearch:!0,className:"rounded-md ".concat(n||""),disabled:r}),h&&(0,c.jsx)(_.Z,{className:"mt-2",placeholder:"Enter custom model name",onValueChange:e=>{f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{x(e),a&&a(e)},500)},disabled:r})]})},eY=e=>{let{accessToken:s,initialModelAliases:t={},onAliasUpdate:l,showExampleConfig:a=!0}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)({aliasName:"",targetModel:""}),[m,u]=(0,d.useState)(null);(0,d.useEffect)(()=>{i(Object.entries(t).map((e,s)=>{let[t,l]=e;return{id:"".concat(s,"-").concat(t),aliasName:t,targetModel:l}}))},[t]);let x=e=>{u({...e})},h=()=>{if(!m)return;if(!m.aliasName||!m.targetModel){eo.Z.fromBackend("Please provide both alias name and target model");return}if(r.some(e=>e.id!==m.id&&e.aliasName===m.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=r.map(e=>e.id===m.id?m:e);i(e),u(null);let s={};e.forEach(e=>{s[e.aliasName]=e.targetModel}),l&&l(s),eo.Z.success("Alias updated successfully")},p=()=>{u(null)},g=e=>{let s=r.filter(s=>s.id!==e);i(s);let t={};s.forEach(e=>{t[e.aliasName]=e.targetModel}),l&&l(t),eo.Z.success("Alias deleted successfully")},j=r.reduce((e,s)=>(e[s.aliasName]=s.targetModel,e),{});return(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(eB.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Add New Alias"}),(0,c.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Alias Name"}),(0,c.jsx)("input",{type:"text",value:n.aliasName,onChange:e=>o({...n,aliasName:e.target.value}),placeholder:"e.g., gpt-4o",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Target Model"}),(0,c.jsx)(eH,{accessToken:s,value:n.targetModel,placeholder:"Select target model",onChange:e=>o({...n,targetModel:e}),showLabel:!1})]}),(0,c.jsx)("div",{className:"flex items-end",children:(0,c.jsxs)("button",{onClick:()=>{if(!n.aliasName||!n.targetModel){eo.Z.fromBackend("Please provide both alias name and target model");return}if(r.some(e=>e.aliasName===n.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=[...r,{id:"".concat(Date.now(),"-").concat(n.aliasName),aliasName:n.aliasName,targetModel:n.targetModel}];i(e),o({aliasName:"",targetModel:""});let s={};e.forEach(e=>{s[e.aliasName]=e.targetModel}),l&&l(s),eo.Z.success("Alias added successfully")},disabled:!n.aliasName||!n.targetModel,className:"flex items-center px-4 py-2 rounded-md text-sm ".concat(n.aliasName&&n.targetModel?"bg-green-600 text-white hover:bg-green-700":"bg-gray-300 text-gray-500 cursor-not-allowed"),children:[(0,c.jsx)(eq.Z,{className:"w-4 h-4 mr-1"}),"Add Alias"]})})]})]}),(0,c.jsx)(eB.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Manage Existing Aliases"}),(0,c.jsx)("div",{className:"rounded-lg custom-border relative mb-6",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(eB.iA,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(eB.ss,{children:(0,c.jsxs)(eB.SC,{children:[(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Alias Name"}),(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Target Model"}),(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Actions"})]})}),(0,c.jsxs)(eB.RM,{children:[r.map(e=>(0,c.jsx)(eB.SC,{className:"h-8",children:m&&m.id===e.id?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eB.pj,{className:"py-0.5",children:(0,c.jsx)("input",{type:"text",value:m.aliasName,onChange:e=>u({...m,aliasName:e.target.value}),className:"w-full px-2 py-1 border border-gray-300 rounded-md text-sm"})}),(0,c.jsx)(eB.pj,{className:"py-0.5",children:(0,c.jsx)(eH,{accessToken:s,value:m.targetModel,onChange:e=>u({...m,targetModel:e}),showLabel:!1,style:{height:"32px"}})}),(0,c.jsx)(eB.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:h,className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:"Save"}),(0,c.jsx)("button",{onClick:p,className:"text-xs bg-gray-50 text-gray-600 px-2 py-1 rounded hover:bg-gray-100",children:"Cancel"})]})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eB.pj,{className:"py-0.5 text-sm text-gray-900",children:e.aliasName}),(0,c.jsx)(eB.pj,{className:"py-0.5 text-sm text-gray-500",children:e.targetModel}),(0,c.jsx)(eB.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>x(e),className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:(0,c.jsx)(eV.Z,{className:"w-3 h-3"})}),(0,c.jsx)("button",{onClick:()=>g(e.id),className:"text-xs bg-red-50 text-red-600 px-2 py-1 rounded hover:bg-red-100",children:(0,c.jsx)(W.Z,{className:"w-3 h-3"})})]})})]})},e.id)),0===r.length&&(0,c.jsx)(eB.SC,{children:(0,c.jsx)(eB.pj,{colSpan:3,className:"py-0.5 text-sm text-gray-500 text-center",children:"No aliases added yet. Add a new alias above."})})]})]})})}),a&&(0,c.jsxs)(eB.Zb,{children:[(0,c.jsx)(eB.Dx,{className:"mb-4",children:"Configuration Example"}),(0,c.jsx)(eB.xv,{className:"text-gray-600 mb-4",children:"Here's how your current aliases would look in the config:"}),(0,c.jsx)("div",{className:"bg-gray-100 rounded-lg p-4 font-mono text-sm",children:(0,c.jsxs)("div",{className:"text-gray-700",children:["model_aliases:",0===Object.keys(j).length?(0,c.jsxs)("span",{className:"text-gray-500",children:[(0,c.jsx)("br",{}),"\xa0\xa0# No aliases configured yet"]}):Object.entries(j).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{children:[(0,c.jsx)("br",{}),'\xa0\xa0"',s,'": "',t,'"']},s)})]})})]})]})},eJ=t(63709),eW=t(31283);let{Option:e$}=I.default;var eQ=e=>{let{form:s,autoRotationEnabled:t,onAutoRotationChange:l,rotationInterval:a,onRotationIntervalChange:r}=e,i=a&&!["7d","30d","90d","180d","365d"].includes(a),[n,o]=(0,d.useState)(i),[m,u]=(0,d.useState)(i?a:"");return(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Key Expiry Settings"}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 flex items-center space-x-1",children:[(0,c.jsx)("span",{children:"Expire Key"}),(0,c.jsx)(B.Z,{title:"Set when this key should expire. Format: 30s (seconds), 30m (minutes), 30h (hours), 30d (days)",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})})]}),(0,c.jsx)(eW.o,{name:"duration",placeholder:"e.g., 30d",className:"w-full"})]})]}),(0,c.jsx)(K.Z,{}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Auto-Rotation Settings"}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 flex items-center space-x-1",children:[(0,c.jsx)("span",{children:"Enable Auto-Rotation"}),(0,c.jsx)(B.Z,{title:"Key will automatically regenerate at the specified interval for enhanced security.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})})]}),(0,c.jsx)(eJ.Z,{checked:t,onChange:l,size:"default",className:t?"":"bg-gray-400"})]}),t&&(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 flex items-center space-x-1",children:[(0,c.jsx)("span",{children:"Rotation Interval"}),(0,c.jsx)(B.Z,{title:"How often the key should be automatically rotated. Choose the interval that best fits your security requirements.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)(I.default,{value:n?"custom":a,onChange:e=>{"custom"===e?o(!0):(o(!1),u(""),r(e))},className:"w-full",placeholder:"Select interval",children:[(0,c.jsx)(e$,{value:"7d",children:"7 days"}),(0,c.jsx)(e$,{value:"30d",children:"30 days"}),(0,c.jsx)(e$,{value:"90d",children:"90 days"}),(0,c.jsx)(e$,{value:"180d",children:"180 days"}),(0,c.jsx)(e$,{value:"365d",children:"365 days"}),(0,c.jsx)(e$,{value:"custom",children:"Custom interval"})]}),n&&(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsx)(eW.o,{value:m,onChange:e=>{let s=e.target.value;u(s),r(s)},placeholder:"e.g., 1s, 5m, 2h, 14d"}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"Supported formats: seconds (s), minutes (m), hours (h), days (d)"})]})]})]})]}),t&&(0,c.jsx)("div",{className:"bg-blue-50 p-3 rounded-md text-sm text-blue-700",children:"When rotation occurs, you'll receive a notification with the new key. The old key will be deactivated after a brief grace period."})]})]})};let{Option:eX}=I.default;var e0=e=>{let{type:s,name:t,showDetailedDescriptions:l=!0,className:a="",initialValue:r=null,form:i,onChange:n}=e,o=s.toUpperCase(),d=s.toLowerCase(),m="Select 'guaranteed_throughput' to prevent overallocating ".concat(o," limit when the key belongs to a Team with specific ").concat(o," limits.");return(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:[o," Rate Limit Type"," ",(0,c.jsx)(B.Z,{title:m,children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:t,initialValue:r,className:a,children:(0,c.jsx)(I.default,{defaultValue:l?"default":void 0,placeholder:"Select rate limit type",style:{width:"100%"},optionLabelProp:l?"label":void 0,onChange:e=>{i&&i.setFieldValue(t,e),n&&n(e)},children:l?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eX,{value:"best_effort_throughput",label:"Default",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Default"}),(0,c.jsxs)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:["Best effort throughput - no error if we're overallocating ",d," (Team/Key Limits checked at runtime)."]})]})}),(0,c.jsx)(eX,{value:"guaranteed_throughput",label:"Guaranteed throughput",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Guaranteed throughput"}),(0,c.jsxs)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:["Guaranteed throughput - raise an error if we're overallocating ",d," (also checks model-specific limits)"]})]})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eX,{value:"best_effort_throughput",children:"Best effort throughput"}),(0,c.jsx)(eX,{value:"guaranteed_throughput",children:"Guaranteed throughput"})]})})})};let{Option:e1}=I.default,e2=e=>{let s=[];if(console.log("data:",JSON.stringify(e)),e)for(let t of e)t.metadata&&t.metadata.tags&&s.push(...t.metadata.tags);let t=Array.from(new Set(s)).map(e=>({value:e,label:e}));return console.log("uniqueTags:",t),t},e4=async(e,s,t,l)=>{try{if(null===e||null===s)return[];if(null!==t){let a=(await (0,j.modelAvailableCall)(t,e,s,!0,l,!0)).data.map(e=>e.id);return console.log("available_model_names:",a),a}return[]}catch(e){return console.error("Error fetching user models:",e),[]}},e5=async(e,s,t,l)=>{try{if(null===e||null===s)return;if(null!==t){let a=(await (0,j.modelAvailableCall)(t,e,s)).data.map(e=>e.id);console.log("available_model_names:",a),l(a)}}catch(e){console.error("Error fetching user models:",e)}};var e3=e=>{let{userID:s,team:t,teams:l,userRole:a,accessToken:r,data:i,addKey:n,premiumUser:o=!1}=e,[m]=A.Z.useForm(),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(null),[g,f]=(0,d.useState)(null),[M,D]=(0,d.useState)([]),[R,K]=(0,d.useState)([]),[G,H]=(0,d.useState)("you"),[Y,J]=(0,d.useState)(e2(i)),[W,$]=(0,d.useState)([]),[Q,X]=(0,d.useState)([]),[es,et]=(0,d.useState)([]),[el,ea]=(0,d.useState)(t),[ei,en]=(0,d.useState)(!1),[ec,ed]=(0,d.useState)(null),[em,eu]=(0,d.useState)({}),[ex,eh]=(0,d.useState)([]),[ep,eg]=(0,d.useState)(!1),[ej,ef]=(0,d.useState)([]),[ev,ey]=(0,d.useState)(!1),[eb,e_]=(0,d.useState)([]),[eN,eZ]=(0,d.useState)("default"),[ew,eS]=(0,d.useState)({}),[eA,eT]=(0,d.useState)(!1),[eL,eM]=(0,d.useState)("30d"),eO=()=>{x(!1),m.resetFields(),et([]),e_([]),eZ("default"),eS({}),eT(!1),eM("30d")},eF=()=>{x(!1),p(null),ea(null),m.resetFields(),et([]),e_([]),eZ("default"),eS({}),eT(!1),eM("30d")};(0,d.useEffect)(()=>{s&&a&&r&&e5(s,a,r,D)},[r,s,a]);let eR=async()=>{try{if(null==r)return;let e=await (0,j.fetchMCPAccessGroups)(r);ef(e)}catch(e){console.error("Failed to fetch MCP access groups:",e)}};(0,d.useEffect)(()=>{eR()},[r]),(0,d.useEffect)(()=>{let e=async()=>{try{let e=await (0,j.getPromptsList)(r);X(e.prompts.map(e=>e.prompt_id))}catch(e){console.error("Failed to fetch prompts:",e)}};(async()=>{try{let e=(await (0,j.getGuardrailsList)(r)).guardrails.map(e=>e.guardrail_name);$(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})(),e()},[r]),(0,d.useEffect)(()=>{(async()=>{try{if(r){let e=sessionStorage.getItem("possibleUserRoles");if(e)eu(JSON.parse(e));else{let e=await (0,j.getPossibleUserRoles)(r);sessionStorage.setItem("possibleUserRoles",JSON.stringify(e)),eu(e)}}}catch(e){console.error("Error fetching possible user roles:",e)}})()},[r]);let ez=R.includes("no-default-models")&&!el,eq=async e=>{try{var t,l,a,o,c;let d;let u=null!==(a=null==e?void 0:e.key_alias)&&void 0!==a?a:"",h=null!==(o=null==e?void 0:e.team_id)&&void 0!==o?o:null;if((null!==(c=null==i?void 0:i.filter(e=>e.team_id===h).map(e=>e.key_alias))&&void 0!==c?c:[]).includes(u))throw Error("Key alias ".concat(u," already exists for team with ID ").concat(h,", please provide another key alias"));eo.Z.info("Making API Call"),x(!0),"you"===G&&(e.user_id=s);let g={};try{g=JSON.parse(e.metadata||"{}")}catch(e){console.error("Error parsing metadata:",e)}if("service_account"===G&&(g.service_account_id=e.key_alias),es.length>0&&(g={...g,logging:es.filter(e=>e.callback_name)}),eb.length>0){let e=ee(eb);g={...g,litellm_disabled_callbacks:e}}if(eA&&(e.auto_rotate=!0,e.rotation_interval=eL),e.duration&&(e.duration=e.duration),e.metadata=JSON.stringify(g),e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0&&(e.object_permission={vector_stores:e.allowed_vector_store_ids},delete e.allowed_vector_store_ids),e.allowed_mcp_servers_and_groups&&((null===(t=e.allowed_mcp_servers_and_groups.servers)||void 0===t?void 0:t.length)>0||(null===(l=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===l?void 0:l.length)>0)){e.object_permission||(e.object_permission={});let{servers:s,accessGroups:t}=e.allowed_mcp_servers_and_groups;s&&s.length>0&&(e.object_permission.mcp_servers=s),t&&t.length>0&&(e.object_permission.mcp_access_groups=t),delete e.allowed_mcp_servers_and_groups}let v=e.mcp_tool_permissions||{};Object.keys(v).length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_tool_permissions=v),delete e.mcp_tool_permissions,e.allowed_mcp_access_groups&&e.allowed_mcp_access_groups.length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_access_groups=e.allowed_mcp_access_groups,delete e.allowed_mcp_access_groups),Object.keys(ew).length>0&&(e.aliases=JSON.stringify(ew)),d="service_account"===G?await (0,j.keyCreateServiceAccountCall)(r,e):await (0,j.keyCreateCall)(r,s,e),console.log("key create Response:",d),n(d),p(d.key),f(d.soft_budget),eo.Z.success("API Key Created"),m.resetFields(),localStorage.removeItem("userData"+s)}catch(e){console.log("error in create key:",e),eo.Z.fromBackend("Error creating the key: ".concat(e))}};(0,d.useEffect)(()=>{if(s&&a&&r){var e;e4(s,a,r,null!==(e=null==el?void 0:el.team_id)&&void 0!==e?e:null).then(e=>{var s;K(Array.from(new Set([...null!==(s=null==el?void 0:el.models)&&void 0!==s?s:[],...e])))})}m.setFieldValue("models",[])},[el,r,s,a]);let eV=async e=>{if(!e){eh([]);return}eg(!0);try{let s=new URLSearchParams;if(s.append("user_email",e),null==r)return;let t=(await (0,j.userFilterUICall)(r,s)).map(e=>({label:"".concat(e.user_email," (").concat(e.user_id,")"),value:e.user_id,user:e}));eh(t)}catch(e){console.error("Error fetching users:",e),eo.Z.fromBackend("Failed to search for users")}finally{eg(!1)}},eB=(0,d.useCallback)(eC()(e=>eV(e),300),[r]),eK=(e,s)=>{let t=s.user;m.setFieldsValue({user_id:t.user_id})};return(0,c.jsxs)("div",{children:[a&&eI.LQ.includes(a)&&(0,c.jsx)(b.Z,{className:"mx-auto",onClick:()=>x(!0),children:"+ Create New Key"}),(0,c.jsx)(T.Z,{visible:u,width:1e3,footer:null,onOk:eO,onCancel:eF,children:(0,c.jsxs)(A.Z,{form:m,onFinish:eq,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(S.Z,{className:"mb-4",children:"Key Ownership"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Owned By"," ",(0,c.jsx)(B.Z,{title:"Select who will own this API key",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),className:"mb-4",children:(0,c.jsxs)(E.ZP.Group,{onChange:e=>H(e.target.value),value:G,children:[(0,c.jsx)(E.ZP,{value:"you",children:"You"}),(0,c.jsx)(E.ZP,{value:"service_account",children:"Service Account"}),"Admin"===a&&(0,c.jsx)(E.ZP,{value:"another_user",children:"Another User"})]})}),"another_user"===G&&(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["User ID"," ",(0,c.jsx)(B.Z,{title:"The user who will own this key and be responsible for its usage",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"user_id",className:"mt-4",rules:[{required:"another_user"===G,message:"Please input the user ID of the user you are assigning the key to"}],children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{style:{display:"flex",marginBottom:"8px"},children:[(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Type email to search for users",filterOption:!1,onSearch:e=>{eB(e)},onSelect:(e,s)=>eK(e,s),options:ex,loading:ep,allowClear:!0,style:{width:"100%"},notFoundContent:ep?"Searching...":"No users found"}),(0,c.jsx)(L.ZP,{onClick:()=>en(!0),style:{marginLeft:"8px"},children:"Create User"})]}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"Search by email to find users"})]})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Team"," ",(0,c.jsx)(B.Z,{title:"The team this key belongs to, which determines available models and budget limits",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"team_id",initialValue:t?t.team_id:null,className:"mt-4",rules:[{required:"service_account"===G,message:"Please select a team for the service account"}],help:"service_account"===G?"required":"",children:(0,c.jsx)(q,{teams:l,onChange:e=>{ea((null==l?void 0:l.find(s=>s.team_id===e))||null)}})})]}),ez&&(0,c.jsx)("div",{className:"mb-8 p-4 bg-blue-50 border border-blue-200 rounded-md",children:(0,c.jsx)(k.Z,{className:"text-blue-800 text-sm",children:"Please select a team to continue configuring your API key. If you do not see any teams, please contact your Proxy Admin to either provide you with access to models or to add you to a team."})}),!ez&&(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(S.Z,{className:"mb-4",children:"Key Details"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["you"===G||"another_user"===G?"Key Name":"Service Account ID"," ",(0,c.jsx)(B.Z,{title:"you"===G||"another_user"===G?"A descriptive name to identify this key":"Unique identifier for this service account",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"key_alias",rules:[{required:!0,message:"Please input a ".concat("you"===G?"key name":"service account ID")}],help:"required",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Models"," ",(0,c.jsx)(B.Z,{title:"Select which models this key can access. Choose 'All Team Models' to grant access to all models available to the team",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",rules:"management"===eN||"read_only"===eN?[]:[{required:!0,message:"Please select a model"}],help:"management"===eN||"read_only"===eN?"Models field is disabled for this key type":"required",className:"mt-4",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},disabled:"management"===eN||"read_only"===eN,onChange:e=>{e.includes("all-team-models")&&m.setFieldsValue({models:["all-team-models"]})},children:[(0,c.jsx)(e1,{value:"all-team-models",children:"All Team Models"},"all-team-models"),R.map(e=>(0,c.jsx)(e1,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Key Type"," ",(0,c.jsx)(B.Z,{title:"Select the type of key to determine what routes and operations this key can access",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"key_type",initialValue:"default",className:"mt-4",children:(0,c.jsxs)(I.default,{defaultValue:"default",placeholder:"Select key type",style:{width:"100%"},optionLabelProp:"label",onChange:e=>{eZ(e),("management"===e||"read_only"===e)&&m.setFieldsValue({models:[]})},children:[(0,c.jsx)(e1,{value:"default",label:"Default",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Default"}),(0,c.jsx)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:"Can call LLM API + Management routes"})]})}),(0,c.jsx)(e1,{value:"llm_api",label:"LLM API",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"LLM API"}),(0,c.jsx)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:"Can call only LLM API routes (chat/completions, embeddings, etc.)"})]})}),(0,c.jsx)(e1,{value:"management",label:"Management",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Management"}),(0,c.jsx)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:"Can call only management routes (user/team/key management)"})]})})]})})]}),!ez&&(0,c.jsx)("div",{className:"mb-8",children:(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)(S.Z,{className:"m-0",children:"Optional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Max Budget (USD)"," ",(0,c.jsx)(B.Z,{title:"Maximum amount in USD this key can spend. When reached, the key will be blocked from making further requests",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"max_budget",help:"Budget cannot exceed team max budget: $".concat((null==t?void 0:t.max_budget)!==null&&(null==t?void 0:t.max_budget)!==void 0?null==t?void 0:t.max_budget:"unlimited"),rules:[{validator:async(e,s)=>{if(s&&t&&null!==t.max_budget&&s>t.max_budget)throw Error("Budget cannot exceed team max budget: $".concat(eP(t.max_budget,4)))}}],children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Reset Budget"," ",(0,c.jsx)(B.Z,{title:"How often the budget should reset. For example, setting 'daily' will reset the budget every 24 hours",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"budget_duration",help:"Team Reset Budget: ".concat((null==t?void 0:t.budget_duration)!==null&&(null==t?void 0:t.budget_duration)!==void 0?null==t?void 0:t.budget_duration:"None"),children:(0,c.jsx)(eE,{onChange:e=>m.setFieldValue("budget_duration",e)})}),(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Tokens per minute Limit (TPM)"," ",(0,c.jsx)(B.Z,{title:"Maximum number of tokens this key can process per minute. Helps control usage and costs",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"tpm_limit",help:"TPM cannot exceed team TPM limit: ".concat((null==t?void 0:t.tpm_limit)!==null&&(null==t?void 0:t.tpm_limit)!==void 0?null==t?void 0:t.tpm_limit:"unlimited"),rules:[{validator:async(e,s)=>{if(s&&t&&null!==t.tpm_limit&&s>t.tpm_limit)throw Error("TPM limit cannot exceed team TPM limit: ".concat(t.tpm_limit))}}],children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(e0,{type:"tpm",name:"tpm_limit_type",className:"mt-4",initialValue:null,form:m,showDetailedDescriptions:!0}),(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Requests per minute Limit (RPM)"," ",(0,c.jsx)(B.Z,{title:"Maximum number of API requests this key can make per minute. Helps prevent abuse and manage load",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"rpm_limit",help:"RPM cannot exceed team RPM limit: ".concat((null==t?void 0:t.rpm_limit)!==null&&(null==t?void 0:t.rpm_limit)!==void 0?null==t?void 0:t.rpm_limit:"unlimited"),rules:[{validator:async(e,s)=>{if(s&&t&&null!==t.rpm_limit&&s>t.rpm_limit)throw Error("RPM limit cannot exceed team RPM limit: ".concat(t.rpm_limit))}}],children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(e0,{type:"rpm",name:"rpm_limit_type",className:"mt-4",initialValue:null,form:m,showDetailedDescriptions:!0}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Apply safety guardrails to this key to filter content or enforce policies",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",className:"mt-4",help:o?"Select existing guardrails or enter new ones":"Premium feature - Upgrade to set guardrails by key",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},disabled:!o,placeholder:o?"Select or enter guardrails":"Premium feature - Upgrade to set guardrails by key",options:W.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Prompts"," ",(0,c.jsx)(B.Z,{title:"Allow this key to use specific prompt templates",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/prompt_management",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"prompts",className:"mt-4",help:o?"Select existing prompts or enter new ones":"Premium feature - Upgrade to set prompts by key",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},disabled:!o,placeholder:o?"Select or enter prompts":"Premium feature - Upgrade to set prompts by key",options:Q.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Vector Stores"," ",(0,c.jsx)(B.Z,{title:"Select which vector stores this key can access. If none selected, the key will have access to all available vector stores",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_vector_store_ids",className:"mt-4",help:"Select vector stores this key can access. Leave empty for access to all vector stores",children:(0,c.jsx)(U,{onChange:e=>m.setFieldValue("allowed_vector_store_ids",e),value:m.getFieldValue("allowed_vector_store_ids"),accessToken:r,placeholder:"Select vector stores (optional)"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Metadata"," ",(0,c.jsx)(B.Z,{title:"JSON object with additional information about this key. Used for tracking or custom logic",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"metadata",className:"mt-4",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Tags"," ",(0,c.jsx)(B.Z,{title:"Tags for tracking spend and/or doing tag-based routing. Used for analytics and filtering",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"tags",className:"mt-4",help:"Tags for tracking spend and/or doing tag-based routing.",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},placeholder:"Enter tags",tokenSeparators:[","],options:Y})}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",onClick:()=>{ev||(eR(),ey(!0))},children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"MCP Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed MCP Servers"," ",(0,c.jsx)(B.Z,{title:"Select which MCP servers or access groups this key can access",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_mcp_servers_and_groups",help:"Select MCP servers or access groups this key can access",children:(0,c.jsx)(eD,{onChange:e=>m.setFieldValue("allowed_mcp_servers_and_groups",e),value:m.getFieldValue("allowed_mcp_servers_and_groups"),accessToken:r,placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{name:"mcp_tool_permissions",initialValue:{},hidden:!0,children:(0,c.jsx)(P.default,{type:"hidden"})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.allowed_mcp_servers_and_groups!==s.allowed_mcp_servers_and_groups||e.mcp_tool_permissions!==s.mcp_tool_permissions,children:()=>{var e;return(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(eU,{accessToken:r,selectedServers:(null===(e=m.getFieldValue("allowed_mcp_servers_and_groups"))||void 0===e?void 0:e.servers)||[],toolPermissions:m.getFieldValue("mcp_tool_permissions")||{},onChange:e=>m.setFieldsValue({mcp_tool_permissions:e})})})}})]})]}),o?(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Logging Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(er,{value:es,onChange:et,premiumUser:!0,disabledCallbacks:eb,onDisabledCallbacksChange:e_})})})]}):(0,c.jsx)(B.Z,{title:(0,c.jsxs)("span",{children:["Key-level logging settings is an enterprise feature, get in touch -",(0,c.jsx)("a",{href:"https://www.litellm.ai/enterprise",target:"_blank",children:"https://www.litellm.ai/enterprise"})]}),placement:"top",children:(0,c.jsxs)("div",{style:{position:"relative"},children:[(0,c.jsx)("div",{style:{opacity:.5},children:(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Logging Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(er,{value:es,onChange:et,premiumUser:!1,disabledCallbacks:eb,onDisabledCallbacksChange:e_})})})]})}),(0,c.jsx)("div",{style:{position:"absolute",inset:0,cursor:"not-allowed"}})]})}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Model Aliases"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600 mb-4",children:"Create custom aliases for models that can be used in API calls. This allows you to create shortcuts for specific models."}),(0,c.jsx)(eY,{accessToken:r,initialModelAliases:ew,onAliasUpdate:eS,showExampleConfig:!1})]})})]}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Key Lifecycle"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(eQ,{form:m,autoRotationEnabled:eA,onAutoRotationChange:eT,rotationInterval:eL,onRotationIntervalChange:eM})})})]}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("b",{children:"Advanced Settings"}),(0,c.jsx)(B.Z,{title:(0,c.jsxs)("span",{children:["Learn more about advanced settings in our"," ",(0,c.jsx)("a",{href:j.proxyBaseUrl?"".concat(j.proxyBaseUrl,"/#/key%20management/generate_key_fn_key_generate_post"):"/#/key%20management/generate_key_fn_key_generate_post",target:"_blank",rel:"noopener noreferrer",className:"text-blue-400 hover:text-blue-300",children:"documentation"})]}),children:(0,c.jsx)(V.Z,{className:"text-gray-400 hover:text-gray-300 cursor-help"})})]})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)(z.Z,{schemaComponent:"GenerateKeyRequest",form:m,excludedFields:["key_alias","team_id","models","duration","metadata","tags","guardrails","max_budget","budget_duration","tpm_limit","rpm_limit"]})})]})]})]})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",disabled:ez,style:{opacity:ez?.5:1},children:"Create Key"})})]})}),ei&&(0,c.jsx)(T.Z,{title:"Create New User",visible:ei,onCancel:()=>en(!1),footer:null,width:800,children:(0,c.jsx)(ek,{userID:s,accessToken:r,teams:l,possibleUIRoles:em,onUserCreated:e=>{ed(e),m.setFieldsValue({user_id:e}),en(!1)},isEmbedded:!0})}),h&&(0,c.jsx)(T.Z,{visible:u,onOk:eO,onCancel:eF,footer:null,children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:"Save your Key"}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)("p",{children:["Please save this secret key somewhere safe and accessible. For security reasons,"," ",(0,c.jsx)("b",{children:"you will not be able to view it again"})," through your LiteLLM account. If you lose this secret key, you will need to generate a new one."]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:null!=h?(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mt-3",children:"API Key:"}),(0,c.jsx)("div",{style:{background:"#f8f8f8",padding:"10px",borderRadius:"5px",marginBottom:"10px"},children:(0,c.jsx)("pre",{style:{wordWrap:"break-word",whiteSpace:"normal"},children:h})}),(0,c.jsx)(C.CopyToClipboard,{text:h,onCopy:()=>{eo.Z.success("API Key copied to clipboard")},children:(0,c.jsx)(b.Z,{className:"mt-3",children:"Copy API Key"})})]}):(0,c.jsx)(k.Z,{children:"Key being created, this might take 30s"})})]})})]})},e6=t(7366),e8=t(20577),e7=e=>{let{selectedTeam:s,currentOrg:t,selectedKeyAlias:l,accessToken:a,createClicked:r}=e,[i,n]=(0,d.useState)({keys:[],total_count:0,current_page:1,total_pages:0}),[o,c]=(0,d.useState)(!0),[m,u]=(0,d.useState)(null),x=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{if(console.log("calling fetchKeys"),!a){console.log("accessToken",a);return}c(!0);let s="number"==typeof e.page?e.page:1,t="number"==typeof e.pageSize?e.pageSize:100,l=await (0,j.keyListCall)(a,null,null,null,null,null,s,t);console.log("data",l),n(l),u(null)}catch(e){u(e instanceof Error?e:Error("An error occurred"))}finally{c(!1)}};return(0,d.useEffect)(()=>{x(),console.log("selectedTeam",s,"currentOrg",t,"accessToken",a,"selectedKeyAlias",l)},[s,t,a,l,r]),{keys:i.keys,isLoading:o,error:m,pagination:{currentPage:i.current_page,totalPages:i.total_pages,totalCount:i.total_count},refresh:x,setKeys:e=>{n(s=>{let t="function"==typeof e?e(s.keys):e;return{...s,keys:t}})}}},e9=t(27281),se=t(41649),ss=t(12485),st=t(18135),sl=t(35242),sa=t(29706),sr=t(77991),si=t(10900),sn=t(23628),so=e=>{let{value:s,onChange:t,disabledCallbacks:l=[],onDisabledCallbacksChange:a}=e;return(0,c.jsx)(ea,{value:s,onChange:t,disabledCallbacks:l,onDisabledCallbacksChange:a})};let sc=["logging"],sd=e=>e&&"object"==typeof e?Object.fromEntries(Object.entries(e).filter(e=>{let[s]=e;return!sc.includes(s)})):{},sm=e=>e&&"object"==typeof e&&Array.isArray(e.logging)?e.logging:[],su=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return JSON.stringify(sd(e),null,s)};var sx=e=>{let{onChange:s,value:t,className:l,accessToken:a,disabled:r}=e,[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{(async()=>{if(a){m(!0);try{let e=await (0,j.getGuardrailsList)(a);console.log("Guardrails response:",e),e.guardrails&&(console.log("Guardrails data:",e.guardrails),n(e.guardrails))}catch(e){console.error("Error fetching guardrails:",e)}finally{m(!1)}}})()},[a]),(0,c.jsx)("div",{children:(0,c.jsx)(I.default,{mode:"multiple",disabled:r,placeholder:r?"Setting guardrails is a premium feature.":"Select guardrails",onChange:e=>{console.log("Selected guardrails:",e),s(e)},value:t,loading:o,className:l,options:i.map(e=>(console.log("Mapping guardrail:",e),{label:"".concat(e.guardrail_name),value:e.guardrail_name})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"}})})};function sh(e){var s,t,l,a,r,i,n,o,m;let{keyData:u,onCancel:x,onSubmit:h,teams:p,accessToken:g,userID:f,userRole:v,premiumUser:y=!1}=e,[N]=A.Z.useForm(),[Z,w]=(0,d.useState)([]),[k,S]=(0,d.useState)([]),C=null==p?void 0:p.find(e=>e.team_id===u.team_id),[T,E]=(0,d.useState)([]),[M,D]=(0,d.useState)([]),[F,R]=(0,d.useState)(!1),[z,q]=(0,d.useState)(Array.isArray(null===(s=u.metadata)||void 0===s?void 0:s.litellm_disabled_callbacks)?X(u.metadata.litellm_disabled_callbacks):[]),[V,K]=(0,d.useState)(u.auto_rotate||!1),[G,H]=(0,d.useState)(u.rotation_interval||"");(0,d.useEffect)(()=>{let e=async()=>{if(f&&v&&g)try{if(null===u.team_id){let e=(await (0,j.modelAvailableCall)(g,f,v)).data.map(e=>e.id);E(e)}else if(null==C?void 0:C.team_id){let e=await e4(f,v,g,C.team_id);E(Array.from(new Set([...C.models,...e])))}}catch(e){console.error("Error fetching models:",e)}};(async()=>{if(g)try{let e=await (0,j.getPromptsList)(g);S(e.prompts.map(e=>e.prompt_id))}catch(e){console.error("Failed to fetch prompts:",e)}})(),e()},[f,v,g,C,u.team_id]),(0,d.useEffect)(()=>{N.setFieldValue("disabled_callbacks",z)},[N,z]);let Y=e=>e&&({"24h":"daily","7d":"weekly","30d":"monthly"})[e]||null,J={...u,token:u.token||u.token_id,budget_duration:Y(u.budget_duration),metadata:su(u.metadata),guardrails:null===(t=u.metadata)||void 0===t?void 0:t.guardrails,prompts:null===(l=u.metadata)||void 0===l?void 0:l.prompts,vector_stores:(null===(a=u.object_permission)||void 0===a?void 0:a.vector_stores)||[],mcp_servers_and_groups:{servers:(null===(r=u.object_permission)||void 0===r?void 0:r.mcp_servers)||[],accessGroups:(null===(i=u.object_permission)||void 0===i?void 0:i.mcp_access_groups)||[]},mcp_tool_permissions:(null===(n=u.object_permission)||void 0===n?void 0:n.mcp_tool_permissions)||{},logging_settings:sm(u.metadata),disabled_callbacks:Array.isArray(null===(o=u.metadata)||void 0===o?void 0:o.litellm_disabled_callbacks)?X(u.metadata.litellm_disabled_callbacks):[],auto_rotate:u.auto_rotate||!1,...u.rotation_interval&&{rotation_interval:u.rotation_interval}};return(0,d.useEffect)(()=>{var e,s,t,l,a,r,i;N.setFieldsValue({...u,token:u.token||u.token_id,budget_duration:Y(u.budget_duration),metadata:su(u.metadata),guardrails:null===(e=u.metadata)||void 0===e?void 0:e.guardrails,prompts:null===(s=u.metadata)||void 0===s?void 0:s.prompts,vector_stores:(null===(t=u.object_permission)||void 0===t?void 0:t.vector_stores)||[],mcp_servers_and_groups:{servers:(null===(l=u.object_permission)||void 0===l?void 0:l.mcp_servers)||[],accessGroups:(null===(a=u.object_permission)||void 0===a?void 0:a.mcp_access_groups)||[]},mcp_tool_permissions:(null===(r=u.object_permission)||void 0===r?void 0:r.mcp_tool_permissions)||{},logging_settings:sm(u.metadata),disabled_callbacks:Array.isArray(null===(i=u.metadata)||void 0===i?void 0:i.litellm_disabled_callbacks)?X(u.metadata.litellm_disabled_callbacks):[],auto_rotate:u.auto_rotate||!1,...u.rotation_interval&&{rotation_interval:u.rotation_interval}})},[u,N]),(0,d.useEffect)(()=>{N.setFieldValue("auto_rotate",V)},[V,N]),(0,d.useEffect)(()=>{G&&N.setFieldValue("rotation_interval",G)},[G,N]),console.log("premiumUser:",y),(0,c.jsxs)(A.Z,{form:N,onFinish:h,initialValues:J,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Key Alias",name:"key_alias",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[T.length>0&&(0,c.jsx)(I.default.Option,{value:"all-team-models",children:"All Team Models"}),T.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,style:{width:"100%"},placeholder:"Enter a numerical value"})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"daily",children:"Daily"}),(0,c.jsx)(I.default.Option,{value:"weekly",children:"Weekly"}),(0,c.jsx)(I.default.Option,{value:"monthly",children:"Monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"TPM Limit",name:"tpm_limit",children:(0,c.jsx)(O,{min:0})}),(0,c.jsx)(e0,{type:"tpm",name:"tpm_limit_type",showDetailedDescriptions:!1}),(0,c.jsx)(A.Z.Item,{label:"RPM Limit",name:"rpm_limit",children:(0,c.jsx)(O,{min:0})}),(0,c.jsx)(e0,{type:"rpm",name:"rpm_limit_type",showDetailedDescriptions:!1}),(0,c.jsx)(A.Z.Item,{label:"Max Parallel Requests",name:"max_parallel_requests",children:(0,c.jsx)(O,{min:0})}),(0,c.jsx)(A.Z.Item,{label:"Model TPM Limit",name:"model_tpm_limit",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{"gpt-4": 100, "claude-v1": 200}'})}),(0,c.jsx)(A.Z.Item,{label:"Model RPM Limit",name:"model_rpm_limit",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{"gpt-4": 100, "claude-v1": 200}'})}),(0,c.jsx)(A.Z.Item,{label:"Guardrails",name:"guardrails",children:g&&(0,c.jsx)(sx,{onChange:e=>{N.setFieldValue("guardrails",e)},accessToken:g,disabled:!y})}),(0,c.jsx)(A.Z.Item,{label:"Prompts",name:"prompts",children:(0,c.jsx)(B.Z,{title:y?"":"Setting prompts by key is a premium feature",placement:"top",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},disabled:!y,placeholder:y?Array.isArray(null===(m=u.metadata)||void 0===m?void 0:m.prompts)&&u.metadata.prompts.length>0?"Current: ".concat(u.metadata.prompts.join(", ")):"Select or enter prompts":"Premium feature - Upgrade to set prompts by key",options:k.map(e=>({value:e,label:e}))})})}),(0,c.jsx)(A.Z.Item,{label:"Vector Stores",name:"vector_stores",children:(0,c.jsx)(U,{onChange:e=>N.setFieldValue("vector_stores",e),value:N.getFieldValue("vector_stores"),accessToken:g||"",placeholder:"Select vector stores"})}),(0,c.jsx)(A.Z.Item,{label:"MCP Servers / Access Groups",name:"mcp_servers_and_groups",children:(0,c.jsx)(eD,{onChange:e=>N.setFieldValue("mcp_servers_and_groups",e),value:N.getFieldValue("mcp_servers_and_groups"),accessToken:g||"",placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{name:"mcp_tool_permissions",initialValue:{},hidden:!0,children:(0,c.jsx)(P.default,{type:"hidden"})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.mcp_servers_and_groups!==s.mcp_servers_and_groups||e.mcp_tool_permissions!==s.mcp_tool_permissions,children:()=>{var e;return(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsx)(eU,{accessToken:g||"",selectedServers:(null===(e=N.getFieldValue("mcp_servers_and_groups"))||void 0===e?void 0:e.servers)||[],toolPermissions:N.getFieldValue("mcp_tool_permissions")||{},onChange:e=>N.setFieldsValue({mcp_tool_permissions:e})})})}}),(0,c.jsx)(A.Z.Item,{label:"Team ID",name:"team_id",children:(0,c.jsx)(I.default,{placeholder:"Select team",style:{width:"100%"},children:null==p?void 0:p.map(e=>(0,c.jsx)(I.default.Option,{value:e.team_id,children:"".concat(e.team_alias," (").concat(e.team_id,")")},e.team_id))})}),(0,c.jsx)(A.Z.Item,{label:"Logging Settings",name:"logging_settings",children:(0,c.jsx)(so,{value:N.getFieldValue("logging_settings"),onChange:e=>N.setFieldValue("logging_settings",e),disabledCallbacks:z,onDisabledCallbacksChange:e=>{q(X(e)),N.setFieldValue("disabled_callbacks",e)}})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:10})}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(eQ,{form:N,autoRotationEnabled:V,onAutoRotationChange:K,rotationInterval:G,onRotationIntervalChange:H})}),(0,c.jsx)(A.Z.Item,{name:"token",hidden:!0,children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{name:"disabled_callbacks",hidden:!0,children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{name:"auto_rotate",hidden:!0,children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{name:"rotation_interval",hidden:!0,children:(0,c.jsx)(P.default,{})}),(0,c.jsx)("div",{className:"sticky z-10 bg-white p-4 border-t border-gray-200 bottom-[-1.5rem] inset-x-[-1.5rem]",children:(0,c.jsxs)("div",{className:"flex justify-end items-center gap-2",children:[(0,c.jsx)(L.ZP,{onClick:x,children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})})]})}function sp(e){let{selectedToken:s,visible:t,onClose:l,accessToken:a,premiumUser:r,setAccessToken:i,onKeyUpdate:n}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[f,N]=(0,d.useState)(!1),[Z,w]=(0,d.useState)(!1),[I,E]=(0,d.useState)(null);(0,d.useEffect)(()=>{t&&s&&a&&(o.setFieldsValue({key_alias:s.key_alias,max_budget:s.max_budget,tpm_limit:s.tpm_limit,rpm_limit:s.rpm_limit,duration:s.duration||""}),E(a),w(s.key_name===a))},[t,s,o,a]),(0,d.useEffect)(()=>{t||(u(null),N(!1),w(!1),E(null),o.resetFields())},[t,o]);let L=e=>{if(!e)return null;try{let s;let t=new Date;if(e.endsWith("s"))s=(0,e6.Z)(t,{seconds:parseInt(e)});else if(e.endsWith("h"))s=(0,e6.Z)(t,{hours:parseInt(e)});else if(e.endsWith("d"))s=(0,e6.Z)(t,{days:parseInt(e)});else throw Error("Invalid duration format");return s.toLocaleString()}catch(e){return null}};(0,d.useEffect)(()=>{(null==x?void 0:x.duration)?g(L(x.duration)):g(null)},[null==x?void 0:x.duration]);let P=async()=>{if(s&&I){N(!0);try{let e=await o.validateFields(),t=await (0,j.regenerateKeyCall)(I,s.token||s.token_id,e);u(t.key),eo.Z.success("API Key regenerated successfully"),console.log("Full regenerate response:",t);let l={token:t.token||t.key_id||s.token,key_name:t.key,max_budget:e.max_budget,tpm_limit:e.tpm_limit,rpm_limit:e.rpm_limit,expires:e.duration?L(e.duration):s.expires,...t};console.log("Updated key data with new token:",l),Z&&(E(t.key),i&&i(t.key)),n&&n(l),N(!1)}catch(e){console.error("Error regenerating key:",e),eo.Z.fromBackend(e),N(!1)}}},M=()=>{u(null),N(!1),w(!1),E(null),o.resetFields(),l()};return(0,c.jsx)(T.Z,{title:"Regenerate API Key",open:t,onCancel:M,footer:m?[(0,c.jsx)(b.Z,{onClick:M,children:"Close"},"close")]:[(0,c.jsx)(b.Z,{onClick:M,className:"mr-2",children:"Cancel"},"cancel"),(0,c.jsx)(b.Z,{onClick:P,disabled:f,children:f?"Regenerating...":"Regenerate"},"regenerate")],children:m?(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:"Regenerated Key"}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)("p",{children:["Please replace your old key with the new key generated. For security reasons,"," ",(0,c.jsx)("b",{children:"you will not be able to view it again"})," through your LiteLLM account. If you lose this secret key, you will need to generate a new one."]})}),(0,c.jsxs)(v.Z,{numColSpan:1,children:[(0,c.jsx)(k.Z,{className:"mt-3",children:"Key Alias:"}),(0,c.jsx)("div",{className:"bg-gray-100 p-2 rounded mb-2",children:(0,c.jsx)("pre",{className:"break-words whitespace-normal",children:(null==s?void 0:s.key_alias)||"No alias set"})}),(0,c.jsx)(k.Z,{className:"mt-3",children:"New API Key:"}),(0,c.jsx)("div",{className:"bg-gray-100 p-2 rounded mb-2",children:(0,c.jsx)("pre",{className:"break-words whitespace-normal",children:m})}),(0,c.jsx)(C.CopyToClipboard,{text:m,onCopy:()=>eo.Z.success("API Key copied to clipboard"),children:(0,c.jsx)(b.Z,{className:"mt-3",children:"Copy API Key"})})]})]}):(0,c.jsxs)(A.Z,{form:o,layout:"vertical",onValuesChange:e=>{"duration"in e&&h(s=>({...s,duration:e.duration}))},children:[(0,c.jsx)(A.Z.Item,{name:"key_alias",label:"Key Alias",children:(0,c.jsx)(_.Z,{disabled:!0})}),(0,c.jsx)(A.Z.Item,{name:"max_budget",label:"Max Budget (USD)",children:(0,c.jsx)(e8.Z,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"tpm_limit",label:"TPM Limit",children:(0,c.jsx)(e8.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"rpm_limit",label:"RPM Limit",children:(0,c.jsx)(e8.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"duration",label:"Expire Key (eg: 30s, 30h, 30d)",className:"mt-8",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsxs)("div",{className:"mt-2 text-sm text-gray-500",children:["Current expiry: ",(null==s?void 0:s.expires)?new Date(s.expires).toLocaleString():"Never"]}),p&&(0,c.jsxs)("div",{className:"mt-2 text-sm text-green-600",children:["New expiry: ",p]})]})})}var sg=t(79814),sj=function(e){let{vectorStores:s,accessToken:t}=e,[l,a]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{if(t&&0!==s.length)try{let e=await (0,j.vectorStoreListCall)(t);e.data&&a(e.data.map(e=>({vector_store_id:e.vector_store_id,vector_store_name:e.vector_store_name})))}catch(e){console.error("Error fetching vector stores:",e)}})()},[t,s.length]);let r=e=>{let s=l.find(s=>s.vector_store_id===e);return s?"".concat(s.vector_store_name||s.vector_store_id," (").concat(s.vector_store_id,")"):e};return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sg.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Vector Stores"}),(0,c.jsx)(se.Z,{color:"blue",size:"xs",children:s.length})]}),s.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:s.map((e,s)=>(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-blue-50 border border-blue-200 text-blue-800 text-sm font-medium",children:r(e)},s))}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(sg.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No vector stores configured"})]})]})},sf=t(25327),sv=function(e){let{mcpServers:s,mcpAccessGroups:l=[],accessToken:a}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{if(a&&s.length>0)try{let e=await (0,j.fetchMCPServers)(a);e&&Array.isArray(e)?i(e):e.data&&Array.isArray(e.data)&&i(e.data)}catch(e){console.error("Error fetching MCP servers:",e)}})()},[a,s.length]),(0,d.useEffect)(()=>{(async()=>{if(a&&l.length>0)try{let e=await Promise.resolve().then(t.bind(t,19250)).then(e=>e.fetchMCPAccessGroups(a));o(Array.isArray(e)?e:e.data||[])}catch(e){console.error("Error fetching MCP access groups:",e)}})()},[a,l.length]);let m=e=>{let s=r.find(s=>s.server_id===e);if(s){let t=e.length>7?"".concat(e.slice(0,3),"...").concat(e.slice(-4)):e;return"".concat(s.alias," (").concat(t,")")}return e},u=e=>e,x=[...s.map(e=>({type:"server",value:e})),...l.map(e=>({type:"accessGroup",value:e}))],h=x.length;return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sf.Z,{className:"h-4 w-4 text-gray-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"MCP Servers"}),(0,c.jsx)(se.Z,{color:"gray",size:"xs",children:h})]}),h>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:x.map((e,s)=>"server"===e.type?(0,c.jsx)(B.Z,{title:"Full ID: ".concat(e.value),placement:"top",children:(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-blue-50 border border-blue-200 text-blue-800 text-sm font-medium cursor-help",children:m(e.value)})},s):(0,c.jsxs)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-green-50 border border-green-200 text-green-800 text-sm font-medium",children:[(0,c.jsx)("span",{className:"inline-block w-2 h-2 bg-green-500 rounded-full mr-2"}),u(e.value)," ",(0,c.jsx)("span",{className:"ml-1 text-xs text-green-500",children:"(Access Group)"})]},s))}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(sf.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No MCP servers or access groups configured"})]})]})},sy=function(e){let{objectPermission:s,variant:t="card",className:l="",accessToken:a}=e,r=(null==s?void 0:s.vector_stores)||[],i=(null==s?void 0:s.mcp_servers)||[],n=(null==s?void 0:s.mcp_access_groups)||[],o=(0,c.jsxs)("div",{className:"card"===t?"grid grid-cols-1 md:grid-cols-2 gap-6":"space-y-4",children:[(0,c.jsx)(sj,{vectorStores:r,accessToken:a}),(0,c.jsx)(sv,{mcpServers:i,mcpAccessGroups:n,accessToken:a})]});return"card"===t?(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-6 ".concat(l),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Object Permissions"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500",children:"Access control for Vector Stores and MCP Servers"})]})}),o]}):(0,c.jsxs)("div",{className:"".concat(l),children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900 mb-3",children:"Object Permissions"}),o]})},sb=function(e){let{loggingConfigs:s=[],disabledCallbacks:t=[],variant:l="card",className:a=""}=e,r=e=>{var s;return(null===(s=Object.entries($).find(s=>{let[t,l]=s;return l===e}))||void 0===s?void 0:s[0])||e},i=e=>{switch(e){case"success":return"green";case"failure":return"red";case"success_and_failure":return"blue";default:return"gray"}},n=e=>{switch(e){case"success":return"Success Only";case"failure":return"Failure Only";case"success_and_failure":return"Success & Failure";default:return e}},o=(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(Y.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Logging Integrations"}),(0,c.jsx)(se.Z,{color:"blue",size:"xs",children:s.length})]}),s.length>0?(0,c.jsx)("div",{className:"space-y-3",children:s.map((e,s)=>{var t;let l=r(e.callback_name),a=null===(t=et[l])||void 0===t?void 0:t.logo;return(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 rounded-lg bg-blue-50 border border-blue-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[a?(0,c.jsx)("img",{src:a,alt:l,className:"w-5 h-5 object-contain"}):(0,c.jsx)(Y.Z,{className:"h-5 w-5 text-gray-400"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium text-blue-800",children:l}),(0,c.jsxs)(k.Z,{className:"text-xs text-blue-600",children:[Object.keys(e.callback_vars).length," parameters configured"]})]})]}),(0,c.jsx)(se.Z,{color:i(e.callback_type),size:"sm",children:n(e.callback_type)})]},s)})}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(Y.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No logging integrations configured"})]})]}),(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(H.Z,{className:"h-4 w-4 text-red-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Disabled Callbacks"}),(0,c.jsx)(se.Z,{color:"red",size:"xs",children:t.length})]}),t.length>0?(0,c.jsx)("div",{className:"space-y-3",children:t.map((e,s)=>{var t;let l=Q[e]||e,a=null===(t=et[l])||void 0===t?void 0:t.logo;return(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 rounded-lg bg-red-50 border border-red-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[a?(0,c.jsx)("img",{src:a,alt:l,className:"w-5 h-5 object-contain"}):(0,c.jsx)(H.Z,{className:"h-5 w-5 text-gray-400"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium text-red-800",children:l}),(0,c.jsx)(k.Z,{className:"text-xs text-red-600",children:"Disabled for this key"})]})]}),(0,c.jsx)(se.Z,{color:"red",size:"sm",children:"Disabled"})]},s)})}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(H.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No callbacks disabled"})]})]})]});return"card"===l?(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-6 ".concat(a),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Logging Settings"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500",children:"Active logging integrations and disabled callbacks for this key"})]})}),o]}):(0,c.jsxs)("div",{className:"".concat(a),children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900 mb-3",children:"Logging Settings"}),o]})},s_=t(30401),sN=t(78867),sZ=t(85968),sw=t(58710),sk=e=>{let{autoRotate:s=!1,rotationInterval:t,lastRotationAt:l,keyRotationAt:a,nextRotationAt:r,variant:i="card",className:n=""}=e,o=e=>{let s=new Date(e),t=s.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),l=s.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return"".concat(t," at ").concat(l)},d=(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsx)("div",{className:"space-y-3",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sn.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Auto-Rotation"}),(0,c.jsx)(se.Z,{color:s?"green":"gray",size:"xs",children:s?"Enabled":"Disabled"}),s&&t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(k.Z,{className:"text-gray-400",children:"•"}),(0,c.jsxs)(k.Z,{className:"text-sm text-gray-600",children:["Every ",t]})]})]})}),(s||l||a||r)&&(0,c.jsxs)("div",{className:"space-y-3",children:[l&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-200 rounded-md",children:[(0,c.jsx)(sw.Z,{className:"w-4 h-4 text-gray-500"}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-700",children:"Last Rotation"}),(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:o(l)})]})]}),(a||r)&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-200 rounded-md",children:[(0,c.jsx)(sw.Z,{className:"w-4 h-4 text-gray-500"}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-700",children:"Next Scheduled Rotation"}),(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:o(r||a||"")})]})]}),s&&!l&&!a&&!r&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-100 rounded-md",children:[(0,c.jsx)(sw.Z,{className:"w-4 h-4 text-gray-500"}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"No rotation history available"})]})]}),!s&&!l&&!a&&!r&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-100 rounded-md",children:[(0,c.jsx)(sn.Z,{className:"w-4 h-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"Auto-rotation is not enabled for this key"})]})]});return"card"===i?(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-6 ".concat(n),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Auto-Rotation"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500",children:"Automatic key rotation settings and status for this key"})]})}),d]}):(0,c.jsxs)("div",{className:"".concat(n),children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900 mb-3",children:"Auto-Rotation"}),d]})};function sS(e){var s,t,l,a,r;let{keyId:i,onClose:n,keyData:o,accessToken:m,userID:u,userRole:x,teams:h,onKeyDataUpdate:p,onDelete:g,premiumUser:f,setAccessToken:v,backButtonText:_="Back to Keys"}=e,[N,Z]=(0,d.useState)(!1),[w]=A.Z.useForm(),[C,I]=(0,d.useState)(!1),[T,E]=(0,d.useState)(""),[P,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)({}),[F,R]=(0,d.useState)(o),[z,U]=(0,d.useState)(null),[q,V]=(0,d.useState)(!1);if((0,d.useEffect)(()=>{o&&R(o)},[o]),(0,d.useEffect)(()=>{if(q){let e=setTimeout(()=>{V(!1)},5e3);return()=>clearTimeout(e)}},[q]),!F)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:n,className:"mb-4",children:_}),(0,c.jsx)(k.Z,{children:"Key not found"})]});let K=async e=>{try{var s,t,l,a;if(!m)return;let r=e.token;if(e.key=r,f||(delete e.guardrails,delete e.prompts),void 0!==e.vector_stores&&(e.object_permission={...F.object_permission,vector_stores:e.vector_stores||[]},delete e.vector_stores),void 0!==e.mcp_servers_and_groups){let{servers:s,accessGroups:t}=e.mcp_servers_and_groups||{servers:[],accessGroups:[]};e.object_permission={...F.object_permission,mcp_servers:s||[],mcp_access_groups:t||[]},delete e.mcp_servers_and_groups}if(void 0!==e.mcp_tool_permissions){let s=e.mcp_tool_permissions||{};Object.keys(s).length>0&&(e.object_permission={...e.object_permission,mcp_tool_permissions:s}),delete e.mcp_tool_permissions}if(e.metadata&&"string"==typeof e.metadata)try{let l=JSON.parse(e.metadata);e.metadata={...l,...(null===(s=e.guardrails)||void 0===s?void 0:s.length)>0?{guardrails:e.guardrails}:{},...e.logging_settings?{logging:e.logging_settings}:{},...(null===(t=e.disabled_callbacks)||void 0===t?void 0:t.length)>0?{litellm_disabled_callbacks:ee(e.disabled_callbacks)}:{}}}catch(e){console.error("Error parsing metadata JSON:",e),eo.Z.error("Invalid metadata JSON");return}else e.metadata={...e.metadata||{},...(null===(l=e.guardrails)||void 0===l?void 0:l.length)>0?{guardrails:e.guardrails}:{},...e.logging_settings?{logging:e.logging_settings}:{},...(null===(a=e.disabled_callbacks)||void 0===a?void 0:a.length)>0?{litellm_disabled_callbacks:ee(e.disabled_callbacks)}:{}};delete e.logging_settings,e.budget_duration&&(e.budget_duration=({daily:"24h",weekly:"7d",monthly:"30d"})[e.budget_duration]);let i=await (0,j.keyUpdateCall)(m,e);R(e=>e?{...e,...i}:void 0),p&&p(i),eo.Z.success("Key updated successfully"),Z(!1)}catch(e){eo.Z.fromBackend((0,sZ.O)(e)),console.error("Error updating key:",e)}},H=async()=>{try{if(!m)return;await (0,j.keyDeleteCall)(m,F.token||F.token_id),eo.Z.success("Key deleted successfully"),g&&g(),n()}catch(e){console.error("Error deleting the key:",e),eo.Z.fromBackend(e)}E("")},Y=async(e,s)=>{await eM(e)&&(D(e=>({...e,[s]:!0})),setTimeout(()=>{D(e=>({...e,[s]:!1}))},2e3))},J=e=>{let s=new Date(e),t=s.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),l=s.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return"".concat(t," at ").concat(l)};return(0,c.jsxs)("div",{className:"w-full h-screen p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:n,className:"mb-4",children:_}),(0,c.jsx)(S.Z,{children:F.key_alias||"API Key"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer mb-2 space-y-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-xs text-gray-400 uppercase tracking-wide mt-2",children:"Key ID"}),(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono text-sm",children:F.token_id||F.token})]}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:O["key-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>Y(F.token_id||F.token,"key-id"),className:"ml-2 transition-all duration-200".concat(O["key-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-500",children:F.updated_at&&F.updated_at!==F.created_at?"Updated: ".concat(J(F.updated_at)):"Created: ".concat(J(F.created_at))}),q&&(0,c.jsx)(se.Z,{color:"green",size:"xs",className:"animate-pulse",children:"Recently Regenerated"}),z&&(0,c.jsx)(se.Z,{color:"blue",size:"xs",children:"Regenerated"})]})]}),x&&eI.LQ.includes(x)&&(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(B.Z,{title:f?"":"This is a LiteLLM Enterprise feature, and requires a valid key to use.",children:(0,c.jsx)("span",{className:"inline-block",children:(0,c.jsx)(b.Z,{icon:sn.Z,variant:"secondary",onClick:()=>M(!0),className:"flex items-center",disabled:!f,children:"Regenerate Key"})})}),(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>I(!0),className:"flex items-center",children:"Delete Key"})]})]}),(0,c.jsx)(sp,{selectedToken:F,visible:P,onClose:()=>M(!1),accessToken:m,premiumUser:f,setAccessToken:v,onKeyUpdate:e=>{R(s=>{if(s)return{...s,...e,created_at:new Date().toLocaleString()}}),U(new Date),V(!0),p&&p({...e,created_at:new Date().toLocaleString()})}}),C&&(()=>{let e=(null==F?void 0:F.key_alias)||(null==F?void 0:F.token_id)||"API Key",s=T===e;return(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl w-full max-w-2xl min-h-[380px] py-6 overflow-hidden transform transition-all flex flex-col justify-between",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Delete Key"}),(0,c.jsx)("button",{onClick:()=>{I(!1),E("")},className:"text-gray-400 hover:text-gray-500 focus:outline-none",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,c.jsxs)("div",{className:"px-6 py-4",children:[(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.082 16.5c-.77.833.192 2.5 1.732 2.5z"})})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-base font-medium text-red-600",children:"Warning: You are about to delete this API key."}),(0,c.jsx)("p",{className:"text-base text-red-600 mt-2",children:"This action is irreversible and will immediately revoke access for any applications using this key."})]})]}),(0,c.jsx)("p",{className:"text-base text-gray-600 mb-5",children:"Are you sure you want to delete this API key?"}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsx)("span",{className:"underline",children:e})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:T,onChange:e=>E(e.target.value),placeholder:"Enter key name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]})]})]}),(0,c.jsxs)("div",{className:"px-6 py-4 bg-gray-50 flex justify-end gap-4",children:[(0,c.jsx)("button",{onClick:()=>{I(!1),E("")},className:"px-5 py-3 bg-white border border-gray-300 rounded-md text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:"Cancel"}),(0,c.jsx)("button",{onClick:H,disabled:!s,className:"px-5 py-3 rounded-md text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 ".concat(s?"bg-red-600 hover:bg-red-700":"bg-red-300 cursor-not-allowed"),children:"Delete Key"})]})]})})})(),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"}),(0,c.jsx)(ss.Z,{children:"Settings"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Spend"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eP(F.spend,4)]}),(0,c.jsxs)(k.Z,{children:["of"," ",null!==F.max_budget?"$".concat(eP(F.max_budget)):"Unlimited"]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Rate Limits"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["TPM: ",null!==F.tpm_limit?F.tpm_limit:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",null!==F.rpm_limit?F.rpm_limit:"Unlimited"]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Models"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:F.models&&F.models.length>0?F.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s)):(0,c.jsx)(k.Z,{children:"No models specified"})})]}),(0,c.jsx)(G.Z,{children:(0,c.jsx)(sy,{objectPermission:F.object_permission,variant:"inline",accessToken:m})}),(0,c.jsx)(sb,{loggingConfigs:sm(F.metadata),disabledCallbacks:Array.isArray(null===(s=F.metadata)||void 0===s?void 0:s.litellm_disabled_callbacks)?X(F.metadata.litellm_disabled_callbacks):[],variant:"card"}),(0,c.jsx)(sk,{autoRotate:F.auto_rotate,rotationInterval:F.rotation_interval,lastRotationAt:F.last_rotation_at,keyRotationAt:F.key_rotation_at,nextRotationAt:F.next_rotation_at,variant:"card"})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{className:"overflow-y-auto max-h-[65vh]",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Key Settings"}),!N&&x&&eI.LQ.includes(x)&&(0,c.jsx)(b.Z,{variant:"light",onClick:()=>Z(!0),children:"Edit Settings"})]}),N?(0,c.jsx)(sh,{keyData:F,onCancel:()=>Z(!1),onSubmit:K,teams:h,accessToken:m,userID:u,userRole:x,premiumUser:f}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Key ID"}),(0,c.jsx)(k.Z,{className:"font-mono",children:F.token_id||F.token})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Key Alias"}),(0,c.jsx)(k.Z,{children:F.key_alias||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Secret Key"}),(0,c.jsx)(k.Z,{className:"font-mono",children:F.key_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team ID"}),(0,c.jsx)(k.Z,{children:F.team_id||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization"}),(0,c.jsx)(k.Z,{children:F.organization_id||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created"}),(0,c.jsx)(k.Z,{children:J(F.created_at)})]}),z&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Regenerated"}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{children:J(z)}),(0,c.jsx)(se.Z,{color:"green",size:"xs",children:"Recent"})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Expires"}),(0,c.jsx)(k.Z,{children:F.expires?J(F.expires):"Never"})]}),(0,c.jsx)(sk,{autoRotate:F.auto_rotate,rotationInterval:F.rotation_interval,lastRotationAt:F.last_rotation_at,keyRotationAt:F.key_rotation_at,nextRotationAt:F.next_rotation_at,variant:"inline",className:"pt-4 border-t border-gray-200"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Spend"}),(0,c.jsxs)(k.Z,{children:["$",eP(F.spend,4)," USD"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Budget"}),(0,c.jsx)(k.Z,{children:null!==F.max_budget?"$".concat(eP(F.max_budget,2)):"Unlimited"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompts"}),(0,c.jsx)(k.Z,{children:Array.isArray(null===(t=F.metadata)||void 0===t?void 0:t.prompts)&&F.metadata.prompts.length>0?F.metadata.prompts.map((e,s)=>(0,c.jsx)("span",{className:"px-2 mr-2 py-1 bg-blue-100 rounded text-xs",children:e},s)):"No prompts specified"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:F.models&&F.models.length>0?F.models.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:e},s)):(0,c.jsx)(k.Z,{children:"No models specified"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Rate Limits"}),(0,c.jsxs)(k.Z,{children:["TPM: ",null!==F.tpm_limit?F.tpm_limit:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",null!==F.rpm_limit?F.rpm_limit:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["Max Parallel Requests:"," ",null!==F.max_parallel_requests?F.max_parallel_requests:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["Model TPM Limits:"," ",(null===(l=F.metadata)||void 0===l?void 0:l.model_tpm_limit)?JSON.stringify(F.metadata.model_tpm_limit):"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["Model RPM Limits:"," ",(null===(a=F.metadata)||void 0===a?void 0:a.model_rpm_limit)?JSON.stringify(F.metadata.model_rpm_limit):"Unlimited"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Metadata"}),(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:su(F.metadata)})]}),(0,c.jsx)(sy,{objectPermission:F.object_permission,variant:"inline",className:"pt-4 border-t border-gray-200",accessToken:m}),(0,c.jsx)(sb,{loggingConfigs:sm(F.metadata),disabledCallbacks:Array.isArray(null===(r=F.metadata)||void 0===r?void 0:r.litellm_disabled_callbacks)?X(F.metadata.litellm_disabled_callbacks):[],variant:"inline",className:"pt-4 border-t border-gray-200"})]})]})})]})]})]})}var sC=t(2356),sI=e=>{let{options:s,onApplyFilters:t,onResetFilters:l,initialValues:a={},buttonLabel:r="Filters"}=e,[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(a),[u,x]=(0,d.useState)({}),[h,p]=(0,d.useState)({}),[g,j]=(0,d.useState)({}),[f,v]=(0,d.useState)({}),y=(0,d.useCallback)(eC()(async(e,s)=>{if(s.isSearchable&&s.searchFn){p(e=>({...e,[s.name]:!0}));try{let t=await s.searchFn(e);x(e=>({...e,[s.name]:t}))}catch(e){console.error("Error searching:",e),x(e=>({...e,[s.name]:[]}))}finally{p(e=>({...e,[s.name]:!1}))}}},300),[]),b=(0,d.useCallback)(async e=>{if(e.isSearchable&&e.searchFn&&!f[e.name]){p(s=>({...s,[e.name]:!0})),v(s=>({...s,[e.name]:!0}));try{let s=await e.searchFn("");x(t=>({...t,[e.name]:s}))}catch(s){console.error("Error loading initial options:",s),x(s=>({...s,[e.name]:[]}))}finally{p(s=>({...s,[e.name]:!1}))}}},[f]);(0,d.useEffect)(()=>{i&&s.forEach(e=>{e.isSearchable&&!f[e.name]&&b(e)})},[i,s,b,f]);let _=(e,s)=>{let l={...o,[e]:s};m(l),t(l)},N=(e,s)=>{e&&s.isSearchable&&!f[s.name]&&b(s)};return(0,c.jsxs)("div",{className:"w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-6",children:[(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(sC.Z,{className:"h-4 w-4"}),onClick:()=>n(!i),className:"flex items-center gap-2",children:r}),(0,c.jsx)(L.ZP,{onClick:()=>{let e={};s.forEach(s=>{e[s.name]=""}),m(e),l()},children:"Reset Filters"})]}),i&&(0,c.jsx)("div",{className:"grid grid-cols-3 gap-x-6 gap-y-4 mb-6",children:["Team ID","Status","Organization ID","Key Alias","User ID","End User","Key Hash","Model"].map(e=>{let t=s.find(s=>s.label===e||s.name===e);return t?(0,c.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,c.jsx)("label",{className:"text-sm text-gray-600",children:t.label||t.name}),t.isSearchable?(0,c.jsx)(I.default,{showSearch:!0,className:"w-full",placeholder:"Search ".concat(t.label||t.name,"..."),value:o[t.name]||void 0,onChange:e=>_(t.name,e),onDropdownVisibleChange:e=>N(e,t),onSearch:e=>{j(s=>({...s,[t.name]:e})),t.searchFn&&y(e,t)},filterOption:!1,loading:h[t.name],options:u[t.name]||[],allowClear:!0,notFoundContent:h[t.name]?"Loading...":"No results found"}):t.options?(0,c.jsx)(I.default,{className:"w-full",placeholder:"Select ".concat(t.label||t.name,"..."),value:o[t.name]||void 0,onChange:e=>_(t.name,e),allowClear:!0,children:t.options.map(e=>(0,c.jsx)(I.default.Option,{value:e.value,children:e.label},e.value))}):(0,c.jsx)(P.default,{className:"w-full",placeholder:"Enter ".concat(t.label||t.name,"..."),value:o[t.name]||"",onChange:e=>_(t.name,e.target.value),allowClear:!0})]},t.name):null})})]})},sA=t(16593);let sT=async e=>{if(!e)return[];try{let{aliases:s}=await (0,j.keyAliasesCall)(e);return Array.from(new Set((s||[]).filter(Boolean)))}catch(e){return console.error("Error fetching all key aliases:",e),[]}},sE=async(e,s)=>{if(!e)return[];try{let t=[],l=1,a=!0;for(;a;){let r=await (0,j.teamListCall)(e,s||null,null);t=[...t,...r],l{if(!e)return[];try{let s=[],t=1,l=!0;for(;l;){let a=await (0,j.organizationListCall)(e);s=[...s,...a],t{let[e,s]=(0,d.useState)("http://localhost:4000");return(0,d.useEffect)(()=>{{let{protocol:e,host:t}=window.location;s("".concat(e,"//").concat(t))}},[]),e};var sM=t(71594),sO=t(24525),sD=t(47323),sF=t(21626),sR=t(97214),sz=t(28241),sU=t(58834),sq=t(69552),sV=t(71876),sB=t(86462),sK=t(47686),sG=t(44633),sH=t(49084);function sY(e){let{keys:s,setKeys:t,isLoading:l=!1,pagination:a,onPageChange:r,pageSize:i=50,teams:n,selectedTeam:o,setSelectedTeam:m,selectedKeyAlias:u,setSelectedKeyAlias:x,accessToken:h,userID:p,userRole:g,organizations:f,setCurrentOrg:v,refresh:y,onSortChange:_,currentSort:N,premiumUser:Z,setAccessToken:w}=e,[S,C]=(0,d.useState)(null),[I,A]=(0,d.useState)([]),[T,E]=d.useState(()=>N?[{id:N.sortBy,desc:"desc"===N.sortOrder}]:[{id:"created_at",desc:!0}]),[L,P]=(0,d.useState)({}),{filters:M,filteredKeys:O,allKeyAliases:D,allTeams:R,allOrganizations:z,handleFilterChange:U,handleFilterReset:q}=function(e){let{keys:s,teams:t,organizations:l,accessToken:a}=e,r={"Team ID":"","Organization ID":"","Key Alias":"","User ID":"","Sort By":"created_at","Sort Order":"desc"},[i,n]=(0,d.useState)(r),[o,c]=(0,d.useState)(t||[]),[m,u]=(0,d.useState)(l||[]),[x,h]=(0,d.useState)(s),p=(0,d.useRef)(0),g=(0,d.useCallback)(eC()(async e=>{if(!a)return;let s=Date.now();p.current=s;try{let t=await (0,j.keyListCall)(a,e["Organization ID"]||null,e["Team ID"]||null,e["Key Alias"]||null,e["User ID"]||null,e["Key Hash"]||null,1,25,e["Sort By"]||null,e["Sort Order"]||null);s===p.current&&t&&(h(t.keys),console.log("called from debouncedSearch filters:",JSON.stringify(e)),console.log("called from debouncedSearch data:",JSON.stringify(t)))}catch(e){console.error("Error searching users:",e)}},300),[a]);(0,d.useEffect)(()=>{if(!s){h([]);return}let e=[...s];i["Team ID"]&&(e=e.filter(e=>e.team_id===i["Team ID"])),i["Organization ID"]&&(e=e.filter(e=>e.organization_id===i["Organization ID"])),h(e)},[s,i]),(0,d.useEffect)(()=>{let e=async()=>{let e=await sE(a);e.length>0&&c(e);let s=await sL(a);s.length>0&&u(s)};a&&e()},[a]);let f=(0,sA.a)({queryKey:["allKeys"],queryFn:async()=>{if(!a)throw Error("Access token required");return await sT(a)},enabled:!!a}).data||[];return(0,d.useEffect)(()=>{t&&t.length>0&&c(e=>e.length{l&&l.length>0&&u(e=>e.length{n({"Team ID":e["Team ID"]||"","Organization ID":e["Organization ID"]||"","Key Alias":e["Key Alias"]||"","User ID":e["User ID"]||"","Sort By":e["Sort By"]||"created_at","Sort Order":e["Sort Order"]||"desc"}),g({...i,...e})},handleFilterReset:()=>{n(r),g(r)}}}({keys:s,teams:n,organizations:f,accessToken:h});(0,d.useEffect)(()=>{if(h){let e=s.map(e=>e.user_id).filter(e=>null!==e);(async()=>{A((await (0,j.userListCall)(h,e,1,100)).users)})()}},[h,s]),(0,d.useEffect)(()=>{if(y){let e=()=>{y()};return window.addEventListener("storage",e),()=>{window.removeEventListener("storage",e)}}},[y]);let V=[{id:"expander",header:()=>null,cell:e=>{let{row:s}=e;return s.getCanExpand()?(0,c.jsx)("button",{onClick:s.getToggleExpandedHandler(),style:{cursor:"pointer"},children:s.getIsExpanded()?"▼":"▶"}):null}},{id:"token",accessorKey:"token",header:"Key ID",cell:e=>(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.getValue(),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>C(e.getValue()),children:e.getValue()?"".concat(e.getValue().slice(0,7),"..."):"-"})})})},{id:"key_alias",accessorKey:"key_alias",header:"Key Alias",cell:e=>{let s=e.getValue();return(0,c.jsx)(B.Z,{title:s,children:s?s.length>20?"".concat(s.slice(0,20),"..."):s:"-"})}},{id:"key_name",accessorKey:"key_name",header:"Secret Key",cell:e=>(0,c.jsx)("span",{className:"font-mono text-xs",children:e.getValue()})},{id:"team_alias",accessorKey:"team_id",header:"Team Alias",cell:e=>{let{row:s,getValue:t}=e,l=t(),a=null==n?void 0:n.find(e=>e.team_id===l);return(null==a?void 0:a.team_alias)||"Unknown"}},{id:"team_id",accessorKey:"team_id",header:"Team ID",cell:e=>(0,c.jsx)(B.Z,{title:e.getValue(),children:e.getValue()?"".concat(e.getValue().slice(0,7),"..."):"-"})},{id:"organization_id",accessorKey:"organization_id",header:"Organization ID",cell:e=>e.getValue()?e.renderValue():"-"},{id:"user_email",accessorKey:"user_id",header:"User Email",cell:e=>{let s=e.getValue(),t=I.find(e=>e.user_id===s);return(null==t?void 0:t.user_email)?(0,c.jsx)(B.Z,{title:null==t?void 0:t.user_email,children:(0,c.jsxs)("span",{children:[null==t?void 0:t.user_email.slice(0,20),"..."]})}):"-"}},{id:"user_id",accessorKey:"user_id",header:"User ID",cell:e=>{let s=e.getValue();return s&&s.length>15?(0,c.jsx)(B.Z,{title:s,children:(0,c.jsxs)("span",{children:[s.slice(0,7),"..."]})}):s||"-"}},{id:"created_at",accessorKey:"created_at",header:"Created At",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleDateString():"-"}},{id:"created_by",accessorKey:"created_by",header:"Created By",cell:e=>{let s=e.getValue();return s&&s.length>15?(0,c.jsx)(B.Z,{title:s,children:(0,c.jsxs)("span",{children:[s.slice(0,7),"..."]})}):s}},{id:"updated_at",accessorKey:"updated_at",header:"Updated At",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleDateString():"Never"}},{id:"expires",accessorKey:"expires",header:"Expires",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleDateString():"Never"}},{id:"spend",accessorKey:"spend",header:"Spend (USD)",cell:e=>eP(e.getValue(),4)},{id:"max_budget",accessorKey:"max_budget",header:"Budget (USD)",cell:e=>{let s=e.getValue();return null===s?"Unlimited":"$".concat(eP(s))}},{id:"budget_reset_at",accessorKey:"budget_reset_at",header:"Budget Reset",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleString():"Never"}},{id:"models",accessorKey:"models",header:"Models",cell:e=>{let s=e.getValue();return(0,c.jsx)("div",{className:"flex flex-col py-2",children:Array.isArray(s)?(0,c.jsx)("div",{className:"flex flex-col",children:0===s.length?(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"flex items-start",children:[s.length>3&&(0,c.jsx)("div",{children:(0,c.jsx)(sD.Z,{icon:L[e.row.id]?sB.Z:sK.Z,className:"cursor-pointer",size:"xs",onClick:()=>{P(s=>({...s,[e.row.id]:!s[e.row.id]}))}})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[s.slice(0,3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s)),s.length>3&&!L[e.row.id]&&(0,c.jsx)(se.Z,{size:"xs",color:"gray",className:"cursor-pointer",children:(0,c.jsxs)(k.Z,{children:["+",s.length-3," ",s.length-3==1?"more model":"more models"]})}),L[e.row.id]&&(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:s.slice(3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s+3):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s+3))})]})]})})}):null})}},{id:"rate_limits",header:"Rate Limits",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:["TPM: ",null!==t.tpm_limit?t.tpm_limit:"Unlimited"]}),(0,c.jsxs)("div",{children:["RPM: ",null!==t.rpm_limit?t.rpm_limit:"Unlimited"]})]})}}];console.log("keys: ".concat(JSON.stringify(s)));let K=(0,sM.b7)({data:O,columns:V.filter(e=>"expander"!==e.id),state:{sorting:T},onSortingChange:e=>{let s="function"==typeof e?e(T):e;if(console.log("newSorting: ".concat(JSON.stringify(s))),E(s),s&&s.length>0){let e=s[0],t=e.id,l=e.desc?"desc":"asc";console.log("sortBy: ".concat(t,", sortOrder: ").concat(l)),U({...M,"Sort By":t,"Sort Order":l}),null==_||_(t,l)}},getCoreRowModel:(0,sO.sC)(),getSortedRowModel:(0,sO.tj)(),enableSorting:!0,manualSorting:!1});return d.useEffect(()=>{N&&E([{id:N.sortBy,desc:"desc"===N.sortOrder}])},[N]),(0,c.jsx)("div",{className:"w-full h-full overflow-hidden",children:S?(0,c.jsx)(sS,{keyId:S,onClose:()=>C(null),keyData:O.find(e=>e.token===S),onKeyDataUpdate:e=>{t(s=>s.map(s=>s.token===e.token?eL(s,e):s)),y&&y()},onDelete:()=>{t(e=>e.filter(e=>e.token!==S)),y&&y()},accessToken:h,userID:p,userRole:g,teams:R,premiumUser:Z,setAccessToken:w}):(0,c.jsxs)("div",{className:"border-b py-4 flex-1 overflow-hidden",children:[(0,c.jsx)("div",{className:"w-full mb-6",children:(0,c.jsx)(sI,{options:[{name:"Team ID",label:"Team ID",isSearchable:!0,searchFn:async e=>R&&0!==R.length?R.filter(s=>s.team_id.toLowerCase().includes(e.toLowerCase())||s.team_alias&&s.team_alias.toLowerCase().includes(e.toLowerCase())).map(e=>({label:"".concat(e.team_alias||e.team_id," (").concat(e.team_id,")"),value:e.team_id})):[]},{name:"Organization ID",label:"Organization ID",isSearchable:!0,searchFn:async e=>z&&0!==z.length?z.filter(s=>{var t,l;return null!==(l=null===(t=s.organization_id)||void 0===t?void 0:t.toLowerCase().includes(e.toLowerCase()))&&void 0!==l&&l}).filter(e=>null!==e.organization_id&&void 0!==e.organization_id).map(e=>({label:"".concat(e.organization_id||"Unknown"," (").concat(e.organization_id,")"),value:e.organization_id})):[]},{name:"Key Alias",label:"Key Alias",isSearchable:!0,searchFn:async e=>D.filter(s=>s.toLowerCase().includes(e.toLowerCase())).map(e=>({label:e,value:e}))},{name:"User ID",label:"User ID",isSearchable:!1},{name:"Key Hash",label:"Key Hash",isSearchable:!1}],onApplyFilters:U,initialValues:M,onResetFilters:q})}),(0,c.jsxs)("div",{className:"flex items-center justify-between w-full mb-4",children:[(0,c.jsxs)("span",{className:"inline-flex text-sm text-gray-700",children:["Showing"," ",l?"...":"".concat((a.currentPage-1)*i+1," - ").concat(Math.min(a.currentPage*i,a.totalCount))," ","of ",l?"...":a.totalCount," results"]}),(0,c.jsxs)("div",{className:"inline-flex items-center gap-2",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Page ",l?"...":a.currentPage," of ",l?"...":a.totalPages]}),(0,c.jsx)("button",{onClick:()=>r(a.currentPage-1),disabled:l||1===a.currentPage,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Previous"}),(0,c.jsx)("button",{onClick:()=>r(a.currentPage+1),disabled:l||a.currentPage===a.totalPages,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Next"})]})]}),(0,c.jsx)("div",{className:"h-[75vh] overflow-auto",children:(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sU.Z,{children:K.getHeaderGroups().map(e=>(0,c.jsx)(sV.Z,{children:e.headers.map(e=>(0,c.jsx)(sq.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sB.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sR.Z,{children:l?(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:V.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"\uD83D\uDE85 Loading keys..."})})})}):O.length>0?K.getRowModel().rows.map(e=>(0,c.jsx)(sV.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sz.Z,{style:{maxWidth:"8-x",whiteSpace:"pre-wrap",overflow:"hidden"},className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("models"===e.column.id&&e.getValue().length>3?"px-0":""),children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:V.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No keys found"})})})})})]})})})})]})})}var sJ=e=>{let{userID:s,userRole:t,accessToken:l,selectedTeam:a,setSelectedTeam:r,data:i,setData:n,teams:o,premiumUser:m,currentOrg:u,organizations:x,setCurrentOrg:h,selectedKeyAlias:p,setSelectedKeyAlias:g,createClicked:f,setAccessToken:N}=e,[Z,w]=(0,d.useState)(!1),[I,E]=(0,d.useState)(!1),[L,P]=(0,d.useState)(null),[M,O]=(0,d.useState)(""),[F,R]=(0,d.useState)(null),[z,U]=(0,d.useState)(null),[q,V]=(0,d.useState)((null==a?void 0:a.team_id)||"");(0,d.useEffect)(()=>{V((null==a?void 0:a.team_id)||"")},[a]);let{keys:B,isLoading:K,error:G,pagination:H,refresh:Y,setKeys:J}=e7({selectedTeam:a||void 0,currentOrg:u,selectedKeyAlias:p,accessToken:l||"",createClicked:f}),[W,$]=(0,d.useState)(!1),[Q,X]=(0,d.useState)(!1),[ee,es]=(0,d.useState)(null),[et,el]=(0,d.useState)([]),ea=new Set,[er,ei]=(0,d.useState)(!1),[en,ec]=(0,d.useState)(!1),[ed,em]=(0,d.useState)(null),[eu,ex]=(0,d.useState)(null),[eh]=A.Z.useForm(),[ep,eg]=(0,d.useState)(null),[ej,ef]=(0,d.useState)(ea),[ev,ey]=(0,d.useState)([]);(0,d.useEffect)(()=>{console.log("in calculateNewExpiryTime for selectedToken",ee),(null==eu?void 0:eu.duration)?eg((e=>{if(!e)return null;try{let s;let t=new Date;if(e.endsWith("s"))s=(0,e6.Z)(t,{seconds:parseInt(e)});else if(e.endsWith("h"))s=(0,e6.Z)(t,{hours:parseInt(e)});else if(e.endsWith("d"))s=(0,e6.Z)(t,{days:parseInt(e)});else throw Error("Invalid duration format");return s.toLocaleString("en-US",{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0})}catch(e){return null}})(eu.duration)):eg(null),console.log("calculateNewExpiryTime:",ep)},[ee,null==eu?void 0:eu.duration]),(0,d.useEffect)(()=>{(async()=>{try{if(null===s||null===t||null===l)return;let e=await D(s,t,l);e&&el(e)}catch(e){eo.Z.error({description:"Error fetching user models"})}})()},[l,s,t]),(0,d.useEffect)(()=>{if(o){let e=new Set;o.forEach((s,t)=>{let l=s.team_id;e.add(l)}),ef(e)}},[o]);let eb=async()=>{if(null!=L&&null!=B){try{if(!l)return;await (0,j.keyDeleteCall)(l,L);let e=B.filter(e=>e.token!==L);J(e)}catch(e){eo.Z.error({description:"Error deleting the key"})}E(!1),P(null),O("")}},e_=()=>{E(!1),P(null),O("")},eN=(e,s)=>{ex(t=>({...t,[e]:s}))},eZ=async()=>{if(!m){eo.Z.warning({description:"Regenerate API Key is an Enterprise feature. Please upgrade to use this feature."});return}if(null!=ee)try{let e=await eh.validateFields();if(!l)return;let s=await (0,j.regenerateKeyCall)(l,ee.token||ee.token_id,e);if(em(s.key),i){let t=i.map(t=>t.token===(null==ee?void 0:ee.token)?{...t,key_name:s.key_name,...e}:t);n(t)}ec(!1),eh.resetFields(),eo.Z.success({description:"API Key regenerated successfully"})}catch(e){console.error("Error regenerating key:",e),eo.Z.error({description:"Failed to regenerate API Key"})}};return(0,c.jsxs)("div",{children:[(0,c.jsx)(sY,{keys:B,setKeys:J,isLoading:K,pagination:H,onPageChange:e=>{Y({page:e})},pageSize:100,teams:o,selectedTeam:a,setSelectedTeam:r,accessToken:l,userID:s,userRole:t,organizations:x,setCurrentOrg:h,refresh:Y,selectedKeyAlias:p,setSelectedKeyAlias:g,premiumUser:m,setAccessToken:N}),I&&(()=>{let e=null==B?void 0:B.find(e=>e.token===L),s=(null==e?void 0:e.key_alias)||(null==e?void 0:e.token_id)||L,t=M===s;return(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl w-full max-w-2xl min-h-[380px] py-6 overflow-hidden transform transition-all flex flex-col justify-between",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Delete Key"}),(0,c.jsx)("button",{onClick:()=>{e_(),O("")},className:"text-gray-400 hover:text-gray-500 focus:outline-none",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,c.jsxs)("div",{className:"px-6 py-4",children:[(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.082 16.5c-.77.833.192 2.5 1.732 2.5z"})})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-base font-medium text-red-600",children:"Warning: You are about to delete this API key."}),(0,c.jsx)("p",{className:"text-base text-red-600 mt-2",children:"This action is irreversible and will immediately revoke access for any applications using this key."})]})]}),(0,c.jsx)("p",{className:"text-base text-gray-600 mb-5",children:"Are you sure you want to delete this API key?"}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsx)("span",{className:"underline",children:s})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:M,onChange:e=>O(e.target.value),placeholder:"Enter key name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]})]})]}),(0,c.jsxs)("div",{className:"px-6 py-4 bg-gray-50 flex justify-end gap-4",children:[(0,c.jsx)("button",{onClick:()=>{e_(),O("")},className:"px-5 py-3 bg-white border border-gray-300 rounded-md text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:"Cancel"}),(0,c.jsx)("button",{onClick:eb,disabled:!t,className:"px-5 py-3 rounded-md text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 ".concat(t?"bg-red-600 hover:bg-red-700":"bg-red-300 cursor-not-allowed"),children:"Delete Key"})]})]})})})(),(0,c.jsx)(T.Z,{title:"Regenerate API Key",visible:en,onCancel:()=>{ec(!1),eh.resetFields()},footer:[(0,c.jsx)(b.Z,{onClick:()=>{ec(!1),eh.resetFields()},className:"mr-2",children:"Cancel"},"cancel"),(0,c.jsx)(b.Z,{onClick:eZ,disabled:!m,children:m?"Regenerate":"Upgrade to Regenerate"},"regenerate")],children:m?(0,c.jsxs)(A.Z,{form:eh,layout:"vertical",onValuesChange:(e,s)=>{"duration"in e&&eN("duration",e.duration)},children:[(0,c.jsx)(A.Z.Item,{name:"key_alias",label:"Key Alias",children:(0,c.jsx)(_.Z,{disabled:!0})}),(0,c.jsx)(A.Z.Item,{name:"max_budget",label:"Max Budget (USD)",children:(0,c.jsx)(e8.Z,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"tpm_limit",label:"TPM Limit",children:(0,c.jsx)(e8.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"rpm_limit",label:"RPM Limit",children:(0,c.jsx)(e8.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"duration",label:"Expire Key (eg: 30s, 30h, 30d)",className:"mt-8",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsxs)("div",{className:"mt-2 text-sm text-gray-500",children:["Current expiry:"," ",(null==ee?void 0:ee.expires)!=null?new Date(ee.expires).toLocaleString():"Never"]}),ep&&(0,c.jsxs)("div",{className:"mt-2 text-sm text-green-600",children:["New expiry: ",ep]})]}):(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"mb-2 text-gray-500 italic text-[12px]",children:"Upgrade to use this feature"}),(0,c.jsx)(b.Z,{variant:"primary",className:"mb-2",children:(0,c.jsx)("a",{href:"https://calendly.com/d/4mp-gd3-k5k/litellm-1-1-onboarding-chat",target:"_blank",children:"Get Free Trial"})})]})}),ed&&(0,c.jsx)(T.Z,{visible:!!ed,onCancel:()=>em(null),footer:[(0,c.jsx)(b.Z,{onClick:()=>em(null),children:"Close"},"close")],children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:"Regenerated Key"}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)("p",{children:["Please replace your old key with the new key generated. For security reasons,"," ",(0,c.jsx)("b",{children:"you will not be able to view it again"})," through your LiteLLM account. If you lose this secret key, you will need to generate a new one."]})}),(0,c.jsxs)(v.Z,{numColSpan:1,children:[(0,c.jsx)(k.Z,{className:"mt-3",children:"Key Alias:"}),(0,c.jsx)("div",{style:{background:"#f8f8f8",padding:"10px",borderRadius:"5px",marginBottom:"10px"},children:(0,c.jsx)("pre",{style:{wordWrap:"break-word",whiteSpace:"normal"},children:(null==ee?void 0:ee.key_alias)||"No alias set"})}),(0,c.jsx)(k.Z,{className:"mt-3",children:"New API Key:"}),(0,c.jsx)("div",{style:{background:"#f8f8f8",padding:"10px",borderRadius:"5px",marginBottom:"10px"},children:(0,c.jsx)("pre",{style:{wordWrap:"break-word",whiteSpace:"normal"},children:ed})}),(0,c.jsx)(C.CopyToClipboard,{text:ed,onCopy:()=>eo.Z.success({description:"API Key copied to clipboard"}),children:(0,c.jsx)(b.Z,{className:"mt-3",children:"Copy API Key"})})]})]})})]})},sW=t(12011),s$=t(3914),sQ=e=>{let{userID:s,userRole:t,teams:l,keys:a,setUserRole:r,userEmail:i,setUserEmail:n,setTeams:o,setKeys:x,premiumUser:h,organizations:p,addKey:g,createClicked:b}=e,[_,N]=(0,d.useState)(null),[Z,w]=(0,d.useState)(null),k=(0,m.useSearchParams)(),S=function(e){console.log("COOKIES",document.cookie);let s=document.cookie.split("; ").find(s=>s.startsWith(e+"="));return s?s.split("=")[1]:null}("token"),C=k.get("invitation_id"),[I,A]=(0,d.useState)(null),[T,E]=(0,d.useState)(null),[L,P]=(0,d.useState)([]),[M,O]=(0,d.useState)(null),[D,F]=(0,d.useState)(null),[R,z]=(0,d.useState)(null);if(window.addEventListener("beforeunload",function(){sessionStorage.clear()}),(0,d.useEffect)(()=>{if(S){let e=(0,u.o)(S);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),A(e.key),e.user_role){let s=function(e){if(!e)return"Undefined Role";switch(console.log("Received user role: ".concat(e)),e.toLowerCase()){case"app_owner":case"demo_app_owner":return"App Owner";case"app_admin":case"proxy_admin":return"Admin";case"proxy_admin_viewer":return"Admin Viewer";case"app_user":return"App User";case"internal_user":return"Internal User";case"internal_user_viewer":return"Internal Viewer";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",s),r(s)}else console.log("User role not defined");e.user_email?n(e.user_email):console.log("User Email is not set ".concat(e))}}if(s&&I&&t&&!a&&!_){let e=sessionStorage.getItem("userModels"+s);e?P(JSON.parse(e)):(console.log("currentOrg: ".concat(JSON.stringify(Z))),(async()=>{try{let e=await (0,j.getProxyUISettings)(I);O(e);let l=await (0,j.userInfoCall)(I,s,t,!1,null,null);N(l.user_info),console.log("userSpendData: ".concat(JSON.stringify(_))),(null==l?void 0:l.teams[0].keys)?x(l.keys.concat(l.teams.filter(e=>"Admin"===t||e.user_id===s).flatMap(e=>e.keys))):x(l.keys),sessionStorage.setItem("userData"+s,JSON.stringify(l.keys)),sessionStorage.setItem("userSpendData"+s,JSON.stringify(l.user_info));let a=(await (0,j.modelAvailableCall)(I,s,t)).data.map(e=>e.id);console.log("available_model_names:",a),P(a),console.log("userModels:",L),sessionStorage.setItem("userModels"+s,JSON.stringify(a))}catch(e){console.error("There was an error fetching the data",e),e.message.includes("Invalid proxy server token passed")&&U()}})(),f(I,s,t,Z,o))}},[s,S,I,a,t]),(0,d.useEffect)(()=>{I&&(async()=>{try{let e=await (0,j.keyInfoCall)(I,[I]);console.log("keyInfo: ",e)}catch(e){e.message.includes("Invalid proxy server token passed")&&U()}})()},[I]),(0,d.useEffect)(()=>{console.log("currentOrg: ".concat(JSON.stringify(Z),", accessToken: ").concat(I,", userID: ").concat(s,", userRole: ").concat(t)),I&&(console.log("fetching teams"),f(I,s,t,Z,o))},[Z]),(0,d.useEffect)(()=>{if(null!==a&&null!=D&&null!==D.team_id){let e=0;for(let s of(console.log("keys: ".concat(JSON.stringify(a))),a))D.hasOwnProperty("team_id")&&null!==s.team_id&&s.team_id===D.team_id&&(e+=s.spend);console.log("sum: ".concat(e)),E(e)}else if(null!==a){let e=0;for(let s of a)e+=s.spend;E(e)}},[D]),null!=C)return(0,c.jsx)(sW.default,{});function U(){(0,s$.b)();let e=(0,j.getProxyBaseUrl)();console.log("proxyBaseUrl:",e);let s=e?"".concat(e,"/sso/key/generate"):"/sso/key/generate";return console.log("Full URL:",s),window.location.href=s,null}if(null==S)return console.log("All cookies before redirect:",document.cookie),U(),null;try{let e=(0,u.o)(S);console.log("Decoded token:",e);let s=e.exp,t=Math.floor(Date.now()/1e3);if(s&&t>=s)return console.log("Token expired, redirecting to login"),U(),null}catch(e){return console.error("Error decoding token:",e),(0,s$.b)(),U(),null}if(null==I)return null;if(null==s)return(0,c.jsx)("h1",{children:"User ID is not set"});if(null==t&&r("App Owner"),t&&"Admin Viewer"==t){let{Title:e,Paragraph:s}=en.default;return(0,c.jsxs)("div",{children:[(0,c.jsx)(e,{level:1,children:"Access Denied"}),(0,c.jsx)(s,{children:"Ask your proxy admin for access to create keys"})]})}return console.log("inside user dashboard, selected team",D),console.log("All cookies after redirect:",document.cookie),(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[(0,c.jsx)(e3,{userID:s,team:D,teams:l,userRole:t,accessToken:I,data:a,addKey:g,premiumUser:h},D?D.team_id:null),(0,c.jsx)(sJ,{userID:s,userRole:t,accessToken:I,selectedTeam:D||null,setSelectedTeam:F,selectedKeyAlias:R,setSelectedKeyAlias:z,data:a,setData:x,premiumUser:h,teams:l,currentOrg:Z,setCurrentOrg:w,organizations:p,createClicked:b,setAccessToken:A})]})})})},sX=t(97765),s0=t(42673);let s1=async(e,s,t)=>{try{console.log("handling submit for formValues:",e);let s=e.model_mappings||[];if("model_mappings"in e&&delete e.model_mappings,e.model&&e.model.includes("all-wildcard")){let t=e.custom_llm_provider,l=s0.fK[t]+"/*";e.model_name=l,s.push({public_name:l,litellm_model:l}),e.model=l}let t=[];for(let l of s){let s={},a={},r=l.public_name;for(let[t,r]of(s.model=l.litellm_model,e.input_cost_per_token&&(e.input_cost_per_token=Number(e.input_cost_per_token)/1e6),e.output_cost_per_token&&(e.output_cost_per_token=Number(e.output_cost_per_token)/1e6),s.model=l.litellm_model,console.log("formValues add deployment:",e),Object.entries(e)))if(""!==r&&"custom_pricing"!==t&&"pricing_model"!==t&&"cache_control"!==t){if("model_name"==t)s.model=r;else if("custom_llm_provider"==t){console.log("custom_llm_provider:",r);let e=s0.fK[r];s.custom_llm_provider=e,console.log("custom_llm_provider mappingResult:",e)}else if("model"==t)continue;else if("base_model"===t)a[t]=r;else if("team_id"===t)a.team_id=r;else if("model_access_group"===t)a.access_groups=r;else if("mode"==t)console.log("placing mode in modelInfo"),a.mode=r,delete s.mode;else if("custom_model_name"===t)s.model=r;else if("litellm_extra_params"==t){console.log("litellm_extra_params:",r);let e={};if(r&&void 0!=r){try{e=JSON.parse(r)}catch(e){throw eo.Z.fromBackend("Failed to parse LiteLLM Extra Params: "+e),Error("Failed to parse litellm_extra_params: "+e)}for(let[t,l]of Object.entries(e))s[t]=l}}else if("model_info_params"==t){console.log("model_info_params:",r);let e={};if(r&&void 0!=r){try{e=JSON.parse(r)}catch(e){throw eo.Z.fromBackend("Failed to parse LiteLLM Extra Params: "+e),Error("Failed to parse litellm_extra_params: "+e)}for(let[s,t]of Object.entries(e))a[s]=t}}else if("input_cost_per_token"===t||"output_cost_per_token"===t||"input_cost_per_second"===t){r&&(s[t]=Number(r));continue}else s[t]=r}t.push({litellmParamsObj:s,modelInfoObj:a,modelName:r})}return t}catch(e){eo.Z.fromBackend("Failed to create model: "+e)}},s2=async(e,s,t,l)=>{try{let a=await s1(e,s,t);if(!a||0===a.length)return;for(let e of a){let{litellmParamsObj:t,modelInfoObj:l,modelName:a}=e,r={model_name:a,litellm_params:t,model_info:l},i=await (0,j.modelCreateCall)(s,r);console.log("response for model create call: ".concat(i.data))}l&&l(),t.resetFields()}catch(e){eo.Z.fromBackend("Failed to add model: "+e)}};var s4=t(53410),s5=t(47451),s3=t(69410);let{Link:s6}=en.default,s8={[s0.Cl.OpenAI]:[{key:"api_base",label:"API Base",type:"select",options:["https://api.openai.com/v1","https://eu.api.openai.com"],defaultValue:"https://api.openai.com/v1"},{key:"organization",label:"OpenAI Organization ID",placeholder:"[OPTIONAL] my-unique-org"},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.OpenAI_Text]:[{key:"api_base",label:"API Base",type:"select",options:["https://api.openai.com/v1","https://eu.api.openai.com"],defaultValue:"https://api.openai.com/v1"},{key:"organization",label:"OpenAI Organization ID",placeholder:"[OPTIONAL] my-unique-org"},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.Vertex_AI]:[{key:"vertex_project",label:"Vertex Project",placeholder:"adroit-cadet-1234..",required:!0},{key:"vertex_location",label:"Vertex Location",placeholder:"us-east-1",required:!0},{key:"vertex_credentials",label:"Vertex Credentials",required:!0,type:"upload"}],[s0.Cl.AssemblyAI]:[{key:"api_base",label:"API Base",type:"select",required:!0,options:["https://api.assemblyai.com","https://api.eu.assemblyai.com"]},{key:"api_key",label:"AssemblyAI API Key",type:"password",required:!0}],[s0.Cl.Azure]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_version",label:"API Version",placeholder:"2023-07-01-preview",tooltip:"By default litellm will use the latest version. If you want to use a different version, you can specify it here"},{key:"base_model",label:"Base Model",placeholder:"azure/gpt-3.5-turbo"},{key:"api_key",label:"Azure API Key",type:"password",required:!0}],[s0.Cl.Azure_AI_Studio]:[{key:"api_base",label:"API Base",placeholder:"https://.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-10-21",tooltip:"Enter your full Target URI from Azure Foundry here. Example: https://litellm8397336933.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-10-21",required:!0},{key:"api_key",label:"Azure API Key",type:"password",required:!0}],[s0.Cl.OpenAI_Compatible]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.Dashscope]:[{key:"api_key",label:"Dashscope API Key",type:"password",required:!0},{key:"api_base",label:"API Base",placeholder:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",defaultValue:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",required:!0,tooltip:"The base URL for your Dashscope server. Defaults to https://dashscope-intl.aliyuncs.com/compatible-mode/v1 if not specified."}],[s0.Cl.OpenAI_Text_Compatible]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.Bedrock]:[{key:"aws_access_key_id",label:"AWS Access Key ID",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_secret_access_key",label:"AWS Secret Access Key",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_session_token",label:"AWS Session Token",type:"password",required:!1,tooltip:"Temporary credentials session token. You can provide the raw token or the environment variable (e.g. `os.environ/MY_SESSION_TOKEN`)."},{key:"aws_region_name",label:"AWS Region Name",placeholder:"us-east-1",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_session_name",label:"AWS Session Name",placeholder:"my-session",required:!1,tooltip:"Name for the AWS session. You can provide the raw value or the environment variable (e.g. `os.environ/MY_SESSION_NAME`)."},{key:"aws_profile_name",label:"AWS Profile Name",placeholder:"default",required:!1,tooltip:"AWS profile name to use for authentication. You can provide the raw value or the environment variable (e.g. `os.environ/MY_PROFILE_NAME`)."},{key:"aws_role_name",label:"AWS Role Name",placeholder:"MyRole",required:!1,tooltip:"AWS IAM role name to assume. You can provide the raw value or the environment variable (e.g. `os.environ/MY_ROLE_NAME`)."},{key:"aws_web_identity_token",label:"AWS Web Identity Token",type:"password",required:!1,tooltip:"Web identity token for OIDC authentication. You can provide the raw token or the environment variable (e.g. `os.environ/MY_WEB_IDENTITY_TOKEN`)."},{key:"aws_bedrock_runtime_endpoint",label:"AWS Bedrock Runtime Endpoint",placeholder:"https://bedrock-runtime.us-east-1.amazonaws.com",required:!1,tooltip:"Custom Bedrock runtime endpoint URL. You can provide the raw value or the environment variable (e.g. `os.environ/MY_BEDROCK_ENDPOINT`)."}],[s0.Cl.SageMaker]:[{key:"aws_access_key_id",label:"AWS Access Key ID",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_secret_access_key",label:"AWS Secret Access Key",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_region_name",label:"AWS Region Name",placeholder:"us-east-1",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."}],[s0.Cl.Ollama]:[{key:"api_base",label:"API Base",placeholder:"http://localhost:11434",defaultValue:"http://localhost:11434",required:!1,tooltip:"The base URL for your Ollama server. Defaults to http://localhost:11434 if not specified."}],[s0.Cl.Anthropic]:[{key:"api_key",label:"API Key",placeholder:"sk-",type:"password",required:!0}],[s0.Cl.Deepgram]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.ElevenLabs]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Google_AI_Studio]:[{key:"api_key",label:"API Key",placeholder:"aig-",type:"password",required:!0}],[s0.Cl.Groq]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.MistralAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Deepseek]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Cohere]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Databricks]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.xAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.AIML]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Cerebras]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Sambanova]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Perplexity]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.TogetherAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Openrouter]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.FireworksAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.GradientAI]:[{key:"api_base",label:"GradientAI Endpoint",placeholder:"https://...",required:!1},{key:"api_key",label:"GradientAI API Key",type:"password",required:!0}],[s0.Cl.Triton]:[{key:"api_key",label:"API Key",type:"password",required:!1},{key:"api_base",label:"API Base",placeholder:"http://localhost:8000/generate",required:!1}],[s0.Cl.Hosted_Vllm]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.Voyage]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.JinaAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.VolcEngine]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.DeepInfra]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Oracle]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Snowflake]:[{key:"api_key",label:"Snowflake API Key / JWT Key for Authentication",type:"password",required:!0},{key:"api_base",label:"Snowflake API Endpoint",placeholder:"https://1234567890.snowflakecomputing.com/api/v2/cortex/inference:complete",tooltip:"Enter the full endpoint with path here. Example: https://1234567890.snowflakecomputing.com/api/v2/cortex/inference:complete",required:!0}],[s0.Cl.Infinity]:[{key:"api_base",label:"API Base",placeholder:"http://localhost:7997"}]};var s7=e=>{let{selectedProvider:s,uploadProps:t}=e,l=s0.Cl[s],a=A.Z.useFormInstance(),r=d.useMemo(()=>s8[l]||[],[l]),i={name:"file",accept:".json",beforeUpload:e=>{if("application/json"===e.type){let s=new FileReader;s.onload=e=>{if(e.target){let s=e.target.result;console.log("Setting field value from JSON, length: ".concat(s.length)),a.setFieldsValue({vertex_credentials:s}),console.log("Form values after setting:",a.getFieldsValue())}},s.readAsText(e)}return!1},onChange(e){console.log("Upload onChange triggered in ProviderSpecificFields"),console.log("Current form values:",a.getFieldsValue()),"uploading"!==e.file.status&&console.log(e.file,e.fileList)}};return(0,c.jsx)(c.Fragment,{children:r.map(e=>{var s;return(0,c.jsxs)(d.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:e.label,name:e.key,rules:e.required?[{required:!0,message:"Required"}]:void 0,tooltip:e.tooltip,className:"vertex_credentials"===e.key?"mb-0":void 0,children:"select"===e.type?(0,c.jsx)(I.default,{placeholder:e.placeholder,defaultValue:e.defaultValue,children:null===(s=e.options)||void 0===s?void 0:s.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"upload"===e.type?(0,c.jsx)(ed.default,{...i,onChange:s=>{(null==t?void 0:t.onChange)&&t.onChange(s),setTimeout(()=>{let s=a.getFieldValue(e.key);console.log("".concat(e.key," value after upload:"),JSON.stringify(s))},500)},children:(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(ej.Z,{}),children:"Click to Upload"})}):(0,c.jsx)(_.Z,{placeholder:e.placeholder,type:"password"===e.type?"password":"text"})}),"vertex_credentials"===e.key&&(0,c.jsx)(s5.Z,{children:(0,c.jsx)(s3.Z,{children:(0,c.jsx)(k.Z,{className:"mb-3 mt-1",children:"Give a gcp service account(.json file)"})})}),"base_model"===e.key&&(0,c.jsxs)(s5.Z,{children:[(0,c.jsx)(s3.Z,{span:10}),(0,c.jsx)(s3.Z,{span:10,children:(0,c.jsxs)(k.Z,{className:"mb-2",children:["The actual model your azure deployment uses. Used for accurate cost tracking. Select name from"," ",(0,c.jsx)(s6,{href:"https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json",target:"_blank",children:"here"})]})})]})]},e.key)})})};let{Title:s9,Link:te}=en.default;var ts=e=>{let{isVisible:s,onCancel:t,onAddCredential:l,onUpdateCredential:a,uploadProps:r,addOrEdit:i,existingCredential:n}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)(s0.Cl.OpenAI),[x,h]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{n&&(o.setFieldsValue({credential_name:n.credential_name,custom_llm_provider:n.credential_info.custom_llm_provider,api_base:n.credential_values.api_base,api_version:n.credential_values.api_version,base_model:n.credential_values.base_model,api_key:n.credential_values.api_key}),u(n.credential_info.custom_llm_provider))},[n]),(0,c.jsx)(T.Z,{title:"add"===i?"Add New Credential":"Edit Credential",visible:s,onCancel:()=>{t(),o.resetFields()},footer:null,width:600,children:(0,c.jsxs)(A.Z,{form:o,onFinish:e=>{let s=Object.entries(e).reduce((e,s)=>{let[t,l]=s;return""!==l&&null!=l&&(e[t]=l),e},{});"add"===i?l(s):a(s),o.resetFields()},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Credential Name:",name:"credential_name",rules:[{required:!0,message:"Credential name is required"}],initialValue:null==n?void 0:n.credential_name,children:(0,c.jsx)(eW.o,{placeholder:"Enter a friendly name for these credentials",disabled:null!=n&&!!n.credential_name})}),(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Required"}],label:"Provider:",name:"custom_llm_provider",tooltip:"Helper to auto-populate provider specific fields",children:(0,c.jsx)(I.default,{showSearch:!0,onChange:e=>{u(e),o.setFieldValue("custom_llm_provider",e)},children:Object.entries(s0.Cl).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:s,children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:s0.cd[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(s7,{selectedProvider:m,uploadProps:r}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(te,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{children:[(0,c.jsx)(L.ZP,{onClick:()=>{t(),o.resetFields()},style:{marginRight:10},children:"Cancel"}),(0,c.jsx)(L.ZP,{htmlType:"submit",children:"add"===i?"Add Credential":"Update Credential"})]})]})]})})},tt=e=>{let{isVisible:s,onCancel:t,onConfirm:l,credentialName:a}=e,[r,i]=(0,d.useState)(""),n=r===a,o=()=>{i(""),t()};return(0,c.jsx)(T.Z,{title:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(e_.Z,{className:"h-6 w-6 text-red-600 mr-2"}),"Delete Credential"]}),open:s,footer:null,onCancel:o,closable:!0,destroyOnClose:!0,maskClosable:!1,children:(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)(e_.Z,{className:"h-5 w-5"})}),(0,c.jsx)("div",{children:(0,c.jsx)("p",{className:"text-base font-medium text-red-600",children:"This action cannot be undone and may break existing integrations."})})]}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsxs)("span",{className:"underline italic",children:["'",a,"'"]})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:r,onChange:e=>i(e.target.value),placeholder:"Enter credential name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(b.Z,{onClick:o,variant:"secondary",className:"mr-2",children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:()=>{n&&(i(""),l())},color:"red",className:"focus:ring-red-500",disabled:!n,children:"Delete Credential"})]})]})})},tl=e=>{let{accessToken:s,uploadProps:t,credentialList:l,fetchCredentials:a}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p]=A.Z.useForm(),g=["credential_name","custom_llm_provider"],f=async e=>{if(!s)return;let t=Object.entries(e).filter(e=>{let[s]=e;return!g.includes(s)}).reduce((e,s)=>{let[t,l]=s;return{...e,[t]:l}},{}),l={credential_name:e.credential_name,credential_values:t,credential_info:{custom_llm_provider:e.custom_llm_provider}};await (0,j.credentialUpdateCall)(s,e.credential_name,l),eo.Z.success("Credential updated successfully"),o(!1),a(s)},v=async e=>{if(!s)return;let t=Object.entries(e).filter(e=>{let[s]=e;return!g.includes(s)}).reduce((e,s)=>{let[t,l]=s;return{...e,[t]:l}},{}),l={credential_name:e.credential_name,credential_values:t,credential_info:{custom_llm_provider:e.custom_llm_provider}};await (0,j.credentialCreateCall)(s,l),eo.Z.success("Credential added successfully"),i(!1),a(s)};(0,d.useEffect)(()=>{s&&a(s)},[s]);let y=e=>{let s={openai:"blue",azure:"indigo",anthropic:"purple",default:"gray"},t=s[e.toLowerCase()]||s.default;return(0,c.jsx)(se.Z,{color:t,size:"xs",children:e})},_=async e=>{s&&(await (0,j.credentialDeleteCall)(s,e),eo.Z.success("Credential deleted successfully"),h(null),a(s))},N=e=>{h(e)};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(k.Z,{children:"Configured credentials for different AI providers. Add and manage your API credentials."})}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Credential Name"}),(0,c.jsx)(sq.Z,{children:"Provider"}),(0,c.jsx)(sq.Z,{children:"Description"})]})}),(0,c.jsx)(sR.Z,{children:l&&0!==l.length?l.map((e,s)=>{var t,l;return(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e.credential_name}),(0,c.jsx)(sz.Z,{children:y((null===(t=e.credential_info)||void 0===t?void 0:t.custom_llm_provider)||"-")}),(0,c.jsx)(sz.Z,{children:(null===(l=e.credential_info)||void 0===l?void 0:l.description)||"-"}),(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(b.Z,{icon:s4.Z,variant:"light",size:"sm",onClick:()=>{u(e),o(!0)}}),(0,c.jsx)(b.Z,{icon:W.Z,variant:"light",size:"sm",onClick:()=>N(e.credential_name)})]})]},s)}):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:4,className:"text-center py-4 text-gray-500",children:"No credentials configured"})})})]})}),(0,c.jsx)(b.Z,{onClick:()=>i(!0),className:"mt-4",children:"Add Credential"}),r&&(0,c.jsx)(ts,{onAddCredential:v,isVisible:r,onCancel:()=>i(!1),uploadProps:t,addOrEdit:"add",onUpdateCredential:f,existingCredential:null}),n&&(0,c.jsx)(ts,{onAddCredential:v,isVisible:n,existingCredential:m,onUpdateCredential:f,uploadProps:t,onCancel:()=>o(!1),addOrEdit:"edit"}),x&&(0,c.jsx)(tt,{isVisible:!0,onCancel:()=>{h(null)},onConfirm:()=>_(x),credentialName:x})]})};let ta=e=>{var s;return(null==e?void 0:null===(s=e.model_info)||void 0===s?void 0:s.team_public_model_name)?e.model_info.team_public_model_name:(null==e?void 0:e.model_name)||"-"};var tr=t(21487),ti=e=>{let{value:s,onValueChange:t,label:l="Select Time Range",className:a="",showTimeRange:r=!0}=e,[i,n]=(0,d.useState)(!1),o=(0,d.useRef)(null),m=(0,d.useCallback)(e=>{n(!0),setTimeout(()=>n(!1),1500),t(e),requestIdleCallback(()=>{if(e.from){let s;let l={...e},a=new Date(e.from);s=new Date(e.to?e.to:e.from),a.toDateString(),s.toDateString(),a.setHours(0,0,0,0),s.setHours(23,59,59,999),l.from=a,l.to=s,t(l)}},{timeout:100})},[t]),u=(0,d.useCallback)((e,s)=>{if(!e||!s)return"";let t=e=>e.toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0,timeZoneName:"short"});if(e.toDateString()!==s.toDateString())return"".concat(t(e)," - ").concat(t(s));{let t=e.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),l=e.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0}),a=s.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0,timeZoneName:"short"});return"".concat(t,": ").concat(l," - ").concat(a)}},[]);return(0,c.jsxs)("div",{className:a,children:[l&&(0,c.jsx)(k.Z,{className:"mb-2",children:l}),(0,c.jsxs)("div",{className:"relative w-fit",children:[(0,c.jsx)("div",{ref:o,children:(0,c.jsx)(tr.Z,{enableSelect:!0,value:s,onValueChange:m,placeholder:"Select date range",enableClear:!1,style:{zIndex:100}})}),i&&(0,c.jsx)("div",{className:"absolute top-1/2 animate-pulse",style:{left:"calc(100% + 8px)",transform:"translateY(-50%)",zIndex:110},children:(0,c.jsxs)("div",{className:"flex items-center gap-1 text-green-600 text-sm font-medium bg-white px-2 py-1 rounded-full border border-green-200 shadow-sm whitespace-nowrap",children:[(0,c.jsx)("div",{className:"w-3 h-3 bg-green-500 text-white rounded-full flex items-center justify-center text-xs",children:"✓"}),(0,c.jsx)("span",{className:"text-xs",children:"Selected"})]})})]}),r&&s.from&&s.to&&(0,c.jsx)(k.Z,{className:"mt-2 text-xs text-gray-500",children:u(s.from,s.to)})]})},tn=t(75105),to=t(40278),tc=t(79326),td=t(59664),tm=e=>{let{modelMetrics:s,modelMetricsCategories:t,customTooltip:l,premiumUser:a}=e;return(0,c.jsx)(td.Z,{title:"Time to First token (s)",className:"h-72",data:s,index:"date",showLegend:!1,categories:t,colors:["indigo","rose"],connectNulls:!0,customTooltip:l})},tu=e=>{let{teamData:s,canEditTeam:t,handleMemberDelete:l,setSelectedEditMember:a,setIsEditMemberModalVisible:r,setIsAddMemberModalVisible:i}=e,n=e=>{if(null==e)return"0";if("number"==typeof e){let s=Number(e);return s===Math.floor(s)?s.toString():eP(s,8).replace(/\.?0+$/,"")}return"0"},o=e=>{if(!e)return 0;let t=s.team_memberships.find(s=>s.user_id===e);return(null==t?void 0:t.spend)||0},d=e=>{var t;if(!e)return null;let l=s.team_memberships.find(s=>s.user_id===e);console.log("membership=".concat(l));let a=null==l?void 0:null===(t=l.litellm_budget_table)||void 0===t?void 0:t.max_budget;return null==a?null:n(a)},m=e=>{var t,l;if(!e)return"No Limits";let a=s.team_memberships.find(s=>s.user_id===e),r=null==a?void 0:null===(t=a.litellm_budget_table)||void 0===t?void 0:t.rpm_limit,i=null==a?void 0:null===(l=a.litellm_budget_table)||void 0===l?void 0:l.tpm_limit,o=[r?"".concat(n(r)," RPM"):null,i?"".concat(n(i)," TPM"):null].filter(Boolean);return o.length>0?o.join(" / "):"No Limits"};return(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-auto max-h-[50vh]",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"min-w-full",children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"User ID"}),(0,c.jsx)(sq.Z,{children:"User Email"}),(0,c.jsx)(sq.Z,{children:"Role"}),(0,c.jsxs)(sq.Z,{children:["Team Member Spend (USD)"," ",(0,c.jsx)(B.Z,{title:"This is the amount spent by a user in the team.",children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(sq.Z,{children:"Team Member Budget (USD)"}),(0,c.jsxs)(sq.Z,{children:["Team Member Rate Limits"," ",(0,c.jsx)(B.Z,{title:"Rate limits for this member's usage within this team.",children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(sq.Z,{className:"sticky right-0 bg-white z-10 border-l border-gray-200",children:"Actions"})]})}),(0,c.jsx)(sR.Z,{children:s.team_info.members_with_roles.map((e,i)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_id})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_email?e.user_email:"No Email"})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.role})}),(0,c.jsx)(sz.Z,{children:(0,c.jsxs)(k.Z,{className:"font-mono",children:["$",eP(o(e.user_id),4)]})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:d(e.user_id)?"$".concat(eP(Number(d(e.user_id)),4)):"No Limit"})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:m(e.user_id)})}),(0,c.jsx)(sz.Z,{className:"sticky right-0 bg-white z-10 border-l border-gray-200",children:t&&(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>{var t,l,i;let n=s.team_memberships.find(s=>s.user_id===e.user_id);a({...e,max_budget_in_team:(null==n?void 0:null===(t=n.litellm_budget_table)||void 0===t?void 0:t.max_budget)||null,tpm_limit:(null==n?void 0:null===(l=n.litellm_budget_table)||void 0===l?void 0:l.tpm_limit)||null,rpm_limit:(null==n?void 0:null===(i=n.litellm_budget_table)||void 0===i?void 0:i.rpm_limit)||null}),r(!0)},className:"cursor-pointer hover:text-blue-600"}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>l(e),className:"cursor-pointer hover:text-red-600"})]})})]},i))})]})})}),(0,c.jsx)(b.Z,{onClick:()=>i(!0),children:"Add Member"})]})},tx=t(85180),th=t(89245),tp=t(78355);let tg={"/key/generate":"Member can generate a virtual key for this team","/key/service-account/generate":"Member can generate a service account key (not belonging to any user) for this team","/key/update":"Member can update a virtual key belonging to this team","/key/delete":"Member can delete a virtual key belonging to this team","/key/info":"Member can get info about a virtual key belonging to this team","/key/regenerate":"Member can regenerate a virtual key belonging to this team","/key/{key_id}/regenerate":"Member can regenerate a virtual key belonging to this team","/key/list":"Member can list virtual keys belonging to this team","/key/block":"Member can block a virtual key belonging to this team","/key/unblock":"Member can unblock a virtual key belonging to this team"},tj=e=>e.includes("/info")||e.includes("/list")?"GET":"POST",tf=e=>{let s=tj(e),t=tg[e];if(!t){for(let[s,l]of Object.entries(tg))if(e.includes(s)){t=l;break}}return t||(t="Access ".concat(e)),{method:s,endpoint:e,description:t,route:e}};var tv=e=>{let{teamId:s,accessToken:t,canEditTeam:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)(!0),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),g=async()=>{try{if(m(!0),!t)return;let e=await (0,j.getTeamPermissionsCall)(t,s),l=e.all_available_permissions||[];r(l);let a=e.team_member_permissions||[];n(a),p(!1)}catch(e){eo.Z.fromBackend("Failed to load permissions"),console.error("Error fetching permissions:",e)}finally{m(!1)}};(0,d.useEffect)(()=>{g()},[s,t]);let f=(e,s)=>{n(s?[...i,e]:i.filter(s=>s!==e)),p(!0)},v=async()=>{try{if(!t)return;x(!0),await (0,j.teamPermissionsUpdateCall)(t,s,i),eo.Z.success("Permissions updated successfully"),p(!1)}catch(e){eo.Z.fromBackend("Failed to update permissions"),console.error("Error updating permissions:",e)}finally{x(!1)}};if(o)return(0,c.jsx)("div",{className:"p-6 text-center",children:"Loading permissions..."});let y=a.length>0;return(0,c.jsxs)(G.Z,{className:"bg-white shadow-md rounded-md p-6",children:[(0,c.jsxs)("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center border-b pb-4 mb-6",children:[(0,c.jsx)(S.Z,{className:"mb-2 sm:mb-0",children:"Member Permissions"}),l&&h&&(0,c.jsxs)("div",{className:"flex gap-3",children:[(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(th.Z,{}),onClick:()=>{g()},children:"Reset"}),(0,c.jsxs)(b.Z,{onClick:v,loading:u,className:"flex items-center gap-2",children:[(0,c.jsx)(tp.Z,{})," Save Changes"]})]})]}),(0,c.jsx)(k.Z,{className:"mb-6 text-gray-600",children:"Control what team members can do when they are not team admins."}),y?(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:" min-w-full",children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Method"}),(0,c.jsx)(sq.Z,{children:"Endpoint"}),(0,c.jsx)(sq.Z,{children:"Description"}),(0,c.jsx)(sq.Z,{className:"sticky right-0 bg-white shadow-[-4px_0_4px_-4px_rgba(0,0,0,0.1)] text-center",children:"Allow Access"})]})}),(0,c.jsx)(sR.Z,{children:a.map(e=>{let s=tf(e);return(0,c.jsxs)(sV.Z,{className:"hover:bg-gray-50 transition-colors",children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)("span",{className:"px-2 py-1 rounded text-xs font-medium ".concat("GET"===s.method?"bg-blue-100 text-blue-800":"bg-green-100 text-green-800"),children:s.method})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)("span",{className:"font-mono text-sm text-gray-800",children:s.endpoint})}),(0,c.jsx)(sz.Z,{className:"text-gray-700",children:s.description}),(0,c.jsx)(sz.Z,{className:"sticky right-0 bg-white shadow-[-4px_0_4px_-4px_rgba(0,0,0,0.1)] text-center",children:(0,c.jsx)(eR.Z,{checked:i.includes(e),onChange:s=>f(e,s.target.checked),disabled:!l})})]},e)})})]})}):(0,c.jsx)("div",{className:"py-12",children:(0,c.jsx)(tx.Z,{description:"No permissions available"})})]})},ty=t(42264),tb=e=>{var s,t,l;let{visible:a,onCancel:r,onSubmit:i,initialData:n,mode:o,config:m}=e,[u]=A.Z.useForm();console.log("Initial Data:",n),(0,d.useEffect)(()=>{if(a){if("edit"===o&&n){let e={...n,role:n.role||m.defaultRole,max_budget_in_team:n.max_budget_in_team||null,tpm_limit:n.tpm_limit||null,rpm_limit:n.rpm_limit||null};console.log("Setting form values:",e),u.setFieldsValue(e)}else{var e;u.resetFields(),u.setFieldsValue({role:m.defaultRole||(null===(e=m.roleOptions[0])||void 0===e?void 0:e.value)})}}},[a,n,o,u,m.defaultRole,m.roleOptions]);let x=async e=>{try{let s=Object.entries(e).reduce((e,s)=>{let[t,l]=s;if("string"==typeof l){let s=l.trim();return""===s&&("max_budget_in_team"===t||"tpm_limit"===t||"rpm_limit"===t)?{...e,[t]:null}:{...e,[t]:s}}return{...e,[t]:l}},{});console.log("Submitting form data:",s),i(s),u.resetFields()}catch(e){console.error("Form submission error:",e)}},h=e=>{switch(e.type){case"input":return(0,c.jsx)(_.Z,{placeholder:e.placeholder});case"numerical":return(0,c.jsx)(O,{step:e.step||1,min:e.min||0,style:{width:"100%"},placeholder:e.placeholder||"Enter a numerical value"});case"select":var s;return(0,c.jsx)(e9.Z,{children:null===(s=e.options)||void 0===s?void 0:s.map(e=>(0,c.jsx)(ei.Z,{value:e.value,children:e.label},e.value))});default:return null}};return(0,c.jsx)(T.Z,{title:m.title||("add"===o?"Add Member":"Edit Member"),open:a,width:1e3,footer:null,onCancel:r,children:(0,c.jsxs)(A.Z,{form:u,onFinish:x,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[m.showEmail&&(0,c.jsx)(A.Z.Item,{label:"Email",name:"user_email",className:"mb-4",rules:[{type:"email",message:"Please enter a valid email!"}],children:(0,c.jsx)(_.Z,{placeholder:"user@example.com"})}),m.showEmail&&m.showUserId&&(0,c.jsx)("div",{className:"text-center mb-4",children:(0,c.jsx)(k.Z,{children:"OR"})}),m.showUserId&&(0,c.jsx)(A.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,c.jsx)(_.Z,{placeholder:"user_123"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{children:"Role"}),"edit"===o&&n&&(0,c.jsxs)("span",{className:"text-gray-500 text-sm",children:["(Current: ",(t=n.role,(null===(l=m.roleOptions.find(e=>e.value===t))||void 0===l?void 0:l.label)||t),")"]})]}),name:"role",className:"mb-4",rules:[{required:!0,message:"Please select a role!"}],children:(0,c.jsx)(e9.Z,{children:"edit"===o&&n?[...m.roleOptions.filter(e=>e.value===n.role),...m.roleOptions.filter(e=>e.value!==n.role)].map(e=>(0,c.jsx)(ei.Z,{value:e.value,children:e.label},e.value)):m.roleOptions.map(e=>(0,c.jsx)(ei.Z,{value:e.value,children:e.label},e.value))})}),null===(s=m.additionalFields)||void 0===s?void 0:s.map(e=>(0,c.jsx)(A.Z.Item,{label:e.label,name:e.name,className:"mb-4",rules:e.rules,children:h(e)},e.name)),(0,c.jsxs)("div",{className:"text-right mt-6",children:[(0,c.jsx)(L.ZP,{onClick:r,className:"mr-2",children:"Cancel"}),(0,c.jsx)(L.ZP,{type:"default",htmlType:"submit",children:"add"===o?"Add Member":"Save Changes"})]})]})})},t_=e=>{let{isVisible:s,onCancel:t,onSubmit:l,accessToken:a,title:r="Add Team Member",roles:i=[{label:"admin",value:"admin",description:"Admin role. Can create team keys, add members, and manage settings."},{label:"user",value:"user",description:"User role. Can view team info, but not manage it."}],defaultRole:n="user"}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)("user_email"),f=async(e,s)=>{if(!e){u([]);return}h(!0);try{let t=new URLSearchParams;if(t.append(s,e),null==a)return;let l=(await (0,j.userFilterUICall)(a,t)).map(e=>({label:"user_email"===s?"".concat(e.user_email):"".concat(e.user_id),value:"user_email"===s?e.user_email:e.user_id,user:e}));u(l)}catch(e){console.error("Error fetching users:",e)}finally{h(!1)}},v=(0,d.useCallback)(eC()((e,s)=>f(e,s),300),[]),y=(e,s)=>{g(s),v(e,s)},b=(e,s)=>{let t=s.user;o.setFieldsValue({user_email:t.user_email,user_id:t.user_id,role:o.getFieldValue("role")})};return(0,c.jsx)(T.Z,{title:r,open:s,onCancel:()=>{o.resetFields(),u([]),t()},footer:null,width:800,children:(0,c.jsxs)(A.Z,{form:o,onFinish:l,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",initialValues:{role:n},children:[(0,c.jsx)(A.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,c.jsx)(I.default,{showSearch:!0,className:"w-full",placeholder:"Search by email",filterOption:!1,onSearch:e=>y(e,"user_email"),onSelect:(e,s)=>b(e,s),options:"user_email"===p?m:[],loading:x,allowClear:!0})}),(0,c.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,c.jsx)(A.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,c.jsx)(I.default,{showSearch:!0,className:"w-full",placeholder:"Search by user ID",filterOption:!1,onSearch:e=>y(e,"user_id"),onSelect:(e,s)=>b(e,s),options:"user_id"===p?m:[],loading:x,allowClear:!0})}),(0,c.jsx)(A.Z.Item,{label:"Member Role",name:"role",className:"mb-4",children:(0,c.jsx)(I.default,{defaultValue:n,children:i.map(e=>(0,c.jsx)(I.default.Option,{value:e.value,children:(0,c.jsxs)(B.Z,{title:e.description,children:[(0,c.jsx)("span",{className:"font-medium",children:e.label}),(0,c.jsxs)("span",{className:"ml-2 text-gray-500 text-sm",children:["- ",e.description]})]})},e.value))})}),(0,c.jsx)("div",{className:"text-right mt-4",children:(0,c.jsx)(L.ZP,{type:"default",htmlType:"submit",children:"Add Member"})})]})})},tN=e=>{var s,t,l,a,r,i,n,o,m,u,x,h,p,g,f,v;let{teamId:N,onClose:Z,accessToken:w,is_team_admin:C,is_proxy_admin:T,userModels:E,editTeam:M,premiumUser:D=!1,onUpdate:R}=e,[z,q]=(0,d.useState)(null),[K,H]=(0,d.useState)(!0),[Y,J]=(0,d.useState)(!1),[W]=A.Z.useForm(),[$,Q]=(0,d.useState)(!1),[X,ee]=(0,d.useState)(null),[es,et]=(0,d.useState)(!1),[el,ea]=(0,d.useState)([]),[er,ei]=(0,d.useState)(!1),[en,ec]=(0,d.useState)({}),[ed,em]=(0,d.useState)([]);console.log("userModels in team info",E);let eu=C||T,ex=async()=>{try{if(H(!0),!w)return;let e=await (0,j.teamInfoCall)(w,N);q(e)}catch(e){eo.Z.fromBackend("Failed to load team information"),console.error("Error fetching team info:",e)}finally{H(!1)}};(0,d.useEffect)(()=>{ex()},[N,w]),(0,d.useEffect)(()=>{(async()=>{try{if(!w)return;let e=(await (0,j.getGuardrailsList)(w)).guardrails.map(e=>e.guardrail_name);em(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})()},[w]);let eh=async e=>{try{if(null==w)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role};await (0,j.teamMemberAddCall)(w,N,s),eo.Z.success("Team member added successfully"),J(!1),W.resetFields();let t=await (0,j.teamInfoCall)(w,N);q(t),R(t)}catch(a){var s,t,l;let e="Failed to add team member";(null==a?void 0:null===(l=a.raw)||void 0===l?void 0:null===(t=l.detail)||void 0===t?void 0:null===(s=t.error)||void 0===s?void 0:s.includes("Assigning team admins is a premium feature"))?e="Assigning admins is an enterprise-only feature. Please upgrade your LiteLLM plan to enable this.":(null==a?void 0:a.message)&&(e=a.message),eo.Z.fromBackend(e),console.error("Error adding team member:",a)}},ep=async e=>{try{if(null==w)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role,max_budget_in_team:e.max_budget_in_team,tpm_limit:e.tpm_limit,rpm_limit:e.rpm_limit};console.log("Updating member with values:",s),ty.ZP.destroy(),await (0,j.teamMemberUpdateCall)(w,N,s),eo.Z.success("Team member updated successfully"),Q(!1);let t=await (0,j.teamInfoCall)(w,N);q(t),R(t)}catch(l){var s,t;let e="Failed to update team member";(null==l?void 0:null===(t=l.raw)||void 0===t?void 0:null===(s=t.detail)||void 0===s?void 0:s.includes("Assigning team admins is a premium feature"))?e="Assigning admins is an enterprise-only feature. Please upgrade your LiteLLM plan to enable this.":(null==l?void 0:l.message)&&(e=l.message),Q(!1),ty.ZP.destroy(),eo.Z.fromBackend(e),console.error("Error updating team member:",l)}},eg=async e=>{try{if(null==w)return;await (0,j.teamMemberDeleteCall)(w,N,e),eo.Z.success("Team member removed successfully");let s=await (0,j.teamInfoCall)(w,N);q(s),R(s)}catch(e){eo.Z.fromBackend("Failed to remove team member"),console.error("Error removing team member:",e)}},ej=async e=>{try{if(!w)return;let s={};try{s=e.metadata?JSON.parse(e.metadata):{}}catch(e){eo.Z.fromBackend("Invalid JSON in metadata field");return}let t=e=>null==e||"string"==typeof e&&""===e.trim()||"number"==typeof e&&Number.isNaN(e)?null:e,l={team_id:N,team_alias:e.team_alias,models:e.models,tpm_limit:t(e.tpm_limit),rpm_limit:t(e.rpm_limit),max_budget:e.max_budget,budget_duration:e.budget_duration,metadata:{...s,guardrails:e.guardrails||[],logging:e.logging_settings||[]},organization_id:e.organization_id};void 0!==e.team_member_budget&&(l.team_member_budget=Number(e.team_member_budget)),void 0!==e.team_member_key_duration&&(l.team_member_key_duration=e.team_member_key_duration),(void 0!==e.team_member_tpm_limit||void 0!==e.team_member_rpm_limit)&&(l.team_member_tpm_limit=t(e.team_member_tpm_limit),l.team_member_rpm_limit=t(e.team_member_rpm_limit));let{servers:a,accessGroups:r}=e.mcp_servers_and_groups||{servers:[],accessGroups:[]},i=e.mcp_tool_permissions||{};(a&&a.length>0||r&&r.length>0||Object.keys(i).length>0)&&(l.object_permission={},a&&a.length>0&&(l.object_permission.mcp_servers=a),r&&r.length>0&&(l.object_permission.mcp_access_groups=r),Object.keys(i).length>0&&(l.object_permission.mcp_tool_permissions=i)),delete e.mcp_servers_and_groups,delete e.mcp_tool_permissions,await (0,j.teamUpdateCall)(w,l),eo.Z.success("Team settings updated successfully"),et(!1),ex()}catch(e){console.error("Error updating team:",e)}};if(K)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!(null==z?void 0:z.team_info))return(0,c.jsx)("div",{className:"p-4",children:"Team not found"});let{team_info:ef}=z,ev=async(e,s)=>{await eM(e)&&(ec(e=>({...e,[s]:!0})),setTimeout(()=>{ec(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:Z,className:"mb-4",children:"Back to Teams"}),(0,c.jsx)(S.Z,{children:ef.team_alias}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:ef.team_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:en["team-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>ev(ef.team_id,"team-id"),className:"left-2 z-10 transition-all duration-200 ".concat(en["team-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:M?3:0,children:[(0,c.jsx)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),...eu?[(0,c.jsx)(ss.Z,{children:"Members"},"members"),(0,c.jsx)(ss.Z,{children:"Member Permissions"},"member-permissions"),(0,c.jsx)(ss.Z,{children:"Settings"},"settings")]:[]]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Budget Status"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eP(ef.spend,4)]}),(0,c.jsxs)(k.Z,{children:["of ",null===ef.max_budget?"Unlimited":"$".concat(eP(ef.max_budget,4))]}),ef.budget_duration&&(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Reset: ",ef.budget_duration]}),(0,c.jsx)("br",{}),ef.team_member_budget_table&&(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Team Member Budget: $",eP(ef.team_member_budget_table.max_budget,4)]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Rate Limits"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["TPM: ",ef.tpm_limit||"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",ef.rpm_limit||"Unlimited"]}),ef.max_parallel_requests&&(0,c.jsxs)(k.Z,{children:["Max Parallel Requests: ",ef.max_parallel_requests]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Models"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:0===ef.models.length?(0,c.jsx)(se.Z,{color:"red",children:"All proxy models"}):ef.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Virtual Keys"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["User Keys: ",z.keys.filter(e=>e.user_id).length]}),(0,c.jsxs)(k.Z,{children:["Service Account Keys: ",z.keys.filter(e=>!e.user_id).length]}),(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Total: ",z.keys.length]})]})]}),(0,c.jsx)(sy,{objectPermission:ef.object_permission,variant:"card",accessToken:w}),(0,c.jsx)(sb,{loggingConfigs:(null===(s=ef.metadata)||void 0===s?void 0:s.logging)||[],disabledCallbacks:[],variant:"card"})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(tu,{teamData:z,canEditTeam:eu,handleMemberDelete:eg,setSelectedEditMember:ee,setIsEditMemberModalVisible:Q,setIsAddMemberModalVisible:J})}),eu&&(0,c.jsx)(sa.Z,{children:(0,c.jsx)(tv,{teamId:N,accessToken:w,canEditTeam:eu})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{className:"overflow-y-auto max-h-[65vh]",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Team Settings"}),eu&&!es&&(0,c.jsx)(b.Z,{onClick:()=>et(!0),children:"Edit Settings"})]}),es?(0,c.jsxs)(A.Z,{form:W,onFinish:ej,initialValues:{...ef,team_alias:ef.team_alias,models:ef.models,tpm_limit:ef.tpm_limit,rpm_limit:ef.rpm_limit,max_budget:ef.max_budget,budget_duration:ef.budget_duration,team_member_tpm_limit:null===(t=ef.team_member_budget_table)||void 0===t?void 0:t.tpm_limit,team_member_rpm_limit:null===(l=ef.team_member_budget_table)||void 0===l?void 0:l.rpm_limit,guardrails:(null===(a=ef.metadata)||void 0===a?void 0:a.guardrails)||[],metadata:ef.metadata?JSON.stringify((e=>{let{logging:s,...t}=e;return t})(ef.metadata),null,2):"",logging_settings:(null===(r=ef.metadata)||void 0===r?void 0:r.logging)||[],organization_id:ef.organization_id,vector_stores:(null===(i=ef.object_permission)||void 0===i?void 0:i.vector_stores)||[],mcp_servers:(null===(n=ef.object_permission)||void 0===n?void 0:n.mcp_servers)||[],mcp_access_groups:(null===(o=ef.object_permission)||void 0===o?void 0:o.mcp_access_groups)||[],mcp_servers_and_groups:{servers:(null===(m=ef.object_permission)||void 0===m?void 0:m.mcp_servers)||[],accessGroups:(null===(u=ef.object_permission)||void 0===u?void 0:u.mcp_access_groups)||[]},mcp_tool_permissions:(null===(x=ef.object_permission)||void 0===x?void 0:x.mcp_tool_permissions)||{}},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Team Name",name:"team_alias",rules:[{required:!0,message:"Please input a team name"}],children:(0,c.jsx)(P.default,{type:""})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),Array.from(new Set(E)).map((e,s)=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},s))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Budget (USD)",name:"team_member_budget",tooltip:"This is the individual budget for a user in the team.",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Key Duration (eg: 1d, 1mo)",name:"team_member_key_duration",tooltip:"Set a limit to the duration of a team member's key. Format: 30s (seconds), 30m (minutes), 30h (hours), 30d (days), 1mo (month)",children:(0,c.jsx)(_.Z,{placeholder:"e.g., 30d"})}),(0,c.jsx)(A.Z.Item,{label:"Team Member TPM Limit",name:"team_member_tpm_limit",tooltip:"Default tokens per minute limit for an individual team member. This limit applies to all requests the user makes within this team. Can be overridden per member.",children:(0,c.jsx)(O,{step:1,style:{width:"100%"},placeholder:"e.g., 1000"})}),(0,c.jsx)(A.Z.Item,{label:"Team Member RPM Limit",name:"team_member_rpm_limit",tooltip:"Default requests per minute limit for an individual team member. This limit applies to all requests the user makes within this team. Can be overridden per member.",children:(0,c.jsx)(O,{step:1,style:{width:"100%"},placeholder:"e.g., 100"})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Setup your first guardrail",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",help:"Select existing guardrails or enter new ones",children:(0,c.jsx)(I.default,{mode:"tags",placeholder:"Select or enter guardrails",options:ed.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:"Vector Stores",name:"vector_stores",children:(0,c.jsx)(U,{onChange:e=>W.setFieldValue("vector_stores",e),value:W.getFieldValue("vector_stores"),accessToken:w||"",placeholder:"Select vector stores"})}),(0,c.jsx)(A.Z.Item,{label:"MCP Servers / Access Groups",name:"mcp_servers_and_groups",children:(0,c.jsx)(eD,{onChange:e=>W.setFieldValue("mcp_servers_and_groups",e),value:W.getFieldValue("mcp_servers_and_groups"),accessToken:w||"",placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{name:"mcp_tool_permissions",initialValue:{},hidden:!0,children:(0,c.jsx)(P.default,{type:"hidden"})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.mcp_servers_and_groups!==s.mcp_servers_and_groups||e.mcp_tool_permissions!==s.mcp_tool_permissions,children:()=>{var e;return(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsx)(eU,{accessToken:w||"",selectedServers:(null===(e=W.getFieldValue("mcp_servers_and_groups"))||void 0===e?void 0:e.servers)||[],toolPermissions:W.getFieldValue("mcp_tool_permissions")||{},onChange:e=>W.setFieldsValue({mcp_tool_permissions:e})})})}}),(0,c.jsx)(A.Z.Item,{label:"Organization ID",name:"organization_id",children:(0,c.jsx)(P.default,{type:""})}),(0,c.jsx)(A.Z.Item,{label:"Logging Settings",name:"logging_settings",children:(0,c.jsx)(so,{value:W.getFieldValue("logging_settings"),onChange:e=>W.setFieldValue("logging_settings",e)})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:10})}),(0,c.jsx)("div",{className:"sticky z-10 bg-white p-4 border-t border-gray-200 bottom-[-1.5rem] inset-x-[-1.5rem]",children:(0,c.jsxs)("div",{className:"flex justify-end items-center gap-2",children:[(0,c.jsx)(L.ZP,{htmlType:"button",onClick:()=>et(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team Name"}),(0,c.jsx)("div",{children:ef.team_alias})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team ID"}),(0,c.jsx)("div",{className:"font-mono",children:ef.team_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:new Date(ef.created_at).toLocaleString()})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:ef.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Rate Limits"}),(0,c.jsxs)("div",{children:["TPM: ",ef.tpm_limit||"Unlimited"]}),(0,c.jsxs)("div",{children:["RPM: ",ef.rpm_limit||"Unlimited"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team Budget"}),(0,c.jsxs)("div",{children:["Max Budget:"," ",null!==ef.max_budget?"$".concat(eP(ef.max_budget,4)):"No Limit"]}),(0,c.jsxs)("div",{children:["Budget Reset: ",ef.budget_duration||"Never"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["Team Member Settings"," ",(0,c.jsx)(B.Z,{title:"These are limits on individual team members",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),(0,c.jsxs)("div",{children:["Max Budget: ",(null===(h=ef.team_member_budget_table)||void 0===h?void 0:h.max_budget)||"No Limit"]}),(0,c.jsxs)("div",{children:["Key Duration: ",(null===(p=ef.metadata)||void 0===p?void 0:p.team_member_key_duration)||"No Limit"]}),(0,c.jsxs)("div",{children:["TPM Limit: ",(null===(g=ef.team_member_budget_table)||void 0===g?void 0:g.tpm_limit)||"No Limit"]}),(0,c.jsxs)("div",{children:["RPM Limit: ",(null===(f=ef.team_member_budget_table)||void 0===f?void 0:f.rpm_limit)||"No Limit"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization ID"}),(0,c.jsx)("div",{children:ef.organization_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Status"}),(0,c.jsx)(se.Z,{color:ef.blocked?"red":"green",children:ef.blocked?"Blocked":"Active"})]}),(0,c.jsx)(sy,{objectPermission:ef.object_permission,variant:"inline",className:"pt-4 border-t border-gray-200",accessToken:w}),(0,c.jsx)(sb,{loggingConfigs:(null===(v=ef.metadata)||void 0===v?void 0:v.logging)||[],disabledCallbacks:[],variant:"inline",className:"pt-4 border-t border-gray-200"})]})]})})]})]}),(0,c.jsx)(tb,{visible:$,onCancel:()=>Q(!1),onSubmit:ep,initialData:X,mode:"edit",config:{title:"Edit Member",showEmail:!0,showUserId:!0,roleOptions:[{label:"Admin",value:"admin"},{label:"User",value:"user"}],additionalFields:[{name:"max_budget_in_team",label:(0,c.jsxs)("span",{children:["Team Member Budget (USD)"," ",(0,c.jsx)(B.Z,{title:"Maximum amount in USD this member can spend within this team. This is separate from any global user budget limits",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),type:"numerical",step:.01,min:0,placeholder:"Budget limit for this member within this team"},{name:"tpm_limit",label:(0,c.jsxs)("span",{children:["Team Member TPM Limit"," ",(0,c.jsx)(B.Z,{title:"Maximum tokens per minute this member can use within this team. This is separate from any global user TPM limit",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),type:"numerical",step:1,min:0,placeholder:"Tokens per minute limit for this member in this team"},{name:"rpm_limit",label:(0,c.jsxs)("span",{children:["Team Member RPM Limit"," ",(0,c.jsx)(B.Z,{title:"Maximum requests per minute this member can make within this team. This is separate from any global user RPM limit",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),type:"numerical",step:1,min:0,placeholder:"Requests per minute limit for this member in this team"}]}}),(0,c.jsx)(t_,{isVisible:Y,onCancel:()=>J(!1),onSubmit:eh,accessToken:w})]})},tZ=t(45589);let{Title:tw,Link:tk}=en.default;var tS=e=>{let{isVisible:s,onCancel:t,onAddCredential:l,existingCredential:a,setIsCredentialModalOpen:r}=e,[i]=A.Z.useForm();return console.log("existingCredential in add credentials tab: ".concat(JSON.stringify(a))),(0,c.jsx)(T.Z,{title:"Reuse Credentials",visible:s,onCancel:()=>{t(),i.resetFields()},footer:null,width:600,children:(0,c.jsxs)(A.Z,{form:i,onFinish:e=>{l(e),i.resetFields(),r(!1)},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Credential Name:",name:"credential_name",rules:[{required:!0,message:"Credential name is required"}],initialValue:null==a?void 0:a.credential_name,children:(0,c.jsx)(eW.o,{placeholder:"Enter a friendly name for these credentials"})}),Object.entries((null==a?void 0:a.credential_values)||{}).map(e=>{let[s,t]=e;return(0,c.jsx)(A.Z.Item,{label:s,name:s,initialValue:t,children:(0,c.jsx)(eW.o,{placeholder:"Enter ".concat(s),disabled:!0})},s)}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(tk,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{children:[(0,c.jsx)(L.ZP,{onClick:()=>{t(),i.resetFields()},style:{marginRight:10},children:"Cancel"}),(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Reuse Credentials"})]})]})]})})},tC=t(45246),tI=t(96473);let{Text:tA}=en.default;var tT=e=>{let{form:s,showCacheControl:t,onCacheControlChange:l}=e,a=e=>{let t=s.getFieldValue("litellm_extra_params");try{let l=t?JSON.parse(t):{};e.length>0?l.cache_control_injection_points=e:delete l.cache_control_injection_points,Object.keys(l).length>0?s.setFieldValue("litellm_extra_params",JSON.stringify(l,null,2)):s.setFieldValue("litellm_extra_params","")}catch(e){console.error("Error updating cache control points:",e)}};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Cache Control Injection Points",name:"cache_control",valuePropName:"checked",className:"mb-4",tooltip:"Tell litellm where to inject cache control checkpoints. You can specify either by role (to apply to all messages of that role) or by specific message index.",children:(0,c.jsx)(eJ.Z,{onChange:l,className:"bg-gray-600"})}),t&&(0,c.jsxs)("div",{className:"ml-6 pl-4 border-l-2 border-gray-200",children:[(0,c.jsx)(tA,{className:"text-sm text-gray-500 block mb-4",children:"Providers like Anthropic, Bedrock API require users to specify where to inject cache control checkpoints, litellm can automatically add them for you as a cost saving feature."}),(0,c.jsx)(A.Z.List,{name:"cache_control_injection_points",initialValue:[{location:"message"}],children:(e,t)=>{let{add:l,remove:r}=t;return(0,c.jsxs)(c.Fragment,{children:[e.map((t,l)=>(0,c.jsxs)("div",{className:"flex items-center mb-4 gap-4",children:[(0,c.jsx)(A.Z.Item,{...t,label:"Type",name:[t.name,"location"],initialValue:"message",className:"mb-0",style:{width:"180px"},children:(0,c.jsx)(I.default,{disabled:!0,options:[{value:"message",label:"Message"}]})}),(0,c.jsx)(A.Z.Item,{...t,label:"Role",name:[t.name,"role"],className:"mb-0",style:{width:"180px"},tooltip:"LiteLLM will mark all messages of this role as cacheable",children:(0,c.jsx)(I.default,{placeholder:"Select a role",allowClear:!0,options:[{value:"user",label:"User"},{value:"system",label:"System"},{value:"assistant",label:"Assistant"}],onChange:()=>{a(s.getFieldValue("cache_control_points"))}})}),(0,c.jsx)(A.Z.Item,{...t,label:"Index",name:[t.name,"index"],className:"mb-0",style:{width:"180px"},tooltip:"(Optional) If set litellm will mark the message at this index as cacheable",children:(0,c.jsx)(O,{type:"number",placeholder:"Optional",step:1,min:0,onChange:()=>{a(s.getFieldValue("cache_control_points"))}})}),e.length>1&&(0,c.jsx)(tC.Z,{className:"text-red-500 cursor-pointer text-lg ml-12",onClick:()=>{r(t.name),setTimeout(()=>{a(s.getFieldValue("cache_control_points"))},0)}})]},t.key)),(0,c.jsx)(A.Z.Item,{children:(0,c.jsxs)("button",{type:"button",className:"flex items-center justify-center w-full border border-dashed border-gray-300 py-2 px-4 text-gray-600 hover:text-blue-600 hover:border-blue-300 transition-all rounded",onClick:()=>l(),children:[(0,c.jsx)(tI.Z,{className:"mr-2"}),"Add Injection Point"]})})]})}})]})]})},tE=t(44851),tL=t(67960),tP=t(70464);let{TextArea:tM}=P.default,{Panel:tO}=tE.default;var tD=e=>{let{modelInfo:s,value:t,onChange:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]);(0,d.useEffect)(()=>{if(null==t?void 0:t.routes){let e=t.routes.map((e,s)=>({id:e.id||"route-".concat(s,"-").concat(Date.now()),model:e.name||e.model||"",utterances:e.utterances||[],description:e.description||"",score_threshold:e.score_threshold||.5}));r(e),m(e.map(e=>e.id))}else r([]),m([])},[t]);let u=e=>{let s=a.filter(s=>s.id!==e);r(s),h(s),m(s=>s.filter(s=>s!==e))},x=(e,s,t)=>{let l=a.map(l=>l.id===e?{...l,[s]:t}:l);r(l),h(l)},h=e=>{let s={routes:e.map(e=>({name:e.model,utterances:e.utterances,description:e.description,score_threshold:e.score_threshold}))};null==l||l(s)},p=s.map(e=>({value:e.model_group,label:e.model_group}));return(0,c.jsxs)("div",{className:"w-full max-w-none",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6 w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold",children:"Routes Configuration"}),(0,c.jsx)(B.Z,{title:"Configure routing logic to automatically select the best model based on user input patterns",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsx)(L.ZP,{type:"primary",icon:(0,c.jsx)(tI.Z,{}),onClick:()=>{let e="route-".concat(Date.now()),s=[...a,{id:e,model:"",utterances:[],description:"",score_threshold:.5}];r(s),h(s),m(s=>[...s,e])},className:"bg-blue-600 hover:bg-blue-700",children:"Add Route"})]}),0===a.length?(0,c.jsx)("div",{className:"text-center py-12 text-gray-500 bg-gray-50 rounded-lg border-2 border-dashed border-gray-200 mb-6",children:(0,c.jsx)(k.Z,{children:"No routes configured. Click “Add Route” to get started."})}):(0,c.jsx)("div",{className:"space-y-3 mb-6 w-full",children:a.map((e,s)=>(0,c.jsx)(tL.Z,{className:"border border-gray-200 shadow-sm w-full",bodyStyle:{padding:0},children:(0,c.jsx)(tE.default,{ghost:!0,expandIcon:e=>{let{isActive:s}=e;return(0,c.jsx)(tP.Z,{rotate:s?180:0})},activeKey:o,onChange:e=>m(Array.isArray(e)?e:[e].filter(Boolean)),items:[{key:e.id,label:(0,c.jsxs)("div",{className:"flex justify-between items-center py-2",children:[(0,c.jsxs)(k.Z,{className:"font-medium text-base",children:["Route ",s+1,": ",e.model||"Unnamed"]}),(0,c.jsx)(L.ZP,{type:"text",danger:!0,icon:(0,c.jsx)(ep.Z,{}),onClick:s=>{s.stopPropagation(),u(e.id)},className:"mr-2"})]}),children:(0,c.jsxs)("div",{className:"px-6 pb-6 w-full",children:[(0,c.jsxs)("div",{className:"mb-4 w-full",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-2 block",children:"Model"}),(0,c.jsx)(I.default,{value:e.model,onChange:s=>x(e.id,"model",s),placeholder:"Select model",showSearch:!0,style:{width:"100%"},options:p})]}),(0,c.jsxs)("div",{className:"mb-4 w-full",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-2 block",children:"Description"}),(0,c.jsx)(tM,{value:e.description,onChange:s=>x(e.id,"description",s.target.value),placeholder:"Describe when this route should be used...",rows:2,style:{width:"100%"}})]}),(0,c.jsxs)("div",{className:"mb-4 w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium",children:"Score Threshold"}),(0,c.jsx)(B.Z,{title:"Minimum similarity score to route to this model (0-1)",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsx)(e8.Z,{value:e.score_threshold,onChange:s=>x(e.id,"score_threshold",s||0),min:0,max:1,step:.1,style:{width:"100%"},placeholder:"0.5"})]}),(0,c.jsxs)("div",{className:"w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium",children:"Example Utterances"}),(0,c.jsx)(B.Z,{title:"Training examples for this route. Type an utterance and press Enter to add it.",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500 mb-2",children:"Type an utterance and press Enter to add it. You can also paste multiple lines."}),(0,c.jsx)(I.default,{mode:"tags",value:e.utterances,onChange:s=>x(e.id,"utterances",s),placeholder:"Type an utterance and press Enter...",style:{width:"100%"},tokenSeparators:["\n"],maxTagCount:"responsive",allowClear:!0})]})]})}]})},e.id))}),(0,c.jsxs)("div",{className:"border-t pt-6 w-full",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4 w-full",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold",children:"JSON Preview"}),(0,c.jsx)(L.ZP,{type:"link",onClick:()=>n(!i),className:"text-blue-600 p-0",children:i?"Hide":"Show"})]}),i&&(0,c.jsx)(tL.Z,{className:"bg-gray-50 w-full",children:(0,c.jsx)("pre",{className:"text-sm overflow-auto max-h-64 w-full",children:JSON.stringify({routes:a.map(e=>({name:e.model,utterances:e.utterances,description:e.description,score_threshold:e.score_threshold}))},null,2)})})]})]})},tF=e=>{let{isVisible:s,onCancel:t,onSuccess:l,modelData:a,accessToken:r,userRole:i}=e,[n]=A.Z.useForm(),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)(!1),[b,N]=(0,d.useState)(null);(0,d.useEffect)(()=>{s&&a&&Z()},[s,a]),(0,d.useEffect)(()=>{let e=async()=>{if(r)try{let e=await (0,j.modelAvailableCall)(r,"","",!1,null,!0,!0);x(e.data.map(e=>e.id))}catch(e){console.error("Error fetching model access groups:",e)}},t=async()=>{if(r)try{let e=await eG(r);p(e)}catch(e){console.error("Error fetching model info:",e)}};s&&(e(),t())},[s,r]);let Z=()=>{try{var e,s,t,l,r,i;let o=null;(null===(e=a.litellm_params)||void 0===e?void 0:e.auto_router_config)&&(o="string"==typeof a.litellm_params.auto_router_config?JSON.parse(a.litellm_params.auto_router_config):a.litellm_params.auto_router_config),N(o),n.setFieldsValue({auto_router_name:a.model_name,auto_router_default_model:(null===(s=a.litellm_params)||void 0===s?void 0:s.auto_router_default_model)||"",auto_router_embedding_model:(null===(t=a.litellm_params)||void 0===t?void 0:t.auto_router_embedding_model)||"",model_access_group:(null===(l=a.model_info)||void 0===l?void 0:l.access_groups)||[]});let c=new Set(h.map(e=>e.model_group));f(!c.has(null===(r=a.litellm_params)||void 0===r?void 0:r.auto_router_default_model)),y(!c.has(null===(i=a.litellm_params)||void 0===i?void 0:i.auto_router_embedding_model))}catch(e){console.error("Error parsing auto router config:",e),eo.Z.fromBackend("Error loading auto router configuration")}},w=async()=>{try{m(!0);let e=await n.validateFields(),s={...a.litellm_params,auto_router_config:JSON.stringify(b),auto_router_default_model:e.auto_router_default_model,auto_router_embedding_model:e.auto_router_embedding_model||void 0},i={...a.model_info,access_groups:e.model_access_group||[]},o={model_name:e.auto_router_name,litellm_params:s,model_info:i};await (0,j.modelPatchUpdateCall)(r,o,a.model_info.id);let c={...a,model_name:e.auto_router_name,litellm_params:s,model_info:i};eo.Z.success("Auto router configuration updated successfully"),l(c),t()}catch(e){console.error("Error updating auto router:",e),eo.Z.fromBackend("Failed to update auto router configuration")}finally{m(!1)}},S=h.map(e=>({value:e.model_group,label:e.model_group}));return(0,c.jsx)(T.Z,{title:"Edit Auto Router Configuration",open:s,onCancel:t,footer:[(0,c.jsx)(L.ZP,{onClick:t,children:"Cancel"},"cancel"),(0,c.jsx)(L.ZP,{loading:o,onClick:w,children:"Save Changes"},"submit")],width:1e3,destroyOnClose:!0,children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsx)(k.Z,{className:"text-gray-600",children:"Edit the auto router configuration including routing logic, default models, and access settings."}),(0,c.jsxs)(A.Z,{form:n,layout:"vertical",className:"space-y-4",children:[(0,c.jsx)(A.Z.Item,{label:"Auto Router Name",name:"auto_router_name",rules:[{required:!0,message:"Auto router name is required"}],children:(0,c.jsx)(_.Z,{placeholder:"e.g., auto_router_1, smart_routing"})}),(0,c.jsx)("div",{className:"w-full",children:(0,c.jsx)(tD,{modelInfo:h,value:b,onChange:e=>{N(e)}})}),(0,c.jsx)(A.Z.Item,{label:"Default Model",name:"auto_router_default_model",rules:[{required:!0,message:"Default model is required"}],children:(0,c.jsx)(I.default,{placeholder:"Select a default model",onChange:e=>{f("custom"===e)},options:[...S,{value:"custom",label:"Enter custom model name"}],showSearch:!0})}),(0,c.jsx)(A.Z.Item,{label:"Embedding Model",name:"auto_router_embedding_model",children:(0,c.jsx)(I.default,{placeholder:"Select an embedding model (optional)",onChange:e=>{y("custom"===e)},options:[...S,{value:"custom",label:"Enter custom model name"}],showSearch:!0,allowClear:!0})}),"Admin"===i&&(0,c.jsx)(A.Z.Item,{label:"Model Access Groups",name:"model_access_group",tooltip:"Control who can access this auto router",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],options:u.map(e=>({value:e,label:e})),maxTagCount:"responsive",allowClear:!0})})]})]})})};function tR(e){var s,t,l,a,r,i,n,o,m,u,x,h,p,g,f,v,N,Z,w,C,E,M,D,F,R,z,U,q;let{modelId:K,onClose:H,modelData:Y,accessToken:J,userID:$,userRole:Q,editModel:X,setEditModalVisible:ee,setSelectedModel:es,onModelUpdate:et,modelAccessGroups:el}=e,[ea]=A.Z.useForm(),[er,ei]=(0,d.useState)(null),[en,ec]=(0,d.useState)(!1),[ed,em]=(0,d.useState)(!1),[eu,ex]=(0,d.useState)(!1),[eh,ep]=(0,d.useState)(!1),[eg,ej]=(0,d.useState)(!1),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)(!1),[e_,eN]=(0,d.useState)({}),[eZ,ew]=(0,d.useState)(!1),[ek,eS]=(0,d.useState)([]),eC="Admin"===Q||(null==Y?void 0:null===(s=Y.model_info)||void 0===s?void 0:s.created_by)===$,eI=(null==Y?void 0:null===(t=Y.litellm_params)||void 0===t?void 0:t.auto_router_config)!=null,eA=(null==Y?void 0:null===(l=Y.litellm_params)||void 0===l?void 0:l.litellm_credential_name)!=null&&(null==Y?void 0:null===(a=Y.litellm_params)||void 0===a?void 0:a.litellm_credential_name)!=void 0;console.log("usingExistingCredential, ",eA),console.log("modelData.litellm_params.litellm_credential_name, ",null==Y?void 0:null===(r=Y.litellm_params)||void 0===r?void 0:r.litellm_credential_name),(0,d.useEffect)(()=>{let e=async()=>{var e,s,t,l,a,r,i;if(!J)return;let n=await (0,j.modelInfoV1Call)(J,K);console.log("modelInfoResponse, ",n);let o=n.data[0];o&&!o.litellm_model_name&&(o={...o,litellm_model_name:null!==(i=null!==(r=null!==(a=null==o?void 0:null===(s=o.litellm_params)||void 0===s?void 0:s.litellm_model_name)&&void 0!==a?a:null==o?void 0:null===(t=o.litellm_params)||void 0===t?void 0:t.model)&&void 0!==r?r:null==o?void 0:null===(l=o.model_info)||void 0===l?void 0:l.key)&&void 0!==i?i:null}),ei(o),(null==o?void 0:null===(e=o.litellm_params)||void 0===e?void 0:e.cache_control_injection_points)&&eb(!0)},s=async()=>{if(J)try{let e=(await (0,j.getGuardrailsList)(J)).guardrails.map(e=>e.guardrail_name);eS(e)}catch(e){console.error("Failed to fetch guardrails:",e)}};(async()=>{if(console.log("accessToken, ",J),!J||eA)return;let e=await (0,j.credentialGetCall)(J,null,K);console.log("existingCredentialResponse, ",e),ev({credential_name:e.credential_name,credential_values:e.credential_values,credential_info:e.credential_info})})(),e(),s()},[J,K]);let eT=async e=>{var s;if(console.log("values, ",e),!J)return;let t={credential_name:e.credential_name,model_id:K,credential_info:{custom_llm_provider:null===(s=er.litellm_params)||void 0===s?void 0:s.custom_llm_provider}};eo.Z.info("Storing credential.."),console.log("credentialResponse, ",await (0,j.credentialCreateCall)(J,t)),eo.Z.success("Credential stored successfully")},eE=async e=>{try{var s;let t;if(!J)return;ep(!0),console.log("values.model_name, ",e.model_name);let l={...er.litellm_params,model:e.litellm_model_name,api_base:e.api_base,custom_llm_provider:e.custom_llm_provider,organization:e.organization,tpm:e.tpm,rpm:e.rpm,max_retries:e.max_retries,timeout:e.timeout,stream_timeout:e.stream_timeout,input_cost_per_token:e.input_cost/1e6,output_cost_per_token:e.output_cost/1e6};e.guardrails&&(l.guardrails=e.guardrails),e.cache_control&&(null===(s=e.cache_control_injection_points)||void 0===s?void 0:s.length)>0?l.cache_control_injection_points=e.cache_control_injection_points:delete l.cache_control_injection_points;try{t=e.model_info?JSON.parse(e.model_info):Y.model_info,e.model_access_group&&(t={...t,access_groups:e.model_access_group})}catch(e){eo.Z.fromBackend("Invalid JSON in Model Info");return}let a={model_name:e.model_name,litellm_params:l,model_info:t};await (0,j.modelPatchUpdateCall)(J,a,K);let r={...er,model_name:e.model_name,litellm_model_name:e.litellm_model_name,litellm_params:l,model_info:t};ei(r),et&&et(r),eo.Z.success("Model settings updated successfully"),ex(!1),ej(!1)}catch(e){console.error("Error updating model:",e),eo.Z.fromBackend("Failed to update model settings")}finally{ep(!1)}};if(!Y)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:H,className:"mb-4",children:"Back to Models"}),(0,c.jsx)(k.Z,{children:"Model not found"})]});let eL=async()=>{try{if(!J)return;await (0,j.modelDeleteCall)(J,K),eo.Z.success("Model deleted successfully"),et&&et({deleted:!0,model_info:{id:K}}),H()}catch(e){console.error("Error deleting the model:",e),eo.Z.fromBackend("Failed to delete model")}},eP=async(e,s)=>{await eM(e)&&(eN(e=>({...e,[s]:!0})),setTimeout(()=>{eN(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:H,className:"mb-4",children:"Back to Models"}),(0,c.jsxs)(S.Z,{children:["Public Model Name: ",ta(Y)]}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:Y.model_info.id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:e_["model-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>eP(Y.model_info.id,"model-id"),className:"left-2 z-10 transition-all duration-200 ".concat(e_["model-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)("div",{className:"flex gap-2",children:["Admin"===Q&&(0,c.jsx)(b.Z,{icon:tZ.Z,variant:"secondary",onClick:()=>em(!0),className:"flex items-center",children:"Re-use Credentials"}),eC&&(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>ec(!0),className:"flex items-center",children:"Delete Model"})]})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"Overview"}),(0,c.jsx)(ss.Z,{children:"Raw JSON"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6 mb-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Provider"}),(0,c.jsxs)("div",{className:"mt-2 flex items-center space-x-2",children:[Y.provider&&(0,c.jsx)("img",{src:(0,s0.dr)(Y.provider).logo,alt:"".concat(Y.provider," logo"),className:"w-4 h-4",onError:e=>{let s=e.target,t=s.parentElement;if(t){var l;let e=document.createElement("div");e.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=(null===(l=Y.provider)||void 0===l?void 0:l.charAt(0))||"-",t.replaceChild(e,s)}}}),(0,c.jsx)(S.Z,{children:Y.provider||"Not Set"})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"LiteLLM Model"}),(0,c.jsx)("div",{className:"mt-2 overflow-hidden",children:(0,c.jsx)(B.Z,{title:Y.litellm_model_name||"Not Set",children:(0,c.jsx)("div",{className:"break-all text-sm font-medium leading-relaxed cursor-pointer",children:Y.litellm_model_name||"Not Set"})})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Pricing"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["Input: $",Y.input_cost,"/1M tokens"]}),(0,c.jsxs)(k.Z,{children:["Output: $",Y.output_cost,"/1M tokens"]})]})]})]}),(0,c.jsxs)("div",{className:"mb-6 text-sm text-gray-500 flex items-center gap-x-6",children:[(0,c.jsxs)("div",{className:"flex items-center gap-x-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})}),"Created At"," ",Y.model_info.created_at?new Date(Y.model_info.created_at).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"Not Set"]}),(0,c.jsxs)("div",{className:"flex items-center gap-x-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})}),"Created By ",Y.model_info.created_by||"Not Set"]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Model Settings"}),(0,c.jsxs)("div",{className:"flex gap-2",children:[eI&&eC&&!eg&&(0,c.jsx)(b.Z,{variant:"primary",onClick:()=>ew(!0),className:"flex items-center",children:"Edit Auto Router"}),eC&&!eg&&(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>ej(!0),className:"flex items-center",children:"Edit Model"})]})]}),er?(0,c.jsx)(A.Z,{form:ea,onFinish:eE,initialValues:{model_name:er.model_name,litellm_model_name:er.litellm_model_name,api_base:er.litellm_params.api_base,custom_llm_provider:er.litellm_params.custom_llm_provider,organization:er.litellm_params.organization,tpm:er.litellm_params.tpm,rpm:er.litellm_params.rpm,max_retries:er.litellm_params.max_retries,timeout:er.litellm_params.timeout,stream_timeout:er.litellm_params.stream_timeout,input_cost:er.litellm_params.input_cost_per_token?1e6*er.litellm_params.input_cost_per_token:(null===(i=er.model_info)||void 0===i?void 0:i.input_cost_per_token)*1e6||null,output_cost:(null===(n=er.litellm_params)||void 0===n?void 0:n.output_cost_per_token)?1e6*er.litellm_params.output_cost_per_token:(null===(o=er.model_info)||void 0===o?void 0:o.output_cost_per_token)*1e6||null,cache_control:null!==(m=er.litellm_params)&&void 0!==m&&!!m.cache_control_injection_points,cache_control_injection_points:(null===(u=er.litellm_params)||void 0===u?void 0:u.cache_control_injection_points)||[],model_access_group:Array.isArray(null===(x=er.model_info)||void 0===x?void 0:x.access_groups)?er.model_info.access_groups:[],guardrails:Array.isArray(null===(h=er.litellm_params)||void 0===h?void 0:h.guardrails)?er.litellm_params.guardrails:[]},layout:"vertical",onValuesChange:()=>ex(!0),children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Model Name"}),eg?(0,c.jsx)(A.Z.Item,{name:"model_name",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter model name"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:er.model_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"LiteLLM Model Name"}),eg?(0,c.jsx)(A.Z.Item,{name:"litellm_model_name",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter LiteLLM model name"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:er.litellm_model_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Input Cost (per 1M tokens)"}),eg?(0,c.jsx)(A.Z.Item,{name:"input_cost",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter input cost"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null==er?void 0:null===(p=er.litellm_params)||void 0===p?void 0:p.input_cost_per_token)?((null===(g=er.litellm_params)||void 0===g?void 0:g.input_cost_per_token)*1e6).toFixed(4):(null==er?void 0:null===(f=er.model_info)||void 0===f?void 0:f.input_cost_per_token)?(1e6*er.model_info.input_cost_per_token).toFixed(4):null})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Output Cost (per 1M tokens)"}),eg?(0,c.jsx)(A.Z.Item,{name:"output_cost",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter output cost"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null==er?void 0:null===(v=er.litellm_params)||void 0===v?void 0:v.output_cost_per_token)?(1e6*er.litellm_params.output_cost_per_token).toFixed(4):(null==er?void 0:null===(N=er.model_info)||void 0===N?void 0:N.output_cost_per_token)?(1e6*er.model_info.output_cost_per_token).toFixed(4):null})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"API Base"}),eg?(0,c.jsx)(A.Z.Item,{name:"api_base",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter API base"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(Z=er.litellm_params)||void 0===Z?void 0:Z.api_base)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Custom LLM Provider"}),eg?(0,c.jsx)(A.Z.Item,{name:"custom_llm_provider",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter custom LLM provider"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(w=er.litellm_params)||void 0===w?void 0:w.custom_llm_provider)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization"}),eg?(0,c.jsx)(A.Z.Item,{name:"organization",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter organization"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(C=er.litellm_params)||void 0===C?void 0:C.organization)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"TPM (Tokens per Minute)"}),eg?(0,c.jsx)(A.Z.Item,{name:"tpm",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter TPM"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(E=er.litellm_params)||void 0===E?void 0:E.tpm)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"RPM (Requests per Minute)"}),eg?(0,c.jsx)(A.Z.Item,{name:"rpm",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter RPM"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(M=er.litellm_params)||void 0===M?void 0:M.rpm)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Max Retries"}),eg?(0,c.jsx)(A.Z.Item,{name:"max_retries",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter max retries"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(D=er.litellm_params)||void 0===D?void 0:D.max_retries)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Timeout (seconds)"}),eg?(0,c.jsx)(A.Z.Item,{name:"timeout",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter timeout"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(F=er.litellm_params)||void 0===F?void 0:F.timeout)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Stream Timeout (seconds)"}),eg?(0,c.jsx)(A.Z.Item,{name:"stream_timeout",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter stream timeout"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(R=er.litellm_params)||void 0===R?void 0:R.stream_timeout)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Model Access Groups"}),eg?(0,c.jsx)(A.Z.Item,{name:"model_access_group",className:"mb-0",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],maxTagCount:"responsive",allowClear:!0,style:{width:"100%"},options:null==el?void 0:el.map(e=>({value:e,label:e}))})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(z=er.model_info)||void 0===z?void 0:z.access_groups)?Array.isArray(er.model_info.access_groups)?er.model_info.access_groups.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:er.model_info.access_groups.map((e,s)=>(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-blue-100 text-blue-800",children:e},s))}):"No groups assigned":er.model_info.access_groups:"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Apply safety guardrails to this model to filter content or enforce policies",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),eg?(0,c.jsx)(A.Z.Item,{name:"guardrails",className:"mb-0",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing guardrails or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],maxTagCount:"responsive",allowClear:!0,style:{width:"100%"},options:ek.map(e=>({value:e,label:e}))})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(U=er.litellm_params)||void 0===U?void 0:U.guardrails)?Array.isArray(er.litellm_params.guardrails)?er.litellm_params.guardrails.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:er.litellm_params.guardrails.map((e,s)=>(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-green-100 text-green-800",children:e},s))}):"No guardrails assigned":er.litellm_params.guardrails:"Not Set"})]}),eg?(0,c.jsx)(tT,{form:ea,showCacheControl:ey,onCacheControlChange:e=>eb(e)}):(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Cache Control"}),(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(q=er.litellm_params)||void 0===q?void 0:q.cache_control_injection_points)?(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{children:"Enabled"}),(0,c.jsx)("div",{className:"mt-2",children:er.litellm_params.cache_control_injection_points.map((e,s)=>(0,c.jsxs)("div",{className:"text-sm text-gray-600 mb-1",children:["Location: ",e.location,",",e.role&&(0,c.jsxs)("span",{children:[" Role: ",e.role]}),void 0!==e.index&&(0,c.jsxs)("span",{children:[" Index: ",e.index]})]},s))})]}):"Disabled"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Model Info"}),eg?(0,c.jsx)(A.Z.Item,{name:"model_info",className:"mb-0",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{"gpt-4": 100, "claude-v1": 200}',defaultValue:JSON.stringify(Y.model_info,null,2)})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify(er.model_info,null,2)})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team ID"}),(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:Y.model_info.team_id||"Not Set"})]})]}),eg&&(0,c.jsxs)("div",{className:"mt-6 flex justify-end gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{ea.resetFields(),ex(!1),ej(!1)},children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",onClick:()=>ea.submit(),loading:eh,children:"Save Changes"})]})]})}):(0,c.jsx)(k.Z,{children:"Loading..."})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(G.Z,{children:(0,c.jsx)("pre",{className:"bg-gray-100 p-4 rounded text-xs overflow-auto",children:JSON.stringify(Y,null,2)})})})]})]}),en&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Model"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this model?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(L.ZP,{onClick:eL,className:"ml-2",danger:!0,children:"Delete"}),(0,c.jsx)(L.ZP,{onClick:()=>ec(!1),children:"Cancel"})]})]})]})}),ed&&!eA?(0,c.jsx)(tS,{isVisible:ed,onCancel:()=>em(!1),onAddCredential:eT,existingCredential:ef,setIsCredentialModalOpen:em}):(0,c.jsx)(T.Z,{open:ed,onCancel:()=>em(!1),title:"Using Existing Credential",children:(0,c.jsx)(k.Z,{children:Y.litellm_params.litellm_credential_name})}),(0,c.jsx)(tF,{isVisible:eZ,onCancel:()=>ew(!1),onSuccess:e=>{ei(e),et&&et(e)},modelData:er||Y,accessToken:J||"",userRole:Q||""})]})}var tz=e=>{let{selectedProvider:s,providerModels:t,getPlaceholder:l}=e,a=A.Z.useFormInstance(),r=e=>{let t=e.target.value,l=(a.getFieldValue("model_mappings")||[]).map(e=>"custom"===e.public_name||"custom"===e.litellm_model?s===s0.Cl.Azure?{public_name:t,litellm_model:"azure/".concat(t)}:{public_name:t,litellm_model:t}:e);a.setFieldsValue({model_mappings:l})};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(A.Z.Item,{label:"LiteLLM Model Name(s)",tooltip:"The model name LiteLLM will send to the LLM API",className:"mb-0",children:[(0,c.jsx)(A.Z.Item,{name:"model",rules:[{required:!0,message:"Please enter ".concat(s===s0.Cl.Azure?"a deployment name":"at least one model",".")}],noStyle:!0,children:s===s0.Cl.Azure||s===s0.Cl.OpenAI_Compatible||s===s0.Cl.Ollama?(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(_.Z,{placeholder:l(s),onChange:s===s0.Cl.Azure?e=>{let s=e.target.value,t=s?[{public_name:s,litellm_model:"azure/".concat(s)}]:[];a.setFieldsValue({model:s,model_mappings:t})}:void 0})}):t.length>0?(0,c.jsx)(I.default,{mode:"multiple",allowClear:!0,showSearch:!0,placeholder:"Select models",onChange:e=>{let t=Array.isArray(e)?e:[e];if(t.includes("all-wildcard"))a.setFieldsValue({model_name:void 0,model_mappings:[]});else if(JSON.stringify(a.getFieldValue("model"))!==JSON.stringify(t)){let e=t.map(e=>s===s0.Cl.Azure?{public_name:e,litellm_model:"azure/".concat(e)}:{public_name:e,litellm_model:e});a.setFieldsValue({model:t,model_mappings:e})}},optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{label:"Custom Model Name (Enter below)",value:"custom"},{label:"All ".concat(s," Models (Wildcard)"),value:"all-wildcard"},...t.map(e=>({label:e,value:e}))],style:{width:"100%"}}):(0,c.jsx)(_.Z,{placeholder:l(s)})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.model!==s.model,children:e=>{let{getFieldValue:t}=e,l=t("model")||[];return(Array.isArray(l)?l:[l]).includes("custom")&&(0,c.jsx)(A.Z.Item,{name:"custom_model_name",rules:[{required:!0,message:"Please enter a custom model name."}],className:"mt-2",children:(0,c.jsx)(_.Z,{placeholder:s===s0.Cl.Azure?"Enter Azure deployment name":"Enter custom model name",onChange:r})})}})]}),(0,c.jsxs)(s5.Z,{children:[(0,c.jsx)(s3.Z,{span:10}),(0,c.jsx)(s3.Z,{span:14,children:(0,c.jsx)(k.Z,{className:"mb-3 mt-1",children:s===s0.Cl.Azure?"Your deployment name will be saved as the public model name, and LiteLLM will use 'azure/deployment-name' internally":"The model name LiteLLM will send to the LLM API"})})]})]})},tU=t(67187);let tq=e=>{let{content:s,children:t,width:l="auto",className:a=""}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)("top"),m=(0,d.useRef)(null),u=()=>{if(m.current){let e=m.current.getBoundingClientRect(),s=e.top,t=window.innerHeight-e.bottom;s<300&&t>300?o("bottom"):o("top")}};return(0,c.jsxs)("div",{className:"relative inline-block",ref:m,children:[t||(0,c.jsx)(tU.Z,{className:"ml-1 text-gray-500 cursor-help",onMouseEnter:()=>{u(),i(!0)},onMouseLeave:()=>i(!1)}),r&&(0,c.jsxs)("div",{className:"absolute left-1/2 -translate-x-1/2 z-50 bg-black/90 text-white p-2 rounded-md text-sm font-normal shadow-lg ".concat(a),style:{["top"===n?"bottom":"top"]:"100%",width:l,marginBottom:"top"===n?"8px":"0",marginTop:"bottom"===n?"8px":"0"},children:[s,(0,c.jsx)("div",{className:"absolute left-1/2 -translate-x-1/2 w-0 h-0",style:{top:"top"===n?"100%":"auto",bottom:"bottom"===n?"100%":"auto",borderTop:"top"===n?"6px solid rgba(0, 0, 0, 0.9)":"6px solid transparent",borderBottom:"bottom"===n?"6px solid rgba(0, 0, 0, 0.9)":"6px solid transparent",borderLeft:"6px solid transparent",borderRight:"6px solid transparent"}})]})]})};var tV=()=>{let e=A.Z.useFormInstance(),[s,t]=(0,d.useState)(0),l=A.Z.useWatch("model",e)||[],a=Array.isArray(l)?l:[l],r=A.Z.useWatch("custom_model_name",e),i=!a.includes("all-wildcard"),n=A.Z.useWatch("custom_llm_provider",e);if((0,d.useEffect)(()=>{if(r&&a.includes("custom")){let s=(e.getFieldValue("model_mappings")||[]).map(e=>"custom"===e.public_name||"custom"===e.litellm_model?n===s0.Cl.Azure?{public_name:r,litellm_model:"azure/".concat(r)}:{public_name:r,litellm_model:r}:e);e.setFieldValue("model_mappings",s),t(e=>e+1)}},[r,a,n,e]),(0,d.useEffect)(()=>{if(a.length>0&&!a.includes("all-wildcard")){let s=e.getFieldValue("model_mappings")||[];if(s.length!==a.length||!a.every(e=>s.some(s=>"custom"===e?"custom"===s.litellm_model||s.litellm_model===r:n===s0.Cl.Azure?s.litellm_model==="azure/".concat(e):s.litellm_model===e))){let s=a.map(e=>"custom"===e&&r?n===s0.Cl.Azure?{public_name:r,litellm_model:"azure/".concat(r)}:{public_name:r,litellm_model:r}:n===s0.Cl.Azure?{public_name:e,litellm_model:"azure/".concat(e)}:{public_name:e,litellm_model:e});e.setFieldValue("model_mappings",s),t(e=>e+1)}}},[a,r,n,e]),!i)return null;let o=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"mb-2 font-normal",children:"The name you specify in your API calls to LiteLLM Proxy"}),(0,c.jsxs)("div",{className:"mb-2 font-normal",children:[(0,c.jsx)("strong",{children:"Example:"})," If you name your public model"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:"example-name"}),", and choose"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:"openai/qwen-plus-latest"})," as the LiteLLM model"]}),(0,c.jsxs)("div",{className:"mb-2 font-normal",children:[(0,c.jsx)("strong",{children:"Usage:"})," You make an API call to the LiteLLM proxy with"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:'model = "example-name"'})]}),(0,c.jsxs)("div",{className:"font-normal",children:[(0,c.jsx)("strong",{children:"Result:"})," LiteLLM sends"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:"qwen-plus-latest"})," to the provider"]})]}),m=(0,c.jsx)("div",{children:"The model name LiteLLM will send to the LLM API"}),u=[{title:(0,c.jsxs)("span",{className:"flex items-center",children:["Public Model Name",(0,c.jsx)(tq,{content:o,width:"500px"})]}),dataIndex:"public_name",key:"public_name",render:(s,t,l)=>(0,c.jsx)(eW.o,{value:s,onChange:s=>{let t=[...e.getFieldValue("model_mappings")];t[l].public_name=s.target.value,e.setFieldValue("model_mappings",t)}})},{title:(0,c.jsxs)("span",{className:"flex items-center",children:["LiteLLM Model Name",(0,c.jsx)(tq,{content:m,width:"360px"})]}),dataIndex:"litellm_model",key:"litellm_model"}];return(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(A.Z.Item,{label:"Model Mappings",name:"model_mappings",tooltip:"Map public model names to LiteLLM model names for load balancing",labelCol:{span:10},wrapperCol:{span:16},labelAlign:"left",rules:[{required:!0,validator:async(e,s)=>{if(!s||0===s.length)throw Error("At least one model mapping is required");if(s.filter(e=>!e.public_name||""===e.public_name.trim()).length>0)throw Error("All model mappings must have valid public names")}}],children:(0,c.jsx)(em.Z,{dataSource:e.getFieldValue("model_mappings"),columns:u,pagination:!1,size:"small"},s)})})},tB=t(90464);let{Link:tK}=en.default;var tG=e=>{let{showAdvancedSettings:s,setShowAdvancedSettings:t,teams:l,guardrailsList:a}=e,[r]=A.Z.useForm(),[i,n]=d.useState(!1),[o,m]=d.useState("per_token"),[u,x]=d.useState(!1),h=(e,s)=>s&&(isNaN(Number(s))||0>Number(s))?Promise.reject("Please enter a valid positive number"):Promise.resolve(),p=(e,s)=>{if(!s)return Promise.resolve();try{return JSON.parse(s),Promise.resolve()}catch(e){return Promise.reject("Please enter valid JSON")}};return(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)(N.Z,{className:"mt-2 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Advanced Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsxs)("div",{className:"bg-white rounded-lg",children:[(0,c.jsx)(A.Z.Item,{label:"Custom Pricing",name:"custom_pricing",valuePropName:"checked",className:"mb-4",children:(0,c.jsx)(eJ.Z,{onChange:e=>{n(e),e||r.setFieldsValue({input_cost_per_token:void 0,output_cost_per_token:void 0,input_cost_per_second:void 0})},className:"bg-gray-600"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Apply safety guardrails to this key to filter content or enforce policies",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",className:"mt-4",help:"Select existing guardrails. Go to 'Guardrails' tab to create new guardrails.",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},placeholder:"Select or enter guardrails",options:a.map(e=>({value:e,label:e}))})}),i&&(0,c.jsxs)("div",{className:"ml-6 pl-4 border-l-2 border-gray-200",children:[(0,c.jsx)(A.Z.Item,{label:"Pricing Model",name:"pricing_model",className:"mb-4",children:(0,c.jsx)(I.default,{defaultValue:"per_token",onChange:e=>m(e),options:[{value:"per_token",label:"Per Million Tokens"},{value:"per_second",label:"Per Second"}]})}),"per_token"===o?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Input Cost (per 1M tokens)",name:"input_cost_per_token",rules:[{validator:h}],className:"mb-4",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Output Cost (per 1M tokens)",name:"output_cost_per_token",rules:[{validator:h}],className:"mb-4",children:(0,c.jsx)(_.Z,{})})]}):(0,c.jsx)(A.Z.Item,{label:"Cost Per Second",name:"input_cost_per_second",rules:[{validator:h}],className:"mb-4",children:(0,c.jsx)(_.Z,{})})]}),(0,c.jsx)(A.Z.Item,{label:"Use in pass through routes",name:"use_in_pass_through",valuePropName:"checked",className:"mb-4 mt-4",tooltip:(0,c.jsxs)("span",{children:["Allow using these credentials in pass through routes."," ",(0,c.jsx)(tK,{href:"https://docs.litellm.ai/docs/pass_through/vertex_ai",target:"_blank",children:"Learn more"})]}),children:(0,c.jsx)(eJ.Z,{onChange:e=>{let s=r.getFieldValue("litellm_extra_params");try{let t=s?JSON.parse(s):{};e?t.use_in_pass_through=!0:delete t.use_in_pass_through,Object.keys(t).length>0?r.setFieldValue("litellm_extra_params",JSON.stringify(t,null,2)):r.setFieldValue("litellm_extra_params","")}catch(s){e?r.setFieldValue("litellm_extra_params",JSON.stringify({use_in_pass_through:!0},null,2)):r.setFieldValue("litellm_extra_params","")}},className:"bg-gray-600"})}),(0,c.jsx)(tT,{form:r,showCacheControl:u,onCacheControlChange:e=>{if(x(e),!e){let e=r.getFieldValue("litellm_extra_params");try{let s=e?JSON.parse(e):{};delete s.cache_control_injection_points,Object.keys(s).length>0?r.setFieldValue("litellm_extra_params",JSON.stringify(s,null,2)):r.setFieldValue("litellm_extra_params","")}catch(e){r.setFieldValue("litellm_extra_params","")}}}}),(0,c.jsx)(A.Z.Item,{label:"LiteLLM Params",name:"litellm_extra_params",tooltip:"Optional litellm params used for making a litellm.completion() call.",className:"mb-4 mt-4",rules:[{validator:p}],children:(0,c.jsx)(tB.Z,{rows:4,placeholder:'{ "rpm": 100, "timeout": 0, "stream_timeout": 0 }'})}),(0,c.jsxs)(s5.Z,{className:"mb-4",children:[(0,c.jsx)(s3.Z,{span:10}),(0,c.jsx)(s3.Z,{span:10,children:(0,c.jsxs)(k.Z,{className:"text-gray-600 text-sm",children:["Pass JSON of litellm supported params"," ",(0,c.jsx)(tK,{href:"https://docs.litellm.ai/docs/completion/input",target:"_blank",children:"litellm.completion() call"})]})})]}),(0,c.jsx)(A.Z.Item,{label:"Model Info",name:"model_info_params",tooltip:"Optional model info params. Returned when calling `/model/info` endpoint.",className:"mb-0",rules:[{validator:p}],children:(0,c.jsx)(tB.Z,{rows:4,placeholder:'{ "mode": "chat" }'})})]})})]})})},tH=t(29),tY=t.n(tH),tJ=t(23639);let{Text:tW}=en.default;var t$=e=>{let{formValues:s,accessToken:t,testMode:l,modelName:a="this model",onClose:r,onTestComplete:i}=e,[n,o]=d.useState(null),[m,u]=d.useState(null),[x,h]=d.useState(null),[p,g]=d.useState(!0),[f,v]=d.useState(!1),[y,b]=d.useState(!1),_=async()=>{g(!0),b(!1),o(null),u(null),h(null),v(!1),await new Promise(e=>setTimeout(e,100));try{console.log("Testing connection with form values:",s);let a=await s1(s,t,null);if(!a){console.log("No result from prepareModelAddRequest"),o("Failed to prepare model data. Please check your form inputs."),v(!1),g(!1);return}console.log("Result from prepareModelAddRequest:",a);let{litellmParamsObj:r,modelInfoObj:i,modelName:n}=a[0],c=await (0,j.testConnectionRequest)(t,r,i,null==i?void 0:i.mode);if("success"===c.status)eo.Z.success("Connection test successful!"),o(null),v(!0);else{var e,l;let s=(null===(e=c.result)||void 0===e?void 0:e.error)||c.message||"Unknown error";o(s),u(r),h(null===(l=c.result)||void 0===l?void 0:l.raw_request_typed_dict),v(!1)}}catch(e){console.error("Test connection error:",e),o(e instanceof Error?e.message:String(e)),v(!1)}finally{g(!1),i&&i()}};d.useEffect(()=>{let e=setTimeout(()=>{_()},200);return()=>clearTimeout(e)},[]);let N=e=>e?e.split("stack trace:")[0].trim().replace(/^litellm\.(.*?)Error: /,""):"Unknown error",Z="string"==typeof n?N(n):(null==n?void 0:n.message)?N(n.message):"Unknown error",w=x?((e,s,t)=>{let l=JSON.stringify(s,null,2).split("\n").map(e=>" ".concat(e)).join("\n"),a=Object.entries(t).map(e=>{let[s,t]=e;return"-H '".concat(s,": ").concat(t,"'")}).join(" \\\n ");return"curl -X POST \\\n ".concat(e," \\\n ").concat(a?"".concat(a," \\\n "):"","-H 'Content-Type: application/json' \\\n -d '{\n").concat(l,"\n }'")})(x.raw_request_api_base,x.raw_request_body,x.raw_request_headers||{}):"";return(0,c.jsxs)("div",{style:{padding:"24px",borderRadius:"8px",backgroundColor:"#fff"},children:[p?(0,c.jsxs)("div",{style:{textAlign:"center",padding:"32px 20px"},className:"jsx-dc9a0e2d897fe63b",children:[(0,c.jsx)("div",{style:{marginBottom:"16px"},className:"jsx-dc9a0e2d897fe63b loading-spinner",children:(0,c.jsx)("div",{style:{border:"3px solid #f3f3f3",borderTop:"3px solid #1890ff",borderRadius:"50%",width:"30px",height:"30px",animation:"spin 1s linear infinite",margin:"0 auto"},className:"jsx-dc9a0e2d897fe63b"})}),(0,c.jsxs)(tW,{style:{fontSize:"16px"},children:["Testing connection to ",a,"..."]}),(0,c.jsx)(tY(),{id:"dc9a0e2d897fe63b",children:"@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}"})]}):f?(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"32px 20px"},children:[(0,c.jsx)("div",{style:{color:"#52c41a",fontSize:"24px",display:"flex",alignItems:"center"},children:(0,c.jsx)("svg",{viewBox:"64 64 896 896",focusable:"false","data-icon":"check-circle",width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true",children:(0,c.jsx)("path",{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z"})})}),(0,c.jsxs)(tW,{type:"success",style:{fontSize:"18px",fontWeight:500,marginLeft:"10px"},children:["Connection to ",a," successful!"]})]}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",marginBottom:"20px"},children:[(0,c.jsx)(eg.Z,{style:{color:"#ff4d4f",fontSize:"24px",marginRight:"12px"}}),(0,c.jsxs)(tW,{type:"danger",style:{fontSize:"18px",fontWeight:500},children:["Connection to ",a," failed"]})]}),(0,c.jsxs)("div",{style:{backgroundColor:"#fff2f0",border:"1px solid #ffccc7",borderRadius:"8px",padding:"16px",marginBottom:"20px",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.03)"},children:[(0,c.jsxs)(tW,{strong:!0,style:{display:"block",marginBottom:"8px"},children:["Error:"," "]}),(0,c.jsx)(tW,{type:"danger",style:{fontSize:"14px",lineHeight:"1.5"},children:Z}),n&&(0,c.jsx)("div",{style:{marginTop:"12px"},children:(0,c.jsx)(L.ZP,{type:"link",onClick:()=>b(!y),style:{paddingLeft:0,height:"auto"},children:y?"Hide Details":"Show Details"})})]}),y&&(0,c.jsxs)("div",{style:{marginBottom:"20px"},children:[(0,c.jsx)(tW,{strong:!0,style:{display:"block",marginBottom:"8px",fontSize:"15px"},children:"Troubleshooting Details"}),(0,c.jsx)("pre",{style:{backgroundColor:"#f5f5f5",padding:"16px",borderRadius:"8px",fontSize:"13px",maxHeight:"200px",overflow:"auto",border:"1px solid #e8e8e8",lineHeight:"1.5"},children:"string"==typeof n?n:JSON.stringify(n,null,2)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(tW,{strong:!0,style:{display:"block",marginBottom:"8px",fontSize:"15px"},children:"API Request"}),(0,c.jsx)("pre",{style:{backgroundColor:"#f5f5f5",padding:"16px",borderRadius:"8px",fontSize:"13px",maxHeight:"250px",overflow:"auto",border:"1px solid #e8e8e8",lineHeight:"1.5"},children:w||"No request data available"}),(0,c.jsx)(L.ZP,{style:{marginTop:"8px"},icon:(0,c.jsx)(tJ.Z,{}),onClick:()=>{navigator.clipboard.writeText(w||""),eo.Z.success("Copied to clipboard")},children:"Copy to Clipboard"})]})]})}),(0,c.jsx)(K.Z,{style:{margin:"24px 0 16px"}}),(0,c.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:(0,c.jsx)(L.ZP,{type:"link",href:"https://docs.litellm.ai/docs/providers",target:"_blank",icon:(0,c.jsx)(V.Z,{}),children:"View Documentation"})})]})};let tQ=[{value:"chat",label:"Chat - /chat/completions"},{value:"completion",label:"Completion - /completions"},{value:"embedding",label:"Embedding - /embeddings"},{value:"audio_speech",label:"Audio Speech - /audio/speech"},{value:"audio_transcription",label:"Audio Transcription - /audio/transcriptions"},{value:"image_generation",label:"Image Generation - /images/generations"},{value:"rerank",label:"Rerank - /rerank"},{value:"realtime",label:"Realtime - /realtime"},{value:"batch",label:"Batch - /batch"}];var tX=t(92858);let t0=async(e,s,t,l)=>{try{console.log("=== AUTO ROUTER SUBMIT HANDLER CALLED ==="),console.log("handling auto router submit for formValues:",e),console.log("Access token:",s?"Present":"Missing"),console.log("Form:",t?"Present":"Missing"),console.log("Callback:",l?"Present":"Missing");let a={model_name:e.auto_router_name,litellm_params:{model:"auto_router/".concat(e.auto_router_name),auto_router_config:JSON.stringify(e.auto_router_config),auto_router_default_model:e.auto_router_default_model},model_info:{}};e.auto_router_embedding_model&&"custom"!==e.auto_router_embedding_model?a.litellm_params.auto_router_embedding_model=e.auto_router_embedding_model:e.custom_embedding_model&&(a.litellm_params.auto_router_embedding_model=e.custom_embedding_model),e.team_id&&(a.model_info.team_id=e.team_id),e.model_access_group&&e.model_access_group.length>0&&(a.model_info.access_groups=e.model_access_group),console.log("Auto router configuration to be created:",a),console.log("Auto router config (stringified):",a.litellm_params.auto_router_config),console.log("Calling modelCreateCall with:",{accessToken:s?"Present":"Missing",config:a});let r=await (0,j.modelCreateCall)(s,a);console.log("response for auto router create call:",r),t.resetFields()}catch(e){console.error("Failed to add auto router:",e),eo.Z.fromBackend("Failed to add auto router: "+e)}},{Title:t1,Link:t2}=en.default;var t4=e=>{let{form:s,handleOk:t,accessToken:l,userRole:a}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(""),[x,h]=(0,d.useState)([]),[p,g]=(0,d.useState)([]),[f,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(!1),[N,Z]=(0,d.useState)(null);(0,d.useEffect)(()=>{(async()=>{h((await (0,j.modelAvailableCall)(l,"","",!1,null,!0,!0)).data.map(e=>e.id))})()},[l]),(0,d.useEffect)(()=>{(async()=>{try{let e=await eG(l);console.log("Fetched models for auto router:",e),g(e)}catch(e){console.error("Error fetching model info for auto router:",e)}})()},[l]);let w=eI.ZL.includes(a),S=async()=>{o(!0),u("test-".concat(Date.now())),i(!0)},C=()=>{console.log("Auto router submit triggered!"),console.log("Router config:",N);let e=s.getFieldsValue();if(console.log("Form values:",e),!e.auto_router_name){eo.Z.fromBackend("Please enter an Auto Router Name");return}if(!e.auto_router_default_model){eo.Z.fromBackend("Please select a Default Model");return}if(s.setFieldsValue({custom_llm_provider:"auto_router",model:e.auto_router_name,api_key:"not_required_for_auto_router"}),!N||!N.routes||0===N.routes.length){eo.Z.fromBackend("Please configure at least one route for the auto router");return}if(N.routes.filter(e=>!e.name||!e.description||0===e.utterances.length).length>0){eo.Z.fromBackend("Please ensure all routes have a target model, description, and at least one utterance");return}s.validateFields().then(e=>{console.log("Form validation passed, submitting with values:",e);let a={...e,auto_router_config:N};console.log("Final submit values:",a),t0(a,l,s,t)}).catch(e=>{console.error("Validation failed:",e);let s=e.errorFields||[];if(s.length>0){let e=s.map(e=>{let s=e.name[0];return({auto_router_name:"Auto Router Name",auto_router_default_model:"Default Model",auto_router_embedding_model:"Embedding Model"})[s]||s});eo.Z.fromBackend("Please fill in the following required fields: ".concat(e.join(", ")))}else eo.Z.fromBackend("Please fill in all required fields")})};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(t1,{level:2,children:"Add Auto Router"}),(0,c.jsx)(k.Z,{className:"text-gray-600 mb-6",children:"Create an auto router with intelligent routing logic that automatically selects the best model based on user input patterns and semantic matching."}),(0,c.jsx)(tL.Z,{children:(0,c.jsxs)(A.Z,{form:s,onFinish:C,labelCol:{span:10},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Auto router name is required"}],label:"Auto Router Name",name:"auto_router_name",tooltip:"Unique name for this auto router configuration",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(_.Z,{placeholder:"e.g., auto_router_1, smart_routing"})}),(0,c.jsx)("div",{className:"w-full mb-4",children:(0,c.jsx)(tD,{modelInfo:p,value:N,onChange:e=>{Z(e),s.setFieldValue("auto_router_config",e)}})}),(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Default model is required"}],label:"Default Model",name:"auto_router_default_model",tooltip:"Fallback model to use when auto routing logic cannot determine the best model",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(I.default,{placeholder:"Select a default model",onChange:e=>{v("custom"===e)},options:[...Array.from(new Set(p.map(e=>e.model_group))).map(e=>({value:e,label:e})),{value:"custom",label:"Enter custom model name"}],style:{width:"100%"},showSearch:!0})}),(0,c.jsx)(A.Z.Item,{label:"Embedding Model",name:"auto_router_embedding_model",tooltip:"Optional: Embedding model to use for semantic routing decisions",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(I.default,{value:s.getFieldValue("auto_router_embedding_model"),placeholder:"Select an embedding model (optional)",onChange:e=>{b("custom"===e),s.setFieldValue("auto_router_embedding_model",e)},options:[...Array.from(new Set(p.map(e=>e.model_group))).map(e=>({value:e,label:e})),{value:"custom",label:"Enter custom model name"}],style:{width:"100%"},showSearch:!0,allowClear:!0})}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"Additional Settings"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),w&&(0,c.jsx)(A.Z.Item,{label:"Model Access Group",name:"model_access_group",className:"mb-4",tooltip:"Use model access groups to control who can access this auto router",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],options:x.map(e=>({value:e,label:e})),maxTagCount:"responsive",allowClear:!0})}),(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(en.default.Link,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{className:"space-x-2",children:[(0,c.jsx)(L.ZP,{onClick:S,loading:n,children:"Test Connect"}),(0,c.jsx)(L.ZP,{onClick:()=>{console.log("Add Auto Router button clicked!"),console.log("Current router config:",N),console.log("Current form values:",s.getFieldsValue()),C()},children:"Add Auto Router"})]})]})]})}),(0,c.jsx)(T.Z,{title:"Connection Test Results",open:r,onCancel:()=>{i(!1),o(!1)},footer:[(0,c.jsx)(L.ZP,{onClick:()=>{i(!1),o(!1)},children:"Close"},"close")],width:700,children:r&&(0,c.jsx)(t$,{formValues:s.getFieldsValue(),accessToken:l,testMode:"chat",modelName:s.getFieldValue("auto_router_name"),onClose:()=>{i(!1),o(!1)},onTestComplete:()=>o(!1)},m)})]})};let{Title:t5,Link:t3}=en.default;var t6=e=>{let{form:s,handleOk:t,selectedProvider:l,setSelectedProvider:a,providerModels:r,setProviderModelsFn:i,getPlaceholder:n,uploadProps:o,showAdvancedSettings:m,setShowAdvancedSettings:u,teams:x,credentials:h,accessToken:p,userRole:g,premiumUser:f}=e,[v]=A.Z.useForm(),[y,b]=(0,d.useState)("chat"),[_,N]=(0,d.useState)(!1),[Z,w]=(0,d.useState)(!1),[S,C]=(0,d.useState)([]),[E,P]=(0,d.useState)("");(0,d.useEffect)(()=>{(async()=>{try{let e=(await (0,j.getGuardrailsList)(p)).guardrails.map(e=>e.guardrail_name);C(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})()},[p]);let M=async()=>{w(!0),P("test-".concat(Date.now())),N(!0)},[O,D]=(0,d.useState)(!1),[F,R]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{R((await (0,j.modelAvailableCall)(p,"","",!1,null,!0,!0)).data.map(e=>e.id))})()},[p]);let z=eI.ZL.includes(g);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(st.Z,{className:"w-full",children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Add Model"}),(0,c.jsx)(ss.Z,{children:"Add Auto Router"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)(t5,{level:2,children:"Add Model"}),(0,c.jsx)(tL.Z,{children:(0,c.jsx)(A.Z,{form:s,onFinish:e=>{console.log("\uD83D\uDD25 Form onFinish triggered with values:",e),t()},onFinishFailed:e=>{console.log("\uD83D\uDCA5 Form onFinishFailed triggered:",e)},labelCol:{span:10},wrapperCol:{span:16},labelAlign:"left",children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Required"}],label:"Provider:",name:"custom_llm_provider",tooltip:"E.g. OpenAI, Azure OpenAI, Anthropic, Bedrock, etc.",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(I.default,{showSearch:!0,value:l,onChange:e=>{a(e),i(e),s.setFieldsValue({model:[],model_name:void 0})},children:Object.entries(s0.Cl).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:s,children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:s0.cd[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(tz,{selectedProvider:l,providerModels:r,getPlaceholder:n}),(0,c.jsx)(tV,{}),(0,c.jsx)(A.Z.Item,{label:"Mode",name:"mode",className:"mb-1",children:(0,c.jsx)(I.default,{style:{width:"100%"},value:y,onChange:e=>b(e),options:tQ})}),(0,c.jsxs)(s5.Z,{children:[(0,c.jsx)(s3.Z,{span:10}),(0,c.jsx)(s3.Z,{span:10,children:(0,c.jsxs)(k.Z,{className:"mb-5 mt-1",children:[(0,c.jsx)("strong",{children:"Optional"})," - LiteLLM endpoint to use when health checking this model"," ",(0,c.jsx)(t3,{href:"https://docs.litellm.ai/docs/proxy/health#health",target:"_blank",children:"Learn more"})]})})]}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(en.default.Text,{className:"text-sm text-gray-500 mb-2",children:"Either select existing credentials OR enter new provider credentials below"})}),(0,c.jsx)(A.Z.Item,{label:"Existing Credentials",name:"litellm_credential_name",children:(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Select or search for existing credentials",optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{value:null,label:"None"},...h.map(e=>({value:e.credential_name,label:e.credential_name}))],allowClear:!0})}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"OR"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.litellm_credential_name!==s.litellm_credential_name||e.provider!==s.provider,children:e=>{let{getFieldValue:s}=e,t=s("litellm_credential_name");return(console.log("\uD83D\uDD11 Credential Name Changed:",t),t)?(0,c.jsx)("div",{className:"text-gray-500 text-sm text-center",children:"Using existing credentials - no additional provider fields needed"}):(0,c.jsx)(s7,{selectedProvider:l,uploadProps:o})}}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"Additional Model Info Settings"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),(0,c.jsx)(A.Z.Item,{label:"Team-BYOK Model",tooltip:"Only use this model + credential combination for this team. Useful when teams want to onboard their own OpenAI keys.",className:"mb-4",children:(0,c.jsx)(B.Z,{title:f?"":"This is an enterprise-only feature. Upgrade to premium to restrict model+credential combinations to a specific team.",placement:"top",children:(0,c.jsx)(tX.Z,{checked:O,onChange:e=>{D(e),e||s.setFieldValue("team_id",void 0)},disabled:!f})})}),O&&(0,c.jsx)(A.Z.Item,{label:"Select Team",name:"team_id",className:"mb-4",tooltip:"Only keys for this team will be able to call this model.",rules:[{required:O&&!z,message:"Please select a team."}],children:(0,c.jsx)(q,{teams:x,disabled:!f})}),z&&(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(A.Z.Item,{label:"Model Access Group",name:"model_access_group",className:"mb-4",tooltip:"Use model access groups to give users access to select models, and add new ones to the group over time.",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],options:F.map(e=>({value:e,label:e})),maxTagCount:"responsive",allowClear:!0})})}),(0,c.jsx)(tG,{showAdvancedSettings:m,setShowAdvancedSettings:u,teams:x,guardrailsList:S}),(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(en.default.Link,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{className:"space-x-2",children:[(0,c.jsx)(L.ZP,{onClick:M,loading:Z,children:"Test Connect"}),(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Add Model"})]})]})]})})})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(t4,{form:v,handleOk:()=>{v.validateFields().then(e=>{t0(e,p,v,t)}).catch(e=>{console.error("Validation failed:",e)})},accessToken:p,userRole:g})})]})]}),(0,c.jsx)(T.Z,{title:"Connection Test Results",open:_,onCancel:()=>{N(!1),w(!1)},footer:[(0,c.jsx)(L.ZP,{onClick:()=>{N(!1),w(!1)},children:"Close"},"close")],width:700,children:_&&(0,c.jsx)(t$,{formValues:s.getFieldsValue(),accessToken:p,testMode:y,modelName:s.getFieldValue("model_name")||s.getFieldValue("model"),onClose:()=>{N(!1),w(!1)},onTestComplete:()=>w(!1)},E)})]})},t8=t(8048);let t7=(e,s,t,l,a,r,i,n,o,d,m)=>[{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Model ID"}),accessorKey:"model_info.id",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.model_info.id,children:(0,c.jsx)("div",{className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",onClick:()=>l(t.model_info.id),children:t.model_info.id})})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Model Information"}),accessorKey:"model_name",size:250,cell:e=>{let{row:s}=e,t=s.original,l=r(s.original)||"-",a=(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"Provider:"})," ",t.provider||"-"]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"Public Model Name:"})," ",l]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"LiteLLM Model Name:"})," ",t.litellm_model_name||"-"]})]});return(0,c.jsx)(B.Z,{title:a,children:(0,c.jsxs)("div",{className:"flex items-start space-x-2 min-w-0 w-full max-w-[250px]",children:[(0,c.jsx)("div",{className:"flex-shrink-0 mt-0.5",children:t.provider?(0,c.jsx)("img",{src:(0,s0.dr)(t.provider).logo,alt:"".concat(t.provider," logo"),className:"w-4 h-4",onError:e=>{let s=e.target,l=s.parentElement;if(l){var a;let e=document.createElement("div");e.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=(null===(a=t.provider)||void 0===a?void 0:a.charAt(0))||"-",l.replaceChild(e,s)}}}):(0,c.jsx)("div",{className:"w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",children:"-"})}),(0,c.jsxs)("div",{className:"flex flex-col min-w-0 flex-1",children:[(0,c.jsx)("div",{className:"text-xs font-medium text-gray-900 truncate max-w-[210px]",children:l}),(0,c.jsx)("div",{className:"text-xs text-gray-500 truncate mt-0.5 max-w-[210px]",children:t.litellm_model_name||"-"})]})]})})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Credentials"}),accessorKey:"litellm_credential_name",size:180,cell:e=>{var s;let{row:t}=e,l=null===(s=t.original.litellm_params)||void 0===s?void 0:s.litellm_credential_name;return l?(0,c.jsx)(B.Z,{title:"Credential: ".concat(l),children:(0,c.jsxs)("div",{className:"flex items-center space-x-2 max-w-[180px]",children:[(0,c.jsx)(tZ.Z,{className:"w-4 h-4 text-blue-500 flex-shrink-0"}),(0,c.jsx)("span",{className:"text-xs truncate",title:l,children:l})]})}):(0,c.jsxs)("div",{className:"flex items-center space-x-2 max-w-[180px]",children:[(0,c.jsx)(tZ.Z,{className:"w-4 h-4 text-gray-300 flex-shrink-0"}),(0,c.jsx)("span",{className:"text-xs text-gray-400",children:"No credentials"})]})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Created By"}),accessorKey:"model_info.created_by",sortingFn:"datetime",size:160,cell:e=>{let{row:s}=e,t=s.original,l=t.model_info.created_by,a=t.model_info.created_at?new Date(t.model_info.created_at).toLocaleDateString():null;return(0,c.jsxs)("div",{className:"flex flex-col min-w-0 max-w-[160px]",children:[(0,c.jsx)("div",{className:"text-xs font-medium text-gray-900 truncate",title:l||"Unknown",children:l||"Unknown"}),(0,c.jsx)("div",{className:"text-xs text-gray-500 truncate mt-0.5",title:a||"Unknown date",children:a||"Unknown date"})]})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Updated At"}),accessorKey:"model_info.updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.model_info.updated_at?new Date(t.model_info.updated_at).toLocaleDateString():"-"})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Costs"}),accessorKey:"input_cost",size:120,cell:e=>{let{row:s}=e,t=s.original,l=t.input_cost,a=t.output_cost;return l||a?(0,c.jsx)(B.Z,{title:"Cost per 1M tokens",children:(0,c.jsxs)("div",{className:"flex flex-col min-w-0 max-w-[120px]",children:[l&&(0,c.jsxs)("div",{className:"text-xs font-medium text-gray-900 truncate",children:["In: $",l]}),a&&(0,c.jsxs)("div",{className:"text-xs text-gray-500 truncate mt-0.5",children:["Out: $",a]})]})}):(0,c.jsx)("div",{className:"max-w-[120px]",children:(0,c.jsx)("span",{className:"text-xs text-gray-400",children:"-"})})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Team ID"}),accessorKey:"model_info.team_id",cell:e=>{let{row:s}=e,t=s.original;return t.model_info.team_id?(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:t.model_info.team_id,children:(0,c.jsxs)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>a(t.model_info.team_id),children:[t.model_info.team_id.slice(0,7),"..."]})})}):"-"}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Model Access Group"}),accessorKey:"model_info.model_access_group",enableSorting:!1,cell:e=>{let{row:s}=e,t=s.original,l=t.model_info.access_groups;if(!l||0===l.length)return"-";let a=t.model_info.id,r=d.has(a),i=l.length>1,n=()=>{let e=new Set(d);r?e.delete(a):e.add(a),m(e)};return(0,c.jsxs)("div",{className:"flex items-center gap-1 overflow-hidden",children:[(0,c.jsx)(se.Z,{size:"xs",color:"blue",className:"text-xs px-1.5 py-0.5 h-5 leading-tight flex-shrink-0",children:l[0]}),(r||!i&&2===l.length)&&l.slice(1).map((e,s)=>(0,c.jsx)(se.Z,{size:"xs",color:"blue",className:"text-xs px-1.5 py-0.5 h-5 leading-tight flex-shrink-0",children:e},s+1)),i&&(0,c.jsx)("button",{onClick:e=>{e.stopPropagation(),n()},className:"text-xs text-blue-600 hover:text-blue-800 px-1 py-0.5 rounded hover:bg-blue-50 h-5 leading-tight flex-shrink-0 whitespace-nowrap",children:r?"−":"+".concat(l.length-1)})]})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Status"}),accessorKey:"model_info.db_model",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("div",{className:"\n inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium\n ".concat(t.model_info.db_model?"bg-blue-50 text-blue-600":"bg-gray-100 text-gray-600","\n "),children:t.model_info.db_model?"DB Model":"Config Model"})}},{id:"actions",header:"",cell:t=>{var a;let{row:r}=t,i=r.original,n="Admin"===e||(null===(a=i.model_info)||void 0===a?void 0:a.created_by)===s;return(0,c.jsx)("div",{className:"flex items-center justify-end gap-2 pr-4",children:(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>{n&&(l(i.model_info.id),o(!1))},className:n?"cursor-pointer":"opacity-50 cursor-not-allowed"})})}}];var t9=t(93142),le=t(867),ls=t(3810),lt=t(5540),ll=t(8881);let{Text:la}=en.default;var lr=e=>{let{accessToken:s,onReloadSuccess:t,buttonText:l="Reload Price Data",showIcon:a=!0,size:r="middle",type:i="primary",className:n=""}=e,[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)(6),[b,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)(!1);(0,d.useEffect)(()=>{w();let e=setInterval(()=>{w()},3e4);return()=>clearInterval(e)},[s]);let w=async()=>{if(s){Z(!0);try{console.log("Fetching reload status...");let e=await (0,j.getModelCostMapReloadStatus)(s);console.log("Received status:",e),_(e)}catch(e){console.error("Failed to fetch reload status:",e),_({scheduled:!1,interval_hours:null,last_run:null,next_run:null})}finally{Z(!1)}}},k=async()=>{if(!s){eo.Z.fromBackend("No access token available");return}m(!0);try{let e=await (0,j.reloadModelCostMap)(s);"success"===e.status?(eo.Z.success("Price data reloaded successfully! ".concat(e.models_count||0," models updated.")),null==t||t(),await w()):eo.Z.fromBackend("Failed to reload price data")}catch(e){console.error("Error reloading price data:",e),eo.Z.fromBackend("Failed to reload price data. Please try again.")}finally{m(!1)}},S=async()=>{if(!s){eo.Z.fromBackend("No access token available");return}if(v<=0){eo.Z.fromBackend("Hours must be greater than 0");return}x(!0);try{let e=await (0,j.scheduleModelCostMapReload)(s,v);"success"===e.status?(eo.Z.success("Periodic reload scheduled for every ".concat(v," hours")),f(!1),await w()):eo.Z.fromBackend("Failed to schedule periodic reload")}catch(e){console.error("Error scheduling reload:",e),eo.Z.fromBackend("Failed to schedule periodic reload. Please try again.")}finally{x(!1)}},C=async()=>{if(!s){eo.Z.fromBackend("No access token available");return}p(!0);try{let e=await (0,j.cancelModelCostMapReload)(s);"success"===e.status?(eo.Z.success("Periodic reload cancelled successfully"),await w()):eo.Z.fromBackend("Failed to cancel periodic reload")}catch(e){console.error("Error cancelling reload:",e),eo.Z.fromBackend("Failed to cancel periodic reload. Please try again.")}finally{p(!1)}},I=e=>{if(!e)return"Never";try{return new Date(e).toLocaleString()}catch(s){return e}};return(0,c.jsxs)("div",{className:n,children:[(0,c.jsxs)(t9.Z,{direction:"horizontal",size:"middle",style:{marginBottom:16},children:[(0,c.jsx)(le.Z,{title:"Hard Refresh Price Data",description:"This will immediately fetch the latest pricing information from the remote source. Continue?",onConfirm:k,okText:"Yes",cancelText:"No",okButtonProps:{style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem",transition:"all 0.2s ease-in-out"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#4f46e5"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#6366f1"}},children:(0,c.jsx)(L.ZP,{type:i,size:r,loading:o,icon:a?(0,c.jsx)(th.Z,{}):void 0,style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem",transition:"all 0.2s ease-in-out"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#4f46e5"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#6366f1"},children:l})}),(null==b?void 0:b.scheduled)?(0,c.jsx)(L.ZP,{type:"default",size:r,danger:!0,icon:(0,c.jsx)(ll.Z,{}),loading:h,onClick:C,style:{borderColor:"#ff4d4f",color:"#ff4d4f",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem"},children:"Cancel Periodic Reload"}):(0,c.jsx)(L.ZP,{type:"default",size:r,icon:(0,c.jsx)(lt.Z,{}),onClick:()=>f(!0),style:{borderColor:"#d9d9d9",color:"#6366f1",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem"},children:"Set Up Periodic Reload"})]}),b&&(0,c.jsx)(tL.Z,{size:"small",style:{backgroundColor:"#f8f9fa",border:"1px solid #e9ecef",borderRadius:8},children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"small",style:{width:"100%"},children:[b.scheduled?(0,c.jsx)("div",{children:(0,c.jsxs)(ls.Z,{color:"green",icon:(0,c.jsx)(lt.Z,{}),children:["Scheduled every ",b.interval_hours," hours"]})}):(0,c.jsx)(la,{type:"secondary",children:"No periodic reload scheduled"}),(0,c.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,c.jsx)(la,{type:"secondary",style:{fontSize:"12px"},children:"Last run:"}),(0,c.jsx)(la,{style:{fontSize:"12px"},children:I(b.last_run)})]}),b.scheduled&&(0,c.jsxs)(c.Fragment,{children:[b.next_run&&(0,c.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,c.jsx)(la,{type:"secondary",style:{fontSize:"12px"},children:"Next run:"}),(0,c.jsx)(la,{style:{fontSize:"12px"},children:I(b.next_run)})]}),(0,c.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,c.jsx)(la,{type:"secondary",style:{fontSize:"12px"},children:"Status:"}),(0,c.jsx)(ls.Z,{color:(null==b?void 0:b.scheduled)?b.last_run?"success":"processing":"default",children:(null==b?void 0:b.scheduled)?b.last_run?"Active":"Ready":"Not scheduled"})]})]})]})}),(0,c.jsxs)(T.Z,{title:"Set Up Periodic Reload",open:g,onOk:S,onCancel:()=>f(!1),confirmLoading:u,okText:"Schedule",cancelText:"Cancel",okButtonProps:{style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white"}},children:[(0,c.jsx)("div",{style:{marginBottom:16},children:(0,c.jsx)(la,{children:"Set up automatic reload of price data every:"})}),(0,c.jsx)("div",{style:{marginBottom:16},children:(0,c.jsx)(e8.Z,{min:1,max:168,value:v,onChange:e=>y(e||6),addonAfter:"hours",style:{width:"100%"}})}),(0,c.jsx)("div",{children:(0,c.jsxs)(la,{type:"secondary",children:["This will automatically fetch the latest pricing data from the remote source every ",v," hours."]})})]})]})},li=t(15731),ln=t(91126);let lo=(e,s,t,l,a,r,i,n,o,d,m)=>[{header:()=>(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(eR.Z,{checked:t,indeterminate:s.length>0&&!t,onChange:e=>a(e.target.checked),onClick:e=>e.stopPropagation()}),(0,c.jsx)("span",{children:"Model ID"})]}),accessorKey:"model_info.id",enableSorting:!0,sortingFn:"alphanumeric",cell:e=>{let{row:t}=e,a=t.original,r=a.model_name,i=s.includes(r);return(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(eR.Z,{checked:i,onChange:e=>l(r,e.target.checked),onClick:e=>e.stopPropagation()}),(0,c.jsx)(B.Z,{title:a.model_info.id,children:(0,c.jsx)("div",{className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",onClick:()=>m&&m(a.model_info.id),children:a.model_info.id})})]})}},{header:"Model Name",accessorKey:"model_name",enableSorting:!0,sortingFn:"alphanumeric",cell:e=>{let{row:s}=e,t=s.original,l=n(t)||t.model_name;return(0,c.jsx)("div",{className:"font-medium text-sm",children:(0,c.jsx)(B.Z,{title:l,children:(0,c.jsx)("div",{className:"truncate max-w-[200px]",children:l})})})}},{header:"Health Status",accessorKey:"health_status",enableSorting:!0,sortingFn:(e,s,t)=>{var l,a;let r=e.getValue("health_status")||"unknown",i=s.getValue("health_status")||"unknown",n={healthy:0,checking:1,unknown:2,unhealthy:3};return(null!==(l=n[r])&&void 0!==l?l:4)-(null!==(a=n[i])&&void 0!==a?a:4)},cell:s=>{var t;let{row:l}=s,a=l.original,r={status:a.health_status,loading:a.health_loading,error:a.health_error};if(r.loading)return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsxs)("div",{className:"flex space-x-1",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-indigo-500 rounded-full animate-pulse"}),(0,c.jsx)("div",{className:"w-2 h-2 bg-indigo-500 rounded-full animate-pulse",style:{animationDelay:"0.2s"}}),(0,c.jsx)("div",{className:"w-2 h-2 bg-indigo-500 rounded-full animate-pulse",style:{animationDelay:"0.4s"}})]}),(0,c.jsx)(k.Z,{className:"text-gray-600 text-sm",children:"Checking..."})]});let n=a.model_name,o="healthy"===r.status&&(null===(t=e[n])||void 0===t?void 0:t.successResponse);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[i(r.status),o&&d&&(0,c.jsx)(B.Z,{title:"View response details",placement:"top",children:(0,c.jsx)("button",{onClick:()=>{var s;return d(n,null===(s=e[n])||void 0===s?void 0:s.successResponse)},className:"p-1 text-green-600 hover:text-green-800 hover:bg-green-50 rounded cursor-pointer transition-colors",children:(0,c.jsx)(li.Z,{className:"h-4 w-4"})})})]})}},{header:"Error Details",accessorKey:"health_error",enableSorting:!1,cell:s=>{let{row:t}=s,l=t.original.model_name,a=e[l];if(!(null==a?void 0:a.error))return(0,c.jsx)(k.Z,{className:"text-gray-400 text-sm",children:"No errors"});let r=a.error,i=a.fullError||a.error;return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"max-w-[200px]",children:(0,c.jsx)(B.Z,{title:r,placement:"top",children:(0,c.jsx)(k.Z,{className:"text-red-600 text-sm truncate",children:r})})}),o&&i!==r&&(0,c.jsx)(B.Z,{title:"View full error details",placement:"top",children:(0,c.jsx)("button",{onClick:()=>o(l,r,i),className:"p-1 text-red-600 hover:text-red-800 hover:bg-red-50 rounded cursor-pointer transition-colors",children:(0,c.jsx)(li.Z,{className:"h-4 w-4"})})})]})}},{header:"Last Check",accessorKey:"last_check",enableSorting:!0,sortingFn:(e,s,t)=>{let l=e.getValue("last_check")||"Never checked",a=s.getValue("last_check")||"Never checked";if("Never checked"===l&&"Never checked"===a)return 0;if("Never checked"===l)return 1;if("Never checked"===a)return -1;if("Check in progress..."===l&&"Check in progress..."===a)return 0;if("Check in progress..."===l)return -1;if("Check in progress..."===a)return 1;let r=new Date(l),i=new Date(a);return isNaN(r.getTime())&&isNaN(i.getTime())?0:isNaN(r.getTime())?1:isNaN(i.getTime())?-1:i.getTime()-r.getTime()},cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(k.Z,{className:"text-gray-600 text-sm",children:t.health_loading?"Check in progress...":t.last_check})}},{header:"Last Success",accessorKey:"last_success",enableSorting:!0,sortingFn:(e,s,t)=>{let l=e.getValue("last_success")||"Never succeeded",a=s.getValue("last_success")||"Never succeeded";if("Never succeeded"===l&&"Never succeeded"===a)return 0;if("Never succeeded"===l)return 1;if("Never succeeded"===a)return -1;if("None"===l&&"None"===a)return 0;if("None"===l)return 1;if("None"===a)return -1;let r=new Date(l),i=new Date(a);return isNaN(r.getTime())&&isNaN(i.getTime())?0:isNaN(r.getTime())?1:isNaN(i.getTime())?-1:i.getTime()-r.getTime()},cell:s=>{let{row:t}=s,l=e[t.original.model_name],a=(null==l?void 0:l.lastSuccess)||"None";return(0,c.jsx)(k.Z,{className:"text-gray-600 text-sm",children:a})}},{header:"Actions",id:"actions",cell:e=>{let{row:s}=e,t=s.original,l=t.model_name,a=t.health_status&&"none"!==t.health_status,i=t.health_loading?"Checking...":a?"Re-run Health Check":"Run Health Check";return(0,c.jsx)(B.Z,{title:i,placement:"top",children:(0,c.jsx)("button",{className:"p-2 rounded-md transition-colors ".concat(t.health_loading?"text-gray-400 cursor-not-allowed bg-gray-100":"text-indigo-600 hover:text-indigo-700 hover:bg-indigo-50"),onClick:()=>{t.health_loading||r(l)},disabled:t.health_loading,children:t.health_loading?(0,c.jsxs)("div",{className:"flex space-x-1",children:[(0,c.jsx)("div",{className:"w-1 h-1 bg-gray-400 rounded-full animate-pulse"}),(0,c.jsx)("div",{className:"w-1 h-1 bg-gray-400 rounded-full animate-pulse",style:{animationDelay:"0.2s"}}),(0,c.jsx)("div",{className:"w-1 h-1 bg-gray-400 rounded-full animate-pulse",style:{animationDelay:"0.4s"}})]}):a?(0,c.jsx)(sn.Z,{className:"h-4 w-4"}):(0,c.jsx)(ln.Z,{className:"h-4 w-4"})})})},enableSorting:!1}],lc=[{pattern:/Missing .* API Key/i,replacement:"Missing API Key"},{pattern:/Connection timeout/i,replacement:"Connection timeout"},{pattern:/Network.*not.*ok/i,replacement:"Network connection failed"},{pattern:/403.*Forbidden/i,replacement:"Access forbidden - check API key permissions"},{pattern:/401.*Unauthorized/i,replacement:"Unauthorized - invalid API key"},{pattern:/429.*rate limit/i,replacement:"Rate limit exceeded"},{pattern:/500.*Internal Server Error/i,replacement:"Provider internal server error"},{pattern:/litellm\.AuthenticationError/i,replacement:"Authentication failed"},{pattern:/litellm\.RateLimitError/i,replacement:"Rate limit exceeded"},{pattern:/litellm\.APIError/i,replacement:"API error"}];var ld=e=>{let{accessToken:s,modelData:t,all_models_on_proxy:l,getDisplayModelName:a,setSelectedModelId:r}=e,[i,n]=(0,d.useState)({}),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(null),[v,y]=(0,d.useState)(!1),[_,N]=(0,d.useState)(null),Z=(0,d.useRef)(null);(0,d.useEffect)(()=>{s&&(null==t?void 0:t.data)&&(async()=>{let e={};t.data.forEach(s=>{e[s.model_name]={status:"none",lastCheck:"None",lastSuccess:"None",loading:!1,error:void 0,fullError:void 0,successResponse:void 0}});try{let l=await (0,j.latestHealthChecksCall)(s);l&&l.latest_health_checks&&"object"==typeof l.latest_health_checks&&Object.entries(l.latest_health_checks).forEach(s=>{let[l,a]=s;if(!a)return;let r=null,i=t.data.find(e=>e.model_name===l);if(i)r=i.model_name;else{let e=t.data.find(e=>e.model_info&&e.model_info.id===l);if(e)r=e.model_name;else if(a.model_name){let e=t.data.find(e=>e.model_name===a.model_name);e&&(r=e.model_name)}}if(r){let s=a.error_message||void 0;e[r]={status:a.status||"unknown",lastCheck:a.checked_at?new Date(a.checked_at).toLocaleString():"None",lastSuccess:"healthy"===a.status&&a.checked_at?new Date(a.checked_at).toLocaleString():"None",loading:!1,error:s?w(s):void 0,fullError:s,successResponse:"healthy"===a.status?a:void 0}}})}catch(e){console.warn("Failed to load health check history (using default states):",e)}n(e)})()},[s,t]);let w=e=>{var s;if(!e)return"Health check failed";let t="string"==typeof e?e:JSON.stringify(e),l=t.match(/(\w+Error):\s*(\d{3})/i);if(l)return"".concat(l[1],": ").concat(l[2]);let a=t.match(/(AuthenticationError|RateLimitError|BadRequestError|InternalServerError|TimeoutError|NotFoundError|ForbiddenError|ServiceUnavailableError|BadGatewayError|ContentPolicyViolationError|\w+Error)/i),r=t.match(/\b(400|401|403|404|408|429|500|502|503|504)\b/);if(a&&r)return"".concat(a[1],": ").concat(r[1]);if(r){let e=r[1];return"".concat({400:"BadRequestError",401:"AuthenticationError",403:"ForbiddenError",404:"NotFoundError",408:"TimeoutError",429:"RateLimitError",500:"InternalServerError",502:"BadGatewayError",503:"ServiceUnavailableError",504:"GatewayTimeoutError"}[e],": ").concat(e)}if(a){let e=a[1],s={AuthenticationError:"401",RateLimitError:"429",BadRequestError:"400",InternalServerError:"500",TimeoutError:"408",NotFoundError:"404",ForbiddenError:"403",ServiceUnavailableError:"503",BadGatewayError:"502",GatewayTimeoutError:"504",ContentPolicyViolationError:"400"}[e];return s?"".concat(e,": ").concat(s):e}for(let{pattern:e,replacement:s}of lc)if(e.test(t))return s;if(/missing.*api.*key|invalid.*key|unauthorized/i.test(t))return"AuthenticationError: 401";if(/rate.*limit|too.*many.*requests/i.test(t))return"RateLimitError: 429";if(/timeout|timed.*out/i.test(t))return"TimeoutError: 408";if(/not.*found/i.test(t))return"NotFoundError: 404";if(/forbidden|access.*denied/i.test(t))return"ForbiddenError: 403";if(/internal.*server.*error/i.test(t))return"InternalServerError: 500";let i=t.replace(/[\n\r]+/g," ").replace(/\s+/g," ").trim(),n=null===(s=i.split(/[.!?]/)[0])||void 0===s?void 0:s.trim();return n&&n.length>0?n.length>100?n.substring(0,97)+"...":n:i.length>100?i.substring(0,97)+"...":i},C=async e=>{if(s){n(s=>({...s,[e]:{...s[e],loading:!0,status:"checking"}}));try{var l,a;let r=await (0,j.individualModelHealthCheckCall)(s,e),i=new Date().toLocaleString();if(r.unhealthy_count>0&&r.unhealthy_endpoints&&r.unhealthy_endpoints.length>0){let s=(null===(l=r.unhealthy_endpoints[0])||void 0===l?void 0:l.error)||"Health check failed",t=w(s);n(l=>{var a;return{...l,[e]:{status:"unhealthy",lastCheck:i,lastSuccess:(null===(a=l[e])||void 0===a?void 0:a.lastSuccess)||"None",loading:!1,error:t,fullError:s}}})}else n(s=>({...s,[e]:{status:"healthy",lastCheck:i,lastSuccess:i,loading:!1,successResponse:r}}));try{let l=await (0,j.latestHealthChecksCall)(s),r=t.data.find(s=>s.model_name===e);if(r){let s=r.model_info.id,t=null===(a=l.latest_health_checks)||void 0===a?void 0:a[s];if(t){let s=t.error_message||void 0;n(l=>{var a,r,i,n,o,c,d;return{...l,[e]:{status:t.status||(null===(a=l[e])||void 0===a?void 0:a.status)||"unknown",lastCheck:t.checked_at?new Date(t.checked_at).toLocaleString():(null===(r=l[e])||void 0===r?void 0:r.lastCheck)||"None",lastSuccess:"healthy"===t.status?t.checked_at?new Date(t.checked_at).toLocaleString():(null===(i=l[e])||void 0===i?void 0:i.lastSuccess)||"None":(null===(n=l[e])||void 0===n?void 0:n.lastSuccess)||"None",loading:!1,error:s?w(s):null===(o=l[e])||void 0===o?void 0:o.error,fullError:s||(null===(c=l[e])||void 0===c?void 0:c.fullError),successResponse:"healthy"===t.status?t:null===(d=l[e])||void 0===d?void 0:d.successResponse}}})}}}catch(e){console.debug("Could not fetch updated status from database (non-critical):",e)}}catch(a){let s=new Date().toLocaleString(),t=a instanceof Error?a.message:String(a),l=w(t);n(a=>{var r;return{...a,[e]:{status:"unhealthy",lastCheck:s,lastSuccess:(null===(r=a[e])||void 0===r?void 0:r.lastSuccess)||"None",loading:!1,error:l,fullError:t}}})}}},I=async()=>{let e=o.length>0?o:l,a=e.reduce((e,s)=>(e[s]={...i[s],loading:!0,status:"checking"},e),{});n(e=>({...e,...a}));let r={},c=e.map(async e=>{if(s)try{let l=await (0,j.individualModelHealthCheckCall)(s,e);r[e]=l;let a=new Date().toLocaleString();if(l.unhealthy_count>0&&l.unhealthy_endpoints&&l.unhealthy_endpoints.length>0){var t;let s=(null===(t=l.unhealthy_endpoints[0])||void 0===t?void 0:t.error)||"Health check failed",r=w(s);n(t=>{var l;return{...t,[e]:{status:"unhealthy",lastCheck:a,lastSuccess:(null===(l=t[e])||void 0===l?void 0:l.lastSuccess)||"None",loading:!1,error:r,fullError:s}}})}else n(s=>({...s,[e]:{status:"healthy",lastCheck:a,lastSuccess:a,loading:!1,successResponse:l}}))}catch(a){console.error("Health check failed for ".concat(e,":"),a);let s=new Date().toLocaleString(),t=a instanceof Error?a.message:String(a),l=w(t);n(a=>{var r;return{...a,[e]:{status:"unhealthy",lastCheck:s,lastSuccess:(null===(r=a[e])||void 0===r?void 0:r.lastSuccess)||"None",loading:!1,error:l,fullError:t}}})}});await Promise.allSettled(c);try{if(!s)return;let l=await (0,j.latestHealthChecksCall)(s);l.latest_health_checks&&Object.entries(l.latest_health_checks).forEach(s=>{let[l,a]=s,r=t.data.find(e=>e.model_info.id===l);if(r&&e.includes(r.model_name)&&a){let e=r.model_name,s=a.error_message||void 0;n(t=>{let l=t[e];return{...t,[e]:{status:a.status||(null==l?void 0:l.status)||"unknown",lastCheck:a.checked_at?new Date(a.checked_at).toLocaleString():(null==l?void 0:l.lastCheck)||"None",lastSuccess:"healthy"===a.status&&a.checked_at?new Date(a.checked_at).toLocaleString():(null==l?void 0:l.lastSuccess)||"None",loading:!1,error:s?w(s):null==l?void 0:l.error,fullError:s||(null==l?void 0:l.fullError),successResponse:"healthy"===a.status?a:null==l?void 0:l.successResponse}}})}})}catch(e){console.warn("Failed to fetch updated health statuses from database (non-critical):",e)}},A=e=>{x(e),e?m(l):m([])},E=()=>{p(!1),f(null)},P=()=>{y(!1),N(null)};return(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Model Health Status"}),(0,c.jsx)(k.Z,{className:"text-gray-600 mt-1",children:"Run health checks on individual models to verify they are working correctly"})]}),(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[o.length>0&&(0,c.jsx)(b.Z,{size:"sm",variant:"light",onClick:()=>A(!1),className:"px-3 py-1 text-sm",children:"Clear Selection"}),(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",onClick:I,disabled:Object.values(i).some(e=>e.loading),className:"px-3 py-1 text-sm",children:o.length>0&&o.length{s?m(s=>[...s,e]):(m(s=>s.filter(s=>s!==e)),x(!1))},A,C,e=>{switch(e){case"healthy":return(0,c.jsx)(se.Z,{color:"emerald",children:"healthy"});case"unhealthy":return(0,c.jsx)(se.Z,{color:"red",children:"unhealthy"});case"checking":return(0,c.jsx)(se.Z,{color:"blue",children:"checking"});case"none":return(0,c.jsx)(se.Z,{color:"gray",children:"none"});default:return(0,c.jsx)(se.Z,{color:"gray",children:"unknown"})}},a,(e,s,t)=>{f({modelName:e,cleanedError:s,fullError:t}),p(!0)},(e,s)=>{N({modelName:e,response:s}),y(!0)},r),data:t.data.map(e=>{let s=i[e.model_name]||{status:"none",lastCheck:"None",loading:!1};return{model_name:e.model_name,model_info:e.model_info,provider:e.provider,litellm_model_name:e.litellm_model_name,health_status:s.status,last_check:s.lastCheck,last_success:s.lastSuccess||"None",health_loading:s.loading,health_error:s.error,health_full_error:s.fullError}}),isLoading:!1,table:Z})}),(0,c.jsx)(T.Z,{title:g?"Health Check Error - ".concat(g.modelName):"Error Details",open:h,onCancel:E,footer:[(0,c.jsx)(L.ZP,{onClick:E,children:"Close"},"close")],width:800,children:g&&(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Error:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-red-50 border border-red-200 rounded-md",children:(0,c.jsx)(k.Z,{className:"text-red-800",children:g.cleanedError})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Full Error Details:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md max-h-96 overflow-y-auto",children:(0,c.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:g.fullError})})]})]})}),(0,c.jsx)(T.Z,{title:_?"Health Check Response - ".concat(_.modelName):"Response Details",open:v,onCancel:P,footer:[(0,c.jsx)(L.ZP,{onClick:P,children:"Close"},"close")],width:800,children:_&&(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Status:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-green-50 border border-green-200 rounded-md",children:(0,c.jsx)(k.Z,{className:"text-green-800",children:"Health check passed successfully"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Response Details:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md max-h-96 overflow-y-auto",children:(0,c.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:JSON.stringify(_.response,null,2)})})]})]})})]})},lm=t(61778),lu=t(12660),lx=e=>{let{value:s={},onChange:t}=e,[l,a]=(0,d.useState)(Object.entries(s)),r=e=>{let s=l.filter((s,t)=>t!==e);a(s),null==t||t(Object.fromEntries(s))},i=(e,s,r)=>{let i=[...l];i[e]=[s,r],a(i),null==t||t(Object.fromEntries(i))};return(0,c.jsxs)("div",{children:[l.map((e,s)=>{let[t,l]=e;return(0,c.jsxs)(t9.Z,{style:{display:"flex",marginBottom:8},align:"center",children:[(0,c.jsx)(eW.o,{placeholder:"Header Name",value:t,onChange:e=>i(s,e.target.value,l)}),(0,c.jsx)(eW.o,{placeholder:"Header Value",value:l,onChange:e=>i(s,t,e.target.value)}),(0,c.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:(0,c.jsx)(tC.Z,{onClick:()=>r(s),style:{cursor:"pointer"}})})]},s)}),(0,c.jsx)(L.ZP,{type:"dashed",onClick:()=>{a([...l,["",""]])},icon:(0,c.jsx)(tI.Z,{}),children:"Add Header"})]})},lh=t(77565),lp=e=>{let{pathValue:s,targetValue:t,includeSubpath:l}=e,a=(0,j.getProxyBaseUrl)();return s&&t?(0,c.jsxs)(G.Z,{className:"p-5",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Route Preview"}),(0,c.jsx)(sX.Z,{className:"text-gray-600 mb-5",children:"How your requests will be routed"}),(0,c.jsxs)("div",{className:"space-y-5",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-base font-semibold text-gray-900 mb-3",children:"Basic routing:"}),(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Your endpoint"}),(0,c.jsx)("code",{className:"font-mono text-sm text-gray-900",children:s?"".concat(a).concat(s):""})]}),(0,c.jsx)("div",{className:"text-gray-400",children:(0,c.jsx)(lh.Z,{className:"text-lg"})}),(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Forwards to"}),(0,c.jsx)("code",{className:"font-mono text-sm text-gray-900",children:t})]})]})]}),l&&(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-base font-semibold text-gray-900 mb-3",children:"With subpaths:"}),(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Your endpoint + subpath"}),(0,c.jsxs)("code",{className:"font-mono text-sm text-gray-900",children:[s&&"".concat(a).concat(s),(0,c.jsx)("span",{className:"text-blue-600",children:"/v1/text-to-image/base/model"})]})]}),(0,c.jsx)("div",{className:"text-gray-400",children:(0,c.jsx)(lh.Z,{className:"text-lg"})}),(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Forwards to"}),(0,c.jsxs)("code",{className:"font-mono text-sm text-gray-900",children:[t,(0,c.jsx)("span",{className:"text-blue-600",children:"/v1/text-to-image/base/model"})]})]})]}),(0,c.jsxs)("div",{className:"mt-3 text-sm text-gray-600",children:["Any path after ",s," will be appended to the target URL"]})]})}),!l&&(0,c.jsx)("div",{className:"mt-4 p-3 bg-blue-50 rounded-md border border-blue-200",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)(V.Z,{className:"text-blue-500 mt-0.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{className:"text-sm text-blue-700",children:[(0,c.jsx)("span",{className:"font-medium",children:"Not seeing the routing you wanted?"})," Try enabling - Include Subpaths - above - this allows subroutes like"," ",(0,c.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded font-mono text-xs",children:"/api/v1/models"})," to be forwarded automatically."]})]})})]})]}):null};let{Option:lg}=I.default;var lj=e=>{let{accessToken:s,setPassThroughItems:t,passThroughItems:l}=e,[a]=A.Z.useForm(),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(""),[x,h]=(0,d.useState)(""),[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)(!0),y=()=>{a.resetFields(),h(""),g(""),v(!0),i(!1)},N=e=>{let s=e;e&&!e.startsWith("/")&&(s="/"+e),h(s),a.setFieldsValue({path:s})},Z=async e=>{console.log("addPassThrough called with:",e),o(!0);try{console.log("formValues: ".concat(JSON.stringify(e)));let r=(await (0,j.createPassThroughEndpoint)(s,e)).endpoints[0],n=[...l,r];t(n),eo.Z.success("Pass-through endpoint created successfully"),a.resetFields(),h(""),g(""),v(!0),i(!1)}catch(e){eo.Z.fromBackend("Error creating pass-through endpoint: "+e)}finally{o(!1)}};return(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{className:"mx-auto mb-4 mt-4",onClick:()=>i(!0),children:"+ Add Pass-Through Endpoint"}),(0,c.jsx)(T.Z,{title:(0,c.jsxs)("div",{className:"flex items-center space-x-3 pb-4 border-b border-gray-100",children:[(0,c.jsx)(lu.Z,{className:"text-xl text-blue-500"}),(0,c.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add Pass-Through Endpoint"})]}),open:r,width:1e3,onCancel:y,footer:null,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,c.jsxs)("div",{className:"mt-6",children:[(0,c.jsx)(lm.Z,{message:"What is a Pass-Through Endpoint?",description:"Route requests from your LiteLLM proxy to any external API. Perfect for custom models, image generation APIs, or any service you want to proxy through LiteLLM.",type:"info",showIcon:!0,className:"mb-6"}),(0,c.jsxs)(A.Z,{form:a,onFinish:Z,layout:"vertical",className:"space-y-6",initialValues:{include_subpath:!0,path:x,target:p},children:[(0,c.jsxs)(G.Z,{className:"p-5",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Route Configuration"}),(0,c.jsx)(sX.Z,{className:"text-gray-600 mb-5",children:"Configure how requests to your domain will be forwarded to the target API"}),(0,c.jsxs)("div",{className:"space-y-5",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Path Prefix"}),name:"path",rules:[{required:!0,message:"Path is required",pattern:/^\//}],extra:(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-1",children:"Example: /bria, /adobe-photoshop, /elasticsearch"}),className:"mb-4",children:(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsx)(_.Z,{placeholder:"bria",value:x,onChange:e=>N(e.target.value),className:"flex-1"})})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Target URL"}),name:"target",rules:[{required:!0,message:"Target URL is required"},{type:"url",message:"Please enter a valid URL"}],extra:(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-1",children:"Example:https://engine.prod.bria-api.com"}),className:"mb-4",children:(0,c.jsx)(_.Z,{placeholder:"https://engine.prod.bria-api.com",value:p,onChange:e=>{g(e.target.value),a.setFieldsValue({target:e.target.value})}})}),(0,c.jsxs)("div",{className:"flex items-center justify-between py-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-sm font-medium text-gray-700",children:"Include Subpaths"}),(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-0.5",children:"Forward all subpaths to the target API (recommended for REST APIs)"})]}),(0,c.jsx)(A.Z.Item,{name:"include_subpath",valuePropName:"checked",className:"mb-0",children:(0,c.jsx)(tX.Z,{checked:f,onChange:v})})]})]})]}),(0,c.jsx)(lp,{pathValue:x,targetValue:p,includeSubpath:f}),(0,c.jsxs)(G.Z,{className:"p-6",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Headers"}),(0,c.jsx)(sX.Z,{className:"text-gray-600 mb-6",children:"Add headers that will be sent with every request to the target API"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Authentication Headers",(0,c.jsx)(B.Z,{title:"Authentication and other headers to forward with requests",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"headers",rules:[{required:!0,message:"Please configure the headers"}],extra:(0,c.jsxs)("div",{className:"text-xs text-gray-500 mt-2",children:[(0,c.jsx)("div",{className:"font-medium mb-1",children:"Add authentication tokens and other required headers"}),(0,c.jsx)("div",{children:"Common examples: auth_token, Authorization, x-api-key"})]}),children:(0,c.jsx)(lx,{})})]}),(0,c.jsxs)(G.Z,{className:"p-6",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Billing"}),(0,c.jsx)(sX.Z,{className:"text-gray-600 mb-6",children:"Optional cost tracking for this endpoint"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Cost Per Request (USD)",(0,c.jsx)(B.Z,{title:"Optional: Track costs for requests to this endpoint",children:(0,c.jsx)(V.Z,{className:"ml-2 text-gray-400 hover:text-gray-600"})})]}),name:"cost_per_request",extra:(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-2",children:"The cost charged for each request through this endpoint"}),children:(0,c.jsx)(O,{min:0,step:.001,precision:4,placeholder:"2.0000",size:"large"})})]}),(0,c.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:y,children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",loading:n,onClick:()=>{console.log("Submit button clicked"),a.submit()},children:n?"Creating...":"Add Pass-Through Endpoint"})]})]})]})})]})},lf=t(87769),lv=t(42208);let ly=e=>{let{value:s}=e,[t,l]=(0,d.useState)(!1),a=JSON.stringify(s,null,2);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("pre",{className:"font-mono text-xs bg-gray-50 p-2 rounded max-w-md overflow-auto",children:t?a:"••••••••"}),(0,c.jsx)("button",{onClick:()=>l(!t),className:"p-1 hover:bg-gray-100 rounded",type:"button",children:t?(0,c.jsx)(lf.Z,{className:"w-4 h-4 text-gray-500"}):(0,c.jsx)(lv.Z,{className:"w-4 h-4 text-gray-500"})})]})};var lb=e=>{let{endpointData:s,onClose:t,accessToken:l,isAdmin:a,onEndpointUpdated:r}=e,[i,n]=(0,d.useState)(s),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(!1),[h]=A.Z.useForm(),p=async e=>{try{if(!l||!(null==i?void 0:i.id))return;let s={};if(e.headers)try{s="string"==typeof e.headers?JSON.parse(e.headers):e.headers}catch(e){eo.Z.fromBackend("Invalid JSON format for headers");return}let t={path:i.path,target:e.target,headers:s,include_subpath:e.include_subpath,cost_per_request:e.cost_per_request};await (0,j.updatePassThroughEndpoint)(l,i.id,t),n({...i,...t}),x(!1),r&&r()}catch(e){console.error("Error updating endpoint:",e),eo.Z.fromBackend("Failed to update pass through endpoint")}},g=async()=>{try{if(!l||!(null==i?void 0:i.id))return;await (0,j.deletePassThroughEndpointsCall)(l,i.id),eo.Z.success("Pass through endpoint deleted successfully"),t(),r&&r()}catch(e){console.error("Error deleting endpoint:",e),eo.Z.fromBackend("Failed to delete pass through endpoint")}};return o?(0,c.jsx)("div",{className:"p-4",children:"Loading..."}):i?(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(L.ZP,{onClick:t,className:"mb-4",children:"← Back"}),(0,c.jsxs)(S.Z,{children:["Pass Through Endpoint: ",i.path]}),(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:i.id})]})}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),a?(0,c.jsx)(ss.Z,{children:"Settings"},"settings"):(0,c.jsx)(c.Fragment,{})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Path"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{className:"font-mono",children:i.path})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Target"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{children:i.target})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Configuration"}),(0,c.jsxs)("div",{className:"mt-2 space-y-2",children:[(0,c.jsx)("div",{children:(0,c.jsx)(se.Z,{color:i.include_subpath?"green":"gray",children:i.include_subpath?"Include Subpath":"Exact Path"})}),void 0!==i.cost_per_request&&(0,c.jsx)("div",{children:(0,c.jsxs)(k.Z,{children:["Cost per request: $",i.cost_per_request]})})]})]})]}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(lp,{pathValue:i.path,targetValue:i.target,includeSubpath:i.include_subpath||!1})}),i.headers&&Object.keys(i.headers).length>0&&(0,c.jsxs)(G.Z,{className:"mt-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Headers"}),(0,c.jsxs)(se.Z,{color:"blue",children:[Object.keys(i.headers).length," headers configured"]})]}),(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(ly,{value:i.headers})})]})]}),a&&(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Pass Through Endpoint Settings"}),(0,c.jsx)("div",{className:"space-x-2",children:!u&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(b.Z,{onClick:()=>x(!0),children:"Edit Settings"}),(0,c.jsx)(b.Z,{onClick:g,variant:"secondary",color:"red",children:"Delete Endpoint"})]})})]}),u?(0,c.jsxs)(A.Z,{form:h,onFinish:p,initialValues:{target:i.target,headers:i.headers?JSON.stringify(i.headers,null,2):"",include_subpath:i.include_subpath||!1,cost_per_request:i.cost_per_request},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Target URL",name:"target",rules:[{required:!0,message:"Please input a target URL"}],children:(0,c.jsx)(_.Z,{placeholder:"https://api.example.com"})}),(0,c.jsx)(A.Z.Item,{label:"Headers (JSON)",name:"headers",children:(0,c.jsx)(P.default.TextArea,{rows:5,placeholder:'{"Authorization": "Bearer your-token", "Content-Type": "application/json"}'})}),(0,c.jsx)(A.Z.Item,{label:"Include Subpath",name:"include_subpath",valuePropName:"checked",children:(0,c.jsx)(eJ.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Cost per Request",name:"cost_per_request",children:(0,c.jsx)(e8.Z,{min:0,step:.01,precision:2,placeholder:"0.00",addonBefore:"$"})}),(0,c.jsxs)("div",{className:"flex justify-end gap-2 mt-6",children:[(0,c.jsx)(L.ZP,{onClick:()=>x(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{children:"Save Changes"})]})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Path"}),(0,c.jsx)("div",{className:"font-mono",children:i.path})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Target URL"}),(0,c.jsx)("div",{children:i.target})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Include Subpath"}),(0,c.jsx)(se.Z,{color:i.include_subpath?"green":"gray",children:i.include_subpath?"Yes":"No"})]}),void 0!==i.cost_per_request&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Cost per Request"}),(0,c.jsxs)("div",{children:["$",i.cost_per_request]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Headers"}),i.headers&&Object.keys(i.headers).length>0?(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(ly,{value:i.headers})}):(0,c.jsx)("div",{className:"text-gray-500",children:"No headers configured"})]})]})]})})]})]})]}):(0,c.jsx)("div",{className:"p-4",children:"Pass through endpoint not found"})},l_=t(19130);function lN(e){let{data:s=[],columns:t,getRowCanExpand:l,renderSubComponent:a,isLoading:r=!1,loadingMessage:i="\uD83D\uDE85 Loading logs...",noDataMessage:n="No logs found"}=e,o=(0,sM.b7)({data:s,columns:t,getRowCanExpand:l,getRowId:(e,s)=>{var t;return null!==(t=null==e?void 0:e.request_id)&&void 0!==t?t:String(s)},getCoreRowModel:(0,sO.sC)(),getExpandedRowModel:(0,sO.rV)()});return(0,c.jsx)("div",{className:"rounded-lg custom-border overflow-x-auto w-full max-w-full box-border",children:(0,c.jsxs)(l_.iA,{className:"[&_td]:py-0.5 [&_th]:py-1 table-fixed w-full box-border",style:{minWidth:"400px"},children:[(0,c.jsx)(l_.ss,{children:o.getHeaderGroups().map(e=>(0,c.jsx)(l_.SC,{children:e.headers.map(e=>(0,c.jsx)(l_.xs,{className:"py-1 h-8",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,c.jsx)(l_.RM,{children:r?(0,c.jsx)(l_.SC,{children:(0,c.jsx)(l_.pj,{colSpan:t.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:i})})})}):o.getRowModel().rows.length>0?o.getRowModel().rows.map(e=>(0,c.jsxs)(d.Fragment,{children:[(0,c.jsx)(l_.SC,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(l_.pj,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap",children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))}),e.getIsExpanded()&&(0,c.jsx)(l_.SC,{children:(0,c.jsx)(l_.pj,{colSpan:e.getVisibleCells().length,className:"p-0",children:(0,c.jsx)("div",{className:"w-full max-w-full overflow-hidden box-border",children:a({row:e})})})})]},e.id)):(0,c.jsx)(l_.SC,{children:(0,c.jsx)(l_.pj,{colSpan:t.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:n})})})})})]})})}let lZ=e=>{let{value:s}=e,[t,l]=(0,d.useState)(!1),a=JSON.stringify(s);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("span",{className:"font-mono text-xs",children:t?a:"••••••••"}),(0,c.jsx)("button",{onClick:()=>l(!t),className:"p-1 hover:bg-gray-100 rounded",type:"button",children:t?(0,c.jsx)(lf.Z,{className:"w-4 h-4 text-gray-500"}):(0,c.jsx)(lv.Z,{className:"w-4 h-4 text-gray-500"})})]})};var lw=e=>{let{accessToken:s,userRole:t,userID:l,modelData:a}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(null);(0,d.useEffect)(()=>{s&&t&&l&&(0,j.getPassThroughEndpointsCall)(s).then(e=>{i(e.endpoints)})},[s,t,l]);let p=async e=>{h(e),u(!0)},g=async()=>{if(null!=x&&s){try{await (0,j.deletePassThroughEndpointsCall)(s,x);let e=r.filter(e=>e.id!==x);i(e),eo.Z.success("Endpoint deleted successfully.")}catch(e){console.error("Error deleting the endpoint:",e),eo.Z.fromBackend("Error deleting the endpoint: "+e)}u(!1),h(null)}},f=(e,s)=>{p(e)},v=[{header:"ID",accessorKey:"id",cell:e=>(0,c.jsx)(B.Z,{title:e.row.original.id,children:(0,c.jsx)("div",{className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",onClick:()=>e.row.original.id&&o(e.row.original.id),children:e.row.original.id})})},{header:"Path",accessorKey:"path"},{header:"Target",accessorKey:"target",cell:e=>(0,c.jsx)(k.Z,{children:e.getValue()})},{header:"Headers",accessorKey:"headers",cell:e=>(0,c.jsx)(lZ,{value:e.getValue()||{}})},{header:"Actions",id:"actions",cell:e=>{let{row:s}=e;return(0,c.jsxs)("div",{className:"flex space-x-1",children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>s.original.id&&o(s.original.id),title:"Edit"}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>f(s.original.id,s.index),title:"Delete"})]})}}];if(!s)return null;if(n){console.log("selectedEndpointId",n),console.log("generalSettings",r);let e=r.find(e=>e.id===n);return e?(0,c.jsx)(lb,{endpointData:e,onClose:()=>o(null),accessToken:s,isAdmin:"Admin"===t||"admin"===t,onEndpointUpdated:()=>{s&&(0,j.getPassThroughEndpointsCall)(s).then(e=>{i(e.endpoints)})}}):(0,c.jsx)("div",{children:"Endpoint not found"})}return(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Pass Through Endpoints"}),(0,c.jsx)(k.Z,{className:"text-tremor-content",children:"Configure and manage your pass-through endpoints"})]}),(0,c.jsx)(lj,{accessToken:s,setPassThroughItems:i,passThroughItems:r}),(0,c.jsx)(lN,{data:r,columns:v,renderSubComponent:()=>(0,c.jsx)("div",{}),getRowCanExpand:()=>!1,isLoading:!1,noDataMessage:"No pass-through endpoints configured"}),m&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Pass-Through Endpoint"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this pass-through endpoint? This action cannot be undone."})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:g,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{u(!1),h(null)},children:"Cancel"})]})]})]})})]})},lk=e=>{let{accessToken:s,initialModelGroupAlias:t={},onAliasUpdate:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)({aliasName:"",targetModelGroup:""}),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!0);(0,d.useEffect)(()=>{r(Object.entries(t).map((e,s)=>{let[t,l]=e;return{id:"".concat(s,"-").concat(t),aliasName:t,targetModelGroup:l}}))},[t]);let h=async e=>{if(!s)return console.error("Access token is missing"),!1;try{let t={};return e.forEach(e=>{t[e.aliasName]=e.targetModelGroup}),console.log("Saving model group alias:",t),await (0,j.setCallbacksCall)(s,{router_settings:{model_group_alias:t}}),l&&l(t),!0}catch(e){return console.error("Failed to save model group alias settings:",e),eo.Z.fromBackend("Failed to save model group alias settings"),!1}},p=async()=>{if(!i.aliasName||!i.targetModelGroup){eo.Z.fromBackend("Please provide both alias name and target model group");return}if(a.some(e=>e.aliasName===i.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=[...a,{id:"".concat(Date.now(),"-").concat(i.aliasName),aliasName:i.aliasName,targetModelGroup:i.targetModelGroup}];await h(e)&&(r(e),n({aliasName:"",targetModelGroup:""}),eo.Z.success("Alias added successfully"))},g=e=>{m({...e})},f=async()=>{if(!o)return;if(!o.aliasName||!o.targetModelGroup){eo.Z.fromBackend("Please provide both alias name and target model group");return}if(a.some(e=>e.id!==o.id&&e.aliasName===o.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=a.map(e=>e.id===o.id?o:e);await h(e)&&(r(e),m(null),eo.Z.success("Alias updated successfully"))},v=()=>{m(null)},y=async e=>{let s=a.filter(s=>s.id!==e);await h(s)&&(r(s),eo.Z.success("Alias deleted successfully"))},b=a.reduce((e,s)=>(e[s.aliasName]=s.targetModelGroup,e),{});return(0,c.jsxs)(eB.Zb,{className:"mb-6",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between cursor-pointer",onClick:()=>x(!u),children:[(0,c.jsxs)("div",{className:"flex flex-col",children:[(0,c.jsx)(eB.Dx,{className:"mb-0",children:"Model Group Alias Settings"}),(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Create aliases for your model groups to simplify API calls. For example, you can create an alias 'gpt-4o' that points to 'gpt-4o-mini-openai' model group."})]}),(0,c.jsx)("div",{className:"flex items-center",children:u?(0,c.jsx)(sB.Z,{className:"w-5 h-5 text-gray-500"}):(0,c.jsx)(sK.Z,{className:"w-5 h-5 text-gray-500"})})]}),u&&(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(eB.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Add New Alias"}),(0,c.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Alias Name"}),(0,c.jsx)("input",{type:"text",value:i.aliasName,onChange:e=>n({...i,aliasName:e.target.value}),placeholder:"e.g., gpt-4o",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Target Model Group"}),(0,c.jsx)("input",{type:"text",value:i.targetModelGroup,onChange:e=>n({...i,targetModelGroup:e.target.value}),placeholder:"e.g., gpt-4o-mini-openai",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),(0,c.jsx)("div",{className:"flex items-end",children:(0,c.jsxs)("button",{onClick:p,disabled:!i.aliasName||!i.targetModelGroup,className:"flex items-center px-4 py-2 rounded-md text-sm ".concat(i.aliasName&&i.targetModelGroup?"bg-green-600 text-white hover:bg-green-700":"bg-gray-300 text-gray-500 cursor-not-allowed"),children:[(0,c.jsx)(eq.Z,{className:"w-4 h-4 mr-1"}),"Add Alias"]})})]})]}),(0,c.jsx)(eB.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Manage Existing Aliases"}),(0,c.jsx)("div",{className:"rounded-lg custom-border relative mb-6",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(eB.iA,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(eB.ss,{children:(0,c.jsxs)(eB.SC,{children:[(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Alias Name"}),(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Target Model Group"}),(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Actions"})]})}),(0,c.jsxs)(eB.RM,{children:[a.map(e=>(0,c.jsx)(eB.SC,{className:"h-8",children:o&&o.id===e.id?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eB.pj,{className:"py-0.5",children:(0,c.jsx)("input",{type:"text",value:o.aliasName,onChange:e=>m({...o,aliasName:e.target.value}),className:"w-full px-2 py-1 border border-gray-300 rounded-md text-sm"})}),(0,c.jsx)(eB.pj,{className:"py-0.5",children:(0,c.jsx)("input",{type:"text",value:o.targetModelGroup,onChange:e=>m({...o,targetModelGroup:e.target.value}),className:"w-full px-2 py-1 border border-gray-300 rounded-md text-sm"})}),(0,c.jsx)(eB.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:f,className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:"Save"}),(0,c.jsx)("button",{onClick:v,className:"text-xs bg-gray-50 text-gray-600 px-2 py-1 rounded hover:bg-gray-100",children:"Cancel"})]})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eB.pj,{className:"py-0.5 text-sm text-gray-900",children:e.aliasName}),(0,c.jsx)(eB.pj,{className:"py-0.5 text-sm text-gray-500",children:e.targetModelGroup}),(0,c.jsx)(eB.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>g(e),className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:(0,c.jsx)(eV.Z,{className:"w-3 h-3"})}),(0,c.jsx)("button",{onClick:()=>y(e.id),className:"text-xs bg-red-50 text-red-600 px-2 py-1 rounded hover:bg-red-100",children:(0,c.jsx)(W.Z,{className:"w-3 h-3"})})]})})]})},e.id)),0===a.length&&(0,c.jsx)(eB.SC,{children:(0,c.jsx)(eB.pj,{colSpan:3,className:"py-0.5 text-sm text-gray-500 text-center",children:"No aliases added yet. Add a new alias above."})})]})]})})}),(0,c.jsxs)(eB.Zb,{children:[(0,c.jsx)(eB.Dx,{className:"mb-4",children:"Configuration Example"}),(0,c.jsx)(eB.xv,{className:"text-gray-600 mb-4",children:"Here's how your current aliases would look in the config.yaml:"}),(0,c.jsx)("div",{className:"bg-gray-100 rounded-lg p-4 font-mono text-sm",children:(0,c.jsxs)("div",{className:"text-gray-700",children:["router_settings:",(0,c.jsx)("br",{}),"\xa0\xa0model_group_alias:",0===Object.keys(b).length?(0,c.jsxs)("span",{className:"text-gray-500",children:[(0,c.jsx)("br",{}),"\xa0\xa0\xa0\xa0# No aliases configured yet"]}):Object.entries(b).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{children:[(0,c.jsx)("br",{}),'\xa0\xa0\xa0\xa0"',s,'": "',t,'"']},s)})]})})]})]})]})};let lS={"BadRequestError (400)":"BadRequestErrorRetries","AuthenticationError (401)":"AuthenticationErrorRetries","TimeoutError (408)":"TimeoutErrorRetries","RateLimitError (429)":"RateLimitErrorRetries","ContentPolicyViolationError (400)":"ContentPolicyViolationErrorRetries","InternalServerError (500)":"InternalServerErrorRetries"};var lC=e=>{let{accessToken:s,token:t,userRole:l,userID:a,modelData:r={data:[]},keys:i,setModelData:n,premiumUser:o,teams:m}=e,[u]=A.Z.useForm(),[x]=A.Z.useForm(),[h,p]=(0,d.useState)(null),[g,f]=(0,d.useState)(""),[_,N]=(0,d.useState)([]),[Z,w]=(0,d.useState)([]),[C,I]=(0,d.useState)(s0.Cl.OpenAI),[T,E]=(0,d.useState)(null),[L,P]=(0,d.useState)(!1),[M,O]=(0,d.useState)(!1),[D,F]=(0,d.useState)(null),[R,z]=(0,d.useState)([]),[U,q]=(0,d.useState)([]),[B,K]=(0,d.useState)(null),[H,Y]=(0,d.useState)([]),[J,W]=(0,d.useState)([]),[$,Q]=(0,d.useState)([]),[X,ee]=(0,d.useState)([]),[es,et]=(0,d.useState)([]),[el,ea]=(0,d.useState)([]),[er,ec]=(0,d.useState)([]),[ed,em]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[eu,ex]=(0,d.useState)(null),[eh,ep]=(0,d.useState)(null),[eg,ej]=(0,d.useState)(0),[ef,ev]=(0,d.useState)({}),[ey,eb]=(0,d.useState)([]),[e_,eN]=(0,d.useState)(!1),[eZ,ew]=(0,d.useState)(null),[ek,eS]=(0,d.useState)(null),[eC,eA]=(0,d.useState)([]),[eT,eE]=(0,d.useState)([]),[eL,eP]=(0,d.useState)({}),[eM,eO]=(0,d.useState)(!1),[eD,eF]=(0,d.useState)(null),[eR,ez]=(0,d.useState)(!1),[eU,eq]=(0,d.useState)(null),[eV,eB]=(0,d.useState)(null),[eK,eG]=(0,d.useState)(null),[eH,eY]=(0,d.useState)(null),[eJ,eW]=(0,d.useState)(""),[e$,eQ]=(0,d.useState)("personal"),[eX,e0]=(0,d.useState)("current_team"),[e1,e2]=(0,d.useState)(!1),[e4,e5]=(0,d.useState)(!1),[e3,e6]=(0,d.useState)(!1),[e7,se]=(0,d.useState)(new Set),si=(0,d.useRef)(null),so=(0,d.useRef)(null),[sc,sd]=(0,d.useState)({pageIndex:0,pageSize:50}),[sm,su]=(0,d.useState)(0),sx=(0,d.useMemo)(()=>r&&r.data&&0!==r.data.length?r.data.filter(e=>{var s,t,l,a,r;let i=""===eJ||e.model_name.toLowerCase().includes(eJ.toLowerCase()),n="all"===B||e.model_name===B||!B||"wildcard"===B&&(null===(s=e.model_name)||void 0===s?void 0:s.includes("*")),o="all"===eH||(null===(t=e.model_info.access_groups)||void 0===t?void 0:t.includes(eH))||!eH,c=!0;return"current_team"===eX&&(c="personal"===e$?(null===(l=e.model_info)||void 0===l?void 0:l.direct_access)===!0:(null===(r=e.model_info)||void 0===r?void 0:null===(a=r.access_via_team_ids)||void 0===a?void 0:a.includes(e$))===!0),i&&n&&o&&c}):[],[r,eJ,B,eH,e$,eX]),sh=(0,d.useMemo)(()=>{let e=sc.pageIndex*sc.pageSize,s=e+sc.pageSize;return sx.slice(e,s)},[sx,sc.pageIndex,sc.pageSize]);(0,d.useEffect)(()=>{sd(e=>({...e,pageIndex:0}))},[eJ,B,eH,e$,eX]);let sp=async(e,t,r)=>{if(console.log("Updating model metrics for group:",e),!s||!a||!l||!t||!r)return;console.log("inside updateModelMetrics - startTime:",t,"endTime:",r),K(e);let i=null==eZ?void 0:eZ.token;void 0===i&&(i=null);let n=ek;void 0===n&&(n=null);try{let o=await (0,j.modelMetricsCall)(s,a,l,e,t.toISOString(),r.toISOString(),i,n);console.log("Model metrics response:",o),Y(o.data),W(o.all_api_bases);let c=await (0,j.streamingModelMetricsCall)(s,e,t.toISOString(),r.toISOString());Q(c.data),ee(c.all_api_bases);let d=await (0,j.modelExceptionsCall)(s,a,l,e,t.toISOString(),r.toISOString(),i,n);console.log("Model exceptions response:",d),et(d.data),ea(d.exception_types);let m=await (0,j.modelMetricsSlowResponsesCall)(s,a,l,e,t.toISOString(),r.toISOString(),i,n);if(console.log("slowResponses:",m),ec(m),e){let l=await (0,j.adminGlobalActivityExceptions)(s,null==t?void 0:t.toISOString().split("T")[0],null==r?void 0:r.toISOString().split("T")[0],e);ev(l);let a=await (0,j.adminGlobalActivityExceptionsPerDeployment)(s,null==t?void 0:t.toISOString().split("T")[0],null==r?void 0:r.toISOString().split("T")[0],e);eb(a)}}catch(e){console.error("Failed to fetch model metrics",e)}},sg=async e=>{try{let s=await (0,j.credentialListCall)(e);console.log("credentials: ".concat(JSON.stringify(s))),eE(s.credentials)}catch(e){console.error("Error fetching credentials:",e)}};(0,d.useEffect)(()=>{sp(B,ed.from,ed.to)},[eZ,ek,eV]),(0,d.useEffect)(()=>{let e=e=>{si.current&&!si.current.contains(e.target)&&e6(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let sj={name:"file",accept:".json",beforeUpload:e=>{if("application/json"===e.type){let s=new FileReader;s.onload=e=>{if(e.target){let s=e.target.result;console.log("Resetting vertex_credentials to JSON; jsonStr: ".concat(s)),u.setFieldsValue({vertex_credentials:s}),console.log("Form values right after setting:",u.getFieldsValue())}},s.readAsText(e)}return!1},onChange(e){console.log("Upload onChange triggered with values:",e),console.log("Current form values:",u.getFieldsValue()),"uploading"!==e.file.status&&console.log(e.file,e.fileList),"done"===e.file.status?eo.Z.success("".concat(e.file.name," file uploaded successfully")):"error"===e.file.status&&eo.Z.fromBackend("".concat(e.file.name," file upload failed."))}},sf=()=>{f(new Date().toLocaleString())},sv=async()=>{if(!s){console.error("Access token is missing");return}try{let e={router_settings:{}};"global"===B?(console.log("Saving global retry policy:",eh),eh&&(e.router_settings.retry_policy=eh),eo.Z.success("Global retry settings saved successfully")):(console.log("Saving model group retry policy for",B,":",eu),eu&&(e.router_settings.model_group_retry_policy=eu),eo.Z.success("Retry settings saved successfully for ".concat(B))),await (0,j.setCallbacksCall)(s,e)}catch(e){console.error("Failed to save retry settings:",e),eo.Z.fromBackend("Failed to save retry settings")}};if((0,d.useEffect)(()=>{if(!s||!t||!l||!a)return;let e=async()=>{try{var e,t,r,i,o,c,d,m,u,x,h,p;let g=await (0,j.modelInfoCall)(s,a,l);console.log("Model data response:",g.data),n(g);let f=await (0,j.modelSettingsCall)(s);f&&w(f);let v=new Set;for(let e=0;e0&&(_=y[y.length-1],console.log("_initial_model_group:",_)),console.log("selectedModelGroup:",B);let N=await (0,j.modelMetricsCall)(s,a,l,_,null===(e=ed.from)||void 0===e?void 0:e.toISOString(),null===(t=ed.to)||void 0===t?void 0:t.toISOString(),null==eZ?void 0:eZ.token,ek);console.log("Model metrics response:",N),Y(N.data),W(N.all_api_bases);let Z=await (0,j.streamingModelMetricsCall)(s,_,null===(r=ed.from)||void 0===r?void 0:r.toISOString(),null===(i=ed.to)||void 0===i?void 0:i.toISOString());Q(Z.data),ee(Z.all_api_bases);let k=await (0,j.modelExceptionsCall)(s,a,l,_,null===(o=ed.from)||void 0===o?void 0:o.toISOString(),null===(c=ed.to)||void 0===c?void 0:c.toISOString(),null==eZ?void 0:eZ.token,ek);console.log("Model exceptions response:",k),et(k.data),ea(k.exception_types);let S=await (0,j.modelMetricsSlowResponsesCall)(s,a,l,_,null===(d=ed.from)||void 0===d?void 0:d.toISOString(),null===(m=ed.to)||void 0===m?void 0:m.toISOString(),null==eZ?void 0:eZ.token,ek),C=await (0,j.adminGlobalActivityExceptions)(s,null===(u=ed.from)||void 0===u?void 0:u.toISOString().split("T")[0],null===(x=ed.to)||void 0===x?void 0:x.toISOString().split("T")[0],_);ev(C);let I=await (0,j.adminGlobalActivityExceptionsPerDeployment)(s,null===(h=ed.from)||void 0===h?void 0:h.toISOString().split("T")[0],null===(p=ed.to)||void 0===p?void 0:p.toISOString().split("T")[0],_);eb(I),console.log("dailyExceptions:",C),console.log("dailyExceptionsPerDeplyment:",I),console.log("slowResponses:",S),ec(S);let A=await (0,j.allEndUsersCall)(s);eA(null==A?void 0:A.map(e=>e.user_id));let T=(await (0,j.getCallbacksCall)(s,a,l)).router_settings;console.log("routerSettingsInfo:",T);let E=T.model_group_retry_policy,L=T.num_retries;console.log("model_group_retry_policy:",E),console.log("default_retries:",L),ex(E),ep(T.retry_policy),ej(L);let P=T.model_group_alias||{};eP(P)}catch(e){console.error("There was an error fetching the model data",e)}};s&&t&&l&&a&&e();let r=async()=>{let e=await (0,j.modelCostMap)(s);console.log("received model cost map data: ".concat(Object.keys(e))),p(e)};null==h&&r(),sf()},[s,t,l,a,h,g,eV]),!r||!s||!t||!l||!a)return(0,c.jsx)("div",{children:"Loading..."});let sy=[],sb=[];for(let e=0;e(console.log("GET PROVIDER CALLED! - ".concat(h)),null!=h&&"object"==typeof h&&e in h)?h[e].litellm_provider:"openai";if(t){let e=t.split("/"),s=e[0];(i=l)||(i=1===e.length?u(t):s)}else i="-";a&&(n=null==a?void 0:a.input_cost_per_token,o=null==a?void 0:a.output_cost_per_token,c=null==a?void 0:a.max_tokens,d=null==a?void 0:a.max_input_tokens),(null==s?void 0:s.litellm_params)&&(m=Object.fromEntries(Object.entries(null==s?void 0:s.litellm_params).filter(e=>{let[s]=e;return"model"!==s&&"api_base"!==s}))),r.data[e].provider=i,r.data[e].input_cost=n,r.data[e].output_cost=o,r.data[e].litellm_model_name=t,sb.push(i),r.data[e].input_cost&&(r.data[e].input_cost=(1e6*Number(r.data[e].input_cost)).toFixed(2)),r.data[e].output_cost&&(r.data[e].output_cost=(1e6*Number(r.data[e].output_cost)).toFixed(2)),r.data[e].max_tokens=c,r.data[e].max_input_tokens=d,r.data[e].api_base=null==s?void 0:null===(sZ=s.litellm_params)||void 0===sZ?void 0:sZ.api_base,r.data[e].cleanedLitellmParams=m,sy.push(s.model_name),console.log(r.data[e])}if(l&&"Admin Viewer"==l){let{Title:e,Paragraph:s}=en.default;return(0,c.jsxs)("div",{children:[(0,c.jsx)(e,{level:1,children:"Access Denied"}),(0,c.jsx)(s,{children:"Ask your proxy admin for access to view all models"})]})}let sw=(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mb-1",children:"Select API Key Name"}),o?(0,c.jsxs)("div",{children:[(0,c.jsxs)(e9.Z,{defaultValue:"all-keys",children:[(0,c.jsx)(ei.Z,{value:"all-keys",onClick:()=>{ew(null)},children:"All Keys"},"all-keys"),null==i?void 0:i.map((e,s)=>e&&null!==e.key_alias&&e.key_alias.length>0?(0,c.jsx)(ei.Z,{value:String(s),onClick:()=>{ew(e)},children:e.key_alias},s):null)]}),(0,c.jsx)(k.Z,{className:"mt-1",children:"Select Customer Name"}),(0,c.jsxs)(e9.Z,{defaultValue:"all-customers",children:[(0,c.jsx)(ei.Z,{value:"all-customers",onClick:()=>{eS(null)},children:"All Customers"},"all-customers"),null==eC?void 0:eC.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,onClick:()=>{eS(e)},children:e},s))]}),(0,c.jsx)(k.Z,{className:"mt-1",children:"Select Team"}),(0,c.jsxs)(e9.Z,{className:"w-64 relative z-50",defaultValue:"all",value:null!=eK?eK:"all",onValueChange:e=>eG("all"===e?null:e),children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Teams"}),null==m?void 0:m.filter(e=>e.team_id).map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:e.team_alias?"".concat(e.team_alias," (").concat(e.team_id.slice(0,8),"...)"):"Team ".concat(e.team_id.slice(0,8),"...")},e.team_id))]})]}):(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mt-1",children:"Select Team"}),(0,c.jsxs)(e9.Z,{className:"w-64 relative z-50",defaultValue:"all",value:null!=eK?eK:"all",onValueChange:e=>eG("all"===e?null:e),children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Teams"}),null==m?void 0:m.filter(e=>e.team_id).map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:e.team_alias?"".concat(e.team_alias," (").concat(e.team_id.slice(0,8),"...)"):"Team ".concat(e.team_id.slice(0,8),"...")},e.team_id))]})]})]}),sk=e=>{var s,t;let{payload:l,active:a}=e;if(!a||!l)return null;let r=null===(t=l[0])||void 0===t?void 0:null===(s=t.payload)||void 0===s?void 0:s.date,i=l.sort((e,s)=>s.value-e.value);if(i.length>5){let e=i.length-5;(i=i.slice(0,5)).push({dataKey:"".concat(e," other deployments"),value:l.slice(5).reduce((e,s)=>e+s.value,0),color:"gray"})}return(0,c.jsxs)("div",{className:"w-150 rounded-tremor-default border border-tremor-border bg-tremor-background p-2 text-tremor-default shadow-tremor-dropdown",children:[r&&(0,c.jsxs)("p",{className:"text-tremor-content-emphasis mb-2",children:["Date: ",r]}),i.map((e,s)=>{let t=parseFloat(e.value.toFixed(5)),l=0===t&&e.value>0?"<0.00001":t.toFixed(5);return(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 mt-1 rounded-full bg-".concat(e.color,"-500")}),(0,c.jsx)("p",{className:"text-tremor-content",children:e.dataKey})]}),(0,c.jsx)("p",{className:"font-medium text-tremor-content-emphasis text-righ ml-2",children:l})]},s)})]})};console.log("selectedProvider: ".concat(C)),console.log("providerModels.length: ".concat(_.length));let sS=Object.keys(s0.Cl).find(e=>s0.Cl[e]===C);return(sS&&Z&&Z.find(e=>e.name===s0.fK[sS]),eU)?(0,c.jsx)("div",{className:"w-full h-full",children:(0,c.jsx)(tN,{teamId:eU,onClose:()=>eq(null),accessToken:s,is_team_admin:"Admin"===l,is_proxy_admin:"Proxy Admin"===l,userModels:sy,editTeam:!1,onUpdate:sf})}):(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("h2",{className:"text-lg font-semibold",children:"Model Management"}),eI.ZL.includes(l)?(0,c.jsx)("p",{className:"text-sm text-gray-600",children:"Add and manage models for the proxy"}):(0,c.jsx)("p",{className:"text-sm text-gray-600",children:"Add models for teams you are an admin for."})]})}),eD?(0,c.jsx)(tR,{modelId:eD,editModel:!0,onClose:()=>{eF(null),ez(!1)},modelData:r.data.find(e=>e.model_info.id===eD),accessToken:s,userID:a,userRole:l,setEditModalVisible:O,setSelectedModel:F,onModelUpdate:e=>{n({...r,data:r.data.map(s=>s.model_info.id===e.model_info.id?e:s)}),sf()},modelAccessGroups:U}):(0,c.jsxs)(st.Z,{index:sm,onIndexChange:su,className:"gap-2 h-[75vh] w-full ",children:[(0,c.jsxs)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsxs)("div",{className:"flex",children:[eI.ZL.includes(l)?(0,c.jsx)(ss.Z,{children:"All Models"}):(0,c.jsx)(ss.Z,{children:"Your Models"}),(0,c.jsx)(ss.Z,{children:"Add Model"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"LLM Credentials"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Pass-Through Endpoints"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Health Status"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Model Analytics"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Model Retry Settings"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Model Group Alias"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Price Data Reload"})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[g&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",g]}),(0,c.jsx)(sD.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center",onClick:sf})]})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(y.Z,{children:(0,c.jsx)("div",{className:"flex flex-col space-y-4",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsxs)("div",{className:"border-b px-6 py-4 bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold text-gray-900",children:"Current Team:"}),(0,c.jsxs)(e9.Z,{className:"w-80",defaultValue:"personal",value:e$,onValueChange:e=>eQ(e),children:[(0,c.jsx)(ei.Z,{value:"personal",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"Personal"})]})}),null==m?void 0:m.filter(e=>e.team_id).map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e.team_alias?"".concat(e.team_alias.slice(0,30),"..."):"Team ".concat(e.team_id.slice(0,30),"...")})]})},e.team_id))]})]}),(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold text-gray-900",children:"View:"}),(0,c.jsxs)(e9.Z,{className:"w-64",defaultValue:"current_team",value:eX,onValueChange:e=>e0(e),children:[(0,c.jsx)(ei.Z,{value:"current_team",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-purple-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"Current Team Models"})]})}),(0,c.jsx)(ei.Z,{value:"all",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-gray-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"All Available Models"})]})})]})]})]}),"current_team"===eX&&(0,c.jsxs)("div",{className:"flex items-start gap-2 mt-3",children:[(0,c.jsx)(V.Z,{className:"text-gray-400 mt-0.5 flex-shrink-0 text-xs"}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"personal"===e$?(0,c.jsxs)("span",{children:["To access these models: Create a Virtual Key without selecting a team on the"," ",(0,c.jsx)("a",{href:"/?login=success&page=api-keys",className:"text-gray-600 hover:text-gray-800 underline",children:"Virtual Keys page"})]}):(0,c.jsxs)("span",{children:['To access these models: Create a Virtual Key and select Team as "',e$,'" on the'," ",(0,c.jsx)("a",{href:"/?login=success&page=api-keys",className:"text-gray-600 hover:text-gray-800 underline",children:"Virtual Keys page"})]})})]})]}),(0,c.jsx)("div",{className:"border-b px-6 py-4",children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search model names...",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:eJ,onChange:e=>eW(e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 ".concat(e1?"bg-gray-100":""),onClick:()=>e2(!e1),children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filters"]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",onClick:()=>{eW(""),K("all"),eY(null),eQ("personal"),e0("current_team"),sd({pageIndex:0,pageSize:50})},children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Reset Filters"]})]}),e1&&(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-3",children:[(0,c.jsx)("div",{className:"w-64",children:(0,c.jsxs)(e9.Z,{value:null!=B?B:"all",onValueChange:e=>K("all"===e?"all":e),placeholder:"Filter by Public Model Name",children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Models"}),(0,c.jsx)(ei.Z,{value:"wildcard",children:"Wildcard Models (*)"}),R.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,children:e},s))]})}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsxs)(e9.Z,{value:null!=eH?eH:"all",onValueChange:e=>eY("all"===e?null:e),placeholder:"Filter by Model Access Group",children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Model Access Groups"}),U.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,children:e},s))]})})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-sm text-gray-700",children:sx.length>0?"Showing ".concat(sc.pageIndex*sc.pageSize+1," - ").concat(Math.min((sc.pageIndex+1)*sc.pageSize,sx.length)," of ").concat(sx.length," results"):"Showing 0 results"}),sx.length>sc.pageSize&&(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("button",{onClick:()=>sd(e=>({...e,pageIndex:e.pageIndex-1})),disabled:0===sc.pageIndex,className:"px-3 py-1 text-sm border rounded-md ".concat(0===sc.pageIndex?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Previous"}),(0,c.jsx)("button",{onClick:()=>sd(e=>({...e,pageIndex:e.pageIndex+1})),disabled:sc.pageIndex>=Math.ceil(sx.length/sc.pageSize)-1,className:"px-3 py-1 text-sm border rounded-md ".concat(sc.pageIndex>=Math.ceil(sx.length/sc.pageSize)-1?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Next"})]})]})]})}),(0,c.jsx)(t8.C,{columns:t7(l,a,o,eF,eq,ta,e=>{F(e),O(!0)},sf,ez,e7,se),data:sh,isLoading:!1,table:so})]})})})}),(0,c.jsx)(sa.Z,{className:"h-full",children:(0,c.jsx)(t6,{form:u,handleOk:()=>{console.log("\uD83D\uDE80 handleOk called from model dashboard!"),console.log("Current form values:",u.getFieldsValue()),u.validateFields().then(e=>{console.log("✅ Validation passed, submitting:",e),s2(e,s,u,sf)}).catch(e=>{var s;console.error("❌ Validation failed:",e),console.error("Form errors:",e.errorFields);let t=(null===(s=e.errorFields)||void 0===s?void 0:s.map(e=>"".concat(e.name.join("."),": ").concat(e.errors.join(", "))).join(" | "))||"Unknown validation error";eo.Z.fromBackend("Please fill in the following required fields: ".concat(t))})},selectedProvider:C,setSelectedProvider:I,providerModels:_,setProviderModelsFn:e=>{let s=(0,s0.bK)(e,h);N(s),console.log("providerModels: ".concat(s))},getPlaceholder:s0.ph,uploadProps:sj,showAdvancedSettings:eM,setShowAdvancedSettings:eO,teams:m,credentials:eT,accessToken:s,userRole:l,premiumUser:o})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(tl,{accessToken:s,uploadProps:sj,credentialList:eT,fetchCredentials:sg})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lw,{accessToken:s,userRole:l,userID:a,modelData:r})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(ld,{accessToken:s,modelData:r,all_models_on_proxy:sy,getDisplayModelName:ta,setSelectedModelId:eF})}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:4,className:"mt-2 mb-2",children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(ti,{value:ed,className:"mr-2",onValueChange:e=>{em(e),sp(B,e.from,e.to)}})}),(0,c.jsxs)(v.Z,{className:"ml-2",children:[(0,c.jsx)(k.Z,{children:"Select Model Group"}),(0,c.jsx)(e9.Z,{defaultValue:B||R[0],value:B||R[0],children:R.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,onClick:()=>sp(e,ed.from,ed.to),children:e},s))})]}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(tc.Z,{trigger:"click",content:sw,overlayStyle:{width:"20vw"},children:(0,c.jsx)(b.Z,{icon:sC.Z,size:"md",variant:"secondary",className:"mt-4 ml-2",style:{border:"none"},onClick:()=>eN(!0)})})})]}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(G.Z,{className:"mr-2 max-h-[400px] min-h-[400px]",children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"line",defaultValue:"1",children:[(0,c.jsx)(ss.Z,{value:"1",children:"Avg. Latency per Token"}),(0,c.jsx)(ss.Z,{value:"2",children:"Time to first token"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("p",{className:"text-gray-500 italic",children:" (seconds/token)"}),(0,c.jsx)(k.Z,{className:"text-gray-500 italic mt-1 mb-1",children:"average Latency for successfull requests divided by the total tokens"}),H&&J&&(0,c.jsx)(tn.Z,{title:"Model Latency",className:"h-72",data:H,showLegend:!1,index:"date",categories:J,connectNulls:!0,customTooltip:sk})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(tm,{modelMetrics:$,modelMetricsCategories:X,customTooltip:sk,premiumUser:o})})]})]})})}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(G.Z,{className:"ml-2 max-h-[400px] min-h-[400px] overflow-y-auto",children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Deployment"}),(0,c.jsx)(sq.Z,{children:"Success Responses"}),(0,c.jsxs)(sq.Z,{children:["Slow Responses ",(0,c.jsx)("p",{children:"Success Responses taking 600+s"})]})]})}),(0,c.jsx)(sR.Z,{children:er.map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e.api_base}),(0,c.jsx)(sz.Z,{children:e.total_count}),(0,c.jsx)(sz.Z,{children:e.slow_count})]},s))})]})})})]}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 w-full mt-2",children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(S.Z,{children:["All Exceptions for ",B]}),(0,c.jsx)(to.Z,{className:"h-60",data:es,index:"model",categories:el,stack:!0,yAxisWidth:30})]})}),(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full mt-2",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(S.Z,{children:["All Up Rate Limit Errors (429) for ",B]}),(0,c.jsxs)(y.Z,{numItems:1,children:[(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Num Rate Limit Errors ",ef.sum_num_rate_limit_exceptions]}),(0,c.jsx)(to.Z,{className:"h-40",data:ef.daily_data,index:"date",colors:["rose"],categories:["num_rate_limit_exceptions"],onValueChange:e=>console.log(e)})]}),(0,c.jsx)(v.Z,{})]})]}),o?(0,c.jsx)(c.Fragment,{children:ey.map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:e.api_base?e.api_base:"Unknown API Base"}),(0,c.jsx)(y.Z,{numItems:1,children:(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Num Rate Limit Errors (429) ",e.sum_num_rate_limit_exceptions]}),(0,c.jsx)(to.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["rose"],categories:["num_rate_limit_exceptions"],onValueChange:e=>console.log(e)})]})})]},s))}):(0,c.jsx)(c.Fragment,{children:ey&&ey.length>0&&ey.slice(0,1).map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"✨ Rate Limit Errors by Deployment"}),(0,c.jsx)("p",{className:"mb-2 text-gray-500 italic text-[12px]",children:"Upgrade to see exceptions for all deployments"}),(0,c.jsx)(b.Z,{variant:"primary",className:"mb-2",children:(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"Get Free Trial"})}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:e.api_base}),(0,c.jsx)(y.Z,{numItems:1,children:(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Num Rate Limit Errors ",e.sum_num_rate_limit_exceptions]}),(0,c.jsx)(to.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["rose"],categories:["num_rate_limit_exceptions"],onValueChange:e=>console.log(e)})]})})]})]},s))})]})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"flex items-center gap-4 mb-6",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(k.Z,{children:"Retry Policy Scope:"}),(0,c.jsxs)(e9.Z,{className:"ml-2 w-48",defaultValue:"global",value:"global"===B?"global":B||R[0],onValueChange:e=>K(e),children:[(0,c.jsx)(ei.Z,{value:"global",children:"Global Default"}),R.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,onClick:()=>K(e),children:e},s))]})]})}),"global"===B?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(S.Z,{children:"Global Retry Policy"}),(0,c.jsx)(k.Z,{className:"mb-6",children:"Default retry settings applied to all model groups unless overridden"})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(S.Z,{children:["Retry Policy for ",B]}),(0,c.jsx)(k.Z,{className:"mb-6",children:"Model-specific retry settings. Falls back to global defaults if not set."})]}),lS&&(0,c.jsx)("table",{children:(0,c.jsx)("tbody",{children:Object.entries(lS).map((e,s)=>{var t,l,a,r;let i,[n,o]=e;if("global"===B)i=null!==(t=null==eh?void 0:eh[o])&&void 0!==t?t:eg;else{let e=null==eu?void 0:null===(l=eu[B])||void 0===l?void 0:l[o];i=null!=e?e:null!==(a=null==eh?void 0:eh[o])&&void 0!==a?a:eg}return(0,c.jsxs)("tr",{className:"flex justify-between items-center mt-2",children:[(0,c.jsxs)("td",{children:[(0,c.jsx)(k.Z,{children:n}),"global"!==B&&(0,c.jsxs)(k.Z,{className:"text-xs text-gray-500 ml-2",children:["(Global: ",null!==(r=null==eh?void 0:eh[o])&&void 0!==r?r:eg,")"]})]}),(0,c.jsx)("td",{children:(0,c.jsx)(e8.Z,{className:"ml-5",value:i,min:0,step:1,onChange:e=>{"global"===B?ep(s=>null==e?s:{...null!=s?s:{},[o]:e}):ex(s=>{var t;let l=null!==(t=null==s?void 0:s[B])&&void 0!==t?t:{};return{...null!=s?s:{},[B]:{...l,[o]:e}}})}})})]},s)})})}),(0,c.jsx)(b.Z,{className:"mt-6 mr-8",onClick:sv,children:"Save"})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lk,{accessToken:s,initialModelGroupAlias:eL,onAliasUpdate:eP})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)("div",{className:"p-6",children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(S.Z,{children:"Price Data Management"}),(0,c.jsx)(k.Z,{className:"text-tremor-content",children:"Manage model pricing data and configure automatic reload schedules"})]}),(0,c.jsx)(lr,{accessToken:s,onReloadSuccess:()=>{(async()=>{p(await (0,j.modelCostMap)(s))})()},buttonText:"Reload Price Data",size:"middle",type:"primary",className:"w-full"})]})})]})]})]})})})},lI=e=>{let{visible:s,possibleUIRoles:t,onCancel:l,user:a,onSubmit:r}=e,[i,n]=(0,d.useState)(a),[o]=A.Z.useForm();(0,d.useEffect)(()=>{o.resetFields()},[a]);let m=async()=>{o.resetFields(),l()},u=async e=>{r(e),o.resetFields(),l()};return a?(0,c.jsx)(T.Z,{visible:s,onCancel:m,footer:null,title:"Edit User "+a.user_id,width:1e3,children:(0,c.jsx)(A.Z,{form:o,onFinish:u,initialValues:a,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"User Email",tooltip:"Email of the User",name:"user_email",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"user_id",name:"user_id",hidden:!0,children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"User Role",name:"user_role",children:(0,c.jsx)(I.default,{children:t&&Object.entries(t).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:"Spend (USD)",name:"spend",tooltip:"(float) - Spend of all LLM calls completed by this user",help:"Across all keys (including keys with team_id).",children:(0,c.jsx)(e8.Z,{min:0,step:.01})}),(0,c.jsx)(A.Z.Item,{label:"User Budget (USD)",name:"max_budget",tooltip:"(float) - Maximum budget of this user",help:"Maximum budget of this user.",children:(0,c.jsx)(O,{min:0,step:.01})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsx)(eE,{})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})})]})})}):null},lA=t(16853);function lT(e){let{userData:s,onCancel:t,onSubmit:l,teams:a,accessToken:r,userID:i,userRole:n,userModels:o,possibleUIRoles:m,isBulkEdit:u=!1}=e,[x]=A.Z.useForm();return d.useEffect(()=>{var e,t,l,a,r,i;x.setFieldsValue({user_id:s.user_id,user_email:null===(e=s.user_info)||void 0===e?void 0:e.user_email,user_role:null===(t=s.user_info)||void 0===t?void 0:t.user_role,models:(null===(l=s.user_info)||void 0===l?void 0:l.models)||[],max_budget:null===(a=s.user_info)||void 0===a?void 0:a.max_budget,budget_duration:null===(r=s.user_info)||void 0===r?void 0:r.budget_duration,metadata:(null===(i=s.user_info)||void 0===i?void 0:i.metadata)?JSON.stringify(s.user_info.metadata,null,2):void 0})},[s,x]),(0,c.jsxs)(A.Z,{form:x,onFinish:e=>{if(e.metadata&&"string"==typeof e.metadata)try{e.metadata=JSON.parse(e.metadata)}catch(e){console.error("Error parsing metadata JSON:",e);return}l(e)},layout:"vertical",children:[!u&&(0,c.jsx)(A.Z.Item,{label:"User ID",name:"user_id",children:(0,c.jsx)(_.Z,{disabled:!0})}),!u&&(0,c.jsx)(A.Z.Item,{label:"Email",name:"user_email",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Global Proxy Role"," ",(0,c.jsx)(B.Z,{title:"This is the role that the user will globally on the proxy. This role is independent of any team/org specific roles.",children:(0,c.jsx)(V.Z,{})})]}),name:"user_role",children:(0,c.jsx)(I.default,{children:m&&Object.entries(m).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Personal Models"," ",(0,c.jsx)(B.Z,{title:"Select which models this user can access outside of team-scope. Choose 'All Proxy Models' to grant access to all models available on the proxy.",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},disabled:!eI.ZL.includes(n||""),children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),(0,c.jsx)(I.default.Option,{value:"no-default-models",children:"No Default Models"},"no-default-models"),o.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsx)(eE,{})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(lA.Z,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",type:"button",onClick:t,children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})]})}let{Text:lE,Title:lL}=en.default;var lP=e=>{let{visible:s,onCancel:t,selectedUsers:l,possibleUIRoles:a,accessToken:r,onSuccess:i,teams:n,userRole:o,userModels:m,allowAllUsers:u=!1}=e,[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)([]),[f,v]=(0,d.useState)(null),[y,b]=(0,d.useState)(!1),[_,N]=(0,d.useState)(!1),Z=()=>{g([]),v(null),b(!1),N(!1),t()},w=d.useMemo(()=>({user_id:"bulk_edit",user_info:{user_email:"",user_role:"",teams:[],models:[],max_budget:null,spend:0,metadata:{},created_at:null,updated_at:null},keys:[],teams:n||[]}),[n,s]),k=async e=>{if(console.log("formValues",e),!r){eo.Z.fromBackend("Access token not found");return}h(!0);try{let s=l.map(e=>e.user_id),a={};e.user_role&&""!==e.user_role&&(a.user_role=e.user_role),null!==e.max_budget&&void 0!==e.max_budget&&(a.max_budget=e.max_budget),e.models&&e.models.length>0&&(a.models=e.models),e.budget_duration&&""!==e.budget_duration&&(a.budget_duration=e.budget_duration),e.metadata&&Object.keys(e.metadata).length>0&&(a.metadata=e.metadata);let n=Object.keys(a).length>0,o=y&&p.length>0;if(!n&&!o){eo.Z.fromBackend("Please modify at least one field or select teams to add users to");return}let c=[];if(n){if(_){let e=await (0,j.userBulkUpdateUserCall)(r,a,void 0,!0);c.push("Updated all users (".concat(e.total_requested," total)"))}else await (0,j.userBulkUpdateUserCall)(r,a,s),c.push("Updated ".concat(s.length," user(s)"))}if(o){let e=[];for(let s of p)try{let t=null;_?t=null:l.map(e=>({user_id:e.user_id,role:"user",user_email:e.user_email||null}));let a=await (0,j.teamBulkMemberAddCall)(r,s,t||null,f||void 0,_);console.log("result",a),e.push({teamId:s,success:!0,successfulAdditions:a.successful_additions,failedAdditions:a.failed_additions})}catch(t){console.error("Failed to add users to team ".concat(s,":"),t),e.push({teamId:s,success:!1,error:t})}let s=e.filter(e=>e.success),t=e.filter(e=>!e.success);if(s.length>0){let e=s.reduce((e,s)=>e+s.successfulAdditions,0);c.push("Added users to ".concat(s.length," team(s) (").concat(e," total additions)"))}t.length>0&&ty.ZP.warning("Failed to add users to ".concat(t.length," team(s)"))}c.length>0&&eo.Z.success(c.join(". ")),g([]),v(null),b(!1),N(!1),i(),t()}catch(e){console.error("Bulk operation failed:",e),eo.Z.fromBackend("Failed to perform bulk operations")}finally{h(!1)}};return(0,c.jsxs)(T.Z,{visible:s,onCancel:Z,footer:null,title:_?"Bulk Edit All Users":"Bulk Edit ".concat(l.length," User(s)"),width:800,children:[u&&(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsx)(eR.Z,{checked:_,onChange:e=>N(e.target.checked),children:(0,c.jsx)(lE,{strong:!0,children:"Update ALL users in the system"})}),_&&(0,c.jsx)("div",{style:{marginTop:8},children:(0,c.jsx)(lE,{type:"warning",style:{fontSize:"12px"},children:"⚠️ This will apply changes to ALL users in the system, not just the selected ones."})})]}),!_&&(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsxs)(lL,{level:5,children:["Selected Users (",l.length,"):"]}),(0,c.jsx)(em.Z,{size:"small",bordered:!0,dataSource:l,pagination:!1,scroll:{y:200},rowKey:"user_id",columns:[{title:"User ID",dataIndex:"user_id",key:"user_id",width:"30%",render:e=>(0,c.jsx)(lE,{strong:!0,style:{fontSize:"12px"},children:e.length>20?"".concat(e.slice(0,20),"..."):e})},{title:"Email",dataIndex:"user_email",key:"user_email",width:"25%",render:e=>(0,c.jsx)(lE,{type:"secondary",style:{fontSize:"12px"},children:e||"No email"})},{title:"Current Role",dataIndex:"user_role",key:"user_role",width:"25%",render:e=>{var s;return(0,c.jsx)(lE,{style:{fontSize:"12px"},children:(null==a?void 0:null===(s=a[e])||void 0===s?void 0:s.ui_label)||e})}},{title:"Budget",dataIndex:"max_budget",key:"max_budget",width:"20%",render:e=>(0,c.jsx)(lE,{style:{fontSize:"12px"},children:null!==e?"$".concat(e):"Unlimited"})}]})]}),(0,c.jsx)(K.Z,{}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsxs)(lE,{children:[(0,c.jsx)("strong",{children:"Instructions:"})," Fill in the fields below with the values you want to apply to all selected users. You can bulk edit: role, budget, models, and metadata. You can also add users to teams."]})}),(0,c.jsx)(tL.Z,{title:"Team Management",size:"small",className:"mb-4",style:{backgroundColor:"#fafafa"},children:(0,c.jsxs)(t9.Z,{direction:"vertical",style:{width:"100%"},children:[(0,c.jsx)(eR.Z,{checked:y,onChange:e=>b(e.target.checked),children:"Add selected users to teams"}),y&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(lE,{strong:!0,children:"Select Teams:"}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select teams to add users to",value:p,onChange:g,style:{width:"100%",marginTop:8},options:(null==n?void 0:n.map(e=>({label:e.team_alias||e.team_id,value:e.team_id})))||[]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(lE,{strong:!0,children:"Team Budget (Optional):"}),(0,c.jsx)(e8.Z,{placeholder:"Max budget per user in team",value:f,onChange:e=>v(e),style:{width:"100%",marginTop:8},min:0,step:.01,precision:2}),(0,c.jsx)(lE,{type:"secondary",style:{fontSize:"12px"},children:"Leave empty for unlimited budget within team limits"})]}),(0,c.jsx)(lE,{type:"secondary",style:{fontSize:"12px"},children:'Users will be added with "user" role by default. All users will be added to each selected team.'})]})]})}),(0,c.jsx)(lT,{userData:w,onCancel:Z,onSubmit:k,teams:n,accessToken:r,userID:"bulk_edit",userRole:o,userModels:m,possibleUIRoles:a,isBulkEdit:!0}),x&&(0,c.jsx)("div",{style:{textAlign:"center",marginTop:"10px"},children:(0,c.jsxs)(lE,{children:["Updating ",_?"all users":l.length," user(s)..."]})})]})};let lM=(e,s,t,l,a,r)=>{let i=[{header:"User ID",accessorKey:"user_id",cell:e=>{let{row:s}=e;return(0,c.jsx)(B.Z,{title:s.original.user_id,children:(0,c.jsx)("span",{className:"text-xs",children:s.original.user_id?"".concat(s.original.user_id.slice(0,7),"..."):"-"})})}},{header:"Email",accessorKey:"user_email",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.user_email||"-"})}},{header:"Global Proxy Role",accessorKey:"user_role",cell:s=>{var t;let{row:l}=s;return(0,c.jsx)("span",{className:"text-xs",children:(null==e?void 0:null===(t=e[l.original.user_role])||void 0===t?void 0:t.ui_label)||"-"})}},{header:"Spend (USD)",accessorKey:"spend",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.spend?eP(s.original.spend,4):"-"})}},{header:"Budget (USD)",accessorKey:"max_budget",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:null!==s.original.max_budget?s.original.max_budget:"Unlimited"})}},{header:()=>(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{children:"SSO ID"}),(0,c.jsx)(B.Z,{title:"SSO ID is the ID of the user in the SSO provider. If the user is not using SSO, this will be null.",children:(0,c.jsx)(li.Z,{className:"w-4 h-4"})})]}),accessorKey:"sso_user_id",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:null!==s.original.sso_user_id?s.original.sso_user_id:"-"})}},{header:"API Keys",accessorKey:"key_count",cell:e=>{let{row:s}=e;return(0,c.jsx)(y.Z,{numItems:2,children:s.original.key_count>0?(0,c.jsxs)(se.Z,{size:"xs",color:"indigo",children:[s.original.key_count," Keys"]}):(0,c.jsx)(se.Z,{size:"xs",color:"gray",children:"No Keys"})})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.created_at?new Date(s.original.created_at).toLocaleDateString():"-"})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.updated_at?new Date(s.original.updated_at).toLocaleDateString():"-"})}},{id:"actions",header:"",cell:e=>{let{row:s}=e;return(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(B.Z,{title:"Edit user details",zIndex:9999,children:(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>a(s.original.user_id,!0)})}),(0,c.jsx)(B.Z,{title:"Delete user",zIndex:9999,children:(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>t(s.original.user_id)})}),(0,c.jsx)(B.Z,{title:"Reset Password",zIndex:9999,children:(0,c.jsx)(sD.Z,{icon:sn.Z,size:"sm",onClick:()=>l(s.original.user_id)})})]})}}];if(r){let{onSelectUser:e,onSelectAll:s,isUserSelected:t,isAllSelected:l,isIndeterminate:a}=r;return[{id:"select",header:()=>(0,c.jsx)(eR.Z,{indeterminate:a,checked:l,onChange:e=>s(e.target.checked),onClick:e=>e.stopPropagation()}),cell:s=>{let{row:l}=s;return(0,c.jsx)(eR.Z,{checked:t(l.original),onChange:s=>e(l.original,s.target.checked),onClick:e=>e.stopPropagation()})}},...i]}return i};function lO(e){var s,t,l,a,r,i,n,o,m,u,x,h,p,g,f,v,_,N,Z,w,C,I,A,T,E,P,M,O,D,F,R,z,U,q,V,B,K;let{userId:H,onClose:Y,accessToken:J,userRole:$,onDelete:Q,possibleUIRoles:X,initialTab:ee=0,startInEditMode:es=!1}=e,[et,el]=(0,d.useState)(null),[ea,er]=(0,d.useState)(!1),[ei,en]=(0,d.useState)(!0),[ed,em]=(0,d.useState)(es),[eu,ex]=(0,d.useState)([]),[eh,ep]=(0,d.useState)(!1),[eg,ej]=(0,d.useState)(null),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)(ee),[e_,eN]=(0,d.useState)({}),[eZ,ew]=(0,d.useState)(!1);d.useEffect(()=>{ev((0,j.getProxyBaseUrl)())},[]),d.useEffect(()=>{console.log("userId: ".concat(H,", userRole: ").concat($,", accessToken: ").concat(J)),(async()=>{try{if(!J)return;let e=await (0,j.userInfoCall)(J,H,$||"",!1,null,null,!0);el(e);let s=(await (0,j.modelAvailableCall)(J,H,$||"")).data.map(e=>e.id);ex(s)}catch(e){console.error("Error fetching user data:",e),eo.Z.fromBackend("Failed to fetch user data")}finally{en(!1)}})()},[J,H,$]);let ek=async()=>{if(!J){eo.Z.fromBackend("Access token not found");return}try{eo.Z.success("Generating password reset link...");let e=await (0,j.invitationCreateCall)(J,H);ej(e),ep(!0)}catch(e){eo.Z.fromBackend("Failed to generate password reset link")}},eS=async()=>{try{if(!J)return;await (0,j.userDeleteCall)(J,[H]),eo.Z.success("User deleted successfully"),Q&&Q(),Y()}catch(e){console.error("Error deleting user:",e),eo.Z.fromBackend("Failed to delete user")}},eC=async e=>{try{if(!J||!et)return;await (0,j.userUpdateUserCall)(J,e,null),el({...et,user_info:{...et.user_info,user_email:e.user_email,models:e.models,max_budget:e.max_budget,budget_duration:e.budget_duration,metadata:e.metadata}}),eo.Z.success("User updated successfully"),em(!1)}catch(e){console.error("Error updating user:",e),eo.Z.fromBackend("Failed to update user")}};if(ei)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:Y,className:"mb-4",children:"Back to Users"}),(0,c.jsx)(k.Z,{children:"Loading user data..."})]});if(!et)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:Y,className:"mb-4",children:"Back to Users"}),(0,c.jsx)(k.Z,{children:"User not found"})]});let eA=async(e,s)=>{await eM(e)&&(eN(e=>({...e,[s]:!0})),setTimeout(()=>{eN(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:Y,className:"mb-4",children:"Back to Users"}),(0,c.jsx)(S.Z,{children:(null===(s=et.user_info)||void 0===s?void 0:s.user_email)||"User"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:et.user_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:e_["user-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>eA(et.user_id,"user-id"),className:"left-2 z-10 transition-all duration-200 ".concat(e_["user-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),$&&eI.LQ.includes($)&&(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)(b.Z,{icon:sn.Z,variant:"secondary",onClick:ek,className:"flex items-center",children:"Reset Password"}),(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>er(!0),className:"flex items-center",children:"Delete User"})]})]}),ea&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete User"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this user?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:eS,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>er(!1),children:"Cancel"})]})]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:ey,onIndexChange:eb,children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"}),(0,c.jsx)(ss.Z,{children:"Details"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Spend"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eP((null===(t=et.user_info)||void 0===t?void 0:t.spend)||0,4)]}),(0,c.jsxs)(k.Z,{children:["of"," ",(null===(l=et.user_info)||void 0===l?void 0:l.max_budget)!==null?"$".concat(eP(et.user_info.max_budget,4)):"Unlimited"]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Teams"}),(0,c.jsx)("div",{className:"mt-2",children:(null===(a=et.teams)||void 0===a?void 0:a.length)&&(null===(r=et.teams)||void 0===r?void 0:r.length)>0?(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[null===(i=et.teams)||void 0===i?void 0:i.slice(0,eZ?et.teams.length:20).map((e,s)=>(0,c.jsx)(se.Z,{color:"blue",title:e.team_alias,children:e.team_alias},s)),!eZ&&(null===(n=et.teams)||void 0===n?void 0:n.length)>20&&(0,c.jsxs)(se.Z,{color:"gray",className:"cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!0),children:["+",et.teams.length-20," more"]}),eZ&&(null===(o=et.teams)||void 0===o?void 0:o.length)>20&&(0,c.jsx)(se.Z,{color:"gray",className:"cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!1),children:"Show Less"})]}):(0,c.jsx)(k.Z,{children:"No teams"})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"API Keys"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsxs)(k.Z,{children:[(null===(m=et.keys)||void 0===m?void 0:m.length)||0," keys"]})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Personal Models"}),(0,c.jsx)("div",{className:"mt-2",children:(null===(x=et.user_info)||void 0===x?void 0:null===(u=x.models)||void 0===u?void 0:u.length)&&(null===(p=et.user_info)||void 0===p?void 0:null===(h=p.models)||void 0===h?void 0:h.length)>0?null===(f=et.user_info)||void 0===f?void 0:null===(g=f.models)||void 0===g?void 0:g.map((e,s)=>(0,c.jsx)(k.Z,{children:e},s)):(0,c.jsx)(k.Z,{children:"All proxy models"})})]})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"User Settings"}),!ed&&$&&eI.LQ.includes($)&&(0,c.jsx)(b.Z,{variant:"light",onClick:()=>em(!0),children:"Edit Settings"})]}),ed&&et?(0,c.jsx)(lT,{userData:et,onCancel:()=>em(!1),onSubmit:eC,teams:et.teams,accessToken:J,userID:H,userRole:$,userModels:eu,possibleUIRoles:X}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"User ID"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"font-mono",children:et.user_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:e_["user-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>eA(et.user_id,"user-id"),className:"left-2 z-10 transition-all duration-200 ".concat(e_["user-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Email"}),(0,c.jsx)(k.Z,{children:(null===(v=et.user_info)||void 0===v?void 0:v.user_email)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Global Proxy Role"}),(0,c.jsx)(k.Z,{children:(null===(_=et.user_info)||void 0===_?void 0:_.user_role)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created"}),(0,c.jsx)(k.Z,{children:(null===(N=et.user_info)||void 0===N?void 0:N.created_at)?new Date(et.user_info.created_at).toLocaleString():"Unknown"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)(k.Z,{children:(null===(Z=et.user_info)||void 0===Z?void 0:Z.updated_at)?new Date(et.user_info.updated_at).toLocaleString():"Unknown"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Teams"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:(null===(w=et.teams)||void 0===w?void 0:w.length)&&(null===(C=et.teams)||void 0===C?void 0:C.length)>0?(0,c.jsxs)(c.Fragment,{children:[null===(I=et.teams)||void 0===I?void 0:I.slice(0,eZ?et.teams.length:20).map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",title:e.team_alias||e.team_id,children:e.team_alias||e.team_id},s)),!eZ&&(null===(A=et.teams)||void 0===A?void 0:A.length)>20&&(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded text-xs cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!0),children:["+",et.teams.length-20," more"]}),eZ&&(null===(T=et.teams)||void 0===T?void 0:T.length)>20&&(0,c.jsx)("span",{className:"px-2 py-1 bg-gray-100 rounded text-xs cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!1),children:"Show Less"})]}):(0,c.jsx)(k.Z,{children:"No teams"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Personal Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:(null===(P=et.user_info)||void 0===P?void 0:null===(E=P.models)||void 0===E?void 0:E.length)&&(null===(O=et.user_info)||void 0===O?void 0:null===(M=O.models)||void 0===M?void 0:M.length)>0?null===(F=et.user_info)||void 0===F?void 0:null===(D=F.models)||void 0===D?void 0:D.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:e},s)):(0,c.jsx)(k.Z,{children:"All proxy models"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"API Keys"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:(null===(R=et.keys)||void 0===R?void 0:R.length)&&(null===(z=et.keys)||void 0===z?void 0:z.length)>0?et.keys.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-green-100 rounded text-xs",children:e.key_alias||e.token},s)):(0,c.jsx)(k.Z,{children:"No API keys"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Max Budget"}),(0,c.jsx)(k.Z,{children:(null===(U=et.user_info)||void 0===U?void 0:U.max_budget)!==null&&(null===(q=et.user_info)||void 0===q?void 0:q.max_budget)!==void 0?"$".concat(eP(et.user_info.max_budget,4)):"Unlimited"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Budget Reset"}),(0,c.jsx)(k.Z,{children:eT(null!==(K=null===(V=et.user_info)||void 0===V?void 0:V.budget_duration)&&void 0!==K?K:null)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Metadata"}),(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify((null===(B=et.user_info)||void 0===B?void 0:B.metadata)||{},null,2)})]})]})]})})]})]}),(0,c.jsx)(ec,{isInvitationLinkModalVisible:eh,setIsInvitationLinkModalVisible:ep,baseUrl:ef||"",invitationLinkData:eg,modalType:"resetPassword"})]})}function lD(e){let{data:s=[],columns:t,isLoading:l=!1,onSortChange:a,currentSort:r,accessToken:i,userRole:n,possibleUIRoles:o,handleEdit:m,handleDelete:u,handleResetPassword:x,selectedUsers:h=[],onSelectionChange:p,enableSelection:g=!1,filters:j,updateFilters:f,initialFilters:v,teams:y,userListResponse:b,currentPage:_,handlePageChange:N}=e,[Z,w]=d.useState([{id:(null==r?void 0:r.sortBy)||"created_at",desc:(null==r?void 0:r.sortOrder)==="desc"}]),[k,S]=d.useState(null),[C,I]=d.useState(!1),[A,T]=d.useState(!1),E=function(e){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];S(e),I(s)},L=(e,s)=>{p&&(s?p([...h,e]):p(h.filter(s=>s.user_id!==e.user_id)))},P=e=>{p&&(e?p(s):p([]))},M=e=>h.some(s=>s.user_id===e.user_id),O=s.length>0&&h.length===s.length,D=h.length>0&&h.lengtho?lM(o,m,u,x,E,g?{selectedUsers:h,onSelectUser:L,onSelectAll:P,isUserSelected:M,isAllSelected:O,isIndeterminate:D}:void 0):t,[o,m,u,x,E,t,g,h,O,D]),R=(0,sM.b7)({data:s,columns:F,state:{sorting:Z},onSortingChange:e=>{if(w(e),e.length>0){let s=e[0],t=s.id,l=s.desc?"desc":"asc";null==a||a(t,l)}},getCoreRowModel:(0,sO.sC)(),getSortedRowModel:(0,sO.tj)(),enableSorting:!0});return(d.useEffect(()=>{r&&w([{id:r.sortBy,desc:"desc"===r.sortOrder}])},[r]),k)?(0,c.jsx)(lO,{userId:k,onClose:()=>{S(null),I(!1)},accessToken:i,userRole:n,possibleUIRoles:o,initialTab:C?1:0,startInEditMode:C}):(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsx)("div",{className:"border-b px-6 py-4",children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search by email...",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:j.email,onChange:e=>f({email:e.target.value})}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 ".concat(A?"bg-gray-100":""),onClick:()=>T(!A),children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filters",(j.user_id||j.user_role||j.team)&&(0,c.jsx)("span",{className:"w-2 h-2 rounded-full bg-blue-500"})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",onClick:()=>{f(v)},children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Reset Filters"]})]}),A&&(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Filter by User ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:j.user_id,onChange:e=>f({user_id:e.target.value})}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})]}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsx)(e9.Z,{value:j.user_role,onValueChange:e=>f({user_role:e}),placeholder:"Select Role",children:o&&Object.entries(o).map(e=>{let[s,t]=e;return(0,c.jsx)(ei.Z,{value:s,children:t.ui_label},s)})})}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsx)(e9.Z,{value:j.team,onValueChange:e=>f({team:e}),placeholder:"Select Team",children:null==y?void 0:y.map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:e.team_alias||e.team_id},e.team_id))})}),(0,c.jsx)("div",{className:"relative w-64",children:(0,c.jsx)("input",{type:"text",placeholder:"Filter by SSO ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:j.sso_user_id,onChange:e=>f({sso_user_id:e.target.value})})})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Showing"," ",b&&b.users&&b.users.length>0?(b.page-1)*b.page_size+1:0," ","-"," ",b&&b.users?Math.min(b.page*b.page_size,b.total):0," ","of ",b?b.total:0," results"]}),(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>N(_-1),disabled:1===_,className:"px-3 py-1 text-sm border rounded-md ".concat(1===_?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Previous"}),(0,c.jsx)("button",{onClick:()=>N(_+1),disabled:!b||_>=b.total_pages,className:"px-3 py-1 text-sm border rounded-md ".concat(!b||_>=b.total_pages?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Next"})]})]})]})}),(0,c.jsx)("div",{className:"overflow-auto",children:(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sU.Z,{children:R.getHeaderGroups().map(e=>(0,c.jsx)(sV.Z,{children:e.headers.map(e=>(0,c.jsx)(sq.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sB.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sR.Z,{children:l?(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:F.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"\uD83D\uDE85 Loading users..."})})})}):s.length>0?R.getRowModel().rows.map(e=>(0,c.jsx)(sV.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sz.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:()=>{"user_id"===e.column.id&&E(e.getValue(),!1)},style:{cursor:"user_id"===e.column.id?"pointer":"default",color:"user_id"===e.column.id?"#3b82f6":"inherit"},children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:F.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No users found"})})})})})]})})})})]})}var lF=t(67982),lR=e=>{var s;let{accessToken:t,possibleUIRoles:l,userID:a,userRole:r}=e,[i,n]=(0,d.useState)(!0),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)({}),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)([]),{Paragraph:N}=en.default,{Option:Z}=I.default;(0,d.useEffect)(()=>{(async()=>{if(!t){n(!1);return}try{let e=await (0,j.getInternalUserSettings)(t);if(m(e),p(e.values||{}),t)try{let e=await (0,j.modelAvailableCall)(t,a,r);if(e&&e.data){let s=e.data.map(e=>e.id);y(s)}}catch(e){console.error("Error fetching available models:",e)}}catch(e){console.error("Error fetching SSO settings:",e),eo.Z.fromBackend("Failed to fetch SSO settings")}finally{n(!1)}})()},[t]);let w=async()=>{if(t){f(!0);try{let e=Object.entries(h).reduce((e,s)=>{let[t,l]=s;return e[t]=""===l?null:l,e},{}),s=await (0,j.updateInternalUserSettings)(t,e);m({...o,values:s.settings}),x(!1)}catch(e){console.error("Error updating SSO settings:",e),eo.Z.fromBackend("Failed to update settings: "+e)}finally{f(!1)}}},C=(e,s)=>{p(t=>({...t,[e]:s}))},A=e=>e&&Array.isArray(e)?e.map(e=>"string"==typeof e?{team_id:e,user_role:"user"}:"object"==typeof e&&e.team_id?{team_id:e.team_id,max_budget_in_team:e.max_budget_in_team,user_role:e.user_role||"user"}:{team_id:"",user_role:"user"}):[],T=e=>{let s=A(e),t=(e,t,l)=>{let a=[...s];a[e]={...a[e],[t]:l},C("teams",a)},l=e=>{C("teams",s.filter((s,t)=>t!==e))};return(0,c.jsxs)("div",{className:"space-y-3",children:[s.map((e,s)=>(0,c.jsxs)("div",{className:"border rounded-lg p-4 bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["Team ",s+1]}),(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",icon:ep.Z,onClick:()=>l(s),className:"text-red-500 hover:text-red-700",children:"Remove"})]}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-1",children:"Team ID"}),(0,c.jsx)(_.Z,{value:e.team_id,onChange:e=>t(s,"team_id",e.target.value),placeholder:"Enter team ID"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-1",children:"Max Budget in Team"}),(0,c.jsx)(e8.Z,{style:{width:"100%"},value:e.max_budget_in_team,onChange:e=>t(s,"max_budget_in_team",e),placeholder:"Optional",min:0,step:.01,precision:2})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-1",children:"User Role"}),(0,c.jsxs)(I.default,{style:{width:"100%"},value:e.user_role,onChange:e=>t(s,"user_role",e),children:[(0,c.jsx)(Z,{value:"user",children:"User"}),(0,c.jsx)(Z,{value:"admin",children:"Admin"})]})]})]})]},s)),(0,c.jsx)(b.Z,{variant:"secondary",icon:tI.Z,onClick:()=>{C("teams",[...s,{team_id:"",user_role:"user"}])},className:"w-full",children:"Add Team"})]})},E=(e,s,t)=>{var a;let r=s.type;if("teams"===e)return(0,c.jsx)("div",{className:"mt-2",children:T(h[e]||[])});if("user_role"===e&&l)return(0,c.jsx)(I.default,{style:{width:"100%"},value:h[e]||"",onChange:s=>C(e,s),className:"mt-2",children:Object.entries(l).filter(e=>{let[s]=e;return s.includes("internal_user")}).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(Z,{value:s,children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("span",{children:t}),(0,c.jsx)("span",{className:"ml-2 text-xs text-gray-500",children:l})]})},s)})});if("budget_duration"===e)return(0,c.jsx)(eE,{value:h[e]||null,onChange:s=>C(e,s),className:"mt-2"});if("boolean"===r)return(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(eJ.Z,{checked:!!h[e],onChange:s=>C(e,s)})});if("array"===r&&(null===(a=s.items)||void 0===a?void 0:a.enum))return(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},value:h[e]||[],onChange:s=>C(e,s),className:"mt-2",children:s.items.enum.map(e=>(0,c.jsx)(Z,{value:e,children:e},e))});if("models"===e)return(0,c.jsxs)(I.default,{mode:"multiple",style:{width:"100%"},value:h[e]||[],onChange:s=>C(e,s),className:"mt-2",children:[(0,c.jsx)(Z,{value:"no-default-models",children:"No Default Models"}),v.map(e=>(0,c.jsx)(Z,{value:e,children:F(e)},e))]});if("string"===r&&s.enum)return(0,c.jsx)(I.default,{style:{width:"100%"},value:h[e]||"",onChange:s=>C(e,s),className:"mt-2",children:s.enum.map(e=>(0,c.jsx)(Z,{value:e,children:e},e))});else return(0,c.jsx)(_.Z,{value:void 0!==h[e]?String(h[e]):"",onChange:s=>C(e,s.target.value),placeholder:s.description||"",className:"mt-2"})},L=(e,s)=>{if(null==s)return(0,c.jsx)("span",{className:"text-gray-400",children:"Not set"});if("teams"===e&&Array.isArray(s)){if(0===s.length)return(0,c.jsx)("span",{className:"text-gray-400",children:"No teams assigned"});let e=A(s);return(0,c.jsx)("div",{className:"space-y-2 mt-1",children:e.map((e,s)=>(0,c.jsx)("div",{className:"border rounded-lg p-3 bg-white",children:(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-2 text-sm",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium text-gray-600",children:"Team ID:"}),(0,c.jsx)("p",{className:"text-gray-900",children:e.team_id||"Not specified"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium text-gray-600",children:"Max Budget:"}),(0,c.jsx)("p",{className:"text-gray-900",children:void 0!==e.max_budget_in_team?"$".concat(eP(e.max_budget_in_team,4)):"No limit"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium text-gray-600",children:"Role:"}),(0,c.jsx)("p",{className:"text-gray-900 capitalize",children:e.user_role})]})]})},s))})}if("user_role"===e&&l&&l[s]){let{ui_label:e,description:t}=l[s];return(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium",children:e}),t&&(0,c.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:t})]})}return"budget_duration"===e?(0,c.jsx)("span",{children:eT(s)}):"boolean"==typeof s?(0,c.jsx)("span",{children:s?"Enabled":"Disabled"}):"models"===e&&Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:F(e)},s))}):"object"==typeof s?Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:"object"==typeof e?JSON.stringify(e):String(e)},s))}):(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify(s,null,2)}):(0,c.jsx)("span",{children:String(s)})};return i?(0,c.jsx)("div",{className:"flex justify-center items-center h-64",children:(0,c.jsx)(eF.Z,{size:"large"})}):o?(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Default User Settings"}),!i&&o&&(u?(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{x(!1),p(o.values||{})},disabled:g,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:w,loading:g,children:"Save Changes"})]}):(0,c.jsx)(b.Z,{onClick:()=>x(!0),children:"Edit Settings"}))]}),(null==o?void 0:null===(s=o.field_schema)||void 0===s?void 0:s.description)&&(0,c.jsx)(N,{className:"mb-4",children:o.field_schema.description}),(0,c.jsx)(lF.Z,{}),(0,c.jsx)("div",{className:"mt-4 space-y-4",children:(()=>{let{values:e,field_schema:s}=o;return s&&s.properties?Object.entries(s.properties).map(s=>{let[t,l]=s,a=e[t],r=t.replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase());return(0,c.jsxs)("div",{className:"mb-6 pb-6 border-b border-gray-200 last:border-0",children:[(0,c.jsx)(k.Z,{className:"font-medium text-lg",children:r}),(0,c.jsx)(N,{className:"text-sm text-gray-500 mt-1",children:l.description||"No description available"}),u?(0,c.jsx)("div",{className:"mt-2",children:E(t,l,a)}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:L(t,a)})]},t)}):(0,c.jsx)(k.Z,{children:"No schema information available"})})()})]}):(0,c.jsx)(G.Z,{children:(0,c.jsx)(k.Z,{children:"No settings available or you do not have permission to view them."})})},lz=t(19616);let lU={email:"",user_id:"",user_role:"",sso_user_id:"",team:"",model:"",min_spend:null,max_spend:null,sort_by:"created_at",sort_order:"desc"};var lq=e=>{var s;let{accessToken:t,token:l,userRole:a,userID:r,teams:i}=e,n=(0,h.NL)(),[o,m]=(0,d.useState)(1),[u,x]=(0,d.useState)(!1),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(!1),[y,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)("users"),[w,k]=(0,d.useState)(lU),[S,C,I]=(0,lz.G)(w,{wait:300}),[A,T]=(0,d.useState)(!1),[E,L]=(0,d.useState)(null),[P,M]=(0,d.useState)(null),[O,D]=(0,d.useState)([]),[F,R]=(0,d.useState)(!1),[z,U]=(0,d.useState)(!1),[q,V]=(0,d.useState)([]),B=e=>{_(e),v(!0)};(0,d.useEffect)(()=>()=>{I.cancel()},[I]),(0,d.useEffect)(()=>{M((0,j.getProxyBaseUrl)())},[]),(0,d.useEffect)(()=>{(async()=>{try{if(!r||!a||!t)return;let e=(await (0,j.modelAvailableCall)(t,r,a)).data.map(e=>e.id);console.log("available_model_names:",e),V(e)}catch(e){console.error("Error fetching user models:",e)}})()},[t,r,a]);let K=e=>{k(s=>{let t={...s,...e};return C(t),t})},G=async e=>{if(!t){eo.Z.fromBackend("Access token not found");return}try{eo.Z.success("Generating password reset link...");let s=await (0,j.invitationCreateCall)(t,e);L(s),T(!0)}catch(e){eo.Z.fromBackend("Failed to generate password reset link")}},H=async()=>{if(y&&t)try{await (0,j.userDeleteCall)(t,[y]),n.setQueriesData({queryKey:["userList"]},e=>{if(void 0===e)return e;let s=e.users.filter(e=>e.user_id!==y);return{...e,users:s}}),eo.Z.success("User deleted successfully")}catch(e){console.error("Error deleting user:",e),eo.Z.fromBackend("Failed to delete user")}v(!1),_(null)},Y=async()=>{g(null),x(!1)},J=async e=>{if(console.log("inside handleEditSubmit:",e),t&&l&&a&&r){try{let s=await (0,j.userUpdateUserCall)(t,e,null);n.setQueriesData({queryKey:["userList"]},e=>{if(void 0===e)return e;let t=e.users.map(e=>e.user_id===s.data.user_id?eL(e,s.data):e);return{...e,users:t}}),eo.Z.success("User ".concat(e.user_id," updated successfully"))}catch(e){console.error("There was an error updating the user",e)}g(null),x(!1)}},W=async e=>{m(e)},$=(0,sA.a)({queryKey:["userList",{debouncedFilter:S,currentPage:o}],queryFn:async()=>{if(!t)throw Error("Access token required");return await (0,j.userListCall)(t,S.user_id?[S.user_id]:null,o,25,S.email||null,S.user_role||null,S.team||null,S.sso_user_id||null,S.sort_by,S.sort_order)},enabled:!!(t&&l&&a&&r),placeholderData:e=>e}),Q=$.data,X=(0,sA.a)({queryKey:["userRoles"],initialData:()=>({}),queryFn:async()=>{if(!t)throw Error("Access token required");return await (0,j.getPossibleUserRoles)(t)},enabled:!!(t&&l&&a&&r)}).data;if($.isLoading||!t||!l||!a||!r)return(0,c.jsx)("div",{children:"Loading..."});let ee=lM(X,e=>{g(e),x(!0)},B,G,()=>{});return(0,c.jsxs)("div",{className:"w-full p-8 overflow-hidden",children:[(0,c.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,c.jsxs)("div",{className:"flex space-x-3",children:[(0,c.jsx)(ek,{userID:r,accessToken:t,teams:i,possibleUIRoles:X}),(0,c.jsx)(b.Z,{onClick:()=>{U(!z),D([])},variant:z?"primary":"secondary",className:"flex items-center",children:z?"Cancel Selection":"Select Users"}),z&&(0,c.jsxs)(b.Z,{onClick:()=>{if(0===O.length){eo.Z.fromBackend("Please select users to edit");return}R(!0)},disabled:0===O.length,className:"flex items-center",children:["Bulk Edit (",O.length," selected)"]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:0,onIndexChange:e=>Z(0===e?"users":"settings"),children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Users"}),(0,c.jsx)(ss.Z,{children:"Default User Settings"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lD,{data:(null===(s=$.data)||void 0===s?void 0:s.users)||[],columns:ee,isLoading:$.isLoading,accessToken:t,userRole:a,onSortChange:(e,s)=>{K({sort_by:e,sort_order:s})},currentSort:{sortBy:w.sort_by,sortOrder:w.sort_order},possibleUIRoles:X,handleEdit:e=>{g(e),x(!0)},handleDelete:B,handleResetPassword:G,enableSelection:z,selectedUsers:O,onSelectionChange:e=>{D(e)},filters:w,updateFilters:K,initialFilters:lU,teams:i,userListResponse:Q,currentPage:o,handlePageChange:W})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lR,{accessToken:t,possibleUIRoles:X,userID:r,userRole:a})})]})]}),(0,c.jsx)(lI,{visible:u,possibleUIRoles:X,onCancel:Y,user:p,onSubmit:J}),f&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete User"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this user?"}),(0,c.jsxs)("p",{className:"text-sm font-medium text-gray-900 mt-2",children:["User ID: ",y]})]})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:H,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{v(!1),_(null)},children:"Cancel"})]})]})]})}),(0,c.jsx)(ec,{isInvitationLinkModalVisible:A,setIsInvitationLinkModalVisible:T,baseUrl:P||"",invitationLinkData:E,modalType:"resetPassword"}),(0,c.jsx)(lP,{visible:F,onCancel:()=>R(!1),selectedUsers:O,possibleUIRoles:X,accessToken:t,onSuccess:()=>{n.invalidateQueries({queryKey:["userList"]}),D([]),U(!1)},teams:i,userRole:a,userModels:q,allowAllUsers:!!a&&(0,eI.tY)(a)})]})},lV=e=>{var s;let{accessToken:t,userID:l,userRole:a}=e,[r,i]=(0,d.useState)(!0),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)({}),[p,g]=(0,d.useState)(!1),[f,v]=(0,d.useState)([]),{Paragraph:y}=en.default,{Option:N}=I.default;(0,d.useEffect)(()=>{(async()=>{if(!t){i(!1);return}try{let e=await (0,j.getDefaultTeamSettings)(t);if(o(e),h(e.values||{}),t)try{let e=await (0,j.modelAvailableCall)(t,l,a);if(e&&e.data){let s=e.data.map(e=>e.id);v(s)}}catch(e){console.error("Error fetching available models:",e)}}catch(e){console.error("Error fetching team SSO settings:",e),eo.Z.fromBackend("Failed to fetch team settings")}finally{i(!1)}})()},[t]);let Z=async()=>{if(t){g(!0);try{let e=await (0,j.updateDefaultTeamSettings)(t,x);o({...n,values:e.settings}),u(!1),eo.Z.success("Default team settings updated successfully")}catch(e){console.error("Error updating team settings:",e),eo.Z.fromBackend("Failed to update team settings")}finally{g(!1)}}},w=(e,s)=>{h(t=>({...t,[e]:s}))},C=(e,s,t)=>{var l;let a=s.type;return"budget_duration"===e?(0,c.jsx)(eE,{value:x[e]||null,onChange:s=>w(e,s),className:"mt-2"}):"boolean"===a?(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(eJ.Z,{checked:!!x[e],onChange:s=>w(e,s)})}):"array"===a&&(null===(l=s.items)||void 0===l?void 0:l.enum)?(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},value:x[e]||[],onChange:s=>w(e,s),className:"mt-2",children:s.items.enum.map(e=>(0,c.jsx)(N,{value:e,children:e},e))}):"models"===e?(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},value:x[e]||[],onChange:s=>w(e,s),className:"mt-2",children:f.map(e=>(0,c.jsx)(N,{value:e,children:F(e)},e))}):"string"===a&&s.enum?(0,c.jsx)(I.default,{style:{width:"100%"},value:x[e]||"",onChange:s=>w(e,s),className:"mt-2",children:s.enum.map(e=>(0,c.jsx)(N,{value:e,children:e},e))}):(0,c.jsx)(_.Z,{value:void 0!==x[e]?String(x[e]):"",onChange:s=>w(e,s.target.value),placeholder:s.description||"",className:"mt-2"})},A=(e,s)=>null==s?(0,c.jsx)("span",{className:"text-gray-400",children:"Not set"}):"budget_duration"===e?(0,c.jsx)("span",{children:eT(s)}):"boolean"==typeof s?(0,c.jsx)("span",{children:s?"Enabled":"Disabled"}):"models"===e&&Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:F(e)},s))}):"object"==typeof s?Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:"object"==typeof e?JSON.stringify(e):String(e)},s))}):(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify(s,null,2)}):(0,c.jsx)("span",{children:String(s)});return r?(0,c.jsx)("div",{className:"flex justify-center items-center h-64",children:(0,c.jsx)(eF.Z,{size:"large"})}):n?(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{className:"text-xl",children:"Default Team Settings"}),!r&&n&&(m?(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{u(!1),h(n.values||{})},disabled:p,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:Z,loading:p,children:"Save Changes"})]}):(0,c.jsx)(b.Z,{onClick:()=>u(!0),children:"Edit Settings"}))]}),(0,c.jsx)(k.Z,{children:"These settings will be applied by default when creating new teams."}),(null==n?void 0:null===(s=n.field_schema)||void 0===s?void 0:s.description)&&(0,c.jsx)(y,{className:"mb-4 mt-2",children:n.field_schema.description}),(0,c.jsx)(lF.Z,{}),(0,c.jsx)("div",{className:"mt-4 space-y-4",children:(()=>{let{values:e,field_schema:s}=n;return s&&s.properties?Object.entries(s.properties).map(s=>{let[t,l]=s,a=e[t],r=t.replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase());return(0,c.jsxs)("div",{className:"mb-6 pb-6 border-b border-gray-200 last:border-0",children:[(0,c.jsx)(k.Z,{className:"font-medium text-lg",children:r}),(0,c.jsx)(y,{className:"text-sm text-gray-500 mt-1",children:l.description||"No description available"}),m?(0,c.jsx)("div",{className:"mt-2",children:C(t,l,a)}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:A(t,a)})]},t)}):(0,c.jsx)(k.Z,{children:"No schema information available"})})()})]}):(0,c.jsx)(G.Z,{children:(0,c.jsx)(k.Z,{children:"No team settings available or you do not have permission to view them."})})},lB=e=>{let{accessToken:s,userID:t}=e,[l,a]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{if(s&&t)try{let e=await (0,j.availableTeamListCall)(s);a(e)}catch(e){console.error("Error fetching available teams:",e)}})()},[s,t]);let r=async e=>{if(s&&t)try{await (0,j.teamMemberAddCall)(s,e,{user_id:t,role:"user"}),eo.Z.success("Successfully joined team"),a(s=>s.filter(s=>s.team_id!==e))}catch(e){console.error("Error joining team:",e),eo.Z.fromBackend("Failed to join team")}};return(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Team Name"}),(0,c.jsx)(sq.Z,{children:"Description"}),(0,c.jsx)(sq.Z,{children:"Members"}),(0,c.jsx)(sq.Z,{children:"Models"}),(0,c.jsx)(sq.Z,{children:"Actions"})]})}),(0,c.jsxs)(sR.Z,{children:[l.map(e=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:e.team_alias})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:e.description||"No description available"})}),(0,c.jsx)(sz.Z,{children:(0,c.jsxs)(k.Z,{children:[e.members_with_roles.length," members"]})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)("div",{className:"flex flex-col",children:e.models&&0!==e.models.length?e.models.map((e,s)=>(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(e.slice(0,30),"..."):e})},s)):(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})})})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(b.Z,{size:"xs",variant:"secondary",onClick:()=>r(e.team_id),children:"Join Team"})})]},e.team_id)),0===l.length&&(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:5,className:"text-center",children:(0,c.jsx)(k.Z,{children:"No available teams to join"})})})]})]})})},lK=t(76865);let lG=(e,s)=>{let t=[];return e&&e.models.length>0?(console.log("organization.models: ".concat(e.models)),t=e.models):t=s,R(t,s)};var lH=e=>{let{teams:s,searchParams:t,accessToken:l,setTeams:a,userID:r,userRole:i,organizations:n,premiumUser:o=!1}=e,[m,u]=(0,d.useState)(""),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[S,C]=(0,d.useState)(!1),[E,M]=(0,d.useState)({team_id:"",team_alias:"",organization_id:"",sort_by:"created_at",sort_order:"desc"});(0,d.useEffect)(()=>{console.log("inside useeffect - ".concat(m)),l&&f(l,r,i,x,a),eW()},[m]);let[R]=A.Z.useForm(),[z]=A.Z.useForm(),{Title:q,Paragraph:K}=en.default,[H,Y]=(0,d.useState)(""),[J,$]=(0,d.useState)(!1),[Q,X]=(0,d.useState)(null),[ee,es]=(0,d.useState)(null),[et,el]=(0,d.useState)(!1),[ea,ec]=(0,d.useState)(!1),[ed,em]=(0,d.useState)(!1),[eu,ex]=(0,d.useState)(!1),[eh,ep]=(0,d.useState)([]),[eg,ej]=(0,d.useState)(!1),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)([]),[e_,eN]=(0,d.useState)({}),[eZ,ew]=(0,d.useState)([]),[ek,eS]=(0,d.useState)({}),[eC,eA]=(0,d.useState)([]),[eT,eE]=(0,d.useState)([]),[eM,eO]=(0,d.useState)(!1),[eF,eR]=(0,d.useState)(""),[eq,eV]=(0,d.useState)({});(0,d.useEffect)(()=>{console.log("currentOrgForCreateTeam: ".concat(p));let e=lG(p,eh);console.log("models: ".concat(e)),eb(e),R.setFieldValue("models",[])},[p,eh]),(0,d.useEffect)(()=>{(async()=>{try{if(null==l)return;let e=(await (0,j.getGuardrailsList)(l)).guardrails.map(e=>e.guardrail_name);ew(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})()},[l]);let eB=async()=>{try{if(null==l)return;let e=await (0,j.fetchMCPAccessGroups)(l);eE(e)}catch(e){console.error("Failed to fetch MCP access groups:",e)}};(0,d.useEffect)(()=>{eB()},[l]),(0,d.useEffect)(()=>{s&&eN(s.reduce((e,s)=>(e[s.team_id]={keys:s.keys||[],team_info:{members_with_roles:s.members_with_roles||[]}},e),{}))},[s]);let eK=async e=>{ev(e),ej(!0)},eG=async()=>{if(null!=ef&&null!=s&&null!=l){try{await (0,j.teamDeleteCall)(l,ef),f(l,r,i,x,a)}catch(e){console.error("Error deleting the team:",e)}ej(!1),ev(null)}},eH=()=>{ej(!1),ev(null)};(0,d.useEffect)(()=>{(async()=>{try{if(null===r||null===i||null===l)return;let e=await D(r,i,l);e&&ep(e)}catch(e){console.error("Error fetching user models:",e)}})()},[l,r,i,s]);let eJ=async e=>{try{if(console.log("formValues: ".concat(JSON.stringify(e))),null!=l){var t,r,i;let n=null==e?void 0:e.team_alias,o=null!==(i=null==s?void 0:s.map(e=>e.team_alias))&&void 0!==i?i:[],c=(null==e?void 0:e.organization_id)||(null==x?void 0:x.organization_id);if(""===c||"string"!=typeof c?e.organization_id=null:e.organization_id=c.trim(),o.includes(n))throw Error("Team alias ".concat(n," already exists, please pick another alias"));if(eo.Z.info("Creating Team"),eC.length>0){let s={};if(e.metadata)try{s=JSON.parse(e.metadata)}catch(e){console.warn("Invalid JSON in metadata field, starting with empty object")}s={...s,logging:eC.filter(e=>e.callback_name)},e.metadata=JSON.stringify(s)}if(e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0||e.allowed_mcp_servers_and_groups&&((null===(t=e.allowed_mcp_servers_and_groups.servers)||void 0===t?void 0:t.length)>0||(null===(r=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===r?void 0:r.length)>0||e.allowed_mcp_servers_and_groups.toolPermissions)){if(e.object_permission={},e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0&&(e.object_permission.vector_stores=e.allowed_vector_store_ids,delete e.allowed_vector_store_ids),e.allowed_mcp_servers_and_groups){let{servers:s,accessGroups:t}=e.allowed_mcp_servers_and_groups;s&&s.length>0&&(e.object_permission.mcp_servers=s),t&&t.length>0&&(e.object_permission.mcp_access_groups=t),delete e.allowed_mcp_servers_and_groups}e.mcp_tool_permissions&&Object.keys(e.mcp_tool_permissions).length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_tool_permissions=e.mcp_tool_permissions,delete e.mcp_tool_permissions)}e.allowed_mcp_access_groups&&e.allowed_mcp_access_groups.length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_access_groups=e.allowed_mcp_access_groups,delete e.allowed_mcp_access_groups),Object.keys(eq).length>0&&(e.model_aliases=eq);let d=await (0,j.teamCreateCall)(l,e);null!==s?a([...s,d]):a([d]),console.log("response for team create call: ".concat(d)),eo.Z.success("Team created"),R.resetFields(),eA([]),eV({}),ec(!1)}}catch(e){console.error("Error creating the team:",e),eo.Z.fromBackend("Error creating the team: "+e)}},eW=()=>{u(new Date().toLocaleString())},e$=(e,s)=>{let t={...E,[e]:s};M(t),l&&(0,j.v2TeamListCall)(l,t.organization_id||null,null,t.team_id||null,t.team_alias||null).then(e=>{e&&e.teams&&a(e.teams)}).catch(e=>{console.error("Error fetching teams:",e)})};return(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[("Admin"==i||"Org Admin"==i)&&(0,c.jsx)(b.Z,{className:"w-fit",onClick:()=>ec(!0),children:"+ Create New Team"}),ee?(0,c.jsx)(tN,{teamId:ee,onUpdate:e=>{a(s=>{if(null==s)return s;let t=s.map(s=>e.team_id===s.team_id?eL(s,e):s);return l&&f(l,r,i,x,a),t})},onClose:()=>{es(null),el(!1)},accessToken:l,is_team_admin:(e=>{if(null==e||null==e.members_with_roles)return!1;for(let s=0;se.team_id===ee)),is_proxy_admin:"Admin"==i,userModels:eh,editTeam:et}):(0,c.jsxs)(st.Z,{className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(ss.Z,{children:"Your Teams"}),(0,c.jsx)(ss.Z,{children:"Available Teams"}),(0,eI.tY)(i||"")&&(0,c.jsx)(ss.Z,{children:"Default Team Settings"})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[m&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",m]}),(0,c.jsx)(sD.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center",onClick:eW})]})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(k.Z,{children:["Click on “Team ID” to view team details ",(0,c.jsx)("b",{children:"and"})," manage team members."]}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"w-full mx-auto flex-auto overflow-hidden overflow-y-auto max-h-[50vh]",children:[(0,c.jsx)("div",{className:"border-b px-6 py-4",children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search by Team Name...",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:E.team_alias,onChange:e=>e$("team_alias",e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 ".concat(S?"bg-gray-100":""),onClick:()=>C(!S),children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filters",(E.team_id||E.team_alias||E.organization_id)&&(0,c.jsx)("span",{className:"w-2 h-2 rounded-full bg-blue-500"})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",onClick:()=>{M({team_id:"",team_alias:"",organization_id:"",sort_by:"created_at",sort_order:"desc"}),l&&(0,j.v2TeamListCall)(l,null,r||null,null,null).then(e=>{e&&e.teams&&a(e.teams)}).catch(e=>{console.error("Error fetching teams:",e)})},children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Reset Filters"]})]}),S&&(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Enter Team ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:E.team_id,onChange:e=>e$("team_id",e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})]}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsx)(e9.Z,{value:E.organization_id||"",onValueChange:e=>e$("organization_id",e),placeholder:"Select Organization",children:null==n?void 0:n.map(e=>(0,c.jsx)(ei.Z,{value:e.organization_id||"",children:e.organization_alias||e.organization_id},e.organization_id))})})]})]})}),(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Team Name"}),(0,c.jsx)(sq.Z,{children:"Team ID"}),(0,c.jsx)(sq.Z,{children:"Created"}),(0,c.jsx)(sq.Z,{children:"Spend (USD)"}),(0,c.jsx)(sq.Z,{children:"Budget (USD)"}),(0,c.jsx)(sq.Z,{children:"Models"}),(0,c.jsx)(sq.Z,{children:"Organization"}),(0,c.jsx)(sq.Z,{children:"Info"})]})}),(0,c.jsx)(sR.Z,{children:s&&s.length>0?s.filter(e=>!x||e.organization_id===x.organization_id).sort((e,s)=>new Date(s.created_at).getTime()-new Date(e.created_at).getTime()).map(e=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:e.team_alias}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.team_id,children:(0,c.jsxs)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>{es(e.team_id)},children:[e.team_id.slice(0,7),"..."]})})})}),(0,c.jsx)(sz.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:e.created_at?new Date(e.created_at).toLocaleDateString():"N/A"}),(0,c.jsx)(sz.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:eP(e.spend,4)}),(0,c.jsx)(sz.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:null!==e.max_budget&&void 0!==e.max_budget?e.max_budget:"No limit"}),(0,c.jsx)(sz.Z,{style:{maxWidth:"8-x",whiteSpace:"pre-wrap",overflow:"hidden"},className:e.models.length>3?"px-0":"",children:(0,c.jsx)("div",{className:"flex flex-col",children:Array.isArray(e.models)?(0,c.jsx)("div",{className:"flex flex-col",children:0===e.models.length?(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"flex items-start",children:[e.models.length>3&&(0,c.jsx)("div",{children:(0,c.jsx)(sD.Z,{icon:ek[e.team_id]?sB.Z:sK.Z,className:"cursor-pointer",size:"xs",onClick:()=>{eS(s=>({...s,[e.team_id]:!s[e.team_id]}))}})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[e.models.slice(0,3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s)),e.models.length>3&&!ek[e.team_id]&&(0,c.jsx)(se.Z,{size:"xs",color:"gray",className:"cursor-pointer",children:(0,c.jsxs)(k.Z,{children:["+",e.models.length-3," ",e.models.length-3==1?"more model":"more models"]})}),ek[e.team_id]&&(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:e.models.slice(3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s+3):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s+3))})]})]})})}):null})}),(0,c.jsx)(sz.Z,{children:e.organization_id}),(0,c.jsxs)(sz.Z,{children:[(0,c.jsxs)(k.Z,{children:[e_&&e.team_id&&e_[e.team_id]&&e_[e.team_id].keys&&e_[e.team_id].keys.length," ","Keys"]}),(0,c.jsxs)(k.Z,{children:[e_&&e.team_id&&e_[e.team_id]&&e_[e.team_id].team_info&&e_[e.team_id].team_info.members_with_roles&&e_[e.team_id].team_info.members_with_roles.length," ","Members"]})]}),(0,c.jsx)(sz.Z,{children:"Admin"==i?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>{es(e.team_id),el(!0)}}),(0,c.jsx)(sD.Z,{onClick:()=>eK(e.team_id),icon:W.Z,size:"sm"})]}):null})]},e.team_id)):null})]}),eg&&(()=>{var e;let t=null==s?void 0:s.find(e=>e.team_id===ef),l=(null==t?void 0:t.team_alias)||"",a=(null==t?void 0:null===(e=t.keys)||void 0===e?void 0:e.length)||0,r=eF===l;return(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl w-full max-w-2xl min-h-[380px] py-6 overflow-hidden transform transition-all flex flex-col justify-between",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Delete Team"}),(0,c.jsx)("button",{onClick:()=>{eH(),eR("")},className:"text-gray-400 hover:text-gray-500 focus:outline-none",children:(0,c.jsx)(ez.Z,{size:20})})]}),(0,c.jsxs)("div",{className:"px-6 py-4",children:[a>0&&(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)(lK.Z,{size:20})}),(0,c.jsxs)("div",{children:[(0,c.jsxs)("p",{className:"text-base font-medium text-red-600",children:["Warning: This team has ",a," associated key",a>1?"s":"","."]}),(0,c.jsx)("p",{className:"text-base text-red-600 mt-2",children:"Deleting the team will also delete all associated keys. This action is irreversible."})]})]}),(0,c.jsx)("p",{className:"text-base text-gray-600 mb-5",children:"Are you sure you want to force delete this team and all its keys?"}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsx)("span",{className:"underline",children:l})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:eF,onChange:e=>eR(e.target.value),placeholder:"Enter team name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]})]})]}),(0,c.jsxs)("div",{className:"px-6 py-4 bg-gray-50 flex justify-end gap-4",children:[(0,c.jsx)("button",{onClick:()=>{eH(),eR("")},className:"px-5 py-3 bg-white border border-gray-300 rounded-md text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:"Cancel"}),(0,c.jsx)("button",{onClick:eG,disabled:!r,className:"px-5 py-3 rounded-md text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 ".concat(r?"bg-red-600 hover:bg-red-700":"bg-red-300 cursor-not-allowed"),children:"Force Delete"})]})]})})})()]})})})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lB,{accessToken:l,userID:r})}),(0,eI.tY)(i||"")&&(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lV,{accessToken:l,userID:r||"",userRole:i||""})})]})]}),("Admin"==i||"Org Admin"==i)&&(0,c.jsx)(T.Z,{title:"Create Team",visible:ea,width:1e3,footer:null,onOk:()=>{ec(!1),R.resetFields(),eA([]),eV({})},onCancel:()=>{ec(!1),R.resetFields(),eA([]),eV({})},children:(0,c.jsxs)(A.Z,{form:R,onFinish:eJ,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Team Name",name:"team_alias",rules:[{required:!0,message:"Please input a team name"}],children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Organization"," ",(0,c.jsx)(B.Z,{title:(0,c.jsxs)("span",{children:["Organizations can have multiple teams. Learn more about"," ",(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/user_management_heirarchy",target:"_blank",rel:"noopener noreferrer",style:{color:"#1890ff",textDecoration:"underline"},onClick:e=>e.stopPropagation(),children:"user management hierarchy"})]}),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"organization_id",initialValue:x?x.organization_id:null,className:"mt-8",children:(0,c.jsx)(I.default,{showSearch:!0,allowClear:!0,placeholder:"Search or select an Organization",onChange:e=>{R.setFieldValue("organization_id",e),g((null==n?void 0:n.find(s=>s.organization_id===e))||null)},filterOption:(e,s)=>{var t;return!!s&&((null===(t=s.children)||void 0===t?void 0:t.toString())||"").toLowerCase().includes(e.toLowerCase())},optionFilterProp:"children",children:null==n?void 0:n.map(e=>(0,c.jsxs)(I.default.Option,{value:e.organization_id,children:[(0,c.jsx)("span",{className:"font-medium",children:e.organization_alias})," ",(0,c.jsxs)("span",{className:"text-gray-500",children:["(",e.organization_id,")"]})]},e.organization_id))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Models"," ",(0,c.jsx)(B.Z,{title:"These are the models that your selected team has access to",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),ey.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsxs)(N.Z,{className:"mt-20 mb-8",onClick:()=>{eM||(eB(),eO(!0))},children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Additional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:"Team ID",name:"team_id",help:"ID of the team you want to create. If not provided, it will be generated automatically.",children:(0,c.jsx)(_.Z,{onChange:e=>{e.target.value=e.target.value.trim()}})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Budget (USD)",name:"team_member_budget",normalize:e=>e?Number(e):void 0,tooltip:"This is the individual budget for a user in the team.",children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Key Duration (eg: 1d, 1mo)",name:"team_member_key_duration",tooltip:"Set a limit to the duration of a team member's key. Format: 30s (seconds), 30m (minutes), 30h (hours), 30d (days), 1mo (month)",children:(0,c.jsx)(_.Z,{placeholder:"e.g., 30d"})}),(0,c.jsx)(A.Z.Item,{label:"Team Member RPM Limit",name:"team_member_rpm_limit",tooltip:"The RPM (Requests Per Minute) limit for individual team members",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Team Member TPM Limit",name:"team_member_tpm_limit",tooltip:"The TPM (Tokens Per Minute) limit for individual team members",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",help:"Additional team metadata. Enter metadata as JSON object.",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Setup your first guardrail",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",className:"mt-8",help:"Select existing guardrails or enter new ones",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},placeholder:"Select or enter guardrails",options:eZ.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Vector Stores"," ",(0,c.jsx)(B.Z,{title:"Select which vector stores this team can access by default. Leave empty for access to all vector stores",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_vector_store_ids",className:"mt-8",help:"Select vector stores this team can access. Leave empty for access to all vector stores",children:(0,c.jsx)(U,{onChange:e=>R.setFieldValue("allowed_vector_store_ids",e),value:R.getFieldValue("allowed_vector_store_ids"),accessToken:l||"",placeholder:"Select vector stores (optional)"})})]})]}),(0,c.jsxs)(N.Z,{className:"mt-8 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"MCP Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed MCP Servers"," ",(0,c.jsx)(B.Z,{title:"Select which MCP servers or access groups this team can access",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_mcp_servers_and_groups",className:"mt-4",help:"Select MCP servers or access groups this team can access",children:(0,c.jsx)(eD,{onChange:e=>R.setFieldValue("allowed_mcp_servers_and_groups",e),value:R.getFieldValue("allowed_mcp_servers_and_groups"),accessToken:l||"",placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{name:"mcp_tool_permissions",initialValue:{},hidden:!0,children:(0,c.jsx)(P.default,{type:"hidden"})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.allowed_mcp_servers_and_groups!==s.allowed_mcp_servers_and_groups||e.mcp_tool_permissions!==s.mcp_tool_permissions,children:()=>{var e;return(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(eU,{accessToken:l||"",selectedServers:(null===(e=R.getFieldValue("allowed_mcp_servers_and_groups"))||void 0===e?void 0:e.servers)||[],toolPermissions:R.getFieldValue("mcp_tool_permissions")||{},onChange:e=>R.setFieldsValue({mcp_tool_permissions:e})})})}})]})]}),(0,c.jsxs)(N.Z,{className:"mt-8 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Logging Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(er,{value:eC,onChange:eA,premiumUser:o})})})]}),(0,c.jsxs)(N.Z,{className:"mt-8 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Model Aliases"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600 mb-4",children:"Create custom aliases for models that can be used by team members in API calls. This allows you to create shortcuts for specific models."}),(0,c.jsx)(eY,{accessToken:l||"",initialModelAliases:eq,onAliasUpdate:eV,showExampleConfig:!1})]})})]})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Create Team"})})]})})]})})})},lY=e=>{var s,t,l,a,r;let{organizationId:i,onClose:n,accessToken:o,is_org_admin:m,is_proxy_admin:u,userModels:x,editOrg:h}=e,[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(!0),[N]=A.Z.useForm(),[Z,w]=(0,d.useState)(!1),[C,T]=(0,d.useState)(!1),[E,M]=(0,d.useState)(!1),[D,R]=(0,d.useState)(null),[z,q]=(0,d.useState)({}),V=m||u,B=async()=>{try{if(v(!0),!o)return;let e=await (0,j.organizationInfoCall)(o,i);g(e)}catch(e){eo.Z.fromBackend("Failed to load organization information"),console.error("Error fetching organization info:",e)}finally{v(!1)}};(0,d.useEffect)(()=>{B()},[i,o]);let K=async e=>{try{if(null==o)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role};await (0,j.organizationMemberAddCall)(o,i,s),eo.Z.success("Organization member added successfully"),T(!1),N.resetFields(),B()}catch(e){eo.Z.fromBackend("Failed to add organization member"),console.error("Error adding organization member:",e)}},H=async e=>{try{if(!o)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role};await (0,j.organizationMemberUpdateCall)(o,i,s),eo.Z.success("Organization member updated successfully"),M(!1),N.resetFields(),B()}catch(e){eo.Z.fromBackend("Failed to update organization member"),console.error("Error updating organization member:",e)}},Y=async e=>{try{if(!o)return;await (0,j.organizationMemberDeleteCall)(o,i,e.user_id),eo.Z.success("Organization member deleted successfully"),M(!1),N.resetFields(),B()}catch(e){eo.Z.fromBackend("Failed to delete organization member"),console.error("Error deleting organization member:",e)}},J=async e=>{try{if(!o)return;let s={organization_id:i,organization_alias:e.organization_alias,models:e.models,litellm_budget_table:{tpm_limit:e.tpm_limit,rpm_limit:e.rpm_limit,max_budget:e.max_budget,budget_duration:e.budget_duration},metadata:e.metadata?JSON.parse(e.metadata):null};if((void 0!==e.vector_stores||void 0!==e.mcp_servers_and_groups)&&(s.object_permission={...null==p?void 0:p.object_permission,vector_stores:e.vector_stores||[]},void 0!==e.mcp_servers_and_groups)){let{servers:t,accessGroups:l}=e.mcp_servers_and_groups||{servers:[],accessGroups:[]};t&&t.length>0&&(s.object_permission.mcp_servers=t),l&&l.length>0&&(s.object_permission.mcp_access_groups=l)}await (0,j.organizationUpdateCall)(o,s),eo.Z.success("Organization settings updated successfully"),w(!1),B()}catch(e){eo.Z.fromBackend("Failed to update organization settings"),console.error("Error updating organization:",e)}};if(f)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!p)return(0,c.jsx)("div",{className:"p-4",children:"Organization not found"});let $=async(e,s)=>{await eM(e)&&(q(e=>({...e,[s]:!0})),setTimeout(()=>{q(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"w-full h-screen p-4 bg-white",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,onClick:n,variant:"light",className:"mb-4",children:"Back to Organizations"}),(0,c.jsx)(S.Z,{children:p.organization_alias}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:p.organization_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:z["org-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>$(p.organization_id,"org-id"),className:"left-2 z-10 transition-all duration-200 ".concat(z["org-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:h?2:0,children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"}),(0,c.jsx)(ss.Z,{children:"Members"}),(0,c.jsx)(ss.Z,{children:"Settings"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Organization Details"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["Created: ",new Date(p.created_at).toLocaleDateString()]}),(0,c.jsxs)(k.Z,{children:["Updated: ",new Date(p.updated_at).toLocaleDateString()]}),(0,c.jsxs)(k.Z,{children:["Created By: ",p.created_by]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Budget Status"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eP(p.spend,4)]}),(0,c.jsxs)(k.Z,{children:["of"," ",null===p.litellm_budget_table.max_budget?"Unlimited":"$".concat(eP(p.litellm_budget_table.max_budget,4))]}),p.litellm_budget_table.budget_duration&&(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Reset: ",p.litellm_budget_table.budget_duration]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Rate Limits"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["TPM: ",p.litellm_budget_table.tpm_limit||"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",p.litellm_budget_table.rpm_limit||"Unlimited"]}),p.litellm_budget_table.max_parallel_requests&&(0,c.jsxs)(k.Z,{children:["Max Parallel Requests: ",p.litellm_budget_table.max_parallel_requests]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Models"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:0===p.models.length?(0,c.jsx)(se.Z,{color:"red",children:"All proxy models"}):p.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Teams"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:null===(s=p.teams)||void 0===s?void 0:s.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e.team_id},s))})]}),(0,c.jsx)(sy,{objectPermission:p.object_permission,variant:"card",accessToken:o})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[75vh]",children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"User ID"}),(0,c.jsx)(sq.Z,{children:"Role"}),(0,c.jsx)(sq.Z,{children:"Spend"}),(0,c.jsx)(sq.Z,{children:"Created At"}),(0,c.jsx)(sq.Z,{})]})}),(0,c.jsx)(sR.Z,{children:null===(t=p.members)||void 0===t?void 0:t.map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_id})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_role})}),(0,c.jsx)(sz.Z,{children:(0,c.jsxs)(k.Z,{children:["$",eP(e.spend,4)]})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:new Date(e.created_at).toLocaleString()})}),(0,c.jsx)(sz.Z,{children:V&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>{R({role:e.user_role,user_email:e.user_email,user_id:e.user_id}),M(!0)}}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>{Y(e)}})]})})]},s))})]})}),V&&(0,c.jsx)(b.Z,{onClick:()=>{T(!0)},children:"Add Member"})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{className:"overflow-y-auto max-h-[65vh]",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Organization Settings"}),V&&!Z&&(0,c.jsx)(b.Z,{onClick:()=>w(!0),children:"Edit Settings"})]}),Z?(0,c.jsxs)(A.Z,{form:N,onFinish:J,initialValues:{organization_alias:p.organization_alias,models:p.models,tpm_limit:p.litellm_budget_table.tpm_limit,rpm_limit:p.litellm_budget_table.rpm_limit,max_budget:p.litellm_budget_table.max_budget,budget_duration:p.litellm_budget_table.budget_duration,metadata:p.metadata?JSON.stringify(p.metadata,null,2):"",vector_stores:(null===(l=p.object_permission)||void 0===l?void 0:l.vector_stores)||[],mcp_servers_and_groups:{servers:(null===(a=p.object_permission)||void 0===a?void 0:a.mcp_servers)||[],accessGroups:(null===(r=p.object_permission)||void 0===r?void 0:r.mcp_access_groups)||[]}},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Organization Name",name:"organization_alias",rules:[{required:!0,message:"Please input an organization name"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),x.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Vector Stores",name:"vector_stores",children:(0,c.jsx)(U,{onChange:e=>N.setFieldValue("vector_stores",e),value:N.getFieldValue("vector_stores"),accessToken:o||"",placeholder:"Select vector stores"})}),(0,c.jsx)(A.Z.Item,{label:"MCP Servers & Access Groups",name:"mcp_servers_and_groups",children:(0,c.jsx)(eD,{onChange:e=>N.setFieldValue("mcp_servers_and_groups",e),value:N.getFieldValue("mcp_servers_and_groups"),accessToken:o||"",placeholder:"Select MCP servers and access groups"})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)("div",{className:"sticky z-10 bg-white p-4 border-t border-gray-200 bottom-[-1.5rem] inset-x-[-1.5rem]",children:(0,c.jsxs)("div",{className:"flex justify-end items-center gap-2",children:[(0,c.jsx)(L.ZP,{onClick:()=>w(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization Name"}),(0,c.jsx)("div",{children:p.organization_alias})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization ID"}),(0,c.jsx)("div",{className:"font-mono",children:p.organization_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:new Date(p.created_at).toLocaleString()})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:p.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Rate Limits"}),(0,c.jsxs)("div",{children:["TPM: ",p.litellm_budget_table.tpm_limit||"Unlimited"]}),(0,c.jsxs)("div",{children:["RPM: ",p.litellm_budget_table.rpm_limit||"Unlimited"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Budget"}),(0,c.jsxs)("div",{children:["Max:"," ",null!==p.litellm_budget_table.max_budget?"$".concat(eP(p.litellm_budget_table.max_budget,4)):"No Limit"]}),(0,c.jsxs)("div",{children:["Reset: ",p.litellm_budget_table.budget_duration||"Never"]})]}),(0,c.jsx)(sy,{objectPermission:p.object_permission,variant:"inline",className:"pt-4 border-t border-gray-200",accessToken:o})]})]})})]})]}),(0,c.jsx)(t_,{isVisible:C,onCancel:()=>T(!1),onSubmit:K,accessToken:o,title:"Add Organization Member",roles:[{label:"org_admin",value:"org_admin",description:"Can add and remove members, and change their roles."},{label:"internal_user",value:"internal_user",description:"Can view/create keys for themselves within organization."},{label:"internal_user_viewer",value:"internal_user_viewer",description:"Can only view their keys within organization."}],defaultRole:"internal_user"}),(0,c.jsx)(tb,{visible:E,onCancel:()=>M(!1),onSubmit:H,initialData:D,mode:"edit",config:{title:"Edit Member",showEmail:!0,showUserId:!0,roleOptions:[{label:"Org Admin",value:"org_admin"},{label:"Internal User",value:"internal_user"},{label:"Internal User Viewer",value:"internal_user_viewer"}]}})]})};let lJ=async(e,s)=>{s(await (0,j.organizationListCall)(e))};var lW=e=>{let{organizations:s,userRole:t,userModels:l,accessToken:a,lastRefreshed:r,handleRefreshClick:i,currentOrg:n,guardrailsList:o=[],setOrganizations:m,premiumUser:u}=e,[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(!1),[f,_]=(0,d.useState)(!1),[N,Z]=(0,d.useState)(null),[w,S]=(0,d.useState)(!1),[C]=A.Z.useForm(),[E,L]=(0,d.useState)({});(0,d.useEffect)(()=>{a&&lJ(a,m)},[a]);let M=e=>{e&&(Z(e),_(!0))},D=async()=>{if(N&&a)try{await (0,j.organizationDeleteCall)(a,N),eo.Z.success("Organization deleted successfully"),_(!1),Z(null),lJ(a,m)}catch(e){console.error("Error deleting organization:",e)}},R=async e=>{try{var s,t,l,r;if(!a)return;console.log("values in organizations new create call: ".concat(JSON.stringify(e))),(e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0||e.allowed_mcp_servers_and_groups&&((null===(s=e.allowed_mcp_servers_and_groups.servers)||void 0===s?void 0:s.length)>0||(null===(t=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===t?void 0:t.length)>0))&&(e.object_permission={},e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0&&(e.object_permission.vector_stores=e.allowed_vector_store_ids,delete e.allowed_vector_store_ids),e.allowed_mcp_servers_and_groups&&((null===(l=e.allowed_mcp_servers_and_groups.servers)||void 0===l?void 0:l.length)>0&&(e.object_permission.mcp_servers=e.allowed_mcp_servers_and_groups.servers),(null===(r=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===r?void 0:r.length)>0&&(e.object_permission.mcp_access_groups=e.allowed_mcp_servers_and_groups.accessGroups),delete e.allowed_mcp_servers_and_groups)),await (0,j.organizationCreateCall)(a,e),eo.Z.success("Organization created successfully"),S(!1),C.resetFields(),lJ(a,m)}catch(e){console.error("Error creating organization:",e)}};return u?(0,c.jsxs)("div",{className:"w-full mx-4 h-[75vh]",children:[(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[("Admin"===t||"Org Admin"===t)&&(0,c.jsx)(b.Z,{className:"w-fit",onClick:()=>S(!0),children:"+ Create New Organization"}),x?(0,c.jsx)(lY,{organizationId:x,onClose:()=>{h(null),g(!1)},accessToken:a,is_org_admin:!0,is_proxy_admin:"Admin"===t,userModels:l,editOrg:p}):(0,c.jsxs)(st.Z,{className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsx)("div",{className:"flex",children:(0,c.jsx)(ss.Z,{children:"Your Organizations"})}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[r&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",r]}),(0,c.jsx)(sD.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center",onClick:i})]})]}),(0,c.jsx)(sr.Z,{children:(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)(k.Z,{children:"Click on “Organization ID” to view organization details."}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Organization ID"}),(0,c.jsx)(sq.Z,{children:"Organization Name"}),(0,c.jsx)(sq.Z,{children:"Created"}),(0,c.jsx)(sq.Z,{children:"Spend (USD)"}),(0,c.jsx)(sq.Z,{children:"Budget (USD)"}),(0,c.jsx)(sq.Z,{children:"Models"}),(0,c.jsx)(sq.Z,{children:"TPM / RPM Limits"}),(0,c.jsx)(sq.Z,{children:"Info"}),(0,c.jsx)(sq.Z,{children:"Actions"})]})}),(0,c.jsx)(sR.Z,{children:s&&s.length>0?s.sort((e,s)=>new Date(s.created_at).getTime()-new Date(e.created_at).getTime()).map(e=>{var s,l,a,r,i,n,o,d,m;return(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.organization_id,children:(0,c.jsxs)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>h(e.organization_id),children:[null===(s=e.organization_id)||void 0===s?void 0:s.slice(0,7),"..."]})})})}),(0,c.jsx)(sz.Z,{children:e.organization_alias}),(0,c.jsx)(sz.Z,{children:e.created_at?new Date(e.created_at).toLocaleDateString():"N/A"}),(0,c.jsx)(sz.Z,{children:eP(e.spend,4)}),(0,c.jsx)(sz.Z,{children:(null===(l=e.litellm_budget_table)||void 0===l?void 0:l.max_budget)!==null&&(null===(a=e.litellm_budget_table)||void 0===a?void 0:a.max_budget)!==void 0?null===(r=e.litellm_budget_table)||void 0===r?void 0:r.max_budget:"No limit"}),(0,c.jsx)(sz.Z,{style:{maxWidth:"8-x",whiteSpace:"pre-wrap",overflow:"hidden"},className:e.models.length>3?"px-0":"",children:(0,c.jsx)("div",{className:"flex flex-col",children:Array.isArray(e.models)?(0,c.jsx)("div",{className:"flex flex-col",children:0===e.models.length?(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"flex items-start",children:[e.models.length>3&&(0,c.jsx)("div",{children:(0,c.jsx)(sD.Z,{icon:E[e.organization_id||""]?sB.Z:sK.Z,className:"cursor-pointer",size:"xs",onClick:()=>{L(s=>({...s,[e.organization_id||""]:!s[e.organization_id||""]}))}})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[e.models.slice(0,3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s)),e.models.length>3&&!E[e.organization_id||""]&&(0,c.jsx)(se.Z,{size:"xs",color:"gray",className:"cursor-pointer",children:(0,c.jsxs)(k.Z,{children:["+",e.models.length-3," ",e.models.length-3==1?"more model":"more models"]})}),E[e.organization_id||""]&&(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:e.models.slice(3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s+3):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s+3))})]})]})})}):null})}),(0,c.jsx)(sz.Z,{children:(0,c.jsxs)(k.Z,{children:["TPM:"," ",(null===(i=e.litellm_budget_table)||void 0===i?void 0:i.tpm_limit)?null===(n=e.litellm_budget_table)||void 0===n?void 0:n.tpm_limit:"Unlimited",(0,c.jsx)("br",{}),"RPM:"," ",(null===(o=e.litellm_budget_table)||void 0===o?void 0:o.rpm_limit)?null===(d=e.litellm_budget_table)||void 0===d?void 0:d.rpm_limit:"Unlimited"]})}),(0,c.jsx)(sz.Z,{children:(0,c.jsxs)(k.Z,{children:[(null===(m=e.members)||void 0===m?void 0:m.length)||0," Members"]})}),(0,c.jsx)(sz.Z,{children:"Admin"===t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>{h(e.organization_id),g(!0)}}),(0,c.jsx)(sD.Z,{onClick:()=>M(e.organization_id),icon:W.Z,size:"sm"})]})})]},e.organization_id)}):null})]})})})})]})})]})]})}),(0,c.jsx)(T.Z,{title:"Create Organization",visible:w,width:800,footer:null,onCancel:()=>{S(!1),C.resetFields()},children:(0,c.jsxs)(A.Z,{form:C,onFinish:R,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"Organization Name",name:"organization_alias",rules:[{required:!0,message:"Please input an organization name"}],children:(0,c.jsx)(eW.o,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),l&&l.length>0&&l.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Vector Stores"," ",(0,c.jsx)(B.Z,{title:"Select which vector stores this organization can access by default. Leave empty for access to all vector stores",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_vector_store_ids",className:"mt-4",help:"Select vector stores this organization can access. Leave empty for access to all vector stores",children:(0,c.jsx)(U,{onChange:e=>C.setFieldValue("allowed_vector_store_ids",e),value:C.getFieldValue("allowed_vector_store_ids"),accessToken:a||"",placeholder:"Select vector stores (optional)"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed MCP Servers"," ",(0,c.jsx)(B.Z,{title:"Select which MCP servers and access groups this organization can access by default.",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_mcp_servers_and_groups",className:"mt-4",help:"Select MCP servers and access groups this organization can access.",children:(0,c.jsx)(eD,{onChange:e=>C.setFieldValue("allowed_mcp_servers_and_groups",e),value:C.getFieldValue("allowed_mcp_servers_and_groups"),accessToken:a||"",placeholder:"Select MCP servers and access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(b.Z,{type:"submit",children:"Create Organization"})})]})}),f?(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Organization"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this organization?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:D,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{_(!1),Z(null)},children:"Cancel"})]})]})]})}):(0,c.jsx)(c.Fragment,{})]}):(0,c.jsx)("div",{children:(0,c.jsxs)(k.Z,{children:["This is a LiteLLM Enterprise feature, and requires a valid key to use. Get a trial key"," ",(0,c.jsx)("a",{href:"https://www.litellm.ai/#pricing",target:"_blank",rel:"noopener noreferrer",children:"here"}),"."]})})},l$=t(94789);let lQ={google:"https://artificialanalysis.ai/img/logos/google_small.svg",microsoft:"https://upload.wikimedia.org/wikipedia/commons/a/a8/Microsoft_Azure_Logo.svg",okta:"https://www.okta.com/sites/default/files/Okta_Logo_BrightBlue_Medium.png",generic:""},lX={google:{envVarMap:{google_client_id:"GOOGLE_CLIENT_ID",google_client_secret:"GOOGLE_CLIENT_SECRET"},fields:[{label:"GOOGLE CLIENT ID",name:"google_client_id"},{label:"GOOGLE CLIENT SECRET",name:"google_client_secret"}]},microsoft:{envVarMap:{microsoft_client_id:"MICROSOFT_CLIENT_ID",microsoft_client_secret:"MICROSOFT_CLIENT_SECRET",microsoft_tenant:"MICROSOFT_TENANT"},fields:[{label:"MICROSOFT CLIENT ID",name:"microsoft_client_id"},{label:"MICROSOFT CLIENT SECRET",name:"microsoft_client_secret"},{label:"MICROSOFT TENANT",name:"microsoft_tenant"}]},okta:{envVarMap:{generic_client_id:"GENERIC_CLIENT_ID",generic_client_secret:"GENERIC_CLIENT_SECRET",generic_authorization_endpoint:"GENERIC_AUTHORIZATION_ENDPOINT",generic_token_endpoint:"GENERIC_TOKEN_ENDPOINT",generic_userinfo_endpoint:"GENERIC_USERINFO_ENDPOINT"},fields:[{label:"GENERIC CLIENT ID",name:"generic_client_id"},{label:"GENERIC CLIENT SECRET",name:"generic_client_secret"},{label:"AUTHORIZATION ENDPOINT",name:"generic_authorization_endpoint",placeholder:"https://your-okta-domain/authorize"},{label:"TOKEN ENDPOINT",name:"generic_token_endpoint",placeholder:"https://your-okta-domain/token"},{label:"USERINFO ENDPOINT",name:"generic_userinfo_endpoint",placeholder:"https://your-okta-domain/userinfo"}]},generic:{envVarMap:{generic_client_id:"GENERIC_CLIENT_ID",generic_client_secret:"GENERIC_CLIENT_SECRET",generic_authorization_endpoint:"GENERIC_AUTHORIZATION_ENDPOINT",generic_token_endpoint:"GENERIC_TOKEN_ENDPOINT",generic_userinfo_endpoint:"GENERIC_USERINFO_ENDPOINT"},fields:[{label:"GENERIC CLIENT ID",name:"generic_client_id"},{label:"GENERIC CLIENT SECRET",name:"generic_client_secret"},{label:"AUTHORIZATION ENDPOINT",name:"generic_authorization_endpoint"},{label:"TOKEN ENDPOINT",name:"generic_token_endpoint"},{label:"USERINFO ENDPOINT",name:"generic_userinfo_endpoint"}]}};var l0=e=>{let{isAddSSOModalVisible:s,isInstructionsModalVisible:t,handleAddSSOOk:l,handleAddSSOCancel:a,handleShowInstructions:r,handleInstructionsOk:i,handleInstructionsCancel:n,form:o,accessToken:m,ssoConfigured:u=!1}=e,[x,h]=(0,d.useState)(!1);(0,d.useEffect)(()=>{(async()=>{if(s&&m)try{let s=await (0,j.getSSOSettings)(m);if(console.log("Raw SSO data received:",s),s&&s.values){console.log("SSO values:",s.values),console.log("user_email from API:",s.values.user_email);let l=null;if(s.values.google_client_id)l="google";else if(s.values.microsoft_client_id)l="microsoft";else if(s.values.generic_client_id){var e,t;l=(null===(e=s.values.generic_authorization_endpoint)||void 0===e?void 0:e.includes("okta"))||(null===(t=s.values.generic_authorization_endpoint)||void 0===t?void 0:t.includes("auth0"))?"okta":"generic"}let a={sso_provider:l,proxy_base_url:s.values.proxy_base_url,user_email:s.values.user_email,...s.values};console.log("Setting form values:",a),o.resetFields(),setTimeout(()=>{o.setFieldsValue(a),console.log("Form values set, current form values:",o.getFieldsValue())},100)}}catch(e){console.error("Failed to load SSO settings:",e)}})()},[s,m,o]);let p=async e=>{if(!m){eo.Z.fromBackend("No access token available");return}try{await (0,j.updateSSOSettings)(m,e),r(e)}catch(e){console.error("Failed to save SSO settings:",e),eo.Z.fromBackend("Failed to save SSO settings")}},g=async()=>{if(!m){eo.Z.fromBackend("No access token available");return}try{await (0,j.updateSSOSettings)(m,{google_client_id:null,google_client_secret:null,microsoft_client_id:null,microsoft_client_secret:null,microsoft_tenant:null,generic_client_id:null,generic_client_secret:null,generic_authorization_endpoint:null,generic_token_endpoint:null,generic_userinfo_endpoint:null,proxy_base_url:null,user_email:null,sso_provider:null}),o.resetFields(),h(!1),l(),eo.Z.success("SSO settings cleared successfully")}catch(e){console.error("Failed to clear SSO settings:",e),eo.Z.fromBackend("Failed to clear SSO settings")}},f=e=>{let s=lX[e];return s?s.fields.map(e=>(0,c.jsx)(A.Z.Item,{label:e.label,name:e.name,rules:[{required:!0,message:"Please enter the ".concat(e.label.toLowerCase())}],children:e.name.includes("client")?(0,c.jsx)(P.default.Password,{}):(0,c.jsx)(_.Z,{placeholder:e.placeholder})},e.name)):null};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(T.Z,{title:u?"Edit SSO Settings":"Add SSO",visible:s,width:800,footer:null,onOk:l,onCancel:a,children:(0,c.jsxs)(A.Z,{form:o,onFinish:p,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"SSO Provider",name:"sso_provider",rules:[{required:!0,message:"Please select an SSO provider"}],children:(0,c.jsx)(I.default,{children:Object.entries(lQ).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:s,children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"4px 0"},children:[t&&(0,c.jsx)("img",{src:t,alt:s,style:{height:24,width:24,marginRight:12,objectFit:"contain"}}),(0,c.jsxs)("span",{children:[s.charAt(0).toUpperCase()+s.slice(1)," SSO"]})]})},s)})})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.sso_provider!==s.sso_provider,children:e=>{let{getFieldValue:s}=e,t=s("sso_provider");return t?f(t):null}}),(0,c.jsx)(A.Z.Item,{label:"Proxy Admin Email",name:"user_email",rules:[{required:!0,message:"Please enter the email of the proxy admin"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"PROXY BASE URL",name:"proxy_base_url",rules:[{required:!0,message:"Please enter the proxy base url"}],children:(0,c.jsx)(_.Z,{})})]}),(0,c.jsxs)("div",{style:{textAlign:"right",marginTop:"10px",display:"flex",justifyContent:"flex-end",alignItems:"center",gap:"8px"},children:[u&&(0,c.jsx)(L.ZP,{onClick:()=>h(!0),style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#5558eb",e.currentTarget.style.borderColor="#5558eb"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#6366f1",e.currentTarget.style.borderColor="#6366f1"},children:"Clear"}),(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})]})]})}),(0,c.jsxs)(T.Z,{title:"Confirm Clear SSO Settings",visible:x,onOk:g,onCancel:()=>h(!1),okText:"Yes, Clear",cancelText:"Cancel",okButtonProps:{danger:!0,style:{backgroundColor:"#dc2626",borderColor:"#dc2626"}},children:[(0,c.jsx)("p",{children:"Are you sure you want to clear all SSO settings? This action cannot be undone."}),(0,c.jsx)("p",{children:"Users will no longer be able to login using SSO after this change."})]}),(0,c.jsxs)(T.Z,{title:"SSO Setup Instructions",visible:t,width:800,footer:null,onOk:i,onCancel:n,children:[(0,c.jsx)("p",{children:"Follow these steps to complete the SSO setup:"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"1. DO NOT Exit this TAB"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"2. Open a new tab, visit your proxy base url"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"3. Confirm your SSO is configured correctly and you can login on the new Tab"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"4. If Step 3 is successful, you can close this tab"}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{onClick:i,children:"Done"})})]})]})},l1=t(62272),l2=t(92403),l4=t(29271),l5=t(34419),l3=e=>{let{accessToken:s,userID:t,proxySettings:l}=e,[a]=A.Z.useForm(),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)("");(0,d.useEffect)(()=>{let e="";u(l&&l.PROXY_BASE_URL&&void 0!==l.PROXY_BASE_URL?l.PROXY_BASE_URL:window.location.origin)},[l]);let x="".concat(m,"/scim/v2"),h=async e=>{if(!s||!t){eo.Z.fromBackend("You need to be logged in to create a SCIM token");return}try{i(!0);let l={key_alias:e.key_alias||"SCIM Access Token",team_id:null,models:[],allowed_routes:["/scim/*"]},a=await (0,j.keyCreateCall)(s,t,l);o(a),eo.Z.success("SCIM token created successfully")}catch(e){console.error("Error creating SCIM token:",e),eo.Z.fromBackend("Failed to create SCIM token: "+(0,sZ.O)(e))}finally{i(!1)}};return(0,c.jsx)(y.Z,{numItems:1,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("div",{className:"flex items-center mb-4",children:(0,c.jsx)(S.Z,{children:"SCIM Configuration"})}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"System for Cross-domain Identity Management (SCIM) allows you to automatically provision and manage users and groups in LiteLLM."}),(0,c.jsx)(lF.Z,{}),(0,c.jsxs)("div",{className:"space-y-8",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-2",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full bg-blue-100 text-blue-700 mr-2",children:"1"}),(0,c.jsxs)(S.Z,{className:"text-lg flex items-center",children:[(0,c.jsx)(l1.Z,{className:"h-5 w-5 mr-2"}),"SCIM Tenant URL"]})]}),(0,c.jsx)(k.Z,{className:"text-gray-600 mb-3",children:"Use this URL in your identity provider SCIM integration settings."}),(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(_.Z,{value:x,disabled:!0,className:"flex-grow"}),(0,c.jsx)(C.CopyToClipboard,{text:x,onCopy:()=>eo.Z.success("URL copied to clipboard"),children:(0,c.jsxs)(b.Z,{variant:"primary",className:"ml-2 flex items-center",children:[(0,c.jsx)(tJ.Z,{className:"h-4 w-4 mr-1"}),"Copy"]})})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-2",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full bg-blue-100 text-blue-700 mr-2",children:"2"}),(0,c.jsxs)(S.Z,{className:"text-lg flex items-center",children:[(0,c.jsx)(l2.Z,{className:"h-5 w-5 mr-2"}),"Authentication Token"]})]}),(0,c.jsx)(l$.Z,{title:"Using SCIM",color:"blue",className:"mb-4",children:"You need a SCIM token to authenticate with the SCIM API. Create one below and use it in your SCIM provider configuration."}),n?(0,c.jsxs)(G.Z,{className:"border border-yellow-300 bg-yellow-50",children:[(0,c.jsxs)("div",{className:"flex items-center mb-2 text-yellow-800",children:[(0,c.jsx)(l4.Z,{className:"h-5 w-5 mr-2"}),(0,c.jsx)(S.Z,{className:"text-lg text-yellow-800",children:"Your SCIM Token"})]}),(0,c.jsx)(k.Z,{className:"text-yellow-800 mb-4 font-medium",children:"Make sure to copy this token now. You will not be able to see it again."}),(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(_.Z,{value:n.key,className:"flex-grow mr-2 bg-white",type:"password",disabled:!0}),(0,c.jsx)(C.CopyToClipboard,{text:n.key,onCopy:()=>eo.Z.success("Token copied to clipboard"),children:(0,c.jsxs)(b.Z,{variant:"primary",className:"flex items-center",children:[(0,c.jsx)(tJ.Z,{className:"h-4 w-4 mr-1"}),"Copy"]})})]}),(0,c.jsxs)(b.Z,{className:"mt-4 flex items-center",variant:"secondary",onClick:()=>o(null),children:[(0,c.jsx)(l5.Z,{className:"h-4 w-4 mr-1"}),"Create Another Token"]})]}):(0,c.jsx)("div",{className:"bg-gray-50 p-4 rounded-lg",children:(0,c.jsxs)(A.Z,{form:a,onFinish:h,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{name:"key_alias",label:"Token Name",rules:[{required:!0,message:"Please enter a name for your token"}],children:(0,c.jsx)(_.Z,{placeholder:"SCIM Access Token"})}),(0,c.jsx)(A.Z.Item,{children:(0,c.jsxs)(b.Z,{variant:"primary",type:"submit",loading:r,className:"flex items-center",children:[(0,c.jsx)(l2.Z,{className:"h-4 w-4 mr-1"}),"Create SCIM Token"]})})]})})]})]})]})})},l6=e=>{let{accessToken:s,onSuccess:t}=e,[l]=A.Z.useForm(),[a,r]=(0,d.useState)(!1);(0,d.useEffect)(()=>{(async()=>{if(s)try{let e=await (0,j.getSSOSettings)(s);if(e&&e.values){let s=e.values.ui_access_mode,t={};s&&"object"==typeof s?t={ui_access_mode_type:s.type,restricted_sso_group:s.restricted_sso_group,sso_group_jwt_field:s.sso_group_jwt_field}:"string"==typeof s&&(t={ui_access_mode_type:s,restricted_sso_group:e.values.restricted_sso_group,sso_group_jwt_field:e.values.team_ids_jwt_field||e.values.sso_group_jwt_field}),l.setFieldsValue(t)}}catch(e){console.error("Failed to load UI access settings:",e)}})()},[s,l]);let i=async e=>{if(!s){eo.Z.fromBackend("No access token available");return}r(!0);try{let l;l="all_authenticated_users"===e.ui_access_mode_type?{ui_access_mode:"none"}:{ui_access_mode:{type:e.ui_access_mode_type,restricted_sso_group:e.restricted_sso_group,sso_group_jwt_field:e.sso_group_jwt_field}},await (0,j.updateSSOSettings)(s,l),t()}catch(e){console.error("Failed to save UI access settings:",e),eo.Z.fromBackend("Failed to save UI access settings")}finally{r(!1)}};return(0,c.jsxs)("div",{style:{padding:"16px"},children:[(0,c.jsx)("div",{style:{marginBottom:"16px"},children:(0,c.jsx)(k.Z,{style:{fontSize:"14px",color:"#6b7280"},children:"Configure who can access the UI interface and how group information is extracted from JWT tokens."})}),(0,c.jsxs)(A.Z,{form:l,onFinish:i,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"UI Access Mode",name:"ui_access_mode_type",tooltip:"Controls who can access the UI interface",children:(0,c.jsxs)(I.default,{placeholder:"Select access mode",children:[(0,c.jsx)(I.default.Option,{value:"all_authenticated_users",children:"All Authenticated Users"}),(0,c.jsx)(I.default.Option,{value:"restricted_sso_group",children:"Restricted SSO Group"})]})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.ui_access_mode_type!==s.ui_access_mode_type,children:e=>{let{getFieldValue:s}=e;return"restricted_sso_group"===s("ui_access_mode_type")?(0,c.jsx)(A.Z.Item,{label:"Restricted SSO Group",name:"restricted_sso_group",rules:[{required:!0,message:"Please enter the restricted SSO group"}],children:(0,c.jsx)(_.Z,{placeholder:"ui-access-group"})}):null}}),(0,c.jsx)(A.Z.Item,{label:"SSO Group JWT Field",name:"sso_group_jwt_field",tooltip:"JWT field name that contains team/group information. Use dot notation to access nested fields.",children:(0,c.jsx)(_.Z,{placeholder:"groups"})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"16px"},children:(0,c.jsx)(L.ZP,{type:"primary",htmlType:"submit",loading:a,style:{backgroundColor:"#6366f1",borderColor:"#6366f1"},children:"Update UI Access Control"})})]})]})},l8=e=>{let{searchParams:s,accessToken:t,userID:l,showSSOBanner:a,premiumUser:r,proxySettings:i,userRole:n}=e,[o]=A.Z.useForm(),[u]=A.Z.useForm(),{Title:x,Paragraph:h}=en.default,[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)(null),[y,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)(!1),[w,k]=(0,d.useState)(!1),[S,C]=(0,d.useState)(!1),[I,E]=(0,d.useState)(!1),[M,O]=(0,d.useState)(!1),[D,F]=(0,d.useState)(!1),[R,z]=(0,d.useState)(!1),[U,q]=(0,d.useState)(!1),[V,B]=(0,d.useState)(!1),[K,H]=(0,d.useState)(!1),[Y,J]=(0,d.useState)([]),[W,$]=(0,d.useState)(null),[Q,X]=(0,d.useState)(!1);(0,m.useRouter)();let[ee,es]=(0,d.useState)(null);console.log=function(){};let et=sP(),el="All IP Addresses Allowed",ea=et;ea+="/fallback/login";let er=async()=>{if(t&&r)try{let e=await (0,j.getSSOSettings)(t);if(console.log("SSO data:",e),e&&e.values){let s=e.values.google_client_id&&e.values.google_client_secret,t=e.values.microsoft_client_id&&e.values.microsoft_client_secret,l=e.values.generic_client_id&&e.values.generic_client_secret;X(s||t||l)}else X(!1)}catch(e){console.error("Error checking SSO configuration:",e),X(!1)}},ei=async()=>{try{if(!0!==r){eo.Z.fromBackend("This feature is only available for premium users. Please upgrade your account.");return}if(t){let e=await (0,j.getAllowedIPs)(t);J(e&&e.length>0?e:[el])}else J([el])}catch(e){console.error("Error fetching allowed IPs:",e),eo.Z.fromBackend("Failed to fetch allowed IPs ".concat(e)),J([el])}finally{!0===r&&z(!0)}},ec=async e=>{try{if(t){await (0,j.addAllowedIP)(t,e.ip);let s=await (0,j.getAllowedIPs)(t);J(s),eo.Z.success("IP address added successfully")}}catch(e){console.error("Error adding IP:",e),eo.Z.fromBackend("Failed to add IP address ".concat(e))}finally{q(!1)}},ed=async e=>{$(e),B(!0)},em=async()=>{if(W&&t)try{await (0,j.deleteAllowedIP)(t,W);let e=await (0,j.getAllowedIPs)(t);J(e.length>0?e:[el]),eo.Z.success("IP address deleted successfully")}catch(e){console.error("Error deleting IP:",e),eo.Z.fromBackend("Failed to delete IP address ".concat(e))}finally{B(!1),$(null)}};(0,d.useEffect)(()=>{(async()=>{if(null!=t){let e=[],s=await (0,j.userGetAllUsersCall)(t,"proxy_admin_viewer");console.log("proxy admin viewer response: ",s);let l=s.users;console.log("proxy viewers response: ".concat(l)),l.forEach(s=>{e.push({user_role:s.user_role,user_id:s.user_id,user_email:s.user_email})}),console.log("proxy viewers: ".concat(l));let a=(await (0,j.userGetAllUsersCall)(t,"proxy_admin")).users;a.forEach(s=>{e.push({user_role:s.user_role,user_id:s.user_id,user_email:s.user_email})}),console.log("proxy admins: ".concat(a)),console.log("combinedList: ".concat(e)),v(e),es(await (0,j.getPossibleUserRoles)(t))}})()},[t]),(0,d.useEffect)(()=>{er()},[t,r]);let eu=()=>{H(!1)};return console.log("admins: ".concat(null==f?void 0:f.length)),(0,c.jsxs)("div",{className:"w-full m-2 mt-2 p-8",children:[(0,c.jsx)(x,{level:4,children:"Admin Access "}),(0,c.jsx)(h,{children:"Go to 'Internal Users' page to add other admins."}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{children:[(0,c.jsx)(ss.Z,{children:"Security Settings"}),(0,c.jsx)(ss.Z,{children:"SCIM"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(x,{level:4,children:" ✨ Security Settings"}),(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"1rem",marginTop:"1rem",marginLeft:"0.5rem"},children:[(0,c.jsx)("div",{children:(0,c.jsx)(b.Z,{style:{width:"150px"},onClick:()=>!0===r?O(!0):eo.Z.fromBackend("Only premium users can add SSO"),children:Q?"Edit SSO Settings":"Add SSO"})}),(0,c.jsx)("div",{children:(0,c.jsx)(b.Z,{style:{width:"150px"},onClick:ei,children:"Allowed IPs"})}),(0,c.jsx)("div",{children:(0,c.jsx)(b.Z,{style:{width:"150px"},onClick:()=>!0===r?H(!0):eo.Z.fromBackend("Only premium users can configure UI access control"),children:"UI Access Control"})})]})]}),(0,c.jsxs)("div",{className:"flex justify-start mb-4",children:[(0,c.jsx)(l0,{isAddSSOModalVisible:M,isInstructionsModalVisible:D,handleAddSSOOk:()=>{O(!1),o.resetFields(),t&&r&&er()},handleAddSSOCancel:()=>{O(!1),o.resetFields()},handleShowInstructions:e=>{O(!1),F(!0)},handleInstructionsOk:()=>{F(!1),t&&r&&er()},handleInstructionsCancel:()=>{F(!1),t&&r&&er()},form:o,accessToken:t,ssoConfigured:Q}),(0,c.jsx)(T.Z,{title:"Manage Allowed IP Addresses",width:800,visible:R,onCancel:()=>z(!1),footer:[(0,c.jsx)(b.Z,{className:"mx-1",onClick:()=>q(!0),children:"Add IP Address"},"add"),(0,c.jsx)(b.Z,{onClick:()=>z(!1),children:"Close"},"close")],children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"IP Address"}),(0,c.jsx)(sq.Z,{className:"text-right",children:"Action"})]})}),(0,c.jsx)(sR.Z,{children:Y.map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e}),(0,c.jsx)(sz.Z,{className:"text-right",children:e!==el&&(0,c.jsx)(b.Z,{onClick:()=>ed(e),color:"red",size:"xs",children:"Delete"})})]},s))})]})}),(0,c.jsx)(T.Z,{title:"Add Allowed IP Address",visible:U,onCancel:()=>q(!1),footer:null,children:(0,c.jsxs)(A.Z,{onFinish:ec,children:[(0,c.jsx)(A.Z.Item,{name:"ip",rules:[{required:!0,message:"Please enter an IP address"}],children:(0,c.jsx)(P.default,{placeholder:"Enter IP address"})}),(0,c.jsx)(A.Z.Item,{children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Add IP Address"})})]})}),(0,c.jsx)(T.Z,{title:"Confirm Delete",visible:V,onCancel:()=>B(!1),onOk:em,footer:[(0,c.jsx)(b.Z,{className:"mx-1",onClick:()=>em(),children:"Yes"},"delete"),(0,c.jsx)(b.Z,{onClick:()=>B(!1),children:"Close"},"close")],children:(0,c.jsxs)("p",{children:["Are you sure you want to delete the IP address: ",W,"?"]})}),(0,c.jsx)(T.Z,{title:"UI Access Control Settings",visible:K,width:600,footer:null,onOk:eu,onCancel:()=>{H(!1)},children:(0,c.jsx)(l6,{accessToken:t,onSuccess:()=>{eu(),eo.Z.success("UI Access Control settings updated successfully")}})})]}),(0,c.jsxs)(l$.Z,{title:"Login without SSO",color:"teal",children:["If you need to login without sso, you can access"," ",(0,c.jsxs)("a",{href:ea,target:"_blank",children:[(0,c.jsx)("b",{children:ea})," "]})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(l3,{accessToken:t,userID:l,proxySettings:i})})]})]})]})};let{Title:l7}=en.default;var l9=e=>{let{accessToken:s}=e,[t,l]=(0,d.useState)(!0),[a,r]=(0,d.useState)([]);(0,d.useEffect)(()=>{i()},[s]);let i=async()=>{if(s){l(!0);try{let e=await (0,j.getEmailEventSettings)(s);r(e.settings)}catch(e){console.error("Failed to fetch email event settings:",e),eo.Z.fromBackend(e)}finally{l(!1)}}},n=(e,s)=>{r(a.map(t=>t.event===e?{...t,enabled:s}:t))},o=async()=>{if(s)try{await (0,j.updateEmailEventSettings)(s,{settings:a}),eo.Z.success("Email event settings updated successfully")}catch(e){console.error("Failed to update email event settings:",e),eo.Z.fromBackend(e)}},m=async()=>{if(s)try{await (0,j.resetEmailEventSettings)(s),eo.Z.success("Email event settings reset to defaults"),i()}catch(e){console.error("Failed to reset email event settings:",e),eo.Z.fromBackend(e)}},u=e=>{if(e.includes("Virtual Key Created"))return"An email will be sent to the user when a new virtual key is created with their user ID";if(e.includes("New User Invitation"))return"An email will be sent to the email address of the user when a new user is created";{let s=e.split(/(?=[A-Z])/).join(" ").toLowerCase();return"Receive an email notification when ".concat(s)}};return(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(l7,{level:4,children:"Email Notifications"}),(0,c.jsx)(k.Z,{children:"Select which events should trigger email notifications."}),(0,c.jsx)(K.Z,{}),t?(0,c.jsx)("div",{style:{textAlign:"center",padding:"20px"},children:(0,c.jsx)(eF.Z,{size:"large"})}):(0,c.jsx)("div",{className:"space-y-4",children:a.map(e=>(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(eR.Z,{checked:e.enabled,onChange:s=>n(e.event,s.target.checked)}),(0,c.jsxs)("div",{className:"ml-3",children:[(0,c.jsx)(k.Z,{children:e.event}),(0,c.jsx)("div",{className:"text-sm text-gray-500 block",children:u(e.event)})]})]},e.event))}),(0,c.jsxs)("div",{className:"mt-6 flex space-x-4",children:[(0,c.jsx)(b.Z,{onClick:o,disabled:t,children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:m,variant:"secondary",disabled:t,children:"Reset to Defaults"})]})]})};let{Title:ae}=en.default;var as=e=>{let{accessToken:s,premiumUser:t,alerts:l}=e,a=async()=>{if(!s)return;let e={};l.filter(e=>"email"===e.name).forEach(s=>{var t;Object.entries(null!==(t=s.variables)&&void 0!==t?t:{}).forEach(s=>{let[t,l]=s,a=document.querySelector('input[name="'.concat(t,'"]'));a&&a.value&&(e[t]=null==a?void 0:a.value)})}),console.log("updatedVariables",e);try{await (0,j.setCallbacksCall)(s,{general_settings:{alerting:["email"]},environment_variables:e}),eo.Z.success("Email settings updated successfully")}catch(e){eo.Z.fromBackend(e)}};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"mt-6 mb-6",children:(0,c.jsx)(l9,{accessToken:s})}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(ae,{level:4,children:"Email Server Settings"}),(0,c.jsxs)(k.Z,{children:[(0,c.jsxs)("a",{href:"https://docs.litellm.ai/docs/proxy/email",target:"_blank",style:{color:"blue"},children:[" ","LiteLLM Docs: email alerts"]})," ",(0,c.jsx)("br",{})]}),(0,c.jsx)("div",{className:"flex w-full",children:l.filter(e=>"email"===e.name).map((e,s)=>{var l;return(0,c.jsx)(sz.Z,{children:(0,c.jsx)("ul",{children:(0,c.jsx)(y.Z,{numItems:2,children:Object.entries(null!==(l=e.variables)&&void 0!==l?l:{}).map(e=>{let[s,l]=e;return(0,c.jsxs)("li",{className:"mx-2 my-2",children:[!0!=t&&("EMAIL_LOGO_URL"===s||"EMAIL_SUPPORT_CONTACT"===s)?(0,c.jsxs)("div",{children:[(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:(0,c.jsxs)(k.Z,{className:"mt-2",children:[" ✨ ",s]})}),(0,c.jsx)(_.Z,{name:s,defaultValue:l,type:"password",disabled:!0,style:{width:"400px"}})]}):(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mt-2",children:s}),(0,c.jsx)(_.Z,{name:s,defaultValue:l,type:"password",style:{width:"400px"}})]}),(0,c.jsxs)("p",{style:{fontSize:"small",fontStyle:"italic"},children:["SMTP_HOST"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the SMTP host address, e.g. `smtp.resend.com`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"SMTP_PORT"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the SMTP port number, e.g. `587`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"SMTP_USERNAME"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the SMTP username, e.g. `username`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"SMTP_PASSWORD"===s&&(0,c.jsx)("span",{style:{color:"red"},children:" Required * "}),"SMTP_SENDER_EMAIL"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the sender email address, e.g. `sender@berri.ai`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"TEST_EMAIL_ADDRESS"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Email Address to send `Test Email Alert` to. example: `info@berri.ai`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"EMAIL_LOGO_URL"===s&&(0,c.jsx)("div",{style:{color:"gray"},children:"(Optional) Customize the Logo that appears in the email, pass a url to your logo"}),"EMAIL_SUPPORT_CONTACT"===s&&(0,c.jsx)("div",{style:{color:"gray"},children:"(Optional) Customize the support email address that appears in the email. Default is support@berri.ai"})]})]},s)})})})},s)})}),(0,c.jsx)(b.Z,{className:"mt-2",onClick:()=>a(),children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:async()=>{if(s)try{await (0,j.serviceHealthCheck)(s,"email"),eo.Z.success("Email test triggered. Check your configured email inbox/logs.")}catch(e){eo.Z.fromBackend(e)}},className:"mx-2",children:"Test Email Alerts"})]})]})},at=e=>{let{alertingSettings:s,handleInputChange:t,handleResetField:l,handleSubmit:a,premiumUser:r}=e,[i]=A.Z.useForm();return(0,c.jsxs)(A.Z,{form:i,onFinish:()=>{console.log("INSIDE ONFINISH");let e=i.getFieldsValue(),s=Object.entries(e).every(e=>{let[s,t]=e;return"boolean"!=typeof t&&(""===t||null==t)});console.log("formData: ".concat(JSON.stringify(e),", isEmpty: ").concat(s)),s?console.log("Some form fields are empty."):a(e)},labelAlign:"left",children:[s.map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsxs)(sz.Z,{align:"center",children:[(0,c.jsx)(k.Z,{children:e.field_name}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:e.field_description})]}),e.premium_field?r?(0,c.jsx)(A.Z.Item,{name:e.field_name,children:(0,c.jsx)(sz.Z,{children:"Integer"===e.field_type?(0,c.jsx)(e8.Z,{step:1,value:e.field_value,onChange:s=>t(e.field_name,s)}):"Boolean"===e.field_type?(0,c.jsx)(tX.Z,{checked:e.field_value,onChange:s=>t(e.field_name,s)}):(0,c.jsx)(P.default,{value:e.field_value,onChange:s=>t(e.field_name,s)})})}):(0,c.jsx)(sz.Z,{children:(0,c.jsx)(b.Z,{className:"flex items-center justify-center",children:(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"✨ Enterprise Feature"})})}):(0,c.jsx)(A.Z.Item,{name:e.field_name,className:"mb-0",valuePropName:"Boolean"===e.field_type?"checked":"value",children:(0,c.jsx)(sz.Z,{children:"Integer"===e.field_type?(0,c.jsx)(e8.Z,{step:1,value:e.field_value,onChange:s=>t(e.field_name,s),className:"p-0"}):"Boolean"===e.field_type?(0,c.jsx)(tX.Z,{checked:e.field_value,onChange:s=>{t(e.field_name,s),i.setFieldsValue({[e.field_name]:s})}}):(0,c.jsx)(P.default,{value:e.field_value,onChange:s=>t(e.field_name,s)})})}),(0,c.jsx)(sz.Z,{children:!0==e.stored_in_db?(0,c.jsx)(se.Z,{icon:eb.Z,className:"text-white",children:"In DB"}):!1==e.stored_in_db?(0,c.jsx)(se.Z,{className:"text-gray bg-white outline",children:"In Config"}):(0,c.jsx)(se.Z,{className:"text-gray bg-white outline",children:"Not Set"})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(sD.Z,{icon:W.Z,color:"red",onClick:()=>l(e.field_name,s),children:"Reset"})})]},s)),(0,c.jsx)("div",{children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Update Settings"})})]})},al=e=>{let{accessToken:s,premiumUser:t}=e,[l,a]=(0,d.useState)([]);return(0,d.useEffect)(()=>{s&&(0,j.alertingSettingsCall)(s).then(e=>{a(e)})},[s]),(0,c.jsx)(at,{alertingSettings:l,handleInputChange:(e,s)=>{let t=l.map(t=>t.field_name===e?{...t,field_value:s}:t);console.log("updatedSettings: ".concat(JSON.stringify(t))),a(t)},handleResetField:(e,t)=>{if(s)try{let s=l.map(s=>s.field_name===e?{...s,stored_in_db:null,field_value:s.field_default_value}:s);a(s)}catch(e){console.log("ERROR OCCURRED!")}},handleSubmit:e=>{if(!s||(console.log("formValues: ".concat(e)),null==e||void 0==e))return;let t={};l.forEach(e=>{t[e.field_name]=e.field_value});let a={...e,...t};console.log("mergedFormValues: ".concat(JSON.stringify(a)));let{slack_alerting:r,...i}=a;console.log("slack_alerting: ".concat(r,", alertingArgs: ").concat(JSON.stringify(i)));try{(0,j.updateConfigFieldSetting)(s,"alerting_args",i),"boolean"==typeof r&&(!0==r?(0,j.updateConfigFieldSetting)(s,"alerting",["slack"]):(0,j.updateConfigFieldSetting)(s,"alerting",[])),eo.Z.success("Wait 10s for proxy to update.")}catch(e){}},premiumUser:t})},aa=t(38994);let{Title:ar,Paragraph:ai}=en.default;var an=e=>{let{accessToken:s,userRole:t,userID:l,premiumUser:a}=e,[r,n]=(0,d.useState)([]),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(!1),[h]=A.Z.useForm(),[p]=A.Z.useForm(),[g,f]=(0,d.useState)(null),[v,N]=(0,d.useState)(""),[Z,w]=(0,d.useState)({}),[S,C]=(0,d.useState)([]),[E,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)([]),[F,R]=(0,d.useState)([]),[z,U]=(0,d.useState)(!1),[q,V]=(0,d.useState)(null),[B,K]=(0,d.useState)(!1),[H,Y]=(0,d.useState)(null);(0,d.useEffect)(()=>{if(z&&q){let e=Object.fromEntries(Object.entries(q.variables||{}).map(e=>{let[s,t]=e;return[s,null!=t?t:""]}));p.setFieldsValue(e)}},[z,q,p]);let J=e=>{S.includes(e)?C(S.filter(s=>s!==e)):C([...S,e])},Q={llm_exceptions:"LLM Exceptions",llm_too_slow:"LLM Responses Too Slow",llm_requests_hanging:"LLM Requests Hanging",budget_alerts:"Budget Alerts (API Keys, Users)",db_exceptions:"Database Exceptions (Read/Write)",daily_reports:"Weekly/Monthly Spend Reports",outage_alerts:"Outage Alerts",region_outage_alerts:"Region Outage Alerts"};(0,d.useEffect)(()=>{s&&t&&l&&(0,j.getCallbacksCall)(s,l,t).then(e=>{n(e.callbacks),D(e.available_callbacks);let s=e.alerts;if(s&&s.length>0){let e=s[0],t=e.variables.SLACK_WEBHOOK_URL;C(e.active_alerts),N(t),w(e.alerts_to_webhook)}m(s)})},[s,t,l]);let X=e=>S&&S.includes(e),ee=async e=>{if(!s||!q)return;let a={};Object.entries(e).forEach(e=>{let[s,t]=e;"callback"!==s&&(a[s]=t)});let r={environment_variables:e,litellm_settings:{success_callback:[q.name]}};try{if(await (0,j.setCallbacksCall)(s,r),eo.Z.success("Callback updated successfully"),U(!1),p.resetFields(),V(null),l&&t){let e=await (0,j.getCallbacksCall)(s,l,t);n(e.callbacks)}}catch(e){eo.Z.fromBackend(e)}},es=async e=>{if(!s)return;let a=null==e?void 0:e.callback,r={};Object.entries(e).forEach(e=>{let[s,t]=e;"callback"!==s&&(r[s]=t)});try{await (0,j.setCallbacksCall)(s,{environment_variables:e,litellm_settings:{success_callback:[a]}}),eo.Z.success("Callback ".concat(a," added successfully")),M(!1),h.resetFields(),f(null),R([]);let r=await (0,j.getCallbacksCall)(s,l||"",t||"");n(r.callbacks)}catch(e){eo.Z.fromBackend(e)}},el=e=>{f(e.litellm_callback_name),e&&e.litellm_callback_params?R(e.litellm_callback_params):R([])},ea=async()=>{if(!s)return;let e={};Object.entries(Q).forEach(s=>{let[t,l]=s,a=document.querySelector('input[name="'.concat(t,'"]')),r=(null==a?void 0:a.value)||"";e[t]=r});try{await (0,j.setCallbacksCall)(s,{general_settings:{alert_to_webhook_url:e,alert_types:S}})}catch(e){eo.Z.fromBackend(e)}eo.Z.success("Alerts updated successfully")},er=e=>{Y(e),K(!0)},en=async()=>{if(H&&s)try{if(await (0,j.deleteCallback)(s,H),eo.Z.success("Callback ".concat(H," deleted successfully")),l&&t){let e=await (0,j.getCallbacksCall)(s,l,t);n(e.callbacks)}K(!1),Y(null)}catch(e){console.error("Failed to delete callback:",e),eo.Z.fromBackend(e)}};return s?(0,c.jsxs)("div",{className:"w-full mx-4",children:[(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"line",defaultValue:"1",children:[(0,c.jsx)(ss.Z,{value:"1",children:"Logging Callbacks"}),(0,c.jsx)(ss.Z,{value:"2",children:"Alerting Types"}),(0,c.jsx)(ss.Z,{value:"3",children:"Alerting Settings"}),(0,c.jsx)(ss.Z,{value:"4",children:"Email Alerts"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)(ar,{level:4,children:"Active Logging Callbacks"}),(0,c.jsx)(y.Z,{numItems:2,children:(0,c.jsx)(G.Z,{className:"max-h-[50vh]",children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sq.Z,{children:"Callback Name"})})}),(0,c.jsx)(sR.Z,{children:r.map((e,t)=>(0,c.jsxs)(sV.Z,{className:"flex justify-between",children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:e.name})}),(0,c.jsx)(sz.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"flex justify-between",children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>{V(e),U(!0)}}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>er(e.name),className:"text-red-500 hover:text-red-700 cursor-pointer"}),(0,c.jsx)(b.Z,{onClick:async()=>{try{await (0,j.serviceHealthCheck)(s,e.name),eo.Z.success("Health check triggered")}catch(e){eo.Z.fromBackend((0,sZ.O)(e))}},className:"ml-2",variant:"secondary",children:"Test Callback"})]})})]},t))})]})})}),(0,c.jsx)(b.Z,{className:"mt-2",onClick:()=>M(!0),children:"Add Callback"})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(k.Z,{className:"my-2",children:["Alerts are only supported for Slack Webhook URLs. Get your webhook urls from"," ",(0,c.jsx)("a",{href:"https://api.slack.com/messaging/webhooks",target:"_blank",style:{color:"blue"},children:"here"})]}),(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{}),(0,c.jsx)(sq.Z,{}),(0,c.jsx)(sq.Z,{children:"Slack Webhook URL"})]})}),(0,c.jsx)(sR.Z,{children:Object.entries(Q).map((e,s)=>{let[t,l]=e;return(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:"region_outage_alerts"==t?a?(0,c.jsx)(tX.Z,{id:"switch",name:"switch",checked:X(t),onChange:()=>J(t)}):(0,c.jsx)(b.Z,{className:"flex items-center justify-center",children:(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"✨ Enterprise Feature"})}):(0,c.jsx)(tX.Z,{id:"switch",name:"switch",checked:X(t),onChange:()=>J(t)})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:l})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(_.Z,{name:t,type:"password",defaultValue:Z&&Z[t]?Z[t]:v})})]},s)})})]}),(0,c.jsx)(b.Z,{size:"xs",className:"mt-2",onClick:ea,children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:async()=>{try{await (0,j.serviceHealthCheck)(s,"slack"),eo.Z.success("Alert test triggered. Test request to slack made - check logs/alerts on slack to verify")}catch(e){eo.Z.fromBackend((0,sZ.O)(e))}},className:"mx-2",children:"Test Alerts"})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(al,{accessToken:s,premiumUser:a})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(as,{accessToken:s,premiumUser:a,alerts:o})})]})]})}),(0,c.jsxs)(T.Z,{title:"Add Logging Callback",visible:E,width:800,onCancel:()=>{M(!1),f(null),R([])},footer:null,children:[(0,c.jsxs)("a",{href:"https://docs.litellm.ai/docs/proxy/logging",className:"mb-8 mt-4",target:"_blank",style:{color:"blue"},children:[" ","LiteLLM Docs: Logging"]}),(0,c.jsx)(A.Z,{form:h,onFinish:es,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(aa.Z,{label:"Callback",name:"callback",rules:[{required:!0,message:"Please select a callback"}],children:(0,c.jsx)(I.default,{onChange:e=>{let s=O[e];s&&el(s)},children:Object.entries(i).map(e=>{var s;let[t,l]=e;return(0,c.jsx)(ei.Z,{value:$[t],children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(null===(s=et[l])||void 0===s?void 0:s.logo)?(0,c.jsx)("div",{className:"w-5 h-5 flex items-center justify-center",children:(0,c.jsx)("img",{src:et[l].logo,alt:"".concat(t," logo"),className:"w-5 h-5",onError:e=>{e.currentTarget.style.display="none"}})}):(0,c.jsx)("div",{className:"w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",children:l.charAt(0).toUpperCase()}),(0,c.jsx)("span",{children:l})]})},l)})})}),F&&F.map(e=>(0,c.jsx)(aa.Z,{label:e,name:e,rules:[{required:!0,message:"Please enter the value for "+e}],children:(0,c.jsx)(P.default.Password,{})},e)),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})})]})})]}),(0,c.jsx)(T.Z,{visible:z,width:800,title:"Edit ".concat(null==q?void 0:q.name," Settings"),onCancel:()=>{U(!1),V(null)},footer:null,children:(0,c.jsxs)(A.Z,{form:p,onFinish:ee,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(c.Fragment,{children:q&&q.variables&&Object.entries(q.variables).map(e=>{let[s]=e;return(0,c.jsx)(aa.Z,{label:s,name:s,rules:[{required:!0,message:"Please enter the value for ".concat(s)}],children:(0,c.jsx)(P.default.Password,{})},s)})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})})]})}),(0,c.jsx)(T.Z,{title:"Confirm Delete",visible:B,onOk:en,onCancel:()=>{K(!1),Y(null)},okText:"Delete",cancelText:"Cancel",okButtonProps:{danger:!0},children:(0,c.jsxs)("p",{children:["Are you sure you want to delete the callback - ",H,"? This action cannot be undone."]})})]}):null},ao=t(54250),ac=t(70450),ad=e=>{let{models:s,accessToken:t,routerSettings:l,setRouterSettings:a}=e,[r]=A.Z.useForm(),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(""),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{try{let e=await eG(t);console.log("Fetched models for fallbacks:",e),x(e)}catch(e){console.error("Error fetching model info for fallbacks:",e)}})()},[t]);let g=()=>{n(!1),r.resetFields(),p([]),m("")};return(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{className:"mx-auto",onClick:()=>n(!0),icon:()=>(0,c.jsx)("span",{className:"mr-1",children:"+"}),children:"Add Fallbacks"}),(0,c.jsx)(T.Z,{title:(0,c.jsx)("div",{className:"pb-4 border-b border-gray-100",children:(0,c.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add Fallbacks"})}),open:i,width:900,footer:null,onOk:()=>{n(!1),r.resetFields(),p([]),m("")},onCancel:g,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,c.jsxs)("div",{className:"mt-6",children:[(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsx)("p",{className:"text-gray-600",children:"Configure fallback models to improve reliability. When the primary model fails or is unavailable, requests will automatically route to the specified fallback models in order."})}),(0,c.jsxs)(A.Z,{form:r,onFinish:e=>{console.log(e);let{model_name:s,models:i}=e,o=[...l.fallbacks||[],{[s]:i}],c={...l,fallbacks:o};console.log(c);try{(0,j.setCallbacksCall)(t,{router_settings:c}),a(c)}catch(e){eo.Z.fromBackend("Failed to update router settings: "+e)}eo.Z.success("router settings updated successfully"),n(!1),r.resetFields(),p([]),m("")},layout:"vertical",className:"space-y-6",children:[(0,c.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,c.jsxs)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Primary Model ",(0,c.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"model_name",rules:[{required:!0,message:"Please select the primary model that needs fallbacks"}],className:"!mb-0",children:[(0,c.jsx)(ao.Z,{placeholder:"Select the model that needs fallback protection",value:o,onValueChange:e=>{m(e);let s=h.filter(s=>s!==e);p(s),r.setFieldValue("models",s),r.setFieldValue("model_name",e)},children:Array.from(new Set(u.map(e=>e.model_group))).map((e,s)=>(0,c.jsx)(ac.Z,{value:e,children:e},s))}),(0,c.jsx)("p",{className:"text-sm text-gray-500 mt-1",children:"This is the primary model that users will request"})]}),(0,c.jsx)("div",{className:"border-t border-gray-200 my-6"}),(0,c.jsxs)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Fallback Models (select multiple) ",(0,c.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"models",rules:[{required:!0,message:"Please select at least one fallback model"}],className:"!mb-0",children:[(0,c.jsxs)("div",{className:"space-y-3",children:[h.length>0&&(0,c.jsxs)("div",{className:"border border-gray-200 rounded-lg p-3 bg-gray-50",children:[(0,c.jsx)("p",{className:"text-sm font-medium text-gray-700 mb-2",children:"Fallback Order:"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:h.map((e,s)=>(0,c.jsxs)("div",{className:"flex items-center bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm",children:[(0,c.jsxs)("span",{className:"font-medium mr-2",children:[s+1,"."]}),(0,c.jsx)("span",{children:e}),(0,c.jsx)("button",{type:"button",onClick:()=>{let s=h.filter(s=>s!==e);p(s),r.setFieldValue("models",s)},className:"ml-2 text-blue-600 hover:text-blue-800",children:"\xd7"})]},e))})]}),(0,c.jsx)(ao.Z,{placeholder:"Add a fallback model",value:"",onValueChange:e=>{if(e&&!h.includes(e)){let s=[...h,e];p(s),r.setFieldValue("models",s)}},children:Array.from(new Set(u.map(e=>e.model_group))).filter(e=>e!==o&&!h.includes(e)).sort().map(e=>(0,c.jsx)(ac.Z,{value:e,children:e},e))})]}),(0,c.jsxs)("p",{className:"text-sm text-gray-500 mt-1",children:[(0,c.jsx)("strong",{children:"Order matters:"})," Models will be tried in the order shown above (1st, 2nd, 3rd, etc.)"]})]})]}),(0,c.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:g,children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",type:"submit",children:"Add Fallbacks"})]})]})]})})]})},am=t(26433);async function au(e,s){console.log=function(){},console.log("isLocal:",!1);let t=window.location.origin,l=new am.ZP.OpenAI({apiKey:s,baseURL:t,dangerouslyAllowBrowser:!0});try{let s=await l.chat.completions.create({model:e,messages:[{role:"user",content:"Hi, this is a test message"}],mock_testing_fallbacks:!0});eo.Z.success((0,c.jsxs)("span",{children:["Test model=",(0,c.jsx)("strong",{children:e}),", received model=",(0,c.jsx)("strong",{children:s.model}),". See"," ",(0,c.jsx)("a",{href:"#",onClick:()=>window.open("https://docs.litellm.ai/docs/proxy/reliability","_blank"),style:{textDecoration:"underline",color:"blue"},children:"curl"})]}))}catch(e){eo.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e))}}let ax={ttl:3600,lowest_latency_buffer:0},ah=e=>{let{selectedStrategy:s,strategyArgs:t,paramExplanation:l}=e;return(0,c.jsxs)(N.Z,{children:[(0,c.jsx)(w.Z,{className:"text-sm font-medium text-tremor-content-strong dark:text-dark-tremor-content-strong",children:"Routing Strategy Specific Args"}),(0,c.jsx)(Z.Z,{children:"latency-based-routing"==s?(0,c.jsx)(G.Z,{children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Setting"}),(0,c.jsx)(sq.Z,{children:"Value"})]})}),(0,c.jsx)(sR.Z,{children:Object.entries(t).map(e=>{let[s,t]=e;return(0,c.jsxs)(sV.Z,{children:[(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(k.Z,{children:s}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:l[s]})]}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(_.Z,{name:s,defaultValue:"object"==typeof t?JSON.stringify(t,null,2):t.toString()})})]},s)})})]})}):(0,c.jsx)(k.Z,{children:"No specific settings"})})]})};var ap=e=>{let{accessToken:s,userRole:t,userID:l,modelData:a}=e,[r,i]=(0,d.useState)({}),[n,o]=(0,d.useState)({}),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1),[p]=A.Z.useForm(),[g,f]=(0,d.useState)(null),[N,Z]=(0,d.useState)(null),[w,C]=(0,d.useState)(null),I={routing_strategy_args:"(dict) Arguments to pass to the routing strategy",routing_strategy:"(string) Routing strategy to use",allowed_fails:"(int) Number of times a deployment can fail before being added to cooldown",cooldown_time:"(int) time in seconds to cooldown a deployment after failure",num_retries:"(int) Number of retries for failed requests. Defaults to 0.",timeout:"(float) Timeout for requests. Defaults to None.",retry_after:"(int) Minimum time to wait before retrying a failed request",ttl:"(int) Sliding window to look back over when calculating the average latency of a deployment. Default - 1 hour (in seconds).",lowest_latency_buffer:"(float) Shuffle between deployments within this % of the lowest latency. Default - 0 (i.e. always pick lowest latency)."};(0,d.useEffect)(()=>{s&&t&&l&&((0,j.getCallbacksCall)(s,l,t).then(e=>{console.log("callbacks",e);let s=e.router_settings;"model_group_retry_policy"in s&&delete s.model_group_retry_policy,i(s)}),(0,j.getGeneralSettingsCall)(s).then(e=>{u(e)}))},[s,t,l]);let T=async e=>{if(!s)return;console.log("received key: ".concat(e)),console.log("routerSettings['fallbacks']: ".concat(r.fallbacks));let t=r.fallbacks.map(s=>(e in s&&delete s[e],s)).filter(e=>Object.keys(e).length>0),l={...r,fallbacks:t};try{await (0,j.setCallbacksCall)(s,{router_settings:l}),i(l),eo.Z.success("Router settings updated successfully")}catch(e){eo.Z.fromBackend("Failed to update router settings: "+e)}},E=(e,s)=>{u(m.map(t=>t.field_name===e?{...t,field_value:s}:t))},L=(e,t)=>{if(!s)return;let l=m[t].field_value;if(null!=l&&void 0!=l)try{(0,j.updateConfigFieldSetting)(s,e,l);let t=m.map(s=>s.field_name===e?{...s,stored_in_db:!0}:s);u(t)}catch(e){}},P=(e,t)=>{if(s)try{(0,j.deleteConfigFieldSetting)(s,e);let t=m.map(s=>s.field_name===e?{...s,stored_in_db:null,field_value:null}:s);u(t)}catch(e){}},M=e=>{if(!s)return;console.log("router_settings",e);let t=new Set(["allowed_fails","cooldown_time","num_retries","timeout","retry_after"]),l=new Set(["model_group_alias","retry_policy"]),a=(e,s,a)=>{if(void 0===s)return a;let r=s.trim();if("null"===r.toLowerCase())return null;if(t.has(e)){let e=Number(r);return Number.isNaN(e)?a:e}if(l.has(e)){if(""===r)return null;try{return JSON.parse(r)}catch(e){return a}}return"true"===r.toLowerCase()||"false"!==r.toLowerCase()&&r},r=Object.fromEntries(Object.entries(e).map(e=>{let[s,t]=e;if("routing_strategy_args"!==s&&"routing_strategy"!==s){let e=document.querySelector('input[name="'.concat(s,'"]')),l=a(s,null==e?void 0:e.value,t);return[s,l]}if("routing_strategy"===s)return[s,N];if("routing_strategy_args"===s&&"latency-based-routing"===N){let e={},s=document.querySelector('input[name="lowest_latency_buffer"]'),t=document.querySelector('input[name="ttl"]');return(null==s?void 0:s.value)&&(e.lowest_latency_buffer=Number(s.value)),(null==t?void 0:t.value)&&(e.ttl=Number(t.value)),console.log("setRoutingStrategyArgs: ".concat(e)),["routing_strategy_args",e]}return null}).filter(e=>null!=e));console.log("updatedVariables",r);try{(0,j.setCallbacksCall)(s,{router_settings:r})}catch(e){eo.Z.fromBackend("Failed to update router settings: "+e)}eo.Z.success("router settings updated successfully")};return s?(0,c.jsx)("div",{className:"w-full mx-4",children:(0,c.jsxs)(st.Z,{className:"gap-2 p-8 h-[75vh] w-full mt-2",children:[(0,c.jsxs)(sl.Z,{variant:"line",defaultValue:"1",children:[(0,c.jsx)(ss.Z,{value:"1",children:"Loadbalancing"}),(0,c.jsx)(ss.Z,{value:"2",children:"Fallbacks"}),(0,c.jsx)(ss.Z,{value:"3",children:"General"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:[(0,c.jsx)(S.Z,{children:"Router Settings"}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Setting"}),(0,c.jsx)(sq.Z,{children:"Value"})]})}),(0,c.jsx)(sR.Z,{children:Object.entries(r).filter(e=>{let[s,t]=e;return"fallbacks"!=s&&"context_window_fallbacks"!=s&&"routing_strategy_args"!=s}).map(e=>{let[s,t]=e;return(0,c.jsxs)(sV.Z,{children:[(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(k.Z,{children:s}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:I[s]})]}),(0,c.jsx)(sz.Z,{children:"routing_strategy"==s?(0,c.jsxs)(e9.Z,{defaultValue:t,className:"w-full max-w-md",onValueChange:Z,children:[(0,c.jsx)(ei.Z,{value:"usage-based-routing",children:"usage-based-routing"}),(0,c.jsx)(ei.Z,{value:"latency-based-routing",children:"latency-based-routing"}),(0,c.jsx)(ei.Z,{value:"simple-shuffle",children:"simple-shuffle"})]}):(0,c.jsx)(_.Z,{name:s,defaultValue:"object"==typeof t?JSON.stringify(t,null,2):t.toString()})})]},s)})})]}),(0,c.jsx)(ah,{selectedStrategy:N,strategyArgs:r&&r.routing_strategy_args&&Object.keys(r.routing_strategy_args).length>0?r.routing_strategy_args:ax,paramExplanation:I})]}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(b.Z,{className:"mt-2",onClick:()=>M(r),children:"Save Changes"})})]})}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Model Name"}),(0,c.jsx)(sq.Z,{children:"Fallbacks"})]})}),(0,c.jsx)(sR.Z,{children:r.fallbacks&&r.fallbacks.map((e,t)=>Object.entries(e).map(e=>{let[l,a]=e;return(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:l}),(0,c.jsx)(sz.Z,{children:Array.isArray(a)?a.join(", "):a}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(b.Z,{onClick:()=>au(l,s),children:"Test Fallback"})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>T(l)})})]},t.toString()+l)}))})]}),(0,c.jsx)(ad,{models:(null==a?void 0:a.data)?a.data.map(e=>e.model_name):[],accessToken:s,routerSettings:r,setRouterSettings:i})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(G.Z,{children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Setting"}),(0,c.jsx)(sq.Z,{children:"Value"}),(0,c.jsx)(sq.Z,{children:"Status"}),(0,c.jsx)(sq.Z,{children:"Action"})]})}),(0,c.jsx)(sR.Z,{children:m.filter(e=>"TypedDictionary"!==e.field_type).map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(k.Z,{children:e.field_name}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:e.field_description})]}),(0,c.jsx)(sz.Z,{children:"Integer"==e.field_type?(0,c.jsx)(e8.Z,{step:1,value:e.field_value,onChange:s=>E(e.field_name,s)}):null}),(0,c.jsx)(sz.Z,{children:!0==e.stored_in_db?(0,c.jsx)(se.Z,{icon:eb.Z,className:"text-white",children:"In DB"}):!1==e.stored_in_db?(0,c.jsx)(se.Z,{className:"text-gray bg-white outline",children:"In Config"}):(0,c.jsx)(se.Z,{className:"text-gray bg-white outline",children:"Not Set"})}),(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(b.Z,{onClick:()=>L(e.field_name,s),children:"Update"}),(0,c.jsx)(sD.Z,{icon:W.Z,color:"red",onClick:()=>P(e.field_name,s),children:"Reset"})]})]},s))})]})})})]})]})}):null},ag=e=>{let{isModalVisible:s,accessToken:t,setIsModalVisible:l,setBudgetList:a}=e,[r]=A.Z.useForm(),i=async e=>{if(null!=t&&void 0!=t)try{eo.Z.info("Making API Call");let s=await (0,j.budgetCreateCall)(t,e);console.log("key create Response:",s),a(e=>e?[...e,s]:[s]),eo.Z.success("Budget Created"),r.resetFields()}catch(e){console.error("Error creating the key:",e),eo.Z.fromBackend("Error creating the key: ".concat(e))}};return(0,c.jsx)(T.Z,{title:"Create Budget",visible:s,width:800,footer:null,onOk:()=>{l(!1),r.resetFields()},onCancel:()=>{l(!1),r.resetFields()},children:(0,c.jsxs)(A.Z,{form:r,onFinish:i,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Budget ID",name:"budget_id",rules:[{required:!0,message:"Please input a human-friendly name for the budget"}],help:"A human-friendly name for the budget",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"Max Tokens per minute",name:"tpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e8.Z,{step:1,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Max Requests per minute",name:"rpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e8.Z,{step:1,precision:2,width:200})}),(0,c.jsxs)(N.Z,{className:"mt-20 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Optional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(e8.Z,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})})]})]})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Create Budget"})})]})})},aj=e=>{let{isModalVisible:s,accessToken:t,setIsModalVisible:l,setBudgetList:a,existingBudget:r,handleUpdateCall:i}=e;console.log("existingBudget",r);let[n]=A.Z.useForm();(0,d.useEffect)(()=>{n.setFieldsValue(r)},[r,n]);let o=async e=>{if(null!=t&&void 0!=t)try{eo.Z.info("Making API Call"),l(!0);let s=await (0,j.budgetUpdateCall)(t,e);a(e=>e?[...e,s]:[s]),eo.Z.success("Budget Updated"),n.resetFields(),i()}catch(e){console.error("Error creating the key:",e),eo.Z.fromBackend("Error creating the key: ".concat(e))}};return(0,c.jsx)(T.Z,{title:"Edit Budget",visible:s,width:800,footer:null,onOk:()=>{l(!1),n.resetFields()},onCancel:()=>{l(!1),n.resetFields()},children:(0,c.jsxs)(A.Z,{form:n,onFinish:o,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",initialValues:r,children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Budget ID",name:"budget_id",rules:[{required:!0,message:"Please input a human-friendly name for the budget"}],help:"A human-friendly name for the budget",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"Max Tokens per minute",name:"tpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e8.Z,{step:1,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Max Requests per minute",name:"rpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e8.Z,{step:1,precision:2,width:200})}),(0,c.jsxs)(N.Z,{className:"mt-20 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Optional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(e8.Z,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})})]})]})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})})]})})},af=t(17906),av=e=>{let{accessToken:s}=e,[t,l]=(0,d.useState)(!1),[a,r]=(0,d.useState)(!1),[i,n]=(0,d.useState)(null),[o,m]=(0,d.useState)([]);(0,d.useEffect)(()=>{s&&(0,j.getBudgetList)(s).then(e=>{m(e)})},[s]);let u=async(e,t)=>{console.log("budget_id",e),null!=s&&(n(o.find(s=>s.budget_id===e)||null),r(!0))},x=async(e,t)=>{if(null==s)return;eo.Z.info("Request made"),await (0,j.budgetDeleteCall)(s,e);let l=[...o];l.splice(t,1),m(l),eo.Z.success("Budget Deleted.")},h=async()=>{null!=s&&(0,j.getBudgetList)(s).then(e=>{m(e)})};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[(0,c.jsx)(b.Z,{size:"sm",variant:"primary",className:"mb-2",onClick:()=>l(!0),children:"+ Create Budget"}),(0,c.jsx)(ag,{accessToken:s,isModalVisible:t,setIsModalVisible:l,setBudgetList:m}),i&&(0,c.jsx)(aj,{accessToken:s,isModalVisible:a,setIsModalVisible:r,setBudgetList:m,existingBudget:i,handleUpdateCall:h}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Create a budget to assign to customers."}),(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Budget ID"}),(0,c.jsx)(sq.Z,{children:"Max Budget"}),(0,c.jsx)(sq.Z,{children:"TPM"}),(0,c.jsx)(sq.Z,{children:"RPM"})]})}),(0,c.jsx)(sR.Z,{children:o.slice().sort((e,s)=>new Date(s.updated_at).getTime()-new Date(e.updated_at).getTime()).map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e.budget_id}),(0,c.jsx)(sz.Z,{children:e.max_budget?e.max_budget:"n/a"}),(0,c.jsx)(sz.Z,{children:e.tpm_limit?e.tpm_limit:"n/a"}),(0,c.jsx)(sz.Z,{children:e.rpm_limit?e.rpm_limit:"n/a"}),(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>u(e.budget_id,s)}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>x(e.budget_id,s)})]},s))})]})]}),(0,c.jsxs)("div",{className:"mt-5",children:[(0,c.jsx)(k.Z,{className:"text-base",children:"How to use budget id"}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{children:[(0,c.jsx)(ss.Z,{children:"Assign Budget to Customer"}),(0,c.jsx)(ss.Z,{children:"Test it (Curl)"}),(0,c.jsx)(ss.Z,{children:"Test it (OpenAI SDK)"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"bash",children:"\ncurl -X POST --location '/end_user/new' \n-H 'Authorization: Bearer ' \n-H 'Content-Type: application/json' \n-d '{\"user_id\": \"my-customer-id', \"budget_id\": \"\"}' # \uD83D\uDC48 KEY CHANGE\n\n "})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"bash",children:'\ncurl -X POST --location \'/chat/completions\' \n-H \'Authorization: Bearer \' \n-H \'Content-Type: application/json\' \n-d \'{\n "model": "gpt-3.5-turbo\', \n "messages":[{"role": "user", "content": "Hey, how\'s it going?"}],\n "user": "my-customer-id"\n}\' # \uD83D\uDC48 KEY CHANGE\n\n '})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"python",children:'from openai import OpenAI\nclient = OpenAI(\n base_url="",\n api_key=""\n)\n\ncompletion = client.chat.completions.create(\n model="gpt-3.5-turbo",\n messages=[\n {"role": "system", "content": "You are a helpful assistant."},\n {"role": "user", "content": "Hello!"}\n ],\n user="my-customer-id"\n)\n\nprint(completion.choices[0].message)'})})]})]})]})]})},ay=t(77398),ab=t.n(ay);let a_=e=>{try{return new Date(e).toLocaleString("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0}).replace(",","")}catch(e){return"Error converting time"}},aN=e=>{let{utcTime:s}=e;return(0,c.jsx)("span",{style:{fontFamily:"monospace",width:"180px",display:"inline-block"},children:a_(s)})},aZ=(e,s)=>{var t,l;return(null===(l=e.metadata)||void 0===l?void 0:null===(t=l.mcp_tool_call_metadata)||void 0===t?void 0:t.mcp_server_logo_url)?e.metadata.mcp_tool_call_metadata.mcp_server_logo_url:s?(0,s0.dr)(s).logo:""},aw=[{id:"expander",header:()=>null,cell:e=>{let{row:s}=e;return(0,c.jsx)(()=>{let[e,t]=d.useState(s.getIsExpanded()),l=d.useCallback(()=>{t(e=>!e),s.getToggleExpandedHandler()()},[s]);return s.getCanExpand()?(0,c.jsx)("button",{onClick:l,style:{cursor:"pointer"},"aria-label":e?"Collapse row":"Expand row",className:"w-6 h-6 flex items-center justify-center focus:outline-none",children:(0,c.jsx)("svg",{className:"w-4 h-4 transform transition-transform duration-75 ".concat(e?"rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})}):(0,c.jsx)("span",{className:"w-6 h-6 flex items-center justify-center",children:"●"})},{})}},{header:"Time",accessorKey:"startTime",cell:e=>(0,c.jsx)(aN,{utcTime:e.getValue()})},{header:"Status",accessorKey:"metadata.status",cell:e=>{let s="failure"!==(e.getValue()||"Success").toLowerCase();return(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block text-center w-16 ".concat(s?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:s?"Success":"Failure"})}},{header:"Session ID",accessorKey:"session_id",cell:e=>{let s=String(e.getValue()||""),t=e.row.original.onSessionClick;return(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal text-xs max-w-[15ch] truncate block",onClick:()=>null==t?void 0:t(s),children:String(e.getValue()||"")})})}},{header:"Request ID",accessorKey:"request_id",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)("span",{className:"font-mono text-xs max-w-[15ch] truncate block",children:String(e.getValue()||"")})})},{header:"Cost",accessorKey:"spend",cell:e=>(0,c.jsxs)("span",{children:["$",eP(e.getValue()||0,6)]})},{header:"Duration (s)",accessorKey:"duration",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Team Name",accessorKey:"metadata.user_api_key_team_alias",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Key Hash",accessorKey:"metadata.user_api_key",cell:e=>{let s=String(e.getValue()||"-"),t=e.row.original.onKeyHashClick;return(0,c.jsx)(B.Z,{title:s,children:(0,c.jsx)("span",{className:"font-mono max-w-[15ch] truncate block cursor-pointer hover:text-blue-600",onClick:()=>null==t?void 0:t(s),children:s})})}},{header:"Key Name",accessorKey:"metadata.user_api_key_alias",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Model",accessorKey:"model",cell:e=>{let s=e.row.original,t=s.custom_llm_provider,l=String(e.getValue()||"");return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[t&&(0,c.jsx)("img",{src:aZ(s,t),alt:"",className:"w-4 h-4",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)(B.Z,{title:l,children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:l})})]})}},{header:"Tokens",accessorKey:"total_tokens",cell:e=>{let s=e.row.original;return(0,c.jsxs)("span",{className:"text-sm",children:[String(s.total_tokens||"0"),(0,c.jsxs)("span",{className:"text-gray-400 text-xs ml-1",children:["(",String(s.prompt_tokens||"0"),"+",String(s.completion_tokens||"0"),")"]})]})}},{header:"Internal User",accessorKey:"user",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"End User",accessorKey:"end_user",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Tags",accessorKey:"request_tags",cell:e=>{let s=e.getValue();if(!s||0===Object.keys(s).length)return"-";let t=Object.entries(s),l=t[0],a=t.slice(1);return(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:(0,c.jsx)(B.Z,{title:(0,c.jsx)("div",{className:"flex flex-col gap-1",children:t.map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{children:[s,": ",String(t)]},s)})}),children:(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded-full text-xs",children:[l[0],": ",String(l[1]),a.length>0&&" +".concat(a.length)]})})})}}],ak=e=>(0,c.jsx)(se.Z,{color:"gray",className:"flex items-center gap-1",children:(0,c.jsx)("span",{className:"whitespace-nowrap text-xs",children:e})}),aS=[{id:"expander",header:()=>null,cell:e=>{let{row:s}=e;return(0,c.jsx)(()=>{let[e,t]=d.useState(s.getIsExpanded()),l=d.useCallback(()=>{t(e=>!e),s.getToggleExpandedHandler()()},[s]);return s.getCanExpand()?(0,c.jsx)("button",{onClick:l,style:{cursor:"pointer"},"aria-label":e?"Collapse row":"Expand row",className:"w-6 h-6 flex items-center justify-center focus:outline-none",children:(0,c.jsx)("svg",{className:"w-4 h-4 transform transition-transform ".concat(e?"rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})}):(0,c.jsx)("span",{className:"w-6 h-6 flex items-center justify-center",children:"●"})},{})}},{header:"Timestamp",accessorKey:"updated_at",cell:e=>(0,c.jsx)(aN,{utcTime:e.getValue()})},{header:"Table Name",accessorKey:"table_name",cell:e=>{let s=e.getValue(),t=s;switch(s){case"LiteLLM_VerificationToken":t="Keys";break;case"LiteLLM_TeamTable":t="Teams";break;case"LiteLLM_OrganizationTable":t="Organizations";break;case"LiteLLM_UserTable":t="Users";break;case"LiteLLM_ProxyModelTable":t="Models";break;default:t=s}return(0,c.jsx)("span",{children:t})}},{header:"Action",accessorKey:"action",cell:e=>(0,c.jsx)("span",{children:ak(e.getValue())})},{header:"Changed By",accessorKey:"changed_by",cell:e=>{let s=e.row.original.changed_by,t=e.row.original.changed_by_api_key;return(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsx)("div",{className:"font-medium",children:s}),t&&(0,c.jsx)(B.Z,{title:t,children:(0,c.jsxs)("div",{className:"text-xs text-muted-foreground max-w-[15ch] truncate",children:[" ",t]})})]})}},{header:"Affected Item ID",accessorKey:"object_id",cell:e=>(0,c.jsx)(()=>{let s=e.getValue(),[t,l]=(0,d.useState)(!1);if(!s)return(0,c.jsx)(c.Fragment,{children:"-"});let a=async()=>{try{await navigator.clipboard.writeText(String(s)),l(!0),setTimeout(()=>l(!1),1500)}catch(e){console.error("Failed to copy object ID: ",e)}};return(0,c.jsx)(B.Z,{title:t?"Copied!":String(s),children:(0,c.jsx)("span",{className:"max-w-[20ch] truncate block cursor-pointer hover:text-blue-600",onClick:a,children:String(s)})})},{})}],aC=async(e,s,t,l)=>{console.log("prefetchLogDetails called with",e.length,"logs");let a=e.map(e=>{if(e.request_id)return console.log("Prefetching details for request_id:",e.request_id),l.prefetchQuery({queryKey:["logDetails",e.request_id,s],queryFn:async()=>{console.log("Fetching details for",e.request_id);let l=await (0,j.uiSpendLogDetailsCall)(t,e.request_id,s);return console.log("Received details for",e.request_id,":",l?"success":"failed"),l},staleTime:6e5,gcTime:6e5})});try{let e=await Promise.all(a);return console.log("All prefetch promises completed:",e.length),e}catch(e){throw console.error("Error in prefetchLogDetails:",e),e}};function aI(e){let{row:s,hasMessages:t,hasResponse:l,hasError:a,errorInfo:r,getRawRequest:i,formattedResponse:n}=e,o=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let s=document.createElement("textarea");s.value=e,s.style.position="fixed",s.style.opacity="0",document.body.appendChild(s),s.focus(),s.select();let t=document.execCommand("copy");if(document.body.removeChild(s),!t)throw Error("execCommand failed");return!0}}catch(e){return console.error("Copy failed:",e),!1}},d=async()=>{await o(JSON.stringify(i(),null,2))?eo.Z.success("Request copied to clipboard"):eo.Z.fromBackend("Failed to copy request")},m=async()=>{await o(JSON.stringify(n(),null,2))?eo.Z.success("Response copied to clipboard"):eo.Z.fromBackend("Failed to copy response")};return(0,c.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4 w-full max-w-full overflow-hidden box-border",children:[(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b",children:[(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Request"}),(0,c.jsx)("button",{onClick:d,className:"p-1 hover:bg-gray-200 rounded",title:"Copy request",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,c.jsx)("div",{className:"p-4 overflow-auto max-h-96 w-full max-w-full box-border",children:(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all w-full max-w-full overflow-hidden break-words",children:JSON.stringify(i(),null,2)})})]}),(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b",children:[(0,c.jsxs)("h3",{className:"text-lg font-medium",children:["Response",a&&(0,c.jsxs)("span",{className:"ml-2 text-sm text-red-600",children:["• HTTP code ",(null==r?void 0:r.error_code)||400]})]}),(0,c.jsx)("button",{onClick:m,className:"p-1 hover:bg-gray-200 rounded",title:"Copy response",disabled:!l,children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,c.jsx)("div",{className:"p-4 overflow-auto max-h-96 bg-gray-50 w-full max-w-full box-border",children:l?(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all w-full max-w-full overflow-hidden break-words",children:JSON.stringify(n(),null,2)}):(0,c.jsx)("div",{className:"text-gray-500 text-sm italic text-center py-4",children:"Response data not available"})})]})]})}let aA=e=>{var s;let{errorInfo:t}=e,[l,a]=d.useState({}),[r,i]=d.useState(!1),n=e=>{a(s=>({...s,[e]:!s[e]}))},o=t.traceback&&(s=t.traceback)?Array.from(s.matchAll(/File "([^"]+)", line (\d+)/g)).map(e=>{let t=e[1],l=e[2],a=t.split("/").pop()||t,r=e.index||0,i=s.indexOf('File "',r+1),n=i>-1?s.substring(r,i).trim():s.substring(r).trim(),o=n.split("\n"),c="";return o.length>1&&(c=o[o.length-1].trim()),{filePath:t,fileName:a,lineNumber:l,code:c,inFunction:n.includes(" in ")?n.split(" in ")[1].split("\n")[0]:""}}):[];return(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsx)("div",{className:"p-4 border-b",children:(0,c.jsxs)("h3",{className:"text-lg font-medium flex items-center text-red-600",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})}),"Error Details"]})}),(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"bg-red-50 rounded-md p-4 mb-4",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"text-red-800 font-medium w-20",children:"Type:"}),(0,c.jsx)("span",{className:"text-red-700",children:t.error_class||"Unknown Error"})]}),(0,c.jsxs)("div",{className:"flex mt-2",children:[(0,c.jsx)("span",{className:"text-red-800 font-medium w-20 flex-shrink-0",children:"Message:"}),(0,c.jsx)("span",{className:"text-red-700 break-words whitespace-pre-wrap",children:t.error_message||"Unknown error occurred"})]})]}),t.traceback&&(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,c.jsx)("h4",{className:"font-medium",children:"Traceback"}),(0,c.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,c.jsx)("button",{onClick:()=>{let e=!r;if(i(e),o.length>0){let s={};o.forEach((t,l)=>{s[l]=e}),a(s)}},className:"text-gray-500 hover:text-gray-700 flex items-center text-sm",children:r?"Collapse All":"Expand All"}),(0,c.jsxs)("button",{onClick:()=>navigator.clipboard.writeText(t.traceback||""),className:"text-gray-500 hover:text-gray-700 flex items-center",title:"Copy traceback",children:[(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),(0,c.jsx)("span",{className:"ml-1",children:"Copy"})]})]})]}),(0,c.jsx)("div",{className:"bg-white rounded-md border border-gray-200 overflow-hidden shadow-sm",children:o.map((e,s)=>(0,c.jsxs)("div",{className:"border-b border-gray-200 last:border-b-0",children:[(0,c.jsxs)("div",{className:"px-4 py-2 flex items-center justify-between cursor-pointer hover:bg-gray-50",onClick:()=>n(s),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("span",{className:"text-gray-400 mr-2 w-12 text-right",children:e.lineNumber}),(0,c.jsx)("span",{className:"text-gray-600 font-medium",children:e.fileName}),(0,c.jsx)("span",{className:"text-gray-500 mx-1",children:"in"}),(0,c.jsx)("span",{className:"text-indigo-600 font-medium",children:e.inFunction||e.fileName})]}),(0,c.jsx)("svg",{className:"w-5 h-5 text-gray-500 transition-transform ".concat(l[s]?"transform rotate-180":""),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),(l[s]||!1)&&e.code&&(0,c.jsx)("div",{className:"px-12 py-2 font-mono text-sm text-gray-800 bg-gray-50 overflow-x-auto border-t border-gray-100",children:e.code})]},s))})]})]})]})},aT=e=>{let{show:s}=e;return s?(0,c.jsxs)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-4 flex items-start",children:[(0,c.jsx)("div",{className:"text-blue-500 mr-3 flex-shrink-0 mt-0.5",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,c.jsx)("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),(0,c.jsx)("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"text-sm font-medium text-blue-800",children:"Request/Response Data Not Available"}),(0,c.jsxs)("p",{className:"text-sm text-blue-700 mt-1",children:["To view request and response details, enable prompt storage in your LiteLLM configuration by adding the following to your ",(0,c.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded",children:"proxy_config.yaml"})," file:"]}),(0,c.jsx)("pre",{className:"mt-2 bg-white p-3 rounded border border-blue-200 text-xs font-mono overflow-auto",children:"general_settings:\n store_model_in_db: true\n store_prompts_in_spend_logs: true"}),(0,c.jsx)("p",{className:"text-xs text-blue-700 mt-2",children:"Note: This will only affect new requests after the configuration change."})]})]}):null};var aE=t(35829);let aL=e=>{let{sessionId:s,logs:t,onBack:l}=e,[a,r]=(0,d.useState)(null),[i,n]=(0,d.useState)({}),o=t.reduce((e,s)=>e+(s.spend||0),0),m=t.reduce((e,s)=>e+(s.total_tokens||0),0),u=t.reduce((e,s)=>{var t,l;return e+((null===(l=s.metadata)||void 0===l?void 0:null===(t=l.additional_usage_values)||void 0===t?void 0:t.cache_read_input_tokens)||0)},0),x=t.reduce((e,s)=>{var t,l;return e+((null===(l=s.metadata)||void 0===l?void 0:null===(t=l.additional_usage_values)||void 0===t?void 0:t.cache_creation_input_tokens)||0)},0),h=m+u+x,p=t.length>0?new Date(t[0].startTime):new Date;(((t.length>0?new Date(t[t.length-1].endTime):new Date).getTime()-p.getTime())/1e3).toFixed(2),t.map(e=>({time:new Date(e.startTime).toISOString(),tokens:e.total_tokens||0,cost:e.spend||0}));let g=async(e,s)=>{await eM(e)&&(n(e=>({...e,[s]:!0})),setTimeout(()=>{n(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:l,className:"mb-4",children:"Back to All Logs"}),(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsx)("h1",{className:"text-2xl font-semibold text-gray-900",children:"Session Details"}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)("p",{className:"text-sm text-gray-500 font-mono",children:s}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:i["session-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>g(s,"session-id"),className:"left-2 z-10 transition-all duration-200 ".concat(i["session-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]}),(0,c.jsxs)("a",{href:"https://docs.litellm.ai/docs/proxy/ui_logs_sessions",target:"_blank",rel:"noopener noreferrer",className:"text-sm text-blue-600 hover:text-blue-800 flex items-center gap-1",children:["Get started with session management here",(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})]}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Requests"}),(0,c.jsx)(aE.Z,{children:t.length})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Cost"}),(0,c.jsxs)(aE.Z,{children:["$",eP(o,6)]})]}),(0,c.jsx)(B.Z,{title:(0,c.jsxs)("div",{className:"text-white min-w-[200px]",children:[(0,c.jsx)("div",{className:"text-lg font-medium mb-3",children:"Usage breakdown"}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-base font-medium mb-2",children:"Input usage:"}),(0,c.jsxs)("div",{className:"space-y-2 text-sm text-gray-300",children:[(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"input:"}),(0,c.jsx)("span",{className:"ml-8",children:eP(t.reduce((e,s)=>e+(s.prompt_tokens||0),0))})]}),u>0&&(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"input_cached_tokens:"}),(0,c.jsx)("span",{className:"ml-8",children:eP(u)})]}),x>0&&(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"input_cache_creation_tokens:"}),(0,c.jsx)("span",{className:"ml-8",children:eP(x)})]})]})]}),(0,c.jsxs)("div",{className:"border-t border-gray-600 pt-3",children:[(0,c.jsx)("div",{className:"text-base font-medium mb-2",children:"Output usage:"}),(0,c.jsx)("div",{className:"space-y-2 text-sm text-gray-300",children:(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"output:"}),(0,c.jsx)("span",{className:"ml-8",children:eP(t.reduce((e,s)=>e+(s.completion_tokens||0),0))})]})})]}),(0,c.jsx)("div",{className:"border-t border-gray-600 pt-3",children:(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-base font-medium",children:"Total usage:"}),(0,c.jsx)("span",{className:"text-sm text-gray-300",children:eP(h)})]})})]})]}),placement:"top",overlayStyle:{minWidth:"300px"},children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)(k.Z,{children:"Total Tokens"}),(0,c.jsx)("span",{className:"text-gray-400 text-sm",children:"ⓘ"})]}),(0,c.jsx)(aE.Z,{children:eP(h)})]})})]}),(0,c.jsx)(S.Z,{children:"Session Logs"}),(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(lN,{columns:aw,data:t,renderSubComponent:aJ,getRowCanExpand:()=>!0,loadingMessage:"Loading logs...",noDataMessage:"No logs found"})})]})};function aP(e){let{data:s}=e,[t,l]=(0,d.useState)(!0),[a,r]=(0,d.useState)({});if(!s||0===s.length)return null;let i=e=>new Date(1e3*e).toLocaleString(),n=(e,s)=>"".concat(((s-e)*1e3).toFixed(2),"ms"),o=(e,s)=>{let t="".concat(e,"-").concat(s);r(e=>({...e,[t]:!e[t]}))};return(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow mb-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b cursor-pointer hover:bg-gray-50",onClick:()=>l(!t),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 text-gray-600 transition-transform ".concat(t?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Vector Store Requests"})]}),(0,c.jsx)("span",{className:"text-sm text-gray-500",children:t?"Click to collapse":"Click to expand"})]}),t&&(0,c.jsx)("div",{className:"p-4",children:s.map((e,s)=>(0,c.jsxs)("div",{className:"mb-6 last:mb-0",children:[(0,c.jsx)("div",{className:"bg-white rounded-lg border p-4 mb-4",children:(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Query:"}),(0,c.jsx)("span",{className:"font-mono",children:e.query})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Vector Store ID:"}),(0,c.jsx)("span",{className:"font-mono",children:e.vector_store_id})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Provider:"}),(0,c.jsx)("span",{className:"flex items-center",children:(()=>{let{logo:s,displayName:t}=(0,s0.dr)(e.custom_llm_provider);return(0,c.jsxs)(c.Fragment,{children:[s&&(0,c.jsx)("img",{src:s,alt:"".concat(t," logo"),className:"h-5 w-5 mr-2"}),t]})})()})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Start Time:"}),(0,c.jsx)("span",{children:i(e.start_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"End Time:"}),(0,c.jsx)("span",{children:i(e.end_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Duration:"}),(0,c.jsx)("span",{children:n(e.start_time,e.end_time)})]})]})]})}),(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Search Results"}),(0,c.jsx)("div",{className:"space-y-2",children:e.vector_store_search_response.data.map((e,t)=>{let l=a["".concat(s,"-").concat(t)]||!1;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex items-center p-3 bg-gray-50 cursor-pointer",onClick:()=>o(s,t),children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(l?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsxs)("span",{className:"font-medium mr-2",children:["Result ",t+1]}),(0,c.jsxs)("span",{className:"text-gray-500 text-sm",children:["Score: ",(0,c.jsx)("span",{className:"font-mono",children:e.score.toFixed(4)})]})]})]}),l&&(0,c.jsx)("div",{className:"p-3 border-t bg-white",children:e.content.map((e,s)=>(0,c.jsxs)("div",{className:"mb-2 last:mb-0",children:[(0,c.jsx)("div",{className:"text-xs text-gray-500 mb-1",children:e.type}),(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all bg-gray-50 p-2 rounded",children:e.text})]},s))})]},t)})})]},s))})]})}let aM=e=>e>=.8?"text-green-600":"text-yellow-600";var aO=e=>{let{entities:s}=e,[t,l]=(0,d.useState)(!0),[a,r]=(0,d.useState)({}),i=e=>{r(s=>({...s,[e]:!s[e]}))};return s&&0!==s.length?(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"flex items-center mb-2 cursor-pointer",onClick:()=>l(!t),children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(t?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsxs)("h4",{className:"font-medium",children:["Detected Entities (",s.length,")"]})]}),t&&(0,c.jsx)("div",{className:"space-y-2",children:s.map((e,s)=>{let t=a[s]||!1;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 cursor-pointer hover:bg-gray-100",onClick:()=>i(s),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(t?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsx)("span",{className:"font-medium mr-2",children:e.entity_type}),(0,c.jsxs)("span",{className:"font-mono ".concat(aM(e.score)),children:["Score: ",e.score.toFixed(2)]})]}),(0,c.jsxs)("span",{className:"text-xs text-gray-500",children:["Position: ",e.start,"-",e.end]})]}),t&&(0,c.jsx)("div",{className:"p-3 border-t bg-white",children:(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-2",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Entity Type:"}),(0,c.jsx)("span",{children:e.entity_type})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Position:"}),(0,c.jsxs)("span",{children:["Characters ",e.start,"-",e.end]})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Confidence:"}),(0,c.jsx)("span",{className:aM(e.score),children:e.score.toFixed(2)})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[e.recognition_metadata&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Recognizer:"}),(0,c.jsx)("span",{children:e.recognition_metadata.recognizer_name})]}),(0,c.jsxs)("div",{className:"flex overflow-hidden",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Identifier:"}),(0,c.jsx)("span",{className:"truncate text-xs font-mono",children:e.recognition_metadata.recognizer_identifier})]})]}),e.analysis_explanation&&(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Explanation:"}),(0,c.jsx)("span",{children:e.analysis_explanation})]})]})]})})]},s)})})]}):null};let aD=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"slate";return(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block ".concat({green:"bg-green-100 text-green-800",red:"bg-red-100 text-red-800",blue:"bg-blue-50 text-blue-700",slate:"bg-slate-100 text-slate-800",amber:"bg-amber-100 text-amber-800"}[s]),children:e})},aF=e=>e?aD("detected","red"):aD("not detected","slate"),aR=e=>{let{title:s,count:t,defaultOpen:l=!0,right:a,children:r}=e,[i,n]=(0,d.useState)(l);return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 cursor-pointer hover:bg-gray-100",onClick:()=>n(e=>!e),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(i?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsxs)("h5",{className:"font-medium",children:[s," ","number"==typeof t&&(0,c.jsxs)("span",{className:"text-gray-500 font-normal",children:["(",t,")"]})]})]}),(0,c.jsx)("div",{children:a})]}),i&&(0,c.jsx)("div",{className:"p-3 border-t bg-white",children:r})]})},az=e=>{let{label:s,children:t,mono:l}=e;return(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:s}),(0,c.jsx)("span",{className:l?"font-mono text-sm break-all":"",children:t})]})},aU=()=>(0,c.jsx)("div",{className:"my-3 border-t"});var aq=e=>{var s,t,l,a,r,i,n,o,d,m;let{response:u}=e;if(!u)return null;let x=null!==(r=null!==(a=u.outputs)&&void 0!==a?a:u.output)&&void 0!==r?r:[],h="GUARDRAIL_INTERVENED"===u.action?"red":"green",p=(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(null===(s=u.guardrailCoverage)||void 0===s?void 0:s.textCharacters)&&aD("text guarded ".concat(null!==(i=u.guardrailCoverage.textCharacters.guarded)&&void 0!==i?i:0,"/").concat(null!==(n=u.guardrailCoverage.textCharacters.total)&&void 0!==n?n:0),"blue"),(null===(t=u.guardrailCoverage)||void 0===t?void 0:t.images)&&aD("images guarded ".concat(null!==(o=u.guardrailCoverage.images.guarded)&&void 0!==o?o:0,"/").concat(null!==(d=u.guardrailCoverage.images.total)&&void 0!==d?d:0),"blue")]}),g=u.usage&&(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(u.usage).map(e=>{let[s,t]=e;return"number"==typeof t?(0,c.jsxs)("span",{className:"px-2 py-1 bg-slate-100 text-slate-800 rounded-md text-xs font-medium",children:[s,": ",t]},s):null})});return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"border rounded-lg p-4",children:[(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(az,{label:"Action:",children:aD(null!==(m=u.action)&&void 0!==m?m:"N/A",h)}),u.actionReason&&(0,c.jsx)(az,{label:"Action Reason:",children:u.actionReason}),u.blockedResponse&&(0,c.jsx)(az,{label:"Blocked Response:",children:(0,c.jsx)("span",{className:"italic",children:u.blockedResponse})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(az,{label:"Coverage:",children:p}),(0,c.jsx)(az,{label:"Usage:",children:g})]})]}),x.length>0&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(aU,{}),(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Outputs"}),(0,c.jsx)("div",{className:"space-y-2",children:x.map((e,s)=>{var t;return(0,c.jsx)("div",{className:"p-3 bg-gray-50 rounded-md",children:(0,c.jsx)("div",{className:"text-sm whitespace-pre-wrap",children:null!==(t=e.text)&&void 0!==t?t:(0,c.jsx)("em",{children:"(non-text output)"})})},s)})})]})]}),(null===(l=u.assessments)||void 0===l?void 0:l.length)?(0,c.jsx)("div",{className:"space-y-3",children:u.assessments.map((e,s)=>{var t,l,a,r,i,n,o,d,m,u,x,h,p,g,j,f,v,y,b,_,N,Z,w,k;let S=(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[e.wordPolicy&&aD("word","slate"),e.contentPolicy&&aD("content","slate"),e.topicPolicy&&aD("topic","slate"),e.sensitiveInformationPolicy&&aD("sensitive-info","slate"),e.contextualGroundingPolicy&&aD("contextual-grounding","slate"),e.automatedReasoningPolicy&&aD("automated-reasoning","slate")]});return(0,c.jsxs)(aR,{title:"Assessment #".concat(s+1),defaultOpen:!0,right:(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[(null===(t=e.invocationMetrics)||void 0===t?void 0:t.guardrailProcessingLatency)!=null&&aD("".concat(e.invocationMetrics.guardrailProcessingLatency," ms"),"amber"),S]}),children:[e.wordPolicy&&(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Word Policy"}),(null!==(f=null===(l=e.wordPolicy.customWords)||void 0===l?void 0:l.length)&&void 0!==f?f:0)>0&&(0,c.jsx)(aR,{title:"Custom Words",defaultOpen:!0,children:(0,c.jsx)("div",{className:"space-y-2",children:e.wordPolicy.customWords.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-mono text-sm break-all",children:e.match})]}),aF(e.detected)]},s)})})}),(null!==(v=null===(a=e.wordPolicy.managedWordLists)||void 0===a?void 0:a.length)&&void 0!==v?v:0)>0&&(0,c.jsx)(aR,{title:"Managed Word Lists",defaultOpen:!1,children:(0,c.jsx)("div",{className:"space-y-2",children:e.wordPolicy.managedWordLists.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-mono text-sm break-all",children:e.match}),e.type&&aD(e.type,"slate")]}),aF(e.detected)]},s)})})})]}),(null===(i=e.contentPolicy)||void 0===i?void 0:null===(r=i.filters)||void 0===r?void 0:r.length)?(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Content Policy"}),(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)("table",{className:"min-w-full text-sm",children:[(0,c.jsx)("thead",{children:(0,c.jsxs)("tr",{className:"text-left text-gray-600",children:[(0,c.jsx)("th",{className:"py-1 pr-4",children:"Type"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Action"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Detected"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Strength"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Confidence"})]})}),(0,c.jsx)("tbody",{children:e.contentPolicy.filters.map((e,s)=>{var t,l,a,r;return(0,c.jsxs)("tr",{className:"border-t",children:[(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(t=e.type)&&void 0!==t?t:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aD(null!==(l=e.action)&&void 0!==l?l:"—",e.detected?"red":"slate")}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aF(e.detected)}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(a=e.filterStrength)&&void 0!==a?a:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(r=e.confidence)&&void 0!==r?r:"—"})]},s)})})]})})]}):null,(null===(o=e.contextualGroundingPolicy)||void 0===o?void 0:null===(n=o.filters)||void 0===n?void 0:n.length)?(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Contextual Grounding"}),(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)("table",{className:"min-w-full text-sm",children:[(0,c.jsx)("thead",{children:(0,c.jsxs)("tr",{className:"text-left text-gray-600",children:[(0,c.jsx)("th",{className:"py-1 pr-4",children:"Type"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Action"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Detected"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Score"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Threshold"})]})}),(0,c.jsx)("tbody",{children:e.contextualGroundingPolicy.filters.map((e,s)=>{var t,l,a,r;return(0,c.jsxs)("tr",{className:"border-t",children:[(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(t=e.type)&&void 0!==t?t:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aD(null!==(l=e.action)&&void 0!==l?l:"—",e.detected?"red":"slate")}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aF(e.detected)}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(a=e.score)&&void 0!==a?a:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(r=e.threshold)&&void 0!==r?r:"—"})]},s)})})]})})]}):null,e.sensitiveInformationPolicy&&(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Sensitive Information"}),(null!==(y=null===(d=e.sensitiveInformationPolicy.piiEntities)||void 0===d?void 0:d.length)&&void 0!==y?y:0)>0&&(0,c.jsx)(aR,{title:"PII Entities",defaultOpen:!0,children:(0,c.jsx)("div",{className:"space-y-2",children:e.sensitiveInformationPolicy.piiEntities.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),e.type&&aD(e.type,"slate"),(0,c.jsx)("span",{className:"font-mono text-xs break-all",children:e.match})]}),aF(e.detected)]},s)})})}),(null!==(b=null===(m=e.sensitiveInformationPolicy.regexes)||void 0===m?void 0:m.length)&&void 0!==b?b:0)>0&&(0,c.jsx)(aR,{title:"Custom Regexes",defaultOpen:!1,children:(0,c.jsx)("div",{className:"space-y-2",children:e.sensitiveInformationPolicy.regexes.map((e,s)=>{var t,l;return(0,c.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between p-2 bg-gray-50 rounded gap-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-medium",children:null!==(l=e.name)&&void 0!==l?l:"regex"}),(0,c.jsx)("span",{className:"font-mono text-xs break-all",children:e.regex})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aF(e.detected),e.match&&(0,c.jsx)("span",{className:"font-mono text-xs break-all",children:e.match})]})]},s)})})})]}),(null===(x=e.topicPolicy)||void 0===x?void 0:null===(u=x.topics)||void 0===u?void 0:u.length)?(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Topic Policy"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:e.topicPolicy.topics.map((e,s)=>{var t,l;return(0,c.jsx)("div",{className:"px-3 py-1.5 bg-gray-50 rounded-md text-xs",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-medium",children:null!==(l=e.name)&&void 0!==l?l:"topic"}),e.type&&aD(e.type,"slate"),aF(e.detected)]})},s)})})]}):null,e.invocationMetrics&&(0,c.jsx)(aR,{title:"Invocation Metrics",defaultOpen:!1,children:(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(az,{label:"Latency (ms)",children:null!==(_=e.invocationMetrics.guardrailProcessingLatency)&&void 0!==_?_:"—"}),(0,c.jsx)(az,{label:"Coverage:",children:(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(null===(h=e.invocationMetrics.guardrailCoverage)||void 0===h?void 0:h.textCharacters)&&aD("text ".concat(null!==(N=e.invocationMetrics.guardrailCoverage.textCharacters.guarded)&&void 0!==N?N:0,"/").concat(null!==(Z=e.invocationMetrics.guardrailCoverage.textCharacters.total)&&void 0!==Z?Z:0),"blue"),(null===(p=e.invocationMetrics.guardrailCoverage)||void 0===p?void 0:p.images)&&aD("images ".concat(null!==(w=e.invocationMetrics.guardrailCoverage.images.guarded)&&void 0!==w?w:0,"/").concat(null!==(k=e.invocationMetrics.guardrailCoverage.images.total)&&void 0!==k?k:0),"blue")]})})]}),(0,c.jsx)("div",{className:"space-y-2",children:(0,c.jsx)(az,{label:"Usage:",children:(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:e.invocationMetrics.usage&&Object.entries(e.invocationMetrics.usage).map(e=>{let[s,t]=e;return"number"==typeof t?(0,c.jsxs)("span",{className:"px-2 py-1 bg-slate-100 text-slate-800 rounded-md text-xs font-medium",children:[s,": ",t]},s):null})})})})]})}),(null===(j=e.automatedReasoningPolicy)||void 0===j?void 0:null===(g=j.findings)||void 0===g?void 0:g.length)?(0,c.jsx)(aR,{title:"Automated Reasoning Findings",defaultOpen:!1,children:(0,c.jsx)("div",{className:"space-y-2",children:e.automatedReasoningPolicy.findings.map((e,s)=>(0,c.jsx)("pre",{className:"bg-gray-50 rounded p-2 text-xs overflow-x-auto",children:JSON.stringify(e,null,2)},s))})}):null]},s)})}):null,(0,c.jsx)(aR,{title:"Raw Bedrock Guardrail Response",defaultOpen:!1,children:(0,c.jsx)("pre",{className:"bg-gray-50 rounded p-3 text-xs overflow-x-auto",children:JSON.stringify(u,null,2)})})]})},aV=e=>{var s,t;let{data:l}=e,[a,r]=(0,d.useState)(!0),i=null!==(t=l.guardrail_provider)&&void 0!==t?t:"presidio";if(!l)return null;let n="string"==typeof l.guardrail_status&&"success"===l.guardrail_status.toLowerCase(),o=n?null:"Guardrail failed to run.",m=l.masked_entity_count?Object.values(l.masked_entity_count).reduce((e,s)=>e+s,0):0,u=e=>new Date(1e3*e).toLocaleString();return(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow mb-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b cursor-pointer hover:bg-gray-50",onClick:()=>r(!a),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 text-gray-600 transition-transform ".concat(a?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Guardrail Information"}),(0,c.jsx)(B.Z,{title:o,placement:"top",arrow:!0,destroyTooltipOnHide:!0,children:(0,c.jsx)("span",{className:"ml-3 px-2 py-1 rounded-md text-xs font-medium inline-block ".concat(n?"bg-green-100 text-green-800":"bg-red-100 text-red-800 cursor-help"),children:l.guardrail_status})}),m>0&&(0,c.jsxs)("span",{className:"ml-3 px-2 py-1 bg-blue-50 text-blue-700 rounded-md text-xs font-medium",children:[m," masked ",1===m?"entity":"entities"]})]}),(0,c.jsx)("span",{className:"text-sm text-gray-500",children:a?"Click to collapse":"Click to expand"})]}),a&&(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"bg-white rounded-lg border p-4 mb-4",children:[(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Guardrail Name:"}),(0,c.jsx)("span",{className:"font-mono",children:l.guardrail_name})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Mode:"}),(0,c.jsx)("span",{className:"font-mono",children:l.guardrail_mode})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Status:"}),(0,c.jsx)(B.Z,{title:o,placement:"top",arrow:!0,destroyTooltipOnHide:!0,children:(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block ".concat(n?"bg-green-100 text-green-800":"bg-red-100 text-red-800 cursor-help"),children:l.guardrail_status})})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Start Time:"}),(0,c.jsx)("span",{children:u(l.start_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"End Time:"}),(0,c.jsx)("span",{children:u(l.end_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Duration:"}),(0,c.jsxs)("span",{children:[l.duration.toFixed(4),"s"]})]})]})]}),l.masked_entity_count&&Object.keys(l.masked_entity_count).length>0&&(0,c.jsxs)("div",{className:"mt-4 pt-4 border-t",children:[(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Masked Entity Summary"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(l.masked_entity_count).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{className:"px-3 py-1.5 bg-blue-50 text-blue-700 rounded-md text-xs font-medium",children:[s,": ",t]},s)})})]})]}),"presidio"===i&&(null===(s=l.guardrail_response)||void 0===s?void 0:s.length)>0&&(0,c.jsx)(aO,{entities:l.guardrail_response}),"bedrock"===i&&l.guardrail_response&&(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(aq,{response:l.guardrail_response})})]})]})};let aB={TEAM_ID:"Team ID",KEY_HASH:"Key Hash",REQUEST_ID:"Request ID",MODEL:"Model",USER_ID:"User ID",END_USER:"End User",STATUS:"Status",KEY_ALIAS:"Key Alias"},aK="".concat("../ui/assets/","audit-logs-preview.png");function aG(e){let{userID:s,userRole:t,token:l,accessToken:a,isActive:r,premiumUser:i,allTeams:n}=e,[o,m]=(0,d.useState)(ab()().subtract(24,"hours").format("YYYY-MM-DDTHH:mm")),u=(0,d.useRef)(null),x=(0,d.useRef)(null),[h,p]=(0,d.useState)(1),[g]=(0,d.useState)(50),[f,v]=(0,d.useState)({}),[y,b]=(0,d.useState)(""),[_,N]=(0,d.useState)(""),[Z,w]=(0,d.useState)(""),[S,C]=(0,d.useState)("all"),[I,A]=(0,d.useState)("all"),[T,E]=(0,d.useState)(!1),[L,P]=(0,d.useState)(!1),M=(0,sA.a)({queryKey:["all_audit_logs",a,l,t,s,o],queryFn:async()=>{if(!a||!l||!t||!s)return[];let e=ab()(o).utc().format("YYYY-MM-DD HH:mm:ss"),r=ab()().utc().format("YYYY-MM-DD HH:mm:ss"),i=[],n=1,c=1;do{let s=await (0,j.uiAuditLogsCall)(a,e,r,n,50);i=i.concat(s.audit_logs),c=s.total_pages,n++}while(n<=c);return i},enabled:!!a&&!!l&&!!t&&!!s&&r,refetchInterval:5e3,refetchIntervalInBackground:!0}),O=(0,d.useCallback)(async e=>{if(a)try{let s=(await (0,j.keyListCall)(a,null,null,e,null,null,1,10)).keys.find(s=>s.key_alias===e);s?N(s.token):N("")}catch(e){console.error("Error fetching key hash for alias:",e),N("")}},[a]);(0,d.useEffect)(()=>{if(!a)return;let e=!1,s=!1;f["Team ID"]?y!==f["Team ID"]&&(b(f["Team ID"]),e=!0):""!==y&&(b(""),e=!0),f["Key Hash"]?_!==f["Key Hash"]&&(N(f["Key Hash"]),s=!0):f["Key Alias"]?O(f["Key Alias"]):""!==_&&(N(""),s=!0),(e||s)&&p(1)},[f,a,O,y,_]),(0,d.useEffect)(()=>{p(1)},[y,_,o,Z,S,I]),(0,d.useEffect)(()=>{function e(e){u.current&&!u.current.contains(e.target)&&E(!1),x.current&&!x.current.contains(e.target)&&P(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let D=(0,d.useMemo)(()=>M.data?M.data.filter(e=>{var s,t,l,a,r,i,n;let o=!0,c=!0,d=!0,m=!0,u=!0;if(y){let r="string"==typeof e.before_value?null===(s=JSON.parse(e.before_value))||void 0===s?void 0:s.team_id:null===(t=e.before_value)||void 0===t?void 0:t.team_id,i="string"==typeof e.updated_values?null===(l=JSON.parse(e.updated_values))||void 0===l?void 0:l.team_id:null===(a=e.updated_values)||void 0===a?void 0:a.team_id;o=r===y||i===y}if(_)try{let s="string"==typeof e.before_value?JSON.parse(e.before_value):e.before_value,t="string"==typeof e.updated_values?JSON.parse(e.updated_values):e.updated_values,l=null==s?void 0:s.token,a=null==t?void 0:t.token;c="string"==typeof l&&l.includes(_)||"string"==typeof a&&a.includes(_)}catch(e){c=!1}if(Z&&(d=null===(r=e.object_id)||void 0===r?void 0:r.toLowerCase().includes(Z.toLowerCase())),"all"!==S&&(m=(null===(i=e.action)||void 0===i?void 0:i.toLowerCase())===S.toLowerCase()),"all"!==I){let s="";switch(I){case"keys":s="litellm_verificationtoken";break;case"teams":s="litellm_teamtable";break;case"users":s="litellm_usertable";break;default:s=I}u=(null===(n=e.table_name)||void 0===n?void 0:n.toLowerCase())===s}return o&&c&&d&&m&&u}):[],[M.data,y,_,Z,S,I]),F=D.length,R=Math.ceil(F/g)||1,z=(0,d.useMemo)(()=>{let e=(h-1)*g,s=e+g;return D.slice(e,s)},[D,h,g]),U=!M.data||0===M.data.length,q=(0,d.useCallback)(e=>{let{row:s}=e;return(0,c.jsx)(e=>{let{rowData:s}=e,{before_value:t,updated_values:l,table_name:a,action:r}=s,i=(e,s)=>{if(!e||0===Object.keys(e).length)return(0,c.jsx)(k.Z,{children:"N/A"});if(s){let s=Object.keys(e),t=["token","spend","max_budget"];if(s.every(e=>t.includes(e))&&s.length>0)return(0,c.jsxs)("div",{children:[s.includes("token")&&(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Token:"})," ",e.token||"N/A"]}),s.includes("spend")&&(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Spend:"})," ",void 0!==e.spend?"$".concat(eP(e.spend,6)):"N/A"]}),s.includes("max_budget")&&(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Max Budget:"})," ",void 0!==e.max_budget?"$".concat(eP(e.max_budget,6)):"N/A"]})]});if(e["No differing fields detected in 'before' state"]||e["No differing fields detected in 'updated' state"]||e["No fields changed"])return(0,c.jsx)(k.Z,{children:e[Object.keys(e)[0]]})}return(0,c.jsx)("pre",{className:"p-2 bg-gray-50 border rounded text-xs overflow-auto max-h-60",children:JSON.stringify(e,null,2)})},n=t,o=l;if(("updated"===r||"rotated"===r)&&t&&l&&("LiteLLM_TeamTable"===a||"LiteLLM_UserTable"===a||"LiteLLM_VerificationToken"===a)){let e={},s={};new Set([...Object.keys(t),...Object.keys(l)]).forEach(a=>{JSON.stringify(t[a])!==JSON.stringify(l[a])&&(t.hasOwnProperty(a)&&(e[a]=t[a]),l.hasOwnProperty(a)&&(s[a]=l[a]))}),Object.keys(t).forEach(a=>{l.hasOwnProperty(a)||e.hasOwnProperty(a)||(e[a]=t[a],s[a]=void 0)}),Object.keys(l).forEach(a=>{t.hasOwnProperty(a)||s.hasOwnProperty(a)||(s[a]=l[a],e[a]=void 0)}),n=Object.keys(e).length>0?e:{"No differing fields detected in 'before' state":"N/A"},o=Object.keys(s).length>0?s:{"No differing fields detected in 'updated' state":"N/A"},0===Object.keys(e).length&&0===Object.keys(s).length&&(n={"No fields changed":"N/A"},o={"No fields changed":"N/A"})}return(0,c.jsxs)("div",{className:"-mx-4 p-4 bg-slate-100 border-y border-slate-300 grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"font-semibold mb-2 text-sm text-slate-700",children:"Before Value:"}),i(n,"LiteLLM_VerificationToken"===a)]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"font-semibold mb-2 text-sm text-slate-700",children:"Updated Value:"}),i(o,"LiteLLM_VerificationToken"===a)]})]})},{rowData:s.original})},[]);if(!i)return(0,c.jsxs)("div",{style:{textAlign:"center",marginTop:"20px"},children:[(0,c.jsx)("h1",{style:{display:"block",marginBottom:"10px"},children:"✨ Enterprise Feature."}),(0,c.jsx)(k.Z,{style:{display:"block",marginBottom:"10px"},children:"This is a LiteLLM Enterprise feature, and requires a valid key to use."}),(0,c.jsx)(k.Z,{style:{display:"block",marginBottom:"20px",fontStyle:"italic"},children:"Here's a preview of what Audit Logs offer:"}),(0,c.jsx)("img",{src:aK,alt:"Audit Logs Preview",style:{maxWidth:"100%",maxHeight:"700px",borderRadius:"8px",boxShadow:"0 4px 8px rgba(0,0,0,0.1)",margin:"0 auto"},onError:e=>{console.error("Failed to load audit logs preview image"),e.target.style.display="none"}})]});let V=F>0?(h-1)*g+1:0,B=Math.min(h*g,F);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"flex items-center justify-between mb-4"}),(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsxs)("div",{className:"border-b px-6 py-4",children:[(0,c.jsx)("h1",{className:"text-xl font-semibold py-4",children:"Audit Logs"}),(0,c.jsx)(e=>{let{show:s}=e;return s?(0,c.jsxs)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-4 flex items-start mb-6",children:[(0,c.jsx)("div",{className:"text-blue-500 mr-3 flex-shrink-0 mt-0.5",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,c.jsx)("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),(0,c.jsx)("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"text-sm font-medium text-blue-800",children:"Audit Logs Not Available"}),(0,c.jsx)("p",{className:"text-sm text-blue-700 mt-1",children:"To enable audit logging, add the following configuration to your LiteLLM proxy configuration file:"}),(0,c.jsx)("pre",{className:"mt-2 bg-white p-3 rounded border border-blue-200 text-xs font-mono overflow-auto",children:"litellm_settings:\n store_audit_logs: true"}),(0,c.jsx)("p",{className:"text-xs text-blue-700 mt-2",children:"Note: This will only affect new requests after the configuration change and proxy restart."})]})]}):null},{show:U}),(0,c.jsxs)("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between space-y-4 md:space-y-0",children:[(0,c.jsx)("div",{className:"flex flex-wrap items-center gap-3",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsx)("input",{type:"text",placeholder:"Search by Object ID...",value:Z,onChange:e=>w(e.target.value),className:"px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})}),(0,c.jsxs)("button",{onClick:()=>{M.refetch()},className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",title:"Refresh data",children:[(0,c.jsx)("svg",{className:"w-4 h-4 ".concat(M.isFetching?"animate-spin":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),(0,c.jsx)("span",{children:"Refresh"})]})]})}),(0,c.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,c.jsxs)("div",{className:"relative",ref:u,children:[(0,c.jsx)("label",{htmlFor:"actionFilterDisplay",className:"mr-2 text-sm font-medium text-gray-700 sr-only",children:"Action:"}),(0,c.jsxs)("button",{id:"actionFilterDisplay",onClick:()=>E(!T),className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 bg-white w-40 text-left justify-between",children:[(0,c.jsxs)("span",{children:["all"===S&&"All Actions","created"===S&&"Created","updated"===S&&"Updated","deleted"===S&&"Deleted","rotated"===S&&"Rotated"]}),(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M19 9l-7 7-7-7"})})]}),T&&(0,c.jsx)("div",{className:"absolute left-0 mt-2 w-40 bg-white rounded-lg shadow-lg border p-1 z-50",children:(0,c.jsx)("div",{className:"space-y-1",children:[{label:"All Actions",value:"all"},{label:"Created",value:"created"},{label:"Updated",value:"updated"},{label:"Deleted",value:"deleted"},{label:"Rotated",value:"rotated"}].map(e=>(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(S===e.value?"bg-blue-50 text-blue-600 font-medium":"font-normal"),onClick:()=>{C(e.value),E(!1)},children:e.label},e.value))})})]}),(0,c.jsxs)("div",{className:"relative",ref:x,children:[(0,c.jsx)("label",{htmlFor:"tableFilterDisplay",className:"mr-2 text-sm font-medium text-gray-700 sr-only",children:"Table:"}),(0,c.jsxs)("button",{id:"tableFilterDisplay",onClick:()=>P(!L),className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 bg-white w-40 text-left justify-between",children:[(0,c.jsxs)("span",{children:["all"===I&&"All Tables","keys"===I&&"Keys","teams"===I&&"Teams","users"===I&&"Users"]}),(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M19 9l-7 7-7-7"})})]}),L&&(0,c.jsx)("div",{className:"absolute left-0 mt-2 w-40 bg-white rounded-lg shadow-lg border p-1 z-50",children:(0,c.jsx)("div",{className:"space-y-1",children:[{label:"All Tables",value:"all"},{label:"Keys",value:"keys"},{label:"Teams",value:"teams"},{label:"Users",value:"users"}].map(e=>(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(I===e.value?"bg-blue-50 text-blue-600 font-medium":"font-normal"),onClick:()=>{A(e.value),P(!1)},children:e.label},e.value))})})]}),(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Showing ",M.isLoading?"...":V," -"," ",M.isLoading?"...":B," of"," ",M.isLoading?"...":F," results"]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Page ",M.isLoading?"...":h," of"," ",M.isLoading?"...":R]}),(0,c.jsx)("button",{onClick:()=>p(e=>Math.max(1,e-1)),disabled:M.isLoading||1===h,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Previous"}),(0,c.jsx)("button",{onClick:()=>p(e=>Math.min(R,e+1)),disabled:M.isLoading||h===R,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Next"})]})]})]})]}),(0,c.jsx)(lN,{columns:aS,data:z,renderSubComponent:q,getRowCanExpand:()=>!0})]})]})}let aH=(e,s,t)=>{if(e)return"".concat(ab()(s).format("MMM D, h:mm A")," - ").concat(ab()(t).format("MMM D, h:mm A"));let l=ab()(),a=ab()(s),r=l.diff(a,"minutes");if(r>=0&&r<2)return"Last 1 Minute";if(r>=2&&r<16)return"Last 15 Minutes";if(r>=16&&r<61)return"Last Hour";let i=l.diff(a,"hours");return i>=1&&i<5?"Last 4 Hours":i>=5&&i<25?"Last 24 Hours":i>=25&&i<169?"Last 7 Days":"".concat(a.format("MMM D")," - ").concat(l.format("MMM D"))};function aY(e){var s,t,l;let{accessToken:a,token:r,userRole:i,userID:n,allTeams:o,premiumUser:m}=e,[u,x]=(0,d.useState)(""),[p,g]=(0,d.useState)(!1),[f,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(1),[_]=(0,d.useState)(50),N=(0,d.useRef)(null),Z=(0,d.useRef)(null),w=(0,d.useRef)(null),[k,S]=(0,d.useState)(ab()().subtract(24,"hours").format("YYYY-MM-DDTHH:mm")),[C,I]=(0,d.useState)(ab()().format("YYYY-MM-DDTHH:mm")),[A,T]=(0,d.useState)(!1),[E,L]=(0,d.useState)(!1),[P,M]=(0,d.useState)(""),[O,D]=(0,d.useState)(""),[F,R]=(0,d.useState)(""),[z,U]=(0,d.useState)(""),[q,V]=(0,d.useState)(""),[B,K]=(0,d.useState)(null),[G,H]=(0,d.useState)(null),[Y,J]=(0,d.useState)(""),[W,$]=(0,d.useState)(""),[Q,X]=(0,d.useState)(i&&eI.lo.includes(i)),[ee,es]=(0,d.useState)("request logs"),[et,el]=(0,d.useState)(null),[ea,er]=(0,d.useState)(null),ei=(0,h.NL)(),[en,eo]=(0,d.useState)(()=>{let e=sessionStorage.getItem("isLiveTail");return null===e||JSON.parse(e)});(0,d.useEffect)(()=>{sessionStorage.setItem("isLiveTail",JSON.stringify(en))},[en]);let[ec,ed]=(0,d.useState)({value:24,unit:"hours"});(0,d.useEffect)(()=>{(async()=>{G&&a&&K({...(await (0,j.keyInfoV1Call)(a,G)).info,token:G,api_key:G})})()},[G,a]),(0,d.useEffect)(()=>{function e(e){N.current&&!N.current.contains(e.target)&&v(!1),Z.current&&!Z.current.contains(e.target)&&g(!1),w.current&&!w.current.contains(e.target)&&L(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,d.useEffect)(()=>{i&&eI.lo.includes(i)&&X(!0)},[i]);let em=(0,sA.a)({queryKey:["logs","table",y,_,k,C,F,z,Q?n:null,Y,q],queryFn:async()=>{if(!a||!r||!i||!n)return{data:[],total:0,page:1,page_size:_,total_pages:0};let e=ab()(k).utc().format("YYYY-MM-DD HH:mm:ss"),s=A?ab()(C).utc().format("YYYY-MM-DD HH:mm:ss"):ab()().utc().format("YYYY-MM-DD HH:mm:ss"),t=await (0,j.uiSpendLogsCall)(a,z||void 0,F||void 0,void 0,e,s,y,_,Q?n:void 0,W,Y,q);return await aC(t.data,e,a,ei),t.data=t.data.map(s=>{let t=ei.getQueryData(["logDetails",s.request_id,e]);return(null==t?void 0:t.messages)&&(null==t?void 0:t.response)&&(s.messages=t.messages,s.response=t.response),s}),t},enabled:!!a&&!!r&&!!i&&!!n&&"request logs"===ee,refetchInterval:!!en&&1===y&&15e3,refetchIntervalInBackground:!0}),{filters:eu,filteredLogs:ex,allTeams:eh,allKeyAliases:ep,handleFilterChange:eg,handleFilterReset:ej}=function(e){let{logs:s,accessToken:t,startTime:l,endTime:a,pageSize:r=25,isCustomDate:i,setCurrentPage:n,userID:o,userRole:c}=e,m=(0,d.useMemo)(()=>({[aB.TEAM_ID]:"",[aB.KEY_HASH]:"",[aB.REQUEST_ID]:"",[aB.MODEL]:"",[aB.USER_ID]:"",[aB.END_USER]:"",[aB.STATUS]:"",[aB.KEY_ALIAS]:""}),[]),[u,x]=(0,d.useState)(m),[h,p]=(0,d.useState)({data:[],total:0,page:1,page_size:50,total_pages:0}),g=(0,d.useRef)(0),f=(0,d.useCallback)(async function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!t)return;console.log("Filters being sent to API:",e);let n=Date.now();g.current=n;let o=ab()(l).utc().format("YYYY-MM-DD HH:mm:ss"),c=i?ab()(a).utc().format("YYYY-MM-DD HH:mm:ss"):ab()().utc().format("YYYY-MM-DD HH:mm:ss");try{let l=await (0,j.uiSpendLogsCall)(t,e[aB.KEY_HASH]||void 0,e[aB.TEAM_ID]||void 0,e[aB.REQUEST_ID]||void 0,o,c,s,r,e[aB.USER_ID]||void 0,e[aB.END_USER]||void 0,e[aB.STATUS]||void 0,e[aB.MODEL]||void 0,e[aB.KEY_ALIAS]||void 0);n===g.current&&l.data&&p(l)}catch(e){console.error("Error searching users:",e)}},[t,l,a,i,r]),v=(0,d.useMemo)(()=>eC()((e,s)=>f(e,s),300),[f]);(0,d.useEffect)(()=>()=>v.cancel(),[v]);let y=(0,sA.a)({queryKey:["allKeys"],queryFn:async()=>{if(!t)throw Error("Access token required");return await sT(t)},enabled:!!t}).data||[],b=(0,d.useMemo)(()=>!!(u[aB.KEY_ALIAS]||u[aB.KEY_HASH]||u[aB.REQUEST_ID]||u[aB.USER_ID]||u[aB.END_USER]),[u]),_=(0,d.useMemo)(()=>{if(!s||!s.data)return{data:[],total:0,page:1,page_size:50,total_pages:0};if(b)return s;let e=[...s.data];return u[aB.TEAM_ID]&&(e=e.filter(e=>e.team_id===u[aB.TEAM_ID])),u[aB.STATUS]&&(e=e.filter(e=>"success"===u[aB.STATUS]?!e.status||"success"===e.status:e.status===u[aB.STATUS])),u[aB.MODEL]&&(e=e.filter(e=>e.model===u[aB.MODEL])),u[aB.KEY_HASH]&&(e=e.filter(e=>e.api_key===u[aB.KEY_HASH])),u[aB.END_USER]&&(e=e.filter(e=>e.end_user===u[aB.END_USER])),{data:e,total:s.total,page:s.page,page_size:s.page_size,total_pages:s.total_pages}},[s,u,b]),N=(0,d.useMemo)(()=>b?h&&h.data&&h.data.length>0?h:s||{data:[],total:0,page:1,page_size:50,total_pages:0}:_,[b,h,_,s]),{data:Z}=(0,sA.a)({queryKey:["allTeamsForLogFilters",t],queryFn:async()=>t&&await sE(t)||[],enabled:!!t});return{filters:u,filteredLogs:N,allKeyAliases:y,allTeams:Z,handleFilterChange:e=>{x(s=>{let t={...s,...e};for(let e of Object.keys(m))e in t||(t[e]=m[e]);return JSON.stringify(t)!==JSON.stringify(s)&&(n(1),v(t,1)),t})},handleFilterReset:()=>{x(m),p({data:[],total:0,page:1,page_size:50,total_pages:0}),v(m,1)}}}({logs:em.data||{data:[],total:0,page:1,page_size:_||10,total_pages:1},accessToken:a,startTime:k,endTime:C,pageSize:_,isCustomDate:A,setCurrentPage:b,userID:n,userRole:i}),ef=(0,d.useCallback)(async e=>{if(a)try{let s=(await (0,j.keyListCall)(a,null,null,e,null,null,y,_)).keys.find(s=>s.key_alias===e);s&&U(s.token)}catch(e){console.error("Error fetching key hash for alias:",e)}},[a,y,_]);(0,d.useEffect)(()=>{a&&(eu["Team ID"]?R(eu["Team ID"]):R(""),J(eu.Status||""),V(eu.Model||""),$(eu["End User"]||""),eu["Key Hash"]?U(eu["Key Hash"]):eu["Key Alias"]?ef(eu["Key Alias"]):U(""))},[eu,a,ef]);let ev=(0,sA.a)({queryKey:["sessionLogs",ea],queryFn:async()=>{if(!a||!ea)return{data:[],total:0,page:1,page_size:50,total_pages:1};let e=await (0,j.sessionSpendLogsCall)(a,ea);return{data:e.data||e||[],total:(e.data||e||[]).length,page:1,page_size:1e3,total_pages:1}},enabled:!!a&&!!ea});if((0,d.useEffect)(()=>{var e;(null===(e=em.data)||void 0===e?void 0:e.data)&&et&&!em.data.data.some(e=>e.request_id===et)&&el(null)},[null===(s=em.data)||void 0===s?void 0:s.data,et]),!a||!r||!i||!n)return null;let ey=ex.data.filter(e=>!u||e.request_id.includes(u)||e.model.includes(u)||e.user&&e.user.includes(u)).map(e=>({...e,duration:(Date.parse(e.endTime)-Date.parse(e.startTime))/1e3,onKeyHashClick:e=>H(e),onSessionClick:e=>{e&&er(e)}}))||[],eb=(null===(l=ev.data)||void 0===l?void 0:null===(t=l.data)||void 0===t?void 0:t.map(e=>({...e,onKeyHashClick:e=>H(e),onSessionClick:e=>{}})))||[],e_=[{name:"Team ID",label:"Team ID",isSearchable:!0,searchFn:async e=>o&&0!==o.length?o.filter(s=>s.team_id.toLowerCase().includes(e.toLowerCase())||s.team_alias&&s.team_alias.toLowerCase().includes(e.toLowerCase())).map(e=>({label:"".concat(e.team_alias||e.team_id," (").concat(e.team_id,")"),value:e.team_id})):[]},{name:"Status",label:"Status",isSearchable:!1,options:[{label:"Success",value:"success"},{label:"Failure",value:"failure"}]},{name:"Model",label:"Model",isSearchable:!1},{name:"Key Alias",label:"Key Alias",isSearchable:!0,searchFn:async e=>a?(await sT(a)).filter(s=>s.toLowerCase().includes(e.toLowerCase())).map(e=>({label:e,value:e})):[]},{name:"End User",label:"End User",isSearchable:!0,searchFn:async e=>{if(!a)return[];let s=await (0,j.allEndUsersCall)(a);return((null==s?void 0:s.map(e=>e.user_id))||[]).filter(s=>s.toLowerCase().includes(e.toLowerCase())).map(e=>({label:e,value:e}))}},{name:"Key Hash",label:"Key Hash",isSearchable:!1}];if(ea&&ev.data)return(0,c.jsx)("div",{className:"w-full p-6",children:(0,c.jsx)(aL,{sessionId:ea,logs:ev.data.data,onBack:()=>er(null)})});let eN=[{label:"Last 15 Minutes",value:15,unit:"minutes"},{label:"Last Hour",value:1,unit:"hours"},{label:"Last 4 Hours",value:4,unit:"hours"},{label:"Last 24 Hours",value:24,unit:"hours"},{label:"Last 7 Days",value:7,unit:"days"}],eZ=eN.find(e=>e.value===ec.value&&e.unit===ec.unit),ew=A?aH(A,k,C):null==eZ?void 0:eZ.label;return(0,c.jsx)("div",{className:"w-full max-w-screen p-6 overflow-x-hidden box-border",children:(0,c.jsxs)(st.Z,{defaultIndex:0,onIndexChange:e=>es(0===e?"request logs":"audit logs"),children:[(0,c.jsxs)(sl.Z,{children:[(0,c.jsx)(ss.Z,{children:"Request Logs"}),(0,c.jsx)(ss.Z,{children:"Audit Logs"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,c.jsx)("h1",{className:"text-xl font-semibold",children:ea?(0,c.jsxs)(c.Fragment,{children:["Session: ",(0,c.jsx)("span",{className:"font-mono",children:ea}),(0,c.jsx)("button",{className:"ml-4 px-3 py-1 text-sm border rounded hover:bg-gray-50",onClick:()=>er(null),children:"← Back to All Logs"})]}):"Request Logs"})}),B&&G&&B.api_key===G?(0,c.jsx)(sS,{keyId:G,keyData:B,accessToken:a,userID:n,userRole:i,teams:o,onClose:()=>H(null),premiumUser:m,backButtonText:"Back to Logs"}):ea?(0,c.jsx)("div",{className:"bg-white rounded-lg shadow",children:(0,c.jsx)(lN,{columns:aw,data:eb,renderSubComponent:aJ,getRowCanExpand:()=>!0})}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sI,{options:e_,onApplyFilters:eg,onResetFilters:ej}),(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full box-border",children:[(0,c.jsx)("div",{className:"border-b px-6 py-4 w-full max-w-full box-border",children:(0,c.jsxs)("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between space-y-4 md:space-y-0 w-full max-w-full box-border",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 w-full max-w-full box-border",children:[(0,c.jsxs)("div",{className:"relative w-64 min-w-0 flex-shrink-0",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search by Request ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:u,onChange:e=>x(e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-shrink",children:[(0,c.jsxs)("div",{className:"relative z-50",ref:w,children:[(0,c.jsxs)("button",{onClick:()=>L(!E),className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})}),ew]}),E&&(0,c.jsx)("div",{className:"absolute right-0 mt-2 w-64 bg-white rounded-lg shadow-lg border p-2 z-50",children:(0,c.jsxs)("div",{className:"space-y-1",children:[eN.map(e=>(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(ew===e.label?"bg-blue-50 text-blue-600":""),onClick:()=>{I(ab()().format("YYYY-MM-DDTHH:mm")),S(ab()().subtract(e.value,e.unit).format("YYYY-MM-DDTHH:mm")),ed({value:e.value,unit:e.unit}),T(!1),L(!1)},children:e.label},e.label)),(0,c.jsx)("div",{className:"border-t my-2"}),(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(A?"bg-blue-50 text-blue-600":""),onClick:()=>T(!A),children:"Custom Range"})]})})]}),(0,c.jsx)(()=>(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-900",children:"Live Tail"}),(0,c.jsx)(tX.Z,{color:"green",checked:en,defaultChecked:!0,onChange:eo})]}),{}),(0,c.jsxs)("button",{onClick:()=>{em.refetch()},className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",title:"Refresh data",children:[(0,c.jsx)("svg",{className:"w-4 h-4 ".concat(em.isFetching?"animate-spin":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),(0,c.jsx)("span",{children:"Refresh"})]})]}),A&&(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{children:(0,c.jsx)("input",{type:"datetime-local",value:k,onChange:e=>{S(e.target.value),b(1)},className:"px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})}),(0,c.jsx)("span",{className:"text-gray-500",children:"to"}),(0,c.jsx)("div",{children:(0,c.jsx)("input",{type:"datetime-local",value:C,onChange:e=>{I(e.target.value),b(1)},className:"px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})})]})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700 whitespace-nowrap",children:["Showing ",em.isLoading?"...":ex?(y-1)*_+1:0," -"," ",em.isLoading?"...":ex?Math.min(y*_,ex.total):0," ","of ",em.isLoading?"...":ex?ex.total:0," results"]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700 min-w-[90px]",children:["Page ",em.isLoading?"...":y," of"," ",em.isLoading?"...":ex?ex.total_pages:1]}),(0,c.jsx)("button",{onClick:()=>b(e=>Math.max(1,e-1)),disabled:em.isLoading||1===y,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Previous"}),(0,c.jsx)("button",{onClick:()=>b(e=>Math.min(ex.total_pages||1,e+1)),disabled:em.isLoading||y===(ex.total_pages||1),className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Next"})]})]})]})}),en&&1===y&&(0,c.jsxs)("div",{className:"mb-4 px-4 py-2 bg-green-50 border border-greem-200 rounded-md flex items-center justify-between",children:[(0,c.jsx)("div",{className:"flex items-center gap-2",children:(0,c.jsx)("span",{className:"text-sm text-green-700",children:"Auto-refreshing every 15 seconds"})}),(0,c.jsx)("button",{onClick:()=>eo(!1),className:"text-sm text-green-600 hover:text-green-800",children:"Stop"})]}),(0,c.jsx)(lN,{columns:aw,data:ey,renderSubComponent:aJ,getRowCanExpand:()=>!0})]})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(aG,{userID:n,userRole:i,token:r,accessToken:a,isActive:"audit logs"===ee,premiumUser:m,allTeams:o})})]})]})})}function aJ(e){var s,t,l,a,r,i,n,o;let{row:d}=e,m=e=>{if("string"==typeof e)try{return JSON.parse(e)}catch(e){}return e},u=d.original.metadata||{},x="failure"===u.status,h=x?u.error_information:null,p=d.original.messages&&(Array.isArray(d.original.messages)?d.original.messages.length>0:Object.keys(d.original.messages).length>0),g=d.original.response&&Object.keys(m(d.original.response)).length>0,j=u.vector_store_request_metadata&&Array.isArray(u.vector_store_request_metadata)&&u.vector_store_request_metadata.length>0,f=d.original.metadata&&d.original.metadata.guardrail_information,v=f&&(null===(o=d.original.metadata)||void 0===o?void 0:o.guardrail_information.masked_entity_count)?Object.values(d.original.metadata.guardrail_information.masked_entity_count).reduce((e,s)=>e+("number"==typeof s?s:0),0):0;return(0,c.jsxs)("div",{className:"p-6 bg-gray-50 space-y-6 w-full max-w-full overflow-hidden box-border",children:[(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full overflow-hidden",children:[(0,c.jsx)("div",{className:"p-4 border-b",children:(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Request Details"})}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 p-4 w-full max-w-full overflow-hidden",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Request ID:"}),(0,c.jsx)("span",{className:"font-mono text-sm",children:d.original.request_id})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Model:"}),(0,c.jsx)("span",{children:d.original.model})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Model ID:"}),(0,c.jsx)("span",{children:d.original.model_id})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Call Type:"}),(0,c.jsx)("span",{children:d.original.call_type})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Provider:"}),(0,c.jsx)("span",{children:d.original.custom_llm_provider||"-"})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"API Base:"}),(0,c.jsx)(B.Z,{title:d.original.api_base||"-",children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:d.original.api_base||"-"})})]}),(null==d?void 0:null===(s=d.original)||void 0===s?void 0:s.requester_ip_address)&&(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"IP Address:"}),(0,c.jsx)("span",{children:null==d?void 0:null===(t=d.original)||void 0===t?void 0:t.requester_ip_address})]}),f&&(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Guardrail:"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-mono",children:d.original.metadata.guardrail_information.guardrail_name}),v>0&&(0,c.jsxs)("span",{className:"ml-2 px-2 py-0.5 bg-blue-50 text-blue-700 rounded-md text-xs font-medium",children:[v," masked"]})]})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Tokens:"}),(0,c.jsxs)("span",{children:[d.original.total_tokens," (",d.original.prompt_tokens," prompt tokens +"," ",d.original.completion_tokens," completion tokens)"]})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cache Read Tokens:"}),(0,c.jsx)("span",{children:eP((null===(a=d.original.metadata)||void 0===a?void 0:null===(l=a.additional_usage_values)||void 0===l?void 0:l.cache_read_input_tokens)||0)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cache Creation Tokens:"}),(0,c.jsx)("span",{children:eP(null===(r=d.original.metadata)||void 0===r?void 0:r.additional_usage_values.cache_creation_input_tokens)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cost:"}),(0,c.jsxs)("span",{children:["$",eP(d.original.spend||0,6)]})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cache Hit:"}),(0,c.jsx)("span",{children:d.original.cache_hit})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Status:"}),(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block text-center w-16 ".concat("failure"!==((null===(i=d.original.metadata)||void 0===i?void 0:i.status)||"Success").toLowerCase()?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:"failure"!==((null===(n=d.original.metadata)||void 0===n?void 0:n.status)||"Success").toLowerCase()?"Success":"Failure"})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Start Time:"}),(0,c.jsx)("span",{children:d.original.startTime})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"End Time:"}),(0,c.jsx)("span",{children:d.original.endTime})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Duration:"}),(0,c.jsxs)("span",{children:[d.original.duration," s."]})]})]})]})]}),(0,c.jsx)(aT,{show:!p&&!g}),(0,c.jsx)("div",{className:"w-full max-w-full overflow-hidden",children:(0,c.jsx)(aI,{row:d,hasMessages:p,hasResponse:g,hasError:x,errorInfo:h,getRawRequest:()=>{var e;return(null===(e=d.original)||void 0===e?void 0:e.proxy_server_request)?m(d.original.proxy_server_request):m(d.original.messages)},formattedResponse:()=>x&&h?{error:{message:h.error_message||"An error occurred",type:h.error_class||"error",code:h.error_code||"unknown",param:null}}:m(d.original.response)})}),f&&(0,c.jsx)(aV,{data:d.original.metadata.guardrail_information}),j&&(0,c.jsx)(aP,{data:u.vector_store_request_metadata}),x&&h&&(0,c.jsx)(aA,{errorInfo:h}),d.original.request_tags&&Object.keys(d.original.request_tags).length>0&&(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsx)("div",{className:"flex justify-between items-center p-4 border-b",children:(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Request Tags"})}),(0,c.jsx)("div",{className:"p-4",children:(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(d.original.request_tags).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded-full text-xs",children:[s,": ",String(t)]},s)})})})]}),d.original.metadata&&Object.keys(d.original.metadata).length>0&&(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b",children:[(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Metadata"}),(0,c.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(JSON.stringify(d.original.metadata,null,2))},className:"p-1 hover:bg-gray-200 rounded",title:"Copy metadata",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,c.jsx)("div",{className:"p-4 overflow-auto max-h-64",children:(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all",children:JSON.stringify(d.original.metadata,null,2)})})]})]})}var aW=t(97851),a$=t(14042),aQ=t(49634);let aX=[{label:"Today",shortLabel:"today",getValue:()=>({from:ab()().startOf("day").toDate(),to:ab()().endOf("day").toDate()})},{label:"Last 7 days",shortLabel:"7d",getValue:()=>({from:ab()().subtract(7,"days").startOf("day").toDate(),to:ab()().endOf("day").toDate()})},{label:"Last 30 days",shortLabel:"30d",getValue:()=>({from:ab()().subtract(30,"days").startOf("day").toDate(),to:ab()().endOf("day").toDate()})},{label:"Month to date",shortLabel:"MTD",getValue:()=>({from:ab()().startOf("month").toDate(),to:ab()().endOf("day").toDate()})},{label:"Year to date",shortLabel:"YTD",getValue:()=>({from:ab()().startOf("year").toDate(),to:ab()().endOf("day").toDate()})}];var a0=e=>{let{value:s,onValueChange:t,label:l="Select Time Range",showTimeRange:a=!0}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(s),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(""),[p,g]=(0,d.useState)(""),j=(0,d.useRef)(null),f=(0,d.useCallback)(e=>{if(!e.from||!e.to)return null;for(let s of aX){let t=s.getValue(),l=ab()(e.from).isSame(ab()(t.from),"day"),a=ab()(e.to).isSame(ab()(t.to),"day");if(l&&a)return s.shortLabel}return null},[]);(0,d.useEffect)(()=>{u(f(s))},[s,f]);let v=(0,d.useCallback)(()=>{if(!x||!p)return{isValid:!0,error:""};let e=ab()(x,"YYYY-MM-DD"),s=ab()(p,"YYYY-MM-DD");return e.isValid()&&s.isValid()?s.isBefore(e)?{isValid:!1,error:"End date cannot be before start date"}:{isValid:!0,error:""}:{isValid:!1,error:"Invalid date format"}},[x,p])();(0,d.useEffect)(()=>{s.from&&h(ab()(s.from).format("YYYY-MM-DD")),s.to&&g(ab()(s.to).format("YYYY-MM-DD")),o(s)},[s]),(0,d.useEffect)(()=>{let e=e=>{j.current&&!j.current.contains(e.target)&&i(!1)};return r&&document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[r]);let y=(0,d.useCallback)((e,s)=>{if(!e||!s)return"Select date range";let t=e=>ab()(e).format("D MMM, HH:mm");return"".concat(t(e)," - ").concat(t(s))},[]),_=(0,d.useCallback)(e=>{let s;if(!e.from)return e;let t={...e},l=new Date(e.from);return s=new Date(e.to?e.to:e.from),l.toDateString(),s.toDateString(),l.setHours(0,0,0,0),s.setHours(23,59,59,999),t.from=l,t.to=s,t},[]),N=e=>{let{from:s,to:t}=e.getValue();o({from:s,to:t}),u(e.shortLabel),h(ab()(s).format("YYYY-MM-DD")),g(ab()(t).format("YYYY-MM-DD"))},Z=(0,d.useCallback)(()=>{try{if(x&&p&&v.isValid){let e=ab()(x,"YYYY-MM-DD").startOf("day"),s=ab()(p,"YYYY-MM-DD").endOf("day");if(e.isValid()&&s.isValid()){let t={from:e.toDate(),to:s.toDate()};o(t);let l=f(t);u(l)}}}catch(e){console.warn("Invalid date format:",e)}},[x,p,v.isValid,f]);return(0,d.useEffect)(()=>{Z()},[Z]),(0,c.jsxs)("div",{children:[l&&(0,c.jsx)(k.Z,{className:"mb-2",children:l}),(0,c.jsxs)("div",{className:"relative",ref:j,children:[(0,c.jsx)("div",{className:"w-[300px] px-3 py-2 text-sm border border-gray-300 rounded-md bg-white cursor-pointer hover:border-gray-400 focus:border-blue-500 focus:ring-1 focus:ring-blue-500",onClick:()=>i(!r),children:(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(lt.Z,{className:"text-gray-600"}),(0,c.jsx)("span",{className:"text-gray-900",children:y(s.from,s.to)})]}),(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-400 transition-transform ".concat(r?"rotate-180":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})}),r&&(0,c.jsx)("div",{className:"absolute top-full left-0 z-[9999] min-w-[600px] mt-1 bg-white border border-gray-200 rounded-lg shadow-xl",children:(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsxs)("div",{className:"w-1/2 border-r border-gray-200",children:[(0,c.jsx)("div",{className:"p-3 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-sm font-semibold text-gray-900",children:"Relative time (today, 7d, 30d, MTD, YTD)"})}),(0,c.jsx)("div",{className:"h-[350px] overflow-y-auto",children:aX.map(e=>{let s=m===e.shortLabel;return(0,c.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 cursor-pointer border-b border-gray-100 transition-colors ".concat(s?"bg-blue-50 hover:bg-blue-100 border-blue-200":"hover:bg-gray-50"),onClick:()=>N(e),children:[(0,c.jsx)("span",{className:"text-sm ".concat(s?"text-blue-700 font-medium":"text-gray-700"),children:e.label}),(0,c.jsx)("span",{className:"text-xs px-2 py-1 rounded ".concat(s?"text-blue-700 bg-blue-100":"text-gray-500 bg-gray-100"),children:e.shortLabel})]},e.label)})})]}),(0,c.jsxs)("div",{className:"w-1/2 relative",children:[(0,c.jsx)("div",{className:"p-3.5 border-b border-gray-200",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(aQ.Z,{className:"text-gray-600"}),(0,c.jsx)("span",{className:"text-sm font-semibold text-gray-900",children:"Start and end dates"})]})}),(0,c.jsxs)("div",{className:"p-6 space-y-6 pb-20",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"text-sm text-gray-700 mb-1 block",children:"Start date"}),(0,c.jsx)("input",{type:"date",value:x,onChange:e=>h(e.target.value),className:"w-65 px-3 py-2 text-sm border rounded-md cursor-pointer hover:border-gray-400 focus:border-blue-500 focus:ring-1 focus:ring-blue-500 ".concat(v.isValid?"border-gray-300":"border-red-300 focus:border-red-500 focus:ring-red-200")})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"text-sm text-gray-700 mb-1 block",children:"End date"}),(0,c.jsx)("input",{type:"date",value:p,onChange:e=>g(e.target.value),className:"w-65 px-3 py-2 text-sm border rounded-md cursor-pointer hover:border-gray-400 focus:border-blue-500 focus:ring-1 focus:ring-blue-500 ".concat(v.isValid?"border-gray-300":"border-red-300 focus:border-red-500 focus:ring-red-200")})]}),!v.isValid&&v.error&&(0,c.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-md p-3",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4 text-red-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})}),(0,c.jsx)("span",{className:"text-sm text-red-700 font-medium",children:v.error})]})}),n.from&&n.to&&v.isValid&&(0,c.jsxs)("div",{className:"bg-blue-50 p-3 rounded-md",children:[(0,c.jsx)("div",{className:"text-xs text-blue-700 font-medium",children:"Preview:"}),(0,c.jsx)("div",{className:"text-sm text-blue-800",children:y(n.from,n.to)})]})]}),(0,c.jsx)("div",{className:"absolute bottom-4 right-4",children:(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{o(s),s.from&&h(ab()(s.from).format("YYYY-MM-DD")),s.to&&g(ab()(s.to).format("YYYY-MM-DD")),u(f(s)),i(!1)},children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:()=>{n.from&&n.to&&v.isValid&&(t(n),requestIdleCallback(()=>{t(_(n))},{timeout:100}),i(!1))},disabled:!n.from||!n.to||!v.isValid,children:"Apply"})]})})]})]})})]}),a&&s.from&&s.to&&(0,c.jsxs)(k.Z,{className:"mt-2 text-xs text-gray-500",children:[ab()(s.from).format("MMM D, YYYY [at] HH:mm:ss")," -"," ",ab()(s.to).format("MMM D, YYYY [at] HH:mm:ss")]})]})},a1=e=>{let{userID:s,userRole:t,accessToken:l,userSpend:a,userMaxBudget:r,selectedTeam:i}=e;console.log("userSpend: ".concat(a));let[n,o]=(0,d.useState)(null!==a?a:0),[m,u]=(0,d.useState)(i?Number(eP(i.max_budget,4)):null);(0,d.useEffect)(()=>{if(i){if("Default Team"===i.team_alias)u(r);else{let e=!1;if(i.team_memberships)for(let t of i.team_memberships)t.user_id===s&&"max_budget"in t.litellm_budget_table&&null!==t.litellm_budget_table.max_budget&&(u(t.litellm_budget_table.max_budget),e=!0);e||u(i.max_budget)}}},[i,r]);let[x,h]=(0,d.useState)([]);(0,d.useEffect)(()=>{let e=async()=>{if(!l||!s||!t)return};(async()=>{try{if(null===s||null===t)return;if(null!==l){let e=(await (0,j.modelAvailableCall)(l,s,t)).data.map(e=>e.id);console.log("available_model_names:",e),h(e)}}catch(e){console.error("Error fetching user models:",e)}})(),e()},[t,l,s]),(0,d.useEffect)(()=>{null!==a&&o(a)},[a]);let p=[];i&&i.models&&(p=i.models),p&&p.includes("all-proxy-models")?(console.log("user models:",x),p=x):p&&p.includes("all-team-models")?p=i.models:p&&0===p.length&&(p=x);let g=null!==m?"$".concat(eP(Number(m),4)," limit"):"No limit",f=void 0!==n?eP(n,4):null;return console.log("spend in view user spend: ".concat(n)),(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsxs)("div",{className:"flex justify-between gap-x-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content",children:"Total Spend"}),(0,c.jsxs)("p",{className:"text-2xl text-tremor-content-strong dark:text-dark-tremor-content-strong font-semibold",children:["$",f]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content",children:"Max Budget"}),(0,c.jsx)("p",{className:"text-2xl text-tremor-content-strong dark:text-dark-tremor-content-strong font-semibold",children:g})]})]})})};let a2=e=>{let{key:s,info:t}=e;return{token:s,...t}};var a4=e=>{let{topKeys:s,accessToken:t,userID:l,userRole:a,teams:r,premiumUser:i,showTags:n=!1}=e,[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(null),[h,p]=(0,d.useState)(void 0),[g,f]=(0,d.useState)("table"),[v,y]=(0,d.useState)(new Set),_=e=>{y(s=>{let t=new Set(s);return t.has(e)?t.delete(e):t.add(e),t})},N=async e=>{if(t)try{let s=await (0,j.keyInfoV1Call)(t,e.api_key),l=a2(s);p(l),x(e.api_key),m(!0)}catch(e){console.error("Error fetching key info:",e)}},Z=()=>{m(!1),x(null),p(void 0)};d.useEffect(()=>{let e=e=>{"Escape"===e.key&&o&&Z()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[o]);let w=[{header:"Key ID",accessorKey:"api_key",cell:e=>(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.getValue(),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>N(e.row.original),children:e.getValue()?"".concat(e.getValue().slice(0,7),"..."):"-"})})})},{header:"Key Alias",accessorKey:"key_alias",cell:e=>e.getValue()||"-"}],k={header:"Spend (USD)",accessorKey:"spend",cell:e=>{let s=e.getValue();return s>0&&s<.01?"<$0.01":"$".concat(eP(s,2))}},S=n?[...w,{header:"Tags",accessorKey:"tags",cell:e=>{let s=e.getValue(),t=e.row.original.api_key,l=v.has(t);if(!s||0===s.length)return"-";let a=s.sort((e,s)=>s.usage-e.usage),r=l?a:a.slice(0,2),i=s.length>2;return(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[r.map((e,s)=>(0,c.jsx)(B.Z,{title:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Tag Name:"})," ",e.tag]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Spend:"})," ",e.usage>0&&e.usage<.01?"<$0.01":"$".concat(eP(e.usage,2))]})]}),children:(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded-full text-xs",children:[e.tag.slice(0,7),"..."]})},s)),i&&(0,c.jsx)("button",{onClick:()=>_(t),className:"ml-1 p-1 hover:bg-gray-200 rounded-full transition-colors",title:l?"Show fewer tags":"Show all tags",children:l?(0,c.jsx)(sG.Z,{className:"h-3 w-3 text-gray-500"}):(0,c.jsx)(sB.Z,{className:"h-3 w-3 text-gray-500"})})]})})}},k]:[...w,k],C=s.map(e=>({...e,display_key_alias:e.key_alias&&e.key_alias.length>10?"".concat(e.key_alias.slice(0,10),"..."):e.key_alias||"-"}));return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"mb-4 flex justify-end items-center",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>f("table"),className:"px-3 py-1 text-sm rounded-md ".concat("table"===g?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"),children:"Table View"}),(0,c.jsx)("button",{onClick:()=>f("chart"),className:"px-3 py-1 text-sm rounded-md ".concat("chart"===g?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"),children:"Chart View"})]})}),"chart"===g?(0,c.jsx)("div",{className:"relative",children:(0,c.jsx)(to.Z,{className:"mt-4 h-40 cursor-pointer hover:opacity-90",data:C,index:"display_key_alias",categories:["spend"],colors:["cyan"],yAxisWidth:120,tickGap:5,layout:"vertical",showXAxis:!1,showLegend:!1,valueFormatter:e=>e?"$".concat(eP(e,2)):"No Key Alias",onValueChange:e=>N(e),showTooltip:!0,customTooltip:e=>{var s,t;let l=null===(t=e.payload)||void 0===t?void 0:null===(s=t[0])||void 0===s?void 0:s.payload;return(0,c.jsx)("div",{className:"relative z-50 p-3 bg-black/90 shadow-lg rounded-lg text-white max-w-xs",children:(0,c.jsxs)("div",{className:"space-y-1.5",children:[(0,c.jsxs)("div",{className:"text-sm",children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Key Alias: "}),(0,c.jsx)("span",{className:"font-mono text-gray-100 break-all",children:null==l?void 0:l.key_alias})]}),(0,c.jsxs)("div",{className:"text-sm",children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Key ID: "}),(0,c.jsx)("span",{className:"font-mono text-gray-100 break-all",children:null==l?void 0:l.api_key})]}),(0,c.jsxs)("div",{className:"text-sm",children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Spend: "}),(0,c.jsxs)("span",{className:"text-white font-medium",children:["$",eP(null==l?void 0:l.spend,2)]})]})]})})}})}):(0,c.jsx)("div",{className:"border rounded-lg overflow-hidden",children:(0,c.jsx)(lN,{columns:S,data:s,renderSubComponent:()=>(0,c.jsx)(c.Fragment,{}),getRowCanExpand:()=>!1,isLoading:!1})}),o&&u&&h&&(console.log("Rendering modal with:",{isModalOpen:o,selectedKey:u,keyData:h}),(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",onClick:e=>{e.target===e.currentTarget&&Z()},children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl relative w-11/12 max-w-6xl max-h-[90vh] overflow-y-auto min-h-[750px]",children:[(0,c.jsx)("button",{onClick:Z,className:"absolute top-4 right-4 text-gray-500 hover:text-gray-700 focus:outline-none","aria-label":"Close",children:(0,c.jsx)("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M6 18L18 6M6 6l12 12"})})}),(0,c.jsx)("div",{className:"p-6 h-full",children:(0,c.jsx)(sS,{keyId:u,onClose:Z,keyData:h,accessToken:t,userID:l,userRole:a,teams:r,premiumUser:i})})]})}))]})};function a5(e){return e>=1e6?(e/1e6).toFixed(2)+"M":e>=1e3?e/1e3+"k":e.toString()}function a3(e){return 0===e?"$0":e>=1e6?"$"+e/1e6+"M":e>=1e3?"$"+e/1e3+"k":"$"+e}let a6={blue:"#3b82f6",cyan:"#06b6d4",indigo:"#6366f1",green:"#22c55e",red:"#ef4444",purple:"#8b5cf6"},a8=e=>{let{active:s,payload:t,label:l}=e;if(s&&t&&t.length){let e=e=>e.replace("metrics.","").replace(/_/g," ").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),s=(e,s)=>{let t=s.substring(s.indexOf(".")+1);if(e.metrics&&t in e.metrics)return e.metrics[t]};return(0,c.jsxs)("div",{className:"w-56 rounded-tremor-default border border-tremor-border bg-tremor-background p-2 text-tremor-default shadow-tremor-dropdown",children:[(0,c.jsx)("p",{className:"text-tremor-content-strong",children:l}),t.map(t=>{var l;let a=null===(l=t.dataKey)||void 0===l?void 0:l.toString();if(!a||!t.payload)return null;let r=s(t.payload,a),i=a.includes("spend"),n=void 0!==r?i?"$".concat(r.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})):r.toLocaleString():"N/A",o=a6[t.color]||t.color;return(0,c.jsxs)("div",{className:"flex items-center justify-between space-x-4",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full ring-2 ring-white drop-shadow-md",style:{backgroundColor:o}}),(0,c.jsx)("p",{className:"font-medium text-tremor-content dark:text-dark-tremor-content",children:e(a)})]}),(0,c.jsx)("p",{className:"font-medium text-tremor-content-emphasis dark:text-dark-tremor-content-emphasis",children:n})]},a)})]})}return null},a7=e=>{let{categories:s,colors:t}=e,l=e=>e.replace("metrics.","").replace(/_/g," ").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ");return(0,c.jsx)("div",{className:"flex items-center justify-end space-x-4",children:s.map((e,s)=>{let a=a6[t[s]]||t[s];return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full ring-4 ring-white",style:{backgroundColor:a}}),(0,c.jsx)("p",{className:"text-sm text-tremor-content dark:text-dark-tremor-content",children:l(e)})]},e)})})},a9=e=>{var s,t;let{modelName:l,metrics:a}=e;return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)(y.Z,{numItems:4,className:"gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Requests"}),(0,c.jsx)(S.Z,{children:a.total_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Successful Requests"}),(0,c.jsx)(S.Z,{children:a.total_successful_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Tokens"}),(0,c.jsx)(S.Z,{children:a.total_tokens.toLocaleString()}),(0,c.jsxs)(k.Z,{children:[Math.round(a.total_tokens/a.total_successful_requests)," avg per successful request"]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Spend"}),(0,c.jsxs)(S.Z,{children:["$",eP(a.total_spend,2)]}),(0,c.jsxs)(k.Z,{children:["$",eP(a.total_spend/a.total_successful_requests,3)," per successful request"]})]})]}),a.top_api_keys&&a.top_api_keys.length>0&&(0,c.jsxs)(G.Z,{className:"mt-4",children:[(0,c.jsx)(S.Z,{children:"Top API Keys by Spend"}),(0,c.jsx)("div",{className:"mt-3",children:(0,c.jsx)("div",{className:"grid grid-cols-1 gap-2",children:a.top_api_keys.map((e,s)=>(0,c.jsxs)("div",{className:"flex justify-between items-center p-3 bg-gray-50 rounded-lg",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:e.key_alias||"".concat(e.api_key.substring(0,10),"...")}),e.team_id&&(0,c.jsxs)(k.Z,{className:"text-xs text-gray-500",children:["Team: ",e.team_id]})]}),(0,c.jsxs)("div",{className:"text-right",children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["$",eP(e.spend,2)]}),(0,c.jsxs)(k.Z,{className:"text-xs text-gray-500",children:[e.requests.toLocaleString()," requests | ",e.tokens.toLocaleString()," tokens"]})]})]},e.api_key))})})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Total Tokens"}),(0,c.jsx)(a7,{categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"]})]}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"],valueFormatter:a5,customTooltip:a8,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Requests per day"}),(0,c.jsx)(a7,{categories:["metrics.api_requests"],colors:["blue"]})]}),(0,c.jsx)(to.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.api_requests"],colors:["blue"],valueFormatter:a5,customTooltip:a8,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Spend per day"}),(0,c.jsx)(a7,{categories:["metrics.spend"],colors:["green"]})]}),(0,c.jsx)(to.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.spend"],colors:["green"],valueFormatter:e=>"$".concat(eP(e,2))})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Success vs Failed Requests"}),(0,c.jsx)(a7,{categories:["metrics.successful_requests","metrics.failed_requests"],colors:["green","red"]})]}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.successful_requests","metrics.failed_requests"],colors:["green","red"],valueFormatter:a5,stack:!0,customTooltip:a8,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Prompt Caching Metrics"}),(0,c.jsx)(a7,{categories:["metrics.cache_read_input_tokens","metrics.cache_creation_input_tokens"],colors:["cyan","purple"]})]}),(0,c.jsxs)("div",{className:"mb-2",children:[(0,c.jsxs)(k.Z,{children:["Cache Read: ",(null===(s=a.total_cache_read_input_tokens)||void 0===s?void 0:s.toLocaleString())||0," tokens"]}),(0,c.jsxs)(k.Z,{children:["Cache Creation: ",(null===(t=a.total_cache_creation_input_tokens)||void 0===t?void 0:t.toLocaleString())||0," tokens"]})]}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.cache_read_input_tokens","metrics.cache_creation_input_tokens"],colors:["cyan","purple"],valueFormatter:a5,customTooltip:a8,showLegend:!1})]})]})]})},re=e=>{let{modelMetrics:s}=e,t=Object.keys(s).sort((e,t)=>""===e?1:""===t?-1:s[t].total_spend-s[e].total_spend),l={total_requests:0,total_successful_requests:0,total_tokens:0,total_spend:0,total_cache_read_input_tokens:0,total_cache_creation_input_tokens:0,daily_data:{}};Object.values(s).forEach(e=>{l.total_requests+=e.total_requests,l.total_successful_requests+=e.total_successful_requests,l.total_tokens+=e.total_tokens,l.total_spend+=e.total_spend,l.total_cache_read_input_tokens+=e.total_cache_read_input_tokens||0,l.total_cache_creation_input_tokens+=e.total_cache_creation_input_tokens||0,e.daily_data.forEach(e=>{l.daily_data[e.date]||(l.daily_data[e.date]={prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,spend:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0}),l.daily_data[e.date].prompt_tokens+=e.metrics.prompt_tokens,l.daily_data[e.date].completion_tokens+=e.metrics.completion_tokens,l.daily_data[e.date].total_tokens+=e.metrics.total_tokens,l.daily_data[e.date].api_requests+=e.metrics.api_requests,l.daily_data[e.date].spend+=e.metrics.spend,l.daily_data[e.date].successful_requests+=e.metrics.successful_requests,l.daily_data[e.date].failed_requests+=e.metrics.failed_requests,l.daily_data[e.date].cache_read_input_tokens+=e.metrics.cache_read_input_tokens||0,l.daily_data[e.date].cache_creation_input_tokens+=e.metrics.cache_creation_input_tokens||0})});let a=Object.entries(l.daily_data).map(e=>{let[s,t]=e;return{date:s,metrics:t}}).sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime());return(0,c.jsxs)("div",{className:"space-y-8",children:[(0,c.jsxs)("div",{className:"border rounded-lg p-4",children:[(0,c.jsx)(S.Z,{children:"Overall Usage"}),(0,c.jsxs)(y.Z,{numItems:4,className:"gap-4 mb-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Requests"}),(0,c.jsx)(S.Z,{children:l.total_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Successful Requests"}),(0,c.jsx)(S.Z,{children:l.total_successful_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Tokens"}),(0,c.jsx)(S.Z,{children:l.total_tokens.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Spend"}),(0,c.jsxs)(S.Z,{children:["$",eP(l.total_spend,2)]})]})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Total Tokens Over Time"}),(0,c.jsx)(a7,{categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"]})]}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a,index:"date",categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"],valueFormatter:a5,customTooltip:a8,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Requests Over Time"}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a,index:"date",categories:["metrics.successful_requests","metrics.failed_requests"],colors:["emerald","red"],valueFormatter:e=>e.toLocaleString(),stack:!0,customTooltip:a8,showLegend:!1})]})]})]}),(0,c.jsx)(tE.default,{defaultActiveKey:t[0],children:t.map(e=>(0,c.jsx)(tE.default.Panel,{header:(0,c.jsxs)("div",{className:"flex justify-between items-center w-full",children:[(0,c.jsx)(S.Z,{children:s[e].label||"Unknown Item"}),(0,c.jsxs)("div",{className:"flex space-x-4 text-sm text-gray-500",children:[(0,c.jsxs)("span",{children:["$",eP(s[e].total_spend,2)]}),(0,c.jsxs)("span",{children:[s[e].total_requests.toLocaleString()," requests"]})]})]}),children:(0,c.jsx)(a9,{modelName:e||"Unknown Model",metrics:s[e]})},e))})]})},rs=(e,s)=>{let t=e.metadata.key_alias||"key-hash-".concat(s),l=e.metadata.team_id;return l?"".concat(t," (team_id: ").concat(l,")"):t},rt=(e,s)=>{let t={};return e.results.forEach(e=>{Object.entries(e.breakdown[s]||{}).forEach(l=>{let[a,r]=l;t[a]||(t[a]={label:"api_keys"===s?rs(r,a):a,total_requests:0,total_successful_requests:0,total_failed_requests:0,total_tokens:0,prompt_tokens:0,completion_tokens:0,total_spend:0,total_cache_read_input_tokens:0,total_cache_creation_input_tokens:0,top_api_keys:[],daily_data:[]}),t[a].total_requests+=r.metrics.api_requests,t[a].prompt_tokens+=r.metrics.prompt_tokens,t[a].completion_tokens+=r.metrics.completion_tokens,t[a].total_tokens+=r.metrics.total_tokens,t[a].total_spend+=r.metrics.spend,t[a].total_successful_requests+=r.metrics.successful_requests,t[a].total_failed_requests+=r.metrics.failed_requests,t[a].total_cache_read_input_tokens+=r.metrics.cache_read_input_tokens||0,t[a].total_cache_creation_input_tokens+=r.metrics.cache_creation_input_tokens||0,t[a].daily_data.push({date:e.date,metrics:{prompt_tokens:r.metrics.prompt_tokens,completion_tokens:r.metrics.completion_tokens,total_tokens:r.metrics.total_tokens,api_requests:r.metrics.api_requests,spend:r.metrics.spend,successful_requests:r.metrics.successful_requests,failed_requests:r.metrics.failed_requests,cache_read_input_tokens:r.metrics.cache_read_input_tokens||0,cache_creation_input_tokens:r.metrics.cache_creation_input_tokens||0}})})}),"api_keys"!==s&&Object.entries(t).forEach(l=>{let[a,r]=l,i={};e.results.forEach(e=>{var t;let l=null===(t=e.breakdown[s])||void 0===t?void 0:t[a];l&&"api_key_breakdown"in l&&Object.entries(l.api_key_breakdown||{}).forEach(e=>{let[s,t]=e;i[s]||(i[s]={api_key:s,key_alias:t.metadata.key_alias,team_id:t.metadata.team_id,spend:0,requests:0,tokens:0}),i[s].spend+=t.metrics.spend,i[s].requests+=t.metrics.api_requests,i[s].tokens+=t.metrics.total_tokens})}),t[a].top_api_keys=Object.values(i).sort((e,s)=>s.spend-e.spend).slice(0,5)}),Object.values(t).forEach(e=>{e.daily_data.sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime())}),t};var rl=e=>{let{accessToken:s,selectedTags:t,formatAbbreviatedNumber:l}=e,[a,r]=(0,d.useState)({results:[],total_count:0,page:1,page_size:50,total_pages:0}),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(1),u=async()=>{if(s){n(!0);try{let e=await (0,j.perUserAnalyticsCall)(s,o,50,t.length>0?t:void 0);r(e)}catch(e){console.error("Failed to fetch per-user data:",e)}finally{n(!1)}}};return(0,d.useEffect)(()=>{u()},[s,t,o]),(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(S.Z,{children:"Per User Usage"}),(0,c.jsx)(sX.Z,{children:"Individual developer usage metrics"}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"User Details"}),(0,c.jsx)(ss.Z,{children:"Usage Distribution"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"User ID"}),(0,c.jsx)(sq.Z,{children:"User Email"}),(0,c.jsx)(sq.Z,{children:"User Agent"}),(0,c.jsx)(sq.Z,{className:"text-right",children:"Success Generations"}),(0,c.jsx)(sq.Z,{className:"text-right",children:"Total Tokens"}),(0,c.jsx)(sq.Z,{className:"text-right",children:"Failed Requests"}),(0,c.jsx)(sq.Z,{className:"text-right",children:"Total Cost"})]})}),(0,c.jsx)(sR.Z,{children:a.results.slice(0,10).map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-medium",children:e.user_id})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:e.user_email||"N/A"})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:e.user_agent||"Unknown"})}),(0,c.jsx)(sz.Z,{className:"text-right",children:(0,c.jsx)(k.Z,{children:l(e.successful_requests)})}),(0,c.jsx)(sz.Z,{className:"text-right",children:(0,c.jsx)(k.Z,{children:l(e.total_tokens)})}),(0,c.jsx)(sz.Z,{className:"text-right",children:(0,c.jsx)(k.Z,{children:l(e.failed_requests)})}),(0,c.jsx)(sz.Z,{className:"text-right",children:(0,c.jsxs)(k.Z,{children:["$",l(e.spend,4)]})})]},s))})]}),a.results.length>10&&(0,c.jsxs)("div",{className:"mt-4 flex justify-between items-center",children:[(0,c.jsxs)(k.Z,{className:"text-sm text-gray-500",children:["Showing 10 of ",a.total_count," results"]}),(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",onClick:()=>{o>1&&m(o-1)},disabled:1===o,children:"Previous"}),(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",onClick:()=>{o=a.total_pages,children:"Next"})]})]})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsx)(S.Z,{className:"text-lg",children:"User Usage Distribution"}),(0,c.jsx)(sX.Z,{children:"Number of users by successful request frequency"})]}),(0,c.jsx)(to.Z,{data:(()=>{let e=new Map;a.results.forEach(s=>{let t=s.user_agent||"Unknown";e.set(t,(e.get(t)||0)+1)});let s=Array.from(e.entries()).sort((e,s)=>{let[,t]=e,[,l]=s;return l-t}).slice(0,8).map(e=>{let[s]=e;return s}),t={"1-9 requests":{range:[1,9],agents:{}},"10-99 requests":{range:[10,99],agents:{}},"100-999 requests":{range:[100,999],agents:{}},"1K-9.9K requests":{range:[1e3,9999],agents:{}},"10K-99.9K requests":{range:[1e4,99999],agents:{}},"100K+ requests":{range:[1e5,1/0],agents:{}}};return a.results.forEach(e=>{let l=e.successful_requests,a=e.user_agent||"Unknown";s.includes(a)&&Object.entries(t).forEach(e=>{let[s,t]=e;l>=t.range[0]&&l<=t.range[1]&&(t.agents[a]||(t.agents[a]=0),t.agents[a]++)})}),Object.entries(t).map(e=>{let[t,l]=e,a={category:t};return s.forEach(e=>{a[e]=l.agents[e]||0}),a})})(),index:"category",categories:(()=>{let e=new Map;return a.results.forEach(s=>{let t=s.user_agent||"Unknown";e.set(t,(e.get(t)||0)+1)}),Array.from(e.entries()).sort((e,s)=>{let[,t]=e,[,l]=s;return l-t}).slice(0,8).map(e=>{let[s]=e;return s})})(),colors:["blue","green","orange","red","purple","yellow","pink","indigo"],valueFormatter:e=>"".concat(e," users"),yAxisWidth:80,showLegend:!0,stack:!0})]})]})]})]})},ra=t(49096),rr=t(53335);let{cva:ri,cx:rn,compose:ro}=(0,ra.ZD)({hooks:{onComplete:e=>(0,rr.m6)(e)}});function rc(e){var s,t;let{className:l="",...a}=e,r=(0,d.useId)();return s=()=>{let e=document.getAnimations().filter(e=>e instanceof CSSAnimation&&"spin"===e.animationName),s=e.find(e=>{var s;return(null===(s=e.effect.target)||void 0===s?void 0:s.getAttribute("data-spinner-id"))===r}),t=e.find(e=>{var s;return e.effect instanceof KeyframeEffect&&(null===(s=e.effect.target)||void 0===s?void 0:s.getAttribute("data-spinner-id"))!==r});s&&t&&(s.currentTime=t.currentTime)},t=[r],(0,d.useLayoutEffect)(s,t),(0,c.jsxs)("svg",{"data-spinner-id":r,className:rn("pointer-events-none size-12 animate-spin text-current",l),fill:"none",viewBox:"0 0 24 24",...a,children:[(0,c.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,c.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}let rd=e=>{let{isDateChanging:s=!1}=e;return(0,c.jsx)("div",{className:"flex items-center justify-center h-40",children:(0,c.jsxs)("div",{className:"flex items-center justify-center gap-3",children:[(0,c.jsx)(rc,{className:"size-5"}),(0,c.jsxs)("div",{className:"flex flex-col",children:[(0,c.jsx)("span",{className:"text-gray-600 text-sm font-medium",children:s?"Processing date selection...":"Loading chart data..."}),(0,c.jsx)("span",{className:"text-gray-400 text-xs mt-1",children:s?"This will only take a moment":"Fetching your data"})]})]})})};var rm=e=>{let{accessToken:s,userRole:t}=e,[l,a]=(0,d.useState)({results:[]}),[r,i]=(0,d.useState)({results:[]}),[n,o]=(0,d.useState)({results:[]}),[m,u]=(0,d.useState)({results:[]}),[x,h]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)([]),[b,_]=(0,d.useState)([]),[N,Z]=(0,d.useState)(!1),[w,C]=(0,d.useState)(!1),[A,T]=(0,d.useState)(!1),[E,L]=(0,d.useState)(!1),[P,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)(!1),F=new Date,R=async()=>{if(s){Z(!0);try{let e=await (0,j.tagDistinctCall)(s);v(e.results.map(e=>e.tag))}catch(e){console.error("Failed to fetch available tags:",e)}finally{Z(!1)}}},z=async()=>{if(s){C(!0);try{let e=await (0,j.tagDauCall)(s,F,p||void 0,b.length>0?b:void 0);a(e)}catch(e){console.error("Failed to fetch DAU data:",e)}finally{C(!1)}}},U=async()=>{if(s){T(!0);try{let e=await (0,j.tagWauCall)(s,F,p||void 0,b.length>0?b:void 0);i(e)}catch(e){console.error("Failed to fetch WAU data:",e)}finally{T(!1)}}},q=async()=>{if(s){L(!0);try{let e=await (0,j.tagMauCall)(s,F,p||void 0,b.length>0?b:void 0);o(e)}catch(e){console.error("Failed to fetch MAU data:",e)}finally{L(!1)}}},V=async()=>{if(s&&x.from&&x.to){M(!0);try{let e=await (0,j.userAgentSummaryCall)(s,x.from,x.to,b.length>0?b:void 0);u(e)}catch(e){console.error("Failed to fetch user agent summary data:",e)}finally{M(!1),D(!1)}}};(0,d.useEffect)(()=>{R()},[s]),(0,d.useEffect)(()=>{if(!s)return;let e=setTimeout(()=>{z(),U(),q()},50);return()=>clearTimeout(e)},[s,p,b]),(0,d.useEffect)(()=>{if(!x.from||!x.to)return;let e=setTimeout(()=>{V()},50);return()=>clearTimeout(e)},[s,x,b]);let K=e=>e.startsWith("User-Agent: ")?e.replace("User-Agent: ",""):e,H=e=>e.length>15?e.substring(0,15)+"...":e,Y=e=>Object.entries(e.reduce((e,s)=>(e[s.tag]=(e[s.tag]||0)+s.active_users,e),{})).sort((e,s)=>{let[,t]=e,[,l]=s;return l-t}).map(e=>{let[s]=e;return s}),J=Y(l.results).slice(0,10),W=Y(r.results).slice(0,10),$=Y(n.results).slice(0,10),Q=(()=>{let e=[],s=new Date;for(let t=6;t>=0;t--){let l=new Date(s);l.setDate(l.getDate()-t);let a={date:l.toISOString().split("T")[0]};J.forEach(e=>{a[K(e)]=0}),e.push(a)}return l.results.forEach(s=>{let t=K(s.tag),l=e.find(e=>e.date===s.date);l&&(l[t]=s.active_users)}),e})(),X=(()=>{let e=[];for(let s=1;s<=7;s++){let t={week:"Week ".concat(s)};W.forEach(e=>{t[K(e)]=0}),e.push(t)}return r.results.forEach(s=>{let t=K(s.tag),l=s.date.match(/Week (\d+)/);if(l){let a="Week ".concat(l[1]),r=e.find(e=>e.week===a);r&&(r[t]=s.active_users)}}),e})(),ee=(()=>{let e=[];for(let s=1;s<=7;s++){let t={month:"Month ".concat(s)};$.forEach(e=>{t[K(e)]=0}),e.push(t)}return n.results.forEach(s=>{let t=K(s.tag),l=s.date.match(/Month (\d+)/);if(l){let a="Month ".concat(l[1]),r=e.find(e=>e.month===a);r&&(r[t]=s.active_users)}}),e})(),es=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e>=1e8||e>=1e7||e>=1e6?(e/1e6).toFixed(s)+"M":e>=1e4?(e/1e3).toFixed(s)+"K":e>=1e3?(e/1e3).toFixed(s)+"K":e.toFixed(s)};return(0,c.jsxs)("div",{className:"space-y-6 mt-6",children:[(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-start",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Summary by User Agent"}),(0,c.jsx)(sX.Z,{children:"Performance metrics for different user agents"})]}),(0,c.jsxs)("div",{className:"w-96",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium block mb-2",children:"Filter by User Agents"}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"All User Agents",value:b,onChange:_,style:{width:"100%"},showSearch:!0,allowClear:!0,loading:N,optionFilterProp:"label",className:"rounded-md",maxTagCount:"responsive",children:f.map(e=>{let s=K(e),t=s.length>50?"".concat(s.substring(0,50),"..."):s;return(0,c.jsx)(I.default.Option,{value:e,label:t,title:s,children:t},e)})})]})]}),(0,c.jsx)(a0,{value:x,onValueChange:e=>{D(!0),M(!0),h(e)}}),P?(0,c.jsx)(rd,{isDateChanging:O}):(0,c.jsxs)(y.Z,{numItems:4,className:"gap-4",children:[(m.results||[]).slice(0,4).map((e,s)=>{let t=K(e.tag),l=H(t);return(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(B.Z,{title:t,placement:"top",children:(0,c.jsx)(S.Z,{className:"truncate",children:l})}),(0,c.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Success Requests"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:es(e.successful_requests)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Tokens"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:es(e.total_tokens)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Cost"}),(0,c.jsxs)(aE.Z,{className:"text-lg",children:["$",es(e.total_spend,4)]})]})]})]},s)}),Array.from({length:Math.max(0,4-(m.results||[]).length)}).map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"No Data"}),(0,c.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Success Requests"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Tokens"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Cost"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:"-"})]})]})]},"empty-".concat(s)))]})]})}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"DAU/WAU/MAU"}),(0,c.jsx)(ss.Z,{children:"Per User Usage (Last 30 Days)"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(S.Z,{children:"DAU, WAU & MAU per Agent"}),(0,c.jsx)(sX.Z,{children:"Active users across different time periods"})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"DAU"}),(0,c.jsx)(ss.Z,{children:"WAU"}),(0,c.jsx)(ss.Z,{children:"MAU"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(S.Z,{className:"text-lg",children:"Daily Active Users - Last 7 Days"})}),w?(0,c.jsx)(rd,{isDateChanging:!1}):(0,c.jsx)(to.Z,{data:Q,index:"date",categories:J.map(K),valueFormatter:e=>es(e),yAxisWidth:60,showLegend:!0,stack:!0})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(S.Z,{className:"text-lg",children:"Weekly Active Users - Last 7 Weeks"})}),A?(0,c.jsx)(rd,{isDateChanging:!1}):(0,c.jsx)(to.Z,{data:X,index:"week",categories:W.map(K),valueFormatter:e=>es(e),yAxisWidth:60,showLegend:!0,stack:!0})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(S.Z,{className:"text-lg",children:"Monthly Active Users - Last 7 Months"})}),E?(0,c.jsx)(rd,{isDateChanging:!1}):(0,c.jsx)(to.Z,{data:ee,index:"month",categories:$.map(K),valueFormatter:e=>es(e),yAxisWidth:60,showLegend:!0,stack:!0})]})]})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(rl,{accessToken:s,selectedTags:b,formatAbbreviatedNumber:es})})]})]})})]})},ru=e=>{let{accessToken:s,entityType:t,entityId:l,userID:a,userRole:r,entityList:i,premiumUser:n}=e,[o,m]=(0,d.useState)({results:[],metadata:{total_spend:0,total_api_requests:0,total_successful_requests:0,total_failed_requests:0,total_tokens:0}}),u=rt(o,"models"),x=rt(o,"api_keys"),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)({from:new Date(Date.now()-24192e5),to:new Date}),b=async()=>{if(!s||!g.from||!g.to)return;let e=new Date(g.from),l=new Date(g.to);if("tag"===t)m(await (0,j.tagDailyActivityCall)(s,e,l,1,h.length>0?h:null));else if("team"===t)m(await (0,j.teamDailyActivityCall)(s,e,l,1,h.length>0?h:null));else throw Error("Invalid entity type")};(0,d.useEffect)(()=>{b()},[s,g,l,h]);let _=()=>{let e={};return o.results.forEach(s=>{Object.entries(s.breakdown.providers||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={provider:t,spend:0,requests:0,successful_requests:0,failed_requests:0,tokens:0});try{e[t].spend+=l.metrics.spend,e[t].requests+=l.metrics.api_requests,e[t].successful_requests+=l.metrics.successful_requests,e[t].failed_requests+=l.metrics.failed_requests,e[t].tokens+=l.metrics.total_tokens}catch(e){console.error("Error processing provider ".concat(t,": ").concat(e))}})}),Object.values(e).filter(e=>e.spend>0).sort((e,s)=>s.spend-e.spend)},N=e=>0===h.length?e:e.filter(e=>h.includes(e.metadata.id)),Z=()=>{let e={};return o.results.forEach(s=>{Object.entries(s.breakdown.entities||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{alias:l.metadata.team_alias||t,id:t}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests,e[t].metrics.failed_requests+=l.metrics.failed_requests,e[t].metrics.total_tokens+=l.metrics.total_tokens})}),N(Object.values(e).sort((e,s)=>s.metrics.spend-e.metrics.spend))};return(0,c.jsxs)("div",{style:{width:"100%"},children:[(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 w-full mb-4",children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(a0,{value:g,onValueChange:f})}),i&&i.length>0&&(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(k.Z,{children:["Filter by ","tag"===t?"Tags":"Teams"]}),(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select ".concat("tag"===t?"tags":"teams"," to filter..."),value:h,onChange:p,options:(()=>{if(i)return i})(),className:"mt-2",allowClear:!0})]})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"solid",className:"mt-1",children:[(0,c.jsx)(ss.Z,{children:"Cost"}),(0,c.jsx)(ss.Z,{children:"Model Activity"}),(0,c.jsx)(ss.Z,{children:"Key Activity"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 w-full",children:[(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(S.Z,{children:["tag"===t?"Tag":"Team"," Spend Overview"]}),(0,c.jsxs)(y.Z,{numItems:5,className:"gap-4 mt-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Spend"}),(0,c.jsxs)(k.Z,{className:"text-2xl font-bold mt-2",children:["$",eP(o.metadata.total_spend,2)]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:o.metadata.total_api_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Successful Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-green-600",children:o.metadata.total_successful_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Failed Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-red-600",children:o.metadata.total_failed_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Tokens"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:o.metadata.total_tokens.toLocaleString()})]})]})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Daily Spend"}),(0,c.jsx)(to.Z,{data:[...o.results].sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime()),index:"date",categories:["metrics.spend"],colors:["cyan"],valueFormatter:a3,yAxisWidth:100,showLegend:!1,customTooltip:e=>{let{payload:s,active:l}=e;if(!l||!(null==s?void 0:s[0]))return null;let a=s[0].payload,r=Object.keys(a.breakdown.entities||{}).length;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:a.date}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Total Spend: $",eP(a.metrics.spend,2)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Total Requests: ",a.metrics.api_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Successful: ",a.metrics.successful_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Failed: ",a.metrics.failed_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Total Tokens: ",a.metrics.total_tokens]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["tag"===t?"Total Tags":"Total Teams",": ",r]}),(0,c.jsxs)("div",{className:"mt-2 border-t pt-2",children:[(0,c.jsxs)("p",{className:"font-semibold",children:["Spend by ","tag"===t?"Tag":"Team",":"]}),Object.entries(a.breakdown.entities||{}).sort((e,s)=>{let[,t]=e,[,l]=s,a=t.metrics.spend;return l.metrics.spend-a}).slice(0,5).map(e=>{let[s,t]=e;return(0,c.jsxs)("p",{className:"text-sm text-gray-600",children:[t.metadata.team_alias||s,": $",eP(t.metrics.spend,2)]},s)}),r>5&&(0,c.jsxs)("p",{className:"text-sm text-gray-500 italic",children:["...and ",r-5," more"]})]})]})}})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-col space-y-2",children:[(0,c.jsxs)(S.Z,{children:["Spend Per ","tag"===t?"Tag":"Team"]}),(0,c.jsx)(sX.Z,{className:"text-xs",children:"Showing Top 5 by Spend"}),(0,c.jsxs)("div",{className:"flex items-center text-sm text-gray-500",children:[(0,c.jsxs)("span",{children:["Get Started by Tracking cost per ",t," "]}),(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/enterprise#spend-tracking",className:"text-blue-500 hover:text-blue-700 ml-1",children:"here"})]})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-6",children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(to.Z,{className:"mt-4 h-52",data:Z().slice(0,5).map(e=>({...e,metadata:{...e.metadata,alias_display:e.metadata.alias&&e.metadata.alias.length>15?"".concat(e.metadata.alias.slice(0,15),"..."):e.metadata.alias}})),index:"metadata.alias_display",categories:["metrics.spend"],colors:["cyan"],valueFormatter:a3,layout:"vertical",showLegend:!1,yAxisWidth:150,customTooltip:e=>{let{payload:s,active:t}=e;if(!t||!(null==s?void 0:s[0]))return null;let l=s[0].payload;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:l.metadata.alias}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Spend: $",eP(l.metrics.spend,4)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Requests: ",l.metrics.api_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-green-600",children:["Successful: ",l.metrics.successful_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-red-600",children:["Failed: ",l.metrics.failed_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Tokens: ",l.metrics.total_tokens.toLocaleString()]})]})}})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)("div",{className:"h-52 overflow-y-auto",children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"tag"===t?"Tag":"Team"}),(0,c.jsx)(sq.Z,{children:"Spend"}),(0,c.jsx)(sq.Z,{className:"text-green-600",children:"Successful"}),(0,c.jsx)(sq.Z,{className:"text-red-600",children:"Failed"}),(0,c.jsx)(sq.Z,{children:"Tokens"})]})}),(0,c.jsx)(sR.Z,{children:Z().filter(e=>e.metrics.spend>0).map(e=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e.metadata.alias}),(0,c.jsxs)(sz.Z,{children:["$",eP(e.metrics.spend,4)]}),(0,c.jsx)(sz.Z,{className:"text-green-600",children:e.metrics.successful_requests.toLocaleString()}),(0,c.jsx)(sz.Z,{className:"text-red-600",children:e.metrics.failed_requests.toLocaleString()}),(0,c.jsx)(sz.Z,{children:e.metrics.total_tokens.toLocaleString()})]},e.metadata.id))})]})})})]})]})})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Top API Keys"}),(0,c.jsx)(a4,{topKeys:(()=>{console.log("debugTags",{spendData:o});let e={};return o.results.forEach(s=>{let{breakdown:t}=s,{entities:l}=t;console.log("debugTags",{entities:l});let a=Object.keys(l).reduce((e,s)=>{let{api_key_breakdown:t}=l[s];return Object.keys(t).forEach(l=>{let a={tag:s,usage:t[l].metrics.spend};e[l]?e[l].push(a):e[l]=[a]}),e},{});console.log("debugTags",{tagDictionary:a}),Object.entries(s.breakdown.api_keys||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{key_alias:l.metadata.key_alias,team_id:l.metadata.team_id||null,tags:a[t]||[]}},console.log("debugTags",{keySpend:e})),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests,e[t].metrics.failed_requests+=l.metrics.failed_requests,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{api_key:s,key_alias:t.metadata.key_alias||"-",tags:t.metadata.tags||"-",spend:t.metrics.spend}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),accessToken:s,userID:a,userRole:r,teams:null,premiumUser:n,showTags:"tag"===t})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Top Models"}),(0,c.jsx)(to.Z,{className:"mt-4 h-40",data:(()=>{let e={};return o.results.forEach(s=>{Object.entries(s.breakdown.models||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={spend:0,requests:0,successful_requests:0,failed_requests:0,tokens:0});try{e[t].spend+=l.metrics.spend}catch(e){console.error("Error adding spend for ".concat(t,": ").concat(e,", got metrics: ").concat(JSON.stringify(l)))}e[t].requests+=l.metrics.api_requests,e[t].successful_requests+=l.metrics.successful_requests,e[t].failed_requests+=l.metrics.failed_requests,e[t].tokens+=l.metrics.total_tokens})}),Object.entries(e).map(e=>{let[s,t]=e;return{key:s,...t}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),index:"display_key",categories:["spend"],colors:["cyan"],valueFormatter:e=>"$".concat(eP(e,2)),layout:"vertical",yAxisWidth:200,showLegend:!1})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsx)(S.Z,{children:"Provider Usage"}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(a$.Z,{className:"mt-4 h-40",data:_(),index:"provider",category:"spend",valueFormatter:e=>"$".concat(eP(e,2)),colors:["cyan","blue","indigo","violet","purple"]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Provider"}),(0,c.jsx)(sq.Z,{children:"Spend"}),(0,c.jsx)(sq.Z,{className:"text-green-600",children:"Successful"}),(0,c.jsx)(sq.Z,{className:"text-red-600",children:"Failed"}),(0,c.jsx)(sq.Z,{children:"Tokens"})]})}),(0,c.jsx)(sR.Z,{children:_().map(e=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[e.provider&&(0,c.jsx)("img",{src:(0,s0.dr)(e.provider).logo,alt:"".concat(e.provider," logo"),className:"w-4 h-4",onError:s=>{let t=s.target,l=t.parentElement;if(l){var a;let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=(null===(a=e.provider)||void 0===a?void 0:a.charAt(0))||"-",l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e.provider})]})}),(0,c.jsxs)(sz.Z,{children:["$",eP(e.spend,2)]}),(0,c.jsx)(sz.Z,{className:"text-green-600",children:e.successful_requests.toLocaleString()}),(0,c.jsx)(sz.Z,{className:"text-red-600",children:e.failed_requests.toLocaleString()}),(0,c.jsx)(sz.Z,{children:e.tokens.toLocaleString()})]},e.provider))})]})})]})]})})})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:u})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:x})})]})]})]})},rx=e=>{let{isOpen:s,onClose:t,accessToken:l}=e,[a]=A.Z.useForm(),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)("cloudzero"),[p,g]=(0,d.useState)(!1);(0,d.useEffect)(()=>{s&&l&&j()},[s,l]);let j=async()=>{u(!0);try{let e=await fetch("/cloudzero/settings",{method:"GET",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"}});if(e.ok){let s=await e.json();o(s),a.setFieldsValue({connection_id:s.connection_id})}else if(404!==e.status){let s=await e.json();eo.Z.fromBackend("Failed to load existing settings: ".concat(s.error||"Unknown error"))}}catch(e){console.error("Error loading CloudZero settings:",e),eo.Z.fromBackend("Failed to load existing settings")}finally{u(!1)}},f=async e=>{if(!l){eo.Z.fromBackend("No access token available");return}i(!0);try{let s={...e,timezone:"UTC"},t=await fetch(n?"/cloudzero/settings":"/cloudzero/init",{method:n?"PUT":"POST",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify(s)}),a=await t.json();if(t.ok)return eo.Z.success(a.message||"CloudZero settings saved successfully"),o({api_key_masked:e.api_key.substring(0,4)+"****"+e.api_key.slice(-4),connection_id:e.connection_id,status:"configured"}),!0;return eo.Z.fromBackend(a.error||"Failed to save CloudZero settings"),!1}catch(e){return console.error("Error saving CloudZero settings:",e),eo.Z.fromBackend("Failed to save CloudZero settings"),!1}finally{i(!1)}},v=async()=>{if(!l){eo.Z.fromBackend("No access token available");return}g(!0);try{let e=await fetch("/cloudzero/export",{method:"POST",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify({limit:1e5,operation:"replace_hourly"})}),s=await e.json();e.ok?(eo.Z.success(s.message||"Export to CloudZero completed successfully"),t()):eo.Z.fromBackend(s.error||"Failed to export to CloudZero")}catch(e){console.error("Error exporting to CloudZero:",e),eo.Z.fromBackend("Failed to export to CloudZero")}finally{g(!1)}},y=async()=>{g(!0);try{eo.Z.info("CSV export functionality coming soon!"),t()}catch(e){console.error("Error exporting CSV:",e),eo.Z.fromBackend("Failed to export CSV")}finally{g(!1)}},N=async()=>{if("cloudzero"===x){if(!n){let e=await a.validateFields();if(!await f(e))return}await v()}else await y()},Z=()=>{a.resetFields(),h("cloudzero"),o(null),t()},w=[{value:"cloudzero",label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("img",{src:"/cloudzero.png",alt:"CloudZero",className:"w-5 h-5",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)("span",{children:"Export to CloudZero"})]})},{value:"csv",label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})}),(0,c.jsx)("span",{children:"Export to CSV"})]})}];return(0,c.jsx)(T.Z,{title:"Export Data",open:s,onCancel:Z,footer:null,width:600,destroyOnClose:!0,children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium mb-2 block",children:"Export Destination"}),(0,c.jsx)(I.default,{value:x,onChange:h,options:w,className:"w-full",size:"large"})]}),"cloudzero"===x&&(0,c.jsx)("div",{children:m?(0,c.jsx)("div",{className:"flex justify-center py-8",children:(0,c.jsx)(eF.Z,{size:"large"})}):(0,c.jsxs)(c.Fragment,{children:[n&&(0,c.jsx)(l$.Z,{title:"Existing CloudZero Configuration",icon:()=>(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}),color:"green",className:"mb-4",children:(0,c.jsxs)(k.Z,{children:["API Key: ",n.api_key_masked,(0,c.jsx)("br",{}),"Connection ID: ",n.connection_id]})}),!n&&(0,c.jsxs)(A.Z,{form:a,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"CloudZero API Key",name:"api_key",rules:[{required:!0,message:"Please enter your CloudZero API key"}],children:(0,c.jsx)(_.Z,{type:"password",placeholder:"Enter your CloudZero API key"})}),(0,c.jsx)(A.Z.Item,{label:"Connection ID",name:"connection_id",rules:[{required:!0,message:"Please enter the CloudZero connection ID"}],children:(0,c.jsx)(_.Z,{placeholder:"Enter CloudZero connection ID"})})]})]})}),"csv"===x&&(0,c.jsx)(l$.Z,{title:"CSV Export",icon:()=>(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})}),color:"blue",children:(0,c.jsx)(k.Z,{children:"Export your usage data as a CSV file for analysis in spreadsheet applications."})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2 pt-4",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:Z,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:N,loading:r||p,disabled:r||p,children:"cloudzero"===x?"Export to CloudZero":"Export CSV"})]})]})})},rh=e=>{var s,t,l,a,r,i,n,o,m,u;let{accessToken:x,userRole:h,userID:p,teams:g,premiumUser:f}=e,[b,_]=(0,d.useState)({results:[],metadata:{}}),[N,Z]=(0,d.useState)(!1),[w,C]=(0,d.useState)(!1),I=(0,d.useMemo)(()=>new Date(Date.now()-6048e5),[]),A=(0,d.useMemo)(()=>new Date,[]),[T,E]=(0,d.useState)({from:I,to:A}),[L,P]=(0,d.useState)([]),[M,O]=(0,d.useState)("groups"),[D,F]=(0,d.useState)(!1),R=async()=>{x&&P(Object.values(await (0,j.tagListCall)(x)).map(e=>({label:e.name,value:e.name})))};(0,d.useEffect)(()=>{R()},[x]);let z=(null===(s=b.metadata)||void 0===s?void 0:s.total_spend)||0,U=()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.providers||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{},api_key_breakdown:{}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests||0,e[t].metrics.failed_requests+=l.metrics.failed_requests||0,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{provider:s,spend:t.metrics.spend,requests:t.metrics.api_requests,successful_requests:t.metrics.successful_requests,failed_requests:t.metrics.failed_requests,tokens:t.metrics.total_tokens}})},q=(0,d.useCallback)(async()=>{if(!x||!T.from||!T.to)return;Z(!0);let e=new Date(T.from),s=new Date(T.to);try{try{let t=await (0,j.userDailyActivityAggregatedCall)(x,e,s);_(t);return}catch(e){}let t=await (0,j.userDailyActivityCall)(x,e,s);if(t.metadata.total_pages<=1){_(t);return}let l=[...t.results],a={...t.metadata};for(let r=2;r<=t.metadata.total_pages;r++){let t=await (0,j.userDailyActivityCall)(x,e,s,r);l.push(...t.results),t.metadata&&(a.total_spend+=t.metadata.total_spend||0,a.total_api_requests+=t.metadata.total_api_requests||0,a.total_successful_requests+=t.metadata.total_successful_requests||0,a.total_failed_requests+=t.metadata.total_failed_requests||0,a.total_tokens+=t.metadata.total_tokens||0)}_({results:l,metadata:a})}catch(e){console.error("Error fetching user spend data:",e)}finally{Z(!1),C(!1)}},[x,T.from,T.to]),V=(0,d.useCallback)(e=>{C(!0),Z(!0),E(e)},[]);(0,d.useEffect)(()=>{if(!T.from||!T.to)return;let e=setTimeout(()=>{q()},50);return()=>clearTimeout(e)},[q]);let B=rt(b,"models"),K=rt(b,"api_keys"),H=rt(b,"mcp_servers");return(0,c.jsxs)("div",{style:{width:"100%"},className:"p-8 relative",children:[(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"solid",className:"mt-1",children:[eI.ZL.includes(h||"")?(0,c.jsx)(ss.Z,{children:"Global Usage"}):(0,c.jsx)(ss.Z,{children:"Your Usage"}),(0,c.jsx)(ss.Z,{children:"Team Usage"}),eI.ZL.includes(h||"")?(0,c.jsx)(ss.Z,{children:"Tag Usage"}):(0,c.jsx)(c.Fragment,{}),eI.ZL.includes(h||"")?(0,c.jsx)(ss.Z,{children:"User Agent Activity"}):(0,c.jsx)(c.Fragment,{})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)(y.Z,{numItems:2,className:"gap-10 w-1/2 mb-4",children:(0,c.jsx)(v.Z,{children:(0,c.jsx)(a0,{value:T,onValueChange:V})})}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"solid",className:"mt-1",children:[(0,c.jsx)(ss.Z,{children:"Cost"}),(0,c.jsx)(ss.Z,{children:"Model Activity"}),(0,c.jsx)(ss.Z,{children:"Key Activity"}),(0,c.jsx)(ss.Z,{children:"MCP Server Activity"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 w-full",children:[(0,c.jsxs)(v.Z,{numColSpan:2,children:[(0,c.jsxs)(k.Z,{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content mb-2 mt-2 text-lg",children:["Project Spend"," ",new Date().toLocaleString("default",{month:"long"})," ","1 - ",new Date(new Date().getFullYear(),new Date().getMonth()+1,0).getDate()]}),(0,c.jsx)(a1,{userID:p,userRole:h,accessToken:x,userSpend:z,selectedTeam:null,userMaxBudget:null})]}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Usage Metrics"}),(0,c.jsxs)(y.Z,{numItems:5,className:"gap-4 mt-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:(null===(l=b.metadata)||void 0===l?void 0:null===(t=l.total_api_requests)||void 0===t?void 0:t.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Successful Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-green-600",children:(null===(r=b.metadata)||void 0===r?void 0:null===(a=r.total_successful_requests)||void 0===a?void 0:a.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Failed Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-red-600",children:(null===(n=b.metadata)||void 0===n?void 0:null===(i=n.total_failed_requests)||void 0===i?void 0:i.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Tokens"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:(null===(m=b.metadata)||void 0===m?void 0:null===(o=m.total_tokens)||void 0===o?void 0:o.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Average Cost per Request"}),(0,c.jsxs)(k.Z,{className:"text-2xl font-bold mt-2",children:["$",eP((z||0)/((null===(u=b.metadata)||void 0===u?void 0:u.total_api_requests)||1),4)]})]})]})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Daily Spend"}),N?(0,c.jsx)(rd,{isDateChanging:w}):(0,c.jsx)(to.Z,{data:[...b.results].sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime()),index:"date",categories:["metrics.spend"],colors:["cyan"],valueFormatter:a3,yAxisWidth:100,showLegend:!1,customTooltip:e=>{let{payload:s,active:t}=e;if(!t||!(null==s?void 0:s[0]))return null;let l=s[0].payload;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:l.date}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Spend: $",eP(l.metrics.spend,2)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Requests: ",l.metrics.api_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Successful: ",l.metrics.successful_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Failed: ",l.metrics.failed_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Tokens: ",l.metrics.total_tokens]})]})}})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)(S.Z,{children:"Top API Keys"}),(0,c.jsx)(a4,{topKeys:(()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.api_keys||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{key_alias:l.metadata.key_alias,team_id:null,tags:l.metadata.tags||[]}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests,e[t].metrics.failed_requests+=l.metrics.failed_requests,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),console.log("debugTags",{keySpend:e,userSpendData:b}),Object.entries(e).map(e=>{let[s,t]=e;return{api_key:s,key_alias:t.metadata.key_alias||"-",tags:t.metadata.tags||[],spend:t.metrics.spend}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),accessToken:x,userID:p,userRole:h,teams:null,premiumUser:f})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"groups"===M?"Top Public Model Names":"Top Litellm Models"}),(0,c.jsxs)("div",{className:"flex bg-gray-100 rounded-lg p-1",children:[(0,c.jsx)("button",{className:"px-3 py-1 text-sm rounded-md transition-colors ".concat("groups"===M?"bg-white shadow-sm text-gray-900":"text-gray-600 hover:text-gray-900"),onClick:()=>O("groups"),children:"Public Model Name"}),(0,c.jsx)("button",{className:"px-3 py-1 text-sm rounded-md transition-colors ".concat("individual"===M?"bg-white shadow-sm text-gray-900":"text-gray-600 hover:text-gray-900"),onClick:()=>O("individual"),children:"Litellm Model Name"})]})]}),N?(0,c.jsx)(rd,{isDateChanging:w}):(0,c.jsx)(to.Z,{className:"mt-4 h-40",data:"groups"===M?(()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.model_groups||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{},api_key_breakdown:{}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests||0,e[t].metrics.failed_requests+=l.metrics.failed_requests||0,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{key:s,spend:t.metrics.spend,requests:t.metrics.api_requests,successful_requests:t.metrics.successful_requests,failed_requests:t.metrics.failed_requests,tokens:t.metrics.total_tokens}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})():(()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.models||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{},api_key_breakdown:{}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests||0,e[t].metrics.failed_requests+=l.metrics.failed_requests||0,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{key:s,spend:t.metrics.spend,requests:t.metrics.api_requests,successful_requests:t.metrics.successful_requests,failed_requests:t.metrics.failed_requests,tokens:t.metrics.total_tokens}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),index:"key",categories:["spend"],colors:["cyan"],valueFormatter:a3,layout:"vertical",yAxisWidth:200,showLegend:!1,customTooltip:e=>{let{payload:s,active:t}=e;if(!t||!(null==s?void 0:s[0]))return null;let l=s[0].payload;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:l.key}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Spend: $",eP(l.spend,2)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Total Requests: ",l.requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-green-600",children:["Successful: ",l.successful_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-red-600",children:["Failed: ",l.failed_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Tokens: ",l.tokens.toLocaleString()]})]})}})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(S.Z,{children:"Spend by Provider"})}),N?(0,c.jsx)(rd,{isDateChanging:w}):(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(a$.Z,{className:"mt-4 h-40",data:U(),index:"provider",category:"spend",valueFormatter:e=>"$".concat(eP(e,2)),colors:["cyan"]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Provider"}),(0,c.jsx)(sq.Z,{children:"Spend"}),(0,c.jsx)(sq.Z,{className:"text-green-600",children:"Successful"}),(0,c.jsx)(sq.Z,{className:"text-red-600",children:"Failed"}),(0,c.jsx)(sq.Z,{children:"Tokens"})]})}),(0,c.jsx)(sR.Z,{children:U().filter(e=>e.spend>0).map(e=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[e.provider&&(0,c.jsx)("img",{src:(0,s0.dr)(e.provider).logo,alt:"".concat(e.provider," logo"),className:"w-4 h-4",onError:s=>{let t=s.target,l=t.parentElement;if(l){var a;let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=(null===(a=e.provider)||void 0===a?void 0:a.charAt(0))||"-",l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e.provider})]})}),(0,c.jsxs)(sz.Z,{children:["$",eP(e.spend,2)]}),(0,c.jsx)(sz.Z,{className:"text-green-600",children:e.successful_requests.toLocaleString()}),(0,c.jsx)(sz.Z,{className:"text-red-600",children:e.failed_requests.toLocaleString()}),(0,c.jsx)(sz.Z,{children:e.tokens.toLocaleString()})]},e.provider))})]})})]})]})})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:B})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:K})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:H})})]})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(ru,{accessToken:x,entityType:"team",userID:p,userRole:h,entityList:(null==g?void 0:g.map(e=>({label:e.team_alias,value:e.team_id})))||null,premiumUser:f})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(ru,{accessToken:x,entityType:"tag",userID:p,userRole:h,entityList:L,premiumUser:f})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(rm,{accessToken:x,userRole:h})})]})]}),(0,c.jsx)(rx,{isOpen:D,onClose:()=>F(!1),accessToken:x})]})},rp=e=>{let{proxySettings:s}=e,t="";return s&&s.PROXY_BASE_URL&&void 0!==s.PROXY_BASE_URL&&(t=s.PROXY_BASE_URL),(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(y.Z,{className:"gap-2 p-8 h-[80vh] w-full mt-2",children:(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsx)("p",{className:"text-2xl text-tremor-content-strong dark:text-dark-tremor-content-strong font-semibold",children:"OpenAI Compatible Proxy: API Reference"}),(0,c.jsxs)(k.Z,{className:"mt-2 mb-2",children:["LiteLLM is OpenAI Compatible. This means your API Key works with the OpenAI SDK. Just replace the base_url to point to your litellm proxy. Example Below"," "]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{children:[(0,c.jsx)(ss.Z,{children:"OpenAI Python SDK"}),(0,c.jsx)(ss.Z,{children:"LlamaIndex"}),(0,c.jsx)(ss.Z,{children:"Langchain Py"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"python",children:'\nimport openai\nclient = openai.OpenAI(\n api_key="your_api_key",\n base_url="'.concat(t,'" # LiteLLM Proxy is OpenAI compatible, Read More: https://docs.litellm.ai/docs/proxy/user_keys\n)\n\nresponse = client.chat.completions.create(\n model="gpt-3.5-turbo", # model to send to the proxy\n messages = [\n {\n "role": "user",\n "content": "this is a test request, write a short poem"\n }\n ]\n)\n\nprint(response)\n ')})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"python",children:'\nimport os, dotenv\n\nfrom llama_index.llms import AzureOpenAI\nfrom llama_index.embeddings import AzureOpenAIEmbedding\nfrom llama_index import VectorStoreIndex, SimpleDirectoryReader, ServiceContext\n\nllm = AzureOpenAI(\n engine="azure-gpt-3.5", # model_name on litellm proxy\n temperature=0.0,\n azure_endpoint="'.concat(t,'", # litellm proxy endpoint\n api_key="sk-1234", # litellm proxy API Key\n api_version="2023-07-01-preview",\n)\n\nembed_model = AzureOpenAIEmbedding(\n deployment_name="azure-embedding-model",\n azure_endpoint="').concat(t,'",\n api_key="sk-1234",\n api_version="2023-07-01-preview",\n)\n\n\ndocuments = SimpleDirectoryReader("llama_index_data").load_data()\nservice_context = ServiceContext.from_defaults(llm=llm, embed_model=embed_model)\nindex = VectorStoreIndex.from_documents(documents, service_context=service_context)\n\nquery_engine = index.as_query_engine()\nresponse = query_engine.query("What did the author do growing up?")\nprint(response)\n\n ')})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"python",children:'\nfrom langchain.chat_models import ChatOpenAI\nfrom langchain.prompts.chat import (\n ChatPromptTemplate,\n HumanMessagePromptTemplate,\n SystemMessagePromptTemplate,\n)\nfrom langchain.schema import HumanMessage, SystemMessage\n\nchat = ChatOpenAI(\n openai_api_base="'.concat(t,'",\n model = "gpt-3.5-turbo",\n temperature=0.1\n)\n\nmessages = [\n SystemMessage(\n content="You are a helpful assistant that im using to make a test request to."\n ),\n HumanMessage(\n content="test from litellm. tell me why it\'s amazing in 1 sentence"\n ),\n]\nresponse = chat(messages)\n\nprint(response)\n\n ')})})]})]})]})})})},rg=t(243),rj=t(93837);async function rf(e,s,t,l,a,r,i,n,o,c,d,m,u,x){console.log=function(){},console.log("isLocal:",!1);let h=(0,j.getProxyBaseUrl)(),p={};a&&a.length>0&&(p["x-litellm-tags"]=a.join(","));let g=new am.ZP.OpenAI({apiKey:l,baseURL:h,dangerouslyAllowBrowser:!0,defaultHeaders:p});try{let a;let p=Date.now(),j=!1,k=u&&u.length>0?[{type:"mcp",server_label:"litellm",server_url:"".concat(h,"/mcp"),require_approval:"never",allowed_tools:u,headers:{"x-litellm-api-key":"Bearer ".concat(l)}}]:void 0;for await(let l of(await g.chat.completions.create({model:t,stream:!0,stream_options:{include_usage:!0},litellm_trace_id:c,messages:e,...d?{vector_store_ids:d}:{},...m?{guardrails:m}:{},...k?{tools:k,tool_choice:"auto"}:{}},{signal:r}))){var f,v,y,b,_,N,Z,w;console.log("Stream chunk:",l);let e=null===(f=l.choices[0])||void 0===f?void 0:f.delta;if(console.log("Delta content:",null===(y=l.choices[0])||void 0===y?void 0:null===(v=y.delta)||void 0===v?void 0:v.content),console.log("Delta reasoning content:",null==e?void 0:e.reasoning_content),!j&&((null===(_=l.choices[0])||void 0===_?void 0:null===(b=_.delta)||void 0===b?void 0:b.content)||e&&e.reasoning_content)&&(j=!0,a=Date.now()-p,console.log("First token received! Time:",a,"ms"),n?(console.log("Calling onTimingData with:",a),n(a)):console.log("onTimingData callback is not defined!")),null===(Z=l.choices[0])||void 0===Z?void 0:null===(N=Z.delta)||void 0===N?void 0:N.content){let e=l.choices[0].delta.content;s(e,l.model)}if(e&&e.image&&x&&(console.log("Image generated:",e.image),x(e.image.url,l.model)),e&&e.reasoning_content){let s=e.reasoning_content;i&&i(s)}if(l.usage&&o){console.log("Usage data found:",l.usage);let e={completionTokens:l.usage.completion_tokens,promptTokens:l.usage.prompt_tokens,totalTokens:l.usage.total_tokens};(null===(w=l.usage.completion_tokens_details)||void 0===w?void 0:w.reasoning_tokens)&&(e.reasoningTokens=l.usage.completion_tokens_details.reasoning_tokens),o(e)}}}catch(e){throw(null==r?void 0:r.aborted)&&console.log("Chat completion request was cancelled"),e}}async function rv(e,s,t,l,a,r){console.log=function(){},console.log("isLocal:",!1);let i=(0,j.getProxyBaseUrl)(),n=new am.ZP.OpenAI({apiKey:l,baseURL:i,dangerouslyAllowBrowser:!0,defaultHeaders:a&&a.length>0?{"x-litellm-tags":a.join(",")}:void 0});try{let l=await n.images.generate({model:t,prompt:e},{signal:r});if(console.log(l.data),l.data&&l.data[0]){if(l.data[0].url)s(l.data[0].url,t);else if(l.data[0].b64_json){let e=l.data[0].b64_json;s("data:image/png;base64,".concat(e),t)}else throw Error("No image data found in response")}else throw Error("Invalid response format")}catch(e){throw(null==r?void 0:r.aborted)?console.log("Image generation request was cancelled"):eo.Z.fromBackend("Error occurred while generating image. Please try again. Error: ".concat(e)),e}}async function ry(e,s,t,l,a,r,i){console.log=function(){},console.log("isLocal:",!1);let n=(0,j.getProxyBaseUrl)(),o=new am.ZP.OpenAI({apiKey:a,baseURL:n,dangerouslyAllowBrowser:!0,defaultHeaders:r&&r.length>0?{"x-litellm-tags":r.join(",")}:void 0});try{let a=Array.isArray(e)?e:[e],r=[];for(let e=0;e1&&eo.Z.success("Successfully processed ".concat(r.length," images"))}catch(e){if(console.error("Error making image edit request:",e),null==i?void 0:i.aborted)console.log("Image edits request was cancelled");else{var c;let s="Failed to edit image(s)";(null==e?void 0:null===(c=e.error)||void 0===c?void 0:c.message)?s=e.error.message:(null==e?void 0:e.message)&&(s=e.message),eo.Z.fromBackend("Image edit failed: ".concat(s))}throw e}}async function rb(e,s,t,l){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5?arguments[5]:void 0,i=arguments.length>6?arguments[6]:void 0,n=arguments.length>7?arguments[7]:void 0,o=arguments.length>8?arguments[8]:void 0,c=arguments.length>9?arguments[9]:void 0,d=arguments.length>10?arguments[10]:void 0,m=arguments.length>11?arguments[11]:void 0,u=arguments.length>12?arguments[12]:void 0,x=arguments.length>13?arguments[13]:void 0,h=arguments.length>14?arguments[14]:void 0,p=arguments.length>15?arguments[15]:void 0;if(!l)throw Error("API key is required");console.log=function(){};let g=(0,j.getProxyBaseUrl)(),f={};a&&a.length>0&&(f["x-litellm-tags"]=a.join(","));let v=new am.ZP.OpenAI({apiKey:l,baseURL:g,dangerouslyAllowBrowser:!0,defaultHeaders:f});try{let l=Date.now(),a=!1,g=e.map(e=>(Array.isArray(e.content),{role:e.role,content:e.content,type:"message"})),j=u&&u.length>0?[{type:"mcp",server_label:"litellm",server_url:"litellm_proxy/mcp",require_approval:"never",allowed_tools:u}]:void 0,f=await v.responses.create({model:t,input:g,stream:!0,litellm_trace_id:c,...x?{previous_response_id:x}:{},...d?{vector_store_ids:d}:{},...m?{guardrails:m}:{},...j?{tools:j,tool_choice:"required"}:{}},{signal:r}),S="";for await(let e of f)if(console.log("Response event:",e),"object"==typeof e&&null!==e){var y,b,_,N,Z,w,k;if(((null===(y=e.type)||void 0===y?void 0:y.startsWith("response.mcp_"))||"response.output_item.done"===e.type&&((null===(b=e.item)||void 0===b?void 0:b.type)==="mcp_list_tools"||(null===(_=e.item)||void 0===_?void 0:_.type)==="mcp_call"))&&(console.log("MCP event received:",e),p)){let s={type:e.type,sequence_number:e.sequence_number,output_index:e.output_index,item_id:e.item_id||(null===(w=e.item)||void 0===w?void 0:w.id),item:e.item,delta:e.delta,arguments:e.arguments,timestamp:Date.now()};p(s)}if("response.output_item.done"===e.type&&(null===(N=e.item)||void 0===N?void 0:N.type)==="mcp_call"&&(null===(Z=e.item)||void 0===Z?void 0:Z.name)&&(S=e.item.name,console.log("MCP tool used:",S)),"response.role.delta"===e.type)continue;if("response.output_text.delta"===e.type&&"string"==typeof e.delta){let r=e.delta;if(console.log("Text delta",r),r.trim().length>0&&(s("assistant",r,t),!a)){a=!0;let e=Date.now()-l;console.log("First token received! Time:",e,"ms"),n&&n(e)}}if("response.reasoning.delta"===e.type&&"delta"in e){let s=e.delta;"string"==typeof s&&i&&i(s)}if("response.completed"===e.type&&"response"in e){let s=e.response,t=s.usage;if(console.log("Usage data:",t),console.log("Response completed event:",s),s.id&&h&&(console.log("Response ID for session management:",s.id),h(s.id)),t&&o){console.log("Usage data:",t);let e={completionTokens:t.output_tokens,promptTokens:t.input_tokens,totalTokens:t.total_tokens};(null===(k=t.completion_tokens_details)||void 0===k?void 0:k.reasoning_tokens)&&(e.reasoningTokens=t.completion_tokens_details.reasoning_tokens),o(e,S)}}}return f}catch(e){throw(null==r?void 0:r.aborted)?console.log("Responses API request was cancelled"):eo.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e)),e}}var r_=t(85498);async function rN(e,s,t,l){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5?arguments[5]:void 0,i=arguments.length>6?arguments[6]:void 0,n=arguments.length>7?arguments[7]:void 0,o=arguments.length>8?arguments[8]:void 0,c=arguments.length>9?arguments[9]:void 0,d=arguments.length>10?arguments[10]:void 0,m=arguments.length>11?arguments[11]:void 0,u=arguments.length>12?arguments[12]:void 0;if(!l)throw Error("API key is required");console.log=function(){};let x=(0,j.getProxyBaseUrl)(),h={};a&&a.length>0&&(h["x-litellm-tags"]=a.join(","));let p=new r_.ZP({apiKey:l,baseURL:x,dangerouslyAllowBrowser:!0,defaultHeaders:h});try{let a=Date.now(),h=!1,g=u&&u.length>0?[{type:"mcp",server_label:"litellm",server_url:"".concat(x,"/mcp"),require_approval:"never",allowed_tools:u,headers:{"x-litellm-api-key":"Bearer ".concat(l)}}]:void 0,j={model:t,messages:e.map(e=>({role:e.role,content:e.content})),stream:!0,max_tokens:1024,litellm_trace_id:c};for await(let e of(d&&(j.vector_store_ids=d),m&&(j.guardrails=m),g&&(j.tools=g,j.tool_choice="auto"),p.messages.stream(j,{signal:r}))){if(console.log("Stream event:",e),"content_block_delta"===e.type){let l=e.delta;if(!h){h=!0;let e=Date.now()-a;console.log("First token received! Time:",e,"ms"),n&&n(e)}"text_delta"===l.type?s("assistant",l.text,t):"reasoning_delta"===l.type&&i&&i(l.text)}if("message_delta"===e.type&&e.usage&&o){let s=e.usage;console.log("Usage data found:",s);let t={completionTokens:s.output_tokens,promptTokens:s.input_tokens,totalTokens:s.input_tokens+s.output_tokens};o(t)}}}catch(e){throw(null==r?void 0:r.aborted)?console.log("Anthropic messages request was cancelled"):eo.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e)),e}}async function rZ(e){try{return(await (0,j.mcpToolsCall)(e)).tools||[]}catch(e){return console.error("Error fetching MCP tools:",e),[]}}var rw=t(49817),rk=t(94263),rS=e=>{let{endpointType:s,onEndpointChange:t,className:l}=e,a=[{value:rw.KP.CHAT,label:"/v1/chat/completions"},{value:rw.KP.RESPONSES,label:"/v1/responses"},{value:rw.KP.ANTHROPIC_MESSAGES,label:"/v1/messages"},{value:rw.KP.IMAGE,label:"/v1/images/generations"},{value:rw.KP.IMAGE_EDITS,label:"/v1/images/edits"}];return(0,c.jsxs)("div",{className:l,children:[(0,c.jsx)(k.Z,{children:"Endpoint Type:"}),(0,c.jsx)(I.default,{showSearch:!0,value:s,style:{width:"100%"},onChange:t,options:a,className:"rounded-md"})]})},rC=e=>{let{onChange:s,value:t,className:l,accessToken:a}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{(async()=>{if(a)try{let e=await (0,j.tagListCall)(a);console.log("List tags response:",e),i(Object.values(e))}catch(e){console.error("Error fetching tags:",e)}})()},[]),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select tags",onChange:s,value:t,loading:n,className:l,options:r.map(e=>({label:e.name,value:e.name,title:e.description||e.name})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"}})},rI=t(88658),rA=t(83322),rT=e=>{let{reasoningContent:s}=e,[t,l]=(0,d.useState)(!0);return s?(0,c.jsxs)("div",{className:"reasoning-content mt-1 mb-2",children:[(0,c.jsxs)(L.ZP,{type:"text",className:"flex items-center text-xs text-gray-500 hover:text-gray-700",onClick:()=>l(!t),icon:(0,c.jsx)(rA.Z,{}),children:[t?"Hide reasoning":"Show reasoning",t?(0,c.jsx)(tP.Z,{className:"ml-1"}):(0,c.jsx)(lh.Z,{className:"ml-1"})]}),t&&(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-700",children:(0,c.jsx)(rg.U,{components:{code(e){let{node:s,inline:t,className:l,children:a,...r}=e,i=/language-(\w+)/.exec(l||"");return!t&&i?(0,c.jsx)(af.Z,{style:rk.Z,language:i[1],PreTag:"div",className:"rounded-md my-2",...r,children:String(a).replace(/\n$/,"")}):(0,c.jsx)("code",{className:"".concat(l," px-1.5 py-0.5 rounded bg-gray-100 text-sm font-mono"),...r,children:a})}},children:s})})]}):null},rE=t(71282),rL=t(11741),rP=t(16601),rM=t(58630),rO=e=>{let{timeToFirstToken:s,usage:t,toolName:l}=e;return s||t?(0,c.jsxs)("div",{className:"response-metrics mt-2 pt-2 border-t border-gray-100 text-xs text-gray-500 flex flex-wrap gap-3",children:[void 0!==s&&(0,c.jsx)(B.Z,{title:"Time to first token",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(lt.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:[(s/1e3).toFixed(2),"s"]})]})}),(null==t?void 0:t.promptTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Prompt tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rE.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["In: ",t.promptTokens]})]})}),(null==t?void 0:t.completionTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Completion tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rL.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Out: ",t.completionTokens]})]})}),(null==t?void 0:t.reasoningTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Reasoning tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rA.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Reasoning: ",t.reasoningTokens]})]})}),(null==t?void 0:t.totalTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Total tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rP.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Total: ",t.totalTokens]})]})}),l&&(0,c.jsx)(B.Z,{title:"Tool used",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rM.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Tool: ",l]})]})})]}):null},rD=t(53508);let{Dragger:rF}=ed.default;var rR=e=>{let{responsesUploadedImage:s,responsesImagePreviewUrl:t,onImageUpload:l,onRemoveImage:a}=e;return(0,c.jsx)(c.Fragment,{children:!s&&(0,c.jsx)(rF,{beforeUpload:l,accept:"image/*,.pdf",showUploadList:!1,className:"inline-block",style:{padding:0,border:"none",background:"none"},children:(0,c.jsx)(B.Z,{title:"Attach image or PDF",children:(0,c.jsx)("button",{type:"button",className:"flex items-center justify-center w-8 h-8 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-md transition-colors",children:(0,c.jsx)(rD.Z,{style:{fontSize:"16px"}})})})})})};let rz=e=>new Promise((s,t)=>{let l=new FileReader;l.onload=()=>{s(l.result.split(",")[1])},l.onerror=t,l.readAsDataURL(e)}),rU=async(e,s)=>{let t=await rz(s),l=s.type||(s.name.toLowerCase().endsWith(".pdf")?"application/pdf":"image/jpeg");return{role:"user",content:[{type:"input_text",text:e},{type:"input_image",image_url:"data:".concat(l,";base64,").concat(t)}]}},rq=(e,s,t,l)=>{let a="";s&&l&&(a=l.toLowerCase().endsWith(".pdf")?"[PDF attached]":"[Image attached]");let r={role:"user",content:s?"".concat(e," ").concat(a):e};return s&&t&&(r.imagePreviewUrl=t),r},rV=e=>"user"===e.role&&"string"==typeof e.content&&(e.content.includes("[Image attached]")||e.content.includes("[PDF attached]"))&&!!e.imagePreviewUrl;var rB=t(50010),rK=e=>{let{message:s}=e;if(!rV(s))return null;let t="string"==typeof s.content&&s.content.includes("[PDF attached]");return(0,c.jsx)("div",{className:"mb-2",children:t?(0,c.jsx)("div",{className:"w-64 h-32 rounded-md border border-gray-200 bg-red-50 flex items-center justify-center",children:(0,c.jsx)(rB.Z,{style:{fontSize:"48px",color:"#dc2626"}})}):(0,c.jsx)("img",{src:s.imagePreviewUrl,alt:"User uploaded image",className:"max-w-64 rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"200px"}})})};let{Dragger:rG}=ed.default;var rH=e=>{let{chatUploadedImage:s,chatImagePreviewUrl:t,onImageUpload:l,onRemoveImage:a}=e;return(0,c.jsx)(c.Fragment,{children:!s&&(0,c.jsx)(rG,{beforeUpload:l,accept:"image/*,.pdf",showUploadList:!1,className:"inline-block",style:{padding:0,border:"none",background:"none"},children:(0,c.jsx)(B.Z,{title:"Attach image or PDF",children:(0,c.jsx)("button",{type:"button",className:"flex items-center justify-center w-8 h-8 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-md transition-colors",children:(0,c.jsx)(rD.Z,{style:{fontSize:"16px"}})})})})})};let rY=e=>new Promise((s,t)=>{let l=new FileReader;l.onload=()=>{s(l.result)},l.onerror=t,l.readAsDataURL(e)}),rJ=async(e,s)=>({role:"user",content:[{type:"text",text:e},{type:"image_url",image_url:{url:await rY(s)}}]}),rW=(e,s,t,l)=>{let a="";s&&l&&(a=l.toLowerCase().endsWith(".pdf")?"[PDF attached]":"[Image attached]");let r={role:"user",content:s?"".concat(e," ").concat(a):e};return s&&t&&(r.imagePreviewUrl=t),r},r$=e=>"user"===e.role&&"string"==typeof e.content&&(e.content.includes("[Image attached]")||e.content.includes("[PDF attached]"))&&!!e.imagePreviewUrl;var rQ=e=>{let{message:s}=e;if(!r$(s))return null;let t="string"==typeof s.content&&s.content.includes("[PDF attached]");return(0,c.jsx)("div",{className:"mb-2",children:t?(0,c.jsx)("div",{className:"w-64 h-32 rounded-md border border-gray-200 bg-red-50 flex items-center justify-center",children:(0,c.jsx)(rB.Z,{style:{fontSize:"48px",color:"#dc2626"}})}):(0,c.jsx)("img",{src:s.imagePreviewUrl,alt:"User uploaded image",className:"max-w-64 rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"200px"}})})},rX=e=>{let{endpointType:s,responsesSessionId:t,useApiSessionManagement:l,onToggleSessionManagement:a}=e;return s!==rw.KP.RESPONSES?null:(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Session Management"}),(0,c.jsx)(B.Z,{title:"Choose between LiteLLM API session management (using previous_response_id) or UI-based session management (using chat history)",children:(0,c.jsx)(V.Z,{className:"text-gray-400",style:{fontSize:"12px"}})})]}),(0,c.jsx)(eJ.Z,{checked:l,onChange:a,checkedChildren:"API",unCheckedChildren:"UI",size:"small"})]}),(0,c.jsxs)("div",{className:"text-xs p-2 rounded-md ".concat(t?"bg-green-50 text-green-700 border border-green-200":"bg-blue-50 text-blue-700 border border-blue-200"),children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-1",children:[(0,c.jsx)(V.Z,{style:{fontSize:"12px"}}),(()=>{if(!t)return l?"API Session: Ready":"UI Session: Ready";let e=l?"Response ID":"UI Session",s=t.slice(0,10);return"".concat(e,": ").concat(s,"...")})()]}),t&&(0,c.jsx)(B.Z,{title:(0,c.jsxs)("div",{className:"text-xs",children:[(0,c.jsx)("div",{className:"mb-1",children:"Copy response ID to continue session:"}),(0,c.jsx)("div",{className:"bg-gray-800 text-gray-100 p-2 rounded font-mono text-xs whitespace-pre-wrap",children:'curl -X POST "your-proxy-url/v1/responses" \\\n -H "Authorization: Bearer your-api-key" \\\n -H "Content-Type: application/json" \\\n -d \'{\n "model": "your-model",\n "input": [{"role": "user", "content": "your message", "type": "message"}],\n "previous_response_id": "'.concat(t,'",\n "stream": true\n }\'')})]}),overlayStyle:{maxWidth:"500px"},children:(0,c.jsx)("button",{onClick:()=>{t&&(navigator.clipboard.writeText(t),eo.Z.success("Response ID copied to clipboard!"))},className:"ml-2 p-1 hover:bg-green-100 rounded transition-colors",children:(0,c.jsx)(tJ.Z,{style:{fontSize:"12px"}})})})]}),(0,c.jsx)("div",{className:"text-xs opacity-75 mt-1",children:t?l?"LiteLLM API session active - context maintained server-side":"UI session active - context maintained client-side":l?"LiteLLM will manage session using previous_response_id":"UI will manage session using chat history"})]})]})};let{Text:r0}=en.default,{Panel:r1}=tE.default;var r2=e=>{var s,t;let{events:l,className:a}=e;if(console.log("MCPEventsDisplay: Received events:",l),!l||0===l.length)return console.log("MCPEventsDisplay: No events, returning null"),null;let r=l.find(e=>{var s;return"response.output_item.done"===e.type&&(null===(s=e.item)||void 0===s?void 0:s.type)==="mcp_list_tools"&&e.item.tools&&e.item.tools.length>0}),i=l.filter(e=>{var s;return"response.output_item.done"===e.type&&(null===(s=e.item)||void 0===s?void 0:s.type)==="mcp_call"});return(console.log("MCPEventsDisplay: toolsEvent:",r),console.log("MCPEventsDisplay: mcpCallEvents:",i),r||0!==i.length)?(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac "+"mcp-events-display ".concat(a||""),children:[(0,c.jsx)(tY(),{id:"32b14b04f420f3ac",children:'.openai-mcp-tools.jsx-32b14b04f420f3ac{position:relative;margin:0;padding:0}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse.jsx-32b14b04f420f3ac{background:transparent!important;border:none!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-item.jsx-32b14b04f420f3ac{border:none!important;background:transparent!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-header.jsx-32b14b04f420f3ac{padding:0 0 0 20px!important;background:transparent!important;border:none!important;font-size:14px!important;color:#9ca3af!important;font-weight:400!important;line-height:20px!important;min-height:20px!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-header.jsx-32b14b04f420f3ac:hover{background:transparent!important;color:#6b7280!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-content.jsx-32b14b04f420f3ac{border:none!important;background:transparent!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-content-box.jsx-32b14b04f420f3ac{padding:4px 0 0 20px!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-expand-icon.jsx-32b14b04f420f3ac{position:absolute!important;left:2px!important;top:2px!important;color:#9ca3af!important;font-size:10px!important;width:16px!important;height:16px!important;display:-webkit-box!important;display:-webkit-flex!important;display:-moz-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center!important;-webkit-align-items:center!important;-moz-box-align:center!important;-ms-flex-align:center!important;align-items:center!important;-webkit-box-pack:center!important;-webkit-justify-content:center!important;-moz-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-expand-icon.jsx-32b14b04f420f3ac:hover{color:#6b7280!important}.openai-vertical-line.jsx-32b14b04f420f3ac{position:absolute;left:9px;top:18px;bottom:0;width:.5px;background-color:#f3f4f6;opacity:.8}.tool-item.jsx-32b14b04f420f3ac{font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:13px;color:#4b5563;line-height:18px;padding:0;margin:0;background:white;position:relative;z-index:1}.mcp-section.jsx-32b14b04f420f3ac{margin-bottom:12px;background:white;position:relative;z-index:1}.mcp-section.jsx-32b14b04f420f3ac:last-child{margin-bottom:0}.mcp-section-header.jsx-32b14b04f420f3ac{font-size:13px;color:#6b7280;font-weight:500;margin-bottom:4px}.mcp-code-block.jsx-32b14b04f420f3ac{background:#f9fafb;border:1px solid#f3f4f6;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;padding:8px;font-size:12px}.mcp-json.jsx-32b14b04f420f3ac{font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:#374151;margin:0;white-space:pre-wrap;word-wrap:break-word}.mcp-approved.jsx-32b14b04f420f3ac{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;font-size:13px;color:#6b7280}.mcp-checkmark.jsx-32b14b04f420f3ac{color:#10b981;margin-right:6px;font-weight:bold}.mcp-response-content.jsx-32b14b04f420f3ac{font-size:13px;color:#374151;line-height:1.5;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace}'}),(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac openai-mcp-tools",children:[(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac openai-vertical-line"}),(0,c.jsxs)(tE.default,{ghost:!0,size:"small",expandIconPosition:"start",defaultActiveKey:r?["list-tools"]:i.map((e,s)=>"mcp-call-".concat(s)),children:[r&&(0,c.jsx)(r1,{header:"List tools",children:(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac",children:null===(t=r.item)||void 0===t?void 0:null===(s=t.tools)||void 0===s?void 0:s.map((e,s)=>(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac tool-item",children:e.name},s))})},"list-tools"),i.map((e,s)=>{var t,l,a;return(0,c.jsx)(r1,{header:(null===(t=e.item)||void 0===t?void 0:t.name)||"Tool call",children:(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac",children:[(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:[(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section-header",children:"Request"}),(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-code-block",children:(null===(l=e.item)||void 0===l?void 0:l.arguments)&&(0,c.jsx)("pre",{className:"jsx-32b14b04f420f3ac mcp-json",children:(()=>{try{return JSON.stringify(JSON.parse(e.item.arguments),null,2)}catch(s){return e.item.arguments}})()})})]}),(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-approved",children:[(0,c.jsx)("span",{className:"jsx-32b14b04f420f3ac mcp-checkmark",children:"✓"})," Approved"]})}),(null===(a=e.item)||void 0===a?void 0:a.output)&&(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:[(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section-header",children:"Response"}),(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-response-content",children:e.item.output})]})]})},"mcp-call-".concat(s))})]})]})]}):(console.log("MCPEventsDisplay: No valid events found, returning null"),null)},r4=t(61935),r5=t(71891),r3=t(44625),r6=t(57400),r8=t(26430),r7=t(11894),r9=t(15883),ie=t(99890),is=t(79276);let{TextArea:it}=P.default,{Dragger:il}=ed.default;var ia=e=>{let{accessToken:s,token:t,userRole:l,userID:a,disabledPersonalKeyCreation:r}=e,[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedMCPTools");try{let s=e?JSON.parse(e):[];return Array.isArray(s)?s:s?[s]:[]}catch(e){return console.error("Error parsing selectedMCPTools from sessionStorage",e),[]}}),[h,p]=(0,d.useState)(!1),[g,j]=(0,d.useState)(()=>{let e=sessionStorage.getItem("apiKeySource");if(e)try{return JSON.parse(e)}catch(e){console.error("Error parsing apiKeySource from sessionStorage",e)}return r?"custom":"session"}),[f,v]=(0,d.useState)(()=>sessionStorage.getItem("apiKey")||""),[y,N]=(0,d.useState)(""),[Z,w]=(0,d.useState)(()=>{try{let e=sessionStorage.getItem("chatHistory");return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing chatHistory from sessionStorage",e),[]}}),[C,A]=(0,d.useState)(()=>sessionStorage.getItem("selectedModel")||void 0),[E,P]=(0,d.useState)(!1),[M,O]=(0,d.useState)([]),D=(0,d.useRef)(null),[F,R]=(0,d.useState)(()=>sessionStorage.getItem("endpointType")||rw.KP.CHAT),[z,q]=(0,d.useState)(!1),K=(0,d.useRef)(null),[H,Y]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedTags");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedTags from sessionStorage",e),[]}}),[J,W]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedVectorStores");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedVectorStores from sessionStorage",e),[]}}),[$,Q]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedGuardrails");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedGuardrails from sessionStorage",e),[]}}),[X,ee]=(0,d.useState)(()=>sessionStorage.getItem("messageTraceId")||null),[es,et]=(0,d.useState)(()=>sessionStorage.getItem("responsesSessionId")||null),[el,ea]=(0,d.useState)(()=>{let e=sessionStorage.getItem("useApiSessionManagement");return!e||JSON.parse(e)}),[er,ei]=(0,d.useState)([]),[ec,ed]=(0,d.useState)([]),[em,eu]=(0,d.useState)(null),[ex,eh]=(0,d.useState)(null),[eg,ej]=(0,d.useState)(null),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)(!1),[e_,eN]=(0,d.useState)(""),[eZ,ew]=(0,d.useState)("openai"),[ek,eS]=(0,d.useState)([]),eC=(0,d.useRef)(null),eI=async()=>{let e="session"===g?s:f;if(e){p(!0);try{let s=await rZ(e);m(s)}catch(e){console.error("Error fetching MCP tools:",e)}finally{p(!1)}}};(0,d.useEffect)(()=>{i&&eI()},[i,s,f,g]),(0,d.useEffect)(()=>{ey&&eN((0,rI.L)({apiKeySource:g,accessToken:s,apiKey:f,inputMessage:y,chatHistory:Z,selectedTags:H,selectedVectorStores:J,selectedGuardrails:$,selectedMCPTools:u,endpointType:F,selectedModel:C,selectedSdk:eZ}))},[ey,eZ,g,s,f,y,Z,H,J,$,u,F,C]),(0,d.useEffect)(()=>{let e=setTimeout(()=>{sessionStorage.setItem("chatHistory",JSON.stringify(Z))},500);return()=>{clearTimeout(e)}},[Z]),(0,d.useEffect)(()=>{sessionStorage.setItem("apiKeySource",JSON.stringify(g)),sessionStorage.setItem("apiKey",f),sessionStorage.setItem("endpointType",F),sessionStorage.setItem("selectedTags",JSON.stringify(H)),sessionStorage.setItem("selectedVectorStores",JSON.stringify(J)),sessionStorage.setItem("selectedGuardrails",JSON.stringify($)),sessionStorage.setItem("selectedMCPTools",JSON.stringify(u)),C?sessionStorage.setItem("selectedModel",C):sessionStorage.removeItem("selectedModel"),X?sessionStorage.setItem("messageTraceId",X):sessionStorage.removeItem("messageTraceId"),es?sessionStorage.setItem("responsesSessionId",es):sessionStorage.removeItem("responsesSessionId"),sessionStorage.setItem("useApiSessionManagement",JSON.stringify(el))},[g,f,C,F,H,J,$,X,es,el,u]),(0,d.useEffect)(()=>{let e="session"===g?s:f;if(!e||!t||!l||!a){console.log("userApiKey or token or userRole or userID is missing = ",e,t,l,a);return}(async()=>{try{if(!e){console.log("userApiKey is missing");return}let s=await eG(e);console.log("Fetched models:",s),O(s);let t=s.some(e=>e.model_group===C);s.length?t||A(s[0].model_group):A(void 0)}catch(e){console.error("Error fetching model info:",e)}})(),eI()},[s,a,l,g,f,t]),(0,d.useEffect)(()=>{eC.current&&setTimeout(()=>{var e;null===(e=eC.current)||void 0===e||e.scrollIntoView({behavior:"smooth",block:"end"})},100)},[Z]);let eA=(e,s,t)=>{console.log("updateTextUI called with:",e,s,t),w(l=>{let a=l[l.length-1];if(!a||a.role!==e||a.isImage)return[...l,{role:e,content:s,model:t}];{var r;let e={...a,content:a.content+s,model:null!==(r=a.model)&&void 0!==r?r:t};return[...l.slice(0,-1),e]}})},eT=e=>{w(s=>{let t=s[s.length-1];return t&&"assistant"===t.role&&!t.isImage?[...s.slice(0,s.length-1),{...t,reasoningContent:(t.reasoningContent||"")+e}]:s.length>0&&"user"===s[s.length-1].role?[...s,{role:"assistant",content:"",reasoningContent:e}]:s})},eE=e=>{console.log("updateTimingData called with:",e),w(s=>{let t=s[s.length-1];if(console.log("Current last message:",t),t&&"assistant"===t.role){console.log("Updating assistant message with timeToFirstToken:",e);let l=[...s.slice(0,s.length-1),{...t,timeToFirstToken:e}];return console.log("Updated chat history:",l),l}return t&&"user"===t.role?(console.log("Creating new assistant message with timeToFirstToken:",e),[...s,{role:"assistant",content:"",timeToFirstToken:e}]):(console.log("No appropriate message found to update timing"),s)})},eL=(e,s)=>{console.log("Received usage data:",e),w(t=>{let l=t[t.length-1];if(l&&"assistant"===l.role){console.log("Updating message with usage data:",e);let a={...l,usage:e,toolName:s};return console.log("Updated message:",a),[...t.slice(0,t.length-1),a]}return t})},eP=e=>{console.log("Received response ID for session management:",e),el&&et(e)},eM=e=>{console.log("ChatUI: Received MCP event:",e),eS(s=>{if(s.some(s=>s.item_id===e.item_id&&s.type===e.type&&s.sequence_number===e.sequence_number))return console.log("ChatUI: Duplicate MCP event, skipping"),s;let t=[...s,e];return console.log("ChatUI: Updated MCP events:",t),t})},eO=(e,s)=>{w(t=>[...t,{role:"assistant",content:e,model:s,isImage:!0}])},eD=(e,s)=>{w(t=>{let l=t[t.length-1];if(!l||"assistant"!==l.role||l.isImage)return[...t,{role:"assistant",content:"",model:s,image:{url:e,detail:"auto"}}];{var a;let r={...l,image:{url:e,detail:"auto"},model:null!==(a=l.model)&&void 0!==a?a:s};return[...t.slice(0,-1),r]}})},eR=e=>{ei(s=>[...s,e]);let s=URL.createObjectURL(e);return ed(e=>[...e,s]),!1},ez=e=>{ec[e]&&URL.revokeObjectURL(ec[e]),ei(s=>s.filter((s,t)=>t!==e)),ed(s=>s.filter((s,t)=>t!==e))},eU=()=>{ec.forEach(e=>{URL.revokeObjectURL(e)}),ei([]),ed([])},eq=()=>{ex&&URL.revokeObjectURL(ex),eu(null),eh(null)},eV=()=>{ef&&URL.revokeObjectURL(ef),ej(null),ev(null)},eB=async()=>{let e;if(""===y.trim())return;if(F===rw.KP.IMAGE_EDITS&&0===er.length){eo.Z.fromBackend("Please upload at least one image for editing");return}if(!t||!l||!a)return;let r="session"===g?s:f;if(!r){eo.Z.fromBackend("Please provide an API key or select Current UI Session");return}K.current=new AbortController;let i=K.current.signal;if(F===rw.KP.RESPONSES&&em)try{e=await rU(y,em)}catch(e){eo.Z.fromBackend("Failed to process image. Please try again.");return}else if(F===rw.KP.CHAT&&eg)try{e=await rJ(y,eg)}catch(e){eo.Z.fromBackend("Failed to process image. Please try again.");return}else e={role:"user",content:y};let n=X||(0,rj.Z)();X||ee(n),w([...Z,F===rw.KP.RESPONSES&&em?rq(y,!0,ex||void 0,em.name):F===rw.KP.CHAT&&eg?rW(y,!0,ef||void 0,eg.name):rq(y,!1)]),eS([]),q(!0);try{if(C){if(F===rw.KP.CHAT){let s=[...Z.filter(e=>!e.isImage).map(e=>{let{role:s,content:t}=e;return{role:s,content:"string"==typeof t?t:""}}),e];await rf(s,(e,s)=>eA("assistant",e,s),C,r,H,i,eT,eE,eL,n,J.length>0?J:void 0,$.length>0?$:void 0,u,eD)}else if(F===rw.KP.IMAGE)await rv(y,(e,s)=>eO(e,s),C,r,H,i);else if(F===rw.KP.IMAGE_EDITS)er.length>0&&await ry(1===er.length?er[0]:er,y,(e,s)=>eO(e,s),C,r,H,i);else if(F===rw.KP.RESPONSES){let s;s=el&&es?[e]:[...Z.filter(e=>!e.isImage).map(e=>{let{role:s,content:t}=e;return{role:s,content:t}}),e],await rb(s,(e,s,t)=>eA(e,s,t),C,r,H,i,eT,eE,eL,n,J.length>0?J:void 0,$.length>0?$:void 0,u,el?es:null,eP,eM)}else if(F===rw.KP.ANTHROPIC_MESSAGES){let s=[...Z.filter(e=>!e.isImage).map(e=>{let{role:s,content:t}=e;return{role:s,content:t}}),e];await rN(s,(e,s,t)=>eA(e,s,t),C,r,H,i,eT,eE,eL,n,J.length>0?J:void 0,$.length>0?$:void 0,u)}}}catch(e){i.aborted?console.log("Request was cancelled"):(console.error("Error fetching response",e),eA("assistant","Error fetching response:"+e))}finally{q(!1),K.current=null,F===rw.KP.IMAGE_EDITS&&eU(),F===rw.KP.RESPONSES&&em&&eq(),F===rw.KP.CHAT&&eg&&eV()}N("")};if(l&&"Admin Viewer"===l){let{Title:e,Paragraph:s}=en.default;return(0,c.jsxs)("div",{children:[(0,c.jsx)(e,{level:1,children:"Access Denied"}),(0,c.jsx)(s,{children:"Ask your proxy admin for access to test models"})]})}let eH=(0,c.jsx)(r4.Z,{style:{fontSize:24},spin:!0});return(0,c.jsxs)("div",{className:"w-full h-screen p-4 bg-white",children:[(0,c.jsx)(G.Z,{className:"w-full rounded-xl shadow-md overflow-hidden",children:(0,c.jsxs)("div",{className:"flex h-[80vh] w-full gap-4",children:[(0,c.jsxs)("div",{className:"w-1/4 p-4 bg-gray-50 overflow-y-auto",children:[(0,c.jsx)(S.Z,{className:"text-xl font-semibold mb-6 mt-2",children:"Configurations"}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(l2.Z,{className:"mr-2"})," API Key Source"]}),(0,c.jsx)(I.default,{disabled:r,value:g,style:{width:"100%"},onChange:e=>{j(e)},options:[{value:"session",label:"Current UI Session"},{value:"custom",label:"Virtual Key"}],className:"rounded-md"}),"custom"===g&&(0,c.jsx)(_.Z,{className:"mt-2",placeholder:"Enter custom API key",type:"password",onValueChange:v,value:f,icon:l2.Z})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(eK.Z,{className:"mr-2"})," Select Model"]}),(0,c.jsx)(I.default,{value:C,placeholder:"Select a Model",onChange:e=>{console.log("selected ".concat(e)),A(e),P("custom"===e)},options:[...Array.from(new Set(M.map(e=>e.model_group))).map((e,s)=>({value:e,label:e,key:s})),{value:"custom",label:"Enter custom model",key:"custom"}],style:{width:"100%"},showSearch:!0,className:"rounded-md"}),E&&(0,c.jsx)(_.Z,{className:"mt-2",placeholder:"Enter custom model name",onValueChange:e=>{D.current&&clearTimeout(D.current),D.current=setTimeout(()=>{A(e)},500)}})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(lu.Z,{className:"mr-2"})," Endpoint Type"]}),(0,c.jsx)(rS,{endpointType:F,onEndpointChange:e=>{R(e)},className:"mb-4"}),(0,c.jsx)(rX,{endpointType:F,responsesSessionId:es,useApiSessionManagement:el,onToggleSessionManagement:e=>{ea(e),e||et(null)}})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(r5.Z,{className:"mr-2"})," Tags"]}),(0,c.jsx)(rC,{value:H,onChange:Y,className:"mb-4",accessToken:s||""})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(rM.Z,{className:"mr-2"})," MCP Tool",(0,c.jsx)(B.Z,{className:"ml-1",title:"Select MCP tools to use in your conversation, only available for /v1/responses endpoint",children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select MCP tools",value:u,onChange:e=>x(e),loading:h,className:"mb-4",allowClear:!0,optionLabelProp:"label",disabled:F!==rw.KP.RESPONSES,maxTagCount:"responsive",children:Array.isArray(o)&&o.map(e=>(0,c.jsx)(I.default.Option,{value:e.name,label:(0,c.jsx)("div",{className:"font-medium",children:e.name}),children:(0,c.jsxs)("div",{className:"flex flex-col py-1",children:[(0,c.jsx)("span",{className:"font-medium",children:e.name}),(0,c.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.description})]})},e.name))})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(r3.Z,{className:"mr-2"})," Vector Store",(0,c.jsx)(B.Z,{className:"ml-1",title:(0,c.jsxs)("span",{children:["Select vector store(s) to use for this LLM API call. You can set up your vector store"," ",(0,c.jsx)("a",{href:"?page=vector-stores",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(U,{value:J,onChange:W,className:"mb-4",accessToken:s||""})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(r6.Z,{className:"mr-2"})," Guardrails",(0,c.jsx)(B.Z,{className:"ml-1",title:(0,c.jsxs)("span",{children:["Select guardrail(s) to use for this LLM API call. You can set up your guardrails"," ",(0,c.jsx)("a",{href:"?page=guardrails",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(sx,{value:$,onChange:Q,className:"mb-4",accessToken:s||""})]})]})]}),(0,c.jsxs)("div",{className:"w-3/4 flex flex-col bg-white",children:[(0,c.jsxs)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:[(0,c.jsx)(S.Z,{className:"text-xl font-semibold mb-0",children:"Test Key"}),(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{onClick:()=>{w([]),ee(null),et(null),eS([]),eU(),eq(),eV(),sessionStorage.removeItem("chatHistory"),sessionStorage.removeItem("messageTraceId"),sessionStorage.removeItem("responsesSessionId"),eo.Z.success("Chat history cleared.")},className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:r8.Z,children:"Clear Chat"}),(0,c.jsx)(b.Z,{onClick:()=>eb(!0),className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:r7.Z,children:"Get Code"})]})]}),(0,c.jsxs)("div",{className:"flex-1 overflow-auto p-4 pb-0",children:[0===Z.length&&(0,c.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,c.jsx)(eK.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,c.jsx)(k.Z,{children:"Start a conversation or generate an image"})]}),Z.map((e,s)=>(0,c.jsx)("div",{children:(0,c.jsx)("div",{className:"mb-4 ".concat("user"===e.role?"text-right":"text-left"),children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:"user"===e.role?"#f0f8ff":"#ffffff",border:"user"===e.role?"1px solid #e6f0fa":"1px solid #f0f0f0",textAlign:"left"},children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:"user"===e.role?"#e6f0fa":"#f5f5f5"},children:"user"===e.role?(0,c.jsx)(r9.Z,{style:{fontSize:"12px",color:"#2563eb"}}):(0,c.jsx)(eK.Z,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,c.jsx)("strong",{className:"text-sm capitalize",children:e.role}),"assistant"===e.role&&e.model&&(0,c.jsx)("span",{className:"text-xs px-2 py-0.5 rounded bg-gray-100 text-gray-600 font-normal",children:e.model})]}),e.reasoningContent&&(0,c.jsx)(rT,{reasoningContent:e.reasoningContent}),"assistant"===e.role&&s===Z.length-1&&ek.length>0&&F===rw.KP.RESPONSES&&(0,c.jsx)("div",{className:"mb-3",children:(0,c.jsx)(r2,{events:ek})}),(0,c.jsxs)("div",{className:"whitespace-pre-wrap break-words max-w-full message-content",style:{wordWrap:"break-word",overflowWrap:"break-word",wordBreak:"break-word",hyphens:"auto"},children:[e.isImage?(0,c.jsx)("img",{src:"string"==typeof e.content?e.content:"",alt:"Generated image",className:"max-w-full rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"500px"}}):(0,c.jsxs)(c.Fragment,{children:[F===rw.KP.RESPONSES&&(0,c.jsx)(rK,{message:e}),F===rw.KP.CHAT&&(0,c.jsx)(rQ,{message:e}),(0,c.jsx)(rg.U,{components:{code(e){let{node:s,inline:t,className:l,children:a,...r}=e,i=/language-(\w+)/.exec(l||"");return!t&&i?(0,c.jsx)(af.Z,{style:rk.Z,language:i[1],PreTag:"div",className:"rounded-md my-2",wrapLines:!0,wrapLongLines:!0,...r,children:String(a).replace(/\n$/,"")}):(0,c.jsx)("code",{className:"".concat(l," px-1.5 py-0.5 rounded bg-gray-100 text-sm font-mono"),style:{wordBreak:"break-word"},...r,children:a})},pre:e=>{let{node:s,...t}=e;return(0,c.jsx)("pre",{style:{overflowX:"auto",maxWidth:"100%"},...t})}},children:"string"==typeof e.content?e.content:""}),e.image&&(0,c.jsx)("div",{className:"mt-3",children:(0,c.jsx)("img",{src:e.image.url,alt:"Generated image",className:"max-w-full rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"500px"}})})]}),"assistant"===e.role&&(e.timeToFirstToken||e.usage)&&(0,c.jsx)(rO,{timeToFirstToken:e.timeToFirstToken,usage:e.usage,toolName:e.toolName})]})]})})},s)),z&&ek.length>0&&F===rw.KP.RESPONSES&&Z.length>0&&"user"===Z[Z.length-1].role&&(0,c.jsx)("div",{className:"text-left mb-4",children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:"#ffffff",border:"1px solid #f0f0f0",textAlign:"left"},children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:"#f5f5f5"},children:(0,c.jsx)(eK.Z,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,c.jsx)("strong",{className:"text-sm capitalize",children:"Assistant"})]}),(0,c.jsx)(r2,{events:ek})]})}),z&&(0,c.jsx)("div",{className:"flex justify-center items-center my-4",children:(0,c.jsx)(eF.Z,{indicator:eH})}),(0,c.jsx)("div",{ref:eC,style:{height:"1px"}})]}),(0,c.jsxs)("div",{className:"p-4 border-t border-gray-200 bg-white",children:[F===rw.KP.IMAGE_EDITS&&(0,c.jsx)("div",{className:"mb-4",children:0===er.length?(0,c.jsxs)(il,{beforeUpload:eR,accept:"image/*",showUploadList:!1,className:"border-dashed border-2 border-gray-300 rounded-lg p-4",children:[(0,c.jsx)("p",{className:"ant-upload-drag-icon",children:(0,c.jsx)(ie.Z,{style:{fontSize:"24px",color:"#666"}})}),(0,c.jsx)("p",{className:"ant-upload-text text-sm",children:"Click or drag images to upload"}),(0,c.jsx)("p",{className:"ant-upload-hint text-xs text-gray-500",children:"Support for PNG, JPG, JPEG formats. Multiple images supported."})]}):(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[er.map((e,s)=>(0,c.jsxs)("div",{className:"relative inline-block",children:[(0,c.jsx)("img",{src:ec[s]||"",alt:"Upload preview ".concat(s+1),className:"max-w-32 max-h-32 rounded-md border border-gray-200 object-cover"}),(0,c.jsx)("button",{className:"absolute top-1 right-1 bg-white shadow-sm border border-gray-200 rounded px-1 py-1 text-red-500 hover:bg-red-50 text-xs",onClick:()=>ez(s),children:(0,c.jsx)(ep.Z,{})})]},s)),(0,c.jsxs)("div",{className:"flex items-center justify-center w-32 h-32 border-2 border-dashed border-gray-300 rounded-md hover:border-gray-400 cursor-pointer",onClick:()=>{var e;return null===(e=document.getElementById("additional-image-upload"))||void 0===e?void 0:e.click()},children:[(0,c.jsxs)("div",{className:"text-center",children:[(0,c.jsx)(ie.Z,{style:{fontSize:"24px",color:"#666"}}),(0,c.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:"Add more"})]}),(0,c.jsx)("input",{id:"additional-image-upload",type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:e=>{Array.from(e.target.files||[]).forEach(e=>eR(e))}})]})]})}),F===rw.KP.RESPONSES&&em&&(0,c.jsx)("div",{className:"mb-2",children:(0,c.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[(0,c.jsx)("div",{className:"relative inline-block",children:em.name.toLowerCase().endsWith(".pdf")?(0,c.jsx)("div",{className:"w-10 h-10 rounded-md bg-red-500 flex items-center justify-center",children:(0,c.jsx)(rB.Z,{style:{fontSize:"16px",color:"white"}})}):(0,c.jsx)("img",{src:ex||"",alt:"Upload preview",className:"w-10 h-10 rounded-md border border-gray-200 object-cover"})}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsx)("div",{className:"text-sm font-medium text-gray-900 truncate",children:em.name}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:em.name.toLowerCase().endsWith(".pdf")?"PDF":"Image"})]}),(0,c.jsx)("button",{className:"flex items-center justify-center w-6 h-6 text-gray-400 hover:text-gray-600 hover:bg-gray-200 rounded-full transition-colors",onClick:eq,children:(0,c.jsx)(ep.Z,{style:{fontSize:"12px"}})})]})}),F===rw.KP.CHAT&&eg&&(0,c.jsx)("div",{className:"mb-2",children:(0,c.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[(0,c.jsx)("div",{className:"relative inline-block",children:eg.name.toLowerCase().endsWith(".pdf")?(0,c.jsx)("div",{className:"w-10 h-10 rounded-md bg-red-500 flex items-center justify-center",children:(0,c.jsx)(rB.Z,{style:{fontSize:"16px",color:"white"}})}):(0,c.jsx)("img",{src:ef||"",alt:"Upload preview",className:"w-10 h-10 rounded-md border border-gray-200 object-cover"})}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsx)("div",{className:"text-sm font-medium text-gray-900 truncate",children:eg.name}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:eg.name.toLowerCase().endsWith(".pdf")?"PDF":"Image"})]}),(0,c.jsx)("button",{className:"flex items-center justify-center w-6 h-6 text-gray-400 hover:text-gray-600 hover:bg-gray-200 rounded-full transition-colors",onClick:eV,children:(0,c.jsx)(ep.Z,{style:{fontSize:"12px"}})})]})}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsxs)("div",{className:"flex items-center flex-1 bg-white border border-gray-300 rounded-xl px-3 py-1 min-h-[44px]",children:[(0,c.jsxs)("div",{className:"flex-shrink-0 mr-2",children:[F===rw.KP.RESPONSES&&!em&&(0,c.jsx)(rR,{responsesUploadedImage:em,responsesImagePreviewUrl:ex,onImageUpload:e=>(eu(e),eh(URL.createObjectURL(e)),!1),onRemoveImage:eq}),F===rw.KP.CHAT&&!eg&&(0,c.jsx)(rH,{chatUploadedImage:eg,chatImagePreviewUrl:ef,onImageUpload:e=>(ej(e),ev(URL.createObjectURL(e)),!1),onRemoveImage:eV})]}),(0,c.jsx)(it,{value:y,onChange:e=>N(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),eB())},placeholder:F===rw.KP.CHAT||F===rw.KP.RESPONSES||F===rw.KP.ANTHROPIC_MESSAGES?"Type your message... (Shift+Enter for new line)":F===rw.KP.IMAGE_EDITS?"Describe how you want to edit the image...":"Describe the image you want to generate...",disabled:z,className:"flex-1",autoSize:{minRows:1,maxRows:4},style:{resize:"none",border:"none",boxShadow:"none",background:"transparent",padding:"4px 0",fontSize:"14px",lineHeight:"20px"}}),(0,c.jsx)(b.Z,{onClick:eB,disabled:z||!y.trim(),className:"flex-shrink-0 ml-2 !w-8 !h-8 !min-w-8 !p-0 !rounded-full !bg-blue-600 hover:!bg-blue-700 disabled:!bg-gray-300 !border-none !text-white disabled:!text-gray-500 !flex !items-center !justify-center",children:(0,c.jsx)(is.Z,{style:{fontSize:"14px"}})})]}),z&&(0,c.jsx)(b.Z,{onClick:()=>{K.current&&(K.current.abort(),K.current=null,q(!1),eo.Z.info("Request cancelled"))},className:"bg-red-50 hover:bg-red-100 text-red-600 border-red-200",icon:ep.Z,children:"Cancel"})]})]})]})]})}),(0,c.jsxs)(T.Z,{title:"Generated Code",visible:ey,onCancel:()=>eb(!1),footer:null,width:800,children:[(0,c.jsxs)("div",{className:"flex justify-between items-end my-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium block mb-1 text-gray-700",children:"SDK Type"}),(0,c.jsx)(I.default,{value:eZ,onChange:e=>ew(e),style:{width:150},options:[{value:"openai",label:"OpenAI SDK"},{value:"azure",label:"Azure SDK"}]})]}),(0,c.jsx)(L.ZP,{onClick:()=>{navigator.clipboard.writeText(e_),eo.Z.success("Copied to clipboard!")},children:"Copy to Clipboard"})]}),(0,c.jsx)(af.Z,{language:"python",style:rk.Z,wrapLines:!0,wrapLongLines:!0,className:"rounded-md",customStyle:{maxHeight:"60vh",overflowY:"auto"},children:e_})]}),"custom"===g&&(0,c.jsx)(T.Z,{title:"Select MCP Tool",visible:i,onCancel:()=>n(!1),onOk:()=>{n(!1),eo.Z.success("MCP tool selection updated")},width:800,children:h?(0,c.jsx)("div",{className:"flex justify-center items-center py-8",children:(0,c.jsx)(eF.Z,{indicator:(0,c.jsx)(r4.Z,{style:{fontSize:24},spin:!0})})}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)(k.Z,{className:"text-gray-600 block mb-4",children:"Select the MCP tools you want to use in your conversation."}),(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select MCP tools",value:u,onChange:e=>x(e),optionLabelProp:"label",allowClear:!0,maxTagCount:"responsive",children:o.map(e=>(0,c.jsx)(I.default.Option,{value:e.name,label:(0,c.jsx)("div",{className:"font-medium",children:e.name}),children:(0,c.jsxs)("div",{className:"flex flex-col py-1",children:[(0,c.jsx)("span",{className:"font-medium",children:e.name}),(0,c.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.description})]})},e.name))})]})})]})},ir=t(19226),ii=t(45937),io=t(28595),ic=t(68208),id=t(9775),im=t(41361),iu=t(37527),ix=t(88009),ih=t(48231),ip=t(41169),ig=t(55322),ij=t(11429),iv=t(70525),iy=t(95805),ib=t(51817),i_=t(21047);t(22135),t(40875);var iN=t(49663);let iZ=function(){for(var e=arguments.length,s=Array(e),t=0;t{(async()=>{if(s){u(!0),h(null);try{let e=await (0,j.getRemainingUsers)(s);o(e)}catch(e){console.error("Failed to fetch usage data:",e),h("Failed to load usage data")}finally{u(!1)}}})()},[s]);let{isOverLimit:p,isNearLimit:g,usagePercentage:f,userMetrics:v,teamMetrics:y}=(e=>{if(!e)return{isOverLimit:!1,isNearLimit:!1,usagePercentage:0,userMetrics:{isOverLimit:!1,isNearLimit:!1,usagePercentage:0},teamMetrics:{isOverLimit:!1,isNearLimit:!1,usagePercentage:0}};let s=!!e.total_users_remaining&&e.total_users_remaining<=0,t=!!e.total_users_remaining&&e.total_users_remaining<=5&&e.total_users_remaining>0,l=e.total_users?e.total_users_used/e.total_users*100:0,a=!!e.total_teams_remaining&&e.total_teams_remaining<=0,r=!!e.total_teams_remaining&&e.total_teams_remaining<=5&&e.total_teams_remaining>0,i=e.total_teams?e.total_teams_used/e.total_teams*100:0,n=s||a;return{isOverLimit:n,isNearLimit:(t||r)&&!n,usagePercentage:Math.max(l,i),userMetrics:{isOverLimit:s,isNearLimit:t,usagePercentage:l},teamMetrics:{isOverLimit:a,isNearLimit:r,usagePercentage:i}}})(n),b=()=>p?"red":g?"yellow":"green",_=()=>p?"Over Limit":g?"Near Limit":"Active",N=()=>p?(0,c.jsx)(lK.Z,{className:"h-3 w-3"}):g?(0,c.jsx)(iv.Z,{className:"h-3 w-3"}):null;return s&&((null==n?void 0:n.total_users)!==null||(null==n?void 0:n.total_teams)!==null)?(0,c.jsx)("div",{className:"fixed bottom-4 left-4 z-50",style:{width:"".concat(Math.min(t,220),"px")},children:(0,c.jsx)(()=>{if(r){let e=p||g;return(0,c.jsx)("button",{onClick:()=>i(!1),className:iZ("bg-white border border-gray-200 rounded-lg shadow-sm p-3 hover:shadow-md transition-all w-full",e&&p&&"border-red-200 bg-red-50",e&&g&&"border-yellow-200 bg-yellow-50"),title:"Show usage details",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(iy.Z,{className:"h-4 w-4 flex-shrink-0"}),e&&(0,c.jsx)("span",{className:"flex-shrink-0",children:N()}),(0,c.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium truncate",children:[n&&null!==n.total_users&&(0,c.jsxs)("span",{className:"flex-shrink-0",children:["U: ",n.total_users_used,"/",n.total_users]}),n&&null!==n.total_teams&&(0,c.jsxs)("span",{className:"flex-shrink-0",children:["T: ",n.total_teams_used,"/",n.total_teams]}),!n||null===n.total_users&&null===n.total_teams&&(0,c.jsx)("span",{className:"truncate",children:"Usage"})]})]})})}return m?(0,c.jsx)("div",{className:"bg-white border border-gray-200 rounded-lg shadow-sm p-4 w-full",children:(0,c.jsxs)("div",{className:"flex items-center justify-center gap-2 py-2",children:[(0,c.jsx)(ib.Z,{className:"h-4 w-4 animate-spin"}),(0,c.jsx)("span",{className:"text-sm text-gray-500 truncate",children:"Loading..."})]})}):x||!n?(0,c.jsx)("div",{className:"bg-white border border-gray-200 rounded-lg shadow-sm p-4 group w-full",children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex-1 min-w-0",children:(0,c.jsx)("span",{className:"text-sm text-gray-500 truncate block",children:x||"No data"})}),(0,c.jsx)("button",{onClick:()=>i(!0),className:"opacity-0 group-hover:opacity-100 p-1 hover:bg-gray-100 rounded transition-all flex-shrink-0",title:"Minimize",children:(0,c.jsx)(i_.Z,{className:"h-3 w-3 text-gray-400"})})]})}):(0,c.jsxs)("div",{className:iZ("bg-white border rounded-lg shadow-sm p-3 transition-all duration-200 group w-full",p&&"border-red-200 bg-red-50",g&&"border-yellow-200 bg-yellow-50"),children:[(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2 mb-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[(0,c.jsx)(iy.Z,{className:"h-4 w-4 flex-shrink-0"}),(0,c.jsx)("span",{className:"font-medium text-sm truncate",children:"Usage"}),(p||g)&&(0,c.jsx)(se.Z,{color:b(),className:"text-xs px-1.5 py-0.5 flex-shrink-0",children:_()})]}),(0,c.jsx)("button",{onClick:()=>i(!0),className:"opacity-0 group-hover:opacity-100 p-1 hover:bg-gray-100 rounded transition-all flex-shrink-0",title:"Minimize",children:(0,c.jsx)(i_.Z,{className:"h-3 w-3 text-gray-400"})})]}),(0,c.jsxs)("div",{className:"space-y-3 text-sm",children:[null!==n.total_users&&(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-1 text-xs text-gray-600 mb-1",children:[(0,c.jsx)(iy.Z,{className:"h-3 w-3"}),(0,c.jsx)("span",{className:"font-medium",children:"Users"})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Used:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[n.total_users_used,"/",n.total_users]})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Remaining:"}),(0,c.jsx)("span",{className:iZ("font-medium text-right",v.isOverLimit&&"text-red-600",v.isNearLimit&&"text-yellow-600"),children:n.total_users_remaining})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Usage:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[Math.round(v.usagePercentage),"%"]})]}),(0,c.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,c.jsx)("div",{className:iZ("h-2 rounded-full transition-all duration-300",v.isOverLimit&&"bg-red-500",v.isNearLimit&&"bg-yellow-500",!v.isOverLimit&&!v.isNearLimit&&"bg-green-500"),style:{width:"".concat(Math.min(v.usagePercentage,100),"%")}})})]}),null!==n.total_teams&&(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-1 text-xs text-gray-600 mb-1",children:[(0,c.jsx)(iN.Z,{className:"h-3 w-3"}),(0,c.jsx)("span",{className:"font-medium",children:"Teams"})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Used:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[n.total_teams_used,"/",n.total_teams]})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Remaining:"}),(0,c.jsx)("span",{className:iZ("font-medium text-right",y.isOverLimit&&"text-red-600",y.isNearLimit&&"text-yellow-600"),children:n.total_teams_remaining})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Usage:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[Math.round(y.usagePercentage),"%"]})]}),(0,c.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,c.jsx)("div",{className:iZ("h-2 rounded-full transition-all duration-300",y.isOverLimit&&"bg-red-500",y.isNearLimit&&"bg-yellow-500",!y.isOverLimit&&!y.isNearLimit&&"bg-green-500"),style:{width:"".concat(Math.min(y.usagePercentage,100),"%")}})})]})]})]})},{})}):null}var ik=t(13959);let{Sider:iS}=ir.default;var iC=e=>{let{accessToken:s,setPage:t,userRole:l,defaultSelectedKey:a,collapsed:r=!1}=e,i=[{key:"1",page:"api-keys",label:"Virtual Keys",icon:(0,c.jsx)(l2.Z,{style:{fontSize:"18px"}})},{key:"3",page:"llm-playground",label:"Test Key",icon:(0,c.jsx)(io.Z,{style:{fontSize:"18px"}}),roles:eI.LQ},{key:"2",page:"models",label:"Models + Endpoints",icon:(0,c.jsx)(ic.Z,{style:{fontSize:"18px"}}),roles:eI.LQ},{key:"12",page:"new_usage",label:"Usage",icon:(0,c.jsx)(id.Z,{style:{fontSize:"18px"}}),roles:[...eI.ZL,...eI.lo]},{key:"6",page:"teams",label:"Teams",icon:(0,c.jsx)(im.Z,{style:{fontSize:"18px"}})},{key:"17",page:"organizations",label:"Organizations",icon:(0,c.jsx)(iu.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"5",page:"users",label:"Internal Users",icon:(0,c.jsx)(r9.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"14",page:"api_ref",label:"API Reference",icon:(0,c.jsx)(lu.Z,{style:{fontSize:"18px"}})},{key:"16",page:"model-hub-table",label:"Model Hub",icon:(0,c.jsx)(ix.Z,{style:{fontSize:"18px"}})},{key:"15",page:"logs",label:"Logs",icon:(0,c.jsx)(ih.Z,{style:{fontSize:"18px"}})},{key:"11",page:"guardrails",label:"Guardrails",icon:(0,c.jsx)(r6.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"26",page:"tools",label:"Tools",icon:(0,c.jsx)(rM.Z,{style:{fontSize:"18px"}}),children:[{key:"18",page:"mcp-servers",label:"MCP Servers",icon:(0,c.jsx)(rM.Z,{style:{fontSize:"18px"}})},{key:"21",page:"vector-stores",label:"Vector Stores",icon:(0,c.jsx)(r3.Z,{style:{fontSize:"18px"}}),roles:eI.ZL}]},{key:"experimental",page:"experimental",label:"Experimental",icon:(0,c.jsx)(ip.Z,{style:{fontSize:"18px"}}),children:[{key:"9",page:"caching",label:"Caching",icon:(0,c.jsx)(r3.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"25",page:"prompts",label:"Prompts",icon:(0,c.jsx)(eh.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"10",page:"budgets",label:"Budgets",icon:(0,c.jsx)(iu.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"20",page:"transform-request",label:"API Playground",icon:(0,c.jsx)(lu.Z,{style:{fontSize:"18px"}}),roles:[...eI.ZL,...eI.lo]},{key:"19",page:"tag-management",label:"Tag Management",icon:(0,c.jsx)(r5.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"4",page:"usage",label:"Old Usage",icon:(0,c.jsx)(id.Z,{style:{fontSize:"18px"}})}]},{key:"settings",page:"settings",label:"Settings",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL,children:[{key:"11",page:"general-settings",label:"Router Settings",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"8",page:"settings",label:"Logging & Alerts",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"13",page:"admin-panel",label:"Admin Settings",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"14",page:"ui-theme",label:"UI Theme",icon:(0,c.jsx)(ij.Z,{style:{fontSize:"18px"}}),roles:eI.ZL}]}],n=(e=>{let s=i.find(s=>s.page===e);if(s)return s.key;for(let s of i)if(s.children){let t=s.children.find(s=>s.page===e);if(t)return t.key}return"1"})(a),o=i.filter(e=>{let s=!e.roles||e.roles.includes(l);return console.log("Menu item ".concat(e.label,": roles=").concat(e.roles,", userRole=").concat(l,", hasAccess=").concat(s)),!!s&&(e.children&&(e.children=e.children.filter(e=>!e.roles||e.roles.includes(l))),!0)});return(0,c.jsx)(ir.default,{style:{minHeight:"100vh"},children:(0,c.jsxs)(iS,{theme:"light",width:220,collapsed:r,collapsedWidth:80,collapsible:!0,trigger:null,style:{transition:"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",position:"relative"},children:[(0,c.jsx)(ik.ZP,{theme:{components:{Menu:{iconSize:18,fontSize:14}}},children:(0,c.jsx)(ii.Z,{mode:"inline",selectedKeys:[n],defaultOpenKeys:r?[]:["llm-tools"],inlineCollapsed:r,className:"custom-sidebar-menu",style:{borderRight:0,backgroundColor:"transparent",fontSize:"14px"},items:o.map(e=>{var s;return{key:e.key,icon:e.icon,label:e.label,children:null===(s=e.children)||void 0===s?void 0:s.map(e=>({key:e.key,icon:e.icon,label:e.label,onClick:()=>{let s=new URLSearchParams(window.location.search);s.set("page",e.page),window.history.pushState(null,"","?".concat(s.toString())),t(e.page)}})),onClick:e.children?void 0:()=>{let s=new URLSearchParams(window.location.search);s.set("page",e.page),window.history.pushState(null,"","?".concat(s.toString())),t(e.page)}}})})}),(0,eI.tY)(l)&&!r&&(0,c.jsx)(iw,{accessToken:s,width:220})]})})},iI=t(96889),iA=t(92414),iT=t(46030);console.log("process.env.NODE_ENV","production");let iE=e=>null!==e&&("Admin"===e||"Admin Viewer"===e);var iL=e=>{let{accessToken:s,token:t,userRole:l,userID:a,keys:r,premiumUser:i}=e,n=new Date,[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)([]),[_,N]=(0,d.useState)([]),[Z,w]=(0,d.useState)([]),[C,I]=(0,d.useState)([]),[A,T]=(0,d.useState)([]),[E,L]=(0,d.useState)([]),[P,M]=(0,d.useState)([]),[O,D]=(0,d.useState)({}),[F,R]=(0,d.useState)([]),[z,U]=(0,d.useState)(""),[q,V]=(0,d.useState)(["all-tags"]),[B,K]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[H,Y]=(0,d.useState)(null),[J,W]=(0,d.useState)(0),$=new Date(n.getFullYear(),n.getMonth(),1),Q=new Date(n.getFullYear(),n.getMonth()+1,0),X=er($),ee=er(Q);function es(e){return new Intl.NumberFormat("en-US",{maximumFractionDigits:0,notation:"compact",compactDisplay:"short"}).format(e)}console.log("keys in usage",r),console.log("premium user in usage",i);let et=async()=>{if(s)try{let e=await (0,j.getProxyUISettings)(s);return console.log("usage tab: proxy_settings",e),e}catch(e){console.error("Error fetching proxy settings:",e)}};(0,d.useEffect)(()=>{ea(B.from,B.to)},[B,q]);let el=async(e,t,l)=>{if(!e||!t||!s)return;console.log("uiSelectedKey",l);let a=await (0,j.adminTopEndUsersCall)(s,l,e.toISOString(),t.toISOString());console.log("End user data updated successfully",a),f(a)},ea=async(e,t)=>{if(!e||!t||!s)return;let l=await et();null!=l&&l.DISABLE_EXPENSIVE_DB_QUERIES||(w((await (0,j.tagsSpendLogsCall)(s,e.toISOString(),t.toISOString(),0===q.length?void 0:q)).spend_per_tag),console.log("Tag spend data updated successfully"))};function er(e){let s=e.getFullYear(),t=e.getMonth()+1,l=e.getDate();return"".concat(s,"-").concat(t<10?"0"+t:t,"-").concat(l<10?"0"+l:l)}console.log("Start date is ".concat(X)),console.log("End date is ".concat(ee));let en=async(e,s,t)=>{try{let t=await e();s(t)}catch(e){console.error(t,e)}},eo=(e,s,t,l)=>{let a=[],r=new Date(s),i=e=>{if(e.includes("-"))return e;{let[s,t]=e.split(" ");return new Date(new Date().getFullYear(),new Date("".concat(s," 01 2024")).getMonth(),parseInt(t)).toISOString().split("T")[0]}},n=new Map(e.map(e=>{let s=i(e.date);return[s,{...e,date:s}]}));for(;r<=t;){let e=r.toISOString().split("T")[0];if(n.has(e))a.push(n.get(e));else{let s={date:e,api_requests:0,total_tokens:0};l.forEach(e=>{s[e]||(s[e]=0)}),a.push(s)}r.setDate(r.getDate()+1)}return a},ec=async()=>{if(s)try{let e=await (0,j.adminSpendLogsCall)(s),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0),r=eo(e,l,a,[]),i=Number(r.reduce((e,s)=>e+(s.spend||0),0).toFixed(2));W(i),m(r)}catch(e){console.error("Error fetching overall spend:",e)}},ed=()=>en(()=>s&&t?(0,j.adminspendByProvider)(s,t,X,ee):Promise.reject("No access token or token"),M,"Error fetching provider spend"),em=async()=>{s&&await en(async()=>(await (0,j.adminTopKeysCall)(s)).map(e=>({key:e.api_key.substring(0,10),api_key:e.api_key,key_alias:e.key_alias,spend:Number(e.total_spend.toFixed(2))})),x,"Error fetching top keys")},eu=async()=>{s&&await en(async()=>(await (0,j.adminTopModelsCall)(s)).map(e=>({key:e.model,spend:eP(e.total_spend,2)})),p,"Error fetching top models")},ex=async()=>{s&&await en(async()=>{let e=await (0,j.teamSpendLogsCall)(s),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0);return N(eo(e.daily_spend,l,a,e.teams)),T(e.teams),e.total_spend_per_team.map(e=>({name:e.team_id||"",value:eP(e.total_spend||0,2)}))},L,"Error fetching team spend")},eh=()=>{s&&en(async()=>(await (0,j.allTagNamesCall)(s)).tag_names,I,"Error fetching tag names")},ep=()=>{s&&en(()=>{var e,t;return(0,j.tagsSpendLogsCall)(s,null===(e=B.from)||void 0===e?void 0:e.toISOString(),null===(t=B.to)||void 0===t?void 0:t.toISOString(),void 0)},e=>w(e.spend_per_tag),"Error fetching top tags")},eg=()=>{s&&en(()=>(0,j.adminTopEndUsersCall)(s,null,void 0,void 0),f,"Error fetching top end users")},ej=async()=>{if(s)try{let e=await (0,j.adminGlobalActivity)(s,X,ee),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0),r=eo(e.daily_data||[],l,a,["api_requests","total_tokens"]);D({...e,daily_data:r})}catch(e){console.error("Error fetching global activity:",e)}},ef=async()=>{if(s)try{let e=await (0,j.adminGlobalActivityPerModel)(s,X,ee),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0),r=e.map(e=>({...e,daily_data:eo(e.daily_data||[],l,a,["api_requests","total_tokens"])}));R(r)}catch(e){console.error("Error fetching global activity per model:",e)}};return((0,d.useEffect)(()=>{(async()=>{if(s&&t&&l&&a){let e=await et();e&&(Y(e),null!=e&&e.DISABLE_EXPENSIVE_DB_QUERIES)||(console.log("fetching data - valiue of proxySettings",H),ec(),ed(),em(),eu(),ej(),ef(),iE(l)&&(ex(),eh(),ep(),eg()))}})()},[s,t,l,a,X,ee]),null==H?void 0:H.DISABLE_EXPENSIVE_DB_QUERIES)?(0,c.jsx)("div",{style:{width:"100%"},className:"p-8",children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Database Query Limit Reached"}),(0,c.jsxs)(k.Z,{className:"mt-4",children:["SpendLogs in DB has ",H.NUM_SPEND_LOGS_ROWS," rows.",(0,c.jsx)("br",{}),"Please follow our guide to view usage when SpendLogs has more than 1M rows."]}),(0,c.jsx)(b.Z,{className:"mt-4",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/spending_monitoring",target:"_blank",children:"View Usage Guide"})})]})}):(0,c.jsx)("div",{style:{width:"100%"},className:"p-8",children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mt-2",children:[(0,c.jsx)(ss.Z,{children:"All Up"}),iE(l)?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ss.Z,{children:"Team Based Usage"}),(0,c.jsx)(ss.Z,{children:"Customer Usage"}),(0,c.jsx)(ss.Z,{children:"Tag Based Usage"})]}):(0,c.jsx)(c.Fragment,{children:(0,c.jsx)("div",{})})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"solid",className:"mt-1",children:[(0,c.jsx)(ss.Z,{children:"Cost"}),(0,c.jsx)(ss.Z,{children:"Activity"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 h-[100vh] w-full",children:[(0,c.jsxs)(v.Z,{numColSpan:2,children:[(0,c.jsxs)(k.Z,{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content mb-2 mt-2 text-lg",children:["Project Spend ",new Date().toLocaleString("default",{month:"long"})," 1 -"," ",new Date(new Date().getFullYear(),new Date().getMonth()+1,0).getDate()]}),(0,c.jsx)(a1,{userID:a,userRole:l,accessToken:s,userSpend:J,selectedTeam:null,userMaxBudget:null})]}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Monthly Spend"}),(0,c.jsx)(to.Z,{data:o,index:"date",categories:["spend"],colors:["cyan"],valueFormatter:e=>"$ ".concat(eP(e,2)),yAxisWidth:100,tickGap:5})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)(S.Z,{children:"Top API Keys"}),(0,c.jsx)(a4,{topKeys:u,accessToken:s,userID:a,userRole:l,teams:null,premiumUser:i})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)(S.Z,{children:"Top Models"}),(0,c.jsx)(to.Z,{className:"mt-4 h-40",data:h,index:"key",categories:["spend"],colors:["cyan"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1,valueFormatter:e=>"$".concat(eP(e,2))})]})}),(0,c.jsx)(v.Z,{numColSpan:1}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{className:"mb-2",children:[(0,c.jsx)(S.Z,{children:"Spend by Provider"}),(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(a$.Z,{className:"mt-4 h-40",variant:"pie",data:P,index:"provider",category:"spend",colors:["cyan"],valueFormatter:e=>"$".concat(eP(e,2))})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Provider"}),(0,c.jsx)(sq.Z,{children:"Spend"})]})}),(0,c.jsx)(sR.Z,{children:P.map(e=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e.provider}),(0,c.jsx)(sz.Z,{children:1e-5>parseFloat(e.spend.toFixed(2))?"less than 0.00":eP(e.spend,2)})]},e.provider))})]})})]})})]})})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"All Up"}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["API Requests ",es(O.sum_api_requests)]}),(0,c.jsx)(tn.Z,{className:"h-40",data:O.daily_data,valueFormatter:es,index:"date",colors:["cyan"],categories:["api_requests"],onValueChange:e=>console.log(e)})]}),(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Tokens ",es(O.sum_total_tokens)]}),(0,c.jsx)(to.Z,{className:"h-40",data:O.daily_data,valueFormatter:es,index:"date",colors:["cyan"],categories:["total_tokens"],onValueChange:e=>console.log(e)})]})]})]}),(0,c.jsx)(c.Fragment,{children:F.map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:e.model}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["API Requests ",es(e.sum_api_requests)]}),(0,c.jsx)(tn.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["cyan"],categories:["api_requests"],valueFormatter:es,onValueChange:e=>console.log(e)})]}),(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Tokens ",es(e.sum_total_tokens)]}),(0,c.jsx)(to.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["cyan"],categories:["total_tokens"],valueFormatter:es,onValueChange:e=>console.log(e)})]})]})]},s))})]})})]})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(v.Z,{numColSpan:2,children:[(0,c.jsxs)(G.Z,{className:"mb-2",children:[(0,c.jsx)(S.Z,{children:"Total Spend Per Team"}),(0,c.jsx)(iI.Z,{data:E})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Daily Spend Per Team"}),(0,c.jsx)(to.Z,{className:"h-72",data:_,showLegend:!0,index:"date",categories:A,yAxisWidth:80,stack:!0})]})]}),(0,c.jsx)(v.Z,{numColSpan:2})]})}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)("p",{className:"mb-2 text-gray-500 italic text-[12px]",children:["Customers of your LLM API calls. Tracked when a `user` param is passed in your LLM calls"," ",(0,c.jsx)("a",{className:"text-blue-500",href:"https://docs.litellm.ai/docs/proxy/users",target:"_blank",children:"docs here"})]}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(ti,{value:B,onValueChange:e=>{K(e),el(e.from,e.to,null)}})}),(0,c.jsxs)(v.Z,{children:[(0,c.jsx)(k.Z,{children:"Select Key"}),(0,c.jsxs)(e9.Z,{defaultValue:"all-keys",children:[(0,c.jsx)(ei.Z,{value:"all-keys",onClick:()=>{el(B.from,B.to,null)},children:"All Keys"},"all-keys"),null==r?void 0:r.map((e,s)=>e&&null!==e.key_alias&&e.key_alias.length>0?(0,c.jsx)(ei.Z,{value:String(s),onClick:()=>{el(B.from,B.to,e.token)},children:e.key_alias},s):null)]})]})]}),(0,c.jsx)(G.Z,{className:"mt-4",children:(0,c.jsxs)(sF.Z,{className:"max-h-[70vh] min-h-[500px]",children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Customer"}),(0,c.jsx)(sq.Z,{children:"Spend"}),(0,c.jsx)(sq.Z,{children:"Total Events"})]})}),(0,c.jsx)(sR.Z,{children:null==g?void 0:g.map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e.end_user}),(0,c.jsx)(sz.Z,{children:eP(e.total_spend,2)}),(0,c.jsx)(sz.Z,{children:e.total_count})]},s))})]})})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(ti,{className:"mb-4",value:B,onValueChange:e=>{K(e),ea(e.from,e.to)}})}),(0,c.jsx)(v.Z,{children:i?(0,c.jsx)("div",{children:(0,c.jsxs)(iA.Z,{value:q,onValueChange:e=>V(e),children:[(0,c.jsx)(iT.Z,{value:"all-tags",onClick:()=>V(["all-tags"]),children:"All Tags"},"all-tags"),C&&C.filter(e=>"all-tags"!==e).map((e,s)=>(0,c.jsx)(iT.Z,{value:String(e),children:e},e))]})}):(0,c.jsx)("div",{children:(0,c.jsxs)(iA.Z,{value:q,onValueChange:e=>V(e),children:[(0,c.jsx)(iT.Z,{value:"all-tags",onClick:()=>V(["all-tags"]),children:"All Tags"},"all-tags"),C&&C.filter(e=>"all-tags"!==e).map((e,s)=>(0,c.jsxs)(ei.Z,{value:String(e),disabled:!0,children:["✨ ",e," (Enterprise only Feature)"]},e))]})})})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 h-[75vh] w-full mb-4",children:[(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Spend Per Tag"}),(0,c.jsxs)(k.Z,{children:["Get Started by Tracking cost per tag"," ",(0,c.jsx)("a",{className:"text-blue-500",href:"https://docs.litellm.ai/docs/proxy/cost_tracking",target:"_blank",children:"here"})]}),(0,c.jsx)(to.Z,{className:"h-72",data:Z,index:"name",categories:["spend"],colors:["cyan"]})]})}),(0,c.jsx)(v.Z,{numColSpan:2})]})]})]})]})})},iP=t(51853);let iM=e=>{let{responseTimeMs:s}=e;return null==s?null:(0,c.jsxs)("div",{className:"flex items-center space-x-1 text-xs text-gray-500 font-mono",children:[(0,c.jsx)("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{d:"M12 6V12L16 14M12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2Z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),(0,c.jsxs)("span",{children:[s.toFixed(0),"ms"]})]})},iO=e=>{let s=e;if("string"==typeof s)try{s=JSON.parse(s)}catch(e){}return s},iD=e=>{let{label:s,value:t}=e,[l,a]=d.useState(!1),[r,i]=d.useState(!1),n=(null==t?void 0:t.toString())||"N/A",o=n.length>50?n.substring(0,50)+"...":n;return(0,c.jsx)("tr",{className:"hover:bg-gray-50",children:(0,c.jsx)("td",{className:"px-4 py-2 align-top",colSpan:2,children:(0,c.jsxs)("div",{className:"flex items-center justify-between group",children:[(0,c.jsxs)("div",{className:"flex items-center flex-1",children:[(0,c.jsx)("button",{onClick:()=>a(!l),className:"text-gray-400 hover:text-gray-600 mr-2",children:l?"▼":"▶"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-sm text-gray-600",children:s}),(0,c.jsx)("pre",{className:"mt-1 text-sm font-mono text-gray-800 whitespace-pre-wrap",children:l?n:o})]})]}),(0,c.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(n),i(!0),setTimeout(()=>i(!1),2e3)},className:"opacity-0 group-hover:opacity-100 text-gray-400 hover:text-gray-600",children:(0,c.jsx)(iP.Z,{className:"h-4 w-4"})})]})})})},iF=e=>{var s,t,l,a,r,i,n,o,d,m,u,x,h,p;let{response:g}=e,j=null,f={},v={};try{if(null==g?void 0:g.error)try{let e="string"==typeof g.error.message?JSON.parse(g.error.message):g.error.message;j={message:(null==e?void 0:e.message)||"Unknown error",traceback:(null==e?void 0:e.traceback)||"No traceback available",litellm_params:(null==e?void 0:e.litellm_cache_params)||{},health_check_cache_params:(null==e?void 0:e.health_check_cache_params)||{}},f=iO(j.litellm_params)||{},v=iO(j.health_check_cache_params)||{}}catch(e){console.warn("Error parsing error details:",e),j={message:String(g.error.message||"Unknown error"),traceback:"Error parsing details",litellm_params:{},health_check_cache_params:{}}}else f=iO(null==g?void 0:g.litellm_cache_params)||{},v=iO(null==g?void 0:g.health_check_cache_params)||{}}catch(e){console.warn("Error in response parsing:",e),f={},v={}}let y={redis_host:(null==v?void 0:null===(l=v.redis_client)||void 0===l?void 0:null===(t=l.connection_pool)||void 0===t?void 0:null===(s=t.connection_kwargs)||void 0===s?void 0:s.host)||(null==v?void 0:null===(i=v.redis_async_client)||void 0===i?void 0:null===(r=i.connection_pool)||void 0===r?void 0:null===(a=r.connection_kwargs)||void 0===a?void 0:a.host)||(null==v?void 0:null===(n=v.connection_kwargs)||void 0===n?void 0:n.host)||(null==v?void 0:v.host)||"N/A",redis_port:(null==v?void 0:null===(m=v.redis_client)||void 0===m?void 0:null===(d=m.connection_pool)||void 0===d?void 0:null===(o=d.connection_kwargs)||void 0===o?void 0:o.port)||(null==v?void 0:null===(h=v.redis_async_client)||void 0===h?void 0:null===(x=h.connection_pool)||void 0===x?void 0:null===(u=x.connection_kwargs)||void 0===u?void 0:u.port)||(null==v?void 0:null===(p=v.connection_kwargs)||void 0===p?void 0:p.port)||(null==v?void 0:v.port)||"N/A",redis_version:(null==v?void 0:v.redis_version)||"N/A",startup_nodes:(()=>{try{var e,s,t,l,a,r,i,n,o,c,d,m,u;if(null==v?void 0:null===(e=v.redis_kwargs)||void 0===e?void 0:e.startup_nodes)return JSON.stringify(v.redis_kwargs.startup_nodes);let x=(null==v?void 0:null===(l=v.redis_client)||void 0===l?void 0:null===(t=l.connection_pool)||void 0===t?void 0:null===(s=t.connection_kwargs)||void 0===s?void 0:s.host)||(null==v?void 0:null===(i=v.redis_async_client)||void 0===i?void 0:null===(r=i.connection_pool)||void 0===r?void 0:null===(a=r.connection_kwargs)||void 0===a?void 0:a.host),h=(null==v?void 0:null===(c=v.redis_client)||void 0===c?void 0:null===(o=c.connection_pool)||void 0===o?void 0:null===(n=o.connection_kwargs)||void 0===n?void 0:n.port)||(null==v?void 0:null===(u=v.redis_async_client)||void 0===u?void 0:null===(m=u.connection_pool)||void 0===m?void 0:null===(d=m.connection_kwargs)||void 0===d?void 0:d.port);return x&&h?JSON.stringify([{host:x,port:h}]):"N/A"}catch(e){return"N/A"}})(),namespace:(null==v?void 0:v.namespace)||"N/A"};return(0,c.jsx)("div",{className:"bg-white rounded-lg shadow",children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"border-b border-gray-200 px-4",children:[(0,c.jsx)(ss.Z,{className:"px-4 py-2 text-sm font-medium text-gray-600 hover:text-gray-800",children:"Summary"}),(0,c.jsx)(ss.Z,{className:"px-4 py-2 text-sm font-medium text-gray-600 hover:text-gray-800",children:"Raw Response"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{className:"p-4",children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-6",children:[(null==g?void 0:g.status)==="healthy"?(0,c.jsx)(eb.Z,{className:"h-5 w-5 text-green-500 mr-2"}):(0,c.jsx)(ey.Z,{className:"h-5 w-5 text-red-500 mr-2"}),(0,c.jsxs)(k.Z,{className:"text-sm font-medium ".concat((null==g?void 0:g.status)==="healthy"?"text-green-500":"text-red-500"),children:["Cache Status: ",(null==g?void 0:g.status)||"unhealthy"]})]}),(0,c.jsx)("table",{className:"w-full border-collapse",children:(0,c.jsxs)("tbody",{children:[j&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("tr",{children:(0,c.jsx)("td",{colSpan:2,className:"pt-4 pb-2 font-semibold text-red-600",children:"Error Details"})}),(0,c.jsx)(iD,{label:"Error Message",value:j.message}),(0,c.jsx)(iD,{label:"Traceback",value:j.traceback})]}),(0,c.jsx)("tr",{children:(0,c.jsx)("td",{colSpan:2,className:"pt-4 pb-2 font-semibold",children:"Cache Details"})}),(0,c.jsx)(iD,{label:"Cache Configuration",value:String(null==f?void 0:f.type)}),(0,c.jsx)(iD,{label:"Ping Response",value:String(g.ping_response)}),(0,c.jsx)(iD,{label:"Set Cache Response",value:g.set_cache_response||"N/A"}),(0,c.jsx)(iD,{label:"litellm_settings.cache_params",value:JSON.stringify(f,null,2)}),(null==f?void 0:f.type)==="redis"&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("tr",{children:(0,c.jsx)("td",{colSpan:2,className:"pt-4 pb-2 font-semibold",children:"Redis Details"})}),(0,c.jsx)(iD,{label:"Redis Host",value:y.redis_host||"N/A"}),(0,c.jsx)(iD,{label:"Redis Port",value:y.redis_port||"N/A"}),(0,c.jsx)(iD,{label:"Redis Version",value:y.redis_version||"N/A"}),(0,c.jsx)(iD,{label:"Startup Nodes",value:y.startup_nodes||"N/A"}),(0,c.jsx)(iD,{label:"Namespace",value:y.namespace||"N/A"})]})]})})]})}),(0,c.jsx)(sa.Z,{className:"p-4",children:(0,c.jsx)("div",{className:"bg-gray-50 rounded-md p-4 font-mono text-sm",children:(0,c.jsx)("pre",{className:"whitespace-pre-wrap break-words overflow-auto max-h-[500px]",children:(()=>{try{let e={...g,litellm_cache_params:f,health_check_cache_params:v},s=JSON.parse(JSON.stringify(e,(e,s)=>{if("string"==typeof s)try{return JSON.parse(s)}catch(e){}return s}));return JSON.stringify(s,null,2)}catch(e){return"Error formatting JSON: "+e.message}})()})})})]})]})})},iR=e=>{let{accessToken:s,healthCheckResponse:t,runCachingHealthCheck:l,responseTimeMs:a}=e,[r,i]=d.useState(null),[n,o]=d.useState(!1),m=async()=>{o(!0);let e=performance.now();await l(),i(performance.now()-e),o(!1)};return(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)(b.Z,{onClick:m,disabled:n,className:"bg-indigo-600 hover:bg-indigo-700 disabled:bg-indigo-400 text-white text-sm px-4 py-2 rounded-md",children:n?"Running Health Check...":"Run Health Check"}),(0,c.jsx)(iM,{responseTimeMs:r})]}),t&&(0,c.jsx)(iF,{response:t})]})},iz=e=>{if(e)return e.toISOString().split("T")[0]};function iU(e){return new Intl.NumberFormat("en-US",{maximumFractionDigits:0,notation:"compact",compactDisplay:"short"}).format(e)}var iq=e=>{let{accessToken:s,token:t,userRole:l,userID:a,premiumUser:r}=e,[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)("0"),[b,_]=(0,d.useState)("0"),[N,Z]=(0,d.useState)("0"),[w,S]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[C,I]=(0,d.useState)(""),[A,T]=(0,d.useState)("");(0,d.useEffect)(()=>{s&&w&&((async()=>{p(await (0,j.adminGlobalCacheActivity)(s,iz(w.from),iz(w.to)))})(),I(new Date().toLocaleString()))},[s]);let E=Array.from(new Set(h.map(e=>{var s;return null!==(s=null==e?void 0:e.api_key)&&void 0!==s?s:""}))),L=Array.from(new Set(h.map(e=>{var s;return null!==(s=null==e?void 0:e.model)&&void 0!==s?s:""})));Array.from(new Set(h.map(e=>{var s;return null!==(s=null==e?void 0:e.call_type)&&void 0!==s?s:""})));let P=async(e,t)=>{e&&t&&s&&p(await (0,j.adminGlobalCacheActivity)(s,iz(e),iz(t)))};(0,d.useEffect)(()=>{console.log("DATA IN CACHE DASHBOARD",h);let e=h;o.length>0&&(e=e.filter(e=>o.includes(e.api_key))),u.length>0&&(e=e.filter(e=>u.includes(e.model))),console.log("before processed data in cache dashboard",e);let s=0,t=0,l=0,a=e.reduce((e,a)=>{console.log("Processing item:",a),a.call_type||(console.log("Item has no call_type:",a),a.call_type="Unknown"),s+=(a.total_rows||0)-(a.cache_hit_true_rows||0),t+=a.cache_hit_true_rows||0,l+=a.cached_completion_tokens||0;let r=e.find(e=>e.name===a.call_type);return r?(r["LLM API requests"]+=(a.total_rows||0)-(a.cache_hit_true_rows||0),r["Cache hit"]+=a.cache_hit_true_rows||0,r["Cached Completion Tokens"]+=a.cached_completion_tokens||0,r["Generated Completion Tokens"]+=a.generated_completion_tokens||0):e.push({name:a.call_type,"LLM API requests":(a.total_rows||0)-(a.cache_hit_true_rows||0),"Cache hit":a.cache_hit_true_rows||0,"Cached Completion Tokens":a.cached_completion_tokens||0,"Generated Completion Tokens":a.generated_completion_tokens||0}),e},[]);f(iU(t)),_(iU(l));let r=t+s;r>0?Z((t/r*100).toFixed(2)):Z("0"),n(a),console.log("PROCESSED DATA IN CACHE DASHBOARD",a)},[o,u,w,h]);let M=async()=>{try{eo.Z.info("Running cache health check..."),T("");let e=await (0,j.cachingHealthCheckCall)(null!==s?s:"");console.log("CACHING HEALTH CHECK RESPONSE",e),T(e)}catch(s){let e;if(console.error("Error running health check:",s),s&&s.message)try{let t=JSON.parse(s.message);t.error&&(t=t.error),e=t}catch(t){e={message:s.message}}else e={message:"Unknown error occurred"};T({error:e})}};return(0,c.jsxs)(st.Z,{className:"gap-2 p-8 h-full w-full mt-2 mb-8",children:[(0,c.jsxs)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(ss.Z,{children:"Cache Analytics"}),(0,c.jsx)(ss.Z,{children:(0,c.jsx)("pre",{children:"Cache Health"})})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[C&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",C]}),(0,c.jsx)(sD.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center",onClick:()=>{I(new Date().toLocaleString())}})]})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(y.Z,{numItems:3,className:"gap-4 mt-4",children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(iA.Z,{placeholder:"Select API Keys",value:o,onValueChange:m,children:E.map(e=>(0,c.jsx)(iT.Z,{value:e,children:e},e))})}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(iA.Z,{placeholder:"Select Models",value:u,onValueChange:x,children:L.map(e=>(0,c.jsx)(iT.Z,{value:e,children:e},e))})}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(ti,{value:w,onValueChange:e=>{S(e),P(e.from,e.to)}})})]}),(0,c.jsxs)("div",{className:"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3 mt-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("p",{className:"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content",children:"Cache Hit Ratio"}),(0,c.jsx)("div",{className:"mt-2 flex items-baseline space-x-2.5",children:(0,c.jsxs)("p",{className:"text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong",children:[N,"%"]})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("p",{className:"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content",children:"Cache Hits"}),(0,c.jsx)("div",{className:"mt-2 flex items-baseline space-x-2.5",children:(0,c.jsx)("p",{className:"text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong",children:g})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("p",{className:"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content",children:"Cached Tokens"}),(0,c.jsx)("div",{className:"mt-2 flex items-baseline space-x-2.5",children:(0,c.jsx)("p",{className:"text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong",children:b})})]})]}),(0,c.jsx)(sX.Z,{className:"mt-4",children:"Cache Hits vs API Requests"}),(0,c.jsx)(to.Z,{title:"Cache Hits vs API Requests",data:i,stack:!0,index:"name",valueFormatter:iU,categories:["LLM API requests","Cache hit"],colors:["sky","teal"],yAxisWidth:48}),(0,c.jsx)(sX.Z,{className:"mt-4",children:"Cached Completion Tokens vs Generated Completion Tokens"}),(0,c.jsx)(to.Z,{className:"mt-6",data:i,stack:!0,index:"name",valueFormatter:iU,categories:["Generated Completion Tokens","Cached Completion Tokens"],colors:["sky","teal"],yAxisWidth:48})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(iR,{accessToken:s,healthCheckResponse:A,runCachingHealthCheck:M})})]})]})},iV=t(91810);(a=n||(n={})).PresidioPII="Presidio PII",a.Bedrock="Bedrock Guardrail",a.Lakera="Lakera";let iB={},iK=e=>{let s={};return s.PresidioPII="Presidio PII",s.Bedrock="Bedrock Guardrail",s.Lakera="Lakera",Object.entries(e).forEach(e=>{let[t,l]=e;l&&"object"==typeof l&&"ui_friendly_name"in l&&(s[t.split("_").map((e,s)=>e.charAt(0).toUpperCase()+e.slice(1)).join("")]=l.ui_friendly_name)}),iB=s,s},iG=()=>Object.keys(iB).length>0?iB:n,iH={PresidioPII:"presidio",Bedrock:"bedrock",Lakera:"lakera_v2"},iY=e=>{Object.entries(e).forEach(e=>{let[s,t]=e;t&&"object"==typeof t&&"ui_friendly_name"in t&&(iH[s.split("_").map((e,s)=>e.charAt(0).toUpperCase()+e.slice(1)).join("")]=s)})},iJ=e=>!!e&&"Presidio PII"===iG()[e],iW="../ui/assets/logos/",i$={"Presidio PII":"".concat(iW,"presidio.png"),"Bedrock Guardrail":"".concat(iW,"bedrock.svg"),Lakera:"".concat(iW,"lakeraai.jpeg"),"Azure Content Safety Prompt Shield":"".concat(iW,"presidio.png"),"Azure Content Safety Text Moderation":"".concat(iW,"presidio.png")},iQ=e=>{if(!e)return{logo:"",displayName:"-"};let s=Object.keys(iH).find(s=>iH[s].toLowerCase()===e.toLowerCase());if(!s)return{logo:"",displayName:e};let t=iG()[s];return{logo:i$[t]||"",displayName:t||e}};var iX=t(33866),i0=t(97416),i1=t(10798),i2=t(49638);let{Text:i4}=en.default,{Option:i5}=I.default,i3=e=>e.replace(/_/g," "),i6=e=>{switch(e){case"MASK":return(0,c.jsx)(i0.Z,{style:{marginRight:4}});case"BLOCK":return(0,c.jsx)(ll.Z,{style:{marginRight:4}});default:return null}},i8=e=>{let{categories:s,selectedCategories:t,onChange:l}=e;return(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-2",children:[(0,c.jsx)(i1.Z,{className:"text-gray-500 mr-1"}),(0,c.jsx)(i4,{className:"text-gray-500 font-medium",children:"Filter by category"})]}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select categories to filter by",style:{width:"100%"},onChange:l,value:t,allowClear:!0,showSearch:!0,optionFilterProp:"children",className:"mb-4",tagRender:e=>(0,c.jsx)(ls.Z,{color:"blue",closable:e.closable,onClose:e.onClose,className:"mr-2 mb-2",children:e.label}),children:s.map(e=>(0,c.jsx)(i5,{value:e.category,children:e.category},e.category))})]})},i7=e=>{let{onSelectAll:s,onUnselectAll:t,hasSelectedEntities:l}=e;return(0,c.jsxs)("div",{className:"bg-gray-50 p-5 rounded-lg mb-6 border border-gray-200 shadow-sm",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(i4,{strong:!0,className:"text-gray-700 text-base",children:"Quick Actions"}),(0,c.jsx)(B.Z,{title:"Apply action to all PII types at once",children:(0,c.jsx)("div",{className:"ml-2 text-gray-400 cursor-help text-xs",children:"ⓘ"})})]}),(0,c.jsx)(L.ZP,{type:"default",onClick:t,disabled:!l,icon:(0,c.jsx)(i2.Z,{}),className:"border-gray-300 hover:text-red-600 hover:border-red-300",children:"Unselect All"})]}),(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsx)(L.ZP,{type:"default",onClick:()=>s("MASK"),className:"flex items-center justify-center h-10 border-blue-200 hover:border-blue-300 hover:text-blue-700 bg-blue-50 hover:bg-blue-100 text-blue-600",block:!0,icon:(0,c.jsx)(i0.Z,{}),children:"Select All & Mask"}),(0,c.jsx)(L.ZP,{type:"default",onClick:()=>s("BLOCK"),className:"flex items-center justify-center h-10 border-red-200 hover:border-red-300 hover:text-red-700 bg-red-50 hover:bg-red-100 text-red-600",block:!0,icon:(0,c.jsx)(ll.Z,{}),children:"Select All & Block"})]})]})},i9=e=>{let{entities:s,selectedEntities:t,selectedActions:l,actions:a,onEntitySelect:r,onActionSelect:i,entityToCategoryMap:n}=e;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden shadow-sm",children:[(0,c.jsxs)("div",{className:"bg-gray-50 px-5 py-3 border-b flex",children:[(0,c.jsx)(i4,{strong:!0,className:"flex-1 text-gray-700",children:"PII Type"}),(0,c.jsx)(i4,{strong:!0,className:"w-32 text-right text-gray-700",children:"Action"})]}),(0,c.jsx)("div",{className:"max-h-[400px] overflow-y-auto",children:0===s.length?(0,c.jsx)("div",{className:"py-10 text-center text-gray-500",children:"No PII types match your filter criteria"}):s.map(e=>(0,c.jsxs)("div",{className:"px-5 py-3 flex items-center justify-between hover:bg-gray-50 border-b ".concat(t.includes(e)?"bg-blue-50":""),children:[(0,c.jsxs)("div",{className:"flex items-center flex-1",children:[(0,c.jsx)(eR.Z,{checked:t.includes(e),onChange:()=>r(e),className:"mr-3"}),(0,c.jsx)(i4,{className:t.includes(e)?"font-medium text-gray-900":"text-gray-700",children:i3(e)}),n.get(e)&&(0,c.jsx)(ls.Z,{className:"ml-2 text-xs",color:"blue",children:n.get(e)})]}),(0,c.jsx)("div",{className:"w-32",children:(0,c.jsx)(I.default,{value:t.includes(e)&&l[e]||"MASK",onChange:s=>i(e,s),style:{width:120},disabled:!t.includes(e),className:"".concat(t.includes(e)?"":"opacity-50"),dropdownMatchSelectWidth:!1,children:a.map(e=>(0,c.jsx)(i5,{value:e,children:(0,c.jsxs)("div",{className:"flex items-center",children:[i6(e),e]})},e))})})]},e))})]})},{Title:ne,Text:ns}=en.default;var nt=e=>{let{entities:s,actions:t,selectedEntities:l,selectedActions:a,onEntitySelect:r,onActionSelect:i,entityCategories:n=[]}=e,[o,m]=(0,d.useState)([]),u=new Map;n.forEach(e=>{e.entities.forEach(s=>{u.set(s,e.category)})});let x=s.filter(e=>0===o.length||o.includes(u.get(e)||""));return(0,c.jsxs)("div",{className:"pii-configuration",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-5",children:[(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsx)(ne,{level:4,className:"mb-0 font-semibold text-gray-800",children:"Configure PII Protection"})}),(0,c.jsx)(iX.Z,{count:l.length,showZero:!0,style:{backgroundColor:l.length>0?"#4f46e5":"#d9d9d9"},overflowCount:999,children:(0,c.jsxs)(ns,{className:"text-gray-500",children:[l.length," items selected"]})})]}),(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(i8,{categories:n,selectedCategories:o,onChange:m}),(0,c.jsx)(i7,{onSelectAll:e=>{s.forEach(s=>{l.includes(s)||r(s),i(s,e)})},onUnselectAll:()=>{l.forEach(e=>{r(e)})},hasSelectedEntities:l.length>0})]}),(0,c.jsx)(i9,{entities:x,selectedEntities:l,selectedActions:a,actions:t,onEntitySelect:r,onActionSelect:i,entityToCategoryMap:u})]})},nl=e=>{var s;let{selectedProvider:t,accessToken:l,providerParams:a=null,value:r=null}=e,[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(a),[u,x]=(0,d.useState)(null);if((0,d.useEffect)(()=>{if(a){m(a);return}let e=async()=>{if(l){n(!0),x(null);try{let e=await (0,j.getGuardrailProviderSpecificParams)(l);console.log("Provider params API response:",e),m(e),iK(e),iY(e)}catch(e){console.error("Error fetching provider params:",e),x("Failed to load provider parameters")}finally{n(!1)}}};a||e()},[l,a]),!t)return null;if(i)return(0,c.jsx)(eF.Z,{tip:"Loading provider parameters..."});if(u)return(0,c.jsx)("div",{className:"text-red-500",children:u});let h=null===(s=iH[t])||void 0===s?void 0:s.toLowerCase(),p=o&&o[h];if(console.log("Provider key:",h),console.log("Provider fields:",p),!p||0===Object.keys(p).length)return(0,c.jsx)("div",{children:"No configuration fields available for this provider."});console.log("Value:",r);let g=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=arguments.length>2?arguments[2]:void 0;return Object.entries(e).map(e=>{let[l,a]=e,i=s?"".concat(s,".").concat(l):l,n=t?t[l]:null==r?void 0:r[l];return(console.log("Field value:",n),"ui_friendly_name"===l||"optional_params"===l&&"nested"===a.type&&a.fields)?null:"nested"===a.type&&a.fields?(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"mb-2 font-medium",children:l}),(0,c.jsx)("div",{className:"ml-4 border-l-2 border-gray-200 pl-4",children:g(a.fields,i,n)})]},i):(0,c.jsx)(A.Z.Item,{name:i,label:l,tooltip:a.description,rules:a.required?[{required:!0,message:"".concat(l," is required")}]:void 0,children:"select"===a.type&&a.options?(0,c.jsx)(I.default,{placeholder:a.description,defaultValue:n||a.default_value,children:a.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"multiselect"===a.type&&a.options?(0,c.jsx)(I.default,{mode:"multiple",placeholder:a.description,defaultValue:n||a.default_value,children:a.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"bool"===a.type||"boolean"===a.type?(0,c.jsxs)(I.default,{placeholder:a.description,defaultValue:void 0!==n?String(n):a.default_value,children:[(0,c.jsx)(I.default.Option,{value:"true",children:"True"}),(0,c.jsx)(I.default.Option,{value:"false",children:"False"})]}):"number"===a.type?(0,c.jsx)(O,{step:1,width:400,placeholder:a.description,defaultValue:void 0!==n?Number(n):void 0}):l.includes("password")||l.includes("secret")||l.includes("key")?(0,c.jsx)(eW.o,{placeholder:a.description,type:"password",defaultValue:n||""}):(0,c.jsx)(eW.o,{placeholder:a.description,type:"text",defaultValue:n||""})},i)})};return(0,c.jsx)(c.Fragment,{children:g(p)})};let{Title:na}=en.default,nr=e=>{let{field:s,fieldKey:t,fullFieldKey:l,value:a}=e,[r,i]=d.useState([]),[n,o]=d.useState(s.dict_key_options||[]);d.useEffect(()=>{if(a&&"object"==typeof a){let e=Object.keys(a);i(e.map(e=>({key:e,id:"".concat(e,"_").concat(Date.now(),"_").concat(Math.random())}))),o((s.dict_key_options||[]).filter(s=>!e.includes(s)))}},[a,s.dict_key_options]);let m=e=>{e&&(i([...r,{key:e,id:"".concat(e,"_").concat(Date.now())}]),o(n.filter(s=>s!==e)))},u=(e,s)=>{i(r.filter(s=>s.id!==e)),o([...n,s].sort())};return(0,c.jsxs)("div",{className:"space-y-3",children:[r.map(e=>(0,c.jsxs)("div",{className:"flex items-center space-x-3 p-3 border rounded-lg",children:[(0,c.jsx)("div",{className:"w-24 font-medium text-sm",children:e.key}),(0,c.jsx)("div",{className:"flex-1",children:(0,c.jsx)(A.Z.Item,{name:Array.isArray(l)?[...l,e.key]:[l,e.key],style:{marginBottom:0},initialValue:a&&"object"==typeof a?a[e.key]:void 0,normalize:"number"===s.dict_value_type?e=>{if(null==e||""===e)return;let s=Number(e);return isNaN(s)?e:s}:void 0,children:"number"===s.dict_value_type?(0,c.jsx)(O,{step:1,width:200,placeholder:"Enter ".concat(e.key," value")}):"boolean"===s.dict_value_type?(0,c.jsxs)(I.default,{placeholder:"Select ".concat(e.key," value"),children:[(0,c.jsx)(I.default.Option,{value:!0,children:"True"}),(0,c.jsx)(I.default.Option,{value:!1,children:"False"})]}):(0,c.jsx)(eW.o,{placeholder:"Enter ".concat(e.key," value"),type:"text"})})}),(0,c.jsx)("button",{type:"button",className:"text-red-500 hover:text-red-700 text-sm",onClick:()=>u(e.id,e.key),children:"Remove"})]},e.id)),n.length>0&&(0,c.jsxs)("div",{className:"flex items-center space-x-3 mt-2",children:[(0,c.jsx)(I.default,{placeholder:"Select category to configure",style:{width:200},onSelect:e=>e&&m(e),value:void 0,children:n.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}),(0,c.jsx)("span",{className:"text-sm text-gray-500",children:"Select a category to add threshold configuration"})]})]})};var ni=e=>{let{optionalParams:s,parentFieldKey:t,values:l}=e,a=(e,s)=>{let a="".concat(t,".").concat(e),r=null==l?void 0:l[e];return(console.log("value",r),"dict"===s.type&&s.dict_key_options)?(0,c.jsxs)("div",{className:"mb-8 p-6 bg-gray-50 rounded-lg border border-gray-200",children:[(0,c.jsx)("div",{className:"mb-4 font-medium text-gray-900 text-base",children:e}),(0,c.jsx)("p",{className:"text-sm text-gray-600 mb-4",children:s.description}),(0,c.jsx)(nr,{field:s,fieldKey:e,fullFieldKey:[t,e],value:r})]},a):(0,c.jsx)("div",{className:"mb-8 p-6 bg-white rounded-lg border border-gray-200 shadow-sm",children:(0,c.jsx)(A.Z.Item,{name:[t,e],label:(0,c.jsxs)("div",{className:"mb-2",children:[(0,c.jsx)("div",{className:"font-medium text-gray-900 text-base",children:e}),(0,c.jsx)("p",{className:"text-sm text-gray-600 mt-1",children:s.description})]}),rules:s.required?[{required:!0,message:"".concat(e," is required")}]:void 0,className:"mb-0",initialValue:void 0!==r?r:s.default_value,normalize:"number"===s.type?e=>{if(null==e||""===e)return;let s=Number(e);return isNaN(s)?e:s}:void 0,children:"select"===s.type&&s.options?(0,c.jsx)(I.default,{placeholder:s.description,children:s.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"multiselect"===s.type&&s.options?(0,c.jsx)(I.default,{mode:"multiple",placeholder:s.description,children:s.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"bool"===s.type||"boolean"===s.type?(0,c.jsxs)(I.default,{placeholder:s.description,children:[(0,c.jsx)(I.default.Option,{value:"true",children:"True"}),(0,c.jsx)(I.default.Option,{value:"false",children:"False"})]}):"number"===s.type?(0,c.jsx)(O,{step:1,width:400,placeholder:s.description}):e.includes("password")||e.includes("secret")||e.includes("key")?(0,c.jsx)(eW.o,{placeholder:s.description,type:"password"}):(0,c.jsx)(eW.o,{placeholder:s.description,type:"text"})})},a)};return s.fields&&0!==Object.keys(s.fields).length?(0,c.jsxs)("div",{className:"guardrail-optional-params",children:[(0,c.jsxs)("div",{className:"mb-8 pb-4 border-b border-gray-100",children:[(0,c.jsx)(na,{level:3,className:"mb-2 font-semibold text-gray-900",children:"Optional Parameters"}),(0,c.jsx)("p",{className:"text-gray-600 text-sm",children:s.description||"Configure additional settings for this guardrail provider"})]}),(0,c.jsx)("div",{className:"space-y-8",children:Object.entries(s.fields).map(e=>{let[s,t]=e;return a(s,t)})})]}):null};let{Title:nn,Text:no,Link:nc}=en.default,{Option:nd}=I.default,{Step:nm}=iV.default,nu={pre_call:"Before LLM Call - Runs before the LLM call and checks the input (Recommended)",during_call:"During LLM Call - Runs in parallel with the LLM call, with response held until check completes",post_call:"After LLM Call - Runs after the LLM call and checks only the output",logging_only:"Logging Only - Only runs on logging callbacks without affecting the LLM call",pre_mcp_call:"Before MCP Tool Call - Runs before MCP tool execution and validates tool calls",during_mcp_call:"During MCP Tool Call - Runs in parallel with MCP tool execution for monitoring"};var nx=e=>{let{visible:s,onClose:t,accessToken:l,onSuccess:a}=e,[r]=A.Z.useForm(),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(null),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)({}),[v,y]=(0,d.useState)(0),[N,Z]=(0,d.useState)(null),[w,k]=(0,d.useState)([]),[S,C]=(0,d.useState)(2),[E,L]=(0,d.useState)({});(0,d.useEffect)(()=>{l&&(async()=>{try{let[e,s]=await Promise.all([(0,j.getGuardrailUISettings)(l),(0,j.getGuardrailProviderSpecificParams)(l)]);x(e),Z(s),iK(s),iY(s)}catch(e){console.error("Error fetching guardrail data:",e),eo.Z.fromBackend("Failed to load guardrail configuration")}})()},[l]);let P=e=>{m(e),r.setFieldsValue({config:void 0,presidio_analyzer_api_base:void 0,presidio_anonymizer_api_base:void 0}),p([]),f({}),k([]),C(2),L({})},M=e=>{p(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},O=(e,s)=>{f(t=>({...t,[e]:s}))},D=async()=>{try{if(0===v&&(await r.validateFields(["guardrail_name","provider","mode","default_on"]),o)){let e=["guardrail_name","provider","mode","default_on"];"PresidioPII"===o&&e.push("presidio_analyzer_api_base","presidio_anonymizer_api_base"),await r.validateFields(e)}if(1===v&&iJ(o)&&0===h.length){eo.Z.fromBackend("Please select at least one PII entity to continue");return}y(v+1)}catch(e){console.error("Form validation failed:",e)}},F=()=>{r.resetFields(),m(null),p([]),f({}),k([]),C(2),L({}),y(0)},R=()=>{F(),t()},z=async()=>{try{n(!0),await r.validateFields();let s=r.getFieldsValue(!0),i=iH[s.provider],c={guardrail_name:s.guardrail_name,litellm_params:{guardrail:i,mode:s.mode,default_on:s.default_on},guardrail_info:{}};if("PresidioPII"===s.provider&&h.length>0){let e={};h.forEach(s=>{e[s]=g[s]||"MASK"}),c.litellm_params.pii_entities_config=e,s.presidio_analyzer_api_base&&(c.litellm_params.presidio_analyzer_api_base=s.presidio_analyzer_api_base),s.presidio_anonymizer_api_base&&(c.litellm_params.presidio_anonymizer_api_base=s.presidio_anonymizer_api_base)}else if(s.config)try{let e=JSON.parse(s.config);c.guardrail_info=e}catch(e){eo.Z.fromBackend("Invalid JSON in configuration"),n(!1);return}if(console.log("values: ",JSON.stringify(s)),N&&o){var e;let t=null===(e=iH[o])||void 0===e?void 0:e.toLowerCase();console.log("providerKey: ",t);let l=N[t]||{},a=new Set;console.log("providerSpecificParams: ",JSON.stringify(l)),Object.keys(l).forEach(e=>{"optional_params"!==e&&a.add(e)}),l.optional_params&&l.optional_params.fields&&Object.keys(l.optional_params.fields).forEach(e=>{a.add(e)}),console.log("allowedParams: ",a),a.forEach(e=>{let t=s[e];if(null==t||""===t){var l;t=null===(l=s.optional_params)||void 0===l?void 0:l[e]}null!=t&&""!==t&&(c.litellm_params[e]=t)})}if(!l)throw Error("No access token available");console.log("Sending guardrail data:",JSON.stringify(c)),await (0,j.createGuardrailCall)(l,c),eo.Z.success("Guardrail created successfully"),F(),a(),t()}catch(e){console.error("Failed to create guardrail:",e),eo.Z.fromBackend("Failed to create guardrail: "+(e instanceof Error?e.message:String(e)))}finally{n(!1)}},U=()=>{var e;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{name:"guardrail_name",label:"Guardrail Name",rules:[{required:!0,message:"Please enter a guardrail name"}],children:(0,c.jsx)(_.Z,{placeholder:"Enter a name for this guardrail"})}),(0,c.jsx)(A.Z.Item,{name:"provider",label:"Guardrail Provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,c.jsx)(I.default,{placeholder:"Select a guardrail provider",onChange:P,labelInValue:!1,optionLabelProp:"label",dropdownRender:e=>e,showSearch:!0,children:Object.entries(iG()).map(e=>{let[s,t]=e;return(0,c.jsx)(nd,{value:s,label:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[i$[t]&&(0,c.jsx)("img",{src:i$[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,c.jsx)("span",{children:t})]}),children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[i$[t]&&(0,c.jsx)("img",{src:i$[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(A.Z.Item,{name:"mode",label:"Mode",tooltip:"How the guardrail should be applied",rules:[{required:!0,message:"Please select a mode"}],children:(0,c.jsx)(I.default,{optionLabelProp:"label",mode:"multiple",children:(null==u?void 0:null===(e=u.supported_modes)||void 0===e?void 0:e.map(e=>(0,c.jsx)(nd,{value:e,label:e,children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:e}),"pre_call"===e&&(0,c.jsx)(ls.Z,{color:"green",style:{marginLeft:"8px"},children:"Recommended"})]}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu[e]})]})},e)))||(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(nd,{value:"pre_call",label:"pre_call",children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"pre_call"})," ",(0,c.jsx)(ls.Z,{color:"green",children:"Recommended"})]}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu.pre_call})]})}),(0,c.jsx)(nd,{value:"during_call",label:"during_call",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{children:(0,c.jsx)("strong",{children:"during_call"})}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu.during_call})]})}),(0,c.jsx)(nd,{value:"post_call",label:"post_call",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{children:(0,c.jsx)("strong",{children:"post_call"})}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu.post_call})]})}),(0,c.jsx)(nd,{value:"logging_only",label:"logging_only",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{children:(0,c.jsx)("strong",{children:"logging_only"})}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu.logging_only})]})})]})})}),(0,c.jsx)(A.Z.Item,{name:"default_on",label:"Always On",tooltip:"If enabled, this guardrail will be applied to all requests by default.",children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:!0,children:"Yes"}),(0,c.jsx)(I.default.Option,{value:!1,children:"No"})]})}),(0,c.jsx)(nl,{selectedProvider:o,accessToken:l,providerParams:N})]})},q=()=>u&&"PresidioPII"===o?(0,c.jsx)(nt,{entities:u.supported_entities,actions:u.supported_actions,selectedEntities:h,selectedActions:g,onEntitySelect:M,onActionSelect:O,entityCategories:u.pii_entity_categories}):null,V=()=>{var e;if(!o||!N)return null;console.log("guardrail_provider_map: ",iH),console.log("selectedProvider: ",o);let s=null===(e=iH[o])||void 0===e?void 0:e.toLowerCase(),t=N&&N[s];return t&&t.optional_params?(0,c.jsx)(ni,{optionalParams:t.optional_params,parentFieldKey:"optional_params"}):null};return(0,c.jsx)(T.Z,{title:"Add Guardrail",open:s,onCancel:R,footer:null,width:700,children:(0,c.jsxs)(A.Z,{form:r,layout:"vertical",initialValues:{mode:"pre_call",default_on:!1},children:[(0,c.jsxs)(iV.default,{current:v,className:"mb-6",children:[(0,c.jsx)(nm,{title:"Basic Info"}),(0,c.jsx)(nm,{title:iJ(o)?"PII Configuration":"Provider Configuration"})]}),(()=>{switch(v){case 0:return U();case 1:if(iJ(o))return q();return V();default:return null}})(),(0,c.jsxs)("div",{className:"flex justify-end space-x-2 mt-4",children:[v>0&&(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{y(v-1)},children:"Previous"}),v<2&&(0,c.jsx)(b.Z,{onClick:D,children:"Next"}),2===v&&(0,c.jsx)(b.Z,{onClick:z,loading:i,children:"Create Guardrail"}),(0,c.jsx)(b.Z,{variant:"secondary",onClick:R,children:"Cancel"})]})]})})};let{Title:nh,Text:np}=en.default,{Option:ng}=I.default;var nj=e=>{var s;let{visible:t,onClose:l,accessToken:a,onSuccess:r,guardrailId:i,initialValues:n}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)((null==n?void 0:n.provider)||null),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)([]),[y,N]=(0,d.useState)({});(0,d.useEffect)(()=>{(async()=>{try{if(!a)return;let e=await (0,j.getGuardrailUISettings)(a);g(e)}catch(e){console.error("Error fetching guardrail settings:",e),eo.Z.fromBackend("Failed to load guardrail settings")}})()},[a]),(0,d.useEffect)(()=>{(null==n?void 0:n.pii_entities_config)&&Object.keys(n.pii_entities_config).length>0&&(v(Object.keys(n.pii_entities_config)),N(n.pii_entities_config))},[n]);let Z=e=>{v(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},w=(e,s)=>{N(t=>({...t,[e]:s}))},k=async()=>{try{u(!0);let e=await o.validateFields(),s=iH[e.provider],t={guardrail_id:i,guardrail:{guardrail_name:e.guardrail_name,litellm_params:{guardrail:s,mode:e.mode,default_on:e.default_on},guardrail_info:{}}};if("PresidioPII"===e.provider&&f.length>0){let e={};f.forEach(s=>{e[s]=y[s]||"MASK"}),t.guardrail.litellm_params.pii_entities_config=e}else if(e.config)try{let s=JSON.parse(e.config);"Bedrock"===e.provider&&s?(s.guardrail_id&&(t.guardrail.litellm_params.guardrailIdentifier=s.guardrail_id),s.guardrail_version&&(t.guardrail.litellm_params.guardrailVersion=s.guardrail_version)):t.guardrail.guardrail_info=s}catch(e){eo.Z.fromBackend("Invalid JSON in configuration"),u(!1);return}if(!a)throw Error("No access token available");console.log("Sending guardrail update data:",JSON.stringify(t));let n=await fetch("/guardrails/".concat(i),{method:"PUT",headers:{Authorization:"Bearer ".concat(a),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok){let e=await n.text();throw Error(e||"Failed to update guardrail")}eo.Z.success("Guardrail updated successfully"),r(),l()}catch(e){console.error("Failed to update guardrail:",e),eo.Z.fromBackend("Failed to update guardrail: "+(e instanceof Error?e.message:String(e)))}finally{u(!1)}},S=()=>p&&x&&"PresidioPII"===x?(0,c.jsx)(nt,{entities:p.supported_entities,actions:p.supported_actions,selectedEntities:f,selectedActions:y,onEntitySelect:Z,onActionSelect:w,entityCategories:p.pii_entity_categories}):null;return(0,c.jsx)(T.Z,{title:"Edit Guardrail",open:t,onCancel:l,footer:null,width:700,children:(0,c.jsxs)(A.Z,{form:o,layout:"vertical",initialValues:n,children:[(0,c.jsx)(A.Z.Item,{name:"guardrail_name",label:"Guardrail Name",rules:[{required:!0,message:"Please enter a guardrail name"}],children:(0,c.jsx)(_.Z,{placeholder:"Enter a name for this guardrail"})}),(0,c.jsx)(A.Z.Item,{name:"provider",label:"Guardrail Provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,c.jsx)(I.default,{placeholder:"Select a guardrail provider",onChange:e=>{h(e),o.setFieldsValue({config:void 0}),v([]),N({})},disabled:!0,optionLabelProp:"label",children:Object.entries(iG()).map(e=>{let[s,t]=e;return(0,c.jsx)(ng,{value:s,label:t,children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[i$[t]&&(0,c.jsx)("img",{src:i$[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(A.Z.Item,{name:"mode",label:"Mode",tooltip:"How the guardrail should be applied",rules:[{required:!0,message:"Please select a mode"}],children:(0,c.jsx)(I.default,{children:(null==p?void 0:null===(s=p.supported_modes)||void 0===s?void 0:s.map(e=>(0,c.jsx)(ng,{value:e,children:e},e)))||(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ng,{value:"pre_call",children:"pre_call"}),(0,c.jsx)(ng,{value:"post_call",children:"post_call"})]})})}),(0,c.jsx)(A.Z.Item,{name:"default_on",label:"Always On",tooltip:"If enabled, this guardrail will be applied to all requests by default",valuePropName:"checked",children:(0,c.jsx)(eJ.Z,{})}),(()=>{if(!x)return null;if("PresidioPII"===x)return S();switch(x){case"Aporia":return(0,c.jsx)(A.Z.Item,{label:"Aporia Configuration",name:"config",tooltip:"JSON configuration for Aporia",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_aporia_api_key",\n "project_name": "your_project_name"\n}'})});case"AimSecurity":return(0,c.jsx)(A.Z.Item,{label:"Aim Security Configuration",name:"config",tooltip:"JSON configuration for Aim Security",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_aim_api_key"\n}'})});case"Bedrock":return(0,c.jsx)(A.Z.Item,{label:"Amazon Bedrock Configuration",name:"config",tooltip:"JSON configuration for Amazon Bedrock guardrails",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "guardrail_id": "your_guardrail_id",\n "guardrail_version": "your_guardrail_version"\n}'})});case"GuardrailsAI":return(0,c.jsx)(A.Z.Item,{label:"Guardrails.ai Configuration",name:"config",tooltip:"JSON configuration for Guardrails.ai",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_guardrails_api_key",\n "guardrail_id": "your_guardrail_id"\n}'})});case"LakeraAI":return(0,c.jsx)(A.Z.Item,{label:"Lakera AI Configuration",name:"config",tooltip:"JSON configuration for Lakera AI",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_lakera_api_key"\n}'})});case"PromptInjection":return(0,c.jsx)(A.Z.Item,{label:"Prompt Injection Configuration",name:"config",tooltip:"JSON configuration for prompt injection detection",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "threshold": 0.8\n}'})});default:return(0,c.jsx)(A.Z.Item,{label:"Custom Configuration",name:"config",tooltip:"JSON configuration for your custom guardrail",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "key1": "value1",\n "key2": "value2"\n}'})})}})(),(0,c.jsxs)("div",{className:"flex justify-end space-x-2 mt-4",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:l,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:k,loading:m,children:"Update Guardrail"})]})]})})},nf=e=>{let{guardrailsList:s,isLoading:t,onDeleteClick:l,accessToken:a,onGuardrailUpdated:r,isAdmin:i=!1,onGuardrailClick:n}=e,[o,m]=(0,d.useState)([{id:"created_at",desc:!0}]),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(null),g=e=>e?new Date(e).toLocaleString():"-",j=[{header:"Guardrail ID",accessorKey:"guardrail_id",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>e.getValue()&&n(e.getValue()),children:e.getValue()?"".concat(String(e.getValue()).slice(0,7),"..."):""})})},{header:"Name",accessorKey:"guardrail_name",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.guardrail_name,children:(0,c.jsx)("span",{className:"text-xs font-medium",children:t.guardrail_name||"-"})})}},{header:"Provider",accessorKey:"litellm_params.guardrail",cell:e=>{let{row:s}=e,{logo:t,displayName:l}=iQ(s.original.litellm_params.guardrail);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[t&&(0,c.jsx)("img",{src:t,alt:"".concat(l," logo"),className:"w-4 h-4",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)("span",{className:"text-xs",children:l})]})}},{header:"Mode",accessorKey:"litellm_params.mode",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.litellm_params.mode})}},{header:"Default On",accessorKey:"litellm_params.default_on",cell:e=>{var s,t;let{row:l}=e,a=l.original;return(0,c.jsx)(se.Z,{color:(null===(s=a.litellm_params)||void 0===s?void 0:s.default_on)?"green":"gray",className:"text-xs font-normal",size:"xs",children:(null===(t=a.litellm_params)||void 0===t?void 0:t.default_on)?"Default On":"Default Off"})}},{header:"Created At",accessorKey:"created_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.created_at,children:(0,c.jsx)("span",{className:"text-xs",children:g(t.created_at)})})}},{header:"Updated At",accessorKey:"updated_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.updated_at,children:(0,c.jsx)("span",{className:"text-xs",children:g(t.updated_at)})})}},{id:"actions",header:"",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("div",{className:"flex space-x-2",children:(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>t.guardrail_id&&l(t.guardrail_id,t.guardrail_name||"Unnamed Guardrail"),className:"cursor-pointer hover:text-red-500",tooltip:"Delete guardrail"})})}}],f=(0,sM.b7)({data:s,columns:j,state:{sorting:o},onSortingChange:m,getCoreRowModel:(0,sO.sC)(),getSortedRowModel:(0,sO.tj)(),enableSorting:!0});return(0,c.jsxs)("div",{className:"rounded-lg custom-border relative",children:[(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sU.Z,{children:f.getHeaderGroups().map(e=>(0,c.jsx)(sV.Z,{children:e.headers.map(e=>(0,c.jsx)(sq.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sB.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sR.Z,{children:t?(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:j.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"Loading..."})})})}):s.length>0?f.getRowModel().rows.map(e=>(0,c.jsx)(sV.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sz.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:j.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No guardrails found"})})})})})]})}),h&&(0,c.jsx)(nj,{visible:u,onClose:()=>x(!1),accessToken:a,onSuccess:()=>{x(!1),p(null),r()},guardrailId:h.guardrail_id||"",initialValues:{guardrail_name:h.guardrail_name||"",provider:Object.keys(iH).find(e=>iH[e]===(null==h?void 0:h.litellm_params.guardrail))||"",mode:h.litellm_params.mode,default_on:h.litellm_params.default_on,pii_entities_config:h.litellm_params.pii_entities_config,...h.guardrail_info}})]})},nv=e=>{var s,t,l,a,r,i,n,o,m,u,x;let{guardrailId:h,onClose:p,accessToken:g,isAdmin:f}=e,[v,N]=(0,d.useState)(null),[Z,w]=(0,d.useState)(null),[C,T]=(0,d.useState)(!0),[E,M]=(0,d.useState)(!1),[O]=A.Z.useForm(),[D,F]=(0,d.useState)([]),[R,z]=(0,d.useState)({}),[U,q]=(0,d.useState)(null),[V,B]=(0,d.useState)({}),H=async()=>{try{var e;if(T(!0),!g)return;let s=await (0,j.getGuardrailInfo)(g,h);if(N(s),null===(e=s.litellm_params)||void 0===e?void 0:e.pii_entities_config){let e=s.litellm_params.pii_entities_config;if(F([]),z({}),Object.keys(e).length>0){let s=[],t={};Object.entries(e).forEach(e=>{let[l,a]=e;s.push(l),t[l]="string"==typeof a?a:"MASK"}),F(s),z(t)}}else F([]),z({})}catch(e){eo.Z.fromBackend("Failed to load guardrail information"),console.error("Error fetching guardrail info:",e)}finally{T(!1)}},Y=async()=>{try{if(!g)return;let e=await (0,j.getGuardrailProviderSpecificParams)(g);w(e)}catch(e){console.error("Error fetching guardrail provider specific params:",e)}},J=async()=>{try{if(!g)return;let e=await (0,j.getGuardrailUISettings)(g);q(e)}catch(e){console.error("Error fetching guardrail UI settings:",e)}};(0,d.useEffect)(()=>{Y()},[g]),(0,d.useEffect)(()=>{H(),J()},[h,g]),(0,d.useEffect)(()=>{if(v&&O){var e;O.setFieldsValue({guardrail_name:v.guardrail_name,...v.litellm_params,guardrail_info:v.guardrail_info?JSON.stringify(v.guardrail_info,null,2):"",...(null===(e=v.litellm_params)||void 0===e?void 0:e.optional_params)&&{optional_params:v.litellm_params.optional_params}})}},[v,Z,O]);let W=async e=>{try{var s,t,l;if(!g)return;let a={litellm_params:{}};e.guardrail_name!==v.guardrail_name&&(a.guardrail_name=e.guardrail_name),e.default_on!==(null===(s=v.litellm_params)||void 0===s?void 0:s.default_on)&&(a.litellm_params.default_on=e.default_on);let r=v.guardrail_info,i=e.guardrail_info?JSON.parse(e.guardrail_info):void 0;JSON.stringify(r)!==JSON.stringify(i)&&(a.guardrail_info=i);let n=(null===(t=v.litellm_params)||void 0===t?void 0:t.pii_entities_config)||{},o={};D.forEach(e=>{o[e]=R[e]||"MASK"}),JSON.stringify(n)!==JSON.stringify(o)&&(a.litellm_params.pii_entities_config=o);let c=Object.keys(iH).find(e=>{var s;return iH[e]===(null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)});if(console.log("values: ",JSON.stringify(e)),console.log("currentProvider: ",c),Z&&c){let s=Z[null===(l=iH[c])||void 0===l?void 0:l.toLowerCase()]||{},t=new Set;console.log("providerSpecificParams: ",JSON.stringify(s)),Object.keys(s).forEach(e=>{"optional_params"!==e&&t.add(e)}),s.optional_params&&s.optional_params.fields&&Object.keys(s.optional_params.fields).forEach(e=>{t.add(e)}),console.log("allowedParams: ",t),t.forEach(s=>{var t,l;let r=e[s];(null==r||""===r)&&(r=null===(l=e.optional_params)||void 0===l?void 0:l[s]);let i=null===(t=v.litellm_params)||void 0===t?void 0:t[s];JSON.stringify(r)!==JSON.stringify(i)&&(null!=r&&""!==r?a.litellm_params[s]=r:null!=i&&""!==i&&(a.litellm_params[s]=null))})}if(0===Object.keys(a.litellm_params).length&&delete a.litellm_params,0===Object.keys(a).length){eo.Z.info("No changes detected"),M(!1);return}await (0,j.updateGuardrailCall)(g,h,a),eo.Z.success("Guardrail updated successfully"),H(),M(!1)}catch(e){console.error("Error updating guardrail:",e),eo.Z.fromBackend("Failed to update guardrail")}};if(C)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!v)return(0,c.jsx)("div",{className:"p-4",children:"Guardrail not found"});let $=e=>e?new Date(e).toLocaleString():"-",{logo:Q,displayName:X}=iQ((null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)||""),ee=async(e,s)=>{await eM(e)&&(B(e=>({...e,[s]:!0})),setTimeout(()=>{B(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:p,className:"mb-4",children:"Back to Guardrails"}),(0,c.jsx)(S.Z,{children:v.guardrail_name||"Unnamed Guardrail"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:v.guardrail_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:V["guardrail-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>ee(v.guardrail_id,"guardrail-id"),className:"left-2 z-10 transition-all duration-200 ".concat(V["guardrail-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),f?(0,c.jsx)(ss.Z,{children:"Settings"},"settings"):(0,c.jsx)(c.Fragment,{})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Provider"}),(0,c.jsxs)("div",{className:"mt-2 flex items-center space-x-2",children:[Q&&(0,c.jsx)("img",{src:Q,alt:"".concat(X," logo"),className:"w-6 h-6",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)(S.Z,{children:X})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Mode"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:(null===(t=v.litellm_params)||void 0===t?void 0:t.mode)||"-"}),(0,c.jsx)(se.Z,{color:(null===(l=v.litellm_params)||void 0===l?void 0:l.default_on)?"green":"gray",children:(null===(a=v.litellm_params)||void 0===a?void 0:a.default_on)?"Default On":"Default Off"})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Created At"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:$(v.created_at)}),(0,c.jsxs)(k.Z,{children:["Last Updated: ",$(v.updated_at)]})]})]})]}),(null===(r=v.litellm_params)||void 0===r?void 0:r.pii_entities_config)&&Object.keys(v.litellm_params.pii_entities_config).length>0&&(0,c.jsx)(G.Z,{className:"mt-6",children:(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"PII Protection"}),(0,c.jsxs)(se.Z,{color:"blue",children:[Object.keys(v.litellm_params.pii_entities_config).length," PII entities configured"]})]})}),v.guardrail_info&&Object.keys(v.guardrail_info).length>0&&(0,c.jsxs)(G.Z,{className:"mt-6",children:[(0,c.jsx)(k.Z,{children:"Guardrail Info"}),(0,c.jsx)("div",{className:"mt-2 space-y-2",children:Object.entries(v.guardrail_info).map(e=>{let[s,t]=e;return(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(k.Z,{className:"font-medium w-1/3",children:s}),(0,c.jsx)(k.Z,{className:"w-2/3",children:"object"==typeof t?JSON.stringify(t,null,2):String(t)})]},s)})})]})]}),f&&(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Guardrail Settings"}),!E&&(0,c.jsx)(b.Z,{onClick:()=>M(!0),children:"Edit Settings"})]}),E?(0,c.jsxs)(A.Z,{form:O,onFinish:W,initialValues:{guardrail_name:v.guardrail_name,...v.litellm_params,guardrail_info:v.guardrail_info?JSON.stringify(v.guardrail_info,null,2):"",...(null===(i=v.litellm_params)||void 0===i?void 0:i.optional_params)&&{optional_params:v.litellm_params.optional_params}},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Guardrail Name",name:"guardrail_name",rules:[{required:!0,message:"Please input a guardrail name"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Default On",name:"default_on",children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:!0,children:"Yes"}),(0,c.jsx)(I.default.Option,{value:!1,children:"No"})]})}),(null===(n=v.litellm_params)||void 0===n?void 0:n.guardrail)==="presidio"&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(K.Z,{orientation:"left",children:"PII Protection"}),(0,c.jsx)("div",{className:"mb-6",children:U&&(0,c.jsx)(nt,{entities:U.supported_entities,actions:U.supported_actions,selectedEntities:D,selectedActions:R,onEntitySelect:e=>{F(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},onActionSelect:(e,s)=>{z(t=>({...t,[e]:s}))},entityCategories:U.pii_entity_categories})})]}),(0,c.jsx)(K.Z,{orientation:"left",children:"Provider Settings"}),(0,c.jsx)(nl,{selectedProvider:Object.keys(iH).find(e=>{var s;return iH[e]===(null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)})||null,accessToken:g,providerParams:Z,value:v.litellm_params}),Z&&(()=>{var e;let s=Object.keys(iH).find(e=>{var s;return iH[e]===(null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)});if(!s)return null;let t=Z[null===(e=iH[s])||void 0===e?void 0:e.toLowerCase()];return t&&t.optional_params?(0,c.jsx)(ni,{optionalParams:t.optional_params,parentFieldKey:"optional_params",values:v.litellm_params}):null})(),(0,c.jsx)(K.Z,{orientation:"left",children:"Advanced Settings"}),(0,c.jsx)(A.Z.Item,{label:"Guardrail Information",name:"guardrail_info",children:(0,c.jsx)(P.default.TextArea,{rows:5})}),(0,c.jsxs)("div",{className:"flex justify-end gap-2 mt-6",children:[(0,c.jsx)(L.ZP,{onClick:()=>M(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{children:"Save Changes"})]})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Guardrail ID"}),(0,c.jsx)("div",{className:"font-mono",children:v.guardrail_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Guardrail Name"}),(0,c.jsx)("div",{children:v.guardrail_name||"Unnamed Guardrail"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Provider"}),(0,c.jsx)("div",{children:X})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Mode"}),(0,c.jsx)("div",{children:(null===(o=v.litellm_params)||void 0===o?void 0:o.mode)||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Default On"}),(0,c.jsx)(se.Z,{color:(null===(m=v.litellm_params)||void 0===m?void 0:m.default_on)?"green":"gray",children:(null===(u=v.litellm_params)||void 0===u?void 0:u.default_on)?"Yes":"No"})]}),(null===(x=v.litellm_params)||void 0===x?void 0:x.pii_entities_config)&&Object.keys(v.litellm_params.pii_entities_config).length>0&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"PII Protection"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsxs)(se.Z,{color:"blue",children:[Object.keys(v.litellm_params.pii_entities_config).length," PII entities configured"]})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:$(v.created_at)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)("div",{children:$(v.updated_at)})]})]})]})})]})]})]})},ny=e=>{let{accessToken:s,userRole:t}=e,[l,a]=(0,d.useState)([]),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),f=!!t&&(0,eI.tY)(t),v=async()=>{if(s){o(!0);try{let e=await (0,j.getGuardrailsList)(s);console.log("guardrails: ".concat(JSON.stringify(e))),a(e.guardrails)}catch(e){console.error("Error fetching guardrails:",e)}finally{o(!1)}}};(0,d.useEffect)(()=>{v()},[s]);let y=async()=>{if(x&&s){u(!0);try{await (0,j.deleteGuardrailCall)(s,x.id),eo.Z.success('Guardrail "'.concat(x.name,'" deleted successfully')),v()}catch(e){console.error("Error deleting guardrail:",e),eo.Z.fromBackend("Failed to delete guardrail")}finally{u(!1),h(null)}}};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(b.Z,{onClick:()=>{p&&g(null),i(!0)},disabled:!s,children:"+ Add New Guardrail"})}),p?(0,c.jsx)(nv,{guardrailId:p,onClose:()=>g(null),accessToken:s,isAdmin:f}):(0,c.jsx)(nf,{guardrailsList:l,isLoading:n,onDeleteClick:(e,s)=>{h({id:e,name:s})},accessToken:s,onGuardrailUpdated:v,isAdmin:f,onGuardrailClick:e=>g(e)}),(0,c.jsx)(nx,{visible:r,onClose:()=>{i(!1)},accessToken:s,onSuccess:()=>{v()}}),x&&(0,c.jsxs)(T.Z,{title:"Delete Guardrail",open:null!==x,onOk:y,onCancel:()=>{h(null)},confirmLoading:m,okText:"Delete",okButtonProps:{danger:!0},children:[(0,c.jsxs)("p",{children:["Are you sure you want to delete guardrail: ",x.name," ?"]}),(0,c.jsx)("p",{children:"This action cannot be undone."})]})]})},nb=e=>{let{promptsList:s,isLoading:t,onPromptClick:l,onDeleteClick:a,accessToken:r,isAdmin:i}=e,[n,o]=(0,d.useState)([{id:"created_at",desc:!0}]),m=e=>e?new Date(e).toLocaleString():"-",u=[{header:"Prompt ID",accessorKey:"prompt_id",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>e.getValue()&&(null==l?void 0:l(e.getValue())),children:e.getValue()?"".concat(String(e.getValue()).slice(0,7),"..."):""})})},{header:"Created At",accessorKey:"created_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.created_at,children:(0,c.jsx)("span",{className:"text-xs",children:m(t.created_at)})})}},{header:"Updated At",accessorKey:"updated_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.updated_at,children:(0,c.jsx)("span",{className:"text-xs",children:m(t.updated_at)})})}},{header:"Type",accessorKey:"prompt_info.prompt_type",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.prompt_info.prompt_type,children:(0,c.jsx)("span",{className:"text-xs",children:t.prompt_info.prompt_type})})}},...i?[{header:"Actions",id:"actions",enableSorting:!1,cell:e=>{let{row:s}=e,t=s.original,l=t.prompt_id||"Unknown Prompt";return(0,c.jsx)("div",{className:"flex items-center gap-1",children:(0,c.jsx)(B.Z,{title:"Delete prompt",children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",color:"red",onClick:e=>{e.stopPropagation(),null==a||a(t.prompt_id,l)},icon:W.Z,className:"text-red-500 hover:text-red-700 hover:bg-red-50"})})})}}]:[]],x=(0,sM.b7)({data:s,columns:u,state:{sorting:n},onSortingChange:o,getCoreRowModel:(0,sO.sC)(),getSortedRowModel:(0,sO.tj)(),enableSorting:!0});return(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sU.Z,{children:x.getHeaderGroups().map(e=>(0,c.jsx)(sV.Z,{children:e.headers.map(e=>(0,c.jsx)(sq.Z,{className:"py-1 h-8",onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())}),(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sB.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sR.Z,{children:t?(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:u.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"Loading..."})})})}):s.length>0?x.getRowModel().rows.map(e=>(0,c.jsx)(sV.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sz.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap",children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:u.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No prompts found"})})})})})]})})})},n_=e=>{var s,t,l;let{promptId:a,onClose:r,accessToken:i,isAdmin:n,onDelete:o}=e,[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(!0),[_,N]=(0,d.useState)({}),[Z,w]=(0,d.useState)(!1),[C,I]=(0,d.useState)(!1),A=async()=>{try{if(v(!0),!i)return;let e=await (0,j.getPromptInfo)(i,a);u(e.prompt_spec),h(e.raw_prompt_template),g(e)}catch(e){eo.Z.fromBackend("Failed to load prompt information"),console.error("Error fetching prompt info:",e)}finally{v(!1)}};if((0,d.useEffect)(()=>{A()},[a,i]),f)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!m)return(0,c.jsx)("div",{className:"p-4",children:"Prompt not found"});let E=e=>e?new Date(e).toLocaleString():"-",P=async(e,s)=>{await eM(e)&&(N(e=>({...e,[s]:!0})),setTimeout(()=>{N(e=>({...e,[s]:!1}))},2e3))},M=async()=>{if(i&&m){I(!0);try{await (0,j.deletePromptCall)(i,m.prompt_id),eo.Z.success('Prompt "'.concat(m.prompt_id,'" deleted successfully')),null==o||o(),r()}catch(e){console.error("Error deleting prompt:",e),eo.Z.fromBackend("Failed to delete prompt")}finally{I(!1),w(!1)}}};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:r,className:"mb-4",children:"Back to Prompts"}),(0,c.jsxs)("div",{className:"flex justify-between items-start mb-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Prompt Details"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:m.prompt_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["prompt-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>P(m.prompt_id,"prompt-id"),className:"left-2 z-10 transition-all duration-200 ".concat(_["prompt-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),n&&(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>{w(!0)},className:"flex items-center",children:"Delete Prompt"})]})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),x?(0,c.jsx)(ss.Z,{children:"Prompt Template"},"prompt-template"):(0,c.jsx)(c.Fragment,{}),n?(0,c.jsx)(ss.Z,{children:"Details"},"details"):(0,c.jsx)(c.Fragment,{}),(0,c.jsx)(ss.Z,{children:"Raw JSON"},"raw-json")]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Prompt ID"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{className:"font-mono text-sm",children:m.prompt_id})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Prompt Type"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:(null===(s=m.prompt_info)||void 0===s?void 0:s.prompt_type)||"-"}),(0,c.jsx)(se.Z,{color:"blue",className:"mt-1",children:(null===(t=m.prompt_info)||void 0===t?void 0:t.prompt_type)||"Unknown"})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Created At"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:E(m.created_at)}),(0,c.jsxs)(k.Z,{children:["Last Updated: ",E(m.updated_at)]})]})]})]}),m.litellm_params&&Object.keys(m.litellm_params).length>0&&(0,c.jsxs)(G.Z,{className:"mt-6",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"LiteLLM Parameters"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(m.litellm_params,null,2)})})]})]}),x&&(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Prompt Template"}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["prompt-content"]?(0,c.jsx)(s_.Z,{size:16}):(0,c.jsx)(sN.Z,{size:16}),onClick:()=>P(x.content,"prompt-content"),className:"transition-all duration-200 ".concat(_["prompt-content"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100"),children:_["prompt-content"]?"Copied!":"Copy Content"})]}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Template ID"}),(0,c.jsx)("div",{className:"font-mono text-sm bg-gray-50 p-2 rounded",children:x.litellm_prompt_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Content"}),(0,c.jsx)("div",{className:"mt-2 p-4 bg-gray-50 rounded-md border overflow-auto max-h-96",children:(0,c.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:x.content})})]}),x.metadata&&Object.keys(x.metadata).length>0&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Template Metadata"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap overflow-auto max-h-64",children:JSON.stringify(x.metadata,null,2)})})]})]})]})}),n&&(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{className:"mb-4",children:"Prompt Details"}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompt ID"}),(0,c.jsx)("div",{className:"font-mono text-sm bg-gray-50 p-2 rounded",children:m.prompt_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompt Type"}),(0,c.jsx)("div",{children:(null===(l=m.prompt_info)||void 0===l?void 0:l.prompt_type)||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:E(m.created_at)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)("div",{children:E(m.updated_at)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"LiteLLM Parameters"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap overflow-auto max-h-96",children:JSON.stringify(m.litellm_params,null,2)})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompt Info"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(m.prompt_info,null,2)})})]})]})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Raw API Response"}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["raw-json"]?(0,c.jsx)(s_.Z,{size:16}):(0,c.jsx)(sN.Z,{size:16}),onClick:()=>P(JSON.stringify(p,null,2),"raw-json"),className:"transition-all duration-200 ".concat(_["raw-json"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100"),children:_["raw-json"]?"Copied!":"Copy JSON"})]}),(0,c.jsx)("div",{className:"p-4 bg-gray-50 rounded-md border overflow-auto",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(p,null,2)})})]})})]})]}),(0,c.jsxs)(T.Z,{title:"Delete Prompt",open:Z,onOk:M,onCancel:()=>{w(!1)},confirmLoading:C,okText:"Delete",okButtonProps:{danger:!0},children:[(0,c.jsxs)("p",{children:["Are you sure you want to delete prompt: ",(0,c.jsx)("strong",{children:null==m?void 0:m.prompt_id}),"?"]}),(0,c.jsx)("p",{children:"This action cannot be undone."})]})]})};let{Option:nN}=I.default;var nZ=e=>{let{visible:s,onClose:t,accessToken:l,onSuccess:a}=e,[r]=A.Z.useForm(),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)("dotprompt"),h=()=>{r.resetFields(),m([]),x("dotprompt"),t()},p=async()=>{try{let e=await r.validateFields();if(console.log("values: ",e),!l){eo.Z.fromBackend("Access token is required");return}if("dotprompt"===u&&0===o.length){eo.Z.fromBackend("Please upload a .prompt file");return}n(!0);let s={};if("dotprompt"===u&&o.length>0){let t=o[0].originFileObj;try{let a=await (0,j.convertPromptFileToJson)(l,t);console.log("Conversion result:",a),s={prompt_id:e.prompt_id,litellm_params:{prompt_integration:"dotprompt",prompt_id:a.prompt_id,prompt_data:a.json_data},prompt_info:{prompt_type:"db"}}}catch(e){console.error("Error converting prompt file:",e),eo.Z.fromBackend("Failed to convert prompt file to JSON"),n(!1);return}}try{await (0,j.createPromptCall)(l,s),eo.Z.success("Prompt created successfully!"),h(),a()}catch(e){console.error("Error creating prompt:",e),eo.Z.fromBackend("Failed to create prompt")}}catch(e){console.error("Form validation error:",e)}finally{n(!1)}};return(0,c.jsx)(T.Z,{title:"Add New Prompt",open:s,onCancel:h,footer:[(0,c.jsx)(L.ZP,{onClick:h,children:"Cancel"},"cancel"),(0,c.jsx)(L.ZP,{loading:i,onClick:p,children:"Create Prompt"},"submit")],width:600,children:(0,c.jsxs)(A.Z,{form:r,layout:"vertical",requiredMark:!1,children:[(0,c.jsx)(A.Z.Item,{label:"Prompt ID",name:"prompt_id",rules:[{required:!0,message:"Please enter a prompt ID"},{pattern:/^[a-zA-Z0-9_-]+$/,message:"Prompt ID can only contain letters, numbers, underscores, and hyphens"}],children:(0,c.jsx)(eW.o,{placeholder:"Enter unique prompt ID (e.g., my_prompt_id)"})}),(0,c.jsx)(A.Z.Item,{label:"Prompt Integration",name:"prompt_integration",initialValue:"dotprompt",children:(0,c.jsx)(I.default,{value:u,onChange:x,children:(0,c.jsx)(nN,{value:"dotprompt",children:"dotprompt"})})}),"dotprompt"===u&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(K.Z,{}),(0,c.jsxs)(A.Z.Item,{label:"Prompt File",extra:"Upload a .prompt file that follows the Dotprompt specification",children:[(0,c.jsx)(ed.default,{beforeUpload:e=>(e.name.endsWith(".prompt")||eo.Z.fromBackend("Please upload a .prompt file"),!1),fileList:o,onChange:e=>{let{fileList:s}=e;m(s.slice(-1))},onRemove:()=>{m([])},children:(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(ej.Z,{}),children:"Select .prompt File"})}),o.length>0&&(0,c.jsxs)("div",{className:"mt-2 text-sm text-gray-600",children:["Selected: ",o[0].name]})]})]})]})})},nw=e=>{let{accessToken:s,userRole:t}=e,[l,a]=(0,d.useState)([]),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)(null),f=!!t&&(0,eI.tY)(t),v=async()=>{if(s){i(!0);try{let e=await (0,j.getPromptsList)(s);console.log("prompts: ".concat(JSON.stringify(e))),a(e.prompts)}catch(e){console.error("Error fetching prompts:",e)}finally{i(!1)}}};(0,d.useEffect)(()=>{v()},[s]);let y=async()=>{if(p&&s){h(!0);try{await (0,j.deletePromptCall)(s,p.id),eo.Z.success('Prompt "'.concat(p.name,'" deleted successfully')),v()}catch(e){console.error("Error deleting prompt:",e),eo.Z.fromBackend("Failed to delete prompt")}finally{h(!1),g(null)}}};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[n?(0,c.jsx)(n_,{promptId:n,onClose:()=>o(null),accessToken:s,isAdmin:f,onDelete:v}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(b.Z,{onClick:()=>{n&&o(null),u(!0)},disabled:!s,children:"+ Add New Prompt"})}),(0,c.jsx)(nb,{promptsList:l,isLoading:r,onPromptClick:e=>{o(e)},onDeleteClick:(e,s)=>{g({id:e,name:s})},accessToken:s,isAdmin:f})]}),(0,c.jsx)(nZ,{visible:m,onClose:()=>{u(!1)},accessToken:s,onSuccess:()=>{v()}}),p&&(0,c.jsxs)(T.Z,{title:"Delete Prompt",open:null!==p,onOk:y,onCancel:()=>{g(null)},confirmLoading:x,okText:"Delete",okButtonProps:{danger:!0},children:[(0,c.jsxs)("p",{children:["Are you sure you want to delete prompt: ",p.name," ?"]}),(0,c.jsx)("p",{children:"This action cannot be undone."})]})]})},nk=e=>{let{accessToken:s}=e,[t,l]=(0,d.useState)('{\n "model": "openai/gpt-4o",\n "messages": [\n {\n "role": "system",\n "content": "You are a helpful assistant."\n },\n {\n "role": "user",\n "content": "Explain quantum computing in simple terms"\n }\n ],\n "temperature": 0.7,\n "max_tokens": 500,\n "stream": true\n}'),[a,r]=(0,d.useState)(""),[i,n]=(0,d.useState)(!1),o=(e,s,t)=>{let l=JSON.stringify(s,null,2).split("\n").map(e=>" ".concat(e)).join("\n"),a=Object.entries(t).map(e=>{let[s,t]=e;return"-H '".concat(s,": ").concat(t,"'")}).join(" \\\n ");return"curl -X POST \\\n ".concat(e," \\\n ").concat(a?"".concat(a," \\\n "):"","-H 'Content-Type: application/json' \\\n -d '{\n").concat(l,"\n }'")},m=async()=>{n(!0);try{let e;try{e=JSON.parse(t)}catch(e){eo.Z.fromBackend("Invalid JSON in request body"),n(!1);return}let l={call_type:"completion",request_body:e};if(!s){eo.Z.fromBackend("No access token found"),n(!1);return}let a=await (0,j.transformRequestCall)(s,l);if(a.raw_request_api_base&&a.raw_request_body){let e=o(a.raw_request_api_base,a.raw_request_body,a.raw_request_headers||{});r(e),eo.Z.success("Request transformed successfully")}else{let e="string"==typeof a?a:JSON.stringify(a);r(e),eo.Z.info("Transformed request received in unexpected format")}}catch(e){console.error("Error transforming request:",e),eo.Z.fromBackend("Failed to transform request")}finally{n(!1)}};return(0,c.jsxs)("div",{className:"w-full m-2",style:{overflow:"hidden"},children:[(0,c.jsx)(S.Z,{children:"Playground"}),(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"See how LiteLLM transforms your request for the specified provider."}),(0,c.jsxs)("div",{style:{display:"flex",gap:"16px",width:"100%",minWidth:0,overflow:"hidden"},className:"mt-4",children:[(0,c.jsxs)("div",{style:{flex:"1 1 50%",display:"flex",flexDirection:"column",border:"1px solid #e8e8e8",borderRadius:"8px",padding:"24px",overflow:"hidden",maxHeight:"600px",minWidth:0},children:[(0,c.jsxs)("div",{style:{marginBottom:"24px"},children:[(0,c.jsx)("h2",{style:{fontSize:"24px",fontWeight:"bold",margin:"0 0 4px 0"},children:"Original Request"}),(0,c.jsx)("p",{style:{color:"#666",margin:0},children:"The request you would send to LiteLLM /chat/completions endpoint."})]}),(0,c.jsx)("textarea",{style:{flex:"1 1 auto",width:"100%",minHeight:"240px",padding:"16px",border:"1px solid #e8e8e8",borderRadius:"6px",fontFamily:"monospace",fontSize:"14px",resize:"none",marginBottom:"24px",overflow:"auto"},value:t,onChange:e=>l(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&"Enter"===e.key&&(e.preventDefault(),m())},placeholder:"Press Cmd/Ctrl + Enter to transform"}),(0,c.jsx)("div",{style:{display:"flex",justifyContent:"flex-end",marginTop:"auto"},children:(0,c.jsxs)(L.ZP,{type:"primary",style:{backgroundColor:"#000",display:"flex",alignItems:"center",gap:"8px"},onClick:m,loading:i,children:[(0,c.jsx)("span",{children:"Transform"}),(0,c.jsx)("span",{children:"→"})]})})]}),(0,c.jsxs)("div",{style:{flex:"1 1 50%",display:"flex",flexDirection:"column",border:"1px solid #e8e8e8",borderRadius:"8px",padding:"24px",overflow:"hidden",maxHeight:"800px",minWidth:0},children:[(0,c.jsxs)("div",{style:{marginBottom:"24px"},children:[(0,c.jsx)("h2",{style:{fontSize:"24px",fontWeight:"bold",margin:"0 0 4px 0"},children:"Transformed Request"}),(0,c.jsx)("p",{style:{color:"#666",margin:0},children:"How LiteLLM transforms your request for the specified provider."}),(0,c.jsx)("br",{}),(0,c.jsx)("p",{style:{color:"#666",margin:0},className:"text-xs",children:"Note: Sensitive headers are not shown."})]}),(0,c.jsxs)("div",{style:{position:"relative",backgroundColor:"#f5f5f5",borderRadius:"6px",flex:"1 1 auto",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,c.jsx)("pre",{style:{padding:"16px",fontFamily:"monospace",fontSize:"14px",margin:0,overflow:"auto",flex:"1 1 auto"},children:a||'curl -X POST \\\n https://api.openai.com/v1/chat/completions \\\n -H \'Authorization: Bearer sk-xxx\' \\\n -H \'Content-Type: application/json\' \\\n -d \'{\n "model": "gpt-4",\n "messages": [\n {\n "role": "system",\n "content": "You are a helpful assistant."\n }\n ],\n "temperature": 0.7\n }\''}),(0,c.jsx)(L.ZP,{type:"text",icon:(0,c.jsx)(tJ.Z,{}),style:{position:"absolute",right:"8px",top:"8px"},size:"small",onClick:()=>{navigator.clipboard.writeText(a||""),eo.Z.success("Copied to clipboard")}})]})]})]}),(0,c.jsx)("div",{className:"mt-4 text-right w-full",children:(0,c.jsxs)("p",{className:"text-sm text-gray-500",children:["Found an error? File an issue"," ",(0,c.jsx)("a",{href:"https://github.com/BerriAI/litellm/issues",target:"_blank",rel:"noopener noreferrer",children:"here"}),"."]})})]})};let nS=e=>{try{let s=e.indexOf("/mcp/");if(-1===s)return{token:null,baseUrl:e};let t=e.split("/mcp/");if(2!==t.length)return{token:null,baseUrl:e};let l=t[0]+"/mcp/",a=t[1];if(!a)return{token:null,baseUrl:e};return{token:a,baseUrl:l}}catch(s){return console.error("Error parsing MCP URL:",s),{token:null,baseUrl:e}}},nC=e=>{let{token:s,baseUrl:t}=nS(e);return s?t+"...":e},nI=e=>{let{token:s}=nS(e);return{maskedUrl:nC(e),hasToken:!!s}},nA=e=>e?/^https?:\/\/[^\s/$.?#].[^\s]*$/i.test(e)?Promise.resolve():Promise.reject("Please enter a valid URL (e.g., http://service-name.domain:1234/path or https://example.com)"):Promise.resolve(),nT=e=>e&&e.includes("-")?Promise.reject("Server name cannot contain '-' (hyphen). Please use '_' (underscore) instead."):Promise.resolve(),nE=(e,s,t,l)=>[{accessorKey:"server_id",header:"Server ID",cell:e=>{let{row:t}=e;return(0,c.jsxs)("button",{onClick:()=>s(t.original.server_id),className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",children:[t.original.server_id.slice(0,7),"..."]})}},{accessorKey:"server_name",header:"Name"},{accessorKey:"alias",header:"Alias"},{id:"url",header:"URL",cell:e=>{let{row:s}=e,{maskedUrl:t}=nI(s.original.url);return(0,c.jsx)("span",{className:"font-mono text-sm",children:t})}},{accessorKey:"transport",header:"Transport",cell:e=>{let{getValue:s}=e;return(0,c.jsx)("span",{children:(s()||"http").toUpperCase()})}},{accessorKey:"auth_type",header:"Auth Type",cell:e=>{let{getValue:s}=e;return(0,c.jsx)("span",{children:s()||"none"})}},{id:"health_status",header:"Health Status",cell:e=>{let{row:s}=e,t=s.original,l=t.status||"unknown",a=t.last_health_check,r=t.health_check_error,i=(0,c.jsxs)("div",{className:"max-w-xs",children:[(0,c.jsxs)("div",{className:"font-semibold mb-1",children:["Health Status: ",l]}),a&&(0,c.jsxs)("div",{className:"text-xs mb-1",children:["Last Check: ",new Date(a).toLocaleString()]}),r&&(0,c.jsxs)("div",{className:"text-xs",children:[(0,c.jsx)("div",{className:"font-medium text-red-400 mb-1",children:"Error:"}),(0,c.jsx)("div",{className:"break-words",children:r})]}),!a&&!r&&(0,c.jsx)("div",{className:"text-xs text-gray-400",children:"No health check data available"})]});return(0,c.jsx)(B.Z,{title:i,placement:"top",children:(0,c.jsxs)("button",{className:"font-mono text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[10ch] ".concat((e=>{switch(e){case"healthy":return"text-green-500 bg-green-50 hover:bg-green-100";case"unhealthy":return"text-red-500 bg-red-50 hover:bg-red-100";default:return"text-gray-500 bg-gray-50 hover:bg-gray-100"}})(l)),children:[(0,c.jsx)("span",{className:"mr-1",children:"●"}),l.charAt(0).toUpperCase()+l.slice(1)]})})}},{id:"mcp_access_groups",header:"Access Groups",cell:e=>{let{row:s}=e,t=s.original.mcp_access_groups;if(Array.isArray(t)&&t.length>0&&"string"==typeof t[0]){let e=t.join(", ");return(0,c.jsx)(B.Z,{title:e,children:(0,c.jsx)("span",{className:"max-w-[200px] truncate block",children:e.length>30?"".concat(e.slice(0,30),"..."):e})})}return(0,c.jsx)("span",{className:"text-gray-400 italic",children:"None"})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.created_at?new Date(t.created_at).toLocaleDateString():"-"})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.updated_at?new Date(t.updated_at).toLocaleDateString():"-"})}},{id:"actions",header:"Actions",cell:e=>{let{row:s}=e;return(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>t(s.original.server_id),className:"cursor-pointer"}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>l(s.original.server_id),className:"cursor-pointer"})]})}}];var nL=t(82376),nP=t(71437);let nM={NONE:"none",API_KEY:"api_key",BEARER_TOKEN:"bearer_token",BASIC:"basic"},nO={SSE:"sse"},nD=e=>(console.log(e),null==e)?nO.SSE:e,nF=e=>null==e?nM.NONE:e,nR=e=>nF(e)!==nM.NONE;var nz=t(62670),nU=e=>{let{value:s={},onChange:t,tools:l=[],disabled:a=!1}=e,r=(e,l)=>{let a={...s,tool_name_to_cost_per_query:{...s.tool_name_to_cost_per_query,[e]:l}};null==t||t(a)};return(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,c.jsx)(nz.Z,{className:"text-green-600"}),(0,c.jsx)(S.Z,{children:"Cost Configuration"}),(0,c.jsx)(B.Z,{title:"Configure costs for this MCP server's tool calls. Set a default rate and per-tool overrides.",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:["Default Cost per Query ($)",(0,c.jsx)(B.Z,{title:"Default cost charged for each tool call to this server.",children:(0,c.jsx)(V.Z,{className:"ml-1 text-gray-400"})})]}),(0,c.jsx)(e8.Z,{min:0,step:1e-4,precision:4,placeholder:"0.0000",value:s.default_cost_per_query,onChange:e=>{let l={...s,default_cost_per_query:e};null==t||t(l)},disabled:a,style:{width:"200px"},addonBefore:"$"}),(0,c.jsx)(k.Z,{className:"block mt-1 text-gray-500 text-sm",children:"Set a default cost for all tool calls to this server"})]}),l.length>0&&(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("label",{className:"block text-sm font-medium text-gray-700",children:["Tool-Specific Costs ($)",(0,c.jsx)(B.Z,{title:"Override the default cost for specific tools. Leave blank to use the default rate.",children:(0,c.jsx)(V.Z,{className:"ml-1 text-gray-400"})})]}),(0,c.jsx)(tE.default,{items:[{key:"1",label:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rM.Z,{className:"mr-2 text-blue-500"}),(0,c.jsx)("span",{className:"font-medium",children:"Available Tools"}),(0,c.jsx)(iX.Z,{count:l.length,style:{backgroundColor:"#52c41a",marginLeft:"8px"}})]}),children:(0,c.jsx)("div",{className:"space-y-3 max-h-64 overflow-y-auto",children:l.map((e,t)=>{var l;return(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 rounded-lg",children:[(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900",children:e.name}),e.description&&(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm block mt-1",children:e.description})]}),(0,c.jsx)("div",{className:"ml-4",children:(0,c.jsx)(e8.Z,{min:0,step:1e-4,precision:4,placeholder:"Use default",value:null===(l=s.tool_name_to_cost_per_query)||void 0===l?void 0:l[e.name],onChange:s=>r(e.name,s),disabled:a,style:{width:"120px"},addonBefore:"$"})})]},t)})})}]})]})]}),(s.default_cost_per_query||s.tool_name_to_cost_per_query&&Object.keys(s.tool_name_to_cost_per_query).length>0)&&(0,c.jsxs)("div",{className:"mt-6 p-4 bg-blue-50 border border-blue-200 rounded-lg",children:[(0,c.jsx)(k.Z,{className:"text-blue-800 font-medium",children:"Cost Summary:"}),(0,c.jsxs)("div",{className:"mt-2 space-y-1",children:[s.default_cost_per_query&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• Default cost: $",s.default_cost_per_query.toFixed(4)," per query"]}),s.tool_name_to_cost_per_query&&Object.entries(s.tool_name_to_cost_per_query).map(e=>{let[s,t]=e;return null!=t&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• ",s,": $",t.toFixed(4)," per query"]},s)})]})]})]})})};let{Panel:nq}=tE.default;var nV=e=>{let{availableAccessGroups:s,mcpServer:t,searchValue:l,setSearchValue:a,getAccessGroupOptions:r}=e,i=A.Z.useFormInstance();return(0,d.useEffect)(()=>{t&&t.extra_headers&&i.setFieldValue("extra_headers",t.extra_headers)},[t,i]),(0,c.jsx)(tE.default,{className:"bg-gray-50 border border-gray-200 rounded-lg",expandIconPosition:"end",ghost:!1,children:(0,c.jsx)(nq,{header:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Permission Management / Access Control"})]}),(0,c.jsx)("p",{className:"text-sm text-gray-600 ml-4",children:"Configure access permissions and security settings (Optional)"})]}),className:"border-0",children:(0,c.jsxs)("div",{className:"space-y-6 pt-4",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["MCP Access Groups",(0,c.jsx)(B.Z,{title:"Specify access groups for this MCP server. Users must be in at least one of these groups to access the server.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"mcp_access_groups",className:"mb-4",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"value",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.value)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},onSearch:e=>a(e),tokenSeparators:[","],options:r(),maxTagCount:"responsive",allowClear:!0})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Extra Headers",(0,c.jsx)(B.Z,{title:"Forward custom headers from incoming requests to this MCP server (e.g., Authorization, X-Custom-Header, User-Agent)",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})}),(null==t?void 0:t.extra_headers)&&t.extra_headers.length>0&&(0,c.jsxs)("span",{className:"ml-2 text-xs bg-blue-100 text-blue-700 px-2 py-1 rounded-full",children:[t.extra_headers.length," configured"]})]}),name:"extra_headers",children:(0,c.jsx)(I.default,{mode:"tags",placeholder:(null==t?void 0:t.extra_headers)&&t.extra_headers.length>0?"Currently: ".concat(t.extra_headers.join(", ")):"Enter header names (e.g., Authorization, X-Custom-Header)",className:"rounded-lg",size:"large",tokenSeparators:[","],allowClear:!0})})]})},"permissions")})},nB=t(83669);let nK=e=>{let{accessToken:s,formValues:t,enabled:l=!0}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,c]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),x=!!(t.url&&t.transport&&t.auth_type&&s),h=async()=>{if(s&&t.url){n(!0),c(null);try{let e={server_id:t.server_id||"",server_name:t.server_name||"",url:t.url,transport:t.transport,auth_type:t.auth_type,mcp_info:t.mcp_info},l=await (0,j.testMCPToolsListRequest)(s,e);if(l.tools&&!l.error)r(l.tools),c(null),l.tools.length>0&&!m&&u(!0);else{let e=l.message||"Failed to retrieve tools list";c(e),r([]),u(!1)}}catch(e){console.error("Tools fetch error:",e),c(e instanceof Error?e.message:String(e)),r([]),u(!1)}finally{n(!1)}}},p=()=>{r([]),c(null),u(!1)};return(0,d.useEffect)(()=>{l&&(x?h():p())},[t.url,t.transport,t.auth_type,s,l,x]),{tools:a,isLoadingTools:i,toolsError:o,hasShownSuccessMessage:m,canFetchTools:x,fetchTools:h,clearTools:p}};var nG=e=>{let{accessToken:s,formValues:t,allowedTools:l,existingAllowedTools:a,onAllowedToolsChange:r}=e,i=(0,d.useRef)(0),{tools:n,isLoadingTools:o,toolsError:m,canFetchTools:u}=nK({accessToken:s,formValues:t,enabled:!0});(0,d.useEffect)(()=>{if(n.length>0&&n.length!==i.current&&0===l.length){if(a&&a.length>0){let e=n.map(e=>e.name);r(a.filter(s=>e.includes(s)))}else r(n.map(e=>e.name))}i.current=n.length},[n,l.length,a,r]);let x=e=>{l.includes(e)?r(l.filter(s=>s!==e)):r([...l,e])};return u||t.url?(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)("div",{className:"flex items-center justify-between",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(rM.Z,{className:"text-blue-600"}),(0,c.jsx)(S.Z,{children:"Tool Configuration"}),n.length>0&&(0,c.jsx)(iX.Z,{count:n.length,style:{backgroundColor:"#52c41a"}})]})}),(0,c.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-3",children:(0,c.jsxs)(k.Z,{className:"text-blue-800 text-sm",children:[(0,c.jsx)("strong",{children:"Select which tools users can call:"})," Only checked tools will be available for users to invoke. Unchecked tools will be blocked from execution."]})}),o&&(0,c.jsxs)("div",{className:"flex items-center justify-center py-6",children:[(0,c.jsx)(eF.Z,{size:"large"}),(0,c.jsx)(k.Z,{className:"ml-3",children:"Loading tools..."})]}),m&&!o&&(0,c.jsxs)("div",{className:"text-center py-6 text-red-500 border rounded-lg border-dashed border-red-300 bg-red-50",children:[(0,c.jsx)(rM.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:"Unable to load tools"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm text-red-500",children:m})]}),!o&&!m&&0===n.length&&u&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,c.jsx)(rM.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{children:"No tools available for configuration"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm",children:"Connect to an MCP server with tools to configure them"})]}),!u&&t.url&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,c.jsx)(rM.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{children:"Complete required fields to configure tools"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm",children:"Fill in URL, Transport, and Authentication to load available tools"})]}),!o&&!m&&n.length>0&&(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-green-50 rounded-lg border border-green-200 flex-1",children:[(0,c.jsx)(nB.Z,{className:"text-green-600"}),(0,c.jsxs)(k.Z,{className:"text-green-700 font-medium",children:[l.length," of ",n.length," ",1===n.length?"tool":"tools"," enabled for user access"]})]}),(0,c.jsxs)("div",{className:"flex gap-2 ml-3",children:[(0,c.jsx)("button",{type:"button",onClick:()=>{r(n.map(e=>e.name))},className:"px-3 py-1.5 text-sm text-blue-600 hover:text-blue-700 hover:bg-blue-50 rounded-md transition-colors",children:"Enable All"}),(0,c.jsx)("button",{type:"button",onClick:()=>{r([])},className:"px-3 py-1.5 text-sm text-gray-600 hover:text-gray-700 hover:bg-gray-100 rounded-md transition-colors",children:"Disable All"})]})]}),(0,c.jsx)("div",{className:"space-y-2",children:n.map((e,s)=>(0,c.jsx)("div",{className:"p-4 rounded-lg border transition-colors cursor-pointer ".concat(l.includes(e.name)?"bg-blue-50 border-blue-300 hover:border-blue-400":"bg-gray-50 border-gray-200 hover:border-gray-300"),onClick:()=>x(e.name),children:(0,c.jsxs)("div",{className:"flex items-start gap-3",children:[(0,c.jsx)(eR.Z,{checked:l.includes(e.name),onChange:()=>x(e.name)}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900",children:e.name}),(0,c.jsx)("span",{className:"px-2 py-0.5 text-xs rounded-full font-medium ".concat(l.includes(e.name)?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:l.includes(e.name)?"Enabled":"Disabled"})]}),e.description&&(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm block mt-1",children:e.description}),(0,c.jsx)(k.Z,{className:"text-gray-400 text-xs block mt-1",children:l.includes(e.name)?"✓ Users can call this tool":"✗ Users cannot call this tool"})]})]})},s))})]})]})}):null},nH=e=>{let{mcpServer:s,accessToken:t,onCancel:l,onSuccess:a,availableAccessGroups:r}=e,[i]=A.Z.useForm(),[n,o]=(0,d.useState)({}),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)(!1),[y,N]=(0,d.useState)([]);(0,d.useEffect)(()=>{var e;(null===(e=s.mcp_info)||void 0===e?void 0:e.mcp_server_cost_info)&&o(s.mcp_info.mcp_server_cost_info)},[s]),(0,d.useEffect)(()=>{s.allowed_tools&&N(s.allowed_tools)},[s]),(0,d.useEffect)(()=>{if(s.mcp_access_groups){let e=s.mcp_access_groups.map(e=>"string"==typeof e?e:e.name||String(e));i.setFieldValue("mcp_access_groups",e)}},[s]),(0,d.useEffect)(()=>{Z()},[s,t]);let Z=async()=>{if(t&&s.url){h(!0);try{let e={server_id:s.server_id,server_name:s.server_name,url:s.url,transport:s.transport,auth_type:s.auth_type,mcp_info:s.mcp_info},l=await (0,j.testMCPToolsListRequest)(t,e);l.tools&&!l.error?u(l.tools):(console.error("Failed to fetch tools:",l.message),u([]))}catch(e){console.error("Tools fetch error:",e),u([])}finally{h(!1)}}},w=async e=>{if(t)try{let l=(e.mcp_access_groups||[]).map(e=>"string"==typeof e?e:e.name||String(e)),r={...e,server_id:s.server_id,mcp_info:{server_name:e.server_name||e.url,description:e.description,mcp_server_cost_info:Object.keys(n).length>0?n:null},mcp_access_groups:l,alias:e.alias,extra_headers:e.extra_headers||[],allowed_tools:y.length>0?y:null,disallowed_tools:e.disallowed_tools||[]},i=await (0,j.updateMCPServer)(t,r);eo.Z.success("MCP Server updated successfully"),a(i)}catch(e){eo.Z.fromBackend("Failed to update MCP Server"+((null==e?void 0:e.message)?": ".concat(e.message):""))}};return(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"grid w-full grid-cols-2",children:[(0,c.jsx)(ss.Z,{children:"Server Configuration"}),(0,c.jsx)(ss.Z,{children:"Cost Configuration"})]}),(0,c.jsxs)(sr.Z,{className:"mt-6",children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(A.Z,{form:i,onFinish:w,initialValues:s,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"MCP Server Name",name:"server_name",rules:[{validator:(e,s)=>nT(s)}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Alias",name:"alias",rules:[{validator:(e,s)=>nT(s)}],children:(0,c.jsx)(_.Z,{onChange:()=>v(!0)})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"description",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"MCP Server URL",name:"url",rules:[{required:!0,message:"Please enter a server URL"},{validator:(e,s)=>nA(s)}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Transport Type",name:"transport",rules:[{required:!0}],children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:"sse",children:"Server-Sent Events (SSE)"}),(0,c.jsx)(I.default.Option,{value:"http",children:"HTTP"})]})}),(0,c.jsx)(A.Z.Item,{label:"Authentication",name:"auth_type",rules:[{required:!0}],children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:"none",children:"None"}),(0,c.jsx)(I.default.Option,{value:"api_key",children:"API Key"}),(0,c.jsx)(I.default.Option,{value:"bearer_token",children:"Bearer Token"}),(0,c.jsx)(I.default.Option,{value:"basic",children:"Basic Auth"})]})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nV,{availableAccessGroups:r,mcpServer:s,searchValue:p,setSearchValue:g,getAccessGroupOptions:()=>{let e=r.map(e=>({value:e,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e})]})}));return p&&!r.some(e=>e.toLowerCase().includes(p.toLowerCase()))&&e.push({value:p,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:p}),(0,c.jsx)("span",{className:"text-gray-400 text-xs ml-1",children:"create new group"})]})}),e}})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nG,{accessToken:t,formValues:{server_id:s.server_id,server_name:s.server_name,url:s.url,transport:s.transport,auth_type:s.auth_type,mcp_info:s.mcp_info},allowedTools:y,existingAllowedTools:s.allowed_tools||null,onAllowedToolsChange:N})}),(0,c.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,c.jsx)(L.ZP,{onClick:l,children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsx)(nU,{value:n,onChange:o,tools:m,disabled:x}),(0,c.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,c.jsx)(L.ZP,{onClick:l,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:()=>i.submit(),children:"Save Changes"})]})]})})]})]})},nY=e=>{let{costConfig:s}=e,t=(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null,l=(null==s?void 0:s.tool_name_to_cost_per_query)&&Object.keys(s.tool_name_to_cost_per_query).length>0;return t||l?(0,c.jsx)("div",{className:"mt-6 pt-6 border-t border-gray-200",children:(0,c.jsxs)("div",{className:"space-y-4",children:[t&&(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Default Cost per Query"}),(0,c.jsxs)("div",{className:"text-green-600 font-mono",children:["$",s.default_cost_per_query.toFixed(4)]})]}),l&&(null==s?void 0:s.tool_name_to_cost_per_query)&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Tool-Specific Costs"}),(0,c.jsx)("div",{className:"mt-2 space-y-2",children:Object.entries(s.tool_name_to_cost_per_query).map(e=>{let[s,t]=e;return null!=t&&(0,c.jsxs)("div",{className:"flex justify-between items-center p-3 bg-gray-50 rounded-lg",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:s}),(0,c.jsxs)(k.Z,{className:"text-green-600 font-mono",children:["$",t.toFixed(4)," per query"]})]},s)})})]}),(0,c.jsxs)("div",{className:"mt-4 p-4 bg-blue-50 border border-blue-200 rounded-lg",children:[(0,c.jsx)(k.Z,{className:"text-blue-800 font-medium",children:"Cost Summary:"}),(0,c.jsxs)("div",{className:"mt-2 space-y-1",children:[t&&(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• Default cost: $",s.default_cost_per_query.toFixed(4)," per query"]}),l&&(null==s?void 0:s.tool_name_to_cost_per_query)&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• ",Object.keys(s.tool_name_to_cost_per_query).length," tool(s) with custom pricing"]})]})]})]})}):(0,c.jsx)("div",{className:"mt-6 pt-6 border-t border-gray-200",children:(0,c.jsx)("div",{className:"space-y-4",children:(0,c.jsx)("div",{className:"p-4 bg-gray-50 border border-gray-200 rounded-lg",children:(0,c.jsx)(k.Z,{className:"text-gray-600",children:"No cost configuration set for this server. Tool calls will be charged at $0.00 per tool call."})})})})};let nJ=e=>{var s,t,l,a,r;let{mcpServer:i,onBack:n,isEditing:o,isProxyAdmin:m,accessToken:u,userRole:x,userID:h,availableAccessGroups:p}=e,[g,j]=(0,d.useState)(o),[f,v]=(0,d.useState)(!1),[_,N]=(0,d.useState)({}),{maskedUrl:Z,hasToken:w}=nI(i.url),C=(e,s)=>w?s?e:Z:e,I=async(e,s)=>{await eM(e)&&(N(e=>({...e,[s]:!0})),setTimeout(()=>{N(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4 max-w-full",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",className:"mb-4",onClick:n,children:"Back to All Servers"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(S.Z,{children:i.server_name}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["mcp-server_name"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>I(i.server_name,"mcp-server_name"),className:"left-2 z-10 transition-all duration-200 ".concat(_["mcp-server_name"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")}),i.alias&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{className:"ml-4 text-gray-500",children:"Alias:"}),(0,c.jsx)("span",{className:"ml-1 font-mono text-blue-600",children:i.alias}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["mcp-alias"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>I(i.alias,"mcp-alias"),className:"left-2 z-10 transition-all duration-200 ".concat(_["mcp-alias"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:i.server_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["mcp-server-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>I(i.server_id,"mcp-server-id"),className:"left-2 z-10 transition-all duration-200 ".concat(_["mcp-server-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:g?2:0,children:[(0,c.jsx)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),(0,c.jsx)(ss.Z,{children:"MCP Tools"},"tools"),...m?[(0,c.jsx)(ss.Z,{children:"Settings"},"settings")]:[]]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Transport"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{children:nD(null!==(a=i.transport)&&void 0!==a?a:void 0)})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Auth Type"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(k.Z,{children:nF(null!==(r=i.auth_type)&&void 0!==r?r:void 0)})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Host Url"}),(0,c.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"break-all overflow-wrap-anywhere",children:C(i.url,f)}),w&&(0,c.jsx)("button",{onClick:()=>v(!f),className:"p-1 hover:bg-gray-100 rounded",children:(0,c.jsx)(sD.Z,{icon:f?nL.Z:nP.Z,size:"sm",className:"text-gray-500"})})]})]})]}),(0,c.jsxs)(G.Z,{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:"Cost Configuration"}),(0,c.jsx)(nY,{costConfig:null===(s=i.mcp_info)||void 0===s?void 0:s.mcp_server_cost_info})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(om,{serverId:i.server_id,accessToken:u,auth_type:i.auth_type,userRole:x,userID:h,serverAlias:i.alias})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"MCP Server Settings"}),g?null:(0,c.jsx)(b.Z,{variant:"light",onClick:()=>j(!0),children:"Edit Settings"})]}),g?(0,c.jsx)(nH,{mcpServer:i,accessToken:u,onCancel:()=>j(!1),onSuccess:e=>{j(!1),n()},availableAccessGroups:p}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Server Name"}),(0,c.jsx)("div",{children:i.server_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Alias"}),(0,c.jsx)("div",{children:i.alias})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Description"}),(0,c.jsx)("div",{children:i.description})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"URL"}),(0,c.jsxs)("div",{className:"font-mono break-all overflow-wrap-anywhere max-w-full flex items-center gap-2",children:[C(i.url,f),w&&(0,c.jsx)("button",{onClick:()=>v(!f),className:"p-1 hover:bg-gray-100 rounded",children:(0,c.jsx)(sD.Z,{icon:f?nL.Z:nP.Z,size:"sm",className:"text-gray-500"})})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Transport"}),(0,c.jsx)("div",{children:nD(i.transport)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Extra Headers"}),(0,c.jsx)("div",{children:null===(t=i.extra_headers)||void 0===t?void 0:t.join(", ")})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Auth Type"}),(0,c.jsx)("div",{children:nF(i.auth_type)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Access Groups"}),(0,c.jsx)("div",{children:i.mcp_access_groups&&i.mcp_access_groups.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:i.mcp_access_groups.map((e,s)=>{var t;return(0,c.jsx)("span",{className:"px-2 py-1 bg-gray-100 rounded-md text-sm",children:"string"==typeof e?e:null!==(t=null==e?void 0:e.name)&&void 0!==t?t:""},s)})}):(0,c.jsx)(k.Z,{className:"text-gray-500",children:"No access groups defined"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Allowed Tools"}),(0,c.jsx)("div",{children:i.allowed_tools&&i.allowed_tools.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:i.allowed_tools.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-50 border border-blue-200 rounded-md text-sm",children:e},s))}):(0,c.jsx)(k.Z,{className:"text-gray-500",children:"All tools enabled"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Cost Configuration"}),(0,c.jsx)(nY,{costConfig:null===(l=i.mcp_info)||void 0===l?void 0:l.mcp_server_cost_info})]})]})]})})]})]})]})};var nW=e=>{let{accessToken:s,formValues:t,onToolsLoaded:l}=e,{tools:a,isLoadingTools:r,toolsError:i,canFetchTools:n,fetchTools:o}=nK({accessToken:s,formValues:t,enabled:!0});return((0,d.useEffect)(()=>{null==l||l(a)},[a,l]),n||t.url)?(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(nB.Z,{className:"text-blue-600"}),(0,c.jsx)(S.Z,{children:"Connection Status"})]}),!n&&t.url&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,c.jsx)(rM.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{children:"Complete required fields to test connection"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm",children:"Fill in URL, Transport, and Authentication to test MCP server connection"})]}),n&&(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-gray-700 font-medium",children:r?"Testing connection to MCP server...":a.length>0?"Connection successful":i?"Connection failed":"Ready to test connection"}),(0,c.jsx)("br",{}),(0,c.jsxs)(k.Z,{className:"text-gray-500 text-sm",children:["Server: ",t.url]})]}),r&&(0,c.jsxs)("div",{className:"flex items-center text-blue-600",children:[(0,c.jsx)(eF.Z,{size:"small",className:"mr-2"}),(0,c.jsx)(k.Z,{className:"text-blue-600",children:"Connecting..."})]}),!r&&!i&&a.length>0&&(0,c.jsxs)("div",{className:"flex items-center text-green-600",children:[(0,c.jsx)(nB.Z,{className:"mr-1"}),(0,c.jsx)(k.Z,{className:"text-green-600 font-medium",children:"Connected"})]}),i&&(0,c.jsxs)("div",{className:"flex items-center text-red-600",children:[(0,c.jsx)(l4.Z,{className:"mr-1"}),(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:"Failed"})]})]}),r&&(0,c.jsxs)("div",{className:"flex items-center justify-center py-6",children:[(0,c.jsx)(eF.Z,{size:"large"}),(0,c.jsx)(k.Z,{className:"ml-3",children:"Testing connection and loading tools..."})]}),i&&(0,c.jsx)(lm.Z,{message:"Connection Failed",description:i,type:"error",showIcon:!0,action:(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(th.Z,{}),onClick:o,size:"small",children:"Retry"})}),!r&&0===a.length&&!i&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-500 border rounded-lg border-dashed",children:[(0,c.jsx)(nB.Z,{className:"text-2xl mb-2 text-green-500"}),(0,c.jsx)(k.Z,{className:"text-green-600 font-medium",children:"Connection successful!"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-gray-500",children:"No tools found for this MCP server"})]})]})]})}):null},n$=e=>{let{isVisible:s}=e;return s?(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Stdio Configuration (JSON)",(0,c.jsx)(B.Z,{title:"Paste your stdio MCP server configuration in JSON format. You can use the full mcpServers structure from config.yaml or just the inner server configuration.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"stdio_config",rules:[{required:!0,message:"Please enter stdio configuration"},{validator:(e,s)=>{if(!s)return Promise.resolve();try{return JSON.parse(s),Promise.resolve()}catch(e){return Promise.reject("Please enter valid JSON")}}}],children:(0,c.jsx)(P.default.TextArea,{placeholder:'{\n "mcpServers": {\n "circleci-mcp-server": {\n "command": "npx",\n "args": ["-y", "@circleci/mcp-server-circleci"],\n "env": {\n "CIRCLECI_TOKEN": "your-circleci-token",\n "CIRCLECI_BASE_URL": "https://circleci.com"\n }\n }\n }\n}',rows:12,className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500 font-mono text-sm"})}):null};let nQ="".concat("../ui/assets/logos/","mcp_logo.png");var nX=e=>{let{userRole:s,accessToken:t,onCreateSuccess:l,isModalVisible:a,setModalVisible:r,availableAccessGroups:i}=e,[n]=A.Z.useForm(),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)({}),[h,p]=(0,d.useState)({}),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)([]),[N,Z]=(0,d.useState)([]),[w,k]=(0,d.useState)(""),[S,C]=(0,d.useState)(""),[E,L]=(0,d.useState)(""),P=(e,s)=>{if(!e){L("");return}"sse"!==s||e.endsWith("/sse")?"http"!==s||e.endsWith("/mcp")?L(""):L("Typically MCP HTTP URLs end with /mcp. You can add this url but this is a warning."):L("Typically MCP SSE URLs end with /sse. You can add this url but this is a warning.")},M=async e=>{m(!0);try{let s=e.mcp_access_groups,a={};if(e.stdio_config&&"stdio"===w)try{let s=JSON.parse(e.stdio_config),t=s;if(s.mcpServers&&"object"==typeof s.mcpServers){let l=Object.keys(s.mcpServers);if(l.length>0){let a=l[0];t=s.mcpServers[a],e.server_name||(e.server_name=a.replace(/-/g,"_"))}}a={command:t.command,args:t.args,env:t.env},console.log("Parsed stdio config:",a)}catch(e){eo.Z.fromBackend("Invalid JSON in stdio configuration");return}let i={...e,...a,stdio_config:void 0,mcp_info:{server_name:e.server_name||e.url,description:e.description,mcp_server_cost_info:Object.keys(u).length>0?u:null},mcp_access_groups:s,alias:e.alias,allowed_tools:N.length>0?N:null};if(console.log("Payload: ".concat(JSON.stringify(i))),null!=t){let e=await (0,j.createMCPServer)(t,i);eo.Z.success("MCP Server created successfully"),n.resetFields(),x({}),y([]),Z([]),L(""),f(!1),r(!1),l(e)}}catch(e){eo.Z.fromBackend("Error creating MCP Server: "+e)}finally{m(!1)}},O=()=>{n.resetFields(),x({}),y([]),Z([]),L(""),f(!1),r(!1)};return(d.useEffect(()=>{if(!g&&h.server_name){let e=h.server_name.replace(/\s+/g,"_");n.setFieldsValue({alias:e}),p(s=>({...s,alias:e}))}},[h.server_name]),d.useEffect(()=>{a||p({})},[a]),(0,eI.tY)(s))?(0,c.jsx)(T.Z,{title:(0,c.jsxs)("div",{className:"flex items-center space-x-3 pb-4 border-b border-gray-100",children:[(0,c.jsx)("img",{src:nQ,alt:"MCP Logo",className:"w-8 h-8 object-contain",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"}}),(0,c.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add New MCP Server"})]}),open:a,width:1e3,onCancel:O,footer:null,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsxs)(A.Z,{form:n,onFinish:M,onValuesChange:(e,s)=>p(s),layout:"vertical",className:"space-y-6",children:[(0,c.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["MCP Server Name",(0,c.jsx)(B.Z,{title:"Best practice: Use a descriptive name that indicates the server's purpose (e.g., 'GitHub_MCP', 'Email_Service'). Hyphens '-' are not allowed; use underscores '_' instead.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"server_name",rules:[{required:!1,message:"Please enter a server name"},{validator:(e,s)=>nT(s)}],children:(0,c.jsx)(_.Z,{placeholder:"e.g., GitHub_MCP, Zapier_MCP, etc.",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Alias",(0,c.jsx)(B.Z,{title:"A short, unique identifier for this server. Defaults to the server name with spaces replaced by underscores.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"alias",rules:[{required:!1},{validator:(e,s)=>s&&s.includes("-")?Promise.reject("Alias cannot contain '-' (hyphen). Please use '_' (underscore) instead."):Promise.resolve()}],children:(0,c.jsx)(_.Z,{placeholder:"e.g., GitHub_MCP, Zapier_MCP, etc.",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500",onChange:()=>f(!0)})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Description"}),name:"description",rules:[{required:!1,message:"Please enter a server description!!!!!!!!!"}],children:(0,c.jsx)(_.Z,{placeholder:"Brief description of what this server does",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Transport Type"}),name:"transport",rules:[{required:!0,message:"Please select a transport type"}],children:(0,c.jsxs)(I.default,{placeholder:"Select transport",className:"rounded-lg",size:"large",onChange:e=>{if(k(e),"stdio"===e)n.setFieldsValue({url:void 0,auth_type:void 0}),L("");else{n.setFieldsValue({command:void 0,args:void 0,env:void 0});let s=n.getFieldValue("url");s&&P(s,e)}},value:w,children:[(0,c.jsx)(I.default.Option,{value:"http",children:"HTTP"}),(0,c.jsx)(I.default.Option,{value:"sse",children:"Server-Sent Events (SSE)"}),(0,c.jsx)(I.default.Option,{value:"stdio",children:"Standard Input/Output (stdio)"})]})}),"stdio"!==w&&(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"MCP Server URL"}),name:"url",rules:[{required:!0,message:"Please enter a server URL"},{validator:(e,s)=>nA(s)}],children:(0,c.jsxs)("div",{children:[(0,c.jsx)(_.Z,{placeholder:"https://your-mcp-server.com",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500",onChange:e=>P(e.target.value,w)}),E&&(0,c.jsx)("div",{className:"mt-1 text-red-500 text-sm font-medium",children:E})]})}),"stdio"!==w&&(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Authentication"}),name:"auth_type",rules:[{required:!0,message:"Please select an auth type"}],children:(0,c.jsxs)(I.default,{placeholder:"Select auth type",className:"rounded-lg",size:"large",children:[(0,c.jsx)(I.default.Option,{value:"none",children:"None"}),(0,c.jsx)(I.default.Option,{value:"api_key",children:"API Key"}),(0,c.jsx)(I.default.Option,{value:"bearer_token",children:"Bearer Token"}),(0,c.jsx)(I.default.Option,{value:"basic",children:"Basic Auth"})]})}),(0,c.jsx)(n$,{isVisible:"stdio"===w})]}),(0,c.jsx)("div",{className:"mt-8",children:(0,c.jsx)(nV,{availableAccessGroups:i,mcpServer:null,searchValue:S,setSearchValue:C,getAccessGroupOptions:()=>{let e=i.map(e=>({value:e,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e})]})}));return S&&!i.some(e=>e.toLowerCase().includes(S.toLowerCase()))&&e.push({value:S,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:S}),(0,c.jsx)("span",{className:"text-gray-400 text-xs ml-1",children:"create new group"})]})}),e}})}),(0,c.jsx)("div",{className:"mt-8 pt-6 border-t border-gray-200",children:(0,c.jsx)(nW,{accessToken:t,formValues:h,onToolsLoaded:y})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nG,{accessToken:t,formValues:h,allowedTools:N,existingAllowedTools:null,onAllowedToolsChange:Z})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nU,{value:u,onChange:x,tools:v.filter(e=>N.includes(e.name)),disabled:!1})}),(0,c.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:O,children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",loading:o,children:o?"Creating...":"Add MCP Server"})]})]})})}):null},n0=t(64935),n1=t(11239),n2=t(54001),n4=t(96137),n5=t(96362),n3=t(80221),n6=t(29202);let{Title:n8,Text:n7}=en.default,{Panel:n9}=tE.default,oe=e=>{let{icon:s,title:t,description:l,children:a,serverName:r,accessGroups:i=["dev"]}=e,[n,o]=(0,d.useState)(!1),m=()=>{let e={"x-litellm-api-key":"Bearer YOUR_LITELLM_API_KEY"};if(n&&r){let s=[r.replace(/\s+/g,"_"),...i].join(",");e["x-mcp-servers"]=[s]}return e};return(0,c.jsxs)(tL.Z,{className:"border border-gray-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)("span",{className:"p-2 rounded-lg bg-gray-50",children:s}),(0,c.jsxs)("div",{children:[(0,c.jsx)(n8,{level:5,className:"mb-0",children:t}),(0,c.jsx)(n7,{className:"text-gray-600",children:l})]})]}),r&&("Implementation Example"===t||"Configuration"===t)&&(0,c.jsxs)(A.Z.Item,{className:"mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(eJ.Z,{size:"small",checked:n,onChange:o}),(0,c.jsxs)(n7,{className:"text-sm",children:["Limit tools to specific MCP servers or MCP groups by passing the ",(0,c.jsx)("code",{children:"x-mcp-servers"})," header"]})]}),n&&(0,c.jsx)(lm.Z,{className:"mt-2",type:"info",showIcon:!0,message:"Two Options",description:(0,c.jsxs)("div",{children:[(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Option 1:"})," Get a specific server: ",(0,c.jsxs)("code",{children:['["',r.replace(/\s+/g,"_"),'"]']})]}),(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Option 2:"})," Get a group of MCPs: ",(0,c.jsx)("code",{children:'["dev-group"]'})]}),(0,c.jsxs)("p",{className:"mt-2 text-sm text-gray-600",children:["You can also mix both: ",(0,c.jsx)("code",{children:'["Server1,dev-group"]'})]})]})})]}),d.Children.map(a,e=>{if(d.isValidElement(e)&&e.props.hasOwnProperty("code")&&e.props.hasOwnProperty("copyKey")){let s=e.props.code;if(s&&s.includes('"headers":'))return d.cloneElement(e,{code:s.replace(/"headers":\s*{[^}]*}/,'"headers": '.concat(JSON.stringify(m(),null,8)))})}return e})]})};var os=e=>{let{currentServerAccessGroups:s=[]}=e,t=(0,j.getProxyBaseUrl)(),[l,a]=(0,d.useState)({}),[r,i]=(0,d.useState)({openai:[],litellm:[],cursor:[],http:[]}),[n]=(0,d.useState)("Zapier_MCP"),o=async(e,s)=>{await eM(e)&&(a(e=>({...e,[s]:!0})),setTimeout(()=>{a(e=>({...e,[s]:!1}))},2e3))},m=e=>{let{code:s,copyKey:t,title:a,className:r=""}=e;return(0,c.jsxs)("div",{className:"relative group",children:[a&&(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(n0.Z,{size:16,className:"text-blue-600"}),(0,c.jsx)(n7,{strong:!0,className:"text-gray-700",children:a})]}),(0,c.jsxs)(tL.Z,{className:"bg-gray-50 border border-gray-200 relative ".concat(r),children:[(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:l[t]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>o(s,t),className:"absolute top-2 right-2 z-10 transition-all duration-200 ".concat(l[t]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")}),(0,c.jsx)("pre",{className:"text-sm overflow-x-auto pr-10 text-gray-800 font-mono leading-relaxed",children:s})]})]})},u=e=>{let{step:s,title:t,children:l}=e;return(0,c.jsxs)("div",{className:"flex gap-4",children:[(0,c.jsx)("div",{className:"flex-shrink-0",children:(0,c.jsx)("div",{className:"w-8 h-8 bg-blue-600 text-white rounded-full flex items-center justify-center text-sm font-semibold",children:s})}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(n7,{strong:!0,className:"text-gray-800 block mb-2",children:t}),l]})]})};return(0,c.jsx)("div",{children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{className:"text-3xl font-bold text-gray-900 mb-3",children:"Connect to your MCP client"}),(0,c.jsx)(k.Z,{className:"text-lg text-gray-600",children:"Use tools directly from any MCP client with LiteLLM MCP. Enable your AI assistant to perform real-world tasks through a simple, secure connection."})]}),(0,c.jsxs)(st.Z,{className:"w-full",children:[(0,c.jsx)(sl.Z,{className:"flex justify-start mt-8 mb-6",children:(0,c.jsxs)("div",{className:"flex bg-gray-100 p-1 rounded-lg",children:[(0,c.jsx)(ss.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n0.Z,{size:18}),"OpenAI API"]})}),(0,c.jsx)(ss.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n1.Z,{size:18}),"LiteLLM Proxy"]})}),(0,c.jsx)(ss.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n3.Z,{size:18}),"Cursor"]})}),(0,c.jsx)(ss.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n6.Z,{size:18}),"Streamable HTTP"]})})]})}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-blue-50 to-indigo-50 p-6 rounded-lg border border-blue-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n0.Z,{className:"text-blue-600",size:24}),(0,c.jsx)(n8,{level:4,className:"mb-0 text-blue-900",children:"OpenAI Responses API Integration"})]}),(0,c.jsx)(n7,{className:"text-blue-700",children:"Connect OpenAI Responses API to your LiteLLM MCP server for seamless tool integration"})]}),(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsx)(oe,{icon:(0,c.jsx)(n2.Z,{className:"text-blue-600",size:16}),title:"API Key Setup",description:"Configure your OpenAI API key for authentication",children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,c.jsx)("div",{children:(0,c.jsxs)(n7,{children:["Get your API key from the"," ",(0,c.jsxs)("a",{href:"https://platform.openai.com/api-keys",target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-700 inline-flex items-center gap-1",children:["OpenAI platform ",(0,c.jsx)(n5.Z,{size:12})]})]})}),(0,c.jsx)(m,{title:"Environment Variable",code:'export OPENAI_API_KEY="sk-..."',copyKey:"openai-env"})]})}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n4.Z,{className:"text-blue-600",size:16}),title:"MCP Server Information",description:"Connection details for your LiteLLM MCP server",children:(0,c.jsx)(m,{title:"Server URL",code:"".concat(t,"/mcp"),copyKey:"openai-server-url"})}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n0.Z,{className:"text-blue-600",size:16}),title:"Implementation Example",description:"Complete cURL example for using the Responses API",serverName:"Zapier Gmail",accessGroups:["dev"],children:(0,c.jsx)(m,{code:'curl --location \'https://api.openai.com/v1/responses\' \\\n--header \'Content-Type: application/json\' \\\n--header "Authorization: Bearer $OPENAI_API_KEY" \\\n--data \'{\n "model": "gpt-4.1",\n "tools": [\n {\n "type": "mcp",\n "server_label": "litellm",\n "server_url": "'.concat(t,'/mcp",\n "require_approval": "never",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n ],\n "input": "Run available tools",\n "tool_choice": "required"\n}\''),copyKey:"openai-curl",className:"text-xs"})})]})]}),{})}),(0,c.jsx)(sa.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-emerald-50 to-green-50 p-6 rounded-lg border border-emerald-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n1.Z,{className:"text-emerald-600",size:24}),(0,c.jsx)(n8,{level:4,className:"mb-0 text-emerald-900",children:"LiteLLM Proxy API Integration"})]}),(0,c.jsx)(n7,{className:"text-emerald-700",children:"Connect to LiteLLM Proxy Responses API for seamless tool integration with multiple model providers"})]}),(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsx)(oe,{icon:(0,c.jsx)(n2.Z,{className:"text-emerald-600",size:16}),title:"API Key Setup",description:"Configure your LiteLLM Proxy API key for authentication",children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,c.jsx)("div",{children:(0,c.jsx)(n7,{children:"Get your API key from your LiteLLM Proxy dashboard or contact your administrator"})}),(0,c.jsx)(m,{title:"Environment Variable",code:'export LITELLM_API_KEY="sk-..."',copyKey:"litellm-env"})]})}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n4.Z,{className:"text-emerald-600",size:16}),title:"MCP Server Information",description:"Connection details for your LiteLLM MCP server",children:(0,c.jsx)(m,{title:"Server URL",code:"".concat(t,"/mcp"),copyKey:"litellm-server-url"})}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n0.Z,{className:"text-emerald-600",size:16}),title:"Implementation Example",description:"Complete cURL example for using the LiteLLM Proxy Responses API",serverName:n,accessGroups:["dev"],children:(0,c.jsx)(m,{code:"curl --location '".concat(t,'/v1/responses\' \\\n--header \'Content-Type: application/json\' \\\n--header "Authorization: Bearer $LITELLM_API_KEY" \\\n--data \'{\n "model": "gpt-4",\n "tools": [\n {\n "type": "mcp",\n "server_label": "litellm",\n "server_url": "').concat(t,'/mcp",\n "require_approval": "never",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n ],\n "input": "Run available tools",\n "tool_choice": "required"\n}\''),copyKey:"litellm-curl",className:"text-xs"})})]})]}),{})}),(0,c.jsx)(sa.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-purple-50 to-blue-50 p-6 rounded-lg border border-purple-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n3.Z,{className:"text-purple-600",size:24}),(0,c.jsx)(n8,{level:4,className:"mb-0 text-purple-900",children:"Cursor IDE Integration"})]}),(0,c.jsx)(n7,{className:"text-purple-700",children:"Use tools directly from Cursor IDE with LiteLLM MCP. Enable your AI assistant to perform real-world tasks without leaving your coding environment."})]}),(0,c.jsxs)(tL.Z,{className:"border border-gray-200",children:[(0,c.jsx)(n8,{level:5,className:"mb-4 text-gray-800",children:"Setup Instructions"}),(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsx)(u,{step:1,title:"Open Cursor Settings",children:(0,c.jsxs)(n7,{className:"text-gray-600",children:["Use the keyboard shortcut ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"⇧+⌘+J"})," (Mac) or"," ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Ctrl+Shift+J"})," (Windows/Linux)"]})}),(0,c.jsx)(u,{step:2,title:"Navigate to MCP Tools",children:(0,c.jsx)(n7,{className:"text-gray-600",children:'Go to the "MCP Tools" tab and click "New MCP Server"'})}),(0,c.jsxs)(u,{step:3,title:"Add Configuration",children:[(0,c.jsxs)(n7,{className:"text-gray-600 mb-3",children:["Copy the JSON configuration below and paste it into Cursor, then save with"," ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Cmd+S"})," or"," ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Ctrl+S"})]}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n0.Z,{className:"text-purple-600",size:16}),title:"Configuration",description:"Cursor MCP configuration",serverName:"Zapier Gmail",accessGroups:["dev"],children:(0,c.jsx)(m,{code:'{\n "mcpServers": {\n "Zapier_MCP": {\n "server_url": "'.concat(t,'/mcp",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n }\n}'),copyKey:"cursor-config",className:"text-xs"})})]})]})]})]}),{})}),(0,c.jsx)(sa.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-green-50 to-teal-50 p-6 rounded-lg border border-green-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n6.Z,{className:"text-green-600",size:24}),(0,c.jsx)(n8,{level:4,className:"mb-0 text-green-900",children:"Streamable HTTP Transport"})]}),(0,c.jsx)(n7,{className:"text-green-700",children:"Connect to LiteLLM MCP using HTTP transport. Compatible with any MCP client that supports HTTP streaming."})]}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n6.Z,{className:"text-green-600",size:16}),title:"Universal MCP Connection",description:"Use this URL with any MCP client that supports HTTP transport",children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,c.jsx)("div",{children:(0,c.jsx)(n7,{children:"Each MCP client supports different transports. Refer to your client documentation to determine the appropriate transport method."})}),(0,c.jsx)(m,{title:"Server URL",code:"".concat(t,"/mcp"),copyKey:"http-server-url"}),(0,c.jsx)(m,{title:"Headers Configuration",code:JSON.stringify({"x-litellm-api-key":"Bearer YOUR_LITELLM_API_KEY"},null,2),copyKey:"http-headers"}),(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(L.ZP,{type:"link",className:"p-0 h-auto text-blue-600 hover:text-blue-700",href:"https://modelcontextprotocol.io/docs/concepts/transports",icon:(0,c.jsx)(n5.Z,{size:14}),children:"Learn more about MCP transports"})})]})})]}),{})})]})]})]})})};let{Option:ot}=I.default,ol=e=>{let{isModalOpen:s,title:t,confirmDelete:l,cancelDelete:a}=e;return s?(0,c.jsx)(T.Z,{open:s,onOk:l,okType:"danger",onCancel:a,children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:t}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)("p",{children:"Are you sure you want to delete this MCP Server?"})})]})}):null};var oa=e=>{let{accessToken:s,userRole:t,userID:l}=e,{data:a,isLoading:r,refetch:i,dataUpdatedAt:n}=(0,sA.a)({queryKey:["mcpServers"],queryFn:()=>{if(!s)throw Error("Access Token required");return(0,j.fetchMCPServers)(s)},enabled:!!s});d.useEffect(()=>{a&&(console.log("MCP Servers fetched:",a),a.forEach(e=>{console.log("Server: ".concat(e.server_name||e.server_id)),console.log(" allowed_tools:",e.allowed_tools)}))},[a]);let[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(null),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)("all"),[_,N]=(0,d.useState)("all"),[Z,w]=(0,d.useState)([]),[C,A]=(0,d.useState)(!1),T="Internal User"===t,E=d.useMemo(()=>{if(!a)return[];let e=new Set,s=[];return a.forEach(t=>{t.teams&&t.teams.forEach(t=>{let l=t.team_id;e.has(l)||(e.add(l),s.push(t))})}),s},[a]),L=d.useMemo(()=>a?Array.from(new Set(a.flatMap(e=>e.mcp_access_groups).filter(e=>null!=e))):[],[a]),P=e=>{y(e),O(e,_)},M=e=>{N(e),O(v,e)},O=(e,s)=>{if(!a)return w([]);let t=a;if("personal"===e){w([]);return}"all"!==e&&(t=t.filter(s=>{var t;return null===(t=s.teams)||void 0===t?void 0:t.some(s=>s.team_id===e)})),"all"!==s&&(t=t.filter(e=>{var t;return null===(t=e.mcp_access_groups)||void 0===t?void 0:t.some(e=>"string"==typeof e?e===s:e&&e.name===s)})),w(t)};(0,d.useEffect)(()=>{O(v,_)},[n]);let D=d.useMemo(()=>nE(null!=t?t:"",e=>{p(e),f(!1)},e=>{p(e),f(!0)},F),[t]);function F(e){m(e),x(!0)}let R=async()=>{if(null!=o&&null!=s){try{await (0,j.deleteMCPServer)(s,o),eo.Z.success("Deleted MCP Server successfully"),i()}catch(e){console.error("Error deleting the mcp server:",e)}x(!1),m(null)}};return s&&t&&l?(0,c.jsxs)("div",{className:"w-full h-full p-6",children:[(0,c.jsx)(ol,{isModalOpen:u,title:"Delete MCP Server",confirmDelete:R,cancelDelete:()=>{x(!1),m(null)}}),(0,c.jsx)(nX,{userRole:t,accessToken:s,onCreateSuccess:e=>{w(s=>[...s,e]),A(!1)},isModalVisible:C,setModalVisible:A,availableAccessGroups:L}),(0,c.jsx)(S.Z,{children:"MCP Servers"}),(0,c.jsx)(k.Z,{className:"text-tremor-content mt-2",children:"Configure and manage your MCP servers"}),(0,eI.tY)(t)&&(0,c.jsx)(b.Z,{className:"mt-4 mb-4",onClick:()=>A(!0),children:"+ Add New MCP Server"}),(0,c.jsxs)(st.Z,{className:"w-full h-full",children:[(0,c.jsx)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(ss.Z,{children:"All Servers"}),(0,c.jsx)(ss.Z,{children:"Connect"})]})}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(()=>h?(0,c.jsx)(nJ,{mcpServer:Z.find(e=>e.server_id===h)||{server_id:"",server_name:"",alias:"",url:"",transport:"",auth_type:"",created_at:"",created_by:"",updated_at:"",updated_by:""},onBack:()=>{f(!1),p(null),i()},isProxyAdmin:(0,eI.tY)(t),isEditing:g,accessToken:s,userID:l,userRole:t,availableAccessGroups:L}):(0,c.jsxs)("div",{className:"w-full h-full",children:[(0,c.jsx)("div",{className:"w-full px-6",children:(0,c.jsx)("div",{className:"flex flex-col space-y-4",children:(0,c.jsx)("div",{className:"flex items-center justify-between bg-gray-50 rounded-lg p-4 border-2 border-gray-200",children:(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold text-gray-900",children:"Current Team:"}),(0,c.jsxs)(I.default,{value:v,onChange:P,style:{width:300},children:[(0,c.jsx)(ot,{value:"all",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:T?"All Available Servers":"All Servers"})]})}),(0,c.jsx)(ot,{value:"personal",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"Personal"})]})}),E.map(e=>(0,c.jsx)(ot,{value:e.team_id,children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e.team_alias||e.team_id})]})},e.team_id))]}),(0,c.jsxs)(k.Z,{className:"text-lg font-semibold text-gray-900 ml-6",children:["Access Group:",(0,c.jsx)(B.Z,{title:"An MCP Access Group is a set of users or teams that have permission to access specific MCP servers. Use access groups to control and organize who can connect to which servers.",children:(0,c.jsx)(tU.Z,{style:{marginLeft:4,color:"#888"}})})]}),(0,c.jsxs)(I.default,{value:_,onChange:M,style:{width:300},children:[(0,c.jsx)(ot,{value:"all",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"All Access Groups"})]})}),L.map(e=>(0,c.jsx)(ot,{value:e,children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e})]})},e))]})]})})})}),(0,c.jsx)("div",{className:"w-full px-6 mt-6",children:(0,c.jsx)(lN,{data:Z,columns:D,renderSubComponent:()=>(0,c.jsx)("div",{}),getRowCanExpand:()=>!1,isLoading:r,noDataMessage:"No MCP servers configured"})})]}),{})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(os,{})})]})]})]}):(console.log("Missing required authentication parameters",{accessToken:s,userRole:t,userID:l}),(0,c.jsx)("div",{className:"p-6 text-center text-gray-500",children:"Missing required authentication parameters."}))},or=t(21770);function oi(e){let{tool:s,needsAuth:t,authValue:l,onSubmit:a,isLoading:r,result:i,error:n,onClose:o}=e,[m]=A.Z.useForm(),[u,x]=d.useState("formatted"),[h,p]=d.useState(null),[g,j]=d.useState(null),f=d.useMemo(()=>"string"==typeof s.inputSchema?{type:"object",properties:{input:{type:"string",description:"Input for this tool"}},required:["input"]}:s.inputSchema,[s.inputSchema]),v=d.useMemo(()=>f.properties&&f.properties.params&&"object"===f.properties.params.type&&f.properties.params.properties?{type:"object",properties:f.properties.params.properties,required:f.properties.params.required||[]}:f,[f]);d.useEffect(()=>{h&&(i||n)&&j(Date.now()-h)},[i,n,h]);let y=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let s=document.createElement("textarea");s.value=e,s.style.position="fixed",s.style.opacity="0",document.body.appendChild(s),s.focus(),s.select();let t=document.execCommand("copy");if(document.body.removeChild(s),!t)throw Error("execCommand failed");return!0}}catch(e){return console.error("Copy failed:",e),!1}},N=async()=>{await y(JSON.stringify(i,null,2))?eo.Z.success("Result copied to clipboard"):eo.Z.fromBackend("Failed to copy result")},Z=async()=>{await y(s.name)?eo.Z.success("Tool name copied to clipboard"):eo.Z.fromBackend("Failed to copy tool name")};return(0,c.jsxs)("div",{className:"space-y-4 h-full",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between pb-3 border-b border-gray-200",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-3",children:[s.mcp_info.logo_url&&(0,c.jsx)("img",{src:s.mcp_info.logo_url,alt:"".concat(s.mcp_info.server_name," logo"),className:"w-6 h-6 object-contain"}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2 mb-1",children:[(0,c.jsx)("h2",{className:"text-lg font-semibold text-gray-900",children:"Test Tool:"}),(0,c.jsxs)("div",{className:"group inline-flex items-center space-x-1 bg-slate-50 hover:bg-slate-100 px-3 py-1 rounded-md cursor-pointer transition-colors border border-slate-200",onClick:Z,title:"Click to copy tool name",children:[(0,c.jsx)("span",{className:"font-mono text-slate-700 font-medium text-sm",children:s.name}),(0,c.jsx)("svg",{className:"w-3 h-3 text-slate-400 group-hover:text-slate-600 transition-colors",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})]})]}),(0,c.jsx)("p",{className:"text-xs text-gray-600",children:s.description}),(0,c.jsxs)("p",{className:"text-xs text-gray-500",children:["Provider: ",s.mcp_info.server_name]})]})]}),(0,c.jsx)(b.Z,{onClick:o,variant:"light",size:"sm",className:"text-gray-500 hover:text-gray-700",children:(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4 h-full",children:[(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg",children:[(0,c.jsx)("div",{className:"border-b border-gray-100 px-4 py-2",children:(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:"Input Parameters"}),(0,c.jsx)(B.Z,{title:"Configure the input parameters for this tool call",children:(0,c.jsx)(V.Z,{className:"text-gray-400 hover:text-gray-600"})})]})}),(0,c.jsx)("div",{className:"p-4",children:(0,c.jsxs)(A.Z,{form:m,onFinish:e=>{p(Date.now()),j(null);let s={};Object.entries(e).forEach(e=>{var t;let[l,a]=e,r=null===(t=v.properties)||void 0===t?void 0:t[l];if(r&&null!=a&&""!==a)switch(r.type){case"boolean":s[l]="true"===a||!0===a;break;case"number":s[l]=Number(a);break;case"string":s[l]=String(a);break;default:s[l]=a}else null!=a&&""!==a&&(s[l]=a)}),a(f.properties&&f.properties.params&&"object"===f.properties.params.type&&f.properties.params.properties?{params:s}:s)},layout:"vertical",className:"space-y-3",children:["string"==typeof s.inputSchema?(0,c.jsx)("div",{className:"space-y-3",children:(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Input ",(0,c.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"input",rules:[{required:!0,message:"Please enter input for this tool"}],className:"mb-3",children:(0,c.jsx)(_.Z,{placeholder:"Enter input for this tool",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})})}):void 0===v.properties?(0,c.jsx)("div",{className:"text-center py-6 bg-gray-50 rounded-lg border border-gray-200",children:(0,c.jsxs)("div",{className:"max-w-sm mx-auto",children:[(0,c.jsx)("h4",{className:"text-sm font-medium text-gray-900 mb-1",children:"No Parameters Required"}),(0,c.jsx)("p",{className:"text-xs text-gray-500",children:"This tool can be called without any input parameters."})]})}):(0,c.jsx)("div",{className:"space-y-3",children:Object.entries(v.properties).map(e=>{var s,t,l,a,r;let[i,n]=e;return(0,c.jsxs)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:[i," ",(null===(s=v.required)||void 0===s?void 0:s.includes(i))&&(0,c.jsx)("span",{className:"text-red-500",children:"*"}),n.description&&(0,c.jsx)(B.Z,{title:n.description,children:(0,c.jsx)(V.Z,{className:"ml-2 text-gray-400 hover:text-gray-600"})})]}),name:i,rules:[{required:null===(t=v.required)||void 0===t?void 0:t.includes(i),message:"Please enter ".concat(i)}],className:"mb-3",children:["string"===n.type&&n.enum&&(0,c.jsxs)("select",{className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors",defaultValue:n.default,children:[!(null===(l=v.required)||void 0===l?void 0:l.includes(i))&&(0,c.jsxs)("option",{value:"",children:["Select ",i]}),n.enum.map(e=>(0,c.jsx)("option",{value:e,children:e},e))]}),"string"===n.type&&!n.enum&&(0,c.jsx)(_.Z,{placeholder:n.description||"Enter ".concat(i),className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"}),"number"===n.type&&(0,c.jsx)("input",{type:"number",placeholder:n.description||"Enter ".concat(i),className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors"}),"boolean"===n.type&&(0,c.jsxs)("select",{className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors",defaultValue:(null===(a=n.default)||void 0===a?void 0:a.toString())||"",children:[!(null===(r=v.required)||void 0===r?void 0:r.includes(i))&&(0,c.jsxs)("option",{value:"",children:["Select ",i]}),(0,c.jsx)("option",{value:"true",children:"True"}),(0,c.jsx)("option",{value:"false",children:"False"})]})]},i)})}),(0,c.jsx)("div",{className:"pt-3 border-t border-gray-100",children:(0,c.jsx)(b.Z,{onClick:()=>m.submit(),disabled:r,variant:"primary",className:"w-full",loading:r,children:r?"Calling Tool...":i||n?"Call Again":"Call Tool"})})]})})]}),(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg",children:[(0,c.jsx)("div",{className:"border-b border-gray-100 px-4 py-2",children:(0,c.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:"Tool Result"})}),(0,c.jsx)("div",{className:"p-4",children:i||n||r?(0,c.jsxs)("div",{className:"space-y-3",children:[i&&!r&&!n&&(0,c.jsx)("div",{className:"p-2 bg-green-50 border border-green-200 rounded-lg",children:(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("svg",{className:"h-4 w-4 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}),(0,c.jsx)("h4",{className:"text-xs font-medium text-green-900",children:"Tool executed successfully"}),null!==g&&(0,c.jsxs)("span",{className:"text-xs text-green-600 ml-1",children:["• ",(g/1e3).toFixed(2),"s"]})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-1",children:[(0,c.jsxs)("div",{className:"flex bg-white rounded border border-green-300 p-0.5",children:[(0,c.jsx)("button",{onClick:()=>x("formatted"),className:"px-2 py-1 text-xs font-medium rounded transition-colors ".concat("formatted"===u?"bg-green-100 text-green-800":"text-green-600 hover:text-green-800"),children:"Formatted"}),(0,c.jsx)("button",{onClick:()=>x("json"),className:"px-2 py-1 text-xs font-medium rounded transition-colors ".concat("json"===u?"bg-green-100 text-green-800":"text-green-600 hover:text-green-800"),children:"JSON"})]}),(0,c.jsx)("button",{onClick:N,className:"p-1 hover:bg-green-100 rounded text-green-700",title:"Copy response",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]})]})}),(0,c.jsxs)("div",{className:"max-h-96 overflow-y-auto",children:[r&&(0,c.jsxs)("div",{className:"flex flex-col justify-center items-center h-48 text-gray-500",children:[(0,c.jsxs)("div",{className:"relative",children:[(0,c.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-gray-200"}),(0,c.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-blue-600 border-t-transparent absolute top-0"})]}),(0,c.jsx)("p",{className:"text-sm font-medium mt-3",children:"Calling tool..."}),(0,c.jsx)("p",{className:"text-xs text-gray-400 mt-1",children:"Please wait while we process your request"})]}),n&&(0,c.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-lg p-3",children:(0,c.jsxs)("div",{className:"flex items-start space-x-2",children:[(0,c.jsx)("div",{className:"flex-shrink-0",children:(0,c.jsx)("svg",{className:"h-4 w-4 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2 mb-1",children:[(0,c.jsx)("h4",{className:"text-xs font-medium text-red-900",children:"Tool Call Failed"}),null!==g&&(0,c.jsxs)("span",{className:"text-xs text-red-600",children:["• ",(g/1e3).toFixed(2),"s"]})]}),(0,c.jsx)("div",{className:"bg-white border border-red-200 rounded p-2 max-h-48 overflow-y-auto",children:(0,c.jsx)("pre",{className:"text-xs whitespace-pre-wrap text-red-700 font-mono",children:n.message})})]})]})}),i&&!r&&!n&&(0,c.jsx)("div",{className:"space-y-3",children:"formatted"===u?i.map((e,s)=>(0,c.jsxs)("div",{className:"border border-gray-200 rounded-lg overflow-hidden",children:["text"===e.type&&(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Text Response"})}),(0,c.jsx)("div",{className:"p-3",children:(0,c.jsx)("div",{className:"bg-white rounded border border-gray-200 max-h-64 overflow-y-auto",children:(0,c.jsx)("div",{className:"p-3 space-y-2",children:e.text.split("\n\n").map((e,s)=>{if(""===e.trim())return null;if(e.startsWith("##")){let t=e.replace(/^#+\s/,"");return(0,c.jsx)("div",{className:"border-b border-gray-200 pb-1 mb-2",children:(0,c.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:t})},s)}let t=/(https?:\/\/[^\s\)]+)/g;if(t.test(e)){let l=e.split(t);return(0,c.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded p-2",children:(0,c.jsx)("div",{className:"text-xs text-gray-700 leading-relaxed whitespace-pre-wrap",children:l.map((e,s)=>t.test(e)?(0,c.jsx)("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-800 underline break-all",children:e},s):e)})},s)}return e.includes("Score:")?(0,c.jsx)("div",{className:"bg-green-50 border-l-4 border-green-400 p-2 rounded-r",children:(0,c.jsx)("p",{className:"text-xs text-green-800 font-medium whitespace-pre-wrap",children:e})},s):(0,c.jsx)("div",{className:"bg-gray-50 rounded p-2 border border-gray-200",children:(0,c.jsx)("div",{className:"text-xs text-gray-700 leading-relaxed whitespace-pre-wrap font-mono",children:e})},s)}).filter(Boolean)})})})]}),"image"===e.type&&e.url&&(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Image Response"})}),(0,c.jsx)("div",{className:"p-3",children:(0,c.jsx)("div",{className:"bg-gray-50 rounded p-3 border border-gray-200",children:(0,c.jsx)("img",{src:e.url,alt:"Tool result",className:"max-w-full h-auto rounded shadow-sm"})})})]}),"embedded_resource"===e.type&&(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Embedded Resource"})}),(0,c.jsx)("div",{className:"p-3",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2 p-3 bg-blue-50 border border-blue-200 rounded",children:[(0,c.jsx)("div",{className:"flex-shrink-0",children:(0,c.jsx)("svg",{className:"h-5 w-5 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})})}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsxs)("p",{className:"text-xs font-medium text-blue-900",children:["Resource Type: ",e.resource_type]}),e.url&&(0,c.jsxs)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center text-xs text-blue-600 hover:text-blue-800 hover:underline mt-1 transition-colors",children:["View Resource",(0,c.jsxs)("svg",{className:"ml-1 h-3 w-3",fill:"currentColor",viewBox:"0 0 20 20",children:[(0,c.jsx)("path",{d:"M11 3a1 1 0 100 2h2.586l-6.293 6.293a1 1 0 101.414 1.414L15 6.414V9a1 1 0 102 0V4a1 1 0 00-1-1h-5z"}),(0,c.jsx)("path",{d:"M5 5a2 2 0 00-2 2v8a2 2 0 002 2h8a2 2 0 002-2v-3a1 1 0 10-2 0v3H5V7h3a1 1 0 000-2H5z"})]})]})]})]})})]})]},s)):(0,c.jsx)("div",{className:"bg-white rounded border border-gray-200",children:(0,c.jsx)("div",{className:"p-3 overflow-auto max-h-80 bg-gray-50",children:(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all text-gray-800",children:JSON.stringify(i,null,2)})})})})]})]}):(0,c.jsx)("div",{className:"flex flex-col justify-center items-center h-48 text-gray-500",children:(0,c.jsxs)("div",{className:"text-center max-w-sm",children:[(0,c.jsx)("div",{className:"mb-3",children:(0,c.jsx)("svg",{className:"mx-auto h-12 w-12 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1,d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,c.jsx)("h4",{className:"text-sm font-medium text-gray-900 mb-1",children:"Ready to Call Tool"}),(0,c.jsx)("p",{className:"text-xs text-gray-500 leading-relaxed",children:'Configure the input parameters and click "Call Tool" to see the results here.'})]})})})]})]})]})}var on=t(29488),oo=t(36724);let oc=e=>{let s,{visible:t,onOk:l,onCancel:a,authType:r}=e,[i]=A.Z.useForm();if(r===nM.API_KEY||r===nM.BEARER_TOKEN){let e=r===nM.API_KEY?"API Key":"Bearer Token";s=(0,c.jsx)(A.Z.Item,{name:"authValue",label:e,rules:[{required:!0,message:"Please input your ".concat(e)}],children:(0,c.jsx)(P.default.Password,{})})}else r===nM.BASIC&&(s=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{name:"username",label:"Username",rules:[{required:!0,message:"Please input your username"}],children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{name:"password",label:"Password",rules:[{required:!0,message:"Please input your password"}],children:(0,c.jsx)(P.default.Password,{})})]}));return(0,c.jsx)(T.Z,{open:t,title:"Authentication",onOk:()=>{i.validateFields().then(e=>{r===nM.BASIC?l("".concat(e.username.trim(),":").concat(e.password.trim())):l(e.authValue.trim())})},onCancel:a,destroyOnClose:!0,children:(0,c.jsx)(A.Z,{form:i,layout:"vertical",children:s})})},od=e=>{let{authType:s,onAuthSubmit:t,onClearAuth:l,hasAuth:a}=e,[r,i]=(0,d.useState)(!1);return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)(oo.xv,{className:"text-sm font-medium text-gray-700",children:["Authentication ",a?"✓":""]}),(0,c.jsxs)("div",{className:"flex gap-2",children:[a&&(0,c.jsx)(oo.zx,{onClick:()=>{l()},size:"sm",variant:"secondary",className:"text-xs text-red-600 hover:text-red-700",children:"Clear"}),(0,c.jsx)(oo.zx,{onClick:()=>i(!0),size:"sm",variant:"secondary",className:"text-xs",children:a?"Update":"Add Auth"})]})]}),(0,c.jsx)(oo.xv,{className:"text-xs text-gray-500",children:a?"Authentication configured and saved locally":"Some tools may require authentication"}),(0,c.jsx)(oc,{visible:r,onOk:e=>{t(e),i(!1)},onCancel:()=>i(!1),authType:s})]})};var om=e=>{let{serverId:s,accessToken:t,auth_type:l,userRole:a,userID:r,serverAlias:i}=e,[n,o]=(0,d.useState)(""),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null);(0,d.useEffect)(()=>{if(nR(l)){let e=(0,on.Ui)(s,i||void 0);e&&o(e)}},[s,i,l]);let f=e=>{o(e),e&&nR(l)&&((0,on.Hc)(s,e,l||"none",i||void 0),eo.Z.success("Authentication token saved locally"))},v=()=>{o(""),(0,on.e4)(s),eo.Z.info("Authentication token cleared")},{data:y,isLoading:b,error:_}=(0,sA.a)({queryKey:["mcpTools",s,n,i],queryFn:()=>{if(!t)throw Error("Access Token required");return(0,j.listMCPTools)(t,s,n,i||void 0)},enabled:!!t,staleTime:3e4}),{mutate:N,isPending:Z}=(0,or.D)({mutationFn:async e=>{if(!t)throw Error("Access Token required");try{return await (0,j.callMCPTool)(t,e.tool.name,e.arguments,e.authValue,i||void 0)}catch(e){throw e}},onSuccess:e=>{h(e),g(null)},onError:e=>{g(e),h(null)}}),w=(null==y?void 0:y.tools)||[],k=""!==n;return(0,c.jsx)("div",{className:"w-full h-screen p-4 bg-white",children:(0,c.jsx)(oo.Zb,{className:"w-full rounded-xl shadow-md overflow-hidden",children:(0,c.jsxs)("div",{className:"flex h-auto w-full gap-4",children:[(0,c.jsxs)("div",{className:"w-1/4 p-4 bg-gray-50 flex flex-col",children:[(0,c.jsx)(oo.Dx,{className:"text-xl font-semibold mb-6 mt-2",children:"MCP Tools"}),(0,c.jsxs)("div",{className:"flex flex-col flex-1",children:[(0,c.jsxs)("div",{className:"flex flex-col flex-1 min-h-0",children:[(0,c.jsxs)(oo.xv,{className:"font-medium block mb-3 text-gray-700 flex items-center",children:[(0,c.jsx)(rM.Z,{className:"mr-2"})," Available Tools",w.length>0&&(0,c.jsx)("span",{className:"ml-2 bg-blue-100 text-blue-800 text-xs font-medium px-2 py-0.5 rounded-full",children:w.length})]}),b&&(0,c.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 bg-white border border-gray-200 rounded-lg",children:[(0,c.jsxs)("div",{className:"relative mb-3",children:[(0,c.jsx)("div",{className:"animate-spin rounded-full h-6 w-6 border-2 border-gray-200"}),(0,c.jsx)("div",{className:"animate-spin rounded-full h-6 w-6 border-2 border-blue-600 border-t-transparent absolute top-0"})]}),(0,c.jsx)("p",{className:"text-xs font-medium text-gray-700",children:"Loading tools..."})]}),(null==y?void 0:y.error)&&!b&&!w.length&&(0,c.jsx)("div",{className:"p-3 text-xs text-red-800 rounded-lg bg-red-50 border border-red-200",children:(0,c.jsxs)("p",{className:"font-medium",children:["Error: ",y.message]})}),!b&&!(null==y?void 0:y.error)&&(!w||0===w.length)&&(0,c.jsxs)("div",{className:"p-4 text-center bg-white border border-gray-200 rounded-lg",children:[(0,c.jsx)("div",{className:"mx-auto w-8 h-8 bg-gray-200 rounded-full flex items-center justify-center mb-2",children:(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 8.172V5L8 4z"})})}),(0,c.jsx)("p",{className:"text-xs font-medium text-gray-700 mb-1",children:"No tools available"}),(0,c.jsx)("p",{className:"text-xs text-gray-500",children:"No tools found for this server"})]}),!b&&!(null==y?void 0:y.error)&&w.length>0&&(0,c.jsx)("div",{className:"space-y-2 flex-1 overflow-y-auto min-h-0 mcp-tools-scrollable",style:{maxHeight:"400px",scrollbarWidth:"auto",scrollbarColor:"#cbd5e0 #f7fafc"},children:w.map(e=>(0,c.jsxs)("div",{className:"border rounded-lg p-3 cursor-pointer transition-all hover:shadow-sm ".concat((null==m?void 0:m.name)===e.name?"border-blue-500 bg-blue-50 ring-1 ring-blue-200":"border-gray-200 bg-white hover:border-gray-300"),onClick:()=>{u(e),h(null),g(null)},children:[(0,c.jsxs)("div",{className:"flex items-start space-x-2",children:[e.mcp_info.logo_url&&(0,c.jsx)("img",{src:e.mcp_info.logo_url,alt:"".concat(e.mcp_info.server_name," logo"),className:"w-4 h-4 object-contain flex-shrink-0 mt-0.5"}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsx)("h4",{className:"font-mono text-xs font-medium text-gray-900 truncate",children:e.name}),(0,c.jsx)("p",{className:"text-xs text-gray-500 truncate",children:e.mcp_info.server_name}),(0,c.jsx)("p",{className:"text-xs text-gray-600 mt-1 line-clamp-2 leading-relaxed",children:e.description})]})]}),(null==m?void 0:m.name)===e.name&&(0,c.jsx)("div",{className:"mt-2 pt-2 border-t border-blue-200",children:(0,c.jsxs)("div",{className:"flex items-center text-xs font-medium text-blue-700",children:[(0,c.jsx)("svg",{className:"w-3 h-3 mr-1",fill:"currentColor",viewBox:"0 0 20 20",children:(0,c.jsx)("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})}),"Selected"]})})]},e.name))})]}),nR(l)&&(0,c.jsx)("div",{className:"pt-4 border-t border-gray-200 flex-shrink-0 mt-6",children:k?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(oo.xv,{className:"font-medium block mb-3 text-gray-700 flex items-center",children:[(0,c.jsx)(r6.Z,{className:"mr-2"})," Authentication"]}),(0,c.jsx)(od,{authType:l,onAuthSubmit:f,onClearAuth:v,hasAuth:k})]}):(0,c.jsxs)("div",{className:"p-4 bg-gradient-to-r from-orange-50 to-red-50 border border-orange-200 rounded-lg",children:[(0,c.jsxs)("div",{className:"flex items-center mb-3",children:[(0,c.jsx)(r6.Z,{className:"mr-2 text-orange-600 text-lg"}),(0,c.jsx)(oo.xv,{className:"font-semibold text-orange-800",children:"Authentication Required"})]}),(0,c.jsx)(oo.xv,{className:"text-sm text-orange-700 mb-4",children:"This MCP server requires authentication. You must add your credentials below to access the tools."}),(0,c.jsx)(od,{authType:l,onAuthSubmit:f,onClearAuth:v,hasAuth:k})]})})]})]}),(0,c.jsxs)("div",{className:"w-3/4 flex flex-col bg-white",children:[(0,c.jsx)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:(0,c.jsx)(oo.Dx,{className:"text-xl font-semibold mb-0",children:"Tool Testing Playground"})}),(0,c.jsx)("div",{className:"flex-1 overflow-auto p-4",children:m?(0,c.jsx)("div",{className:"h-full",children:(0,c.jsx)(oi,{tool:m,needsAuth:nR(l),authValue:n,onSubmit:e=>{N({tool:m,arguments:e,authValue:n})},result:x,error:p,isLoading:Z,onClose:()=>u(null)})}):(0,c.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,c.jsx)(eK.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,c.jsx)(oo.xv,{className:"text-lg font-medium text-gray-600 mb-2",children:"Select a Tool to Test"}),(0,c.jsx)(oo.xv,{className:"text-center text-gray-500 max-w-md",children:"Choose a tool from the left sidebar to start testing its functionality with custom inputs."})]})})]})]})})})},ou=t(57018),ox=e=>{let{tagId:s,onClose:t,accessToken:l,is_admin:a,editTag:r}=e,[i]=A.Z.useForm(),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(r),[x,h]=(0,d.useState)([]),p=async()=>{if(l)try{let e=(await (0,j.tagInfoCall)(l,[s]))[s];e&&(o(e),r&&i.setFieldsValue({name:e.name,description:e.description,models:e.models}))}catch(e){console.error("Error fetching tag details:",e),eo.Z.fromBackend("Error fetching tag details: "+e)}};(0,d.useEffect)(()=>{p()},[s,l]),(0,d.useEffect)(()=>{l&&e5("dummy-user","Admin",l,h)},[l]);let g=async e=>{if(l)try{await (0,j.tagUpdateCall)(l,{name:e.name,description:e.description,models:e.models}),eo.Z.success("Tag updated successfully"),u(!1),p()}catch(e){console.error("Error updating tag:",e),eo.Z.fromBackend("Error updating tag: "+e)}};return n?(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.zx,{onClick:t,className:"mb-4",children:"← Back to Tags"}),(0,c.jsxs)(ou.Dx,{children:["Tag Name: ",n.name]}),(0,c.jsx)(ou.xv,{className:"text-gray-500",children:n.description||"No description"})]}),a&&!m&&(0,c.jsx)(ou.zx,{onClick:()=>u(!0),children:"Edit Tag"})]}),m?(0,c.jsx)(ou.Zb,{children:(0,c.jsxs)(A.Z,{form:i,onFinish:g,layout:"vertical",initialValues:n,children:[(0,c.jsx)(A.Z.Item,{label:"Tag Name",name:"name",rules:[{required:!0,message:"Please input a tag name"}],children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"description",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed LLMs"," ",(0,c.jsx)(B.Z,{title:"Select which LLMs are allowed to process this type of data",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select LLMs",children:x.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(ou.zx,{onClick:()=>u(!1),children:"Cancel"}),(0,c.jsx)(ou.zx,{type:"submit",children:"Save Changes"})]})]})}):(0,c.jsx)("div",{className:"space-y-6",children:(0,c.jsxs)(ou.Zb,{children:[(0,c.jsx)(ou.Dx,{children:"Tag Details"}),(0,c.jsxs)("div",{className:"space-y-4 mt-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Name"}),(0,c.jsx)(ou.xv,{children:n.name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Description"}),(0,c.jsx)(ou.xv,{children:n.description||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Allowed LLMs"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-2",children:0===n.models.length?(0,c.jsx)(ou.Ct,{color:"red",children:"All Models"}):n.models.map(e=>{var s;return(0,c.jsx)(ou.Ct,{color:"blue",children:(0,c.jsx)(B.Z,{title:"ID: ".concat(e),children:(null===(s=n.model_info)||void 0===s?void 0:s[e])||e})},e)})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Created"}),(0,c.jsx)(ou.xv,{children:n.created_at?new Date(n.created_at).toLocaleString():"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)(ou.xv,{children:n.updated_at?new Date(n.updated_at).toLocaleString():"-"})]})]})]})})]}):(0,c.jsx)("div",{children:"Loading..."})},oh=e=>{let{data:s,onEdit:t,onDelete:l,onSelectTag:a}=e,[r,i]=d.useState([{id:"created_at",desc:!0}]),n=[{header:"Tag Name",accessorKey:"name",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:t.name,children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5",onClick:()=>a(t.name),children:t.name})})})}},{header:"Description",accessorKey:"description",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.description,children:(0,c.jsx)("span",{className:"text-xs",children:t.description||"-"})})}},{header:"Allowed LLMs",accessorKey:"models",cell:e=>{var s,t;let{row:l}=e,a=l.original;return(0,c.jsx)("div",{style:{display:"flex",flexDirection:"column"},children:(null==a?void 0:null===(s=a.models)||void 0===s?void 0:s.length)===0?(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"red",children:"All Models"}):null==a?void 0:null===(t=a.models)||void 0===t?void 0:t.map(e=>{var s;return(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"blue",children:(0,c.jsx)(B.Z,{title:"ID: ".concat(e),children:(0,c.jsx)(k.Z,{children:(null===(s=a.model_info)||void 0===s?void 0:s[e])||e})})},e)})})}},{header:"Created",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:new Date(t.created_at).toLocaleDateString()})}},{id:"actions",header:"",cell:e=>{let{row:s}=e,a=s.original;return(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>t(a),className:"cursor-pointer"}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>l(a.name),className:"cursor-pointer"})]})}}],o=(0,sM.b7)({data:s,columns:n,state:{sorting:r},onSortingChange:i,getCoreRowModel:(0,sO.sC)(),getSortedRowModel:(0,sO.tj)(),enableSorting:!0});return(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sU.Z,{children:o.getHeaderGroups().map(e=>(0,c.jsx)(sV.Z,{children:e.headers.map(e=>(0,c.jsx)(sq.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sB.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sR.Z,{children:o.getRowModel().rows.length>0?o.getRowModel().rows.map(e=>(0,c.jsx)(sV.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sz.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:n.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No tags found"})})})})})]})})})},op=e=>{let{accessToken:s,userID:t,userRole:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(null),[N,Z]=(0,d.useState)(""),[w]=A.Z.useForm(),[S,C]=(0,d.useState)([]),E=async()=>{if(s)try{let e=await (0,j.tagListCall)(s);console.log("List tags response:",e),r(Object.values(e))}catch(e){console.error("Error fetching tags:",e),eo.Z.fromBackend("Error fetching tags: "+e)}},L=async e=>{if(s)try{await (0,j.tagCreateCall)(s,{name:e.tag_name,description:e.description,models:e.allowed_llms}),eo.Z.success("Tag created successfully"),n(!1),w.resetFields(),E()}catch(e){console.error("Error creating tag:",e),eo.Z.fromBackend("Error creating tag: "+e)}},M=async e=>{f(e),p(!0)},O=async()=>{if(s&&g){try{await (0,j.tagDeleteCall)(s,g),eo.Z.success("Tag deleted successfully"),E()}catch(e){console.error("Error deleting tag:",e),eo.Z.fromBackend("Error deleting tag: "+e)}p(!1),f(null)}};return(0,d.useEffect)(()=>{t&&l&&s&&(async()=>{try{let e=await (0,j.modelInfoCall)(s,t,l);e&&e.data&&C(e.data)}catch(e){console.error("Error fetching models:",e),eo.Z.fromBackend("Error fetching models: "+e)}})()},[s,t,l]),(0,d.useEffect)(()=>{E()},[s]),(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:o?(0,c.jsx)(ox,{tagId:o,onClose:()=>{m(null),x(!1)},accessToken:s,is_admin:"Admin"===l,editTag:u}):(0,c.jsxs)("div",{className:"gap-2 p-8 h-[75vh] w-full mt-2",children:[(0,c.jsxs)("div",{className:"flex justify-between mt-2 w-full items-center mb-4",children:[(0,c.jsx)("h1",{children:"Tag Management"}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[N&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",N]}),(0,c.jsx)(sD.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center cursor-pointer",onClick:()=>{E(),Z(new Date().toLocaleString())}})]})]}),(0,c.jsxs)(k.Z,{className:"mb-4",children:["Click on a tag name to view and edit its details.",(0,c.jsxs)("p",{children:["You can use tags to restrict the usage of certain LLMs based on tags passed in the request. Read more about tag routing"," ",(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/tag_routing",target:"_blank",rel:"noopener noreferrer",children:"here"}),"."]})]}),(0,c.jsx)(b.Z,{className:"mb-4",onClick:()=>n(!0),children:"+ Create New Tag"}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(oh,{data:a,onEdit:e=>{m(e.name),x(!0)},onDelete:M,onSelectTag:m})})}),(0,c.jsx)(T.Z,{title:"Create New Tag",visible:i,width:800,footer:null,onCancel:()=>{n(!1),w.resetFields()},children:(0,c.jsxs)(A.Z,{form:w,onFinish:L,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"Tag Name",name:"tag_name",rules:[{required:!0,message:"Please input a tag name"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"description",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Models"," ",(0,c.jsx)(B.Z,{title:"Select which LLMs are allowed to process requests from this tag",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_llms",children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select LLMs",children:S.map(e=>(0,c.jsx)(I.default.Option,{value:e.model_info.id,children:(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{children:e.model_name}),(0,c.jsxs)("span",{className:"text-gray-400 ml-2",children:["(",e.model_info.id,")"]})]})},e.model_info.id))})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(b.Z,{type:"submit",children:"Create Tag"})})]})}),h&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Tag"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this tag?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:O,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{p(!1),f(null)},children:"Cancel"})]})]})]})})]})})},og=e=>{let{data:s,onView:t,onEdit:l,onDelete:a}=e,[r,i]=d.useState([{id:"created_at",desc:!0}]),n=[{header:"Vector Store ID",accessorKey:"vector_store_id",cell:e=>{let{row:s}=e,l=s.original;return(0,c.jsx)("button",{onClick:()=>t(l.vector_store_id),className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",children:l.vector_store_id.length>15?"".concat(l.vector_store_id.slice(0,15),"..."):l.vector_store_id})}},{header:"Name",accessorKey:"vector_store_name",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.vector_store_name,children:(0,c.jsx)("span",{className:"text-xs",children:t.vector_store_name||"-"})})}},{header:"Description",accessorKey:"vector_store_description",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.vector_store_description,children:(0,c.jsx)("span",{className:"text-xs",children:t.vector_store_description||"-"})})}},{header:"Provider",accessorKey:"custom_llm_provider",cell:e=>{let{row:s}=e,t=s.original,{displayName:l,logo:a}=(0,s0.dr)(t.custom_llm_provider);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[a&&(0,c.jsx)("img",{src:a,alt:l,className:"h-4 w-4"}),(0,c.jsx)("span",{className:"text-xs",children:l})]})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:new Date(t.created_at).toLocaleDateString()})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:new Date(t.updated_at).toLocaleDateString()})}},{id:"actions",header:"",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>l(t.vector_store_id),className:"cursor-pointer"}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>a(t.vector_store_id),className:"cursor-pointer"})]})}}],o=(0,sM.b7)({data:s,columns:n,state:{sorting:r},onSortingChange:i,getCoreRowModel:(0,sO.sC)(),getSortedRowModel:(0,sO.tj)(),enableSorting:!0});return(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sU.Z,{children:o.getHeaderGroups().map(e=>(0,c.jsx)(sV.Z,{children:e.headers.map(e=>(0,c.jsx)(sq.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sB.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sR.Z,{children:o.getRowModel().rows.length>0?o.getRowModel().rows.map(e=>(0,c.jsx)(sV.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sz.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:n.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No vector stores found"})})})})})]})})})};(r=o||(o={})).Bedrock="Amazon Bedrock",r.PgVector="PostgreSQL pgvector (LiteLLM Connector)",r.VertexRagEngine="Vertex AI RAG Engine",r.OpenAI="OpenAI",r.Azure="Azure OpenAI";let oj={Bedrock:"bedrock",PgVector:"pg_vector",VertexRagEngine:"vertex_ai",OpenAI:"openai",Azure:"azure"},of="/ui/assets/logos/",ov={"Amazon Bedrock":"".concat(of,"bedrock.svg"),"PostgreSQL pgvector (LiteLLM Connector)":"".concat(of,"postgresql.svg"),"Vertex AI RAG Engine":"".concat(of,"google.svg"),OpenAI:"".concat(of,"openai_small.svg"),"Azure OpenAI":"".concat(of,"microsoft_azure.svg")},oy={bedrock:[],pg_vector:[{name:"api_base",label:"API Base",tooltip:"Enter the base URL of your deployed litellm-pgvector server (e.g., http://your-server:8000)",placeholder:"http://your-deployed-server:8000",required:!0,type:"text"},{name:"api_key",label:"API Key",tooltip:"Enter the API key from your deployed litellm-pgvector server",placeholder:"your-deployed-api-key",required:!0,type:"password"}],vertex_rag_engine:[],openai:[{name:"api_key",label:"API Key",tooltip:"Enter your OpenAI API key",placeholder:"sk-...",required:!0,type:"password"}],azure:[{name:"api_key",label:"API Key",tooltip:"Enter your Azure OpenAI API key",placeholder:"your-azure-api-key",required:!0,type:"password"},{name:"api_base",label:"API Base",tooltip:"Enter your Azure OpenAI endpoint (e.g., https://your-resource.openai.azure.com/)",placeholder:"https://your-resource.openai.azure.com/",required:!0,type:"text"}]},ob=e=>oy[e]||[];var o_=e=>{let{isVisible:s,onCancel:t,onSuccess:l,accessToken:a,credentials:r}=e,[i]=A.Z.useForm(),[n,m]=(0,d.useState)("{}"),[u,x]=(0,d.useState)("bedrock"),h=async e=>{if(a)try{let s={};try{s=n.trim()?JSON.parse(n):{}}catch(e){eo.Z.fromBackend("Invalid JSON in metadata field");return}let t={vector_store_id:e.vector_store_id,custom_llm_provider:e.custom_llm_provider,vector_store_name:e.vector_store_name,vector_store_description:e.vector_store_description,vector_store_metadata:s,litellm_credential_name:e.litellm_credential_name},r=ob(e.custom_llm_provider).reduce((s,t)=>(s[t.name]=e[t.name],s),{});t.litellm_params=r,await (0,j.vectorStoreCreateCall)(a,t),eo.Z.success("Vector store created successfully"),i.resetFields(),m("{}"),l()}catch(e){console.error("Error creating vector store:",e),eo.Z.fromBackend("Error creating vector store: "+e)}},p=()=>{i.resetFields(),m("{}"),x("bedrock"),t()};return(0,c.jsx)(T.Z,{title:"Add New Vector Store",visible:s,width:1e3,footer:null,onCancel:p,children:(0,c.jsxs)(A.Z,{form:i,onFinish:h,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Provider"," ",(0,c.jsx)(B.Z,{title:"Select the provider for this vector store",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"custom_llm_provider",rules:[{required:!0,message:"Please select a provider"}],initialValue:"bedrock",children:(0,c.jsx)(I.default,{onChange:e=>x(e),children:Object.entries(o).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:oj[s],children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:ov[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s)})})}),"pg_vector"===u&&(0,c.jsx)(lm.Z,{message:"PG Vector Setup Required",description:(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{children:"LiteLLM provides a server to connect to PG Vector. To use this provider:"}),(0,c.jsxs)("ol",{style:{marginLeft:"16px",marginTop:"8px"},children:[(0,c.jsxs)("li",{children:["Deploy the litellm-pgvector server from:"," ",(0,c.jsx)("a",{href:"https://github.com/BerriAI/litellm-pgvector",target:"_blank",rel:"noopener noreferrer",children:"https://github.com/BerriAI/litellm-pgvector"})]}),(0,c.jsx)("li",{children:"Configure your PostgreSQL database with pgvector extension"}),(0,c.jsx)("li",{children:"Start the server and note the API base URL and API key"}),(0,c.jsx)("li",{children:"Enter those details in the fields below"})]})]}),type:"info",showIcon:!0,style:{marginBottom:"16px"}}),"vertex_rag_engine"===u&&(0,c.jsx)(lm.Z,{message:"Vertex AI RAG Engine Setup",description:(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{children:"To use Vertex AI RAG Engine:"}),(0,c.jsxs)("ol",{style:{marginLeft:"16px",marginTop:"8px"},children:[(0,c.jsxs)("li",{children:["Set up your Vertex AI RAG Engine corpus following the guide:"," ",(0,c.jsx)("a",{href:"https://cloud.google.com/vertex-ai/generative-ai/docs/rag-engine/rag-overview",target:"_blank",rel:"noopener noreferrer",children:"Vertex AI RAG Engine Overview"})]}),(0,c.jsx)("li",{children:"Create a corpus in your Google Cloud project"}),(0,c.jsx)("li",{children:"Note the corpus ID from the Vertex AI console"}),(0,c.jsx)("li",{children:"Enter the corpus ID in the Vector Store ID field below"})]})]}),type:"info",showIcon:!0,style:{marginBottom:"16px"}}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Vector Store ID"," ",(0,c.jsx)(B.Z,{title:"Enter the vector store ID from your api provider",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"vector_store_id",rules:[{required:!0,message:"Please input the vector store ID from your api provider"}],children:(0,c.jsx)(_.Z,{placeholder:"vertex_rag_engine"===u?"6917529027641081856 (Get corpus ID from Vertex AI console)":"Enter vector store ID from your provider"})}),ob(u).map(e=>(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:[e.label," ",(0,c.jsx)(B.Z,{title:e.tooltip,children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:e.name,rules:e.required?[{required:!0,message:"Please input the ".concat(e.label.toLowerCase())}]:[],children:(0,c.jsx)(_.Z,{type:e.type||"text",placeholder:e.placeholder})},e.name)),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Vector Store Name"," ",(0,c.jsx)(B.Z,{title:"Custom name you want to give to the vector store, this name will be rendered on the LiteLLM UI",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"vector_store_name",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"vector_store_description",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Existing Credentials"," ",(0,c.jsx)(B.Z,{title:"Optionally select API provider credentials for this vector store eg. Bedrock API KEY",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"litellm_credential_name",children:(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Select or search for existing credentials",optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{value:null,label:"None"},...r.map(e=>({value:e.credential_name,label:e.credential_name}))],allowClear:!0})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Metadata"," ",(0,c.jsx)(B.Z,{title:"JSON metadata for the vector store (optional)",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),children:(0,c.jsx)(P.default.TextArea,{rows:4,value:n,onChange:e=>m(e.target.value),placeholder:'{"key": "value"}'})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-3",children:[(0,c.jsx)(b.Z,{onClick:p,variant:"secondary",children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",type:"submit",children:"Create"})]})]})})},oN=e=>{let{isVisible:s,onCancel:t,onConfirm:l}=e;return(0,c.jsxs)(T.Z,{title:"Delete Vector Store",visible:s,footer:null,onCancel:t,children:[(0,c.jsx)("p",{children:"Are you sure you want to delete this vector store? This action cannot be undone."}),(0,c.jsxs)("div",{className:"px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:l,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:t,variant:"primary",children:"Cancel"})]})]})},oZ=t(23907);let{TextArea:ow}=P.default,{Text:ok,Title:oS}=en.default;var oC=e=>{let{vectorStoreId:s,accessToken:t,className:l=""}=e,[a,r]=(0,d.useState)(""),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)({}),h=async()=>{if(!a.trim()){ty.ZP.warning("Please enter a search query");return}n(!0);try{let e=await (0,j.vectorStoreSearchCall)(t,s,a),l={query:a,response:e,timestamp:Date.now()};m(e=>[l,...e]),r("")}catch(e){console.error("Error searching vector store:",e),eo.Z.fromBackend("Failed to search vector store")}finally{n(!1)}},p=e=>new Date(e).toLocaleString(),g=(e,s)=>{let t="".concat(e,"-").concat(s);x(e=>({...e,[t]:!e[t]}))};return(0,c.jsx)(tL.Z,{className:"w-full rounded-xl shadow-md",children:(0,c.jsxs)("div",{className:"flex flex-col h-[600px]",children:[(0,c.jsxs)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(r3.Z,{className:"mr-2 text-blue-500"}),(0,c.jsx)(oS,{level:4,className:"mb-0",children:"Test Vector Store"})]}),o.length>0&&(0,c.jsx)(L.ZP,{onClick:()=>{m([]),x({}),eo.Z.success("Search history cleared")},size:"small",children:"Clear History"})]}),(0,c.jsxs)("div",{className:"flex-1 overflow-auto p-4 pb-0",children:[0===o.length?(0,c.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,c.jsx)(r3.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,c.jsx)(ok,{children:"Test your vector store by entering a search query below"})]}):(0,c.jsx)("div",{className:"space-y-4",children:o.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("div",{className:"text-right",children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3 bg-blue-50 border border-blue-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,c.jsx)("strong",{className:"text-sm",children:"Query"}),(0,c.jsx)("span",{className:"text-xs text-gray-500",children:p(e.timestamp)})]}),(0,c.jsx)("div",{className:"text-left",children:e.query})]})}),(0,c.jsx)("div",{className:"text-left",children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3 bg-white border border-gray-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(r3.Z,{className:"text-green-500"}),(0,c.jsx)("strong",{className:"text-sm",children:"Vector Store Results"}),e.response&&(0,c.jsxs)("span",{className:"text-xs px-2 py-0.5 rounded bg-gray-100 text-gray-600",children:[(null===(t=e.response.data)||void 0===t?void 0:t.length)||0," results"]})]}),e.response&&e.response.data&&e.response.data.length>0?(0,c.jsx)("div",{className:"space-y-3",children:e.response.data.map((e,t)=>{let l=u["".concat(s,"-").concat(t)]||!1;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-3 cursor-pointer hover:bg-gray-100 transition-colors",onClick:()=>g(s,t),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[l?(0,c.jsx)(tP.Z,{className:"text-gray-500 mr-2"}):(0,c.jsx)(lh.Z,{className:"text-gray-500 mr-2"}),(0,c.jsxs)("span",{className:"font-medium text-sm",children:["Result ",t+1]}),!l&&e.content&&e.content[0]&&(0,c.jsxs)("span",{className:"ml-2 text-xs text-gray-500 truncate max-w-md",children:["- ",e.content[0].text.substring(0,100),"..."]})]}),(0,c.jsxs)("span",{className:"text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded",children:["Score: ",e.score.toFixed(4)]})]}),l&&(0,c.jsxs)("div",{className:"border-t bg-white p-3",children:[e.content&&e.content.map((e,s)=>(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsxs)("div",{className:"text-xs text-gray-500 mb-1",children:["Content (",e.type,")"]}),(0,c.jsx)("div",{className:"text-sm bg-gray-50 p-3 rounded border text-gray-800 max-h-40 overflow-y-auto",children:e.text})]},s)),(e.file_id||e.filename||e.attributes)&&(0,c.jsxs)("div",{className:"mt-3 pt-3 border-t border-gray-200",children:[(0,c.jsx)("div",{className:"text-xs text-gray-500 mb-2 font-medium",children:"Metadata"}),(0,c.jsxs)("div",{className:"space-y-2 text-xs",children:[e.file_id&&(0,c.jsxs)("div",{className:"bg-gray-50 p-2 rounded",children:[(0,c.jsx)("span",{className:"font-medium",children:"File ID:"})," ",e.file_id]}),e.filename&&(0,c.jsxs)("div",{className:"bg-gray-50 p-2 rounded",children:[(0,c.jsx)("span",{className:"font-medium",children:"Filename:"})," ",e.filename]}),e.attributes&&Object.keys(e.attributes).length>0&&(0,c.jsxs)("div",{className:"bg-gray-50 p-2 rounded",children:[(0,c.jsx)("span",{className:"font-medium block mb-1",children:"Attributes:"}),(0,c.jsx)("pre",{className:"text-xs bg-white p-2 rounded border overflow-x-auto",children:JSON.stringify(e.attributes,null,2)})]})]})]})]})]},t)})}):(0,c.jsx)("div",{className:"text-gray-500 text-sm",children:"No results found"})]})}),sr(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),h())},placeholder:"Enter your search query... (Shift+Enter for new line)",disabled:i,autoSize:{minRows:1,maxRows:4},style:{resize:"none"}})}),(0,c.jsx)(L.ZP,{type:"primary",onClick:h,disabled:i||!a.trim(),icon:(0,c.jsx)(oZ.Z,{}),loading:i,children:"Search"})]})})]})})},oI=e=>{let{vectorStoreId:s,onClose:t,accessToken:l,is_admin:a,editVectorStore:r}=e,[i]=A.Z.useForm(),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(r),[x,h]=(0,d.useState)("{}"),[p,g]=(0,d.useState)([]),[f,v]=(0,d.useState)("details"),y=async()=>{if(l)try{let e=await (0,j.vectorStoreInfoCall)(l,s);if(e&&e.vector_store){if(o(e.vector_store),e.vector_store.vector_store_metadata){let s="string"==typeof e.vector_store.vector_store_metadata?JSON.parse(e.vector_store.vector_store_metadata):e.vector_store.vector_store_metadata;h(JSON.stringify(s,null,2))}r&&i.setFieldsValue({vector_store_id:e.vector_store.vector_store_id,custom_llm_provider:e.vector_store.custom_llm_provider,vector_store_name:e.vector_store.vector_store_name,vector_store_description:e.vector_store.vector_store_description})}}catch(e){console.error("Error fetching vector store details:",e),eo.Z.fromBackend("Error fetching vector store details: "+e)}},_=async()=>{if(l)try{let e=await (0,j.credentialListCall)(l);console.log("List credentials response:",e),g(e.credentials||[])}catch(e){console.error("Error fetching credentials:",e)}};(0,d.useEffect)(()=>{y(),_()},[s,l]);let N=async e=>{if(l)try{let s={};try{s=x?JSON.parse(x):{}}catch(e){eo.Z.fromBackend("Invalid JSON in metadata field");return}let t={vector_store_id:e.vector_store_id,custom_llm_provider:e.custom_llm_provider,vector_store_name:e.vector_store_name,vector_store_description:e.vector_store_description,vector_store_metadata:s};await (0,j.vectorStoreUpdateCall)(l,t),eo.Z.success("Vector store updated successfully"),u(!1),y()}catch(e){console.error("Error updating vector store:",e),eo.Z.fromBackend("Error updating vector store: "+e)}};return n?(0,c.jsxs)("div",{className:"p-4 max-w-full",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",className:"mb-4",onClick:t,children:"Back to Vector Stores"}),(0,c.jsxs)(S.Z,{children:["Vector Store ID: ",n.vector_store_id]}),(0,c.jsx)(k.Z,{className:"text-gray-500",children:n.vector_store_description||"No description"})]}),a&&!m&&(0,c.jsx)(b.Z,{onClick:()=>u(!0),children:"Edit Vector Store"})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"Details"}),(0,c.jsx)(ss.Z,{children:"Test Vector Store"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:m?(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(S.Z,{children:"Edit Vector Store"})}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)(A.Z,{form:i,onFinish:N,layout:"vertical",initialValues:n,children:[(0,c.jsx)(A.Z.Item,{label:"Vector Store ID",name:"vector_store_id",rules:[{required:!0,message:"Please input a vector store ID"}],children:(0,c.jsx)(P.default,{disabled:!0})}),(0,c.jsx)(A.Z.Item,{label:"Vector Store Name",name:"vector_store_name",children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"vector_store_description",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Provider"," ",(0,c.jsx)(B.Z,{title:"Select the provider for this vector store",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"custom_llm_provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,c.jsx)(I.default,{children:Object.entries(s0.Cl).map(e=>{let[s,t]=e;return"Bedrock"===s?(0,c.jsx)(I.default.Option,{value:s0.fK[s],children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:s0.cd[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s):null})})}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(k.Z,{className:"text-sm text-gray-500 mb-2",children:"Either select existing credentials OR enter provider credentials below"})}),(0,c.jsx)(A.Z.Item,{label:"Existing Credentials",name:"litellm_credential_name",children:(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Select or search for existing credentials",optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{value:null,label:"None"},...p.map(e=>({value:e.credential_name,label:e.credential_name}))],allowClear:!0})}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"OR"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Metadata"," ",(0,c.jsx)(B.Z,{title:"JSON metadata for the vector store",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),children:(0,c.jsx)(P.default.TextArea,{rows:4,value:x,onChange:e=>h(e.target.value),placeholder:'{"key": "value"}'})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(L.ZP,{onClick:()=>u(!1),children:"Cancel"}),(0,c.jsx)(L.ZP,{type:"primary",htmlType:"submit",children:"Save Changes"})]})]})})]}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Vector Store Details"}),a&&(0,c.jsx)(b.Z,{onClick:()=>u(!0),children:"Edit Vector Store"})]}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"ID"}),(0,c.jsx)(k.Z,{children:n.vector_store_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Name"}),(0,c.jsx)(k.Z,{children:n.vector_store_name||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Description"}),(0,c.jsx)(k.Z,{children:n.vector_store_description||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Provider"}),(0,c.jsx)("div",{className:"flex items-center space-x-2 mt-1",children:(()=>{let e=n.custom_llm_provider||"bedrock",{displayName:s,logo:t}=(()=>{let s=Object.keys(s0.fK).find(s=>s0.fK[s].toLowerCase()===e.toLowerCase());if(!s)return{displayName:e,logo:""};let t=s0.Cl[s],l=s0.cd[t];return{displayName:t,logo:l}})();return(0,c.jsxs)(c.Fragment,{children:[t&&(0,c.jsx)("img",{src:t,alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let t=e.target,l=t.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=s.charAt(0),l.replaceChild(e,t)}}}),(0,c.jsx)(se.Z,{color:"blue",children:s})]})})()})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Metadata"}),(0,c.jsx)("div",{className:"bg-gray-50 p-3 rounded mt-2 font-mono text-xs overflow-auto max-h-48",children:(0,c.jsx)("pre",{children:x})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created"}),(0,c.jsx)(k.Z,{children:n.created_at?new Date(n.created_at).toLocaleString():"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)(k.Z,{children:n.updated_at?new Date(n.updated_at).toLocaleString():"-"})]})]})})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(oC,{vectorStoreId:n.vector_store_id,accessToken:l||""})})]})]})]}):(0,c.jsx)("div",{children:"Loading..."})},oA=e=>{let{accessToken:s,userID:t,userRole:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(null),[h,p]=(0,d.useState)(""),[g,f]=(0,d.useState)([]),[_,N]=(0,d.useState)(null),[Z,w]=(0,d.useState)(!1),S=async()=>{if(s)try{let e=await (0,j.vectorStoreListCall)(s);console.log("List vector stores response:",e),r(e.data||[])}catch(e){console.error("Error fetching vector stores:",e),eo.Z.fromBackend("Error fetching vector stores: "+e)}},C=async()=>{if(s)try{let e=await (0,j.credentialListCall)(s);console.log("List credentials response:",e),f(e.credentials||[])}catch(e){console.error("Error fetching credentials:",e),eo.Z.fromBackend("Error fetching credentials: "+e)}},I=async e=>{x(e),m(!0)},A=async()=>{if(s&&u){try{await (0,j.vectorStoreDeleteCall)(s,u),eo.Z.success("Vector store deleted successfully"),S()}catch(e){console.error("Error deleting vector store:",e),eo.Z.fromBackend("Error deleting vector store: "+e)}m(!1),x(null)}};return(0,d.useEffect)(()=>{S(),C()},[s]),_?(0,c.jsx)("div",{className:"w-full h-full",children:(0,c.jsx)(oI,{vectorStoreId:_,onClose:()=>{N(null),w(!1),S()},accessToken:s,is_admin:(0,eI.tY)(l||""),editVectorStore:Z})}):(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsxs)("div",{className:"gap-2 p-8 h-[75vh] w-full mt-2",children:[(0,c.jsxs)("div",{className:"flex justify-between mt-2 w-full items-center mb-4",children:[(0,c.jsx)("h1",{children:"Vector Store Management"}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[h&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",h]}),(0,c.jsx)(sD.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center cursor-pointer",onClick:()=>{S(),C(),p(new Date().toLocaleString())}})]})]}),(0,c.jsx)(k.Z,{className:"mb-4",children:(0,c.jsx)("p",{children:"You can use vector stores to store and retrieve LLM embeddings.."})}),(0,c.jsx)(b.Z,{className:"mb-4",onClick:()=>n(!0),children:"+ Add Vector Store"}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(og,{data:a,onView:e=>{N(e),w(!1)},onEdit:e=>{N(e),w(!0)},onDelete:I})})}),(0,c.jsx)(o_,{isVisible:i,onCancel:()=>n(!1),onSuccess:()=>{n(!1),S()},accessToken:s,credentials:g}),(0,c.jsx)(oN,{isVisible:o,onCancel:()=>m(!1),onConfirm:A})]})})},oT=e=>{let{userID:s,userRole:t,accessToken:l}=e,{logoUrl:a,setLogoUrl:r}=(0,g.F)(),[i,n]=(0,d.useState)(""),[o,m]=(0,d.useState)(!1);(0,d.useEffect)(()=>{l&&u()},[l]);let u=async()=>{try{let s=(0,j.getProxyBaseUrl)(),t=await fetch(s?"".concat(s,"/get/ui_theme_settings"):"/get/ui_theme_settings",{method:"GET",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"}});if(t.ok){var e;let s=await t.json(),l=(null===(e=s.values)||void 0===e?void 0:e.logo_url)||"";n(l),r(l||null)}}catch(e){console.error("Error fetching theme settings:",e)}},x=async()=>{m(!0);try{let e=(0,j.getProxyBaseUrl)();if((await fetch(e?"".concat(e,"/update/ui_theme_settings"):"/update/ui_theme_settings",{method:"PATCH",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify({logo_url:i||null})})).ok)eo.Z.success("Logo settings updated successfully!"),r(i||null);else throw Error("Failed to update settings")}catch(e){console.error("Error updating logo settings:",e),eo.Z.fromBackend("Failed to update logo settings")}finally{m(!1)}},h=async()=>{n(""),r(null),m(!0);try{let e=(0,j.getProxyBaseUrl)();if((await fetch(e?"".concat(e,"/update/ui_theme_settings"):"/update/ui_theme_settings",{method:"PATCH",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify({logo_url:null})})).ok)eo.Z.success("Logo reset to default!");else throw Error("Failed to reset logo")}catch(e){console.error("Error resetting logo:",e),eo.Z.fromBackend("Failed to reset logo")}finally{m(!1)}};return l?(0,c.jsxs)("div",{className:"w-full mx-auto max-w-4xl px-6 py-8",children:[(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(S.Z,{className:"text-2xl font-bold mb-2",children:"Logo Customization"}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"Customize your LiteLLM admin dashboard with a custom logo."})]}),(0,c.jsx)(G.Z,{className:"shadow-sm p-6",children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium text-gray-700 mb-2 block",children:"Custom Logo URL"}),(0,c.jsx)(_.Z,{placeholder:"https://example.com/logo.png",value:i,onValueChange:e=>{n(e),r(e||null)},className:"w-full"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500 mt-1",children:"Enter a URL for your custom logo or leave empty to use the default LiteLLM logo"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium text-gray-700 mb-2 block",children:"Current Logo"}),(0,c.jsx)("div",{className:"bg-gray-50 rounded-lg p-6 flex items-center justify-center min-h-[120px]",children:i?(0,c.jsx)("img",{src:i,alt:"Custom logo",className:"max-w-full max-h-24 object-contain",onError:e=>{var s;let t=e.target;t.style.display="none";let l=document.createElement("div");l.className="text-gray-500 text-sm",l.textContent="Failed to load image",null===(s=t.parentElement)||void 0===s||s.appendChild(l)}}):(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"Default LiteLLM logo will be used"})})]}),(0,c.jsxs)("div",{className:"flex gap-3 pt-4",children:[(0,c.jsx)(b.Z,{onClick:x,loading:o,disabled:o,color:"indigo",children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:h,loading:o,disabled:o,variant:"secondary",color:"gray",children:"Reset to Default"})]})]})})]}):null};let oE=new x.S;function oL(){return(0,c.jsxs)("div",{className:rn("h-screen","flex items-center justify-center gap-4"),children:[(0,c.jsx)("div",{className:"text-lg font-medium py-2 pr-4 border-r border-r-gray-200",children:"\uD83D\uDE85 LiteLLM"}),(0,c.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,c.jsx)(rc,{className:"size-4"}),(0,c.jsx)("span",{className:"text-gray-600 text-sm",children:"Loading..."})]})]})}function oP(){let[e,s]=(0,d.useState)(""),[t,l]=(0,d.useState)(!1),[a,r]=(0,d.useState)(!1),[i,n]=(0,d.useState)(null),[o,x]=(0,d.useState)(null),[v,y]=(0,d.useState)([]),[b,_]=(0,d.useState)([]),[N,Z]=(0,d.useState)([]),[w,k]=(0,d.useState)({PROXY_BASE_URL:"",PROXY_LOGOUT_URL:""}),[S,C]=(0,d.useState)(!0),I=(0,m.useSearchParams)(),[A,T]=(0,d.useState)({data:[]}),[E,L]=(0,d.useState)(null),[P,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)(!0),[F,R]=(0,d.useState)(null),z=I.get("invitation_id"),[U,q]=(0,d.useState)(()=>I.get("page")||"api-keys"),[V,B]=(0,d.useState)(null),[K,G]=(0,d.useState)(!1),H=e=>{y(s=>s?[...s,e]:[e]),M(()=>!P)},Y=!1===O&&null===E&&null===z;return((0,d.useEffect)(()=>{let e=function(e){let s=document.cookie.split("; ").find(s=>s.startsWith(e+"="));return s?s.split("=")[1]:null}("token");(0,j.getUiConfig)().then(s=>{L(e),D(!1)})},[]),(0,d.useEffect)(()=>{Y&&(window.location.href=(j.proxyBaseUrl||"")+"/sso/key/generate")},[Y]),(0,d.useEffect)(()=>{if(!E)return;let e=(0,u.o)(E);if(e){if(B(e.key),r(e.disabled_non_admin_personal_key_creation),e.user_role){let t=function(e){if(!e)return"Undefined Role";switch(e.toLowerCase()){case"app_owner":case"demo_app_owner":return"App Owner";case"app_admin":case"proxy_admin":return"Admin";case"proxy_admin_viewer":return"Admin Viewer";case"org_admin":return"Org Admin";case"internal_user":return"Internal User";case"internal_user_viewer":case"internal_viewer":return"Internal Viewer";case"app_user":return"App User";default:return"Unknown Role"}}(e.user_role);s(t),"Admin Viewer"==t&&q("usage")}e.user_email&&n(e.user_email),e.login_method&&C("username_password"==e.login_method),e.premium_user&&l(e.premium_user),e.auth_header_name&&(0,j.setGlobalLitellmHeaderName)(e.auth_header_name),e.user_id&&R(e.user_id)}},[E]),(0,d.useEffect)(()=>{V&&F&&e&&e5(F,e,V,Z),V&&F&&e&&f(V,F,e,null,x),V&&lJ(V,_)},[V,F,e]),O||Y)?(0,c.jsx)(oL,{}):(0,c.jsx)(d.Suspense,{fallback:(0,c.jsx)(oL,{}),children:(0,c.jsx)(h.aH,{client:oE,children:(0,c.jsx)(g.f,{accessToken:V,children:z?(0,c.jsx)(sQ,{userID:F,userRole:e,premiumUser:t,teams:o,keys:v,setUserRole:s,userEmail:i,setUserEmail:n,setTeams:x,setKeys:y,organizations:b,addKey:H,createClicked:P}):(0,c.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,c.jsx)(p.Z,{userID:F,userRole:e,premiumUser:t,userEmail:i,setProxySettings:k,proxySettings:w,accessToken:V,isPublicPage:!1,sidebarCollapsed:K,onToggleSidebar:()=>{G(!K)}}),(0,c.jsxs)("div",{className:"flex flex-1 overflow-auto",children:[(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(iC,{accessToken:V,setPage:e=>{let s=new URLSearchParams(I);s.set("page",e),window.history.pushState(null,"","?".concat(s.toString())),q(e)},userRole:e,defaultSelectedKey:U,collapsed:K})}),"api-keys"==U?(0,c.jsx)(sQ,{userID:F,userRole:e,premiumUser:t,teams:o,keys:v,setUserRole:s,userEmail:i,setUserEmail:n,setTeams:x,setKeys:y,organizations:b,addKey:H,createClicked:P}):"models"==U?(0,c.jsx)(lC,{userID:F,userRole:e,token:E,keys:v,accessToken:V,modelData:A,setModelData:T,premiumUser:t,teams:o}):"llm-playground"==U?(0,c.jsx)(ia,{userID:F,userRole:e,token:E,accessToken:V,disabledPersonalKeyCreation:a}):"users"==U?(0,c.jsx)(lq,{userID:F,userRole:e,token:E,keys:v,teams:o,accessToken:V,setKeys:y}):"teams"==U?(0,c.jsx)(lH,{teams:o,setTeams:x,searchParams:I,accessToken:V,userID:F,userRole:e,organizations:b,premiumUser:t}):"organizations"==U?(0,c.jsx)(lW,{organizations:b,setOrganizations:_,userModels:N,accessToken:V,userRole:e,premiumUser:t}):"admin-panel"==U?(0,c.jsx)(l8,{setTeams:x,searchParams:I,accessToken:V,userID:F,showSSOBanner:S,premiumUser:t,proxySettings:w}):"api_ref"==U?(0,c.jsx)(rp,{proxySettings:w}):"settings"==U?(0,c.jsx)(an,{userID:F,userRole:e,accessToken:V,premiumUser:t}):"budgets"==U?(0,c.jsx)(av,{accessToken:V}):"guardrails"==U?(0,c.jsx)(ny,{accessToken:V,userRole:e}):"prompts"==U?(0,c.jsx)(nw,{accessToken:V,userRole:e}):"transform-request"==U?(0,c.jsx)(nk,{accessToken:V}):"general-settings"==U?(0,c.jsx)(ap,{userID:F,userRole:e,accessToken:V,modelData:A}):"ui-theme"==U?(0,c.jsx)(oT,{userID:F,userRole:e,accessToken:V}):"model-hub-table"==U?(0,c.jsx)(aW.Z,{accessToken:V,publicPage:!1,premiumUser:t,userRole:e}):"caching"==U?(0,c.jsx)(iq,{userID:F,userRole:e,token:E,accessToken:V,premiumUser:t}):"pass-through-settings"==U?(0,c.jsx)(lw,{userID:F,userRole:e,accessToken:V,modelData:A}):"logs"==U?(0,c.jsx)(aY,{userID:F,userRole:e,token:E,accessToken:V,allTeams:null!=o?o:[],premiumUser:t}):"mcp-servers"==U?(0,c.jsx)(oa,{accessToken:V,userRole:e,userID:F}):"tag-management"==U?(0,c.jsx)(op,{accessToken:V,userRole:e,userID:F}):"vector-stores"==U?(0,c.jsx)(oA,{accessToken:V,userRole:e,userID:F}):"new_usage"==U?(0,c.jsx)(rh,{userID:F,userRole:e,accessToken:V,teams:null!=o?o:[],premiumUser:t}):(0,c.jsx)(iL,{userID:F,userRole:e,token:E,accessToken:V,keys:v,premiumUser:t})]})]})})})})}}},function(e){e.O(0,[665,990,50,521,866,313,49,162,851,971,117,744],function(){return e(e.s=36362)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/main-app-bb35cb240fbb9dca.js b/litellm/proxy/_experimental/out/_next/static/chunks/main-app-4f7318ae681a6d94.js similarity index 54% rename from litellm/proxy/_experimental/out/_next/static/chunks/main-app-bb35cb240fbb9dca.js rename to litellm/proxy/_experimental/out/_next/static/chunks/main-app-4f7318ae681a6d94.js index 959563da946..04cf9b11058 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/main-app-bb35cb240fbb9dca.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/main-app-4f7318ae681a6d94.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[744],{78483:function(e,n,t){Promise.resolve().then(t.t.bind(t,12846,23)),Promise.resolve().then(t.t.bind(t,19107,23)),Promise.resolve().then(t.t.bind(t,61060,23)),Promise.resolve().then(t.t.bind(t,4707,23)),Promise.resolve().then(t.t.bind(t,80,23)),Promise.resolve().then(t.t.bind(t,36423,23))}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[971,117],function(){return n(54278),n(78483)}),_N_E=e.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[744],{10264:function(e,n,t){Promise.resolve().then(t.t.bind(t,12846,23)),Promise.resolve().then(t.t.bind(t,19107,23)),Promise.resolve().then(t.t.bind(t,61060,23)),Promise.resolve().then(t.t.bind(t,4707,23)),Promise.resolve().then(t.t.bind(t,80,23)),Promise.resolve().then(t.t.bind(t,36423,23))}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[971,117],function(){return n(54278),n(10264)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/css/c200be8dd8638678.css b/litellm/proxy/_experimental/out/_next/static/css/c200be8dd8638678.css deleted file mode 100644 index 20b121f84b2..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/css/c200be8dd8638678.css +++ /dev/null @@ -1,3 +0,0 @@ -/* -! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com -*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af}input::placeholder,textarea::placeholder{color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors:active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors:active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media (forced-colors:active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.not-sr-only{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-1{inset:-.25rem}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-x-\[-1\.5rem\]{left:-1.5rem;right:-1.5rem}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-\[-1\.5rem\]{bottom:-1.5rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-1{right:.25rem}.right-1\/2{right:50%}.right-10{right:2.5rem}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-4{top:1rem}.top-8{top:2rem}.top-full{top:100%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.col-span-1{grid-column:span 1/span 1}.col-span-10{grid-column:span 10/span 10}.col-span-11{grid-column:span 11/span 11}.col-span-12{grid-column:span 12/span 12}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-7{grid-column:span 7/span 7}.col-span-8{grid-column:span 8/span 8}.col-span-9{grid-column:span 9/span 9}.m-0{margin:0}.m-2{margin:.5rem}.m-8{margin:2rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.\!mb-0{margin-bottom:0!important}.-mb-px{margin-bottom:-1px}.-ml-0{margin-left:0}.-ml-0\.5{margin-left:-.125rem}.-ml-1{margin-left:-.25rem}.-ml-1\.5{margin-left:-.375rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-11{margin-left:2.75rem}.ml-12{margin-left:3rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-6{margin-left:1.5rem}.ml-7{margin-left:1.75rem}.ml-8{margin-left:2rem}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-2\.5{margin-right:.625rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-8{margin-right:2rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.box-border{box-sizing:border-box}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.\!inline{display:inline!important}.inline{display:inline}.\!flex{display:flex!important}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.size-12{width:3rem;height:3rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.\!h-8{height:2rem!important}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-52{height:13rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-80{height:20rem}.h-9{height:2.25rem}.h-\[100vh\]{height:100vh}.h-\[1px\]{height:1px}.h-\[350px\]{height:350px}.h-\[600px\]{height:600px}.h-\[75vh\]{height:75vh}.h-\[80vh\]{height:80vh}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-24{max-height:6rem}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-8{max-height:2rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[228px\]{max-height:228px}.max-h-\[400px\]{max-height:400px}.max-h-\[40vh\]{max-height:40vh}.max-h-\[500px\]{max-height:500px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[65vh\]{max-height:65vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[75vh\]{max-height:75vh}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-\[120px\]{min-height:120px}.min-h-\[380px\]{min-height:380px}.min-h-\[400px\]{min-height:400px}.min-h-\[44px\]{min-height:44px}.min-h-\[500px\]{min-height:500px}.min-h-\[750px\]{min-height:750px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.\!w-8{width:2rem!important}.w-0{width:0}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-11\/12{width:91.666667%}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[120px\]{width:120px}.w-\[300px\]{width:300px}.w-\[400px\]{width:400px}.w-\[90\%\]{width:90%}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-screen{width:100vw}.\!min-w-8{min-width:2rem!important}.min-w-0{min-width:0}.min-w-\[10rem\]{min-width:10rem}.min-w-\[200px\]{min-width:200px}.min-w-\[600px\]{min-width:600px}.min-w-\[90px\]{min-width:90px}.min-w-full{min-width:100%}.min-w-min{min-width:-moz-min-content;min-width:min-content}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-4xl{max-width:56rem}.max-w-64{max-width:16rem}.max-w-6xl{max-width:72rem}.max-w-\[100px\]{max-width:100px}.max-w-\[10ch\]{max-width:10ch}.max-w-\[120px\]{max-width:120px}.max-w-\[150px\]{max-width:150px}.max-w-\[15ch\]{max-width:15ch}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[20ch\]{max-width:20ch}.max-w-\[210px\]{max-width:210px}.max-w-\[250px\]{max-width:250px}.max-w-\[80\%\]{max-width:80%}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-4{--tw-translate-y:-1rem}.-translate-y-4,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-1\/2{--tw-translate-x:50%}.translate-x-1\/2,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-y-0{--tw-translate-y:0px}.-rotate-180,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-180{--tw-rotate:-180deg}.-rotate-90{--tw-rotate:-90deg}.-rotate-90,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.rotate-90{--tw-rotate:90deg}.rotate-90,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-95,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-none{grid-template-columns:none}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.\!items-center{align-items:center!important}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.\!justify-center{justify-content:center!important}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-4{row-gap:1rem}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.125rem * var(--tw-space-x-reverse));margin-left:calc(.125rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem * var(--tw-space-x-reverse));margin-left:calc(.375rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem * var(--tw-space-x-reverse));margin-left:calc(2.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.625rem * var(--tw-space-x-reverse));margin-left:calc(.625rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse:1}.space-x-reverse>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-y-reverse>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:1}.divide-x-reverse>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}.divide-tremor-border>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity))}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-clip{overflow-x:clip}.overflow-x-scroll{overflow-x:scroll}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.text-clip{text-overflow:clip}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!rounded-full{border-radius:9999px!important}.\!rounded-none{border-radius:0!important}.rounded{border-radius:.25rem}.rounded-\[1px\]{border-radius:1px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-tremor-default{border-radius:.5rem}.rounded-tremor-full{border-radius:9999px}.rounded-tremor-small{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-tremor-default{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-l-tremor-default{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-tremor-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.rounded-l-tremor-small{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-r-tremor-default{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-r-tremor-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-tremor-small{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-tremor-default{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-bl{border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-x{border-left-width:1px;border-right-width:1px}.border-y{border-top-width:1px}.border-b,.border-y{border-bottom-width:1px}.border-b-4{border-bottom-width:4px}.border-e{border-inline-end-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-r-4{border-right-width:4px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.border-t-4{border-top-width:4px}.border-t-\[1px\]{border-top-width:1px}.border-dashed{border-style:dashed}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-amber-100{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.border-amber-50{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}.border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.border-amber-600{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.border-amber-700{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}.border-amber-800{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}.border-amber-950{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}.border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.border-blue-50{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}.border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}.border-blue-950{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}.border-cyan-100{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}.border-cyan-200{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}.border-cyan-300{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}.border-cyan-400{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}.border-cyan-50{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}.border-cyan-500{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.border-cyan-600{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}.border-cyan-700{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}.border-cyan-800{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}.border-cyan-900{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}.border-cyan-950{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}.border-dark-tremor-background{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.border-dark-tremor-border{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.border-dark-tremor-brand{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-dark-tremor-brand-emphasis{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.border-dark-tremor-brand-inverted{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.border-dark-tremor-brand-subtle{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.border-emerald-100{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}.border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.border-emerald-400{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.border-emerald-50{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}.border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.border-emerald-600{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.border-emerald-700{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.border-emerald-800{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.border-emerald-900{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}.border-emerald-950{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}.border-fuchsia-100{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}.border-fuchsia-200{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}.border-fuchsia-300{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}.border-fuchsia-400{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}.border-fuchsia-50{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}.border-fuchsia-500{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.border-fuchsia-600{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.border-fuchsia-700{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}.border-fuchsia-800{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.border-fuchsia-900{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}.border-fuchsia-950{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.border-gray-50{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.border-gray-950{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}.border-green-100{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}.border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}.border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}.border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.border-green-50{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.border-green-700{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}.border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}.border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.border-green-950{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}.border-indigo-100{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}.border-indigo-200{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}.border-indigo-300{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.border-indigo-400{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.border-indigo-50{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}.border-indigo-500{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-indigo-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.border-indigo-700{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.border-indigo-800{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.border-indigo-900{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}.border-indigo-950{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.border-lime-100{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}.border-lime-200{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}.border-lime-300{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}.border-lime-400{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}.border-lime-50{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}.border-lime-500{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.border-lime-600{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}.border-lime-700{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}.border-lime-800{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}.border-lime-900{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}.border-lime-950{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}.border-neutral-100{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}.border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.border-neutral-300{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.border-neutral-400{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.border-neutral-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.border-neutral-500{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}.border-neutral-600{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.border-neutral-700{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.border-neutral-800{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}.border-neutral-900{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}.border-neutral-950{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}.border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}.border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}.border-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.border-orange-50{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}.border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.border-orange-600{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.border-orange-700{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}.border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}.border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}.border-orange-950{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}.border-pink-100{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}.border-pink-200{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}.border-pink-300{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}.border-pink-400{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}.border-pink-50{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}.border-pink-500{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.border-pink-600{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.border-pink-700{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}.border-pink-800{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}.border-pink-900{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}.border-pink-950{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}.border-purple-100{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}.border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.border-purple-300{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.border-purple-400{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}.border-purple-50{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}.border-purple-500{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.border-purple-600{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.border-purple-700{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}.border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}.border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}.border-purple-950{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}.border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.border-red-50{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.border-red-700{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}.border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}.border-red-950{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}.border-rose-100{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}.border-rose-200{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.border-rose-300{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.border-rose-400{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.border-rose-50{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}.border-rose-500{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}.border-rose-600{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.border-rose-700{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}.border-rose-800{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.border-rose-900{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}.border-rose-950{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}.border-sky-100{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.border-sky-300{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.border-sky-400{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.border-sky-50{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}.border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.border-sky-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.border-sky-700{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.border-sky-950{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.border-slate-400{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.border-slate-50{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.border-slate-900{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.border-slate-950{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}.border-stone-100{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}.border-stone-200{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}.border-stone-300{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.border-stone-400{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}.border-stone-50{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}.border-stone-500{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}.border-stone-600{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}.border-stone-700{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}.border-stone-800{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}.border-stone-900{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}.border-stone-950{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}.border-teal-100{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}.border-teal-200{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}.border-teal-300{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}.border-teal-400{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.border-teal-50{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}.border-teal-500{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.border-teal-600{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.border-teal-700{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}.border-teal-800{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}.border-teal-900{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}.border-teal-950{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-tremor-background{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-tremor-border{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-tremor-brand{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-tremor-brand-emphasis{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.border-tremor-brand-inverted{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-tremor-brand-subtle{--tw-border-opacity:1;border-color:rgb(142 145 235/var(--tw-border-opacity))}.border-violet-100{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}.border-violet-200{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}.border-violet-300{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.border-violet-400{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.border-violet-50{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}.border-violet-500{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}.border-violet-600{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}.border-violet-700{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}.border-violet-800{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}.border-violet-900{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}.border-violet-950{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}.border-yellow-100{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}.border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}.border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.border-yellow-50{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}.border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}.border-yellow-600{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}.border-yellow-700{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}.border-yellow-800{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.border-yellow-900{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}.border-yellow-950{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}.border-zinc-100{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.border-zinc-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.border-zinc-400{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.border-zinc-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.border-zinc-500{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}.border-zinc-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.border-zinc-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.border-zinc-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}.border-zinc-950{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}.border-r-gray-200{--tw-border-opacity:1;border-right-color:rgb(229 231 235/var(--tw-border-opacity))}.border-t-transparent{border-top-color:transparent}.\!bg-blue-600{--tw-bg-opacity:1!important;background-color:rgb(37 99 235/var(--tw-bg-opacity))!important}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.bg-amber-200{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.bg-amber-300{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.bg-amber-700{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.bg-amber-800{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-black\/90{background-color:rgba(0,0,0,.9)}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.bg-blue-300{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.bg-blue-800{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.bg-cyan-200{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.bg-cyan-300{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}.bg-cyan-400{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.bg-cyan-50{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}.bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}.bg-cyan-600{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.bg-cyan-700{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}.bg-cyan-800{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.bg-cyan-900{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}.bg-cyan-950{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}.bg-dark-tremor-background{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-dark-tremor-background-subtle{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-dark-tremor-brand{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-dark-tremor-brand-emphasis{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.bg-dark-tremor-brand-faint{--tw-bg-opacity:1;background-color:rgb(11 18 41/var(--tw-bg-opacity))}.bg-dark-tremor-brand-muted{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.bg-dark-tremor-content-subtle{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.bg-emerald-200{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.bg-emerald-300{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.bg-emerald-800{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.bg-emerald-900{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.bg-emerald-950{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}.bg-fuchsia-100{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.bg-fuchsia-200{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}.bg-fuchsia-300{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}.bg-fuchsia-400{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}.bg-fuchsia-50{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}.bg-fuchsia-500{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}.bg-fuchsia-600{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.bg-fuchsia-700{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.bg-fuchsia-800{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.bg-fuchsia-900{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}.bg-fuchsia-950{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-50\/50{background-color:rgba(249,250,251,.5)}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.bg-green-300{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.bg-green-800{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.bg-indigo-200{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.bg-indigo-300{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}.bg-indigo-400{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.bg-indigo-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.bg-indigo-700{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.bg-indigo-800{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.bg-indigo-900{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.bg-indigo-950{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.bg-lime-100{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.bg-lime-200{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.bg-lime-300{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}.bg-lime-400{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}.bg-lime-50{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}.bg-lime-500{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.bg-lime-700{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.bg-lime-800{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.bg-lime-900{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}.bg-lime-950{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.bg-neutral-200{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.bg-neutral-400{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}.bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-neutral-500{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.bg-neutral-600{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.bg-neutral-950{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.bg-orange-300{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}.bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}.bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}.bg-pink-300{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}.bg-pink-400{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.bg-pink-500{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.bg-pink-700{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.bg-pink-800{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.bg-pink-900{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}.bg-pink-950{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}.bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}.bg-purple-300{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}.bg-purple-400{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.bg-purple-800{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}.bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-red-300{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}.bg-rose-100{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.bg-rose-200{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.bg-rose-300{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}.bg-rose-400{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.bg-rose-50{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.bg-rose-700{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.bg-rose-800{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.bg-rose-900{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.bg-rose-950{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.bg-sky-200{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.bg-sky-400{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-sky-700{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.bg-sky-800{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.bg-sky-900{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.bg-slate-950\/30{background-color:rgba(2,6,23,.3)}.bg-stone-100{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.bg-stone-200{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.bg-stone-300{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}.bg-stone-400{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}.bg-stone-50{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}.bg-stone-500{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}.bg-stone-600{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}.bg-stone-700{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}.bg-stone-800{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}.bg-stone-900{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}.bg-stone-950{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}.bg-teal-100{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.bg-teal-200{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}.bg-teal-300{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}.bg-teal-400{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.bg-teal-50{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}.bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.bg-teal-800{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.bg-teal-900{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}.bg-teal-950{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-tremor-background{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-tremor-background-emphasis{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-tremor-background-muted{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-tremor-background-subtle{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-tremor-border{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-tremor-brand{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-tremor-brand-muted{--tw-bg-opacity:1;background-color:rgb(134 136 239/var(--tw-bg-opacity))}.bg-tremor-brand-muted\/50{background-color:rgba(134,136,239,.5)}.bg-tremor-brand-subtle{--tw-bg-opacity:1;background-color:rgb(142 145 235/var(--tw-bg-opacity))}.bg-tremor-content-subtle{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.bg-violet-200{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.bg-violet-300{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.bg-violet-400{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}.bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.bg-violet-500{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}.bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.bg-violet-700{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}.bg-violet-800{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.bg-violet-900{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}.bg-violet-950{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.bg-yellow-300{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.bg-yellow-700{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}.bg-yellow-800{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}.bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.bg-yellow-950{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.bg-zinc-300{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}.bg-zinc-400{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-zinc-500{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}.bg-zinc-600{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.bg-zinc-950{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}.bg-opacity-10{--tw-bg-opacity:0.1}.bg-opacity-20{--tw-bg-opacity:0.2}.bg-opacity-30{--tw-bg-opacity:0.3}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from:#f59e0b var(--tw-gradient-from-position);--tw-gradient-to:rgba(245,158,11,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-50{--tw-gradient-from:#eff6ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,246,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-emerald-50{--tw-gradient-from:#ecfdf5 var(--tw-gradient-from-position);--tw-gradient-to:rgba(236,253,245,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-50{--tw-gradient-from:#f0fdf4 var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-orange-50{--tw-gradient-from:#fff7ed var(--tw-gradient-from-position);--tw-gradient-to:rgba(255,247,237,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-50{--tw-gradient-from:#faf5ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(250,245,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:transparent var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-tremor-background{--tw-gradient-from:#fff var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-blue-50{--tw-gradient-to:#eff6ff var(--tw-gradient-to-position)}.to-green-50{--tw-gradient-to:#f0fdf4 var(--tw-gradient-to-position)}.to-indigo-50{--tw-gradient-to:#eef2ff var(--tw-gradient-to-position)}.to-red-50{--tw-gradient-to:#fef2f2 var(--tw-gradient-to-position)}.to-teal-50{--tw-gradient-to:#f0fdfa var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.to-tremor-background{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.to-yellow-500{--tw-gradient-to:#eab308 var(--tw-gradient-to-position)}.bg-repeat{background-repeat:repeat}.fill-amber-100{fill:#fef3c7}.fill-amber-200{fill:#fde68a}.fill-amber-300{fill:#fcd34d}.fill-amber-400{fill:#fbbf24}.fill-amber-50{fill:#fffbeb}.fill-amber-500{fill:#f59e0b}.fill-amber-600{fill:#d97706}.fill-amber-700{fill:#b45309}.fill-amber-800{fill:#92400e}.fill-amber-900{fill:#78350f}.fill-amber-950{fill:#451a03}.fill-blue-100{fill:#dbeafe}.fill-blue-200{fill:#bfdbfe}.fill-blue-300{fill:#93c5fd}.fill-blue-400{fill:#60a5fa}.fill-blue-50{fill:#eff6ff}.fill-blue-500{fill:#3b82f6}.fill-blue-600{fill:#2563eb}.fill-blue-700{fill:#1d4ed8}.fill-blue-800{fill:#1e40af}.fill-blue-900{fill:#1e3a8a}.fill-blue-950{fill:#172554}.fill-cyan-100{fill:#cffafe}.fill-cyan-200{fill:#a5f3fc}.fill-cyan-300{fill:#67e8f9}.fill-cyan-400{fill:#22d3ee}.fill-cyan-50{fill:#ecfeff}.fill-cyan-500{fill:#06b6d4}.fill-cyan-600{fill:#0891b2}.fill-cyan-700{fill:#0e7490}.fill-cyan-800{fill:#155e75}.fill-cyan-900{fill:#164e63}.fill-cyan-950{fill:#083344}.fill-emerald-100{fill:#d1fae5}.fill-emerald-200{fill:#a7f3d0}.fill-emerald-300{fill:#6ee7b7}.fill-emerald-400{fill:#34d399}.fill-emerald-50{fill:#ecfdf5}.fill-emerald-500{fill:#10b981}.fill-emerald-600{fill:#059669}.fill-emerald-700{fill:#047857}.fill-emerald-800{fill:#065f46}.fill-emerald-900{fill:#064e3b}.fill-emerald-950{fill:#022c22}.fill-fuchsia-100{fill:#fae8ff}.fill-fuchsia-200{fill:#f5d0fe}.fill-fuchsia-300{fill:#f0abfc}.fill-fuchsia-400{fill:#e879f9}.fill-fuchsia-50{fill:#fdf4ff}.fill-fuchsia-500{fill:#d946ef}.fill-fuchsia-600{fill:#c026d3}.fill-fuchsia-700{fill:#a21caf}.fill-fuchsia-800{fill:#86198f}.fill-fuchsia-900{fill:#701a75}.fill-fuchsia-950{fill:#4a044e}.fill-gray-100{fill:#f3f4f6}.fill-gray-200{fill:#e5e7eb}.fill-gray-300{fill:#d1d5db}.fill-gray-400{fill:#9ca3af}.fill-gray-50{fill:#f9fafb}.fill-gray-500{fill:#6b7280}.fill-gray-600{fill:#4b5563}.fill-gray-700{fill:#374151}.fill-gray-800{fill:#1f2937}.fill-gray-900{fill:#111827}.fill-gray-950{fill:#030712}.fill-green-100{fill:#dcfce7}.fill-green-200{fill:#bbf7d0}.fill-green-300{fill:#86efac}.fill-green-400{fill:#4ade80}.fill-green-50{fill:#f0fdf4}.fill-green-500{fill:#22c55e}.fill-green-600{fill:#16a34a}.fill-green-700{fill:#15803d}.fill-green-800{fill:#166534}.fill-green-900{fill:#14532d}.fill-green-950{fill:#052e16}.fill-indigo-100{fill:#e0e7ff}.fill-indigo-200{fill:#c7d2fe}.fill-indigo-300{fill:#a5b4fc}.fill-indigo-400{fill:#818cf8}.fill-indigo-50{fill:#eef2ff}.fill-indigo-500{fill:#6366f1}.fill-indigo-600{fill:#4f46e5}.fill-indigo-700{fill:#4338ca}.fill-indigo-800{fill:#3730a3}.fill-indigo-900{fill:#312e81}.fill-indigo-950{fill:#1e1b4b}.fill-lime-100{fill:#ecfccb}.fill-lime-200{fill:#d9f99d}.fill-lime-300{fill:#bef264}.fill-lime-400{fill:#a3e635}.fill-lime-50{fill:#f7fee7}.fill-lime-500{fill:#84cc16}.fill-lime-600{fill:#65a30d}.fill-lime-700{fill:#4d7c0f}.fill-lime-800{fill:#3f6212}.fill-lime-900{fill:#365314}.fill-lime-950{fill:#1a2e05}.fill-neutral-100{fill:#f5f5f5}.fill-neutral-200{fill:#e5e5e5}.fill-neutral-300{fill:#d4d4d4}.fill-neutral-400{fill:#a3a3a3}.fill-neutral-50{fill:#fafafa}.fill-neutral-500{fill:#737373}.fill-neutral-600{fill:#525252}.fill-neutral-700{fill:#404040}.fill-neutral-800{fill:#262626}.fill-neutral-900{fill:#171717}.fill-neutral-950{fill:#0a0a0a}.fill-orange-100{fill:#ffedd5}.fill-orange-200{fill:#fed7aa}.fill-orange-300{fill:#fdba74}.fill-orange-400{fill:#fb923c}.fill-orange-50{fill:#fff7ed}.fill-orange-500{fill:#f97316}.fill-orange-600{fill:#ea580c}.fill-orange-700{fill:#c2410c}.fill-orange-800{fill:#9a3412}.fill-orange-900{fill:#7c2d12}.fill-orange-950{fill:#431407}.fill-pink-100{fill:#fce7f3}.fill-pink-200{fill:#fbcfe8}.fill-pink-300{fill:#f9a8d4}.fill-pink-400{fill:#f472b6}.fill-pink-50{fill:#fdf2f8}.fill-pink-500{fill:#ec4899}.fill-pink-600{fill:#db2777}.fill-pink-700{fill:#be185d}.fill-pink-800{fill:#9d174d}.fill-pink-900{fill:#831843}.fill-pink-950{fill:#500724}.fill-purple-100{fill:#f3e8ff}.fill-purple-200{fill:#e9d5ff}.fill-purple-300{fill:#d8b4fe}.fill-purple-400{fill:#c084fc}.fill-purple-50{fill:#faf5ff}.fill-purple-500{fill:#a855f7}.fill-purple-600{fill:#9333ea}.fill-purple-700{fill:#7e22ce}.fill-purple-800{fill:#6b21a8}.fill-purple-900{fill:#581c87}.fill-purple-950{fill:#3b0764}.fill-red-100{fill:#fee2e2}.fill-red-200{fill:#fecaca}.fill-red-300{fill:#fca5a5}.fill-red-400{fill:#f87171}.fill-red-50{fill:#fef2f2}.fill-red-500{fill:#ef4444}.fill-red-600{fill:#dc2626}.fill-red-700{fill:#b91c1c}.fill-red-800{fill:#991b1b}.fill-red-900{fill:#7f1d1d}.fill-red-950{fill:#450a0a}.fill-rose-100{fill:#ffe4e6}.fill-rose-200{fill:#fecdd3}.fill-rose-300{fill:#fda4af}.fill-rose-400{fill:#fb7185}.fill-rose-50{fill:#fff1f2}.fill-rose-500{fill:#f43f5e}.fill-rose-600{fill:#e11d48}.fill-rose-700{fill:#be123c}.fill-rose-800{fill:#9f1239}.fill-rose-900{fill:#881337}.fill-rose-950{fill:#4c0519}.fill-sky-100{fill:#e0f2fe}.fill-sky-200{fill:#bae6fd}.fill-sky-300{fill:#7dd3fc}.fill-sky-400{fill:#38bdf8}.fill-sky-50{fill:#f0f9ff}.fill-sky-500{fill:#0ea5e9}.fill-sky-600{fill:#0284c7}.fill-sky-700{fill:#0369a1}.fill-sky-800{fill:#075985}.fill-sky-900{fill:#0c4a6e}.fill-sky-950{fill:#082f49}.fill-slate-100{fill:#f1f5f9}.fill-slate-200{fill:#e2e8f0}.fill-slate-300{fill:#cbd5e1}.fill-slate-400{fill:#94a3b8}.fill-slate-50{fill:#f8fafc}.fill-slate-500{fill:#64748b}.fill-slate-600{fill:#475569}.fill-slate-700{fill:#334155}.fill-slate-800{fill:#1e293b}.fill-slate-900{fill:#0f172a}.fill-slate-950{fill:#020617}.fill-stone-100{fill:#f5f5f4}.fill-stone-200{fill:#e7e5e4}.fill-stone-300{fill:#d6d3d1}.fill-stone-400{fill:#a8a29e}.fill-stone-50{fill:#fafaf9}.fill-stone-500{fill:#78716c}.fill-stone-600{fill:#57534e}.fill-stone-700{fill:#44403c}.fill-stone-800{fill:#292524}.fill-stone-900{fill:#1c1917}.fill-stone-950{fill:#0c0a09}.fill-teal-100{fill:#ccfbf1}.fill-teal-200{fill:#99f6e4}.fill-teal-300{fill:#5eead4}.fill-teal-400{fill:#2dd4bf}.fill-teal-50{fill:#f0fdfa}.fill-teal-500{fill:#14b8a6}.fill-teal-600{fill:#0d9488}.fill-teal-700{fill:#0f766e}.fill-teal-800{fill:#115e59}.fill-teal-900{fill:#134e4a}.fill-teal-950{fill:#042f2e}.fill-tremor-content{fill:#6b7280}.fill-tremor-content-emphasis{fill:#374151}.fill-violet-100{fill:#ede9fe}.fill-violet-200{fill:#ddd6fe}.fill-violet-300{fill:#c4b5fd}.fill-violet-400{fill:#a78bfa}.fill-violet-50{fill:#f5f3ff}.fill-violet-500{fill:#8b5cf6}.fill-violet-600{fill:#7c3aed}.fill-violet-700{fill:#6d28d9}.fill-violet-800{fill:#5b21b6}.fill-violet-900{fill:#4c1d95}.fill-violet-950{fill:#2e1065}.fill-yellow-100{fill:#fef9c3}.fill-yellow-200{fill:#fef08a}.fill-yellow-300{fill:#fde047}.fill-yellow-400{fill:#facc15}.fill-yellow-50{fill:#fefce8}.fill-yellow-500{fill:#eab308}.fill-yellow-600{fill:#ca8a04}.fill-yellow-700{fill:#a16207}.fill-yellow-800{fill:#854d0e}.fill-yellow-900{fill:#713f12}.fill-yellow-950{fill:#422006}.fill-zinc-100{fill:#f4f4f5}.fill-zinc-200{fill:#e4e4e7}.fill-zinc-300{fill:#d4d4d8}.fill-zinc-400{fill:#a1a1aa}.fill-zinc-50{fill:#fafafa}.fill-zinc-500{fill:#71717a}.fill-zinc-600{fill:#52525b}.fill-zinc-700{fill:#3f3f46}.fill-zinc-800{fill:#27272a}.fill-zinc-900{fill:#18181b}.fill-zinc-950{fill:#09090b}.stroke-amber-100{stroke:#fef3c7}.stroke-amber-200{stroke:#fde68a}.stroke-amber-300{stroke:#fcd34d}.stroke-amber-400{stroke:#fbbf24}.stroke-amber-50{stroke:#fffbeb}.stroke-amber-500{stroke:#f59e0b}.stroke-amber-600{stroke:#d97706}.stroke-amber-700{stroke:#b45309}.stroke-amber-800{stroke:#92400e}.stroke-amber-900{stroke:#78350f}.stroke-amber-950{stroke:#451a03}.stroke-blue-100{stroke:#dbeafe}.stroke-blue-200{stroke:#bfdbfe}.stroke-blue-300{stroke:#93c5fd}.stroke-blue-400{stroke:#60a5fa}.stroke-blue-50{stroke:#eff6ff}.stroke-blue-500{stroke:#3b82f6}.stroke-blue-600{stroke:#2563eb}.stroke-blue-700{stroke:#1d4ed8}.stroke-blue-800{stroke:#1e40af}.stroke-blue-900{stroke:#1e3a8a}.stroke-blue-950{stroke:#172554}.stroke-cyan-100{stroke:#cffafe}.stroke-cyan-200{stroke:#a5f3fc}.stroke-cyan-300{stroke:#67e8f9}.stroke-cyan-400{stroke:#22d3ee}.stroke-cyan-50{stroke:#ecfeff}.stroke-cyan-500{stroke:#06b6d4}.stroke-cyan-600{stroke:#0891b2}.stroke-cyan-700{stroke:#0e7490}.stroke-cyan-800{stroke:#155e75}.stroke-cyan-900{stroke:#164e63}.stroke-cyan-950{stroke:#083344}.stroke-dark-tremor-background{stroke:#111827}.stroke-dark-tremor-border{stroke:#374151}.stroke-emerald-100{stroke:#d1fae5}.stroke-emerald-200{stroke:#a7f3d0}.stroke-emerald-300{stroke:#6ee7b7}.stroke-emerald-400{stroke:#34d399}.stroke-emerald-50{stroke:#ecfdf5}.stroke-emerald-500{stroke:#10b981}.stroke-emerald-600{stroke:#059669}.stroke-emerald-700{stroke:#047857}.stroke-emerald-800{stroke:#065f46}.stroke-emerald-900{stroke:#064e3b}.stroke-emerald-950{stroke:#022c22}.stroke-fuchsia-100{stroke:#fae8ff}.stroke-fuchsia-200{stroke:#f5d0fe}.stroke-fuchsia-300{stroke:#f0abfc}.stroke-fuchsia-400{stroke:#e879f9}.stroke-fuchsia-50{stroke:#fdf4ff}.stroke-fuchsia-500{stroke:#d946ef}.stroke-fuchsia-600{stroke:#c026d3}.stroke-fuchsia-700{stroke:#a21caf}.stroke-fuchsia-800{stroke:#86198f}.stroke-fuchsia-900{stroke:#701a75}.stroke-fuchsia-950{stroke:#4a044e}.stroke-gray-100{stroke:#f3f4f6}.stroke-gray-200{stroke:#e5e7eb}.stroke-gray-300{stroke:#d1d5db}.stroke-gray-400{stroke:#9ca3af}.stroke-gray-50{stroke:#f9fafb}.stroke-gray-500{stroke:#6b7280}.stroke-gray-600{stroke:#4b5563}.stroke-gray-700{stroke:#374151}.stroke-gray-800{stroke:#1f2937}.stroke-gray-900{stroke:#111827}.stroke-gray-950{stroke:#030712}.stroke-green-100{stroke:#dcfce7}.stroke-green-200{stroke:#bbf7d0}.stroke-green-300{stroke:#86efac}.stroke-green-400{stroke:#4ade80}.stroke-green-50{stroke:#f0fdf4}.stroke-green-500{stroke:#22c55e}.stroke-green-600{stroke:#16a34a}.stroke-green-700{stroke:#15803d}.stroke-green-800{stroke:#166534}.stroke-green-900{stroke:#14532d}.stroke-green-950{stroke:#052e16}.stroke-indigo-100{stroke:#e0e7ff}.stroke-indigo-200{stroke:#c7d2fe}.stroke-indigo-300{stroke:#a5b4fc}.stroke-indigo-400{stroke:#818cf8}.stroke-indigo-50{stroke:#eef2ff}.stroke-indigo-500{stroke:#6366f1}.stroke-indigo-600{stroke:#4f46e5}.stroke-indigo-700{stroke:#4338ca}.stroke-indigo-800{stroke:#3730a3}.stroke-indigo-900{stroke:#312e81}.stroke-indigo-950{stroke:#1e1b4b}.stroke-lime-100{stroke:#ecfccb}.stroke-lime-200{stroke:#d9f99d}.stroke-lime-300{stroke:#bef264}.stroke-lime-400{stroke:#a3e635}.stroke-lime-50{stroke:#f7fee7}.stroke-lime-500{stroke:#84cc16}.stroke-lime-600{stroke:#65a30d}.stroke-lime-700{stroke:#4d7c0f}.stroke-lime-800{stroke:#3f6212}.stroke-lime-900{stroke:#365314}.stroke-lime-950{stroke:#1a2e05}.stroke-neutral-100{stroke:#f5f5f5}.stroke-neutral-200{stroke:#e5e5e5}.stroke-neutral-300{stroke:#d4d4d4}.stroke-neutral-400{stroke:#a3a3a3}.stroke-neutral-50{stroke:#fafafa}.stroke-neutral-500{stroke:#737373}.stroke-neutral-600{stroke:#525252}.stroke-neutral-700{stroke:#404040}.stroke-neutral-800{stroke:#262626}.stroke-neutral-900{stroke:#171717}.stroke-neutral-950{stroke:#0a0a0a}.stroke-orange-100{stroke:#ffedd5}.stroke-orange-200{stroke:#fed7aa}.stroke-orange-300{stroke:#fdba74}.stroke-orange-400{stroke:#fb923c}.stroke-orange-50{stroke:#fff7ed}.stroke-orange-500{stroke:#f97316}.stroke-orange-600{stroke:#ea580c}.stroke-orange-700{stroke:#c2410c}.stroke-orange-800{stroke:#9a3412}.stroke-orange-900{stroke:#7c2d12}.stroke-orange-950{stroke:#431407}.stroke-pink-100{stroke:#fce7f3}.stroke-pink-200{stroke:#fbcfe8}.stroke-pink-300{stroke:#f9a8d4}.stroke-pink-400{stroke:#f472b6}.stroke-pink-50{stroke:#fdf2f8}.stroke-pink-500{stroke:#ec4899}.stroke-pink-600{stroke:#db2777}.stroke-pink-700{stroke:#be185d}.stroke-pink-800{stroke:#9d174d}.stroke-pink-900{stroke:#831843}.stroke-pink-950{stroke:#500724}.stroke-purple-100{stroke:#f3e8ff}.stroke-purple-200{stroke:#e9d5ff}.stroke-purple-300{stroke:#d8b4fe}.stroke-purple-400{stroke:#c084fc}.stroke-purple-50{stroke:#faf5ff}.stroke-purple-500{stroke:#a855f7}.stroke-purple-600{stroke:#9333ea}.stroke-purple-700{stroke:#7e22ce}.stroke-purple-800{stroke:#6b21a8}.stroke-purple-900{stroke:#581c87}.stroke-purple-950{stroke:#3b0764}.stroke-red-100{stroke:#fee2e2}.stroke-red-200{stroke:#fecaca}.stroke-red-300{stroke:#fca5a5}.stroke-red-400{stroke:#f87171}.stroke-red-50{stroke:#fef2f2}.stroke-red-500{stroke:#ef4444}.stroke-red-600{stroke:#dc2626}.stroke-red-700{stroke:#b91c1c}.stroke-red-800{stroke:#991b1b}.stroke-red-900{stroke:#7f1d1d}.stroke-red-950{stroke:#450a0a}.stroke-rose-100{stroke:#ffe4e6}.stroke-rose-200{stroke:#fecdd3}.stroke-rose-300{stroke:#fda4af}.stroke-rose-400{stroke:#fb7185}.stroke-rose-50{stroke:#fff1f2}.stroke-rose-500{stroke:#f43f5e}.stroke-rose-600{stroke:#e11d48}.stroke-rose-700{stroke:#be123c}.stroke-rose-800{stroke:#9f1239}.stroke-rose-900{stroke:#881337}.stroke-rose-950{stroke:#4c0519}.stroke-sky-100{stroke:#e0f2fe}.stroke-sky-200{stroke:#bae6fd}.stroke-sky-300{stroke:#7dd3fc}.stroke-sky-400{stroke:#38bdf8}.stroke-sky-50{stroke:#f0f9ff}.stroke-sky-500{stroke:#0ea5e9}.stroke-sky-600{stroke:#0284c7}.stroke-sky-700{stroke:#0369a1}.stroke-sky-800{stroke:#075985}.stroke-sky-900{stroke:#0c4a6e}.stroke-sky-950{stroke:#082f49}.stroke-slate-100{stroke:#f1f5f9}.stroke-slate-200{stroke:#e2e8f0}.stroke-slate-300{stroke:#cbd5e1}.stroke-slate-400{stroke:#94a3b8}.stroke-slate-50{stroke:#f8fafc}.stroke-slate-500{stroke:#64748b}.stroke-slate-600{stroke:#475569}.stroke-slate-700{stroke:#334155}.stroke-slate-800{stroke:#1e293b}.stroke-slate-900{stroke:#0f172a}.stroke-slate-950{stroke:#020617}.stroke-stone-100{stroke:#f5f5f4}.stroke-stone-200{stroke:#e7e5e4}.stroke-stone-300{stroke:#d6d3d1}.stroke-stone-400{stroke:#a8a29e}.stroke-stone-50{stroke:#fafaf9}.stroke-stone-500{stroke:#78716c}.stroke-stone-600{stroke:#57534e}.stroke-stone-700{stroke:#44403c}.stroke-stone-800{stroke:#292524}.stroke-stone-900{stroke:#1c1917}.stroke-stone-950{stroke:#0c0a09}.stroke-teal-100{stroke:#ccfbf1}.stroke-teal-200{stroke:#99f6e4}.stroke-teal-300{stroke:#5eead4}.stroke-teal-400{stroke:#2dd4bf}.stroke-teal-50{stroke:#f0fdfa}.stroke-teal-500{stroke:#14b8a6}.stroke-teal-600{stroke:#0d9488}.stroke-teal-700{stroke:#0f766e}.stroke-teal-800{stroke:#115e59}.stroke-teal-900{stroke:#134e4a}.stroke-teal-950{stroke:#042f2e}.stroke-tremor-background{stroke:#fff}.stroke-tremor-border{stroke:#e5e7eb}.stroke-tremor-brand{stroke:#6366f1}.stroke-tremor-brand-muted\/50{stroke:rgba(134,136,239,.5)}.stroke-violet-100{stroke:#ede9fe}.stroke-violet-200{stroke:#ddd6fe}.stroke-violet-300{stroke:#c4b5fd}.stroke-violet-400{stroke:#a78bfa}.stroke-violet-50{stroke:#f5f3ff}.stroke-violet-500{stroke:#8b5cf6}.stroke-violet-600{stroke:#7c3aed}.stroke-violet-700{stroke:#6d28d9}.stroke-violet-800{stroke:#5b21b6}.stroke-violet-900{stroke:#4c1d95}.stroke-violet-950{stroke:#2e1065}.stroke-yellow-100{stroke:#fef9c3}.stroke-yellow-200{stroke:#fef08a}.stroke-yellow-300{stroke:#fde047}.stroke-yellow-400{stroke:#facc15}.stroke-yellow-50{stroke:#fefce8}.stroke-yellow-500{stroke:#eab308}.stroke-yellow-600{stroke:#ca8a04}.stroke-yellow-700{stroke:#a16207}.stroke-yellow-800{stroke:#854d0e}.stroke-yellow-900{stroke:#713f12}.stroke-yellow-950{stroke:#422006}.stroke-zinc-100{stroke:#f4f4f5}.stroke-zinc-200{stroke:#e4e4e7}.stroke-zinc-300{stroke:#d4d4d8}.stroke-zinc-400{stroke:#a1a1aa}.stroke-zinc-50{stroke:#fafafa}.stroke-zinc-500{stroke:#71717a}.stroke-zinc-600{stroke:#52525b}.stroke-zinc-700{stroke:#3f3f46}.stroke-zinc-800{stroke:#27272a}.stroke-zinc-900{stroke:#18181b}.stroke-zinc-950{stroke:#09090b}.stroke-1{stroke-width:1}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-0{padding:0!important}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[10px\]{padding-top:10px;padding-bottom:10px}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-7{padding-left:1.75rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-14{padding-right:3.5rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[12px\]{font-size:12px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-tremor-default{font-size:.775rem;line-height:1.15rem}.text-tremor-label{font-size:.75rem;line-height:.3rem}.text-tremor-metric{font-size:1.675rem;line-height:2.15rem}.text-tremor-title{font-size:1.025rem;line-height:1.65rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.normal-nums{font-variant-numeric:normal}.ordinal{--tw-ordinal:ordinal}.ordinal,.slashed-zero{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero}.lining-nums{--tw-numeric-figure:lining-nums}.lining-nums,.oldstyle-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums}.proportional-nums{--tw-numeric-spacing:proportional-nums}.proportional-nums,.tabular-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-6{line-height:1.5rem}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.text-amber-50{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.text-amber-950{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.text-blue-50{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.text-blue-950{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}.text-current{color:currentColor}.text-cyan-100{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.text-cyan-200{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}.text-cyan-300{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}.text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.text-cyan-50{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}.text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.text-cyan-800{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}.text-cyan-900{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.text-cyan-950{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}.text-dark-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-dark-tremor-brand-emphasis{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.text-dark-tremor-brand-inverted{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.text-dark-tremor-content{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-dark-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.text-dark-tremor-content-subtle{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-emerald-100{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.text-emerald-200{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.text-emerald-50{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}.text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.text-emerald-900{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}.text-emerald-950{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}.text-fuchsia-100{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}.text-fuchsia-200{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.text-fuchsia-300{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}.text-fuchsia-400{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}.text-fuchsia-50{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}.text-fuchsia-500{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}.text-fuchsia-600{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.text-fuchsia-700{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.text-fuchsia-800{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.text-fuchsia-900{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}.text-fuchsia-950{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-gray-950{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.text-green-100{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-green-50{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}.text-green-950{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}.text-indigo-100{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}.text-indigo-200{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.text-indigo-300{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.text-indigo-50{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}.text-indigo-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.text-indigo-900{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.text-indigo-950{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.text-inherit{color:inherit}.text-lime-100{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}.text-lime-200{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}.text-lime-300{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}.text-lime-400{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}.text-lime-50{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}.text-lime-500{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}.text-lime-600{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.text-lime-700{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}.text-lime-800{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}.text-lime-900{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.text-lime-950{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}.text-neutral-100{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.text-neutral-300{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}.text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}.text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.text-orange-50{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.text-orange-900{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}.text-orange-950{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}.text-pink-100{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}.text-pink-200{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.text-pink-300{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}.text-pink-400{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}.text-pink-50{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}.text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.text-pink-600{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.text-pink-700{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.text-pink-800{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.text-pink-900{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}.text-pink-950{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}.text-purple-100{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}.text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}.text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.text-purple-50{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.text-purple-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.text-purple-900{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}.text-purple-950{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}.text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}.text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.text-red-50{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.text-red-950{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}.text-rose-100{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.text-rose-200{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.text-rose-50{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}.text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.text-rose-800{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.text-rose-900{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.text-rose-950{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}.text-sky-100{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.text-sky-50{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}.text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.text-sky-800{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.text-sky-900{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}.text-sky-950{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}.text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-50{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.text-slate-950{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.text-stone-100{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}.text-stone-200{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}.text-stone-300{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}.text-stone-400{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.text-stone-50{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}.text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.text-stone-600{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.text-stone-700{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}.text-stone-800{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}.text-stone-900{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}.text-stone-950{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}.text-teal-100{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}.text-teal-200{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.text-teal-300{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}.text-teal-400{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}.text-teal-50{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}.text-teal-500{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.text-teal-700{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.text-teal-800{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.text-teal-900{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}.text-teal-950{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}.text-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-tremor-brand-emphasis{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.text-tremor-brand-inverted{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-tremor-content{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-tremor-content-strong{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-tremor-content-subtle{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-violet-100{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}.text-violet-200{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.text-violet-50{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}.text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.text-violet-600{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.text-violet-700{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.text-violet-800{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}.text-violet-900{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}.text-violet-950{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-100{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}.text-yellow-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.text-yellow-50{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}.text-yellow-950{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}.text-zinc-100{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.text-zinc-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-dark-tremor-brand,.accent-tremor-brand{accent-color:#6366f1}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-\[-4px_0_4px_-4px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[-4px_0_4px_-4px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:-4px 0 4px -4px rgba(0,0,0,.1);--tw-shadow-colored:-4px 0 4px -4px var(--tw-shadow-color)}.shadow-\[-4px_0_8px_-6px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:-4px 0 8px -6px rgba(0,0,0,.1);--tw-shadow-colored:-4px 0 8px -6px var(--tw-shadow-color)}.shadow-\[-4px_0_8px_-6px_rgba\(0\2c 0\2c 0\2c 0\.1\)\],.shadow-dark-tremor-card{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-dark-tremor-card{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow-dark-tremor-input{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-dark-tremor-input,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-tremor-card{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow-tremor-card,.shadow-tremor-dropdown{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-tremor-dropdown{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-tremor-input{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-tremor-input,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-tremor-brand{outline-color:#6366f1}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-1{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-2,.ring-4{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-inset{--tw-ring-inset:inset}.ring-amber-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 243 199/var(--tw-ring-opacity))}.ring-amber-200{--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity))}.ring-amber-300{--tw-ring-opacity:1;--tw-ring-color:rgb(252 211 77/var(--tw-ring-opacity))}.ring-amber-400{--tw-ring-opacity:1;--tw-ring-color:rgb(251 191 36/var(--tw-ring-opacity))}.ring-amber-50{--tw-ring-opacity:1;--tw-ring-color:rgb(255 251 235/var(--tw-ring-opacity))}.ring-amber-500{--tw-ring-opacity:1;--tw-ring-color:rgb(245 158 11/var(--tw-ring-opacity))}.ring-amber-600{--tw-ring-opacity:1;--tw-ring-color:rgb(217 119 6/var(--tw-ring-opacity))}.ring-amber-700{--tw-ring-opacity:1;--tw-ring-color:rgb(180 83 9/var(--tw-ring-opacity))}.ring-amber-800{--tw-ring-opacity:1;--tw-ring-color:rgb(146 64 14/var(--tw-ring-opacity))}.ring-amber-900{--tw-ring-opacity:1;--tw-ring-color:rgb(120 53 15/var(--tw-ring-opacity))}.ring-amber-950{--tw-ring-opacity:1;--tw-ring-color:rgb(69 26 3/var(--tw-ring-opacity))}.ring-blue-100{--tw-ring-opacity:1;--tw-ring-color:rgb(219 234 254/var(--tw-ring-opacity))}.ring-blue-200{--tw-ring-opacity:1;--tw-ring-color:rgb(191 219 254/var(--tw-ring-opacity))}.ring-blue-300{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity))}.ring-blue-400{--tw-ring-opacity:1;--tw-ring-color:rgb(96 165 250/var(--tw-ring-opacity))}.ring-blue-50{--tw-ring-opacity:1;--tw-ring-color:rgb(239 246 255/var(--tw-ring-opacity))}.ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.ring-blue-600{--tw-ring-opacity:1;--tw-ring-color:rgb(37 99 235/var(--tw-ring-opacity))}.ring-blue-700{--tw-ring-opacity:1;--tw-ring-color:rgb(29 78 216/var(--tw-ring-opacity))}.ring-blue-800{--tw-ring-opacity:1;--tw-ring-color:rgb(30 64 175/var(--tw-ring-opacity))}.ring-blue-900{--tw-ring-opacity:1;--tw-ring-color:rgb(30 58 138/var(--tw-ring-opacity))}.ring-blue-950{--tw-ring-opacity:1;--tw-ring-color:rgb(23 37 84/var(--tw-ring-opacity))}.ring-cyan-100{--tw-ring-opacity:1;--tw-ring-color:rgb(207 250 254/var(--tw-ring-opacity))}.ring-cyan-200{--tw-ring-opacity:1;--tw-ring-color:rgb(165 243 252/var(--tw-ring-opacity))}.ring-cyan-300{--tw-ring-opacity:1;--tw-ring-color:rgb(103 232 249/var(--tw-ring-opacity))}.ring-cyan-400{--tw-ring-opacity:1;--tw-ring-color:rgb(34 211 238/var(--tw-ring-opacity))}.ring-cyan-50{--tw-ring-opacity:1;--tw-ring-color:rgb(236 254 255/var(--tw-ring-opacity))}.ring-cyan-500{--tw-ring-opacity:1;--tw-ring-color:rgb(6 182 212/var(--tw-ring-opacity))}.ring-cyan-600{--tw-ring-opacity:1;--tw-ring-color:rgb(8 145 178/var(--tw-ring-opacity))}.ring-cyan-700{--tw-ring-opacity:1;--tw-ring-color:rgb(14 116 144/var(--tw-ring-opacity))}.ring-cyan-800{--tw-ring-opacity:1;--tw-ring-color:rgb(21 94 117/var(--tw-ring-opacity))}.ring-cyan-900{--tw-ring-opacity:1;--tw-ring-color:rgb(22 78 99/var(--tw-ring-opacity))}.ring-cyan-950{--tw-ring-opacity:1;--tw-ring-color:rgb(8 51 68/var(--tw-ring-opacity))}.ring-dark-tremor-ring{--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55/var(--tw-ring-opacity))}.ring-emerald-100{--tw-ring-opacity:1;--tw-ring-color:rgb(209 250 229/var(--tw-ring-opacity))}.ring-emerald-200{--tw-ring-opacity:1;--tw-ring-color:rgb(167 243 208/var(--tw-ring-opacity))}.ring-emerald-300{--tw-ring-opacity:1;--tw-ring-color:rgb(110 231 183/var(--tw-ring-opacity))}.ring-emerald-400{--tw-ring-opacity:1;--tw-ring-color:rgb(52 211 153/var(--tw-ring-opacity))}.ring-emerald-50{--tw-ring-opacity:1;--tw-ring-color:rgb(236 253 245/var(--tw-ring-opacity))}.ring-emerald-500{--tw-ring-opacity:1;--tw-ring-color:rgb(16 185 129/var(--tw-ring-opacity))}.ring-emerald-600{--tw-ring-opacity:1;--tw-ring-color:rgb(5 150 105/var(--tw-ring-opacity))}.ring-emerald-700{--tw-ring-opacity:1;--tw-ring-color:rgb(4 120 87/var(--tw-ring-opacity))}.ring-emerald-800{--tw-ring-opacity:1;--tw-ring-color:rgb(6 95 70/var(--tw-ring-opacity))}.ring-emerald-900{--tw-ring-opacity:1;--tw-ring-color:rgb(6 78 59/var(--tw-ring-opacity))}.ring-emerald-950{--tw-ring-opacity:1;--tw-ring-color:rgb(2 44 34/var(--tw-ring-opacity))}.ring-fuchsia-100{--tw-ring-opacity:1;--tw-ring-color:rgb(250 232 255/var(--tw-ring-opacity))}.ring-fuchsia-200{--tw-ring-opacity:1;--tw-ring-color:rgb(245 208 254/var(--tw-ring-opacity))}.ring-fuchsia-300{--tw-ring-opacity:1;--tw-ring-color:rgb(240 171 252/var(--tw-ring-opacity))}.ring-fuchsia-400{--tw-ring-opacity:1;--tw-ring-color:rgb(232 121 249/var(--tw-ring-opacity))}.ring-fuchsia-50{--tw-ring-opacity:1;--tw-ring-color:rgb(253 244 255/var(--tw-ring-opacity))}.ring-fuchsia-500{--tw-ring-opacity:1;--tw-ring-color:rgb(217 70 239/var(--tw-ring-opacity))}.ring-fuchsia-600{--tw-ring-opacity:1;--tw-ring-color:rgb(192 38 211/var(--tw-ring-opacity))}.ring-fuchsia-700{--tw-ring-opacity:1;--tw-ring-color:rgb(162 28 175/var(--tw-ring-opacity))}.ring-fuchsia-800{--tw-ring-opacity:1;--tw-ring-color:rgb(134 25 143/var(--tw-ring-opacity))}.ring-fuchsia-900{--tw-ring-opacity:1;--tw-ring-color:rgb(112 26 117/var(--tw-ring-opacity))}.ring-fuchsia-950{--tw-ring-opacity:1;--tw-ring-color:rgb(74 4 78/var(--tw-ring-opacity))}.ring-gray-100{--tw-ring-opacity:1;--tw-ring-color:rgb(243 244 246/var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity))}.ring-gray-400{--tw-ring-opacity:1;--tw-ring-color:rgb(156 163 175/var(--tw-ring-opacity))}.ring-gray-50{--tw-ring-opacity:1;--tw-ring-color:rgb(249 250 251/var(--tw-ring-opacity))}.ring-gray-500{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity))}.ring-gray-600{--tw-ring-opacity:1;--tw-ring-color:rgb(75 85 99/var(--tw-ring-opacity))}.ring-gray-700{--tw-ring-opacity:1;--tw-ring-color:rgb(55 65 81/var(--tw-ring-opacity))}.ring-gray-800{--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55/var(--tw-ring-opacity))}.ring-gray-900{--tw-ring-opacity:1;--tw-ring-color:rgb(17 24 39/var(--tw-ring-opacity))}.ring-gray-950{--tw-ring-opacity:1;--tw-ring-color:rgb(3 7 18/var(--tw-ring-opacity))}.ring-green-100{--tw-ring-opacity:1;--tw-ring-color:rgb(220 252 231/var(--tw-ring-opacity))}.ring-green-200{--tw-ring-opacity:1;--tw-ring-color:rgb(187 247 208/var(--tw-ring-opacity))}.ring-green-300{--tw-ring-opacity:1;--tw-ring-color:rgb(134 239 172/var(--tw-ring-opacity))}.ring-green-400{--tw-ring-opacity:1;--tw-ring-color:rgb(74 222 128/var(--tw-ring-opacity))}.ring-green-50{--tw-ring-opacity:1;--tw-ring-color:rgb(240 253 244/var(--tw-ring-opacity))}.ring-green-500{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity))}.ring-green-600{--tw-ring-opacity:1;--tw-ring-color:rgb(22 163 74/var(--tw-ring-opacity))}.ring-green-700{--tw-ring-opacity:1;--tw-ring-color:rgb(21 128 61/var(--tw-ring-opacity))}.ring-green-800{--tw-ring-opacity:1;--tw-ring-color:rgb(22 101 52/var(--tw-ring-opacity))}.ring-green-900{--tw-ring-opacity:1;--tw-ring-color:rgb(20 83 45/var(--tw-ring-opacity))}.ring-green-950{--tw-ring-opacity:1;--tw-ring-color:rgb(5 46 22/var(--tw-ring-opacity))}.ring-indigo-100{--tw-ring-opacity:1;--tw-ring-color:rgb(224 231 255/var(--tw-ring-opacity))}.ring-indigo-200{--tw-ring-opacity:1;--tw-ring-color:rgb(199 210 254/var(--tw-ring-opacity))}.ring-indigo-300{--tw-ring-opacity:1;--tw-ring-color:rgb(165 180 252/var(--tw-ring-opacity))}.ring-indigo-400{--tw-ring-opacity:1;--tw-ring-color:rgb(129 140 248/var(--tw-ring-opacity))}.ring-indigo-50{--tw-ring-opacity:1;--tw-ring-color:rgb(238 242 255/var(--tw-ring-opacity))}.ring-indigo-500{--tw-ring-opacity:1;--tw-ring-color:rgb(99 102 241/var(--tw-ring-opacity))}.ring-indigo-600{--tw-ring-opacity:1;--tw-ring-color:rgb(79 70 229/var(--tw-ring-opacity))}.ring-indigo-700{--tw-ring-opacity:1;--tw-ring-color:rgb(67 56 202/var(--tw-ring-opacity))}.ring-indigo-800{--tw-ring-opacity:1;--tw-ring-color:rgb(55 48 163/var(--tw-ring-opacity))}.ring-indigo-900{--tw-ring-opacity:1;--tw-ring-color:rgb(49 46 129/var(--tw-ring-opacity))}.ring-indigo-950{--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}.ring-lime-100{--tw-ring-opacity:1;--tw-ring-color:rgb(236 252 203/var(--tw-ring-opacity))}.ring-lime-200{--tw-ring-opacity:1;--tw-ring-color:rgb(217 249 157/var(--tw-ring-opacity))}.ring-lime-300{--tw-ring-opacity:1;--tw-ring-color:rgb(190 242 100/var(--tw-ring-opacity))}.ring-lime-400{--tw-ring-opacity:1;--tw-ring-color:rgb(163 230 53/var(--tw-ring-opacity))}.ring-lime-50{--tw-ring-opacity:1;--tw-ring-color:rgb(247 254 231/var(--tw-ring-opacity))}.ring-lime-500{--tw-ring-opacity:1;--tw-ring-color:rgb(132 204 22/var(--tw-ring-opacity))}.ring-lime-600{--tw-ring-opacity:1;--tw-ring-color:rgb(101 163 13/var(--tw-ring-opacity))}.ring-lime-700{--tw-ring-opacity:1;--tw-ring-color:rgb(77 124 15/var(--tw-ring-opacity))}.ring-lime-800{--tw-ring-opacity:1;--tw-ring-color:rgb(63 98 18/var(--tw-ring-opacity))}.ring-lime-900{--tw-ring-opacity:1;--tw-ring-color:rgb(54 83 20/var(--tw-ring-opacity))}.ring-lime-950{--tw-ring-opacity:1;--tw-ring-color:rgb(26 46 5/var(--tw-ring-opacity))}.ring-neutral-100{--tw-ring-opacity:1;--tw-ring-color:rgb(245 245 245/var(--tw-ring-opacity))}.ring-neutral-200{--tw-ring-opacity:1;--tw-ring-color:rgb(229 229 229/var(--tw-ring-opacity))}.ring-neutral-300{--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 212/var(--tw-ring-opacity))}.ring-neutral-400{--tw-ring-opacity:1;--tw-ring-color:rgb(163 163 163/var(--tw-ring-opacity))}.ring-neutral-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 250 250/var(--tw-ring-opacity))}.ring-neutral-500{--tw-ring-opacity:1;--tw-ring-color:rgb(115 115 115/var(--tw-ring-opacity))}.ring-neutral-600{--tw-ring-opacity:1;--tw-ring-color:rgb(82 82 82/var(--tw-ring-opacity))}.ring-neutral-700{--tw-ring-opacity:1;--tw-ring-color:rgb(64 64 64/var(--tw-ring-opacity))}.ring-neutral-800{--tw-ring-opacity:1;--tw-ring-color:rgb(38 38 38/var(--tw-ring-opacity))}.ring-neutral-900{--tw-ring-opacity:1;--tw-ring-color:rgb(23 23 23/var(--tw-ring-opacity))}.ring-neutral-950{--tw-ring-opacity:1;--tw-ring-color:rgb(10 10 10/var(--tw-ring-opacity))}.ring-orange-100{--tw-ring-opacity:1;--tw-ring-color:rgb(255 237 213/var(--tw-ring-opacity))}.ring-orange-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 215 170/var(--tw-ring-opacity))}.ring-orange-300{--tw-ring-opacity:1;--tw-ring-color:rgb(253 186 116/var(--tw-ring-opacity))}.ring-orange-400{--tw-ring-opacity:1;--tw-ring-color:rgb(251 146 60/var(--tw-ring-opacity))}.ring-orange-50{--tw-ring-opacity:1;--tw-ring-color:rgb(255 247 237/var(--tw-ring-opacity))}.ring-orange-500{--tw-ring-opacity:1;--tw-ring-color:rgb(249 115 22/var(--tw-ring-opacity))}.ring-orange-600{--tw-ring-opacity:1;--tw-ring-color:rgb(234 88 12/var(--tw-ring-opacity))}.ring-orange-700{--tw-ring-opacity:1;--tw-ring-color:rgb(194 65 12/var(--tw-ring-opacity))}.ring-orange-800{--tw-ring-opacity:1;--tw-ring-color:rgb(154 52 18/var(--tw-ring-opacity))}.ring-orange-900{--tw-ring-opacity:1;--tw-ring-color:rgb(124 45 18/var(--tw-ring-opacity))}.ring-orange-950{--tw-ring-opacity:1;--tw-ring-color:rgb(67 20 7/var(--tw-ring-opacity))}.ring-pink-100{--tw-ring-opacity:1;--tw-ring-color:rgb(252 231 243/var(--tw-ring-opacity))}.ring-pink-200{--tw-ring-opacity:1;--tw-ring-color:rgb(251 207 232/var(--tw-ring-opacity))}.ring-pink-300{--tw-ring-opacity:1;--tw-ring-color:rgb(249 168 212/var(--tw-ring-opacity))}.ring-pink-400{--tw-ring-opacity:1;--tw-ring-color:rgb(244 114 182/var(--tw-ring-opacity))}.ring-pink-50{--tw-ring-opacity:1;--tw-ring-color:rgb(253 242 248/var(--tw-ring-opacity))}.ring-pink-500{--tw-ring-opacity:1;--tw-ring-color:rgb(236 72 153/var(--tw-ring-opacity))}.ring-pink-600{--tw-ring-opacity:1;--tw-ring-color:rgb(219 39 119/var(--tw-ring-opacity))}.ring-pink-700{--tw-ring-opacity:1;--tw-ring-color:rgb(190 24 93/var(--tw-ring-opacity))}.ring-pink-800{--tw-ring-opacity:1;--tw-ring-color:rgb(157 23 77/var(--tw-ring-opacity))}.ring-pink-900{--tw-ring-opacity:1;--tw-ring-color:rgb(131 24 67/var(--tw-ring-opacity))}.ring-pink-950{--tw-ring-opacity:1;--tw-ring-color:rgb(80 7 36/var(--tw-ring-opacity))}.ring-purple-100{--tw-ring-opacity:1;--tw-ring-color:rgb(243 232 255/var(--tw-ring-opacity))}.ring-purple-200{--tw-ring-opacity:1;--tw-ring-color:rgb(233 213 255/var(--tw-ring-opacity))}.ring-purple-300{--tw-ring-opacity:1;--tw-ring-color:rgb(216 180 254/var(--tw-ring-opacity))}.ring-purple-400{--tw-ring-opacity:1;--tw-ring-color:rgb(192 132 252/var(--tw-ring-opacity))}.ring-purple-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 245 255/var(--tw-ring-opacity))}.ring-purple-500{--tw-ring-opacity:1;--tw-ring-color:rgb(168 85 247/var(--tw-ring-opacity))}.ring-purple-600{--tw-ring-opacity:1;--tw-ring-color:rgb(147 51 234/var(--tw-ring-opacity))}.ring-purple-700{--tw-ring-opacity:1;--tw-ring-color:rgb(126 34 206/var(--tw-ring-opacity))}.ring-purple-800{--tw-ring-opacity:1;--tw-ring-color:rgb(107 33 168/var(--tw-ring-opacity))}.ring-purple-900{--tw-ring-opacity:1;--tw-ring-color:rgb(88 28 135/var(--tw-ring-opacity))}.ring-purple-950{--tw-ring-opacity:1;--tw-ring-color:rgb(59 7 100/var(--tw-ring-opacity))}.ring-red-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 226 226/var(--tw-ring-opacity))}.ring-red-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 202 202/var(--tw-ring-opacity))}.ring-red-300{--tw-ring-opacity:1;--tw-ring-color:rgb(252 165 165/var(--tw-ring-opacity))}.ring-red-400{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity))}.ring-red-50{--tw-ring-opacity:1;--tw-ring-color:rgb(254 242 242/var(--tw-ring-opacity))}.ring-red-500{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.ring-red-600{--tw-ring-opacity:1;--tw-ring-color:rgb(220 38 38/var(--tw-ring-opacity))}.ring-red-700{--tw-ring-opacity:1;--tw-ring-color:rgb(185 28 28/var(--tw-ring-opacity))}.ring-red-800{--tw-ring-opacity:1;--tw-ring-color:rgb(153 27 27/var(--tw-ring-opacity))}.ring-red-900{--tw-ring-opacity:1;--tw-ring-color:rgb(127 29 29/var(--tw-ring-opacity))}.ring-red-950{--tw-ring-opacity:1;--tw-ring-color:rgb(69 10 10/var(--tw-ring-opacity))}.ring-rose-100{--tw-ring-opacity:1;--tw-ring-color:rgb(255 228 230/var(--tw-ring-opacity))}.ring-rose-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 205 211/var(--tw-ring-opacity))}.ring-rose-300{--tw-ring-opacity:1;--tw-ring-color:rgb(253 164 175/var(--tw-ring-opacity))}.ring-rose-400{--tw-ring-opacity:1;--tw-ring-color:rgb(251 113 133/var(--tw-ring-opacity))}.ring-rose-50{--tw-ring-opacity:1;--tw-ring-color:rgb(255 241 242/var(--tw-ring-opacity))}.ring-rose-500{--tw-ring-opacity:1;--tw-ring-color:rgb(244 63 94/var(--tw-ring-opacity))}.ring-rose-600{--tw-ring-opacity:1;--tw-ring-color:rgb(225 29 72/var(--tw-ring-opacity))}.ring-rose-700{--tw-ring-opacity:1;--tw-ring-color:rgb(190 18 60/var(--tw-ring-opacity))}.ring-rose-800{--tw-ring-opacity:1;--tw-ring-color:rgb(159 18 57/var(--tw-ring-opacity))}.ring-rose-900{--tw-ring-opacity:1;--tw-ring-color:rgb(136 19 55/var(--tw-ring-opacity))}.ring-rose-950{--tw-ring-opacity:1;--tw-ring-color:rgb(76 5 25/var(--tw-ring-opacity))}.ring-sky-100{--tw-ring-opacity:1;--tw-ring-color:rgb(224 242 254/var(--tw-ring-opacity))}.ring-sky-200{--tw-ring-opacity:1;--tw-ring-color:rgb(186 230 253/var(--tw-ring-opacity))}.ring-sky-300{--tw-ring-opacity:1;--tw-ring-color:rgb(125 211 252/var(--tw-ring-opacity))}.ring-sky-400{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.ring-sky-50{--tw-ring-opacity:1;--tw-ring-color:rgb(240 249 255/var(--tw-ring-opacity))}.ring-sky-500{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity))}.ring-sky-600{--tw-ring-opacity:1;--tw-ring-color:rgb(2 132 199/var(--tw-ring-opacity))}.ring-sky-700{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.ring-sky-800{--tw-ring-opacity:1;--tw-ring-color:rgb(7 89 133/var(--tw-ring-opacity))}.ring-sky-900{--tw-ring-opacity:1;--tw-ring-color:rgb(12 74 110/var(--tw-ring-opacity))}.ring-sky-950{--tw-ring-opacity:1;--tw-ring-color:rgb(8 47 73/var(--tw-ring-opacity))}.ring-slate-100{--tw-ring-opacity:1;--tw-ring-color:rgb(241 245 249/var(--tw-ring-opacity))}.ring-slate-200{--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity))}.ring-slate-300{--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity))}.ring-slate-400{--tw-ring-opacity:1;--tw-ring-color:rgb(148 163 184/var(--tw-ring-opacity))}.ring-slate-50{--tw-ring-opacity:1;--tw-ring-color:rgb(248 250 252/var(--tw-ring-opacity))}.ring-slate-500{--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity))}.ring-slate-600{--tw-ring-opacity:1;--tw-ring-color:rgb(71 85 105/var(--tw-ring-opacity))}.ring-slate-700{--tw-ring-opacity:1;--tw-ring-color:rgb(51 65 85/var(--tw-ring-opacity))}.ring-slate-800{--tw-ring-opacity:1;--tw-ring-color:rgb(30 41 59/var(--tw-ring-opacity))}.ring-slate-900{--tw-ring-opacity:1;--tw-ring-color:rgb(15 23 42/var(--tw-ring-opacity))}.ring-slate-950{--tw-ring-opacity:1;--tw-ring-color:rgb(2 6 23/var(--tw-ring-opacity))}.ring-stone-100{--tw-ring-opacity:1;--tw-ring-color:rgb(245 245 244/var(--tw-ring-opacity))}.ring-stone-200{--tw-ring-opacity:1;--tw-ring-color:rgb(231 229 228/var(--tw-ring-opacity))}.ring-stone-300{--tw-ring-opacity:1;--tw-ring-color:rgb(214 211 209/var(--tw-ring-opacity))}.ring-stone-400{--tw-ring-opacity:1;--tw-ring-color:rgb(168 162 158/var(--tw-ring-opacity))}.ring-stone-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 250 249/var(--tw-ring-opacity))}.ring-stone-500{--tw-ring-opacity:1;--tw-ring-color:rgb(120 113 108/var(--tw-ring-opacity))}.ring-stone-600{--tw-ring-opacity:1;--tw-ring-color:rgb(87 83 78/var(--tw-ring-opacity))}.ring-stone-700{--tw-ring-opacity:1;--tw-ring-color:rgb(68 64 60/var(--tw-ring-opacity))}.ring-stone-800{--tw-ring-opacity:1;--tw-ring-color:rgb(41 37 36/var(--tw-ring-opacity))}.ring-stone-900{--tw-ring-opacity:1;--tw-ring-color:rgb(28 25 23/var(--tw-ring-opacity))}.ring-stone-950{--tw-ring-opacity:1;--tw-ring-color:rgb(12 10 9/var(--tw-ring-opacity))}.ring-teal-100{--tw-ring-opacity:1;--tw-ring-color:rgb(204 251 241/var(--tw-ring-opacity))}.ring-teal-200{--tw-ring-opacity:1;--tw-ring-color:rgb(153 246 228/var(--tw-ring-opacity))}.ring-teal-300{--tw-ring-opacity:1;--tw-ring-color:rgb(94 234 212/var(--tw-ring-opacity))}.ring-teal-400{--tw-ring-opacity:1;--tw-ring-color:rgb(45 212 191/var(--tw-ring-opacity))}.ring-teal-50{--tw-ring-opacity:1;--tw-ring-color:rgb(240 253 250/var(--tw-ring-opacity))}.ring-teal-500{--tw-ring-opacity:1;--tw-ring-color:rgb(20 184 166/var(--tw-ring-opacity))}.ring-teal-600{--tw-ring-opacity:1;--tw-ring-color:rgb(13 148 136/var(--tw-ring-opacity))}.ring-teal-700{--tw-ring-opacity:1;--tw-ring-color:rgb(15 118 110/var(--tw-ring-opacity))}.ring-teal-800{--tw-ring-opacity:1;--tw-ring-color:rgb(17 94 89/var(--tw-ring-opacity))}.ring-teal-900{--tw-ring-opacity:1;--tw-ring-color:rgb(19 78 74/var(--tw-ring-opacity))}.ring-teal-950{--tw-ring-opacity:1;--tw-ring-color:rgb(4 47 46/var(--tw-ring-opacity))}.ring-tremor-brand-inverted{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-tremor-brand-muted{--tw-ring-opacity:1;--tw-ring-color:rgb(134 136 239/var(--tw-ring-opacity))}.ring-tremor-ring{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}.ring-violet-100{--tw-ring-opacity:1;--tw-ring-color:rgb(237 233 254/var(--tw-ring-opacity))}.ring-violet-200{--tw-ring-opacity:1;--tw-ring-color:rgb(221 214 254/var(--tw-ring-opacity))}.ring-violet-300{--tw-ring-opacity:1;--tw-ring-color:rgb(196 181 253/var(--tw-ring-opacity))}.ring-violet-400{--tw-ring-opacity:1;--tw-ring-color:rgb(167 139 250/var(--tw-ring-opacity))}.ring-violet-50{--tw-ring-opacity:1;--tw-ring-color:rgb(245 243 255/var(--tw-ring-opacity))}.ring-violet-500{--tw-ring-opacity:1;--tw-ring-color:rgb(139 92 246/var(--tw-ring-opacity))}.ring-violet-600{--tw-ring-opacity:1;--tw-ring-color:rgb(124 58 237/var(--tw-ring-opacity))}.ring-violet-700{--tw-ring-opacity:1;--tw-ring-color:rgb(109 40 217/var(--tw-ring-opacity))}.ring-violet-800{--tw-ring-opacity:1;--tw-ring-color:rgb(91 33 182/var(--tw-ring-opacity))}.ring-violet-900{--tw-ring-opacity:1;--tw-ring-color:rgb(76 29 149/var(--tw-ring-opacity))}.ring-violet-950{--tw-ring-opacity:1;--tw-ring-color:rgb(46 16 101/var(--tw-ring-opacity))}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-yellow-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 249 195/var(--tw-ring-opacity))}.ring-yellow-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 240 138/var(--tw-ring-opacity))}.ring-yellow-300{--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity))}.ring-yellow-400{--tw-ring-opacity:1;--tw-ring-color:rgb(250 204 21/var(--tw-ring-opacity))}.ring-yellow-50{--tw-ring-opacity:1;--tw-ring-color:rgb(254 252 232/var(--tw-ring-opacity))}.ring-yellow-500{--tw-ring-opacity:1;--tw-ring-color:rgb(234 179 8/var(--tw-ring-opacity))}.ring-yellow-600{--tw-ring-opacity:1;--tw-ring-color:rgb(202 138 4/var(--tw-ring-opacity))}.ring-yellow-700{--tw-ring-opacity:1;--tw-ring-color:rgb(161 98 7/var(--tw-ring-opacity))}.ring-yellow-800{--tw-ring-opacity:1;--tw-ring-color:rgb(133 77 14/var(--tw-ring-opacity))}.ring-yellow-900{--tw-ring-opacity:1;--tw-ring-color:rgb(113 63 18/var(--tw-ring-opacity))}.ring-yellow-950{--tw-ring-opacity:1;--tw-ring-color:rgb(66 32 6/var(--tw-ring-opacity))}.ring-zinc-100{--tw-ring-opacity:1;--tw-ring-color:rgb(244 244 245/var(--tw-ring-opacity))}.ring-zinc-200{--tw-ring-opacity:1;--tw-ring-color:rgb(228 228 231/var(--tw-ring-opacity))}.ring-zinc-300{--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity))}.ring-zinc-400{--tw-ring-opacity:1;--tw-ring-color:rgb(161 161 170/var(--tw-ring-opacity))}.ring-zinc-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 250 250/var(--tw-ring-opacity))}.ring-zinc-500{--tw-ring-opacity:1;--tw-ring-color:rgb(113 113 122/var(--tw-ring-opacity))}.ring-zinc-600{--tw-ring-opacity:1;--tw-ring-color:rgb(82 82 91/var(--tw-ring-opacity))}.ring-zinc-700{--tw-ring-opacity:1;--tw-ring-color:rgb(63 63 70/var(--tw-ring-opacity))}.ring-zinc-800{--tw-ring-opacity:1;--tw-ring-color:rgb(39 39 42/var(--tw-ring-opacity))}.ring-zinc-900{--tw-ring-opacity:1;--tw-ring-color:rgb(24 24 27/var(--tw-ring-opacity))}.ring-zinc-950{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity))}.ring-opacity-40{--tw-ring-opacity:0.4}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}.drop-shadow-md,.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.invert{--tw-invert:invert(100%)}.invert,.sepia{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia:sepia(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-grayscale{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%)}.backdrop-invert{--tw-backdrop-invert:invert(100%)}.backdrop-invert,.backdrop-sepia{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%)}.backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[appearance\:textfield\]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.\[scrollbar-width\:none\]{scrollbar-width:none}:root{--foreground-rgb:0,0,0;--background-start-rgb:255,255,255;--background-end-rgb:255,255,255;--neutral-border:#dcddeb}body{color:rgb(var(--foreground-rgb));background:linear-gradient(to bottom,transparent,rgb(var(--background-end-rgb))) rgb(var(--background-start-rgb))}.table-wrapper{overflow-x:scroll;margin:0 24px}.custom-border{border:1px solid var(--neutral-border)}.ant-dropdown-menu-item{padding:0!important}.ant-dropdown-menu-item>div{transition:all .2s ease}.ant-dropdown-menu-item[data-menu-id$=user-info]:hover{background-color:transparent!important;cursor:default}.ant-dropdown-menu-item[data-menu-id$=user-info]>div{cursor:default}.ant-dropdown-menu{padding:4px!important;min-width:280px!important}.ant-dropdown-menu-item-divider{margin:4px 0}.placeholder\:text-tremor-content::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.placeholder\:text-tremor-content::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.placeholder\:text-tremor-content-subtle::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.placeholder\:text-tremor-content-subtle::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.first\:rounded-l-\[4px\]:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}.last\:mb-0:last-child{margin-bottom:0}.last\:rounded-r-\[4px\]:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.last\:border-0:last-child{border-width:0}.last\:border-b-0:last-child{border-bottom-width:0}.focus-within\:relative:focus-within{position:relative}.hover\:border-b-2:hover{border-bottom-width:2px}.hover\:border-amber-100:hover{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}.hover\:border-amber-200:hover{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.hover\:border-amber-300:hover{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.hover\:border-amber-400:hover{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.hover\:border-amber-50:hover{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}.hover\:border-amber-500:hover{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.hover\:border-amber-600:hover{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.hover\:border-amber-700:hover{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}.hover\:border-amber-800:hover{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.hover\:border-amber-900:hover{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}.hover\:border-amber-950:hover{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}.hover\:border-blue-100:hover{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}.hover\:border-blue-200:hover{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.hover\:border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}.hover\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.hover\:border-blue-50:hover{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}.hover\:border-blue-500:hover{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.hover\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.hover\:border-blue-700:hover{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.hover\:border-blue-800:hover{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}.hover\:border-blue-900:hover{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}.hover\:border-blue-950:hover{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}.hover\:border-cyan-100:hover{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}.hover\:border-cyan-200:hover{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}.hover\:border-cyan-300:hover{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}.hover\:border-cyan-400:hover{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}.hover\:border-cyan-50:hover{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}.hover\:border-cyan-500:hover{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.hover\:border-cyan-600:hover{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}.hover\:border-cyan-700:hover{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}.hover\:border-cyan-800:hover{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}.hover\:border-cyan-900:hover{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}.hover\:border-cyan-950:hover{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}.hover\:border-emerald-100:hover{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}.hover\:border-emerald-200:hover{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.hover\:border-emerald-300:hover{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.hover\:border-emerald-400:hover{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.hover\:border-emerald-50:hover{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}.hover\:border-emerald-500:hover{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.hover\:border-emerald-600:hover{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.hover\:border-emerald-700:hover{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.hover\:border-emerald-800:hover{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.hover\:border-emerald-900:hover{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}.hover\:border-emerald-950:hover{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}.hover\:border-fuchsia-100:hover{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}.hover\:border-fuchsia-200:hover{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}.hover\:border-fuchsia-300:hover{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}.hover\:border-fuchsia-400:hover{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}.hover\:border-fuchsia-50:hover{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}.hover\:border-fuchsia-500:hover{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.hover\:border-fuchsia-600:hover{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.hover\:border-fuchsia-700:hover{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}.hover\:border-fuchsia-800:hover{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.hover\:border-fuchsia-900:hover{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}.hover\:border-fuchsia-950:hover{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}.hover\:border-gray-100:hover{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.hover\:border-gray-200:hover{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.hover\:border-gray-50:hover{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}.hover\:border-gray-500:hover{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.hover\:border-gray-600:hover{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.hover\:border-gray-700:hover{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.hover\:border-gray-800:hover{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.hover\:border-gray-900:hover{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.hover\:border-gray-950:hover{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}.hover\:border-green-100:hover{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}.hover\:border-green-200:hover{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}.hover\:border-green-300:hover{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}.hover\:border-green-400:hover{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.hover\:border-green-50:hover{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}.hover\:border-green-500:hover{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.hover\:border-green-600:hover{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.hover\:border-green-700:hover{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}.hover\:border-green-800:hover{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}.hover\:border-green-900:hover{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.hover\:border-green-950:hover{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}.hover\:border-indigo-100:hover{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}.hover\:border-indigo-200:hover{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}.hover\:border-indigo-300:hover{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.hover\:border-indigo-400:hover{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.hover\:border-indigo-50:hover{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}.hover\:border-indigo-500:hover{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.hover\:border-indigo-600:hover{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.hover\:border-indigo-700:hover{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.hover\:border-indigo-800:hover{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.hover\:border-indigo-900:hover{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}.hover\:border-indigo-950:hover{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.hover\:border-lime-100:hover{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}.hover\:border-lime-200:hover{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}.hover\:border-lime-300:hover{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}.hover\:border-lime-400:hover{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}.hover\:border-lime-50:hover{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}.hover\:border-lime-500:hover{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.hover\:border-lime-600:hover{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}.hover\:border-lime-700:hover{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}.hover\:border-lime-800:hover{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}.hover\:border-lime-900:hover{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}.hover\:border-lime-950:hover{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}.hover\:border-neutral-100:hover{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}.hover\:border-neutral-200:hover{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.hover\:border-neutral-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.hover\:border-neutral-400:hover{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.hover\:border-neutral-50:hover{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.hover\:border-neutral-500:hover{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}.hover\:border-neutral-600:hover{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.hover\:border-neutral-700:hover{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.hover\:border-neutral-800:hover{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}.hover\:border-neutral-900:hover{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}.hover\:border-neutral-950:hover{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}.hover\:border-orange-100:hover{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}.hover\:border-orange-200:hover{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}.hover\:border-orange-300:hover{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.hover\:border-orange-400:hover{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.hover\:border-orange-50:hover{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}.hover\:border-orange-500:hover{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.hover\:border-orange-600:hover{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.hover\:border-orange-700:hover{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}.hover\:border-orange-800:hover{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}.hover\:border-orange-900:hover{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}.hover\:border-orange-950:hover{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}.hover\:border-pink-100:hover{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}.hover\:border-pink-200:hover{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}.hover\:border-pink-300:hover{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}.hover\:border-pink-400:hover{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}.hover\:border-pink-50:hover{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}.hover\:border-pink-500:hover{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.hover\:border-pink-600:hover{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.hover\:border-pink-700:hover{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}.hover\:border-pink-800:hover{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}.hover\:border-pink-900:hover{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}.hover\:border-pink-950:hover{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}.hover\:border-purple-100:hover{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}.hover\:border-purple-200:hover{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.hover\:border-purple-300:hover{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.hover\:border-purple-400:hover{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}.hover\:border-purple-50:hover{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}.hover\:border-purple-500:hover{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.hover\:border-purple-600:hover{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.hover\:border-purple-700:hover{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}.hover\:border-purple-800:hover{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}.hover\:border-purple-900:hover{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}.hover\:border-purple-950:hover{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}.hover\:border-red-100:hover{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}.hover\:border-red-200:hover{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.hover\:border-red-300:hover{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.hover\:border-red-400:hover{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.hover\:border-red-50:hover{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}.hover\:border-red-500:hover{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.hover\:border-red-600:hover{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.hover\:border-red-700:hover{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.hover\:border-red-800:hover{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}.hover\:border-red-900:hover{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}.hover\:border-red-950:hover{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}.hover\:border-rose-100:hover{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}.hover\:border-rose-200:hover{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.hover\:border-rose-300:hover{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.hover\:border-rose-400:hover{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.hover\:border-rose-50:hover{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}.hover\:border-rose-500:hover{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}.hover\:border-rose-600:hover{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.hover\:border-rose-700:hover{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}.hover\:border-rose-800:hover{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.hover\:border-rose-900:hover{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}.hover\:border-rose-950:hover{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}.hover\:border-sky-100:hover{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.hover\:border-sky-200:hover{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.hover\:border-sky-300:hover{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.hover\:border-sky-400:hover{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.hover\:border-sky-50:hover{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}.hover\:border-sky-500:hover{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.hover\:border-sky-600:hover{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.hover\:border-sky-700:hover{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.hover\:border-sky-800:hover{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.hover\:border-sky-900:hover{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.hover\:border-sky-950:hover{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}.hover\:border-slate-100:hover{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.hover\:border-slate-200:hover{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.hover\:border-slate-300:hover{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.hover\:border-slate-400:hover{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.hover\:border-slate-50:hover{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.hover\:border-slate-500:hover{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.hover\:border-slate-600:hover{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.hover\:border-slate-700:hover{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.hover\:border-slate-800:hover{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.hover\:border-slate-900:hover{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.hover\:border-slate-950:hover{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}.hover\:border-stone-100:hover{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}.hover\:border-stone-200:hover{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}.hover\:border-stone-300:hover{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.hover\:border-stone-400:hover{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}.hover\:border-stone-50:hover{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}.hover\:border-stone-500:hover{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}.hover\:border-stone-600:hover{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}.hover\:border-stone-700:hover{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}.hover\:border-stone-800:hover{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}.hover\:border-stone-900:hover{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}.hover\:border-stone-950:hover{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}.hover\:border-teal-100:hover{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}.hover\:border-teal-200:hover{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}.hover\:border-teal-300:hover{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}.hover\:border-teal-400:hover{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.hover\:border-teal-50:hover{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}.hover\:border-teal-500:hover{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.hover\:border-teal-600:hover{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.hover\:border-teal-700:hover{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}.hover\:border-teal-800:hover{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}.hover\:border-teal-900:hover{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}.hover\:border-teal-950:hover{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}.hover\:border-tremor-brand-emphasis:hover{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.hover\:border-tremor-content:hover{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.hover\:border-violet-100:hover{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}.hover\:border-violet-200:hover{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}.hover\:border-violet-300:hover{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.hover\:border-violet-400:hover{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.hover\:border-violet-50:hover{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}.hover\:border-violet-500:hover{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}.hover\:border-violet-600:hover{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}.hover\:border-violet-700:hover{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}.hover\:border-violet-800:hover{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}.hover\:border-violet-900:hover{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}.hover\:border-violet-950:hover{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}.hover\:border-yellow-100:hover{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}.hover\:border-yellow-200:hover{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}.hover\:border-yellow-300:hover{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.hover\:border-yellow-400:hover{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.hover\:border-yellow-50:hover{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}.hover\:border-yellow-500:hover{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}.hover\:border-yellow-600:hover{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}.hover\:border-yellow-700:hover{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}.hover\:border-yellow-800:hover{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.hover\:border-yellow-900:hover{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}.hover\:border-yellow-950:hover{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}.hover\:border-zinc-100:hover{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.hover\:border-zinc-200:hover{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.hover\:border-zinc-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.hover\:border-zinc-400:hover{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.hover\:border-zinc-50:hover{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.hover\:border-zinc-500:hover{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}.hover\:border-zinc-600:hover{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.hover\:border-zinc-700:hover{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.hover\:border-zinc-800:hover{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.hover\:border-zinc-900:hover{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}.hover\:border-zinc-950:hover{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}.hover\:\!bg-blue-700:hover{--tw-bg-opacity:1!important;background-color:rgb(29 78 216/var(--tw-bg-opacity))!important}.hover\:bg-amber-100:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.hover\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.hover\:bg-amber-300:hover{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.hover\:bg-amber-400:hover{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.hover\:bg-amber-50:hover{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.hover\:bg-amber-500:hover{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.hover\:bg-amber-600:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.hover\:bg-amber-700:hover{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.hover\:bg-amber-800:hover{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.hover\:bg-amber-900:hover{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.hover\:bg-amber-950:hover{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.hover\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.hover\:bg-blue-300:hover{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.hover\:bg-blue-400:hover{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.hover\:bg-blue-900:hover{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.hover\:bg-blue-950:hover{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}.hover\:bg-cyan-100:hover{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.hover\:bg-cyan-200:hover{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.hover\:bg-cyan-300:hover{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}.hover\:bg-cyan-400:hover{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.hover\:bg-cyan-50:hover{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}.hover\:bg-cyan-500:hover{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}.hover\:bg-cyan-600:hover{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.hover\:bg-cyan-700:hover{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}.hover\:bg-cyan-800:hover{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.hover\:bg-cyan-900:hover{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}.hover\:bg-cyan-950:hover{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}.hover\:bg-emerald-100:hover{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.hover\:bg-emerald-200:hover{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.hover\:bg-emerald-300:hover{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.hover\:bg-emerald-400:hover{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.hover\:bg-emerald-50:hover{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.hover\:bg-emerald-500:hover{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.hover\:bg-emerald-600:hover{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.hover\:bg-emerald-700:hover{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.hover\:bg-emerald-800:hover{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.hover\:bg-emerald-900:hover{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.hover\:bg-emerald-950:hover{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}.hover\:bg-fuchsia-100:hover{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.hover\:bg-fuchsia-200:hover{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}.hover\:bg-fuchsia-300:hover{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}.hover\:bg-fuchsia-400:hover{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}.hover\:bg-fuchsia-50:hover{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}.hover\:bg-fuchsia-500:hover{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}.hover\:bg-fuchsia-600:hover{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.hover\:bg-fuchsia-700:hover{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.hover\:bg-fuchsia-800:hover{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.hover\:bg-fuchsia-900:hover{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}.hover\:bg-fuchsia-950:hover{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.hover\:bg-gray-400:hover{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.hover\:bg-gray-900:hover{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.hover\:bg-gray-950:hover{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.hover\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.hover\:bg-green-200:hover{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.hover\:bg-green-300:hover{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.hover\:bg-green-400:hover{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.hover\:bg-green-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.hover\:bg-green-500:hover{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.hover\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.hover\:bg-green-800:hover{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.hover\:bg-green-900:hover{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.hover\:bg-green-950:hover{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}.hover\:bg-indigo-100:hover{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.hover\:bg-indigo-200:hover{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.hover\:bg-indigo-300:hover{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}.hover\:bg-indigo-400:hover{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.hover\:bg-indigo-50:hover{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.hover\:bg-indigo-500:hover{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.hover\:bg-indigo-600:hover{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-indigo-800:hover{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.hover\:bg-indigo-900:hover{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.hover\:bg-indigo-950:hover{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.hover\:bg-lime-100:hover{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.hover\:bg-lime-200:hover{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.hover\:bg-lime-300:hover{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}.hover\:bg-lime-400:hover{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}.hover\:bg-lime-50:hover{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}.hover\:bg-lime-500:hover{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.hover\:bg-lime-600:hover{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.hover\:bg-lime-700:hover{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.hover\:bg-lime-800:hover{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.hover\:bg-lime-900:hover{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}.hover\:bg-lime-950:hover{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}.hover\:bg-neutral-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.hover\:bg-neutral-200:hover{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.hover\:bg-neutral-300:hover{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.hover\:bg-neutral-400:hover{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}.hover\:bg-neutral-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:bg-neutral-500:hover{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.hover\:bg-neutral-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.hover\:bg-neutral-700:hover{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.hover\:bg-neutral-800:hover{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.hover\:bg-neutral-900:hover{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.hover\:bg-neutral-950:hover{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.hover\:bg-orange-100:hover{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.hover\:bg-orange-200:hover{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.hover\:bg-orange-300:hover{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.hover\:bg-orange-400:hover{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.hover\:bg-orange-50:hover{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.hover\:bg-orange-500:hover{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.hover\:bg-orange-600:hover{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.hover\:bg-orange-700:hover{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.hover\:bg-orange-800:hover{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.hover\:bg-orange-900:hover{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}.hover\:bg-orange-950:hover{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}.hover\:bg-pink-100:hover{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.hover\:bg-pink-200:hover{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}.hover\:bg-pink-300:hover{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}.hover\:bg-pink-400:hover{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.hover\:bg-pink-50:hover{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.hover\:bg-pink-500:hover{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.hover\:bg-pink-600:hover{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.hover\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.hover\:bg-pink-800:hover{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.hover\:bg-pink-900:hover{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}.hover\:bg-pink-950:hover{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}.hover\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.hover\:bg-purple-200:hover{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}.hover\:bg-purple-300:hover{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}.hover\:bg-purple-400:hover{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}.hover\:bg-purple-50:hover{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.hover\:bg-purple-500:hover{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.hover\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.hover\:bg-purple-700:hover{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.hover\:bg-purple-800:hover{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.hover\:bg-purple-900:hover{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}.hover\:bg-purple-950:hover{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}.hover\:bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.hover\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.hover\:bg-red-300:hover{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.hover\:bg-red-400:hover{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.hover\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.hover\:bg-red-800:hover{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.hover\:bg-red-950:hover{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}.hover\:bg-rose-100:hover{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.hover\:bg-rose-200:hover{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.hover\:bg-rose-300:hover{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}.hover\:bg-rose-400:hover{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.hover\:bg-rose-50:hover{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.hover\:bg-rose-500:hover{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.hover\:bg-rose-600:hover{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.hover\:bg-rose-700:hover{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.hover\:bg-rose-800:hover{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.hover\:bg-rose-900:hover{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.hover\:bg-rose-950:hover{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}.hover\:bg-sky-100:hover{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.hover\:bg-sky-200:hover{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.hover\:bg-sky-300:hover{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.hover\:bg-sky-400:hover{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.hover\:bg-sky-50:hover{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.hover\:bg-sky-500:hover{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.hover\:bg-sky-600:hover{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.hover\:bg-sky-700:hover{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.hover\:bg-sky-800:hover{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.hover\:bg-sky-900:hover{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.hover\:bg-sky-950:hover{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}.hover\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\:bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\:bg-slate-300:hover{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.hover\:bg-slate-400:hover{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\:bg-slate-500:hover{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.hover\:bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.hover\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.hover\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.hover\:bg-slate-900:hover{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.hover\:bg-slate-950:hover{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.hover\:bg-stone-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.hover\:bg-stone-200:hover{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.hover\:bg-stone-300:hover{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}.hover\:bg-stone-400:hover{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}.hover\:bg-stone-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}.hover\:bg-stone-500:hover{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}.hover\:bg-stone-600:hover{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}.hover\:bg-stone-700:hover{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}.hover\:bg-stone-800:hover{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}.hover\:bg-stone-900:hover{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}.hover\:bg-stone-950:hover{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}.hover\:bg-teal-100:hover{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.hover\:bg-teal-200:hover{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}.hover\:bg-teal-300:hover{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}.hover\:bg-teal-400:hover{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.hover\:bg-teal-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}.hover\:bg-teal-500:hover{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.hover\:bg-teal-600:hover{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.hover\:bg-teal-700:hover{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.hover\:bg-teal-800:hover{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.hover\:bg-teal-900:hover{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}.hover\:bg-teal-950:hover{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}.hover\:bg-tremor-background-muted:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:bg-tremor-background-subtle:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-tremor-brand-emphasis:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-violet-100:hover{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.hover\:bg-violet-200:hover{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.hover\:bg-violet-300:hover{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.hover\:bg-violet-400:hover{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}.hover\:bg-violet-50:hover{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.hover\:bg-violet-500:hover{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}.hover\:bg-violet-600:hover{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.hover\:bg-violet-700:hover{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}.hover\:bg-violet-800:hover{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.hover\:bg-violet-900:hover{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}.hover\:bg-violet-950:hover{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}.hover\:bg-yellow-100:hover{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.hover\:bg-yellow-200:hover{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.hover\:bg-yellow-300:hover{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.hover\:bg-yellow-400:hover{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.hover\:bg-yellow-50:hover{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.hover\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.hover\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.hover\:bg-yellow-700:hover{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}.hover\:bg-yellow-800:hover{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}.hover\:bg-yellow-900:hover{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.hover\:bg-yellow-950:hover{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}.hover\:bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.hover\:bg-zinc-200:hover{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.hover\:bg-zinc-300:hover{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}.hover\:bg-zinc-400:hover{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.hover\:bg-zinc-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:bg-zinc-500:hover{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}.hover\:bg-zinc-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.hover\:bg-zinc-700:hover{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.hover\:bg-zinc-800:hover{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.hover\:bg-zinc-900:hover{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.hover\:bg-zinc-950:hover{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}.hover\:bg-opacity-20:hover{--tw-bg-opacity:0.2}.hover\:text-amber-100:hover{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.hover\:text-amber-200:hover{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.hover\:text-amber-300:hover{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.hover\:text-amber-400:hover{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.hover\:text-amber-50:hover{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}.hover\:text-amber-500:hover{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.hover\:text-amber-600:hover{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.hover\:text-amber-700:hover{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.hover\:text-amber-800:hover{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.hover\:text-amber-900:hover{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.hover\:text-amber-950:hover{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}.hover\:text-blue-100:hover{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}.hover\:text-blue-200:hover{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.hover\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.hover\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.hover\:text-blue-50:hover{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.hover\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.hover\:text-blue-900:hover{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.hover\:text-blue-950:hover{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}.hover\:text-cyan-100:hover{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.hover\:text-cyan-200:hover{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}.hover\:text-cyan-300:hover{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}.hover\:text-cyan-400:hover{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.hover\:text-cyan-50:hover{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}.hover\:text-cyan-500:hover{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.hover\:text-cyan-600:hover{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.hover\:text-cyan-700:hover{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.hover\:text-cyan-800:hover{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}.hover\:text-cyan-900:hover{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.hover\:text-cyan-950:hover{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}.hover\:text-emerald-100:hover{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.hover\:text-emerald-200:hover{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}.hover\:text-emerald-300:hover{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.hover\:text-emerald-400:hover{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.hover\:text-emerald-50:hover{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}.hover\:text-emerald-500:hover{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.hover\:text-emerald-600:hover{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.hover\:text-emerald-700:hover{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.hover\:text-emerald-800:hover{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.hover\:text-emerald-900:hover{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}.hover\:text-emerald-950:hover{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}.hover\:text-fuchsia-100:hover{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}.hover\:text-fuchsia-200:hover{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.hover\:text-fuchsia-300:hover{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}.hover\:text-fuchsia-400:hover{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}.hover\:text-fuchsia-50:hover{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}.hover\:text-fuchsia-500:hover{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}.hover\:text-fuchsia-600:hover{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.hover\:text-fuchsia-700:hover{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.hover\:text-fuchsia-800:hover{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.hover\:text-fuchsia-900:hover{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}.hover\:text-fuchsia-950:hover{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}.hover\:text-gray-100:hover{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.hover\:text-gray-400:hover{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.hover\:text-gray-50:hover{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.hover\:text-gray-950:hover{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.hover\:text-green-100:hover{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.hover\:text-green-200:hover{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.hover\:text-green-300:hover{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.hover\:text-green-400:hover{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.hover\:text-green-50:hover{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}.hover\:text-green-500:hover{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.hover\:text-green-600:hover{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.hover\:text-green-700:hover{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.hover\:text-green-800:hover{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.hover\:text-green-900:hover{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}.hover\:text-green-950:hover{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}.hover\:text-indigo-100:hover{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}.hover\:text-indigo-200:hover{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.hover\:text-indigo-300:hover{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.hover\:text-indigo-400:hover{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.hover\:text-indigo-50:hover{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}.hover\:text-indigo-500:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.hover\:text-indigo-600:hover{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.hover\:text-indigo-700:hover{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.hover\:text-indigo-800:hover{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.hover\:text-indigo-900:hover{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.hover\:text-indigo-950:hover{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.hover\:text-lime-100:hover{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}.hover\:text-lime-200:hover{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}.hover\:text-lime-300:hover{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}.hover\:text-lime-400:hover{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}.hover\:text-lime-50:hover{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}.hover\:text-lime-500:hover{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}.hover\:text-lime-600:hover{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.hover\:text-lime-700:hover{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}.hover\:text-lime-800:hover{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}.hover\:text-lime-900:hover{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.hover\:text-lime-950:hover{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}.hover\:text-neutral-100:hover{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.hover\:text-neutral-200:hover{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.hover\:text-neutral-300:hover{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.hover\:text-neutral-400:hover{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.hover\:text-neutral-50:hover{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.hover\:text-neutral-500:hover{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.hover\:text-neutral-600:hover{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.hover\:text-neutral-700:hover{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.hover\:text-neutral-800:hover{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.hover\:text-neutral-900:hover{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.hover\:text-neutral-950:hover{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}.hover\:text-orange-100:hover{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}.hover\:text-orange-200:hover{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.hover\:text-orange-300:hover{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.hover\:text-orange-400:hover{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.hover\:text-orange-50:hover{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}.hover\:text-orange-500:hover{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.hover\:text-orange-600:hover{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.hover\:text-orange-700:hover{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.hover\:text-orange-800:hover{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.hover\:text-orange-900:hover{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}.hover\:text-orange-950:hover{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}.hover\:text-pink-100:hover{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}.hover\:text-pink-200:hover{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.hover\:text-pink-300:hover{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}.hover\:text-pink-400:hover{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}.hover\:text-pink-50:hover{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}.hover\:text-pink-500:hover{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.hover\:text-pink-600:hover{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.hover\:text-pink-700:hover{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.hover\:text-pink-800:hover{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.hover\:text-pink-900:hover{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}.hover\:text-pink-950:hover{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}.hover\:text-purple-100:hover{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}.hover\:text-purple-200:hover{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}.hover\:text-purple-300:hover{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.hover\:text-purple-400:hover{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.hover\:text-purple-50:hover{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}.hover\:text-purple-500:hover{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.hover\:text-purple-600:hover{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.hover\:text-purple-700:hover{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.hover\:text-purple-800:hover{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.hover\:text-purple-900:hover{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}.hover\:text-purple-950:hover{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}.hover\:text-red-100:hover{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}.hover\:text-red-200:hover{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.hover\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.hover\:text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.hover\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.hover\:text-red-800:hover{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.hover\:text-red-900:hover{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.hover\:text-red-950:hover{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}.hover\:text-rose-100:hover{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.hover\:text-rose-200:hover{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.hover\:text-rose-300:hover{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.hover\:text-rose-400:hover{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.hover\:text-rose-50:hover{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}.hover\:text-rose-500:hover{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.hover\:text-rose-600:hover{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.hover\:text-rose-700:hover{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.hover\:text-rose-800:hover{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.hover\:text-rose-900:hover{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.hover\:text-rose-950:hover{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}.hover\:text-sky-100:hover{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.hover\:text-sky-200:hover{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.hover\:text-sky-300:hover{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.hover\:text-sky-400:hover{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.hover\:text-sky-50:hover{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}.hover\:text-sky-500:hover{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.hover\:text-sky-600:hover{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.hover\:text-sky-700:hover{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.hover\:text-sky-800:hover{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.hover\:text-sky-900:hover{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}.hover\:text-sky-950:hover{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}.hover\:text-slate-100:hover{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.hover\:text-slate-200:hover{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.hover\:text-slate-300:hover{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.hover\:text-slate-400:hover{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.hover\:text-slate-50:hover{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.hover\:text-slate-500:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.hover\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.hover\:text-slate-800:hover{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.hover\:text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.hover\:text-slate-950:hover{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.hover\:text-stone-100:hover{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}.hover\:text-stone-200:hover{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}.hover\:text-stone-300:hover{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}.hover\:text-stone-400:hover{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.hover\:text-stone-50:hover{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}.hover\:text-stone-500:hover{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.hover\:text-stone-600:hover{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.hover\:text-stone-700:hover{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}.hover\:text-stone-800:hover{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}.hover\:text-stone-900:hover{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}.hover\:text-stone-950:hover{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}.hover\:text-teal-100:hover{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}.hover\:text-teal-200:hover{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.hover\:text-teal-300:hover{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}.hover\:text-teal-400:hover{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}.hover\:text-teal-50:hover{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}.hover\:text-teal-500:hover{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}.hover\:text-teal-600:hover{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.hover\:text-teal-700:hover{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.hover\:text-teal-800:hover{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.hover\:text-teal-900:hover{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}.hover\:text-teal-950:hover{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}.hover\:text-tremor-brand-emphasis:hover{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.hover\:text-tremor-content:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.hover\:text-tremor-content-emphasis:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.hover\:text-violet-100:hover{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}.hover\:text-violet-200:hover{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.hover\:text-violet-300:hover{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.hover\:text-violet-400:hover{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.hover\:text-violet-50:hover{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}.hover\:text-violet-500:hover{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.hover\:text-violet-600:hover{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.hover\:text-violet-700:hover{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.hover\:text-violet-800:hover{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}.hover\:text-violet-900:hover{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}.hover\:text-violet-950:hover{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}.hover\:text-yellow-100:hover{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}.hover\:text-yellow-200:hover{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}.hover\:text-yellow-300:hover{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.hover\:text-yellow-400:hover{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.hover\:text-yellow-50:hover{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}.hover\:text-yellow-500:hover{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.hover\:text-yellow-600:hover{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.hover\:text-yellow-700:hover{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.hover\:text-yellow-800:hover{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.hover\:text-yellow-900:hover{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}.hover\:text-yellow-950:hover{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}.hover\:text-zinc-100:hover{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.hover\:text-zinc-200:hover{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.hover\:text-zinc-300:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.hover\:text-zinc-400:hover{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.hover\:text-zinc-50:hover{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.hover\:text-zinc-500:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.hover\:text-zinc-600:hover{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.hover\:text-zinc-700:hover{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.hover\:text-zinc-800:hover{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.hover\:text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.hover\:text-zinc-950:hover{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.hover\:shadow-md:hover,.hover\:shadow-sm:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.focus\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.focus\:border-transparent:focus{border-color:transparent}.focus\:border-tremor-brand-subtle:focus{--tw-border-opacity:1;border-color:rgb(142 145 235/var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-1:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.focus\:ring-red-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(254 202 202/var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.focus\:ring-tremor-brand-muted:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(134 136 239/var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:\!bg-gray-300:disabled{--tw-bg-opacity:1!important;background-color:rgb(209 213 219/var(--tw-bg-opacity))!important}.disabled\:bg-indigo-400:disabled{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.disabled\:\!text-gray-500:disabled{--tw-text-opacity:1!important;color:rgb(107 114 128/var(--tw-text-opacity))!important}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.group:hover .group-hover\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.group:hover .group-hover\:text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.group:hover .group-hover\:opacity-100{opacity:1}.group:active .group-active\:scale-95{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.aria-selected\:\!bg-tremor-background-subtle[aria-selected=true]{--tw-bg-opacity:1!important;background-color:rgb(243 244 246/var(--tw-bg-opacity))!important}.aria-selected\:bg-tremor-background-emphasis[aria-selected=true]{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.aria-selected\:\!text-tremor-content[aria-selected=true]{--tw-text-opacity:1!important;color:rgb(107 114 128/var(--tw-text-opacity))!important}.aria-selected\:text-dark-tremor-brand-inverted[aria-selected=true]{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.aria-selected\:text-tremor-brand-inverted[aria-selected=true],.aria-selected\:text-tremor-content-inverted[aria-selected=true]{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.ui-selected\:border-b-2[data-headlessui-state~=selected]{border-bottom-width:2px}.ui-selected\:border-amber-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}.ui-selected\:border-amber-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.ui-selected\:border-amber-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.ui-selected\:border-amber-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.ui-selected\:border-amber-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}.ui-selected\:border-amber-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.ui-selected\:border-amber-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.ui-selected\:border-amber-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}.ui-selected\:border-amber-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.ui-selected\:border-amber-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}.ui-selected\:border-amber-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}.ui-selected\:border-blue-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}.ui-selected\:border-blue-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.ui-selected\:border-blue-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}.ui-selected\:border-blue-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.ui-selected\:border-blue-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}.ui-selected\:border-blue-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.ui-selected\:border-blue-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.ui-selected\:border-blue-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.ui-selected\:border-blue-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}.ui-selected\:border-blue-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}.ui-selected\:border-blue-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}.ui-selected\:border-cyan-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}.ui-selected\:border-cyan-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}.ui-selected\:border-cyan-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}.ui-selected\:border-cyan-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}.ui-selected\:border-cyan-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}.ui-selected\:border-cyan-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.ui-selected\:border-cyan-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}.ui-selected\:border-cyan-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}.ui-selected\:border-cyan-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}.ui-selected\:border-cyan-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}.ui-selected\:border-cyan-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}.ui-selected\:border-emerald-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}.ui-selected\:border-emerald-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.ui-selected\:border-emerald-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.ui-selected\:border-emerald-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.ui-selected\:border-emerald-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}.ui-selected\:border-emerald-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.ui-selected\:border-emerald-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.ui-selected\:border-emerald-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.ui-selected\:border-emerald-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.ui-selected\:border-emerald-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}.ui-selected\:border-emerald-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}.ui-selected\:border-gray-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.ui-selected\:border-gray-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.ui-selected\:border-gray-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.ui-selected\:border-gray-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.ui-selected\:border-gray-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}.ui-selected\:border-gray-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.ui-selected\:border-gray-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.ui-selected\:border-gray-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.ui-selected\:border-gray-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.ui-selected\:border-gray-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.ui-selected\:border-gray-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}.ui-selected\:border-green-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}.ui-selected\:border-green-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}.ui-selected\:border-green-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}.ui-selected\:border-green-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.ui-selected\:border-green-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}.ui-selected\:border-green-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.ui-selected\:border-green-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.ui-selected\:border-green-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}.ui-selected\:border-green-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}.ui-selected\:border-green-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.ui-selected\:border-green-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}.ui-selected\:border-indigo-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}.ui-selected\:border-indigo-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}.ui-selected\:border-indigo-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.ui-selected\:border-indigo-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.ui-selected\:border-indigo-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}.ui-selected\:border-indigo-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.ui-selected\:border-indigo-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.ui-selected\:border-indigo-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.ui-selected\:border-indigo-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.ui-selected\:border-indigo-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}.ui-selected\:border-indigo-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.ui-selected\:border-lime-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}.ui-selected\:border-lime-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}.ui-selected\:border-lime-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}.ui-selected\:border-lime-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}.ui-selected\:border-lime-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}.ui-selected\:border-lime-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.ui-selected\:border-lime-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}.ui-selected\:border-lime-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}.ui-selected\:border-lime-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}.ui-selected\:border-lime-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}.ui-selected\:border-lime-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}.ui-selected\:border-neutral-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}.ui-selected\:border-neutral-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.ui-selected\:border-neutral-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.ui-selected\:border-neutral-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.ui-selected\:border-neutral-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.ui-selected\:border-neutral-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}.ui-selected\:border-neutral-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.ui-selected\:border-neutral-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.ui-selected\:border-neutral-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}.ui-selected\:border-neutral-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}.ui-selected\:border-neutral-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}.ui-selected\:border-orange-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}.ui-selected\:border-orange-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}.ui-selected\:border-orange-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.ui-selected\:border-orange-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.ui-selected\:border-orange-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}.ui-selected\:border-orange-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.ui-selected\:border-orange-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.ui-selected\:border-orange-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}.ui-selected\:border-orange-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}.ui-selected\:border-orange-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}.ui-selected\:border-orange-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}.ui-selected\:border-pink-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}.ui-selected\:border-pink-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}.ui-selected\:border-pink-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}.ui-selected\:border-pink-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}.ui-selected\:border-pink-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}.ui-selected\:border-pink-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.ui-selected\:border-pink-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.ui-selected\:border-pink-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}.ui-selected\:border-pink-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}.ui-selected\:border-pink-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}.ui-selected\:border-pink-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}.ui-selected\:border-purple-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}.ui-selected\:border-purple-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.ui-selected\:border-purple-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.ui-selected\:border-purple-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}.ui-selected\:border-purple-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}.ui-selected\:border-purple-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.ui-selected\:border-purple-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.ui-selected\:border-purple-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}.ui-selected\:border-purple-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}.ui-selected\:border-purple-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}.ui-selected\:border-purple-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}.ui-selected\:border-red-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}.ui-selected\:border-red-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.ui-selected\:border-red-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.ui-selected\:border-red-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.ui-selected\:border-red-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}.ui-selected\:border-red-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.ui-selected\:border-red-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.ui-selected\:border-red-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.ui-selected\:border-red-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}.ui-selected\:border-red-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}.ui-selected\:border-red-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}.ui-selected\:border-rose-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}.ui-selected\:border-rose-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.ui-selected\:border-rose-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.ui-selected\:border-rose-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.ui-selected\:border-rose-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}.ui-selected\:border-rose-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}.ui-selected\:border-rose-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.ui-selected\:border-rose-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}.ui-selected\:border-rose-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.ui-selected\:border-rose-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}.ui-selected\:border-rose-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}.ui-selected\:border-sky-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.ui-selected\:border-sky-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.ui-selected\:border-sky-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.ui-selected\:border-sky-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.ui-selected\:border-sky-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}.ui-selected\:border-sky-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.ui-selected\:border-sky-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.ui-selected\:border-sky-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.ui-selected\:border-sky-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.ui-selected\:border-sky-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.ui-selected\:border-sky-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}.ui-selected\:border-slate-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.ui-selected\:border-slate-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.ui-selected\:border-slate-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.ui-selected\:border-slate-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.ui-selected\:border-slate-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.ui-selected\:border-slate-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.ui-selected\:border-slate-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.ui-selected\:border-slate-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.ui-selected\:border-slate-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.ui-selected\:border-slate-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.ui-selected\:border-slate-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}.ui-selected\:border-stone-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}.ui-selected\:border-stone-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}.ui-selected\:border-stone-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.ui-selected\:border-stone-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}.ui-selected\:border-stone-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}.ui-selected\:border-stone-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}.ui-selected\:border-stone-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}.ui-selected\:border-stone-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}.ui-selected\:border-stone-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}.ui-selected\:border-stone-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}.ui-selected\:border-stone-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}.ui-selected\:border-teal-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}.ui-selected\:border-teal-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}.ui-selected\:border-teal-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}.ui-selected\:border-teal-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.ui-selected\:border-teal-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}.ui-selected\:border-teal-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.ui-selected\:border-teal-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.ui-selected\:border-teal-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}.ui-selected\:border-teal-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}.ui-selected\:border-teal-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}.ui-selected\:border-teal-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}.ui-selected\:border-tremor-border[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.ui-selected\:border-tremor-brand[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.ui-selected\:border-violet-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}.ui-selected\:border-violet-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}.ui-selected\:border-violet-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.ui-selected\:border-violet-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.ui-selected\:border-violet-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}.ui-selected\:border-violet-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}.ui-selected\:border-violet-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}.ui-selected\:border-violet-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}.ui-selected\:border-violet-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}.ui-selected\:border-violet-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}.ui-selected\:border-violet-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}.ui-selected\:border-yellow-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}.ui-selected\:border-yellow-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}.ui-selected\:border-yellow-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.ui-selected\:border-yellow-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.ui-selected\:border-yellow-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}.ui-selected\:border-yellow-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}.ui-selected\:border-yellow-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}.ui-selected\:border-yellow-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}.ui-selected\:border-yellow-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.ui-selected\:border-yellow-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}.ui-selected\:border-yellow-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}.ui-selected\:border-zinc-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.ui-selected\:border-zinc-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.ui-selected\:border-zinc-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.ui-selected\:border-zinc-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.ui-selected\:border-zinc-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.ui-selected\:border-zinc-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}.ui-selected\:border-zinc-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.ui-selected\:border-zinc-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.ui-selected\:border-zinc-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.ui-selected\:border-zinc-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}.ui-selected\:border-zinc-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}.ui-selected\:bg-amber-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.ui-selected\:bg-amber-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.ui-selected\:bg-amber-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.ui-selected\:bg-amber-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.ui-selected\:bg-amber-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.ui-selected\:bg-amber-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.ui-selected\:bg-amber-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.ui-selected\:bg-amber-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.ui-selected\:bg-amber-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.ui-selected\:bg-amber-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.ui-selected\:bg-amber-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}.ui-selected\:bg-blue-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.ui-selected\:bg-blue-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.ui-selected\:bg-blue-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.ui-selected\:bg-blue-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.ui-selected\:bg-blue-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.ui-selected\:bg-blue-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.ui-selected\:bg-blue-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.ui-selected\:bg-blue-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.ui-selected\:bg-blue-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.ui-selected\:bg-blue-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.ui-selected\:bg-blue-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}.ui-selected\:bg-gray-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.ui-selected\:bg-gray-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.ui-selected\:bg-gray-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.ui-selected\:bg-gray-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.ui-selected\:bg-gray-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ui-selected\:bg-gray-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.ui-selected\:bg-gray-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.ui-selected\:bg-gray-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.ui-selected\:bg-gray-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.ui-selected\:bg-gray-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.ui-selected\:bg-gray-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.ui-selected\:bg-green-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.ui-selected\:bg-green-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.ui-selected\:bg-green-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.ui-selected\:bg-green-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.ui-selected\:bg-green-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.ui-selected\:bg-green-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.ui-selected\:bg-green-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.ui-selected\:bg-green-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.ui-selected\:bg-green-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.ui-selected\:bg-green-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.ui-selected\:bg-green-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.ui-selected\:bg-lime-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.ui-selected\:bg-lime-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.ui-selected\:bg-lime-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}.ui-selected\:bg-lime-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}.ui-selected\:bg-lime-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}.ui-selected\:bg-lime-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.ui-selected\:bg-lime-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.ui-selected\:bg-lime-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.ui-selected\:bg-lime-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.ui-selected\:bg-lime-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}.ui-selected\:bg-lime-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.ui-selected\:bg-orange-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.ui-selected\:bg-orange-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.ui-selected\:bg-orange-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.ui-selected\:bg-orange-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.ui-selected\:bg-orange-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.ui-selected\:bg-orange-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.ui-selected\:bg-orange-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.ui-selected\:bg-orange-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.ui-selected\:bg-orange-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.ui-selected\:bg-orange-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}.ui-selected\:bg-orange-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}.ui-selected\:bg-pink-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.ui-selected\:bg-pink-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}.ui-selected\:bg-pink-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}.ui-selected\:bg-pink-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.ui-selected\:bg-pink-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.ui-selected\:bg-pink-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.ui-selected\:bg-pink-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.ui-selected\:bg-pink-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.ui-selected\:bg-pink-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.ui-selected\:bg-pink-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}.ui-selected\:bg-pink-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}.ui-selected\:bg-purple-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.ui-selected\:bg-purple-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}.ui-selected\:bg-purple-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}.ui-selected\:bg-purple-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}.ui-selected\:bg-purple-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.ui-selected\:bg-purple-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.ui-selected\:bg-purple-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.ui-selected\:bg-purple-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.ui-selected\:bg-purple-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.ui-selected\:bg-purple-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}.ui-selected\:bg-purple-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}.ui-selected\:bg-red-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.ui-selected\:bg-red-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.ui-selected\:bg-red-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.ui-selected\:bg-red-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.ui-selected\:bg-red-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.ui-selected\:bg-red-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.ui-selected\:bg-red-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.ui-selected\:bg-red-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.ui-selected\:bg-red-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.ui-selected\:bg-red-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.ui-selected\:bg-red-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}.ui-selected\:bg-rose-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.ui-selected\:bg-rose-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.ui-selected\:bg-rose-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}.ui-selected\:bg-rose-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.ui-selected\:bg-rose-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.ui-selected\:bg-rose-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.ui-selected\:bg-rose-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.ui-selected\:bg-rose-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.ui-selected\:bg-rose-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.ui-selected\:bg-rose-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.ui-selected\:bg-rose-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}.ui-selected\:bg-sky-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.ui-selected\:bg-sky-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.ui-selected\:bg-sky-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.ui-selected\:bg-sky-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.ui-selected\:bg-sky-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.ui-selected\:bg-sky-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.ui-selected\:bg-sky-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.ui-selected\:bg-sky-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.ui-selected\:bg-sky-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.ui-selected\:bg-sky-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.ui-selected\:bg-sky-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}.ui-selected\:bg-slate-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.ui-selected\:bg-slate-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.ui-selected\:bg-slate-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.ui-selected\:bg-slate-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.ui-selected\:bg-slate-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.ui-selected\:bg-slate-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.ui-selected\:bg-slate-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.ui-selected\:bg-slate-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.ui-selected\:bg-slate-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.ui-selected\:bg-slate-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.ui-selected\:bg-slate-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.ui-selected\:bg-stone-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.ui-selected\:bg-stone-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.ui-selected\:bg-stone-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}.ui-selected\:bg-stone-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}.ui-selected\:bg-stone-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}.ui-selected\:bg-stone-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}.ui-selected\:bg-stone-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}.ui-selected\:bg-stone-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}.ui-selected\:bg-stone-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}.ui-selected\:bg-stone-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}.ui-selected\:bg-stone-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}.ui-selected\:bg-teal-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.ui-selected\:bg-teal-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}.ui-selected\:bg-teal-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}.ui-selected\:bg-teal-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.ui-selected\:bg-teal-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}.ui-selected\:bg-teal-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.ui-selected\:bg-teal-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.ui-selected\:bg-teal-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.ui-selected\:bg-teal-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.ui-selected\:bg-teal-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}.ui-selected\:bg-teal-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}.ui-selected\:bg-tremor-background[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.ui-selected\:bg-tremor-background-muted[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ui-selected\:bg-violet-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.ui-selected\:bg-violet-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.ui-selected\:bg-violet-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.ui-selected\:bg-violet-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}.ui-selected\:bg-violet-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.ui-selected\:bg-violet-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}.ui-selected\:bg-violet-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.ui-selected\:bg-violet-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}.ui-selected\:bg-violet-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.ui-selected\:bg-violet-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}.ui-selected\:bg-violet-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}.ui-selected\:text-amber-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.ui-selected\:text-amber-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.ui-selected\:text-amber-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.ui-selected\:text-amber-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.ui-selected\:text-amber-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}.ui-selected\:text-amber-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.ui-selected\:text-amber-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.ui-selected\:text-amber-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.ui-selected\:text-amber-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.ui-selected\:text-amber-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.ui-selected\:text-amber-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}.ui-selected\:text-blue-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}.ui-selected\:text-blue-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.ui-selected\:text-blue-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.ui-selected\:text-blue-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.ui-selected\:text-blue-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}.ui-selected\:text-blue-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.ui-selected\:text-blue-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.ui-selected\:text-blue-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.ui-selected\:text-blue-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.ui-selected\:text-blue-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.ui-selected\:text-blue-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}.ui-selected\:text-cyan-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.ui-selected\:text-cyan-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}.ui-selected\:text-cyan-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}.ui-selected\:text-cyan-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.ui-selected\:text-cyan-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}.ui-selected\:text-cyan-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.ui-selected\:text-cyan-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.ui-selected\:text-cyan-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.ui-selected\:text-cyan-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}.ui-selected\:text-cyan-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.ui-selected\:text-cyan-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}.ui-selected\:text-dark-tremor-brand[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.ui-selected\:text-emerald-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.ui-selected\:text-emerald-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}.ui-selected\:text-emerald-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.ui-selected\:text-emerald-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.ui-selected\:text-emerald-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}.ui-selected\:text-emerald-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.ui-selected\:text-emerald-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.ui-selected\:text-emerald-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.ui-selected\:text-emerald-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.ui-selected\:text-emerald-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}.ui-selected\:text-emerald-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}.ui-selected\:text-gray-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.ui-selected\:text-gray-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.ui-selected\:text-gray-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.ui-selected\:text-gray-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.ui-selected\:text-gray-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.ui-selected\:text-gray-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.ui-selected\:text-gray-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.ui-selected\:text-gray-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.ui-selected\:text-gray-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.ui-selected\:text-gray-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.ui-selected\:text-gray-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.ui-selected\:text-green-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.ui-selected\:text-green-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.ui-selected\:text-green-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.ui-selected\:text-green-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.ui-selected\:text-green-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}.ui-selected\:text-green-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.ui-selected\:text-green-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.ui-selected\:text-green-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.ui-selected\:text-green-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.ui-selected\:text-green-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}.ui-selected\:text-green-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}.ui-selected\:text-indigo-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}.ui-selected\:text-indigo-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.ui-selected\:text-indigo-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.ui-selected\:text-indigo-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.ui-selected\:text-indigo-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}.ui-selected\:text-indigo-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.ui-selected\:text-indigo-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.ui-selected\:text-indigo-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.ui-selected\:text-indigo-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.ui-selected\:text-indigo-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.ui-selected\:text-indigo-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.ui-selected\:text-lime-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}.ui-selected\:text-lime-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}.ui-selected\:text-lime-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}.ui-selected\:text-lime-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}.ui-selected\:text-lime-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}.ui-selected\:text-lime-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}.ui-selected\:text-lime-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.ui-selected\:text-lime-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}.ui-selected\:text-lime-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}.ui-selected\:text-lime-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.ui-selected\:text-lime-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}.ui-selected\:text-neutral-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.ui-selected\:text-neutral-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.ui-selected\:text-neutral-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.ui-selected\:text-neutral-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.ui-selected\:text-neutral-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.ui-selected\:text-neutral-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.ui-selected\:text-neutral-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.ui-selected\:text-neutral-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.ui-selected\:text-neutral-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.ui-selected\:text-neutral-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.ui-selected\:text-neutral-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}.ui-selected\:text-orange-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}.ui-selected\:text-orange-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.ui-selected\:text-orange-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.ui-selected\:text-orange-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.ui-selected\:text-orange-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}.ui-selected\:text-orange-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.ui-selected\:text-orange-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.ui-selected\:text-orange-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.ui-selected\:text-orange-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.ui-selected\:text-orange-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}.ui-selected\:text-orange-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}.ui-selected\:text-pink-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}.ui-selected\:text-pink-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.ui-selected\:text-pink-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}.ui-selected\:text-pink-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}.ui-selected\:text-pink-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}.ui-selected\:text-pink-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.ui-selected\:text-pink-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.ui-selected\:text-pink-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.ui-selected\:text-pink-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.ui-selected\:text-pink-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}.ui-selected\:text-pink-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}.ui-selected\:text-purple-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}.ui-selected\:text-purple-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}.ui-selected\:text-purple-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.ui-selected\:text-purple-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.ui-selected\:text-purple-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}.ui-selected\:text-purple-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.ui-selected\:text-purple-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.ui-selected\:text-purple-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.ui-selected\:text-purple-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.ui-selected\:text-purple-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}.ui-selected\:text-purple-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}.ui-selected\:text-red-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}.ui-selected\:text-red-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.ui-selected\:text-red-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.ui-selected\:text-red-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.ui-selected\:text-red-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.ui-selected\:text-red-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.ui-selected\:text-red-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.ui-selected\:text-red-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.ui-selected\:text-red-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.ui-selected\:text-red-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.ui-selected\:text-red-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}.ui-selected\:text-rose-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.ui-selected\:text-rose-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.ui-selected\:text-rose-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.ui-selected\:text-rose-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.ui-selected\:text-rose-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}.ui-selected\:text-rose-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.ui-selected\:text-rose-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.ui-selected\:text-rose-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.ui-selected\:text-rose-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.ui-selected\:text-rose-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.ui-selected\:text-rose-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}.ui-selected\:text-sky-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.ui-selected\:text-sky-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.ui-selected\:text-sky-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.ui-selected\:text-sky-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.ui-selected\:text-sky-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}.ui-selected\:text-sky-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.ui-selected\:text-sky-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.ui-selected\:text-sky-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.ui-selected\:text-sky-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.ui-selected\:text-sky-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}.ui-selected\:text-sky-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}.ui-selected\:text-slate-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.ui-selected\:text-slate-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.ui-selected\:text-slate-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.ui-selected\:text-slate-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.ui-selected\:text-slate-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.ui-selected\:text-slate-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.ui-selected\:text-slate-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.ui-selected\:text-slate-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.ui-selected\:text-slate-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.ui-selected\:text-slate-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.ui-selected\:text-slate-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.ui-selected\:text-stone-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}.ui-selected\:text-stone-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}.ui-selected\:text-stone-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}.ui-selected\:text-stone-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.ui-selected\:text-stone-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}.ui-selected\:text-stone-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.ui-selected\:text-stone-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.ui-selected\:text-stone-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}.ui-selected\:text-stone-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}.ui-selected\:text-stone-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}.ui-selected\:text-stone-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}.ui-selected\:text-teal-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}.ui-selected\:text-teal-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.ui-selected\:text-teal-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}.ui-selected\:text-teal-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}.ui-selected\:text-teal-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}.ui-selected\:text-teal-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}.ui-selected\:text-teal-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.ui-selected\:text-teal-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.ui-selected\:text-teal-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.ui-selected\:text-teal-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}.ui-selected\:text-teal-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}.ui-selected\:text-tremor-brand[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.ui-selected\:text-tremor-content-emphasis[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.ui-selected\:text-tremor-content-strong[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.ui-selected\:text-violet-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}.ui-selected\:text-violet-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.ui-selected\:text-violet-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.ui-selected\:text-violet-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.ui-selected\:text-violet-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}.ui-selected\:text-violet-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.ui-selected\:text-violet-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.ui-selected\:text-violet-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.ui-selected\:text-violet-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}.ui-selected\:text-violet-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}.ui-selected\:text-violet-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}.ui-selected\:text-yellow-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}.ui-selected\:text-yellow-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}.ui-selected\:text-yellow-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.ui-selected\:text-yellow-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.ui-selected\:text-yellow-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}.ui-selected\:text-yellow-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.ui-selected\:text-yellow-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.ui-selected\:text-yellow-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.ui-selected\:text-yellow-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.ui-selected\:text-yellow-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}.ui-selected\:text-yellow-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}.ui-selected\:text-zinc-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.ui-selected\:text-zinc-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.ui-selected\:text-zinc-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.ui-selected\:text-zinc-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.ui-selected\:text-zinc-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.ui-selected\:text-zinc-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.ui-selected\:text-zinc-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.ui-selected\:text-zinc-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.ui-selected\:text-zinc-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.ui-selected\:text-zinc-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.ui-selected\:text-zinc-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}.ui-selected\:shadow-tremor-input[data-headlessui-state~=selected]{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:where([data-headlessui-state~=selected]) .ui-selected\:border-b-2{border-bottom-width:2px}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-100{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-50{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-600{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-700{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-800{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-950{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-50{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-700{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-950{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-100{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-200{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-300{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-400{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-50{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-500{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-600{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-700{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-800{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-900{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-950{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-100{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-400{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-50{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-600{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-700{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-800{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-900{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-950{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-100{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-200{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-300{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-400{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-50{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-500{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-600{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-700{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-800{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-900{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-950{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-50{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-950{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-100{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-50{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-700{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-950{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-100{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-200{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-300{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-400{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-50{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-500{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-700{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-800{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-900{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-950{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-100{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-200{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-300{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-400{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-50{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-500{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-600{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-700{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-800{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-900{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-950{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-100{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-300{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-400{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-500{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-600{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-700{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-800{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-900{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-950{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-50{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-600{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-700{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-950{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-100{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-200{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-300{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-400{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-50{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-500{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-600{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-700{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-800{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-900{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-950{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-100{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-300{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-400{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-50{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-500{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-600{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-700{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-950{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-50{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-700{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-950{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-100{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-200{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-300{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-400{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-50{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-500{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-600{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-700{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-800{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-900{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-950{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-100{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-300{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-400{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-50{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-700{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-950{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-400{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-50{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-900{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-950{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-100{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-200{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-300{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-400{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-50{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-500{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-600{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-700{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-800{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-900{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-950{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-100{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-200{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-300{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-400{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-50{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-500{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-600{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-700{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-800{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-900{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-950{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-tremor-border{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-tremor-brand{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-100{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-200{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-300{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-400{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-50{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-500{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-600{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-700{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-800{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-900{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-950{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-100{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-50{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-600{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-700{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-800{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-900{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-950{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-100{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-400{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-500{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-950{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-200{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-300{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-700{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-800{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-200{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-300{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-700{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-800{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-200{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-300{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-400{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-50{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-600{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-700{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-800{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-900{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-950{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-200{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-300{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-800{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-900{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-950{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-100{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-200{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-300{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-400{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-50{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-500{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-600{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-700{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-800{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-900{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-950{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-300{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-800{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-200{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-300{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-400{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-700{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-800{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-900{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-950{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-100{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-200{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-300{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-400{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-50{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-500{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-700{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-800{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-900{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-950{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-200{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-300{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-400{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-500{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-600{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-950{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-300{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-300{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-400{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-500{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-700{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-800{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-900{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-950{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-300{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-400{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-800{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-300{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-800{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-100{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-200{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-300{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-400{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-50{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-700{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-800{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-900{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-950{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-200{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-400{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-700{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-800{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-900{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-100{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-200{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-300{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-400{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-50{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-500{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-600{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-700{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-800{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-900{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-950{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-100{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-200{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-300{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-400{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-50{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-800{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-900{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-950{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-tremor-background{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-tremor-background-muted{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-200{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-300{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-400{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-500{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-700{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-800{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-900{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-950{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-300{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-700{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-800{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-950{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-300{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-400{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-500{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-600{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-950{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-50{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-950{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-50{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-950{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-100{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-200{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-300{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-50{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-800{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-900{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-950{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-dark-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-100{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-200{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-50{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-900{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-950{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-100{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-200{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-300{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-400{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-50{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-500{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-600{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-700{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-800{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-900{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-950{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-950{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-100{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-50{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-950{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-100{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-200{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-300{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-50{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-900{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-950{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-100{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-200{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-300{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-400{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-50{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-500{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-600{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-700{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-800{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-900{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-950{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-100{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-300{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-700{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-800{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-50{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-900{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-950{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-100{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-200{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-300{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-400{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-50{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-600{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-700{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-800{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-900{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-950{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-100{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-50{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-900{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-950{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-50{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-950{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-100{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-200{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-50{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-800{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-900{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-950{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-100{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-50{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-800{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-900{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-950{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-50{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-950{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-100{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-200{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-300{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-400{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-50{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-600{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-700{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-800{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-900{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-950{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-100{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-200{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-300{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-400{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-50{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-500{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-700{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-800{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-900{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-950{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-tremor-content-strong{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-100{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-200{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-50{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-600{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-700{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-800{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-900{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-950{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-100{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-50{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-950{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-100{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:shadow-tremor-input{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ui-active\:bg-tremor-background-muted[data-headlessui-state~=active]{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ui-active\:text-tremor-content-strong[data-headlessui-state~=active]{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:where([data-headlessui-state~=active]) .ui-active\:bg-tremor-background-muted{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}:where([data-headlessui-state~=active]) .ui-active\:text-tremor-content-strong{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:is(.dark .dark\:divide-dark-tremor-border)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(55 65 81/var(--tw-divide-opacity))}:is(.dark .dark\:border-dark-tremor-background){--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-border){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand){--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand-emphasis){--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand-inverted){--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand-subtle){--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:is(.dark .dark\:bg-dark-tremor-background){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-background-emphasis){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-background-muted){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-background-subtle){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-border){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-brand){--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-brand-muted){--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-brand-muted\/70){background-color:rgba(30,27,75,.7)}:is(.dark .dark\:bg-dark-tremor-brand-subtle){--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-content-subtle){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-950\/50){background-color:rgba(2,6,23,.5)}:is(.dark .dark\:bg-opacity-10){--tw-bg-opacity:0.1}:is(.dark .dark\:bg-opacity-25){--tw-bg-opacity:0.25}:is(.dark .dark\:bg-opacity-30){--tw-bg-opacity:0.3}:is(.dark .dark\:from-dark-tremor-background){--tw-gradient-from:#111827 var(--tw-gradient-from-position);--tw-gradient-to:rgba(17,24,39,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:is(.dark .dark\:to-dark-tremor-background){--tw-gradient-to:#111827 var(--tw-gradient-to-position)}:is(.dark .dark\:fill-dark-tremor-content){fill:#6b7280}:is(.dark .dark\:fill-dark-tremor-content-emphasis){fill:#e5e7eb}:is(.dark .dark\:stroke-dark-tremor-background){stroke:#111827}:is(.dark .dark\:stroke-dark-tremor-border){stroke:#374151}:is(.dark .dark\:stroke-dark-tremor-brand){stroke:#6366f1}:is(.dark .dark\:stroke-dark-tremor-brand-muted){stroke:#1e1b4b}:is(.dark .dark\:text-dark-tremor-brand){--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-brand-emphasis){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-brand-inverted){--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content-emphasis){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content-strong){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content-subtle){--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:accent-dark-tremor-brand){accent-color:#6366f1}:is(.dark .dark\:opacity-25){opacity:.25}:is(.dark .dark\:shadow-dark-tremor-card){--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:shadow-dark-tremor-dropdown){--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:shadow-dark-tremor-input){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:outline-dark-tremor-brand){outline-color:#6366f1}:is(.dark .dark\:ring-dark-tremor-brand-inverted){--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .dark\:ring-dark-tremor-brand-muted){--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .dark\:ring-dark-tremor-ring){--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55/var(--tw-ring-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content)::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content)::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content-subtle)::-moz-placeholder{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content-subtle)::placeholder{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content)::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content)::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content-subtle)::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content-subtle)::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:hover\:border-dark-tremor-brand-emphasis:hover){--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}:is(.dark .dark\:hover\:border-dark-tremor-content-emphasis:hover){--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-background-muted:hover){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-background-subtle:hover){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-brand-emphasis:hover){--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-brand-faint:hover){--tw-bg-opacity:1;background-color:rgb(11 18 41/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-opacity-20:hover){--tw-bg-opacity:0.2}:is(.dark .dark\:hover\:text-dark-tremor-brand-emphasis:hover){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-dark-tremor-content:hover){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-dark-tremor-content-emphasis:hover){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-tremor-content:hover){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-tremor-content-emphasis:hover){--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}:is(.dark .hover\:dark\:text-dark-tremor-content):hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:focus\:border-dark-tremor-brand-subtle:focus){--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:is(.dark .focus\:dark\:border-dark-tremor-brand-subtle):focus{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:is(.dark .dark\:focus\:ring-dark-tremor-brand-muted:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .focus\:dark\:ring-dark-tremor-brand-muted):focus{--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-dark-tremor-content-emphasis){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .aria-selected\:dark\:\!bg-dark-tremor-background-subtle)[aria-selected=true]{--tw-bg-opacity:1!important;background-color:rgb(31 41 55/var(--tw-bg-opacity))!important}:is(.dark .dark\:aria-selected\:bg-dark-tremor-background-emphasis[aria-selected=true]){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}:is(.dark .dark\:aria-selected\:text-dark-tremor-brand-inverted[aria-selected=true]){--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}:is(.dark .dark\:aria-selected\:text-dark-tremor-content-inverted[aria-selected=true]){--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:border-dark-tremor-border[data-headlessui-state~=selected]){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\:ui-selected\:border-dark-tremor-brand[data-headlessui-state~=selected]){--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:is(.dark .dark\:ui-selected\:bg-dark-tremor-background[data-headlessui-state~=selected]){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:ui-selected\:bg-dark-tremor-background-muted[data-headlessui-state~=selected]){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:ui-selected\:text-dark-tremor-brand[data-headlessui-state~=selected]){--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:text-dark-tremor-content-emphasis[data-headlessui-state~=selected]){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:text-dark-tremor-content-strong[data-headlessui-state~=selected]){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:shadow-dark-tremor-input[data-headlessui-state~=selected]){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:border-dark-tremor-border){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:border-dark-tremor-brand){--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:bg-dark-tremor-background){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:bg-dark-tremor-background-muted){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:text-dark-tremor-brand){--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:text-dark-tremor-content-emphasis){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:text-dark-tremor-content-strong){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:shadow-dark-tremor-input){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:ui-active\:bg-dark-tremor-background-muted[data-headlessui-state~=active]){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:ui-active\:text-dark-tremor-content-strong[data-headlessui-state~=active]){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=active]) .dark\:ui-active\:bg-dark-tremor-background-muted){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark :where([data-headlessui-state~=active]) .dark\:ui-active\:text-dark-tremor-content-strong){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}@media (min-width:640px){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-10{grid-column:span 10/span 10}.sm\:col-span-11{grid-column:span 11/span 11}.sm\:col-span-12{grid-column:span 12/span 12}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:col-span-4{grid-column:span 4/span 4}.sm\:col-span-5{grid-column:span 5/span 5}.sm\:col-span-6{grid-column:span 6/span 6}.sm\:col-span-7{grid-column:span 7/span 7}.sm\:col-span-8{grid-column:span 8/span 8}.sm\:col-span-9{grid-column:span 9/span 9}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:mb-0{margin-bottom:0}.sm\:ml-4{margin-left:1rem}.sm\:mt-0{margin-top:0}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:h-screen{height:100vh}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.sm\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.sm\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.sm\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.sm\:grid-cols-none{grid-template-columns:none}.sm\:flex-row{flex-direction:row}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}}@media (min-width:768px){.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-10{grid-column:span 10/span 10}.md\:col-span-11{grid-column:span 11/span 11}.md\:col-span-12{grid-column:span 12/span 12}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-5{grid-column:span 5/span 5}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-7{grid-column:span 7/span 7}.md\:col-span-8{grid-column:span 8/span 8}.md\:col-span-9{grid-column:span 9/span 9}.md\:table-cell{display:table-cell}.md\:hidden{display:none}.md\:w-auto{width:auto}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.md\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:grid-cols-none{grid-template-columns:none}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}}@media (min-width:1024px){.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-10{grid-column:span 10/span 10}.lg\:col-span-11{grid-column:span 11/span 11}.lg\:col-span-12{grid-column:span 12/span 12}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:inline{display:inline}.lg\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:max-w-\[200px\]{max-width:200px}.lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.lg\:grid-cols-none{grid-template-columns:none}}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button,.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&_td\]\:py-0\.5 td{padding-top:.125rem;padding-bottom:.125rem}.\[\&_td\]\:py-2 td{padding-top:.5rem;padding-bottom:.5rem}.\[\&_th\]\:py-1 th{padding-top:.25rem;padding-bottom:.25rem}.\[\&_th\]\:py-2 th{padding-top:.5rem;padding-bottom:.5rem} \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/css/ec98fed1bdd650b4.css b/litellm/proxy/_experimental/out/_next/static/css/ec98fed1bdd650b4.css new file mode 100644 index 00000000000..119e79c1024 --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/css/ec98fed1bdd650b4.css @@ -0,0 +1,3 @@ +/* +! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com +*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af}input::placeholder,textarea::placeholder{color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors:active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors:active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media (forced-colors:active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.not-sr-only{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-1{inset:-.25rem}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-x-\[-1\.5rem\]{left:-1.5rem;right:-1.5rem}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-\[-1\.5rem\]{bottom:-1.5rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-1{right:.25rem}.right-1\/2{right:50%}.right-10{right:2.5rem}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-4{top:1rem}.top-8{top:2rem}.top-full{top:100%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.col-span-1{grid-column:span 1/span 1}.col-span-10{grid-column:span 10/span 10}.col-span-11{grid-column:span 11/span 11}.col-span-12{grid-column:span 12/span 12}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-7{grid-column:span 7/span 7}.col-span-8{grid-column:span 8/span 8}.col-span-9{grid-column:span 9/span 9}.m-0{margin:0}.m-2{margin:.5rem}.m-8{margin:2rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.\!mb-0{margin-bottom:0!important}.-mb-px{margin-bottom:-1px}.-ml-0{margin-left:0}.-ml-0\.5{margin-left:-.125rem}.-ml-1{margin-left:-.25rem}.-ml-1\.5{margin-left:-.375rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-11{margin-left:2.75rem}.ml-12{margin-left:3rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-6{margin-left:1.5rem}.ml-7{margin-left:1.75rem}.ml-8{margin-left:2rem}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-2\.5{margin-right:.625rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-8{margin-right:2rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.box-border{box-sizing:border-box}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.\!inline{display:inline!important}.inline{display:inline}.\!flex{display:flex!important}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.size-12{width:3rem;height:3rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.\!h-8{height:2rem!important}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-52{height:13rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-80{height:20rem}.h-9{height:2.25rem}.h-\[100vh\]{height:100vh}.h-\[1px\]{height:1px}.h-\[350px\]{height:350px}.h-\[600px\]{height:600px}.h-\[75vh\]{height:75vh}.h-\[80vh\]{height:80vh}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-24{max-height:6rem}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-8{max-height:2rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[228px\]{max-height:228px}.max-h-\[400px\]{max-height:400px}.max-h-\[40vh\]{max-height:40vh}.max-h-\[500px\]{max-height:500px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[65vh\]{max-height:65vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[75vh\]{max-height:75vh}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-\[120px\]{min-height:120px}.min-h-\[380px\]{min-height:380px}.min-h-\[400px\]{min-height:400px}.min-h-\[44px\]{min-height:44px}.min-h-\[500px\]{min-height:500px}.min-h-\[750px\]{min-height:750px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.\!w-8{width:2rem!important}.w-0{width:0}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-11\/12{width:91.666667%}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[120px\]{width:120px}.w-\[300px\]{width:300px}.w-\[400px\]{width:400px}.w-\[90\%\]{width:90%}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-screen{width:100vw}.\!min-w-8{min-width:2rem!important}.min-w-0{min-width:0}.min-w-\[10rem\]{min-width:10rem}.min-w-\[200px\]{min-width:200px}.min-w-\[600px\]{min-width:600px}.min-w-\[90px\]{min-width:90px}.min-w-full{min-width:100%}.min-w-min{min-width:-moz-min-content;min-width:min-content}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-4xl{max-width:56rem}.max-w-64{max-width:16rem}.max-w-6xl{max-width:72rem}.max-w-\[100px\]{max-width:100px}.max-w-\[10ch\]{max-width:10ch}.max-w-\[120px\]{max-width:120px}.max-w-\[150px\]{max-width:150px}.max-w-\[15ch\]{max-width:15ch}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[20ch\]{max-width:20ch}.max-w-\[210px\]{max-width:210px}.max-w-\[250px\]{max-width:250px}.max-w-\[80\%\]{max-width:80%}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-4{--tw-translate-y:-1rem}.-translate-y-4,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-1\/2{--tw-translate-x:50%}.translate-x-1\/2,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-y-0{--tw-translate-y:0px}.-rotate-180,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-180{--tw-rotate:-180deg}.-rotate-90{--tw-rotate:-90deg}.-rotate-90,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.rotate-90{--tw-rotate:90deg}.rotate-90,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-95,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-none{grid-template-columns:none}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.\!items-center{align-items:center!important}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.\!justify-center{justify-content:center!important}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-4{row-gap:1rem}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.125rem * var(--tw-space-x-reverse));margin-left:calc(.125rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem * var(--tw-space-x-reverse));margin-left:calc(.375rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem * var(--tw-space-x-reverse));margin-left:calc(2.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.625rem * var(--tw-space-x-reverse));margin-left:calc(.625rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse:1}.space-x-reverse>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-y-reverse>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:1}.divide-x-reverse>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}.divide-tremor-border>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity))}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-clip{overflow-x:clip}.overflow-x-scroll{overflow-x:scroll}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.text-clip{text-overflow:clip}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!rounded-full{border-radius:9999px!important}.\!rounded-none{border-radius:0!important}.rounded{border-radius:.25rem}.rounded-\[1px\]{border-radius:1px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-tremor-default{border-radius:.5rem}.rounded-tremor-full{border-radius:9999px}.rounded-tremor-small{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-tremor-default{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-l-tremor-default{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-tremor-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.rounded-l-tremor-small{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-r-tremor-default{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-r-tremor-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-tremor-small{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg,.rounded-t-tremor-default{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-bl{border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-x{border-left-width:1px;border-right-width:1px}.border-y{border-top-width:1px}.border-b,.border-y{border-bottom-width:1px}.border-b-4{border-bottom-width:4px}.border-e{border-inline-end-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-r-4{border-right-width:4px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.border-t-4{border-top-width:4px}.border-t-\[1px\]{border-top-width:1px}.border-dashed{border-style:dashed}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-amber-100{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.border-amber-50{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}.border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.border-amber-600{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.border-amber-700{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}.border-amber-800{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}.border-amber-950{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}.border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.border-blue-50{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}.border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}.border-blue-950{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}.border-cyan-100{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}.border-cyan-200{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}.border-cyan-300{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}.border-cyan-400{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}.border-cyan-50{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}.border-cyan-500{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.border-cyan-600{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}.border-cyan-700{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}.border-cyan-800{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}.border-cyan-900{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}.border-cyan-950{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}.border-dark-tremor-background{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.border-dark-tremor-border{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.border-dark-tremor-brand{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-dark-tremor-brand-emphasis{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.border-dark-tremor-brand-inverted{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.border-dark-tremor-brand-subtle{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.border-emerald-100{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}.border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.border-emerald-400{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.border-emerald-50{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}.border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.border-emerald-600{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.border-emerald-700{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.border-emerald-800{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.border-emerald-900{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}.border-emerald-950{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}.border-fuchsia-100{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}.border-fuchsia-200{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}.border-fuchsia-300{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}.border-fuchsia-400{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}.border-fuchsia-50{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}.border-fuchsia-500{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.border-fuchsia-600{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.border-fuchsia-700{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}.border-fuchsia-800{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.border-fuchsia-900{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}.border-fuchsia-950{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.border-gray-50{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.border-gray-950{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}.border-green-100{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}.border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}.border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}.border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.border-green-50{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.border-green-700{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}.border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}.border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.border-green-950{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}.border-indigo-100{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}.border-indigo-200{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}.border-indigo-300{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.border-indigo-400{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.border-indigo-50{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}.border-indigo-500{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-indigo-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.border-indigo-700{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.border-indigo-800{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.border-indigo-900{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}.border-indigo-950{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.border-lime-100{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}.border-lime-200{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}.border-lime-300{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}.border-lime-400{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}.border-lime-50{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}.border-lime-500{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.border-lime-600{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}.border-lime-700{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}.border-lime-800{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}.border-lime-900{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}.border-lime-950{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}.border-neutral-100{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}.border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.border-neutral-300{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.border-neutral-400{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.border-neutral-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.border-neutral-500{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}.border-neutral-600{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.border-neutral-700{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.border-neutral-800{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}.border-neutral-900{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}.border-neutral-950{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}.border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}.border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}.border-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.border-orange-50{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}.border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.border-orange-600{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.border-orange-700{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}.border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}.border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}.border-orange-950{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}.border-pink-100{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}.border-pink-200{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}.border-pink-300{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}.border-pink-400{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}.border-pink-50{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}.border-pink-500{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.border-pink-600{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.border-pink-700{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}.border-pink-800{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}.border-pink-900{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}.border-pink-950{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}.border-purple-100{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}.border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.border-purple-300{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.border-purple-400{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}.border-purple-50{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}.border-purple-500{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.border-purple-600{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.border-purple-700{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}.border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}.border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}.border-purple-950{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}.border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.border-red-50{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.border-red-700{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}.border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}.border-red-950{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}.border-rose-100{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}.border-rose-200{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.border-rose-300{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.border-rose-400{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.border-rose-50{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}.border-rose-500{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}.border-rose-600{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.border-rose-700{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}.border-rose-800{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.border-rose-900{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}.border-rose-950{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}.border-sky-100{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.border-sky-300{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.border-sky-400{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.border-sky-50{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}.border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.border-sky-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.border-sky-700{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.border-sky-950{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.border-slate-400{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.border-slate-50{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.border-slate-900{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.border-slate-950{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}.border-stone-100{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}.border-stone-200{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}.border-stone-300{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.border-stone-400{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}.border-stone-50{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}.border-stone-500{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}.border-stone-600{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}.border-stone-700{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}.border-stone-800{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}.border-stone-900{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}.border-stone-950{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}.border-teal-100{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}.border-teal-200{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}.border-teal-300{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}.border-teal-400{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.border-teal-50{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}.border-teal-500{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.border-teal-600{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.border-teal-700{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}.border-teal-800{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}.border-teal-900{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}.border-teal-950{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-tremor-background{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-tremor-border{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-tremor-brand{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-tremor-brand-emphasis{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.border-tremor-brand-inverted{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-tremor-brand-subtle{--tw-border-opacity:1;border-color:rgb(142 145 235/var(--tw-border-opacity))}.border-violet-100{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}.border-violet-200{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}.border-violet-300{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.border-violet-400{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.border-violet-50{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}.border-violet-500{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}.border-violet-600{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}.border-violet-700{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}.border-violet-800{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}.border-violet-900{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}.border-violet-950{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}.border-yellow-100{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}.border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}.border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.border-yellow-50{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}.border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}.border-yellow-600{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}.border-yellow-700{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}.border-yellow-800{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.border-yellow-900{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}.border-yellow-950{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}.border-zinc-100{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.border-zinc-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.border-zinc-400{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.border-zinc-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.border-zinc-500{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}.border-zinc-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.border-zinc-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.border-zinc-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}.border-zinc-950{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}.border-r-gray-200{--tw-border-opacity:1;border-right-color:rgb(229 231 235/var(--tw-border-opacity))}.border-t-transparent{border-top-color:transparent}.\!bg-blue-600{--tw-bg-opacity:1!important;background-color:rgb(37 99 235/var(--tw-bg-opacity))!important}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.bg-amber-200{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.bg-amber-300{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.bg-amber-700{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.bg-amber-800{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-black\/90{background-color:rgba(0,0,0,.9)}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.bg-blue-300{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.bg-blue-800{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.bg-cyan-200{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.bg-cyan-300{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}.bg-cyan-400{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.bg-cyan-50{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}.bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}.bg-cyan-600{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.bg-cyan-700{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}.bg-cyan-800{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.bg-cyan-900{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}.bg-cyan-950{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}.bg-dark-tremor-background{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-dark-tremor-background-subtle{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-dark-tremor-brand{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-dark-tremor-brand-emphasis{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.bg-dark-tremor-brand-faint{--tw-bg-opacity:1;background-color:rgb(11 18 41/var(--tw-bg-opacity))}.bg-dark-tremor-brand-muted{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.bg-dark-tremor-content-subtle{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.bg-emerald-200{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.bg-emerald-300{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.bg-emerald-800{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.bg-emerald-900{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.bg-emerald-950{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}.bg-fuchsia-100{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.bg-fuchsia-200{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}.bg-fuchsia-300{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}.bg-fuchsia-400{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}.bg-fuchsia-50{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}.bg-fuchsia-500{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}.bg-fuchsia-600{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.bg-fuchsia-700{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.bg-fuchsia-800{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.bg-fuchsia-900{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}.bg-fuchsia-950{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-50\/50{background-color:rgba(249,250,251,.5)}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.bg-green-300{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.bg-green-800{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.bg-indigo-200{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.bg-indigo-300{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}.bg-indigo-400{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.bg-indigo-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.bg-indigo-700{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.bg-indigo-800{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.bg-indigo-900{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.bg-indigo-950{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.bg-lime-100{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.bg-lime-200{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.bg-lime-300{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}.bg-lime-400{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}.bg-lime-50{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}.bg-lime-500{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.bg-lime-700{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.bg-lime-800{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.bg-lime-900{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}.bg-lime-950{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.bg-neutral-200{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.bg-neutral-400{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}.bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-neutral-500{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.bg-neutral-600{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.bg-neutral-950{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.bg-orange-300{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}.bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}.bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}.bg-pink-300{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}.bg-pink-400{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.bg-pink-500{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.bg-pink-700{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.bg-pink-800{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.bg-pink-900{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}.bg-pink-950{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}.bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}.bg-purple-300{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}.bg-purple-400{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.bg-purple-800{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}.bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-red-300{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}.bg-rose-100{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.bg-rose-200{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.bg-rose-300{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}.bg-rose-400{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.bg-rose-50{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.bg-rose-700{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.bg-rose-800{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.bg-rose-900{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.bg-rose-950{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.bg-sky-200{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.bg-sky-400{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-sky-700{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.bg-sky-800{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.bg-sky-900{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.bg-slate-950\/30{background-color:rgba(2,6,23,.3)}.bg-stone-100{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.bg-stone-200{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.bg-stone-300{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}.bg-stone-400{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}.bg-stone-50{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}.bg-stone-500{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}.bg-stone-600{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}.bg-stone-700{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}.bg-stone-800{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}.bg-stone-900{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}.bg-stone-950{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}.bg-teal-100{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.bg-teal-200{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}.bg-teal-300{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}.bg-teal-400{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.bg-teal-50{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}.bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.bg-teal-800{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.bg-teal-900{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}.bg-teal-950{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-tremor-background{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-tremor-background-emphasis{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-tremor-background-muted{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-tremor-background-subtle{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-tremor-border{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-tremor-brand{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-tremor-brand-muted{--tw-bg-opacity:1;background-color:rgb(134 136 239/var(--tw-bg-opacity))}.bg-tremor-brand-muted\/50{background-color:rgba(134,136,239,.5)}.bg-tremor-brand-subtle{--tw-bg-opacity:1;background-color:rgb(142 145 235/var(--tw-bg-opacity))}.bg-tremor-content-subtle{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.bg-violet-200{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.bg-violet-300{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.bg-violet-400{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}.bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.bg-violet-500{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}.bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.bg-violet-700{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}.bg-violet-800{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.bg-violet-900{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}.bg-violet-950{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.bg-yellow-300{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.bg-yellow-700{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}.bg-yellow-800{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}.bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.bg-yellow-950{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.bg-zinc-300{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}.bg-zinc-400{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-zinc-500{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}.bg-zinc-600{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.bg-zinc-950{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}.bg-opacity-10{--tw-bg-opacity:0.1}.bg-opacity-20{--tw-bg-opacity:0.2}.bg-opacity-30{--tw-bg-opacity:0.3}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from:#f59e0b var(--tw-gradient-from-position);--tw-gradient-to:rgba(245,158,11,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-50{--tw-gradient-from:#eff6ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,246,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-emerald-50{--tw-gradient-from:#ecfdf5 var(--tw-gradient-from-position);--tw-gradient-to:rgba(236,253,245,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-50{--tw-gradient-from:#f0fdf4 var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-orange-50{--tw-gradient-from:#fff7ed var(--tw-gradient-from-position);--tw-gradient-to:rgba(255,247,237,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-50{--tw-gradient-from:#faf5ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(250,245,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:transparent var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-tremor-background{--tw-gradient-from:#fff var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-blue-50{--tw-gradient-to:#eff6ff var(--tw-gradient-to-position)}.to-green-50{--tw-gradient-to:#f0fdf4 var(--tw-gradient-to-position)}.to-indigo-50{--tw-gradient-to:#eef2ff var(--tw-gradient-to-position)}.to-red-50{--tw-gradient-to:#fef2f2 var(--tw-gradient-to-position)}.to-teal-50{--tw-gradient-to:#f0fdfa var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.to-tremor-background{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.to-yellow-500{--tw-gradient-to:#eab308 var(--tw-gradient-to-position)}.bg-repeat{background-repeat:repeat}.fill-amber-100{fill:#fef3c7}.fill-amber-200{fill:#fde68a}.fill-amber-300{fill:#fcd34d}.fill-amber-400{fill:#fbbf24}.fill-amber-50{fill:#fffbeb}.fill-amber-500{fill:#f59e0b}.fill-amber-600{fill:#d97706}.fill-amber-700{fill:#b45309}.fill-amber-800{fill:#92400e}.fill-amber-900{fill:#78350f}.fill-amber-950{fill:#451a03}.fill-blue-100{fill:#dbeafe}.fill-blue-200{fill:#bfdbfe}.fill-blue-300{fill:#93c5fd}.fill-blue-400{fill:#60a5fa}.fill-blue-50{fill:#eff6ff}.fill-blue-500{fill:#3b82f6}.fill-blue-600{fill:#2563eb}.fill-blue-700{fill:#1d4ed8}.fill-blue-800{fill:#1e40af}.fill-blue-900{fill:#1e3a8a}.fill-blue-950{fill:#172554}.fill-cyan-100{fill:#cffafe}.fill-cyan-200{fill:#a5f3fc}.fill-cyan-300{fill:#67e8f9}.fill-cyan-400{fill:#22d3ee}.fill-cyan-50{fill:#ecfeff}.fill-cyan-500{fill:#06b6d4}.fill-cyan-600{fill:#0891b2}.fill-cyan-700{fill:#0e7490}.fill-cyan-800{fill:#155e75}.fill-cyan-900{fill:#164e63}.fill-cyan-950{fill:#083344}.fill-emerald-100{fill:#d1fae5}.fill-emerald-200{fill:#a7f3d0}.fill-emerald-300{fill:#6ee7b7}.fill-emerald-400{fill:#34d399}.fill-emerald-50{fill:#ecfdf5}.fill-emerald-500{fill:#10b981}.fill-emerald-600{fill:#059669}.fill-emerald-700{fill:#047857}.fill-emerald-800{fill:#065f46}.fill-emerald-900{fill:#064e3b}.fill-emerald-950{fill:#022c22}.fill-fuchsia-100{fill:#fae8ff}.fill-fuchsia-200{fill:#f5d0fe}.fill-fuchsia-300{fill:#f0abfc}.fill-fuchsia-400{fill:#e879f9}.fill-fuchsia-50{fill:#fdf4ff}.fill-fuchsia-500{fill:#d946ef}.fill-fuchsia-600{fill:#c026d3}.fill-fuchsia-700{fill:#a21caf}.fill-fuchsia-800{fill:#86198f}.fill-fuchsia-900{fill:#701a75}.fill-fuchsia-950{fill:#4a044e}.fill-gray-100{fill:#f3f4f6}.fill-gray-200{fill:#e5e7eb}.fill-gray-300{fill:#d1d5db}.fill-gray-400{fill:#9ca3af}.fill-gray-50{fill:#f9fafb}.fill-gray-500{fill:#6b7280}.fill-gray-600{fill:#4b5563}.fill-gray-700{fill:#374151}.fill-gray-800{fill:#1f2937}.fill-gray-900{fill:#111827}.fill-gray-950{fill:#030712}.fill-green-100{fill:#dcfce7}.fill-green-200{fill:#bbf7d0}.fill-green-300{fill:#86efac}.fill-green-400{fill:#4ade80}.fill-green-50{fill:#f0fdf4}.fill-green-500{fill:#22c55e}.fill-green-600{fill:#16a34a}.fill-green-700{fill:#15803d}.fill-green-800{fill:#166534}.fill-green-900{fill:#14532d}.fill-green-950{fill:#052e16}.fill-indigo-100{fill:#e0e7ff}.fill-indigo-200{fill:#c7d2fe}.fill-indigo-300{fill:#a5b4fc}.fill-indigo-400{fill:#818cf8}.fill-indigo-50{fill:#eef2ff}.fill-indigo-500{fill:#6366f1}.fill-indigo-600{fill:#4f46e5}.fill-indigo-700{fill:#4338ca}.fill-indigo-800{fill:#3730a3}.fill-indigo-900{fill:#312e81}.fill-indigo-950{fill:#1e1b4b}.fill-lime-100{fill:#ecfccb}.fill-lime-200{fill:#d9f99d}.fill-lime-300{fill:#bef264}.fill-lime-400{fill:#a3e635}.fill-lime-50{fill:#f7fee7}.fill-lime-500{fill:#84cc16}.fill-lime-600{fill:#65a30d}.fill-lime-700{fill:#4d7c0f}.fill-lime-800{fill:#3f6212}.fill-lime-900{fill:#365314}.fill-lime-950{fill:#1a2e05}.fill-neutral-100{fill:#f5f5f5}.fill-neutral-200{fill:#e5e5e5}.fill-neutral-300{fill:#d4d4d4}.fill-neutral-400{fill:#a3a3a3}.fill-neutral-50{fill:#fafafa}.fill-neutral-500{fill:#737373}.fill-neutral-600{fill:#525252}.fill-neutral-700{fill:#404040}.fill-neutral-800{fill:#262626}.fill-neutral-900{fill:#171717}.fill-neutral-950{fill:#0a0a0a}.fill-orange-100{fill:#ffedd5}.fill-orange-200{fill:#fed7aa}.fill-orange-300{fill:#fdba74}.fill-orange-400{fill:#fb923c}.fill-orange-50{fill:#fff7ed}.fill-orange-500{fill:#f97316}.fill-orange-600{fill:#ea580c}.fill-orange-700{fill:#c2410c}.fill-orange-800{fill:#9a3412}.fill-orange-900{fill:#7c2d12}.fill-orange-950{fill:#431407}.fill-pink-100{fill:#fce7f3}.fill-pink-200{fill:#fbcfe8}.fill-pink-300{fill:#f9a8d4}.fill-pink-400{fill:#f472b6}.fill-pink-50{fill:#fdf2f8}.fill-pink-500{fill:#ec4899}.fill-pink-600{fill:#db2777}.fill-pink-700{fill:#be185d}.fill-pink-800{fill:#9d174d}.fill-pink-900{fill:#831843}.fill-pink-950{fill:#500724}.fill-purple-100{fill:#f3e8ff}.fill-purple-200{fill:#e9d5ff}.fill-purple-300{fill:#d8b4fe}.fill-purple-400{fill:#c084fc}.fill-purple-50{fill:#faf5ff}.fill-purple-500{fill:#a855f7}.fill-purple-600{fill:#9333ea}.fill-purple-700{fill:#7e22ce}.fill-purple-800{fill:#6b21a8}.fill-purple-900{fill:#581c87}.fill-purple-950{fill:#3b0764}.fill-red-100{fill:#fee2e2}.fill-red-200{fill:#fecaca}.fill-red-300{fill:#fca5a5}.fill-red-400{fill:#f87171}.fill-red-50{fill:#fef2f2}.fill-red-500{fill:#ef4444}.fill-red-600{fill:#dc2626}.fill-red-700{fill:#b91c1c}.fill-red-800{fill:#991b1b}.fill-red-900{fill:#7f1d1d}.fill-red-950{fill:#450a0a}.fill-rose-100{fill:#ffe4e6}.fill-rose-200{fill:#fecdd3}.fill-rose-300{fill:#fda4af}.fill-rose-400{fill:#fb7185}.fill-rose-50{fill:#fff1f2}.fill-rose-500{fill:#f43f5e}.fill-rose-600{fill:#e11d48}.fill-rose-700{fill:#be123c}.fill-rose-800{fill:#9f1239}.fill-rose-900{fill:#881337}.fill-rose-950{fill:#4c0519}.fill-sky-100{fill:#e0f2fe}.fill-sky-200{fill:#bae6fd}.fill-sky-300{fill:#7dd3fc}.fill-sky-400{fill:#38bdf8}.fill-sky-50{fill:#f0f9ff}.fill-sky-500{fill:#0ea5e9}.fill-sky-600{fill:#0284c7}.fill-sky-700{fill:#0369a1}.fill-sky-800{fill:#075985}.fill-sky-900{fill:#0c4a6e}.fill-sky-950{fill:#082f49}.fill-slate-100{fill:#f1f5f9}.fill-slate-200{fill:#e2e8f0}.fill-slate-300{fill:#cbd5e1}.fill-slate-400{fill:#94a3b8}.fill-slate-50{fill:#f8fafc}.fill-slate-500{fill:#64748b}.fill-slate-600{fill:#475569}.fill-slate-700{fill:#334155}.fill-slate-800{fill:#1e293b}.fill-slate-900{fill:#0f172a}.fill-slate-950{fill:#020617}.fill-stone-100{fill:#f5f5f4}.fill-stone-200{fill:#e7e5e4}.fill-stone-300{fill:#d6d3d1}.fill-stone-400{fill:#a8a29e}.fill-stone-50{fill:#fafaf9}.fill-stone-500{fill:#78716c}.fill-stone-600{fill:#57534e}.fill-stone-700{fill:#44403c}.fill-stone-800{fill:#292524}.fill-stone-900{fill:#1c1917}.fill-stone-950{fill:#0c0a09}.fill-teal-100{fill:#ccfbf1}.fill-teal-200{fill:#99f6e4}.fill-teal-300{fill:#5eead4}.fill-teal-400{fill:#2dd4bf}.fill-teal-50{fill:#f0fdfa}.fill-teal-500{fill:#14b8a6}.fill-teal-600{fill:#0d9488}.fill-teal-700{fill:#0f766e}.fill-teal-800{fill:#115e59}.fill-teal-900{fill:#134e4a}.fill-teal-950{fill:#042f2e}.fill-tremor-content{fill:#6b7280}.fill-tremor-content-emphasis{fill:#374151}.fill-violet-100{fill:#ede9fe}.fill-violet-200{fill:#ddd6fe}.fill-violet-300{fill:#c4b5fd}.fill-violet-400{fill:#a78bfa}.fill-violet-50{fill:#f5f3ff}.fill-violet-500{fill:#8b5cf6}.fill-violet-600{fill:#7c3aed}.fill-violet-700{fill:#6d28d9}.fill-violet-800{fill:#5b21b6}.fill-violet-900{fill:#4c1d95}.fill-violet-950{fill:#2e1065}.fill-yellow-100{fill:#fef9c3}.fill-yellow-200{fill:#fef08a}.fill-yellow-300{fill:#fde047}.fill-yellow-400{fill:#facc15}.fill-yellow-50{fill:#fefce8}.fill-yellow-500{fill:#eab308}.fill-yellow-600{fill:#ca8a04}.fill-yellow-700{fill:#a16207}.fill-yellow-800{fill:#854d0e}.fill-yellow-900{fill:#713f12}.fill-yellow-950{fill:#422006}.fill-zinc-100{fill:#f4f4f5}.fill-zinc-200{fill:#e4e4e7}.fill-zinc-300{fill:#d4d4d8}.fill-zinc-400{fill:#a1a1aa}.fill-zinc-50{fill:#fafafa}.fill-zinc-500{fill:#71717a}.fill-zinc-600{fill:#52525b}.fill-zinc-700{fill:#3f3f46}.fill-zinc-800{fill:#27272a}.fill-zinc-900{fill:#18181b}.fill-zinc-950{fill:#09090b}.stroke-amber-100{stroke:#fef3c7}.stroke-amber-200{stroke:#fde68a}.stroke-amber-300{stroke:#fcd34d}.stroke-amber-400{stroke:#fbbf24}.stroke-amber-50{stroke:#fffbeb}.stroke-amber-500{stroke:#f59e0b}.stroke-amber-600{stroke:#d97706}.stroke-amber-700{stroke:#b45309}.stroke-amber-800{stroke:#92400e}.stroke-amber-900{stroke:#78350f}.stroke-amber-950{stroke:#451a03}.stroke-blue-100{stroke:#dbeafe}.stroke-blue-200{stroke:#bfdbfe}.stroke-blue-300{stroke:#93c5fd}.stroke-blue-400{stroke:#60a5fa}.stroke-blue-50{stroke:#eff6ff}.stroke-blue-500{stroke:#3b82f6}.stroke-blue-600{stroke:#2563eb}.stroke-blue-700{stroke:#1d4ed8}.stroke-blue-800{stroke:#1e40af}.stroke-blue-900{stroke:#1e3a8a}.stroke-blue-950{stroke:#172554}.stroke-cyan-100{stroke:#cffafe}.stroke-cyan-200{stroke:#a5f3fc}.stroke-cyan-300{stroke:#67e8f9}.stroke-cyan-400{stroke:#22d3ee}.stroke-cyan-50{stroke:#ecfeff}.stroke-cyan-500{stroke:#06b6d4}.stroke-cyan-600{stroke:#0891b2}.stroke-cyan-700{stroke:#0e7490}.stroke-cyan-800{stroke:#155e75}.stroke-cyan-900{stroke:#164e63}.stroke-cyan-950{stroke:#083344}.stroke-dark-tremor-background{stroke:#111827}.stroke-dark-tremor-border{stroke:#374151}.stroke-emerald-100{stroke:#d1fae5}.stroke-emerald-200{stroke:#a7f3d0}.stroke-emerald-300{stroke:#6ee7b7}.stroke-emerald-400{stroke:#34d399}.stroke-emerald-50{stroke:#ecfdf5}.stroke-emerald-500{stroke:#10b981}.stroke-emerald-600{stroke:#059669}.stroke-emerald-700{stroke:#047857}.stroke-emerald-800{stroke:#065f46}.stroke-emerald-900{stroke:#064e3b}.stroke-emerald-950{stroke:#022c22}.stroke-fuchsia-100{stroke:#fae8ff}.stroke-fuchsia-200{stroke:#f5d0fe}.stroke-fuchsia-300{stroke:#f0abfc}.stroke-fuchsia-400{stroke:#e879f9}.stroke-fuchsia-50{stroke:#fdf4ff}.stroke-fuchsia-500{stroke:#d946ef}.stroke-fuchsia-600{stroke:#c026d3}.stroke-fuchsia-700{stroke:#a21caf}.stroke-fuchsia-800{stroke:#86198f}.stroke-fuchsia-900{stroke:#701a75}.stroke-fuchsia-950{stroke:#4a044e}.stroke-gray-100{stroke:#f3f4f6}.stroke-gray-200{stroke:#e5e7eb}.stroke-gray-300{stroke:#d1d5db}.stroke-gray-400{stroke:#9ca3af}.stroke-gray-50{stroke:#f9fafb}.stroke-gray-500{stroke:#6b7280}.stroke-gray-600{stroke:#4b5563}.stroke-gray-700{stroke:#374151}.stroke-gray-800{stroke:#1f2937}.stroke-gray-900{stroke:#111827}.stroke-gray-950{stroke:#030712}.stroke-green-100{stroke:#dcfce7}.stroke-green-200{stroke:#bbf7d0}.stroke-green-300{stroke:#86efac}.stroke-green-400{stroke:#4ade80}.stroke-green-50{stroke:#f0fdf4}.stroke-green-500{stroke:#22c55e}.stroke-green-600{stroke:#16a34a}.stroke-green-700{stroke:#15803d}.stroke-green-800{stroke:#166534}.stroke-green-900{stroke:#14532d}.stroke-green-950{stroke:#052e16}.stroke-indigo-100{stroke:#e0e7ff}.stroke-indigo-200{stroke:#c7d2fe}.stroke-indigo-300{stroke:#a5b4fc}.stroke-indigo-400{stroke:#818cf8}.stroke-indigo-50{stroke:#eef2ff}.stroke-indigo-500{stroke:#6366f1}.stroke-indigo-600{stroke:#4f46e5}.stroke-indigo-700{stroke:#4338ca}.stroke-indigo-800{stroke:#3730a3}.stroke-indigo-900{stroke:#312e81}.stroke-indigo-950{stroke:#1e1b4b}.stroke-lime-100{stroke:#ecfccb}.stroke-lime-200{stroke:#d9f99d}.stroke-lime-300{stroke:#bef264}.stroke-lime-400{stroke:#a3e635}.stroke-lime-50{stroke:#f7fee7}.stroke-lime-500{stroke:#84cc16}.stroke-lime-600{stroke:#65a30d}.stroke-lime-700{stroke:#4d7c0f}.stroke-lime-800{stroke:#3f6212}.stroke-lime-900{stroke:#365314}.stroke-lime-950{stroke:#1a2e05}.stroke-neutral-100{stroke:#f5f5f5}.stroke-neutral-200{stroke:#e5e5e5}.stroke-neutral-300{stroke:#d4d4d4}.stroke-neutral-400{stroke:#a3a3a3}.stroke-neutral-50{stroke:#fafafa}.stroke-neutral-500{stroke:#737373}.stroke-neutral-600{stroke:#525252}.stroke-neutral-700{stroke:#404040}.stroke-neutral-800{stroke:#262626}.stroke-neutral-900{stroke:#171717}.stroke-neutral-950{stroke:#0a0a0a}.stroke-orange-100{stroke:#ffedd5}.stroke-orange-200{stroke:#fed7aa}.stroke-orange-300{stroke:#fdba74}.stroke-orange-400{stroke:#fb923c}.stroke-orange-50{stroke:#fff7ed}.stroke-orange-500{stroke:#f97316}.stroke-orange-600{stroke:#ea580c}.stroke-orange-700{stroke:#c2410c}.stroke-orange-800{stroke:#9a3412}.stroke-orange-900{stroke:#7c2d12}.stroke-orange-950{stroke:#431407}.stroke-pink-100{stroke:#fce7f3}.stroke-pink-200{stroke:#fbcfe8}.stroke-pink-300{stroke:#f9a8d4}.stroke-pink-400{stroke:#f472b6}.stroke-pink-50{stroke:#fdf2f8}.stroke-pink-500{stroke:#ec4899}.stroke-pink-600{stroke:#db2777}.stroke-pink-700{stroke:#be185d}.stroke-pink-800{stroke:#9d174d}.stroke-pink-900{stroke:#831843}.stroke-pink-950{stroke:#500724}.stroke-purple-100{stroke:#f3e8ff}.stroke-purple-200{stroke:#e9d5ff}.stroke-purple-300{stroke:#d8b4fe}.stroke-purple-400{stroke:#c084fc}.stroke-purple-50{stroke:#faf5ff}.stroke-purple-500{stroke:#a855f7}.stroke-purple-600{stroke:#9333ea}.stroke-purple-700{stroke:#7e22ce}.stroke-purple-800{stroke:#6b21a8}.stroke-purple-900{stroke:#581c87}.stroke-purple-950{stroke:#3b0764}.stroke-red-100{stroke:#fee2e2}.stroke-red-200{stroke:#fecaca}.stroke-red-300{stroke:#fca5a5}.stroke-red-400{stroke:#f87171}.stroke-red-50{stroke:#fef2f2}.stroke-red-500{stroke:#ef4444}.stroke-red-600{stroke:#dc2626}.stroke-red-700{stroke:#b91c1c}.stroke-red-800{stroke:#991b1b}.stroke-red-900{stroke:#7f1d1d}.stroke-red-950{stroke:#450a0a}.stroke-rose-100{stroke:#ffe4e6}.stroke-rose-200{stroke:#fecdd3}.stroke-rose-300{stroke:#fda4af}.stroke-rose-400{stroke:#fb7185}.stroke-rose-50{stroke:#fff1f2}.stroke-rose-500{stroke:#f43f5e}.stroke-rose-600{stroke:#e11d48}.stroke-rose-700{stroke:#be123c}.stroke-rose-800{stroke:#9f1239}.stroke-rose-900{stroke:#881337}.stroke-rose-950{stroke:#4c0519}.stroke-sky-100{stroke:#e0f2fe}.stroke-sky-200{stroke:#bae6fd}.stroke-sky-300{stroke:#7dd3fc}.stroke-sky-400{stroke:#38bdf8}.stroke-sky-50{stroke:#f0f9ff}.stroke-sky-500{stroke:#0ea5e9}.stroke-sky-600{stroke:#0284c7}.stroke-sky-700{stroke:#0369a1}.stroke-sky-800{stroke:#075985}.stroke-sky-900{stroke:#0c4a6e}.stroke-sky-950{stroke:#082f49}.stroke-slate-100{stroke:#f1f5f9}.stroke-slate-200{stroke:#e2e8f0}.stroke-slate-300{stroke:#cbd5e1}.stroke-slate-400{stroke:#94a3b8}.stroke-slate-50{stroke:#f8fafc}.stroke-slate-500{stroke:#64748b}.stroke-slate-600{stroke:#475569}.stroke-slate-700{stroke:#334155}.stroke-slate-800{stroke:#1e293b}.stroke-slate-900{stroke:#0f172a}.stroke-slate-950{stroke:#020617}.stroke-stone-100{stroke:#f5f5f4}.stroke-stone-200{stroke:#e7e5e4}.stroke-stone-300{stroke:#d6d3d1}.stroke-stone-400{stroke:#a8a29e}.stroke-stone-50{stroke:#fafaf9}.stroke-stone-500{stroke:#78716c}.stroke-stone-600{stroke:#57534e}.stroke-stone-700{stroke:#44403c}.stroke-stone-800{stroke:#292524}.stroke-stone-900{stroke:#1c1917}.stroke-stone-950{stroke:#0c0a09}.stroke-teal-100{stroke:#ccfbf1}.stroke-teal-200{stroke:#99f6e4}.stroke-teal-300{stroke:#5eead4}.stroke-teal-400{stroke:#2dd4bf}.stroke-teal-50{stroke:#f0fdfa}.stroke-teal-500{stroke:#14b8a6}.stroke-teal-600{stroke:#0d9488}.stroke-teal-700{stroke:#0f766e}.stroke-teal-800{stroke:#115e59}.stroke-teal-900{stroke:#134e4a}.stroke-teal-950{stroke:#042f2e}.stroke-tremor-background{stroke:#fff}.stroke-tremor-border{stroke:#e5e7eb}.stroke-tremor-brand{stroke:#6366f1}.stroke-tremor-brand-muted\/50{stroke:rgba(134,136,239,.5)}.stroke-violet-100{stroke:#ede9fe}.stroke-violet-200{stroke:#ddd6fe}.stroke-violet-300{stroke:#c4b5fd}.stroke-violet-400{stroke:#a78bfa}.stroke-violet-50{stroke:#f5f3ff}.stroke-violet-500{stroke:#8b5cf6}.stroke-violet-600{stroke:#7c3aed}.stroke-violet-700{stroke:#6d28d9}.stroke-violet-800{stroke:#5b21b6}.stroke-violet-900{stroke:#4c1d95}.stroke-violet-950{stroke:#2e1065}.stroke-yellow-100{stroke:#fef9c3}.stroke-yellow-200{stroke:#fef08a}.stroke-yellow-300{stroke:#fde047}.stroke-yellow-400{stroke:#facc15}.stroke-yellow-50{stroke:#fefce8}.stroke-yellow-500{stroke:#eab308}.stroke-yellow-600{stroke:#ca8a04}.stroke-yellow-700{stroke:#a16207}.stroke-yellow-800{stroke:#854d0e}.stroke-yellow-900{stroke:#713f12}.stroke-yellow-950{stroke:#422006}.stroke-zinc-100{stroke:#f4f4f5}.stroke-zinc-200{stroke:#e4e4e7}.stroke-zinc-300{stroke:#d4d4d8}.stroke-zinc-400{stroke:#a1a1aa}.stroke-zinc-50{stroke:#fafafa}.stroke-zinc-500{stroke:#71717a}.stroke-zinc-600{stroke:#52525b}.stroke-zinc-700{stroke:#3f3f46}.stroke-zinc-800{stroke:#27272a}.stroke-zinc-900{stroke:#18181b}.stroke-zinc-950{stroke:#09090b}.stroke-1{stroke-width:1}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-0{padding:0!important}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[10px\]{padding-top:10px;padding-bottom:10px}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-7{padding-left:1.75rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-14{padding-right:3.5rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[12px\]{font-size:12px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-tremor-default{font-size:.775rem;line-height:1.15rem}.text-tremor-label{font-size:.75rem;line-height:.3rem}.text-tremor-metric{font-size:1.675rem;line-height:2.15rem}.text-tremor-title{font-size:1.025rem;line-height:1.65rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.normal-nums{font-variant-numeric:normal}.ordinal{--tw-ordinal:ordinal}.ordinal,.slashed-zero{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero}.lining-nums{--tw-numeric-figure:lining-nums}.lining-nums,.oldstyle-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums}.proportional-nums{--tw-numeric-spacing:proportional-nums}.proportional-nums,.tabular-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-6{line-height:1.5rem}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.text-amber-50{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.text-amber-950{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.text-blue-50{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.text-blue-950{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}.text-current{color:currentColor}.text-cyan-100{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.text-cyan-200{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}.text-cyan-300{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}.text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.text-cyan-50{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}.text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.text-cyan-800{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}.text-cyan-900{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.text-cyan-950{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}.text-dark-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-dark-tremor-brand-emphasis{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.text-dark-tremor-brand-inverted{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.text-dark-tremor-content{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-dark-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.text-dark-tremor-content-subtle{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-emerald-100{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.text-emerald-200{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.text-emerald-50{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}.text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.text-emerald-900{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}.text-emerald-950{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}.text-fuchsia-100{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}.text-fuchsia-200{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.text-fuchsia-300{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}.text-fuchsia-400{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}.text-fuchsia-50{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}.text-fuchsia-500{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}.text-fuchsia-600{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.text-fuchsia-700{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.text-fuchsia-800{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.text-fuchsia-900{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}.text-fuchsia-950{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-gray-950{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.text-green-100{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-green-50{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}.text-green-950{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}.text-indigo-100{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}.text-indigo-200{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.text-indigo-300{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.text-indigo-50{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}.text-indigo-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.text-indigo-900{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.text-indigo-950{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.text-inherit{color:inherit}.text-lime-100{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}.text-lime-200{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}.text-lime-300{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}.text-lime-400{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}.text-lime-50{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}.text-lime-500{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}.text-lime-600{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.text-lime-700{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}.text-lime-800{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}.text-lime-900{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.text-lime-950{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}.text-neutral-100{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.text-neutral-300{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}.text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}.text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.text-orange-50{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.text-orange-900{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}.text-orange-950{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}.text-pink-100{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}.text-pink-200{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.text-pink-300{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}.text-pink-400{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}.text-pink-50{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}.text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.text-pink-600{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.text-pink-700{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.text-pink-800{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.text-pink-900{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}.text-pink-950{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}.text-purple-100{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}.text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}.text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.text-purple-50{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.text-purple-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.text-purple-900{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}.text-purple-950{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}.text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}.text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.text-red-50{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.text-red-950{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}.text-rose-100{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.text-rose-200{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.text-rose-50{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}.text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.text-rose-800{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.text-rose-900{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.text-rose-950{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}.text-sky-100{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.text-sky-50{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}.text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.text-sky-800{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.text-sky-900{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}.text-sky-950{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}.text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-50{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.text-slate-950{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.text-stone-100{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}.text-stone-200{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}.text-stone-300{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}.text-stone-400{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.text-stone-50{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}.text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.text-stone-600{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.text-stone-700{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}.text-stone-800{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}.text-stone-900{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}.text-stone-950{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}.text-teal-100{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}.text-teal-200{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.text-teal-300{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}.text-teal-400{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}.text-teal-50{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}.text-teal-500{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.text-teal-700{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.text-teal-800{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.text-teal-900{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}.text-teal-950{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}.text-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-tremor-brand-emphasis{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.text-tremor-brand-inverted{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-tremor-content{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-tremor-content-strong{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-tremor-content-subtle{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-violet-100{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}.text-violet-200{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.text-violet-50{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}.text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.text-violet-600{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.text-violet-700{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.text-violet-800{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}.text-violet-900{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}.text-violet-950{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-100{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}.text-yellow-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.text-yellow-50{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}.text-yellow-950{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}.text-zinc-100{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.text-zinc-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-dark-tremor-brand,.accent-tremor-brand{accent-color:#6366f1}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-\[-4px_0_4px_-4px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[-4px_0_4px_-4px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:-4px 0 4px -4px rgba(0,0,0,.1);--tw-shadow-colored:-4px 0 4px -4px var(--tw-shadow-color)}.shadow-\[-4px_0_8px_-6px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:-4px 0 8px -6px rgba(0,0,0,.1);--tw-shadow-colored:-4px 0 8px -6px var(--tw-shadow-color)}.shadow-\[-4px_0_8px_-6px_rgba\(0\2c 0\2c 0\2c 0\.1\)\],.shadow-dark-tremor-card{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-dark-tremor-card{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow-dark-tremor-input{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-dark-tremor-input,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-tremor-card{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow-tremor-card,.shadow-tremor-dropdown{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-tremor-dropdown{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-tremor-input{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-tremor-input,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-tremor-brand{outline-color:#6366f1}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-1{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-2,.ring-4{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-inset{--tw-ring-inset:inset}.ring-amber-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 243 199/var(--tw-ring-opacity))}.ring-amber-200{--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity))}.ring-amber-300{--tw-ring-opacity:1;--tw-ring-color:rgb(252 211 77/var(--tw-ring-opacity))}.ring-amber-400{--tw-ring-opacity:1;--tw-ring-color:rgb(251 191 36/var(--tw-ring-opacity))}.ring-amber-50{--tw-ring-opacity:1;--tw-ring-color:rgb(255 251 235/var(--tw-ring-opacity))}.ring-amber-500{--tw-ring-opacity:1;--tw-ring-color:rgb(245 158 11/var(--tw-ring-opacity))}.ring-amber-600{--tw-ring-opacity:1;--tw-ring-color:rgb(217 119 6/var(--tw-ring-opacity))}.ring-amber-700{--tw-ring-opacity:1;--tw-ring-color:rgb(180 83 9/var(--tw-ring-opacity))}.ring-amber-800{--tw-ring-opacity:1;--tw-ring-color:rgb(146 64 14/var(--tw-ring-opacity))}.ring-amber-900{--tw-ring-opacity:1;--tw-ring-color:rgb(120 53 15/var(--tw-ring-opacity))}.ring-amber-950{--tw-ring-opacity:1;--tw-ring-color:rgb(69 26 3/var(--tw-ring-opacity))}.ring-blue-100{--tw-ring-opacity:1;--tw-ring-color:rgb(219 234 254/var(--tw-ring-opacity))}.ring-blue-200{--tw-ring-opacity:1;--tw-ring-color:rgb(191 219 254/var(--tw-ring-opacity))}.ring-blue-300{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity))}.ring-blue-400{--tw-ring-opacity:1;--tw-ring-color:rgb(96 165 250/var(--tw-ring-opacity))}.ring-blue-50{--tw-ring-opacity:1;--tw-ring-color:rgb(239 246 255/var(--tw-ring-opacity))}.ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.ring-blue-600{--tw-ring-opacity:1;--tw-ring-color:rgb(37 99 235/var(--tw-ring-opacity))}.ring-blue-700{--tw-ring-opacity:1;--tw-ring-color:rgb(29 78 216/var(--tw-ring-opacity))}.ring-blue-800{--tw-ring-opacity:1;--tw-ring-color:rgb(30 64 175/var(--tw-ring-opacity))}.ring-blue-900{--tw-ring-opacity:1;--tw-ring-color:rgb(30 58 138/var(--tw-ring-opacity))}.ring-blue-950{--tw-ring-opacity:1;--tw-ring-color:rgb(23 37 84/var(--tw-ring-opacity))}.ring-cyan-100{--tw-ring-opacity:1;--tw-ring-color:rgb(207 250 254/var(--tw-ring-opacity))}.ring-cyan-200{--tw-ring-opacity:1;--tw-ring-color:rgb(165 243 252/var(--tw-ring-opacity))}.ring-cyan-300{--tw-ring-opacity:1;--tw-ring-color:rgb(103 232 249/var(--tw-ring-opacity))}.ring-cyan-400{--tw-ring-opacity:1;--tw-ring-color:rgb(34 211 238/var(--tw-ring-opacity))}.ring-cyan-50{--tw-ring-opacity:1;--tw-ring-color:rgb(236 254 255/var(--tw-ring-opacity))}.ring-cyan-500{--tw-ring-opacity:1;--tw-ring-color:rgb(6 182 212/var(--tw-ring-opacity))}.ring-cyan-600{--tw-ring-opacity:1;--tw-ring-color:rgb(8 145 178/var(--tw-ring-opacity))}.ring-cyan-700{--tw-ring-opacity:1;--tw-ring-color:rgb(14 116 144/var(--tw-ring-opacity))}.ring-cyan-800{--tw-ring-opacity:1;--tw-ring-color:rgb(21 94 117/var(--tw-ring-opacity))}.ring-cyan-900{--tw-ring-opacity:1;--tw-ring-color:rgb(22 78 99/var(--tw-ring-opacity))}.ring-cyan-950{--tw-ring-opacity:1;--tw-ring-color:rgb(8 51 68/var(--tw-ring-opacity))}.ring-dark-tremor-ring{--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55/var(--tw-ring-opacity))}.ring-emerald-100{--tw-ring-opacity:1;--tw-ring-color:rgb(209 250 229/var(--tw-ring-opacity))}.ring-emerald-200{--tw-ring-opacity:1;--tw-ring-color:rgb(167 243 208/var(--tw-ring-opacity))}.ring-emerald-300{--tw-ring-opacity:1;--tw-ring-color:rgb(110 231 183/var(--tw-ring-opacity))}.ring-emerald-400{--tw-ring-opacity:1;--tw-ring-color:rgb(52 211 153/var(--tw-ring-opacity))}.ring-emerald-50{--tw-ring-opacity:1;--tw-ring-color:rgb(236 253 245/var(--tw-ring-opacity))}.ring-emerald-500{--tw-ring-opacity:1;--tw-ring-color:rgb(16 185 129/var(--tw-ring-opacity))}.ring-emerald-600{--tw-ring-opacity:1;--tw-ring-color:rgb(5 150 105/var(--tw-ring-opacity))}.ring-emerald-700{--tw-ring-opacity:1;--tw-ring-color:rgb(4 120 87/var(--tw-ring-opacity))}.ring-emerald-800{--tw-ring-opacity:1;--tw-ring-color:rgb(6 95 70/var(--tw-ring-opacity))}.ring-emerald-900{--tw-ring-opacity:1;--tw-ring-color:rgb(6 78 59/var(--tw-ring-opacity))}.ring-emerald-950{--tw-ring-opacity:1;--tw-ring-color:rgb(2 44 34/var(--tw-ring-opacity))}.ring-fuchsia-100{--tw-ring-opacity:1;--tw-ring-color:rgb(250 232 255/var(--tw-ring-opacity))}.ring-fuchsia-200{--tw-ring-opacity:1;--tw-ring-color:rgb(245 208 254/var(--tw-ring-opacity))}.ring-fuchsia-300{--tw-ring-opacity:1;--tw-ring-color:rgb(240 171 252/var(--tw-ring-opacity))}.ring-fuchsia-400{--tw-ring-opacity:1;--tw-ring-color:rgb(232 121 249/var(--tw-ring-opacity))}.ring-fuchsia-50{--tw-ring-opacity:1;--tw-ring-color:rgb(253 244 255/var(--tw-ring-opacity))}.ring-fuchsia-500{--tw-ring-opacity:1;--tw-ring-color:rgb(217 70 239/var(--tw-ring-opacity))}.ring-fuchsia-600{--tw-ring-opacity:1;--tw-ring-color:rgb(192 38 211/var(--tw-ring-opacity))}.ring-fuchsia-700{--tw-ring-opacity:1;--tw-ring-color:rgb(162 28 175/var(--tw-ring-opacity))}.ring-fuchsia-800{--tw-ring-opacity:1;--tw-ring-color:rgb(134 25 143/var(--tw-ring-opacity))}.ring-fuchsia-900{--tw-ring-opacity:1;--tw-ring-color:rgb(112 26 117/var(--tw-ring-opacity))}.ring-fuchsia-950{--tw-ring-opacity:1;--tw-ring-color:rgb(74 4 78/var(--tw-ring-opacity))}.ring-gray-100{--tw-ring-opacity:1;--tw-ring-color:rgb(243 244 246/var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity))}.ring-gray-400{--tw-ring-opacity:1;--tw-ring-color:rgb(156 163 175/var(--tw-ring-opacity))}.ring-gray-50{--tw-ring-opacity:1;--tw-ring-color:rgb(249 250 251/var(--tw-ring-opacity))}.ring-gray-500{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity))}.ring-gray-600{--tw-ring-opacity:1;--tw-ring-color:rgb(75 85 99/var(--tw-ring-opacity))}.ring-gray-700{--tw-ring-opacity:1;--tw-ring-color:rgb(55 65 81/var(--tw-ring-opacity))}.ring-gray-800{--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55/var(--tw-ring-opacity))}.ring-gray-900{--tw-ring-opacity:1;--tw-ring-color:rgb(17 24 39/var(--tw-ring-opacity))}.ring-gray-950{--tw-ring-opacity:1;--tw-ring-color:rgb(3 7 18/var(--tw-ring-opacity))}.ring-green-100{--tw-ring-opacity:1;--tw-ring-color:rgb(220 252 231/var(--tw-ring-opacity))}.ring-green-200{--tw-ring-opacity:1;--tw-ring-color:rgb(187 247 208/var(--tw-ring-opacity))}.ring-green-300{--tw-ring-opacity:1;--tw-ring-color:rgb(134 239 172/var(--tw-ring-opacity))}.ring-green-400{--tw-ring-opacity:1;--tw-ring-color:rgb(74 222 128/var(--tw-ring-opacity))}.ring-green-50{--tw-ring-opacity:1;--tw-ring-color:rgb(240 253 244/var(--tw-ring-opacity))}.ring-green-500{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity))}.ring-green-600{--tw-ring-opacity:1;--tw-ring-color:rgb(22 163 74/var(--tw-ring-opacity))}.ring-green-700{--tw-ring-opacity:1;--tw-ring-color:rgb(21 128 61/var(--tw-ring-opacity))}.ring-green-800{--tw-ring-opacity:1;--tw-ring-color:rgb(22 101 52/var(--tw-ring-opacity))}.ring-green-900{--tw-ring-opacity:1;--tw-ring-color:rgb(20 83 45/var(--tw-ring-opacity))}.ring-green-950{--tw-ring-opacity:1;--tw-ring-color:rgb(5 46 22/var(--tw-ring-opacity))}.ring-indigo-100{--tw-ring-opacity:1;--tw-ring-color:rgb(224 231 255/var(--tw-ring-opacity))}.ring-indigo-200{--tw-ring-opacity:1;--tw-ring-color:rgb(199 210 254/var(--tw-ring-opacity))}.ring-indigo-300{--tw-ring-opacity:1;--tw-ring-color:rgb(165 180 252/var(--tw-ring-opacity))}.ring-indigo-400{--tw-ring-opacity:1;--tw-ring-color:rgb(129 140 248/var(--tw-ring-opacity))}.ring-indigo-50{--tw-ring-opacity:1;--tw-ring-color:rgb(238 242 255/var(--tw-ring-opacity))}.ring-indigo-500{--tw-ring-opacity:1;--tw-ring-color:rgb(99 102 241/var(--tw-ring-opacity))}.ring-indigo-600{--tw-ring-opacity:1;--tw-ring-color:rgb(79 70 229/var(--tw-ring-opacity))}.ring-indigo-700{--tw-ring-opacity:1;--tw-ring-color:rgb(67 56 202/var(--tw-ring-opacity))}.ring-indigo-800{--tw-ring-opacity:1;--tw-ring-color:rgb(55 48 163/var(--tw-ring-opacity))}.ring-indigo-900{--tw-ring-opacity:1;--tw-ring-color:rgb(49 46 129/var(--tw-ring-opacity))}.ring-indigo-950{--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}.ring-lime-100{--tw-ring-opacity:1;--tw-ring-color:rgb(236 252 203/var(--tw-ring-opacity))}.ring-lime-200{--tw-ring-opacity:1;--tw-ring-color:rgb(217 249 157/var(--tw-ring-opacity))}.ring-lime-300{--tw-ring-opacity:1;--tw-ring-color:rgb(190 242 100/var(--tw-ring-opacity))}.ring-lime-400{--tw-ring-opacity:1;--tw-ring-color:rgb(163 230 53/var(--tw-ring-opacity))}.ring-lime-50{--tw-ring-opacity:1;--tw-ring-color:rgb(247 254 231/var(--tw-ring-opacity))}.ring-lime-500{--tw-ring-opacity:1;--tw-ring-color:rgb(132 204 22/var(--tw-ring-opacity))}.ring-lime-600{--tw-ring-opacity:1;--tw-ring-color:rgb(101 163 13/var(--tw-ring-opacity))}.ring-lime-700{--tw-ring-opacity:1;--tw-ring-color:rgb(77 124 15/var(--tw-ring-opacity))}.ring-lime-800{--tw-ring-opacity:1;--tw-ring-color:rgb(63 98 18/var(--tw-ring-opacity))}.ring-lime-900{--tw-ring-opacity:1;--tw-ring-color:rgb(54 83 20/var(--tw-ring-opacity))}.ring-lime-950{--tw-ring-opacity:1;--tw-ring-color:rgb(26 46 5/var(--tw-ring-opacity))}.ring-neutral-100{--tw-ring-opacity:1;--tw-ring-color:rgb(245 245 245/var(--tw-ring-opacity))}.ring-neutral-200{--tw-ring-opacity:1;--tw-ring-color:rgb(229 229 229/var(--tw-ring-opacity))}.ring-neutral-300{--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 212/var(--tw-ring-opacity))}.ring-neutral-400{--tw-ring-opacity:1;--tw-ring-color:rgb(163 163 163/var(--tw-ring-opacity))}.ring-neutral-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 250 250/var(--tw-ring-opacity))}.ring-neutral-500{--tw-ring-opacity:1;--tw-ring-color:rgb(115 115 115/var(--tw-ring-opacity))}.ring-neutral-600{--tw-ring-opacity:1;--tw-ring-color:rgb(82 82 82/var(--tw-ring-opacity))}.ring-neutral-700{--tw-ring-opacity:1;--tw-ring-color:rgb(64 64 64/var(--tw-ring-opacity))}.ring-neutral-800{--tw-ring-opacity:1;--tw-ring-color:rgb(38 38 38/var(--tw-ring-opacity))}.ring-neutral-900{--tw-ring-opacity:1;--tw-ring-color:rgb(23 23 23/var(--tw-ring-opacity))}.ring-neutral-950{--tw-ring-opacity:1;--tw-ring-color:rgb(10 10 10/var(--tw-ring-opacity))}.ring-orange-100{--tw-ring-opacity:1;--tw-ring-color:rgb(255 237 213/var(--tw-ring-opacity))}.ring-orange-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 215 170/var(--tw-ring-opacity))}.ring-orange-300{--tw-ring-opacity:1;--tw-ring-color:rgb(253 186 116/var(--tw-ring-opacity))}.ring-orange-400{--tw-ring-opacity:1;--tw-ring-color:rgb(251 146 60/var(--tw-ring-opacity))}.ring-orange-50{--tw-ring-opacity:1;--tw-ring-color:rgb(255 247 237/var(--tw-ring-opacity))}.ring-orange-500{--tw-ring-opacity:1;--tw-ring-color:rgb(249 115 22/var(--tw-ring-opacity))}.ring-orange-600{--tw-ring-opacity:1;--tw-ring-color:rgb(234 88 12/var(--tw-ring-opacity))}.ring-orange-700{--tw-ring-opacity:1;--tw-ring-color:rgb(194 65 12/var(--tw-ring-opacity))}.ring-orange-800{--tw-ring-opacity:1;--tw-ring-color:rgb(154 52 18/var(--tw-ring-opacity))}.ring-orange-900{--tw-ring-opacity:1;--tw-ring-color:rgb(124 45 18/var(--tw-ring-opacity))}.ring-orange-950{--tw-ring-opacity:1;--tw-ring-color:rgb(67 20 7/var(--tw-ring-opacity))}.ring-pink-100{--tw-ring-opacity:1;--tw-ring-color:rgb(252 231 243/var(--tw-ring-opacity))}.ring-pink-200{--tw-ring-opacity:1;--tw-ring-color:rgb(251 207 232/var(--tw-ring-opacity))}.ring-pink-300{--tw-ring-opacity:1;--tw-ring-color:rgb(249 168 212/var(--tw-ring-opacity))}.ring-pink-400{--tw-ring-opacity:1;--tw-ring-color:rgb(244 114 182/var(--tw-ring-opacity))}.ring-pink-50{--tw-ring-opacity:1;--tw-ring-color:rgb(253 242 248/var(--tw-ring-opacity))}.ring-pink-500{--tw-ring-opacity:1;--tw-ring-color:rgb(236 72 153/var(--tw-ring-opacity))}.ring-pink-600{--tw-ring-opacity:1;--tw-ring-color:rgb(219 39 119/var(--tw-ring-opacity))}.ring-pink-700{--tw-ring-opacity:1;--tw-ring-color:rgb(190 24 93/var(--tw-ring-opacity))}.ring-pink-800{--tw-ring-opacity:1;--tw-ring-color:rgb(157 23 77/var(--tw-ring-opacity))}.ring-pink-900{--tw-ring-opacity:1;--tw-ring-color:rgb(131 24 67/var(--tw-ring-opacity))}.ring-pink-950{--tw-ring-opacity:1;--tw-ring-color:rgb(80 7 36/var(--tw-ring-opacity))}.ring-purple-100{--tw-ring-opacity:1;--tw-ring-color:rgb(243 232 255/var(--tw-ring-opacity))}.ring-purple-200{--tw-ring-opacity:1;--tw-ring-color:rgb(233 213 255/var(--tw-ring-opacity))}.ring-purple-300{--tw-ring-opacity:1;--tw-ring-color:rgb(216 180 254/var(--tw-ring-opacity))}.ring-purple-400{--tw-ring-opacity:1;--tw-ring-color:rgb(192 132 252/var(--tw-ring-opacity))}.ring-purple-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 245 255/var(--tw-ring-opacity))}.ring-purple-500{--tw-ring-opacity:1;--tw-ring-color:rgb(168 85 247/var(--tw-ring-opacity))}.ring-purple-600{--tw-ring-opacity:1;--tw-ring-color:rgb(147 51 234/var(--tw-ring-opacity))}.ring-purple-700{--tw-ring-opacity:1;--tw-ring-color:rgb(126 34 206/var(--tw-ring-opacity))}.ring-purple-800{--tw-ring-opacity:1;--tw-ring-color:rgb(107 33 168/var(--tw-ring-opacity))}.ring-purple-900{--tw-ring-opacity:1;--tw-ring-color:rgb(88 28 135/var(--tw-ring-opacity))}.ring-purple-950{--tw-ring-opacity:1;--tw-ring-color:rgb(59 7 100/var(--tw-ring-opacity))}.ring-red-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 226 226/var(--tw-ring-opacity))}.ring-red-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 202 202/var(--tw-ring-opacity))}.ring-red-300{--tw-ring-opacity:1;--tw-ring-color:rgb(252 165 165/var(--tw-ring-opacity))}.ring-red-400{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity))}.ring-red-50{--tw-ring-opacity:1;--tw-ring-color:rgb(254 242 242/var(--tw-ring-opacity))}.ring-red-500{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.ring-red-600{--tw-ring-opacity:1;--tw-ring-color:rgb(220 38 38/var(--tw-ring-opacity))}.ring-red-700{--tw-ring-opacity:1;--tw-ring-color:rgb(185 28 28/var(--tw-ring-opacity))}.ring-red-800{--tw-ring-opacity:1;--tw-ring-color:rgb(153 27 27/var(--tw-ring-opacity))}.ring-red-900{--tw-ring-opacity:1;--tw-ring-color:rgb(127 29 29/var(--tw-ring-opacity))}.ring-red-950{--tw-ring-opacity:1;--tw-ring-color:rgb(69 10 10/var(--tw-ring-opacity))}.ring-rose-100{--tw-ring-opacity:1;--tw-ring-color:rgb(255 228 230/var(--tw-ring-opacity))}.ring-rose-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 205 211/var(--tw-ring-opacity))}.ring-rose-300{--tw-ring-opacity:1;--tw-ring-color:rgb(253 164 175/var(--tw-ring-opacity))}.ring-rose-400{--tw-ring-opacity:1;--tw-ring-color:rgb(251 113 133/var(--tw-ring-opacity))}.ring-rose-50{--tw-ring-opacity:1;--tw-ring-color:rgb(255 241 242/var(--tw-ring-opacity))}.ring-rose-500{--tw-ring-opacity:1;--tw-ring-color:rgb(244 63 94/var(--tw-ring-opacity))}.ring-rose-600{--tw-ring-opacity:1;--tw-ring-color:rgb(225 29 72/var(--tw-ring-opacity))}.ring-rose-700{--tw-ring-opacity:1;--tw-ring-color:rgb(190 18 60/var(--tw-ring-opacity))}.ring-rose-800{--tw-ring-opacity:1;--tw-ring-color:rgb(159 18 57/var(--tw-ring-opacity))}.ring-rose-900{--tw-ring-opacity:1;--tw-ring-color:rgb(136 19 55/var(--tw-ring-opacity))}.ring-rose-950{--tw-ring-opacity:1;--tw-ring-color:rgb(76 5 25/var(--tw-ring-opacity))}.ring-sky-100{--tw-ring-opacity:1;--tw-ring-color:rgb(224 242 254/var(--tw-ring-opacity))}.ring-sky-200{--tw-ring-opacity:1;--tw-ring-color:rgb(186 230 253/var(--tw-ring-opacity))}.ring-sky-300{--tw-ring-opacity:1;--tw-ring-color:rgb(125 211 252/var(--tw-ring-opacity))}.ring-sky-400{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.ring-sky-50{--tw-ring-opacity:1;--tw-ring-color:rgb(240 249 255/var(--tw-ring-opacity))}.ring-sky-500{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity))}.ring-sky-600{--tw-ring-opacity:1;--tw-ring-color:rgb(2 132 199/var(--tw-ring-opacity))}.ring-sky-700{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.ring-sky-800{--tw-ring-opacity:1;--tw-ring-color:rgb(7 89 133/var(--tw-ring-opacity))}.ring-sky-900{--tw-ring-opacity:1;--tw-ring-color:rgb(12 74 110/var(--tw-ring-opacity))}.ring-sky-950{--tw-ring-opacity:1;--tw-ring-color:rgb(8 47 73/var(--tw-ring-opacity))}.ring-slate-100{--tw-ring-opacity:1;--tw-ring-color:rgb(241 245 249/var(--tw-ring-opacity))}.ring-slate-200{--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity))}.ring-slate-300{--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity))}.ring-slate-400{--tw-ring-opacity:1;--tw-ring-color:rgb(148 163 184/var(--tw-ring-opacity))}.ring-slate-50{--tw-ring-opacity:1;--tw-ring-color:rgb(248 250 252/var(--tw-ring-opacity))}.ring-slate-500{--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity))}.ring-slate-600{--tw-ring-opacity:1;--tw-ring-color:rgb(71 85 105/var(--tw-ring-opacity))}.ring-slate-700{--tw-ring-opacity:1;--tw-ring-color:rgb(51 65 85/var(--tw-ring-opacity))}.ring-slate-800{--tw-ring-opacity:1;--tw-ring-color:rgb(30 41 59/var(--tw-ring-opacity))}.ring-slate-900{--tw-ring-opacity:1;--tw-ring-color:rgb(15 23 42/var(--tw-ring-opacity))}.ring-slate-950{--tw-ring-opacity:1;--tw-ring-color:rgb(2 6 23/var(--tw-ring-opacity))}.ring-stone-100{--tw-ring-opacity:1;--tw-ring-color:rgb(245 245 244/var(--tw-ring-opacity))}.ring-stone-200{--tw-ring-opacity:1;--tw-ring-color:rgb(231 229 228/var(--tw-ring-opacity))}.ring-stone-300{--tw-ring-opacity:1;--tw-ring-color:rgb(214 211 209/var(--tw-ring-opacity))}.ring-stone-400{--tw-ring-opacity:1;--tw-ring-color:rgb(168 162 158/var(--tw-ring-opacity))}.ring-stone-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 250 249/var(--tw-ring-opacity))}.ring-stone-500{--tw-ring-opacity:1;--tw-ring-color:rgb(120 113 108/var(--tw-ring-opacity))}.ring-stone-600{--tw-ring-opacity:1;--tw-ring-color:rgb(87 83 78/var(--tw-ring-opacity))}.ring-stone-700{--tw-ring-opacity:1;--tw-ring-color:rgb(68 64 60/var(--tw-ring-opacity))}.ring-stone-800{--tw-ring-opacity:1;--tw-ring-color:rgb(41 37 36/var(--tw-ring-opacity))}.ring-stone-900{--tw-ring-opacity:1;--tw-ring-color:rgb(28 25 23/var(--tw-ring-opacity))}.ring-stone-950{--tw-ring-opacity:1;--tw-ring-color:rgb(12 10 9/var(--tw-ring-opacity))}.ring-teal-100{--tw-ring-opacity:1;--tw-ring-color:rgb(204 251 241/var(--tw-ring-opacity))}.ring-teal-200{--tw-ring-opacity:1;--tw-ring-color:rgb(153 246 228/var(--tw-ring-opacity))}.ring-teal-300{--tw-ring-opacity:1;--tw-ring-color:rgb(94 234 212/var(--tw-ring-opacity))}.ring-teal-400{--tw-ring-opacity:1;--tw-ring-color:rgb(45 212 191/var(--tw-ring-opacity))}.ring-teal-50{--tw-ring-opacity:1;--tw-ring-color:rgb(240 253 250/var(--tw-ring-opacity))}.ring-teal-500{--tw-ring-opacity:1;--tw-ring-color:rgb(20 184 166/var(--tw-ring-opacity))}.ring-teal-600{--tw-ring-opacity:1;--tw-ring-color:rgb(13 148 136/var(--tw-ring-opacity))}.ring-teal-700{--tw-ring-opacity:1;--tw-ring-color:rgb(15 118 110/var(--tw-ring-opacity))}.ring-teal-800{--tw-ring-opacity:1;--tw-ring-color:rgb(17 94 89/var(--tw-ring-opacity))}.ring-teal-900{--tw-ring-opacity:1;--tw-ring-color:rgb(19 78 74/var(--tw-ring-opacity))}.ring-teal-950{--tw-ring-opacity:1;--tw-ring-color:rgb(4 47 46/var(--tw-ring-opacity))}.ring-tremor-brand-inverted{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-tremor-brand-muted{--tw-ring-opacity:1;--tw-ring-color:rgb(134 136 239/var(--tw-ring-opacity))}.ring-tremor-ring{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}.ring-violet-100{--tw-ring-opacity:1;--tw-ring-color:rgb(237 233 254/var(--tw-ring-opacity))}.ring-violet-200{--tw-ring-opacity:1;--tw-ring-color:rgb(221 214 254/var(--tw-ring-opacity))}.ring-violet-300{--tw-ring-opacity:1;--tw-ring-color:rgb(196 181 253/var(--tw-ring-opacity))}.ring-violet-400{--tw-ring-opacity:1;--tw-ring-color:rgb(167 139 250/var(--tw-ring-opacity))}.ring-violet-50{--tw-ring-opacity:1;--tw-ring-color:rgb(245 243 255/var(--tw-ring-opacity))}.ring-violet-500{--tw-ring-opacity:1;--tw-ring-color:rgb(139 92 246/var(--tw-ring-opacity))}.ring-violet-600{--tw-ring-opacity:1;--tw-ring-color:rgb(124 58 237/var(--tw-ring-opacity))}.ring-violet-700{--tw-ring-opacity:1;--tw-ring-color:rgb(109 40 217/var(--tw-ring-opacity))}.ring-violet-800{--tw-ring-opacity:1;--tw-ring-color:rgb(91 33 182/var(--tw-ring-opacity))}.ring-violet-900{--tw-ring-opacity:1;--tw-ring-color:rgb(76 29 149/var(--tw-ring-opacity))}.ring-violet-950{--tw-ring-opacity:1;--tw-ring-color:rgb(46 16 101/var(--tw-ring-opacity))}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-yellow-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 249 195/var(--tw-ring-opacity))}.ring-yellow-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 240 138/var(--tw-ring-opacity))}.ring-yellow-300{--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity))}.ring-yellow-400{--tw-ring-opacity:1;--tw-ring-color:rgb(250 204 21/var(--tw-ring-opacity))}.ring-yellow-50{--tw-ring-opacity:1;--tw-ring-color:rgb(254 252 232/var(--tw-ring-opacity))}.ring-yellow-500{--tw-ring-opacity:1;--tw-ring-color:rgb(234 179 8/var(--tw-ring-opacity))}.ring-yellow-600{--tw-ring-opacity:1;--tw-ring-color:rgb(202 138 4/var(--tw-ring-opacity))}.ring-yellow-700{--tw-ring-opacity:1;--tw-ring-color:rgb(161 98 7/var(--tw-ring-opacity))}.ring-yellow-800{--tw-ring-opacity:1;--tw-ring-color:rgb(133 77 14/var(--tw-ring-opacity))}.ring-yellow-900{--tw-ring-opacity:1;--tw-ring-color:rgb(113 63 18/var(--tw-ring-opacity))}.ring-yellow-950{--tw-ring-opacity:1;--tw-ring-color:rgb(66 32 6/var(--tw-ring-opacity))}.ring-zinc-100{--tw-ring-opacity:1;--tw-ring-color:rgb(244 244 245/var(--tw-ring-opacity))}.ring-zinc-200{--tw-ring-opacity:1;--tw-ring-color:rgb(228 228 231/var(--tw-ring-opacity))}.ring-zinc-300{--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity))}.ring-zinc-400{--tw-ring-opacity:1;--tw-ring-color:rgb(161 161 170/var(--tw-ring-opacity))}.ring-zinc-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 250 250/var(--tw-ring-opacity))}.ring-zinc-500{--tw-ring-opacity:1;--tw-ring-color:rgb(113 113 122/var(--tw-ring-opacity))}.ring-zinc-600{--tw-ring-opacity:1;--tw-ring-color:rgb(82 82 91/var(--tw-ring-opacity))}.ring-zinc-700{--tw-ring-opacity:1;--tw-ring-color:rgb(63 63 70/var(--tw-ring-opacity))}.ring-zinc-800{--tw-ring-opacity:1;--tw-ring-color:rgb(39 39 42/var(--tw-ring-opacity))}.ring-zinc-900{--tw-ring-opacity:1;--tw-ring-color:rgb(24 24 27/var(--tw-ring-opacity))}.ring-zinc-950{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity))}.ring-opacity-40{--tw-ring-opacity:0.4}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}.drop-shadow-md,.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.invert{--tw-invert:invert(100%)}.invert,.sepia{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia:sepia(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-grayscale{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%)}.backdrop-invert{--tw-backdrop-invert:invert(100%)}.backdrop-invert,.backdrop-sepia{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%)}.backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[appearance\:textfield\]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.\[scrollbar-width\:none\]{scrollbar-width:none}:root{--foreground-rgb:0,0,0;--background-start-rgb:255,255,255;--background-end-rgb:255,255,255;--neutral-border:#dcddeb}body{color:rgb(var(--foreground-rgb));background:linear-gradient(to bottom,transparent,rgb(var(--background-end-rgb))) rgb(var(--background-start-rgb))}.table-wrapper{overflow-x:scroll;margin:0 24px}.custom-border{border:1px solid var(--neutral-border)}.ant-dropdown-menu-item{padding:0!important}.ant-dropdown-menu-item>div{transition:all .2s ease}.ant-dropdown-menu-item[data-menu-id$=user-info]:hover{background-color:transparent!important;cursor:default}.ant-dropdown-menu-item[data-menu-id$=user-info]>div{cursor:default}.ant-dropdown-menu{padding:4px!important;min-width:280px!important}.ant-dropdown-menu-item-divider{margin:4px 0}.placeholder\:text-tremor-content::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.placeholder\:text-tremor-content::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.placeholder\:text-tremor-content-subtle::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.placeholder\:text-tremor-content-subtle::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.first\:rounded-l-\[4px\]:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}.last\:mb-0:last-child{margin-bottom:0}.last\:rounded-r-\[4px\]:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.last\:border-0:last-child{border-width:0}.last\:border-b-0:last-child{border-bottom-width:0}.focus-within\:relative:focus-within{position:relative}.hover\:border-b-2:hover{border-bottom-width:2px}.hover\:border-amber-100:hover{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}.hover\:border-amber-200:hover{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.hover\:border-amber-300:hover{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.hover\:border-amber-400:hover{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.hover\:border-amber-50:hover{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}.hover\:border-amber-500:hover{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.hover\:border-amber-600:hover{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.hover\:border-amber-700:hover{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}.hover\:border-amber-800:hover{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.hover\:border-amber-900:hover{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}.hover\:border-amber-950:hover{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}.hover\:border-blue-100:hover{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}.hover\:border-blue-200:hover{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.hover\:border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}.hover\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.hover\:border-blue-50:hover{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}.hover\:border-blue-500:hover{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.hover\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.hover\:border-blue-700:hover{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.hover\:border-blue-800:hover{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}.hover\:border-blue-900:hover{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}.hover\:border-blue-950:hover{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}.hover\:border-cyan-100:hover{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}.hover\:border-cyan-200:hover{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}.hover\:border-cyan-300:hover{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}.hover\:border-cyan-400:hover{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}.hover\:border-cyan-50:hover{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}.hover\:border-cyan-500:hover{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.hover\:border-cyan-600:hover{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}.hover\:border-cyan-700:hover{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}.hover\:border-cyan-800:hover{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}.hover\:border-cyan-900:hover{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}.hover\:border-cyan-950:hover{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}.hover\:border-emerald-100:hover{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}.hover\:border-emerald-200:hover{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.hover\:border-emerald-300:hover{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.hover\:border-emerald-400:hover{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.hover\:border-emerald-50:hover{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}.hover\:border-emerald-500:hover{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.hover\:border-emerald-600:hover{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.hover\:border-emerald-700:hover{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.hover\:border-emerald-800:hover{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.hover\:border-emerald-900:hover{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}.hover\:border-emerald-950:hover{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}.hover\:border-fuchsia-100:hover{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}.hover\:border-fuchsia-200:hover{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}.hover\:border-fuchsia-300:hover{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}.hover\:border-fuchsia-400:hover{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}.hover\:border-fuchsia-50:hover{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}.hover\:border-fuchsia-500:hover{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.hover\:border-fuchsia-600:hover{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.hover\:border-fuchsia-700:hover{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}.hover\:border-fuchsia-800:hover{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.hover\:border-fuchsia-900:hover{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}.hover\:border-fuchsia-950:hover{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}.hover\:border-gray-100:hover{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.hover\:border-gray-200:hover{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.hover\:border-gray-50:hover{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}.hover\:border-gray-500:hover{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.hover\:border-gray-600:hover{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.hover\:border-gray-700:hover{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.hover\:border-gray-800:hover{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.hover\:border-gray-900:hover{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.hover\:border-gray-950:hover{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}.hover\:border-green-100:hover{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}.hover\:border-green-200:hover{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}.hover\:border-green-300:hover{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}.hover\:border-green-400:hover{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.hover\:border-green-50:hover{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}.hover\:border-green-500:hover{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.hover\:border-green-600:hover{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.hover\:border-green-700:hover{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}.hover\:border-green-800:hover{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}.hover\:border-green-900:hover{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.hover\:border-green-950:hover{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}.hover\:border-indigo-100:hover{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}.hover\:border-indigo-200:hover{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}.hover\:border-indigo-300:hover{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.hover\:border-indigo-400:hover{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.hover\:border-indigo-50:hover{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}.hover\:border-indigo-500:hover{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.hover\:border-indigo-600:hover{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.hover\:border-indigo-700:hover{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.hover\:border-indigo-800:hover{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.hover\:border-indigo-900:hover{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}.hover\:border-indigo-950:hover{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.hover\:border-lime-100:hover{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}.hover\:border-lime-200:hover{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}.hover\:border-lime-300:hover{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}.hover\:border-lime-400:hover{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}.hover\:border-lime-50:hover{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}.hover\:border-lime-500:hover{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.hover\:border-lime-600:hover{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}.hover\:border-lime-700:hover{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}.hover\:border-lime-800:hover{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}.hover\:border-lime-900:hover{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}.hover\:border-lime-950:hover{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}.hover\:border-neutral-100:hover{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}.hover\:border-neutral-200:hover{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.hover\:border-neutral-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.hover\:border-neutral-400:hover{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.hover\:border-neutral-50:hover{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.hover\:border-neutral-500:hover{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}.hover\:border-neutral-600:hover{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.hover\:border-neutral-700:hover{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.hover\:border-neutral-800:hover{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}.hover\:border-neutral-900:hover{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}.hover\:border-neutral-950:hover{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}.hover\:border-orange-100:hover{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}.hover\:border-orange-200:hover{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}.hover\:border-orange-300:hover{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.hover\:border-orange-400:hover{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.hover\:border-orange-50:hover{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}.hover\:border-orange-500:hover{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.hover\:border-orange-600:hover{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.hover\:border-orange-700:hover{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}.hover\:border-orange-800:hover{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}.hover\:border-orange-900:hover{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}.hover\:border-orange-950:hover{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}.hover\:border-pink-100:hover{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}.hover\:border-pink-200:hover{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}.hover\:border-pink-300:hover{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}.hover\:border-pink-400:hover{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}.hover\:border-pink-50:hover{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}.hover\:border-pink-500:hover{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.hover\:border-pink-600:hover{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.hover\:border-pink-700:hover{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}.hover\:border-pink-800:hover{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}.hover\:border-pink-900:hover{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}.hover\:border-pink-950:hover{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}.hover\:border-purple-100:hover{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}.hover\:border-purple-200:hover{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.hover\:border-purple-300:hover{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.hover\:border-purple-400:hover{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}.hover\:border-purple-50:hover{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}.hover\:border-purple-500:hover{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.hover\:border-purple-600:hover{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.hover\:border-purple-700:hover{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}.hover\:border-purple-800:hover{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}.hover\:border-purple-900:hover{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}.hover\:border-purple-950:hover{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}.hover\:border-red-100:hover{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}.hover\:border-red-200:hover{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.hover\:border-red-300:hover{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.hover\:border-red-400:hover{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.hover\:border-red-50:hover{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}.hover\:border-red-500:hover{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.hover\:border-red-600:hover{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.hover\:border-red-700:hover{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.hover\:border-red-800:hover{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}.hover\:border-red-900:hover{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}.hover\:border-red-950:hover{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}.hover\:border-rose-100:hover{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}.hover\:border-rose-200:hover{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.hover\:border-rose-300:hover{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.hover\:border-rose-400:hover{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.hover\:border-rose-50:hover{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}.hover\:border-rose-500:hover{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}.hover\:border-rose-600:hover{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.hover\:border-rose-700:hover{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}.hover\:border-rose-800:hover{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.hover\:border-rose-900:hover{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}.hover\:border-rose-950:hover{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}.hover\:border-sky-100:hover{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.hover\:border-sky-200:hover{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.hover\:border-sky-300:hover{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.hover\:border-sky-400:hover{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.hover\:border-sky-50:hover{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}.hover\:border-sky-500:hover{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.hover\:border-sky-600:hover{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.hover\:border-sky-700:hover{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.hover\:border-sky-800:hover{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.hover\:border-sky-900:hover{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.hover\:border-sky-950:hover{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}.hover\:border-slate-100:hover{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.hover\:border-slate-200:hover{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.hover\:border-slate-300:hover{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.hover\:border-slate-400:hover{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.hover\:border-slate-50:hover{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.hover\:border-slate-500:hover{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.hover\:border-slate-600:hover{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.hover\:border-slate-700:hover{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.hover\:border-slate-800:hover{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.hover\:border-slate-900:hover{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.hover\:border-slate-950:hover{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}.hover\:border-stone-100:hover{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}.hover\:border-stone-200:hover{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}.hover\:border-stone-300:hover{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.hover\:border-stone-400:hover{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}.hover\:border-stone-50:hover{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}.hover\:border-stone-500:hover{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}.hover\:border-stone-600:hover{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}.hover\:border-stone-700:hover{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}.hover\:border-stone-800:hover{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}.hover\:border-stone-900:hover{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}.hover\:border-stone-950:hover{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}.hover\:border-teal-100:hover{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}.hover\:border-teal-200:hover{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}.hover\:border-teal-300:hover{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}.hover\:border-teal-400:hover{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.hover\:border-teal-50:hover{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}.hover\:border-teal-500:hover{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.hover\:border-teal-600:hover{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.hover\:border-teal-700:hover{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}.hover\:border-teal-800:hover{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}.hover\:border-teal-900:hover{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}.hover\:border-teal-950:hover{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}.hover\:border-tremor-brand-emphasis:hover{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.hover\:border-tremor-content:hover{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.hover\:border-violet-100:hover{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}.hover\:border-violet-200:hover{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}.hover\:border-violet-300:hover{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.hover\:border-violet-400:hover{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.hover\:border-violet-50:hover{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}.hover\:border-violet-500:hover{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}.hover\:border-violet-600:hover{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}.hover\:border-violet-700:hover{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}.hover\:border-violet-800:hover{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}.hover\:border-violet-900:hover{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}.hover\:border-violet-950:hover{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}.hover\:border-yellow-100:hover{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}.hover\:border-yellow-200:hover{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}.hover\:border-yellow-300:hover{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.hover\:border-yellow-400:hover{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.hover\:border-yellow-50:hover{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}.hover\:border-yellow-500:hover{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}.hover\:border-yellow-600:hover{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}.hover\:border-yellow-700:hover{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}.hover\:border-yellow-800:hover{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.hover\:border-yellow-900:hover{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}.hover\:border-yellow-950:hover{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}.hover\:border-zinc-100:hover{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.hover\:border-zinc-200:hover{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.hover\:border-zinc-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.hover\:border-zinc-400:hover{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.hover\:border-zinc-50:hover{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.hover\:border-zinc-500:hover{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}.hover\:border-zinc-600:hover{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.hover\:border-zinc-700:hover{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.hover\:border-zinc-800:hover{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.hover\:border-zinc-900:hover{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}.hover\:border-zinc-950:hover{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}.hover\:\!bg-blue-700:hover{--tw-bg-opacity:1!important;background-color:rgb(29 78 216/var(--tw-bg-opacity))!important}.hover\:bg-amber-100:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.hover\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.hover\:bg-amber-300:hover{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.hover\:bg-amber-400:hover{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.hover\:bg-amber-50:hover{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.hover\:bg-amber-500:hover{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.hover\:bg-amber-600:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.hover\:bg-amber-700:hover{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.hover\:bg-amber-800:hover{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.hover\:bg-amber-900:hover{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.hover\:bg-amber-950:hover{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.hover\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.hover\:bg-blue-300:hover{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.hover\:bg-blue-400:hover{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.hover\:bg-blue-900:hover{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.hover\:bg-blue-950:hover{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}.hover\:bg-cyan-100:hover{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.hover\:bg-cyan-200:hover{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.hover\:bg-cyan-300:hover{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}.hover\:bg-cyan-400:hover{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.hover\:bg-cyan-50:hover{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}.hover\:bg-cyan-500:hover{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}.hover\:bg-cyan-600:hover{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.hover\:bg-cyan-700:hover{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}.hover\:bg-cyan-800:hover{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.hover\:bg-cyan-900:hover{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}.hover\:bg-cyan-950:hover{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}.hover\:bg-emerald-100:hover{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.hover\:bg-emerald-200:hover{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.hover\:bg-emerald-300:hover{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.hover\:bg-emerald-400:hover{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.hover\:bg-emerald-50:hover{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.hover\:bg-emerald-500:hover{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.hover\:bg-emerald-600:hover{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.hover\:bg-emerald-700:hover{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.hover\:bg-emerald-800:hover{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.hover\:bg-emerald-900:hover{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.hover\:bg-emerald-950:hover{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}.hover\:bg-fuchsia-100:hover{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.hover\:bg-fuchsia-200:hover{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}.hover\:bg-fuchsia-300:hover{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}.hover\:bg-fuchsia-400:hover{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}.hover\:bg-fuchsia-50:hover{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}.hover\:bg-fuchsia-500:hover{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}.hover\:bg-fuchsia-600:hover{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.hover\:bg-fuchsia-700:hover{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.hover\:bg-fuchsia-800:hover{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.hover\:bg-fuchsia-900:hover{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}.hover\:bg-fuchsia-950:hover{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.hover\:bg-gray-400:hover{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.hover\:bg-gray-900:hover{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.hover\:bg-gray-950:hover{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.hover\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.hover\:bg-green-200:hover{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.hover\:bg-green-300:hover{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.hover\:bg-green-400:hover{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.hover\:bg-green-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.hover\:bg-green-500:hover{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.hover\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.hover\:bg-green-800:hover{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.hover\:bg-green-900:hover{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.hover\:bg-green-950:hover{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}.hover\:bg-indigo-100:hover{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.hover\:bg-indigo-200:hover{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.hover\:bg-indigo-300:hover{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}.hover\:bg-indigo-400:hover{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.hover\:bg-indigo-50:hover{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.hover\:bg-indigo-500:hover{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.hover\:bg-indigo-600:hover{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-indigo-800:hover{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.hover\:bg-indigo-900:hover{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.hover\:bg-indigo-950:hover{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.hover\:bg-lime-100:hover{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.hover\:bg-lime-200:hover{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.hover\:bg-lime-300:hover{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}.hover\:bg-lime-400:hover{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}.hover\:bg-lime-50:hover{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}.hover\:bg-lime-500:hover{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.hover\:bg-lime-600:hover{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.hover\:bg-lime-700:hover{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.hover\:bg-lime-800:hover{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.hover\:bg-lime-900:hover{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}.hover\:bg-lime-950:hover{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}.hover\:bg-neutral-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.hover\:bg-neutral-200:hover{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.hover\:bg-neutral-300:hover{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.hover\:bg-neutral-400:hover{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}.hover\:bg-neutral-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:bg-neutral-500:hover{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.hover\:bg-neutral-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.hover\:bg-neutral-700:hover{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.hover\:bg-neutral-800:hover{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.hover\:bg-neutral-900:hover{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.hover\:bg-neutral-950:hover{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.hover\:bg-orange-100:hover{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.hover\:bg-orange-200:hover{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.hover\:bg-orange-300:hover{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.hover\:bg-orange-400:hover{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.hover\:bg-orange-50:hover{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.hover\:bg-orange-500:hover{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.hover\:bg-orange-600:hover{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.hover\:bg-orange-700:hover{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.hover\:bg-orange-800:hover{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.hover\:bg-orange-900:hover{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}.hover\:bg-orange-950:hover{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}.hover\:bg-pink-100:hover{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.hover\:bg-pink-200:hover{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}.hover\:bg-pink-300:hover{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}.hover\:bg-pink-400:hover{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.hover\:bg-pink-50:hover{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.hover\:bg-pink-500:hover{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.hover\:bg-pink-600:hover{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.hover\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.hover\:bg-pink-800:hover{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.hover\:bg-pink-900:hover{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}.hover\:bg-pink-950:hover{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}.hover\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.hover\:bg-purple-200:hover{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}.hover\:bg-purple-300:hover{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}.hover\:bg-purple-400:hover{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}.hover\:bg-purple-50:hover{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.hover\:bg-purple-500:hover{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.hover\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.hover\:bg-purple-700:hover{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.hover\:bg-purple-800:hover{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.hover\:bg-purple-900:hover{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}.hover\:bg-purple-950:hover{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}.hover\:bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.hover\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.hover\:bg-red-300:hover{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.hover\:bg-red-400:hover{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.hover\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.hover\:bg-red-800:hover{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.hover\:bg-red-950:hover{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}.hover\:bg-rose-100:hover{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.hover\:bg-rose-200:hover{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.hover\:bg-rose-300:hover{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}.hover\:bg-rose-400:hover{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.hover\:bg-rose-50:hover{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.hover\:bg-rose-500:hover{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.hover\:bg-rose-600:hover{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.hover\:bg-rose-700:hover{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.hover\:bg-rose-800:hover{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.hover\:bg-rose-900:hover{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.hover\:bg-rose-950:hover{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}.hover\:bg-sky-100:hover{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.hover\:bg-sky-200:hover{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.hover\:bg-sky-300:hover{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.hover\:bg-sky-400:hover{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.hover\:bg-sky-50:hover{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.hover\:bg-sky-500:hover{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.hover\:bg-sky-600:hover{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.hover\:bg-sky-700:hover{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.hover\:bg-sky-800:hover{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.hover\:bg-sky-900:hover{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.hover\:bg-sky-950:hover{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}.hover\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\:bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\:bg-slate-300:hover{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.hover\:bg-slate-400:hover{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\:bg-slate-500:hover{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.hover\:bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.hover\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.hover\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.hover\:bg-slate-900:hover{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.hover\:bg-slate-950:hover{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.hover\:bg-stone-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.hover\:bg-stone-200:hover{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.hover\:bg-stone-300:hover{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}.hover\:bg-stone-400:hover{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}.hover\:bg-stone-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}.hover\:bg-stone-500:hover{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}.hover\:bg-stone-600:hover{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}.hover\:bg-stone-700:hover{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}.hover\:bg-stone-800:hover{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}.hover\:bg-stone-900:hover{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}.hover\:bg-stone-950:hover{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}.hover\:bg-teal-100:hover{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.hover\:bg-teal-200:hover{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}.hover\:bg-teal-300:hover{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}.hover\:bg-teal-400:hover{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.hover\:bg-teal-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}.hover\:bg-teal-500:hover{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.hover\:bg-teal-600:hover{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.hover\:bg-teal-700:hover{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.hover\:bg-teal-800:hover{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.hover\:bg-teal-900:hover{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}.hover\:bg-teal-950:hover{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}.hover\:bg-tremor-background-muted:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:bg-tremor-background-subtle:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-tremor-brand-emphasis:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-violet-100:hover{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.hover\:bg-violet-200:hover{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.hover\:bg-violet-300:hover{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.hover\:bg-violet-400:hover{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}.hover\:bg-violet-50:hover{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.hover\:bg-violet-500:hover{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}.hover\:bg-violet-600:hover{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.hover\:bg-violet-700:hover{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}.hover\:bg-violet-800:hover{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.hover\:bg-violet-900:hover{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}.hover\:bg-violet-950:hover{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}.hover\:bg-yellow-100:hover{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.hover\:bg-yellow-200:hover{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.hover\:bg-yellow-300:hover{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.hover\:bg-yellow-400:hover{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.hover\:bg-yellow-50:hover{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.hover\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.hover\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.hover\:bg-yellow-700:hover{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}.hover\:bg-yellow-800:hover{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}.hover\:bg-yellow-900:hover{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.hover\:bg-yellow-950:hover{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}.hover\:bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.hover\:bg-zinc-200:hover{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.hover\:bg-zinc-300:hover{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}.hover\:bg-zinc-400:hover{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.hover\:bg-zinc-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:bg-zinc-500:hover{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}.hover\:bg-zinc-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.hover\:bg-zinc-700:hover{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.hover\:bg-zinc-800:hover{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.hover\:bg-zinc-900:hover{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.hover\:bg-zinc-950:hover{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}.hover\:bg-opacity-20:hover{--tw-bg-opacity:0.2}.hover\:text-amber-100:hover{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.hover\:text-amber-200:hover{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.hover\:text-amber-300:hover{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.hover\:text-amber-400:hover{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.hover\:text-amber-50:hover{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}.hover\:text-amber-500:hover{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.hover\:text-amber-600:hover{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.hover\:text-amber-700:hover{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.hover\:text-amber-800:hover{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.hover\:text-amber-900:hover{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.hover\:text-amber-950:hover{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}.hover\:text-blue-100:hover{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}.hover\:text-blue-200:hover{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.hover\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.hover\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.hover\:text-blue-50:hover{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.hover\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.hover\:text-blue-900:hover{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.hover\:text-blue-950:hover{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}.hover\:text-cyan-100:hover{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.hover\:text-cyan-200:hover{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}.hover\:text-cyan-300:hover{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}.hover\:text-cyan-400:hover{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.hover\:text-cyan-50:hover{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}.hover\:text-cyan-500:hover{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.hover\:text-cyan-600:hover{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.hover\:text-cyan-700:hover{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.hover\:text-cyan-800:hover{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}.hover\:text-cyan-900:hover{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.hover\:text-cyan-950:hover{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}.hover\:text-emerald-100:hover{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.hover\:text-emerald-200:hover{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}.hover\:text-emerald-300:hover{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.hover\:text-emerald-400:hover{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.hover\:text-emerald-50:hover{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}.hover\:text-emerald-500:hover{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.hover\:text-emerald-600:hover{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.hover\:text-emerald-700:hover{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.hover\:text-emerald-800:hover{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.hover\:text-emerald-900:hover{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}.hover\:text-emerald-950:hover{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}.hover\:text-fuchsia-100:hover{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}.hover\:text-fuchsia-200:hover{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.hover\:text-fuchsia-300:hover{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}.hover\:text-fuchsia-400:hover{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}.hover\:text-fuchsia-50:hover{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}.hover\:text-fuchsia-500:hover{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}.hover\:text-fuchsia-600:hover{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.hover\:text-fuchsia-700:hover{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.hover\:text-fuchsia-800:hover{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.hover\:text-fuchsia-900:hover{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}.hover\:text-fuchsia-950:hover{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}.hover\:text-gray-100:hover{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.hover\:text-gray-400:hover{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.hover\:text-gray-50:hover{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.hover\:text-gray-950:hover{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.hover\:text-green-100:hover{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.hover\:text-green-200:hover{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.hover\:text-green-300:hover{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.hover\:text-green-400:hover{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.hover\:text-green-50:hover{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}.hover\:text-green-500:hover{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.hover\:text-green-600:hover{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.hover\:text-green-700:hover{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.hover\:text-green-800:hover{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.hover\:text-green-900:hover{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}.hover\:text-green-950:hover{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}.hover\:text-indigo-100:hover{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}.hover\:text-indigo-200:hover{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.hover\:text-indigo-300:hover{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.hover\:text-indigo-400:hover{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.hover\:text-indigo-50:hover{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}.hover\:text-indigo-500:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.hover\:text-indigo-600:hover{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.hover\:text-indigo-700:hover{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.hover\:text-indigo-800:hover{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.hover\:text-indigo-900:hover{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.hover\:text-indigo-950:hover{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.hover\:text-lime-100:hover{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}.hover\:text-lime-200:hover{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}.hover\:text-lime-300:hover{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}.hover\:text-lime-400:hover{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}.hover\:text-lime-50:hover{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}.hover\:text-lime-500:hover{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}.hover\:text-lime-600:hover{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.hover\:text-lime-700:hover{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}.hover\:text-lime-800:hover{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}.hover\:text-lime-900:hover{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.hover\:text-lime-950:hover{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}.hover\:text-neutral-100:hover{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.hover\:text-neutral-200:hover{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.hover\:text-neutral-300:hover{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.hover\:text-neutral-400:hover{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.hover\:text-neutral-50:hover{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.hover\:text-neutral-500:hover{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.hover\:text-neutral-600:hover{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.hover\:text-neutral-700:hover{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.hover\:text-neutral-800:hover{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.hover\:text-neutral-900:hover{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.hover\:text-neutral-950:hover{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}.hover\:text-orange-100:hover{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}.hover\:text-orange-200:hover{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.hover\:text-orange-300:hover{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.hover\:text-orange-400:hover{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.hover\:text-orange-50:hover{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}.hover\:text-orange-500:hover{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.hover\:text-orange-600:hover{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.hover\:text-orange-700:hover{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.hover\:text-orange-800:hover{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.hover\:text-orange-900:hover{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}.hover\:text-orange-950:hover{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}.hover\:text-pink-100:hover{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}.hover\:text-pink-200:hover{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.hover\:text-pink-300:hover{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}.hover\:text-pink-400:hover{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}.hover\:text-pink-50:hover{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}.hover\:text-pink-500:hover{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.hover\:text-pink-600:hover{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.hover\:text-pink-700:hover{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.hover\:text-pink-800:hover{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.hover\:text-pink-900:hover{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}.hover\:text-pink-950:hover{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}.hover\:text-purple-100:hover{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}.hover\:text-purple-200:hover{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}.hover\:text-purple-300:hover{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.hover\:text-purple-400:hover{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.hover\:text-purple-50:hover{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}.hover\:text-purple-500:hover{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.hover\:text-purple-600:hover{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.hover\:text-purple-700:hover{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.hover\:text-purple-800:hover{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.hover\:text-purple-900:hover{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}.hover\:text-purple-950:hover{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}.hover\:text-red-100:hover{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}.hover\:text-red-200:hover{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.hover\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.hover\:text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.hover\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.hover\:text-red-800:hover{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.hover\:text-red-900:hover{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.hover\:text-red-950:hover{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}.hover\:text-rose-100:hover{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.hover\:text-rose-200:hover{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.hover\:text-rose-300:hover{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.hover\:text-rose-400:hover{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.hover\:text-rose-50:hover{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}.hover\:text-rose-500:hover{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.hover\:text-rose-600:hover{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.hover\:text-rose-700:hover{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.hover\:text-rose-800:hover{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.hover\:text-rose-900:hover{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.hover\:text-rose-950:hover{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}.hover\:text-sky-100:hover{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.hover\:text-sky-200:hover{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.hover\:text-sky-300:hover{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.hover\:text-sky-400:hover{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.hover\:text-sky-50:hover{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}.hover\:text-sky-500:hover{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.hover\:text-sky-600:hover{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.hover\:text-sky-700:hover{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.hover\:text-sky-800:hover{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.hover\:text-sky-900:hover{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}.hover\:text-sky-950:hover{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}.hover\:text-slate-100:hover{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.hover\:text-slate-200:hover{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.hover\:text-slate-300:hover{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.hover\:text-slate-400:hover{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.hover\:text-slate-50:hover{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.hover\:text-slate-500:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.hover\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.hover\:text-slate-800:hover{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.hover\:text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.hover\:text-slate-950:hover{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.hover\:text-stone-100:hover{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}.hover\:text-stone-200:hover{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}.hover\:text-stone-300:hover{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}.hover\:text-stone-400:hover{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.hover\:text-stone-50:hover{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}.hover\:text-stone-500:hover{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.hover\:text-stone-600:hover{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.hover\:text-stone-700:hover{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}.hover\:text-stone-800:hover{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}.hover\:text-stone-900:hover{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}.hover\:text-stone-950:hover{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}.hover\:text-teal-100:hover{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}.hover\:text-teal-200:hover{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.hover\:text-teal-300:hover{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}.hover\:text-teal-400:hover{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}.hover\:text-teal-50:hover{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}.hover\:text-teal-500:hover{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}.hover\:text-teal-600:hover{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.hover\:text-teal-700:hover{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.hover\:text-teal-800:hover{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.hover\:text-teal-900:hover{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}.hover\:text-teal-950:hover{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}.hover\:text-tremor-brand-emphasis:hover{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.hover\:text-tremor-content:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.hover\:text-tremor-content-emphasis:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.hover\:text-violet-100:hover{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}.hover\:text-violet-200:hover{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.hover\:text-violet-300:hover{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.hover\:text-violet-400:hover{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.hover\:text-violet-50:hover{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}.hover\:text-violet-500:hover{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.hover\:text-violet-600:hover{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.hover\:text-violet-700:hover{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.hover\:text-violet-800:hover{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}.hover\:text-violet-900:hover{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}.hover\:text-violet-950:hover{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}.hover\:text-yellow-100:hover{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}.hover\:text-yellow-200:hover{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}.hover\:text-yellow-300:hover{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.hover\:text-yellow-400:hover{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.hover\:text-yellow-50:hover{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}.hover\:text-yellow-500:hover{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.hover\:text-yellow-600:hover{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.hover\:text-yellow-700:hover{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.hover\:text-yellow-800:hover{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.hover\:text-yellow-900:hover{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}.hover\:text-yellow-950:hover{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}.hover\:text-zinc-100:hover{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.hover\:text-zinc-200:hover{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.hover\:text-zinc-300:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.hover\:text-zinc-400:hover{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.hover\:text-zinc-50:hover{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.hover\:text-zinc-500:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.hover\:text-zinc-600:hover{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.hover\:text-zinc-700:hover{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.hover\:text-zinc-800:hover{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.hover\:text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.hover\:text-zinc-950:hover{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.hover\:shadow-md:hover,.hover\:shadow-sm:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.focus\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.focus\:border-transparent:focus{border-color:transparent}.focus\:border-tremor-brand-subtle:focus{--tw-border-opacity:1;border-color:rgb(142 145 235/var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-1:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.focus\:ring-red-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(254 202 202/var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.focus\:ring-tremor-brand-muted:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(134 136 239/var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:\!bg-gray-300:disabled{--tw-bg-opacity:1!important;background-color:rgb(209 213 219/var(--tw-bg-opacity))!important}.disabled\:bg-indigo-400:disabled{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.disabled\:\!text-gray-500:disabled{--tw-text-opacity:1!important;color:rgb(107 114 128/var(--tw-text-opacity))!important}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.group:hover .group-hover\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.group:hover .group-hover\:text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.group:hover .group-hover\:opacity-100{opacity:1}.group:active .group-active\:scale-95{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.aria-selected\:\!bg-tremor-background-subtle[aria-selected=true]{--tw-bg-opacity:1!important;background-color:rgb(243 244 246/var(--tw-bg-opacity))!important}.aria-selected\:bg-tremor-background-emphasis[aria-selected=true]{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.aria-selected\:\!text-tremor-content[aria-selected=true]{--tw-text-opacity:1!important;color:rgb(107 114 128/var(--tw-text-opacity))!important}.aria-selected\:text-dark-tremor-brand-inverted[aria-selected=true]{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.aria-selected\:text-tremor-brand-inverted[aria-selected=true],.aria-selected\:text-tremor-content-inverted[aria-selected=true]{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.ui-selected\:border-b-2[data-headlessui-state~=selected]{border-bottom-width:2px}.ui-selected\:border-amber-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}.ui-selected\:border-amber-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.ui-selected\:border-amber-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.ui-selected\:border-amber-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.ui-selected\:border-amber-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}.ui-selected\:border-amber-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.ui-selected\:border-amber-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.ui-selected\:border-amber-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}.ui-selected\:border-amber-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.ui-selected\:border-amber-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}.ui-selected\:border-amber-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}.ui-selected\:border-blue-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}.ui-selected\:border-blue-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.ui-selected\:border-blue-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}.ui-selected\:border-blue-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.ui-selected\:border-blue-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}.ui-selected\:border-blue-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.ui-selected\:border-blue-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.ui-selected\:border-blue-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.ui-selected\:border-blue-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}.ui-selected\:border-blue-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}.ui-selected\:border-blue-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}.ui-selected\:border-cyan-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}.ui-selected\:border-cyan-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}.ui-selected\:border-cyan-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}.ui-selected\:border-cyan-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}.ui-selected\:border-cyan-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}.ui-selected\:border-cyan-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.ui-selected\:border-cyan-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}.ui-selected\:border-cyan-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}.ui-selected\:border-cyan-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}.ui-selected\:border-cyan-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}.ui-selected\:border-cyan-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}.ui-selected\:border-emerald-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}.ui-selected\:border-emerald-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.ui-selected\:border-emerald-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.ui-selected\:border-emerald-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.ui-selected\:border-emerald-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}.ui-selected\:border-emerald-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.ui-selected\:border-emerald-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.ui-selected\:border-emerald-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.ui-selected\:border-emerald-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.ui-selected\:border-emerald-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}.ui-selected\:border-emerald-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}.ui-selected\:border-gray-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.ui-selected\:border-gray-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.ui-selected\:border-gray-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.ui-selected\:border-gray-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.ui-selected\:border-gray-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}.ui-selected\:border-gray-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.ui-selected\:border-gray-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.ui-selected\:border-gray-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.ui-selected\:border-gray-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.ui-selected\:border-gray-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.ui-selected\:border-gray-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}.ui-selected\:border-green-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}.ui-selected\:border-green-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}.ui-selected\:border-green-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}.ui-selected\:border-green-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.ui-selected\:border-green-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}.ui-selected\:border-green-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.ui-selected\:border-green-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.ui-selected\:border-green-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}.ui-selected\:border-green-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}.ui-selected\:border-green-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.ui-selected\:border-green-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}.ui-selected\:border-indigo-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}.ui-selected\:border-indigo-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}.ui-selected\:border-indigo-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.ui-selected\:border-indigo-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.ui-selected\:border-indigo-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}.ui-selected\:border-indigo-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.ui-selected\:border-indigo-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.ui-selected\:border-indigo-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.ui-selected\:border-indigo-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.ui-selected\:border-indigo-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}.ui-selected\:border-indigo-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.ui-selected\:border-lime-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}.ui-selected\:border-lime-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}.ui-selected\:border-lime-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}.ui-selected\:border-lime-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}.ui-selected\:border-lime-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}.ui-selected\:border-lime-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.ui-selected\:border-lime-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}.ui-selected\:border-lime-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}.ui-selected\:border-lime-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}.ui-selected\:border-lime-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}.ui-selected\:border-lime-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}.ui-selected\:border-neutral-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}.ui-selected\:border-neutral-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.ui-selected\:border-neutral-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.ui-selected\:border-neutral-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.ui-selected\:border-neutral-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.ui-selected\:border-neutral-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}.ui-selected\:border-neutral-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.ui-selected\:border-neutral-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.ui-selected\:border-neutral-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}.ui-selected\:border-neutral-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}.ui-selected\:border-neutral-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}.ui-selected\:border-orange-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}.ui-selected\:border-orange-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}.ui-selected\:border-orange-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.ui-selected\:border-orange-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.ui-selected\:border-orange-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}.ui-selected\:border-orange-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.ui-selected\:border-orange-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.ui-selected\:border-orange-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}.ui-selected\:border-orange-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}.ui-selected\:border-orange-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}.ui-selected\:border-orange-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}.ui-selected\:border-pink-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}.ui-selected\:border-pink-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}.ui-selected\:border-pink-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}.ui-selected\:border-pink-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}.ui-selected\:border-pink-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}.ui-selected\:border-pink-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.ui-selected\:border-pink-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.ui-selected\:border-pink-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}.ui-selected\:border-pink-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}.ui-selected\:border-pink-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}.ui-selected\:border-pink-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}.ui-selected\:border-purple-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}.ui-selected\:border-purple-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.ui-selected\:border-purple-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.ui-selected\:border-purple-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}.ui-selected\:border-purple-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}.ui-selected\:border-purple-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.ui-selected\:border-purple-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.ui-selected\:border-purple-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}.ui-selected\:border-purple-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}.ui-selected\:border-purple-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}.ui-selected\:border-purple-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}.ui-selected\:border-red-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}.ui-selected\:border-red-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.ui-selected\:border-red-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.ui-selected\:border-red-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.ui-selected\:border-red-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}.ui-selected\:border-red-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.ui-selected\:border-red-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.ui-selected\:border-red-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.ui-selected\:border-red-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}.ui-selected\:border-red-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}.ui-selected\:border-red-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}.ui-selected\:border-rose-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}.ui-selected\:border-rose-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.ui-selected\:border-rose-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.ui-selected\:border-rose-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.ui-selected\:border-rose-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}.ui-selected\:border-rose-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}.ui-selected\:border-rose-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.ui-selected\:border-rose-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}.ui-selected\:border-rose-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.ui-selected\:border-rose-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}.ui-selected\:border-rose-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}.ui-selected\:border-sky-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.ui-selected\:border-sky-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.ui-selected\:border-sky-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.ui-selected\:border-sky-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.ui-selected\:border-sky-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}.ui-selected\:border-sky-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.ui-selected\:border-sky-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.ui-selected\:border-sky-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.ui-selected\:border-sky-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.ui-selected\:border-sky-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.ui-selected\:border-sky-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}.ui-selected\:border-slate-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.ui-selected\:border-slate-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.ui-selected\:border-slate-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.ui-selected\:border-slate-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.ui-selected\:border-slate-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.ui-selected\:border-slate-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.ui-selected\:border-slate-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.ui-selected\:border-slate-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.ui-selected\:border-slate-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.ui-selected\:border-slate-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.ui-selected\:border-slate-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}.ui-selected\:border-stone-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}.ui-selected\:border-stone-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}.ui-selected\:border-stone-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.ui-selected\:border-stone-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}.ui-selected\:border-stone-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}.ui-selected\:border-stone-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}.ui-selected\:border-stone-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}.ui-selected\:border-stone-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}.ui-selected\:border-stone-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}.ui-selected\:border-stone-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}.ui-selected\:border-stone-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}.ui-selected\:border-teal-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}.ui-selected\:border-teal-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}.ui-selected\:border-teal-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}.ui-selected\:border-teal-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.ui-selected\:border-teal-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}.ui-selected\:border-teal-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.ui-selected\:border-teal-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.ui-selected\:border-teal-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}.ui-selected\:border-teal-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}.ui-selected\:border-teal-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}.ui-selected\:border-teal-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}.ui-selected\:border-tremor-border[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.ui-selected\:border-tremor-brand[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.ui-selected\:border-violet-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}.ui-selected\:border-violet-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}.ui-selected\:border-violet-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.ui-selected\:border-violet-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.ui-selected\:border-violet-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}.ui-selected\:border-violet-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}.ui-selected\:border-violet-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}.ui-selected\:border-violet-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}.ui-selected\:border-violet-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}.ui-selected\:border-violet-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}.ui-selected\:border-violet-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}.ui-selected\:border-yellow-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}.ui-selected\:border-yellow-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}.ui-selected\:border-yellow-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.ui-selected\:border-yellow-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.ui-selected\:border-yellow-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}.ui-selected\:border-yellow-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}.ui-selected\:border-yellow-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}.ui-selected\:border-yellow-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}.ui-selected\:border-yellow-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.ui-selected\:border-yellow-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}.ui-selected\:border-yellow-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}.ui-selected\:border-zinc-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.ui-selected\:border-zinc-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.ui-selected\:border-zinc-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.ui-selected\:border-zinc-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.ui-selected\:border-zinc-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.ui-selected\:border-zinc-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}.ui-selected\:border-zinc-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.ui-selected\:border-zinc-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.ui-selected\:border-zinc-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.ui-selected\:border-zinc-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}.ui-selected\:border-zinc-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}.ui-selected\:bg-amber-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.ui-selected\:bg-amber-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.ui-selected\:bg-amber-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.ui-selected\:bg-amber-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.ui-selected\:bg-amber-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.ui-selected\:bg-amber-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.ui-selected\:bg-amber-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.ui-selected\:bg-amber-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.ui-selected\:bg-amber-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.ui-selected\:bg-amber-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.ui-selected\:bg-amber-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}.ui-selected\:bg-blue-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.ui-selected\:bg-blue-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.ui-selected\:bg-blue-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.ui-selected\:bg-blue-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.ui-selected\:bg-blue-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.ui-selected\:bg-blue-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.ui-selected\:bg-blue-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.ui-selected\:bg-blue-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.ui-selected\:bg-blue-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.ui-selected\:bg-blue-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.ui-selected\:bg-blue-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}.ui-selected\:bg-gray-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.ui-selected\:bg-gray-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.ui-selected\:bg-gray-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.ui-selected\:bg-gray-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.ui-selected\:bg-gray-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ui-selected\:bg-gray-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.ui-selected\:bg-gray-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.ui-selected\:bg-gray-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.ui-selected\:bg-gray-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.ui-selected\:bg-gray-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.ui-selected\:bg-gray-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.ui-selected\:bg-green-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.ui-selected\:bg-green-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.ui-selected\:bg-green-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.ui-selected\:bg-green-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.ui-selected\:bg-green-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.ui-selected\:bg-green-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.ui-selected\:bg-green-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.ui-selected\:bg-green-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.ui-selected\:bg-green-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.ui-selected\:bg-green-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.ui-selected\:bg-green-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.ui-selected\:bg-lime-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.ui-selected\:bg-lime-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.ui-selected\:bg-lime-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}.ui-selected\:bg-lime-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}.ui-selected\:bg-lime-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}.ui-selected\:bg-lime-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.ui-selected\:bg-lime-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.ui-selected\:bg-lime-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.ui-selected\:bg-lime-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.ui-selected\:bg-lime-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}.ui-selected\:bg-lime-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.ui-selected\:bg-orange-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.ui-selected\:bg-orange-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.ui-selected\:bg-orange-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.ui-selected\:bg-orange-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.ui-selected\:bg-orange-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.ui-selected\:bg-orange-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.ui-selected\:bg-orange-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.ui-selected\:bg-orange-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.ui-selected\:bg-orange-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.ui-selected\:bg-orange-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}.ui-selected\:bg-orange-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}.ui-selected\:bg-pink-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.ui-selected\:bg-pink-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}.ui-selected\:bg-pink-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}.ui-selected\:bg-pink-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.ui-selected\:bg-pink-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.ui-selected\:bg-pink-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.ui-selected\:bg-pink-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.ui-selected\:bg-pink-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.ui-selected\:bg-pink-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.ui-selected\:bg-pink-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}.ui-selected\:bg-pink-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}.ui-selected\:bg-purple-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.ui-selected\:bg-purple-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}.ui-selected\:bg-purple-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}.ui-selected\:bg-purple-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}.ui-selected\:bg-purple-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.ui-selected\:bg-purple-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.ui-selected\:bg-purple-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.ui-selected\:bg-purple-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.ui-selected\:bg-purple-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.ui-selected\:bg-purple-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}.ui-selected\:bg-purple-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}.ui-selected\:bg-red-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.ui-selected\:bg-red-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.ui-selected\:bg-red-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.ui-selected\:bg-red-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.ui-selected\:bg-red-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.ui-selected\:bg-red-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.ui-selected\:bg-red-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.ui-selected\:bg-red-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.ui-selected\:bg-red-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.ui-selected\:bg-red-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.ui-selected\:bg-red-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}.ui-selected\:bg-rose-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.ui-selected\:bg-rose-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.ui-selected\:bg-rose-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}.ui-selected\:bg-rose-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.ui-selected\:bg-rose-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.ui-selected\:bg-rose-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.ui-selected\:bg-rose-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.ui-selected\:bg-rose-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.ui-selected\:bg-rose-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.ui-selected\:bg-rose-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.ui-selected\:bg-rose-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}.ui-selected\:bg-sky-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.ui-selected\:bg-sky-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.ui-selected\:bg-sky-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.ui-selected\:bg-sky-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.ui-selected\:bg-sky-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.ui-selected\:bg-sky-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.ui-selected\:bg-sky-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.ui-selected\:bg-sky-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.ui-selected\:bg-sky-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.ui-selected\:bg-sky-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.ui-selected\:bg-sky-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}.ui-selected\:bg-slate-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.ui-selected\:bg-slate-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.ui-selected\:bg-slate-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.ui-selected\:bg-slate-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.ui-selected\:bg-slate-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.ui-selected\:bg-slate-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.ui-selected\:bg-slate-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.ui-selected\:bg-slate-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.ui-selected\:bg-slate-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.ui-selected\:bg-slate-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.ui-selected\:bg-slate-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.ui-selected\:bg-stone-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.ui-selected\:bg-stone-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.ui-selected\:bg-stone-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}.ui-selected\:bg-stone-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}.ui-selected\:bg-stone-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}.ui-selected\:bg-stone-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}.ui-selected\:bg-stone-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}.ui-selected\:bg-stone-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}.ui-selected\:bg-stone-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}.ui-selected\:bg-stone-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}.ui-selected\:bg-stone-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}.ui-selected\:bg-teal-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.ui-selected\:bg-teal-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}.ui-selected\:bg-teal-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}.ui-selected\:bg-teal-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.ui-selected\:bg-teal-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}.ui-selected\:bg-teal-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.ui-selected\:bg-teal-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.ui-selected\:bg-teal-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.ui-selected\:bg-teal-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.ui-selected\:bg-teal-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}.ui-selected\:bg-teal-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}.ui-selected\:bg-tremor-background[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.ui-selected\:bg-tremor-background-muted[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ui-selected\:bg-violet-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.ui-selected\:bg-violet-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.ui-selected\:bg-violet-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.ui-selected\:bg-violet-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}.ui-selected\:bg-violet-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.ui-selected\:bg-violet-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}.ui-selected\:bg-violet-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.ui-selected\:bg-violet-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}.ui-selected\:bg-violet-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.ui-selected\:bg-violet-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}.ui-selected\:bg-violet-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}.ui-selected\:text-amber-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.ui-selected\:text-amber-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.ui-selected\:text-amber-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.ui-selected\:text-amber-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.ui-selected\:text-amber-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}.ui-selected\:text-amber-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.ui-selected\:text-amber-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.ui-selected\:text-amber-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.ui-selected\:text-amber-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.ui-selected\:text-amber-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.ui-selected\:text-amber-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}.ui-selected\:text-blue-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}.ui-selected\:text-blue-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.ui-selected\:text-blue-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.ui-selected\:text-blue-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.ui-selected\:text-blue-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}.ui-selected\:text-blue-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.ui-selected\:text-blue-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.ui-selected\:text-blue-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.ui-selected\:text-blue-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.ui-selected\:text-blue-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.ui-selected\:text-blue-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}.ui-selected\:text-cyan-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.ui-selected\:text-cyan-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}.ui-selected\:text-cyan-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}.ui-selected\:text-cyan-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.ui-selected\:text-cyan-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}.ui-selected\:text-cyan-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.ui-selected\:text-cyan-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.ui-selected\:text-cyan-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.ui-selected\:text-cyan-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}.ui-selected\:text-cyan-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.ui-selected\:text-cyan-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}.ui-selected\:text-dark-tremor-brand[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.ui-selected\:text-emerald-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.ui-selected\:text-emerald-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}.ui-selected\:text-emerald-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.ui-selected\:text-emerald-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.ui-selected\:text-emerald-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}.ui-selected\:text-emerald-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.ui-selected\:text-emerald-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.ui-selected\:text-emerald-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.ui-selected\:text-emerald-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.ui-selected\:text-emerald-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}.ui-selected\:text-emerald-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}.ui-selected\:text-gray-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.ui-selected\:text-gray-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.ui-selected\:text-gray-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.ui-selected\:text-gray-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.ui-selected\:text-gray-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.ui-selected\:text-gray-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.ui-selected\:text-gray-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.ui-selected\:text-gray-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.ui-selected\:text-gray-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.ui-selected\:text-gray-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.ui-selected\:text-gray-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.ui-selected\:text-green-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.ui-selected\:text-green-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.ui-selected\:text-green-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.ui-selected\:text-green-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.ui-selected\:text-green-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}.ui-selected\:text-green-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.ui-selected\:text-green-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.ui-selected\:text-green-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.ui-selected\:text-green-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.ui-selected\:text-green-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}.ui-selected\:text-green-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}.ui-selected\:text-indigo-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}.ui-selected\:text-indigo-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.ui-selected\:text-indigo-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.ui-selected\:text-indigo-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.ui-selected\:text-indigo-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}.ui-selected\:text-indigo-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.ui-selected\:text-indigo-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.ui-selected\:text-indigo-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.ui-selected\:text-indigo-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.ui-selected\:text-indigo-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.ui-selected\:text-indigo-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.ui-selected\:text-lime-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}.ui-selected\:text-lime-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}.ui-selected\:text-lime-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}.ui-selected\:text-lime-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}.ui-selected\:text-lime-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}.ui-selected\:text-lime-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}.ui-selected\:text-lime-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.ui-selected\:text-lime-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}.ui-selected\:text-lime-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}.ui-selected\:text-lime-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.ui-selected\:text-lime-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}.ui-selected\:text-neutral-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.ui-selected\:text-neutral-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.ui-selected\:text-neutral-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.ui-selected\:text-neutral-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.ui-selected\:text-neutral-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.ui-selected\:text-neutral-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.ui-selected\:text-neutral-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.ui-selected\:text-neutral-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.ui-selected\:text-neutral-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.ui-selected\:text-neutral-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.ui-selected\:text-neutral-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}.ui-selected\:text-orange-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}.ui-selected\:text-orange-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.ui-selected\:text-orange-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.ui-selected\:text-orange-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.ui-selected\:text-orange-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}.ui-selected\:text-orange-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.ui-selected\:text-orange-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.ui-selected\:text-orange-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.ui-selected\:text-orange-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.ui-selected\:text-orange-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}.ui-selected\:text-orange-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}.ui-selected\:text-pink-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}.ui-selected\:text-pink-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.ui-selected\:text-pink-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}.ui-selected\:text-pink-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}.ui-selected\:text-pink-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}.ui-selected\:text-pink-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.ui-selected\:text-pink-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.ui-selected\:text-pink-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.ui-selected\:text-pink-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.ui-selected\:text-pink-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}.ui-selected\:text-pink-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}.ui-selected\:text-purple-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}.ui-selected\:text-purple-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}.ui-selected\:text-purple-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.ui-selected\:text-purple-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.ui-selected\:text-purple-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}.ui-selected\:text-purple-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.ui-selected\:text-purple-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.ui-selected\:text-purple-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.ui-selected\:text-purple-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.ui-selected\:text-purple-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}.ui-selected\:text-purple-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}.ui-selected\:text-red-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}.ui-selected\:text-red-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.ui-selected\:text-red-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.ui-selected\:text-red-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.ui-selected\:text-red-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.ui-selected\:text-red-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.ui-selected\:text-red-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.ui-selected\:text-red-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.ui-selected\:text-red-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.ui-selected\:text-red-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.ui-selected\:text-red-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}.ui-selected\:text-rose-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.ui-selected\:text-rose-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.ui-selected\:text-rose-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.ui-selected\:text-rose-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.ui-selected\:text-rose-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}.ui-selected\:text-rose-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.ui-selected\:text-rose-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.ui-selected\:text-rose-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.ui-selected\:text-rose-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.ui-selected\:text-rose-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.ui-selected\:text-rose-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}.ui-selected\:text-sky-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.ui-selected\:text-sky-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.ui-selected\:text-sky-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.ui-selected\:text-sky-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.ui-selected\:text-sky-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}.ui-selected\:text-sky-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.ui-selected\:text-sky-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.ui-selected\:text-sky-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.ui-selected\:text-sky-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.ui-selected\:text-sky-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}.ui-selected\:text-sky-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}.ui-selected\:text-slate-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.ui-selected\:text-slate-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.ui-selected\:text-slate-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.ui-selected\:text-slate-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.ui-selected\:text-slate-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.ui-selected\:text-slate-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.ui-selected\:text-slate-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.ui-selected\:text-slate-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.ui-selected\:text-slate-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.ui-selected\:text-slate-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.ui-selected\:text-slate-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.ui-selected\:text-stone-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}.ui-selected\:text-stone-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}.ui-selected\:text-stone-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}.ui-selected\:text-stone-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.ui-selected\:text-stone-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}.ui-selected\:text-stone-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.ui-selected\:text-stone-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.ui-selected\:text-stone-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}.ui-selected\:text-stone-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}.ui-selected\:text-stone-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}.ui-selected\:text-stone-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}.ui-selected\:text-teal-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}.ui-selected\:text-teal-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.ui-selected\:text-teal-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}.ui-selected\:text-teal-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}.ui-selected\:text-teal-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}.ui-selected\:text-teal-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}.ui-selected\:text-teal-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.ui-selected\:text-teal-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.ui-selected\:text-teal-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.ui-selected\:text-teal-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}.ui-selected\:text-teal-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}.ui-selected\:text-tremor-brand[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.ui-selected\:text-tremor-content-emphasis[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.ui-selected\:text-tremor-content-strong[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.ui-selected\:text-violet-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}.ui-selected\:text-violet-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.ui-selected\:text-violet-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.ui-selected\:text-violet-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.ui-selected\:text-violet-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}.ui-selected\:text-violet-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.ui-selected\:text-violet-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.ui-selected\:text-violet-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.ui-selected\:text-violet-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}.ui-selected\:text-violet-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}.ui-selected\:text-violet-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}.ui-selected\:text-yellow-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}.ui-selected\:text-yellow-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}.ui-selected\:text-yellow-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.ui-selected\:text-yellow-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.ui-selected\:text-yellow-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}.ui-selected\:text-yellow-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.ui-selected\:text-yellow-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.ui-selected\:text-yellow-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.ui-selected\:text-yellow-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.ui-selected\:text-yellow-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}.ui-selected\:text-yellow-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}.ui-selected\:text-zinc-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.ui-selected\:text-zinc-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.ui-selected\:text-zinc-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.ui-selected\:text-zinc-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.ui-selected\:text-zinc-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.ui-selected\:text-zinc-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.ui-selected\:text-zinc-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.ui-selected\:text-zinc-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.ui-selected\:text-zinc-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.ui-selected\:text-zinc-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.ui-selected\:text-zinc-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}.ui-selected\:shadow-tremor-input[data-headlessui-state~=selected]{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:where([data-headlessui-state~=selected]) .ui-selected\:border-b-2{border-bottom-width:2px}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-100{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-50{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-600{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-700{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-800{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-950{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-50{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-700{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-950{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-100{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-200{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-300{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-400{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-50{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-500{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-600{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-700{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-800{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-900{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-950{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-100{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-400{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-50{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-600{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-700{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-800{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-900{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-950{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-100{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-200{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-300{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-400{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-50{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-500{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-600{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-700{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-800{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-900{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-950{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-50{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-950{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-100{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-50{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-700{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-950{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-100{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-200{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-300{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-400{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-50{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-500{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-700{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-800{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-900{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-950{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-100{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-200{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-300{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-400{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-50{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-500{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-600{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-700{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-800{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-900{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-950{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-100{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-300{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-400{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-500{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-600{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-700{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-800{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-900{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-950{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-50{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-600{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-700{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-950{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-100{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-200{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-300{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-400{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-50{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-500{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-600{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-700{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-800{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-900{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-950{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-100{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-300{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-400{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-50{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-500{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-600{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-700{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-950{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-50{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-700{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-950{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-100{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-200{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-300{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-400{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-50{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-500{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-600{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-700{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-800{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-900{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-950{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-100{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-300{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-400{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-50{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-700{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-950{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-400{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-50{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-900{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-950{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-100{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-200{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-300{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-400{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-50{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-500{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-600{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-700{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-800{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-900{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-950{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-100{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-200{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-300{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-400{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-50{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-500{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-600{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-700{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-800{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-900{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-950{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-tremor-border{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-tremor-brand{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-100{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-200{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-300{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-400{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-50{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-500{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-600{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-700{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-800{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-900{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-950{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-100{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-50{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-600{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-700{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-800{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-900{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-950{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-100{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-400{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-500{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-950{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-200{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-300{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-700{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-800{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-200{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-300{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-700{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-800{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-200{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-300{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-400{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-50{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-600{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-700{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-800{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-900{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-950{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-200{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-300{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-800{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-900{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-950{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-100{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-200{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-300{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-400{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-50{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-500{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-600{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-700{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-800{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-900{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-950{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-300{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-800{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-200{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-300{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-400{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-700{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-800{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-900{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-950{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-100{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-200{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-300{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-400{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-50{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-500{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-700{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-800{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-900{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-950{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-200{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-300{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-400{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-500{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-600{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-950{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-300{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-300{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-400{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-500{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-700{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-800{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-900{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-950{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-300{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-400{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-800{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-300{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-800{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-100{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-200{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-300{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-400{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-50{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-700{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-800{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-900{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-950{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-200{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-400{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-700{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-800{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-900{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-100{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-200{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-300{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-400{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-50{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-500{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-600{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-700{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-800{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-900{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-950{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-100{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-200{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-300{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-400{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-50{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-800{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-900{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-950{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-tremor-background{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-tremor-background-muted{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-200{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-300{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-400{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-500{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-700{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-800{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-900{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-950{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-300{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-700{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-800{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-950{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-300{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-400{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-500{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-600{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-950{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-50{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-950{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-50{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-950{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-100{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-200{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-300{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-50{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-800{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-900{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-950{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-dark-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-100{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-200{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-50{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-900{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-950{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-100{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-200{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-300{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-400{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-50{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-500{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-600{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-700{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-800{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-900{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-950{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-950{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-100{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-50{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-950{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-100{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-200{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-300{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-50{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-900{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-950{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-100{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-200{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-300{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-400{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-50{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-500{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-600{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-700{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-800{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-900{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-950{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-100{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-300{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-700{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-800{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-50{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-900{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-950{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-100{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-200{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-300{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-400{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-50{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-600{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-700{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-800{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-900{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-950{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-100{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-50{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-900{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-950{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-50{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-950{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-100{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-200{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-50{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-800{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-900{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-950{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-100{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-50{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-800{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-900{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-950{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-50{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-950{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-100{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-200{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-300{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-400{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-50{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-600{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-700{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-800{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-900{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-950{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-100{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-200{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-300{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-400{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-50{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-500{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-700{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-800{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-900{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-950{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-tremor-content-strong{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-100{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-200{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-50{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-600{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-700{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-800{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-900{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-950{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-100{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-50{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-950{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-100{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:shadow-tremor-input{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ui-active\:bg-tremor-background-muted[data-headlessui-state~=active]{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ui-active\:text-tremor-content-strong[data-headlessui-state~=active]{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:where([data-headlessui-state~=active]) .ui-active\:bg-tremor-background-muted{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}:where([data-headlessui-state~=active]) .ui-active\:text-tremor-content-strong{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:is(.dark .dark\:divide-dark-tremor-border)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(55 65 81/var(--tw-divide-opacity))}:is(.dark .dark\:border-dark-tremor-background){--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-border){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand){--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand-emphasis){--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand-inverted){--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand-subtle){--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:is(.dark .dark\:bg-dark-tremor-background){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-background-emphasis){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-background-muted){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-background-subtle){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-border){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-brand){--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-brand-muted){--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-brand-muted\/70){background-color:rgba(30,27,75,.7)}:is(.dark .dark\:bg-dark-tremor-brand-subtle){--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-content-subtle){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-950\/50){background-color:rgba(2,6,23,.5)}:is(.dark .dark\:bg-opacity-10){--tw-bg-opacity:0.1}:is(.dark .dark\:bg-opacity-25){--tw-bg-opacity:0.25}:is(.dark .dark\:bg-opacity-30){--tw-bg-opacity:0.3}:is(.dark .dark\:from-dark-tremor-background){--tw-gradient-from:#111827 var(--tw-gradient-from-position);--tw-gradient-to:rgba(17,24,39,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:is(.dark .dark\:to-dark-tremor-background){--tw-gradient-to:#111827 var(--tw-gradient-to-position)}:is(.dark .dark\:fill-dark-tremor-content){fill:#6b7280}:is(.dark .dark\:fill-dark-tremor-content-emphasis){fill:#e5e7eb}:is(.dark .dark\:stroke-dark-tremor-background){stroke:#111827}:is(.dark .dark\:stroke-dark-tremor-border){stroke:#374151}:is(.dark .dark\:stroke-dark-tremor-brand){stroke:#6366f1}:is(.dark .dark\:stroke-dark-tremor-brand-muted){stroke:#1e1b4b}:is(.dark .dark\:text-dark-tremor-brand){--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-brand-emphasis){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-brand-inverted){--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content-emphasis){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content-strong){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content-subtle){--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:accent-dark-tremor-brand){accent-color:#6366f1}:is(.dark .dark\:opacity-25){opacity:.25}:is(.dark .dark\:shadow-dark-tremor-card){--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:shadow-dark-tremor-dropdown){--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:shadow-dark-tremor-input){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:outline-dark-tremor-brand){outline-color:#6366f1}:is(.dark .dark\:ring-dark-tremor-brand-inverted){--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .dark\:ring-dark-tremor-brand-muted){--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .dark\:ring-dark-tremor-ring){--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55/var(--tw-ring-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content)::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content)::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content-subtle)::-moz-placeholder{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content-subtle)::placeholder{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content)::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content)::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content-subtle)::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content-subtle)::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:hover\:border-dark-tremor-brand-emphasis:hover){--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}:is(.dark .dark\:hover\:border-dark-tremor-content-emphasis:hover){--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-background-muted:hover){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-background-subtle:hover){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-brand-emphasis:hover){--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-brand-faint:hover){--tw-bg-opacity:1;background-color:rgb(11 18 41/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-opacity-20:hover){--tw-bg-opacity:0.2}:is(.dark .dark\:hover\:text-dark-tremor-brand-emphasis:hover){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-dark-tremor-content:hover){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-dark-tremor-content-emphasis:hover){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-tremor-content:hover){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-tremor-content-emphasis:hover){--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}:is(.dark .hover\:dark\:text-dark-tremor-content):hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:focus\:border-dark-tremor-brand-subtle:focus){--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:is(.dark .focus\:dark\:border-dark-tremor-brand-subtle):focus{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:is(.dark .dark\:focus\:ring-dark-tremor-brand-muted:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .focus\:dark\:ring-dark-tremor-brand-muted):focus{--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-dark-tremor-content-emphasis){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .aria-selected\:dark\:\!bg-dark-tremor-background-subtle)[aria-selected=true]{--tw-bg-opacity:1!important;background-color:rgb(31 41 55/var(--tw-bg-opacity))!important}:is(.dark .dark\:aria-selected\:bg-dark-tremor-background-emphasis[aria-selected=true]){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}:is(.dark .dark\:aria-selected\:text-dark-tremor-brand-inverted[aria-selected=true]){--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}:is(.dark .dark\:aria-selected\:text-dark-tremor-content-inverted[aria-selected=true]){--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:border-dark-tremor-border[data-headlessui-state~=selected]){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\:ui-selected\:border-dark-tremor-brand[data-headlessui-state~=selected]){--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:is(.dark .dark\:ui-selected\:bg-dark-tremor-background[data-headlessui-state~=selected]){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:ui-selected\:bg-dark-tremor-background-muted[data-headlessui-state~=selected]){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:ui-selected\:text-dark-tremor-brand[data-headlessui-state~=selected]){--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:text-dark-tremor-content-emphasis[data-headlessui-state~=selected]){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:text-dark-tremor-content-strong[data-headlessui-state~=selected]){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:shadow-dark-tremor-input[data-headlessui-state~=selected]){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:border-dark-tremor-border){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:border-dark-tremor-brand){--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:bg-dark-tremor-background){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:bg-dark-tremor-background-muted){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:text-dark-tremor-brand){--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:text-dark-tremor-content-emphasis){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:text-dark-tremor-content-strong){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:shadow-dark-tremor-input){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:ui-active\:bg-dark-tremor-background-muted[data-headlessui-state~=active]){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:ui-active\:text-dark-tremor-content-strong[data-headlessui-state~=active]){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=active]) .dark\:ui-active\:bg-dark-tremor-background-muted){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark :where([data-headlessui-state~=active]) .dark\:ui-active\:text-dark-tremor-content-strong){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}@media (min-width:640px){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-10{grid-column:span 10/span 10}.sm\:col-span-11{grid-column:span 11/span 11}.sm\:col-span-12{grid-column:span 12/span 12}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:col-span-4{grid-column:span 4/span 4}.sm\:col-span-5{grid-column:span 5/span 5}.sm\:col-span-6{grid-column:span 6/span 6}.sm\:col-span-7{grid-column:span 7/span 7}.sm\:col-span-8{grid-column:span 8/span 8}.sm\:col-span-9{grid-column:span 9/span 9}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:mb-0{margin-bottom:0}.sm\:ml-4{margin-left:1rem}.sm\:mt-0{margin-top:0}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:h-screen{height:100vh}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.sm\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.sm\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.sm\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.sm\:grid-cols-none{grid-template-columns:none}.sm\:flex-row{flex-direction:row}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}}@media (min-width:768px){.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-10{grid-column:span 10/span 10}.md\:col-span-11{grid-column:span 11/span 11}.md\:col-span-12{grid-column:span 12/span 12}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-5{grid-column:span 5/span 5}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-7{grid-column:span 7/span 7}.md\:col-span-8{grid-column:span 8/span 8}.md\:col-span-9{grid-column:span 9/span 9}.md\:table-cell{display:table-cell}.md\:hidden{display:none}.md\:w-auto{width:auto}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.md\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:grid-cols-none{grid-template-columns:none}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}}@media (min-width:1024px){.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-10{grid-column:span 10/span 10}.lg\:col-span-11{grid-column:span 11/span 11}.lg\:col-span-12{grid-column:span 12/span 12}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:inline{display:inline}.lg\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:max-w-\[200px\]{max-width:200px}.lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.lg\:grid-cols-none{grid-template-columns:none}}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button,.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&_td\]\:py-0\.5 td{padding-top:.125rem;padding-bottom:.125rem}.\[\&_td\]\:py-2 td{padding-top:.5rem;padding-bottom:.5rem}.\[\&_th\]\:py-1 th{padding-top:.25rem;padding-bottom:.25rem}.\[\&_th\]\:py-2 th{padding-top:.5rem;padding-bottom:.5rem} \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/assets/logos/infinity.png b/litellm/proxy/_experimental/out/assets/logos/infinity.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f725799868cd5b44f30a164ae23a040835e303 GIT binary patch literal 7377 zcmbuE^;eY7+kh9OyStGtB?Lio>0G*7q@-hk1r{Wwky1K73KC08gM_5CfHX)fwRFR> z?|%P=cg~r)&ojR~^E_wH+;d&`N06=>F#!Vs001D?P**lU#|U(f#KS?4cn%Go=z#C7 zZte#F5K{iHV*qmV>ClrHeg$=kFBargn>FKHJBNgHJbY~&_ zf^UsgKH$IzqiL6xmexxy^Ud!^0qB^iT>g@s#zEM)#)W5Cm6@OnW0p^VgILPA0Vh(bVA^j!S!xJ2IT z?td2tQMjb<1kD?^_a5&qCe7HREj`<~8k{E!@%i}pYVQ6vt0ptZIyyQo10f8UDFS?a zXVW!6f31D&X(n=Vc8jnkpk#R_jnYX<29KU+j2_{gEGG{SPtk0mP0(h{g$WtCICd-Y zdf9R6Hq#x}wo4M<_EFU~)jK1VRh}i8%d*n~Z}tPZ+@{v4G?VHEM(7aN@4ACO-yKVo zX?_dtw1mR$D0csY@9YSzws_eNX7U+U8j}yEFf&FqlsCK0RgxkQQ3_uFCF@M&zoz7D zPi2R)@dnwEM<(T2eDL{)L3+*H_&F2VCJqnmBX+5t3!DR@@j#wnr*X^ z8jzUkvi!rtPaLYg+8*Eq{JF~3&EhGT-%mlwRFdco{Ws?Ed7O?fI#W>-)Dh@W6^^`z z+fR{quLFQI8~o0XXQ|K?FXLw{!Q1KYp5YL+lJ-JrOTelx52>lCRsIc%ObPWq2!yD3 zyJXY;QQW&^=Iy87ll$34!zvegTb7iRrZIK?3)#`>_OkS2J>GecLdFL0vhJ6#j%$*R_jgmPDhF34ib4#Eh>x+c!+`(rw#l7NH^@eR1kHZa=_wL-ozXnx zCriUjVvyjkbe;XSnkVjh&TDeV#z3F4A>=AY+);7X8x3tuGfh*AV5cc8ryGPO%^*Lf zrP-K|Wc00U^hQD0<9X`ums6NtQ)uy?PYb!Ni8cF_=U@o0jxs^BE;TRdch}1u45eSwAVW^zd0Sp>LA8 z$#T|L_wgmXWwxxfk>yzwJesRAJ%$%Sk2Ub$@Bz-`y46xyD5suYlC9z3C~sVc9k02% z828?Zyi`sojygHudH&qrZK_z&|KS=THZwb$YN-hL0u~LPFr$-Apj%fpNxibIyRR%= zzGFp}Kjks0+rJ|4`iuGNeJYbCjgUpt{Ftn@z|W}?AR{q@_+I(jN=I**k1yD@mujVK zvp)1Ny`?9RZ6I2CYpn#Njm}a?eM_wAZ5-U&I4PI+p#_3L$cVq1tlaXX=5H#g+>!}c z;vA-AkbM8wTOmi-`Z|r#iHyQZqD~20;i12_Sekc7`eA5@^UCY0JRI-^0 z#@aEzG*gxog&$UE2-?&;s3>T@@cB2ei(Xz3VJevRLn`+IeiezADGQTVghAy5SypDI zzgV03`0;9o7blaEIyikU0e)uN-l3iQC2;q-^ z_$fhclhOE;OBq_7yzN#NjPX7nqwR=~{gqm3&7T)C`kx>MD{6oW7FP2_R;OT1`vh4(8;?*((>H~Zsw znmkwU$?0zCJQCxs>#E4RZ50ohj@$8aTV{UftoX?ey-QhTiVNV6rQvKZXjfzN&WwP} zMXnV_*ZtxRU!z_Iw~0{SXb8qmEkI-3Y}|RahyhMy8G2<6B9XcgoZ^>I=j^?2l~OA0yrMcXq8 z?HOqMNC3u|5$Zkci^2m7UBU*UV4U(J+szTel@$0q8iaA4e4%feBzN`{_YNlDu$3~t zo`tJQA_KOpOpo@Qm#}N1oh^xZuE*;FNE_oDWPN$(Zcv6}S9)Eu0tz0i2u z7!D-1*3v+UTqTcT=|Vbye6@Zs+~v})nwR?U3N(}6n1T15m0w9m`ZJ z!TQ4a49#>+DLM75;qYd`(b19fdg#UYvz)@48nV;Bj;UOB82$T}B;~^fKx-C}jnqkn zM`=O0G2QL_<^JsKcS~A**wveatS?`JL$(H!&ENi5XB$BHdNmzdgcIEOvN{uCR=Esc zLCAkgyV21$#}U{H0_V2KHVT5eUIYkqi83i>ZTxdqdY~e5rWtL&V@2J@!CCM+`AdFx z6rE)epL&aVNDp>do?9%RgSw3A2E2`U)Mw&38diMxR@V(8mOVRaXwA1L*`8|{zY;-O zXYt#wh_7^>$8w!?KOAES;H7b_1j7qDyvK_AR(Pv9h+{iQ@G1V=!^oc{r)9>ehuSEHK?p0Br7hBw@wqjSTA%1hJfZ#sAl z5>1i;Ri8;#tqcig4yRz$m$AYO3hn9`bQ8%OmW2b@VFfcV#=l?QlP`1*k|7#dp^s-z z=Z`|6uli_omAX>8I`` zdTd1wZ~o3skGQuTk7Nm$PFS>hZ~8RP5pbM-_!<9%z&qu-|SQ1Vi3DW6zL`{aql)?@LZ$kTq( z+K|vC;%$8I&9S|LPGuR=U?xwY|GJ7k-zhFa@UWSngv$f zKQQvD+cg$L2sArE_~m)-|J`1jX$XAU?0)L81_2sulX;2%e9W1!XruVk^Oc>I{2^S{ zZ}&GpdG|BoI|^9#%o-}@g()@*e)6@jBbMLjzh8-|pF9kOU{}vvbd0;V=C76sOa~-H z`~<7`HyVSK_ zb`G$ul3zDfMlWw_&3k`mk%mI%71Ulf+~o`OMohW zm6HsZtA7EaT_WJ2;pg_>t~i-N=9KWtcozuRDS_UtU_B$G5#$}aVnACa(mrl_&I37lPQ+;cq!@GeyuNC_yPPC}n9c*R9FJYsBq?o*sE#rw?~-RL`M zOYBmm;N=|Kiup)_3|5?D=qeQ7a{OHgg8ZeA0lJ(N)17GDa;he|sI%|WQ?-7KK6$lX z-x12su2(1zeNq%?@-A#>R5fTEwZa1t0AvHC49+m?H(OCsR+gMFV!tv#zMppg=NFfs zsXr*xo$##*90T8T(?5v^cLz|7W|(2}4um=Y{Kl7h!_M(QYVx$J-Rl0To|+A}@*~))gx#5#d;~ z5?zuU3})N&^o(qu&`?kA?rjzNUZu^()O2HTN^a-IO>m(_zLfk2TUMIZnOL9 zXP)T4r}bfW8jBKvP}Zj6KQ{IV8Xqf4)(MqO7nRKACwUg&7V=n4yON$L{F41Qae0r` zn0pN?jz@{_Em-xo^6kjtoWhPbgyxf_a>>Ta&Ffzkp-S8Xq5qKjGb2uoV@g!=tMY@Mcy&d7Z@_ScaK-$3jb%%H zlGo+zr7*E?aNQF{G%BvNv^2Gb42&cpdq*tdh&g4JfXkblc{(@l6P#X4s)0#9Ih3Y@ zCD9u5(4CyHe$zRBZ$E0Dm6oeiq|R8nR#ApZ*RwuTWQrchtp*w_WfR|cZ_pGI{71UO4Sj!PqjID zM)dq_WnRUfVK>6Et3KOiR4EFR-o5N&T&HyYVP`}Z+) z$33VgoEHw5_BCG`J=ckkTEE2gbvC>m`Gl#H>Np%kCoX3O0u`G-CxFU|$8RT<#Zg%N zc)v&>GDjoLvC8`fUSU&5xuhElT=AjH8lk1$#Rz16oh0wB^A%yy#v-81c9V3qp86rs zc;%+GB5HQBQx8^W#2QOP|0$u4^&5Q3?4}`AJ=5L0)~4&;j2(;bdBdLiWc8Q0u6Tm< z;6OC0Y4uSb8Xfz~v>Eu}*!coKzl_J!3KLMCLQ4S4c;vboXxhfA2cVO;FVq=>xs%K& z2_xr>O+CFz4oY|7`}9d2@{nhNo(<2||8;E=zY)vmsXkxHH~s)_jP1V;#4UCz;?BG! zP$bLgPwZ5Pv7!`HukOQt1{`j}wU|q-<0%X(#a?=o{-Zgk_|3%WqDnrBI!gU;UoIOB zRwr_q5BkSjmef0DnN*6_n%<6aB+P}MO3l~-=k>iz$dbi54wF5;xec0QXsX-;l^q%> z?#OPryabs3WjQS#PBA+8=uzNM)VK}Yo^5T_kCJyHB6lDbLwLkaxoavV>XiJWs;Mli zEDQ1^hw(itmAnwzPiCKLN~XdEnoQm0iaieY(vwxWeV+1+vT%*1Hua_1XL;O#J7VPk~3rbIR4vUs%x&wjt@99=}lk)O9x{YzF^~!06Y1iWBeK4@?^~r|n(VnE=x= z^!ULi#Qb>@G$LYs8VLwlCd3_mF>1Jvr)q6`R(hjwohOUrduG6T26|Yf%cVg*inq_2 zHOkZuMSguMFTI=<6BX5+zGl>LfqtZQ>o0d#rbd2_c3k_vDmqB6kLV zcr0IgTA{|8n%k~loYocZn3V*W){nRR9CCs zdfxZff1hI8PASjGbEUOjVDz3a8Y;7DrY9D9^xeV2L&g>DX*9$8_Y_@9_CZUw>pI*B z$)Pp3zjd2e+r$B_Lo}H`=aTXjN|Ia2pVWhpoSj};&S_)B;w_PW@ZMU<$D9M({{VO} zDpR^B%u62`je#}5Ya&9;0ZM;Q^f|#2@WD#3%HZ9E!2vVYEOZ!3qOj=ZChs7k_1AtN zJo&Q5rYnT~%$7EL8Y!ccmv^4`$|2s@kJXu#BgmMtcCl~`=n8JlyxJG!H-RM~Ie zQFKFToBJ4F^l5}&(hQ0&L!IipUt`2gckSVe*{Bs;-%>7g__&~Ks%KkLg|h3Jzup3B z@^r(Hc4#2er)Ci(RXB79?YX3guEm4tH6ZQmow>eYHgp@D2e$Oy$NziJ!w65&QR~X< zn>EM@!k-Vmq3_n#RV%C3*Am(60+&)+mQ#L-(hXfZzgnUeYo999n$}#J18dm z!FP2`*7Ccc&?ba_qXD?)7IfW(cBM|Chc{!^|9ufZaMcAs|BCj5y3(e~O0n~!Y(+8gx?;S064sFcd?^?Rfy zEl1LGhBGG37xP-?bBpuVztKL8(T@3RP~4jo%xZT^?U54ugkQfF7Z;sD*?1GP1YbjV zwHavEF_kQRY$#Uq+kLMl3J0#`g0g8{);VB#k%al;Xio6WXIsW>STZxB7uucb+r!`SBypM=*bUpVG5f*+@Vq+vOM-6PE&olmvE zmR*`*yryOuVJk*`b^5n>T&EXIJ%_=HPQ2~AZ``$%X*}-1yziCSR$1^$AaQW>-B+P#Y1IMd1}&O?roCJd8R1%K@itk zNGy(ZgH`td2Lj79=(mbv_9~Jgn{8KG-ti zJr6|;emrFz!h99fW`caX)KJh13k%HoJExqeg=YK-nv)5!%zWVb>& zpZ!I7aBwiAz*1qYl6_?ba6y&S-GIpJBSljy0r+Sij|vaX}{F(eMso3SO`VJ0TVuonL#_OF}c5DkzLz z9TiA7$Exwe(sKz;c9#Iq1ex^%L1D3{Km;(KgxOjJ^=FP{jSKKs$>F>KDP&*{VUFK zltd@Q9GIIl3y9H;>#WBDWLcw^JQa$wXQNb+r=7g1chZCEhQsl3#53{5bZ5bu`N09hY(Y3iIsB>hwt_ zM+-sFg@mjpDt%&B;68PRhjxUx9W>4Gk;A{FUXyC8E09qHS4PYPtUBMt*bBuz^CJ%r38-CReiP*F#~%j< zZPRPY)NZQ(JN#_N7rlFWQ5so=No75$`y@7WV27Bbx}^IyC;sPbmX{@rWh0h%vRKZ>;Rm)nDa> zkqo@q*}FNpUp$eB@S_U3kh0aIF$Yp#Xr(0C$!m1Ye4^8_VUyFRsLjDN6yH=jJhX6I zS=B8zvifLD)a-uj>sa2LBQij%)XBn{k=(I73}0Pw7wMCya?>O3p+Y{~ER25NMpu)l zmJ0Zvfo3YcUp`vdLY|g`qxv8GEQ(x_?n=k@d*kVSeu!6CJ(Q+BlwPJFbD0cd4Vo%_ zx$(bqjf54+YKLbcOLdV&rNLRIQ%o{726Fwchk~FK-!lLGn-ul*=8o9>1BxhoB#-29 z;mQhRPX$&SNN_3GR@3;Nn=?WRB5;RZqM<})@WId@KJl}bBKkP5&f))AuzTzoL}9!= XoXvymyAS^d(sD55 literal 0 HcmV?d00001 diff --git a/litellm/proxy/_experimental/out/index.html b/litellm/proxy/_experimental/out/index.html index 33feceb7453..0a970c2d6ad 100644 --- a/litellm/proxy/_experimental/out/index.html +++ b/litellm/proxy/_experimental/out/index.html @@ -1 +1 @@ -LiteLLM Dashboard \ No newline at end of file +LiteLLM Dashboard \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/index.txt b/litellm/proxy/_experimental/out/index.txt index a222b6331ea..3288a7b5793 100644 --- a/litellm/proxy/_experimental/out/index.txt +++ b/litellm/proxy/_experimental/out/index.txt @@ -1,7 +1,7 @@ 2:I[19107,[],"ClientPageRoot"] -3:I[73148,["665","static/chunks/3014691f-b7b79b78e27792f3.js","990","static/chunks/13b76428-ebdf3012af0e4489.js","50","static/chunks/50-d0da2dd7acce2eb9.js","521","static/chunks/521-d97d355792d44830.js","866","static/chunks/866-9e1803a09e9ae8da.js","313","static/chunks/313-0025fb08e386c4b8.js","49","static/chunks/49-b6f167418ea8dbf4.js","162","static/chunks/162-ffcd7d9fbb033bdf.js","851","static/chunks/851-0a73701a3a0b0187.js","931","static/chunks/app/page-5b9ff2d173a47e2c.js"],"default",1] +3:I[98412,["665","static/chunks/3014691f-b7b79b78e27792f3.js","990","static/chunks/13b76428-ebdf3012af0e4489.js","50","static/chunks/50-fe160ecfa8bc4059.js","521","static/chunks/521-d97d355792d44830.js","866","static/chunks/866-9e1803a09e9ae8da.js","313","static/chunks/313-0025fb08e386c4b8.js","49","static/chunks/49-0e15a7b701ab2b73.js","162","static/chunks/162-b79fa8ec9408cd55.js","851","static/chunks/851-7416960163d4d982.js","931","static/chunks/app/page-a5ca703846f872ee.js"],"default",1] 4:I[4707,[],""] 5:I[36423,[],""] -0:["_S0i_Y-CCoYQWc9dIuLxF",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/c200be8dd8638678.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +0:["677L3MDatvUz5h5yJedbt",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/ec98fed1bdd650b4.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"LiteLLM Dashboard"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","link","5",{"rel":"icon","href":"./favicon.ico"}],["$","meta","6",{"name":"next-size-adjust"}]] 1:null diff --git a/litellm/proxy/_experimental/out/model_hub.txt b/litellm/proxy/_experimental/out/model_hub.txt index c8157e4663d..af6e1df67a9 100644 --- a/litellm/proxy/_experimental/out/model_hub.txt +++ b/litellm/proxy/_experimental/out/model_hub.txt @@ -1,7 +1,7 @@ 2:I[19107,[],"ClientPageRoot"] -3:I[52829,["50","static/chunks/50-d0da2dd7acce2eb9.js","521","static/chunks/521-d97d355792d44830.js","49","static/chunks/49-b6f167418ea8dbf4.js","162","static/chunks/162-ffcd7d9fbb033bdf.js","418","static/chunks/app/model_hub/page-d7915f579b770030.js"],"default",1] +3:I[52829,["50","static/chunks/50-fe160ecfa8bc4059.js","521","static/chunks/521-d97d355792d44830.js","49","static/chunks/49-0e15a7b701ab2b73.js","162","static/chunks/162-b79fa8ec9408cd55.js","418","static/chunks/app/model_hub/page-0517a053ea1a258a.js"],"default",1] 4:I[4707,[],""] 5:I[36423,[],""] -0:["_S0i_Y-CCoYQWc9dIuLxF",[[["",{"children":["model_hub",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["model_hub",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","model_hub","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/c200be8dd8638678.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +0:["677L3MDatvUz5h5yJedbt",[[["",{"children":["model_hub",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["model_hub",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","model_hub","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/ec98fed1bdd650b4.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"LiteLLM Dashboard"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","link","5",{"rel":"icon","href":"./favicon.ico"}],["$","meta","6",{"name":"next-size-adjust"}]] 1:null diff --git a/litellm/proxy/_experimental/out/model_hub_table/index.html b/litellm/proxy/_experimental/out/model_hub_table.html similarity index 88% rename from litellm/proxy/_experimental/out/model_hub_table/index.html rename to litellm/proxy/_experimental/out/model_hub_table.html index 9976c360c5d..10fb1af3fcc 100644 --- a/litellm/proxy/_experimental/out/model_hub_table/index.html +++ b/litellm/proxy/_experimental/out/model_hub_table.html @@ -1 +1 @@ -LiteLLM Dashboard \ No newline at end of file +LiteLLM Dashboard \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/model_hub_table.txt b/litellm/proxy/_experimental/out/model_hub_table.txt index 0bc9c2cf44e..990edafa29f 100644 --- a/litellm/proxy/_experimental/out/model_hub_table.txt +++ b/litellm/proxy/_experimental/out/model_hub_table.txt @@ -1,7 +1,7 @@ 2:I[19107,[],"ClientPageRoot"] -3:I[22775,["50","static/chunks/50-d0da2dd7acce2eb9.js","521","static/chunks/521-d97d355792d44830.js","866","static/chunks/866-9e1803a09e9ae8da.js","49","static/chunks/49-b6f167418ea8dbf4.js","162","static/chunks/162-ffcd7d9fbb033bdf.js","851","static/chunks/851-0a73701a3a0b0187.js","25","static/chunks/app/model_hub_table/page-2f23c22a47b20607.js"],"default",1] +3:I[22775,["50","static/chunks/50-fe160ecfa8bc4059.js","521","static/chunks/521-d97d355792d44830.js","866","static/chunks/866-9e1803a09e9ae8da.js","49","static/chunks/49-0e15a7b701ab2b73.js","162","static/chunks/162-b79fa8ec9408cd55.js","851","static/chunks/851-7416960163d4d982.js","25","static/chunks/app/model_hub_table/page-c69f5ef890b4b0dc.js"],"default",1] 4:I[4707,[],""] 5:I[36423,[],""] -0:["_S0i_Y-CCoYQWc9dIuLxF",[[["",{"children":["model_hub_table",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["model_hub_table",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","model_hub_table","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/c200be8dd8638678.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +0:["677L3MDatvUz5h5yJedbt",[[["",{"children":["model_hub_table",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["model_hub_table",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","model_hub_table","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/ec98fed1bdd650b4.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"LiteLLM Dashboard"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","link","5",{"rel":"icon","href":"./favicon.ico"}],["$","meta","6",{"name":"next-size-adjust"}]] 1:null diff --git a/litellm/proxy/_experimental/out/onboarding.html b/litellm/proxy/_experimental/out/onboarding.html new file mode 100644 index 00000000000..2cb9c0d1f36 --- /dev/null +++ b/litellm/proxy/_experimental/out/onboarding.html @@ -0,0 +1 @@ +LiteLLM Dashboard \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/onboarding.txt b/litellm/proxy/_experimental/out/onboarding.txt index 4aabcd7f6ad..79bf5ce3e10 100644 --- a/litellm/proxy/_experimental/out/onboarding.txt +++ b/litellm/proxy/_experimental/out/onboarding.txt @@ -1,7 +1,7 @@ 2:I[19107,[],"ClientPageRoot"] -3:I[12011,["665","static/chunks/3014691f-b7b79b78e27792f3.js","50","static/chunks/50-d0da2dd7acce2eb9.js","49","static/chunks/49-b6f167418ea8dbf4.js","461","static/chunks/app/onboarding/page-1fd26064f407ad1d.js"],"default",1] +3:I[12011,["665","static/chunks/3014691f-b7b79b78e27792f3.js","50","static/chunks/50-fe160ecfa8bc4059.js","49","static/chunks/49-0e15a7b701ab2b73.js","461","static/chunks/app/onboarding/page-673bb6c3ebcd355a.js"],"default",1] 4:I[4707,[],""] 5:I[36423,[],""] -0:["_S0i_Y-CCoYQWc9dIuLxF",[[["",{"children":["onboarding",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["onboarding",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","onboarding","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/c200be8dd8638678.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +0:["677L3MDatvUz5h5yJedbt",[[["",{"children":["onboarding",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["onboarding",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","onboarding","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/ec98fed1bdd650b4.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"LiteLLM Dashboard"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","link","5",{"rel":"icon","href":"./favicon.ico"}],["$","meta","6",{"name":"next-size-adjust"}]] 1:null From 73f96712f5850b555dfb07a0a3a9babe8802a0c3 Mon Sep 17 00:00:00 2001 From: Sameer Kankute Date: Tue, 7 Oct 2025 23:54:29 +0530 Subject: [PATCH 21/84] fix the reasoningresponse id (#15265) --- litellm/llms/azure/responses/transformation.py | 2 +- litellm/llms/openai/responses/transformation.py | 2 +- .../litellm_completion_transformation/streaming_iterator.py | 2 +- .../litellm_completion_transformation/transformation.py | 2 +- .../test_litellm_completion_responses.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/litellm/llms/azure/responses/transformation.py b/litellm/llms/azure/responses/transformation.py index 9cd5de46be9..cf9f970995c 100644 --- a/litellm/llms/azure/responses/transformation.py +++ b/litellm/llms/azure/responses/transformation.py @@ -53,7 +53,7 @@ class AzureOpenAIResponsesAPIConfig(OpenAIResponsesAPIConfig): # Ensure required fields are present for ResponseReasoningItem item_data = dict(item) if "id" not in item_data: - item_data["id"] = f"reasoning_{hash(str(item_data))}" + item_data["id"] = f"rs_{hash(str(item_data))}" if "summary" not in item_data: item_data["summary"] = ( item_data.get("reasoning_content", "")[:100] + "..." diff --git a/litellm/llms/openai/responses/transformation.py b/litellm/llms/openai/responses/transformation.py index 0f67401b3d0..e5e89cd8bc6 100644 --- a/litellm/llms/openai/responses/transformation.py +++ b/litellm/llms/openai/responses/transformation.py @@ -124,7 +124,7 @@ class OpenAIResponsesAPIConfig(BaseResponsesAPIConfig): # Ensure required fields are present for ResponseReasoningItem item_data = dict(item) if "id" not in item_data: - item_data["id"] = f"reasoning_{hash(str(item_data))}" + item_data["id"] = f"rs_{hash(str(item_data))}" if "summary" not in item_data: item_data["summary"] = ( item_data.get("reasoning_content", "")[:100] + "..." diff --git a/litellm/responses/litellm_completion_transformation/streaming_iterator.py b/litellm/responses/litellm_completion_transformation/streaming_iterator.py index 93abdee778f..20822b3628e 100644 --- a/litellm/responses/litellm_completion_transformation/streaming_iterator.py +++ b/litellm/responses/litellm_completion_transformation/streaming_iterator.py @@ -134,7 +134,7 @@ class LiteLLMCompletionStreamingIterator(ResponsesAPIStreamingIterator): return ReasoningSummaryTextDeltaEvent( type=ResponsesAPIStreamEvents.REASONING_SUMMARY_TEXT_DELTA, - item_id=f"{chunk.id}_reasoning", + item_id=f"rs_{hash(str(reasoning_content))}", output_index=0, delta=reasoning_content, ) diff --git a/litellm/responses/litellm_completion_transformation/transformation.py b/litellm/responses/litellm_completion_transformation/transformation.py index a43e02a0f3e..9324ab0aa0c 100644 --- a/litellm/responses/litellm_completion_transformation/transformation.py +++ b/litellm/responses/litellm_completion_transformation/transformation.py @@ -708,7 +708,7 @@ class LiteLLMCompletionResponsesConfig: return [ GenericResponseOutputItem( type="reasoning", - id=f"{chat_completion_response.id}_reasoning", + id=f"rs_{hash(str(message.reasoning_content))}", status=choice.finish_reason, role="assistant", content=[ diff --git a/tests/test_litellm/responses/litellm_completion_transformation/test_litellm_completion_responses.py b/tests/test_litellm/responses/litellm_completion_transformation/test_litellm_completion_responses.py index 00fa0851a7b..9c8da2e60e0 100644 --- a/tests/test_litellm/responses/litellm_completion_transformation/test_litellm_completion_responses.py +++ b/tests/test_litellm/responses/litellm_completion_transformation/test_litellm_completion_responses.py @@ -265,7 +265,7 @@ class TestLiteLLMCompletionResponsesConfig: assert len(reasoning_items) == 1, "Should have exactly one reasoning item" reasoning_item = reasoning_items[0] - assert reasoning_item.id == "test-response-id_reasoning" + assert reasoning_item.id.startswith("rs_"), f"Expected ID to start with 'rs_', got: {reasoning_item.id}" assert reasoning_item.status == "stop" assert reasoning_item.role == "assistant" assert len(reasoning_item.content) == 1 From e4892735f046a799c00ddb8760ac83034ce0172e Mon Sep 17 00:00:00 2001 From: Sameer Kankute Date: Tue, 7 Oct 2025 23:56:39 +0530 Subject: [PATCH 22/84] fix gemini cli by actually streaming the response (#15264) * fix gemini cli by actually streaming the response * fix cost tracking * fix test --- litellm/proxy/google_endpoints/endpoints.py | 29 +++- .../test_google_api_endpoints.py | 143 ++++++++++++++++-- 2 files changed, 160 insertions(+), 12 deletions(-) diff --git a/litellm/proxy/google_endpoints/endpoints.py b/litellm/proxy/google_endpoints/endpoints.py index 51c6d5ab634..b6c0046a891 100644 --- a/litellm/proxy/google_endpoints/endpoints.py +++ b/litellm/proxy/google_endpoints/endpoints.py @@ -25,11 +25,23 @@ async def google_generate_content( fastapi_response: Response, user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth), ): - from litellm.proxy.proxy_server import llm_router + from litellm.proxy.proxy_server import llm_router, general_settings, proxy_config, version + from litellm.proxy.litellm_pre_call_utils import add_litellm_data_to_request data = await _read_request_body(request=request) if "model" not in data: data["model"] = model_name + + # Add user authentication metadata for cost tracking + data = await add_litellm_data_to_request( + data=data, + request=request, + user_api_key_dict=user_api_key_dict, + proxy_config=proxy_config, + general_settings=general_settings, + version=version, + ) + # call router if llm_router is None: raise HTTPException(status_code=500, detail="Router not initialized") @@ -51,7 +63,8 @@ async def google_stream_generate_content( fastapi_response: Response, user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth), ): - from litellm.proxy.proxy_server import llm_router + from litellm.proxy.proxy_server import llm_router, general_settings, proxy_config, version + from litellm.proxy.litellm_pre_call_utils import add_litellm_data_to_request data = await _read_request_body(request=request) @@ -60,10 +73,20 @@ async def google_stream_generate_content( data["stream"] = True # enforce streaming for this endpoint + # Add user authentication metadata for cost tracking + data = await add_litellm_data_to_request( + data=data, + request=request, + user_api_key_dict=user_api_key_dict, + proxy_config=proxy_config, + general_settings=general_settings, + version=version, + ) + # call router if llm_router is None: raise HTTPException(status_code=500, detail="Router not initialized") - response = await llm_router.agenerate_content(**data) + response = await llm_router.agenerate_content_stream(**data) # Check if response is an async iterator (streaming response) if hasattr(response, "__aiter__"): diff --git a/tests/test_litellm/proxy/google_endpoints/test_google_api_endpoints.py b/tests/test_litellm/proxy/google_endpoints/test_google_api_endpoints.py index 62e8aaf2794..6e1c6e11be0 100644 --- a/tests/test_litellm/proxy/google_endpoints/test_google_api_endpoints.py +++ b/tests/test_litellm/proxy/google_endpoints/test_google_api_endpoints.py @@ -60,13 +60,14 @@ def test_google_stream_generate_content_endpoint(): # Create a test client client = TestClient(google_router) - # Mock the router's agenerate_content method to return a stream - mock_stream = AsyncMock() - mock_stream.__aiter__ = lambda self: mock_stream - mock_stream.__anext__.side_effect = StopAsyncIteration + # Mock the router's agenerate_content_stream method to return a stream + async def mock_stream_generator(): + yield 'data: {"test": "stream_chunk_1"}\n\n' + yield 'data: {"test": "stream_chunk_2"}\n\n' + yield "data: [DONE]\n\n" with patch("litellm.proxy.proxy_server.llm_router") as mock_router: - mock_router.agenerate_content = AsyncMock(return_value=mock_stream) + mock_router.agenerate_content_stream = AsyncMock(return_value=mock_stream_generator()) # Send a request to the endpoint response = client.post( @@ -79,9 +80,133 @@ def test_google_stream_generate_content_endpoint(): # Verify the response assert response.status_code == 200 - # Verify that agenerate_content was called with correct parameters - mock_router.agenerate_content.assert_called_once() - call_args = mock_router.agenerate_content.call_args + # Verify that agenerate_content_stream was called with correct parameters + mock_router.agenerate_content_stream.assert_called_once() + call_args = mock_router.agenerate_content_stream.call_args assert call_args[1]["stream"] is True assert call_args[1]["model"] == "test-model" - assert call_args[1]["contents"] == [{"role": "user", "parts": [{"text": "Hello"}]}] \ No newline at end of file + assert call_args[1]["contents"] == [{"role": "user", "parts": [{"text": "Hello"}]}] + + +def test_google_generate_content_with_cost_tracking_metadata(): + """Test that the google_generate_content endpoint includes user metadata for cost tracking""" + try: + from fastapi.testclient import TestClient + from litellm.proxy.google_endpoints.endpoints import router as google_router + from litellm.proxy._types import UserAPIKeyAuth + except ImportError as e: + pytest.skip(f"Skipping test due to missing dependency: {e}") + + # Create a test client + client = TestClient(google_router) + + # Mock all required proxy server dependencies + with patch("litellm.proxy.proxy_server.llm_router") as mock_router, \ + patch("litellm.proxy.proxy_server.general_settings", {}), \ + patch("litellm.proxy.proxy_server.proxy_config") as mock_proxy_config, \ + patch("litellm.proxy.proxy_server.version", "1.0.0"), \ + patch("litellm.proxy.litellm_pre_call_utils.add_litellm_data_to_request") as mock_add_data: + + mock_router.agenerate_content = AsyncMock(return_value={"test": "response"}) + + # Mock add_litellm_data_to_request to return data with metadata + async def mock_add_litellm_data(data, request, user_api_key_dict, proxy_config, general_settings, version): + # Simulate adding user metadata + data["litellm_metadata"] = { + "user_api_key_user_id": "test-user-id", + "user_api_key_team_id": "test-team-id", + "user_api_key": "hashed-key", + } + return data + + mock_add_data.side_effect = mock_add_litellm_data + + # Send a request to the endpoint + response = client.post( + "/v1beta/models/test-model:generateContent", + json={ + "contents": [{"role": "user", "parts": [{"text": "Hello"}]}] + }, + headers={"Authorization": "Bearer sk-test-key"} + ) + + # Verify the response + assert response.status_code == 200 + + # Verify that add_litellm_data_to_request was called + mock_add_data.assert_called_once() + + # Verify that agenerate_content was called with metadata + mock_router.agenerate_content.assert_called_once() + call_args = mock_router.agenerate_content.call_args + called_data = call_args[1] + + # Verify that litellm_metadata exists and contains user information + assert "litellm_metadata" in called_data + assert called_data["litellm_metadata"]["user_api_key_user_id"] == "test-user-id" + assert called_data["litellm_metadata"]["user_api_key_team_id"] == "test-team-id" + + +def test_google_stream_generate_content_with_cost_tracking_metadata(): + """Test that the google_stream_generate_content endpoint includes user metadata for cost tracking""" + try: + from fastapi.testclient import TestClient + from litellm.proxy.google_endpoints.endpoints import router as google_router + except ImportError as e: + pytest.skip(f"Skipping test due to missing dependency: {e}") + + # Create a test client + client = TestClient(google_router) + + # Mock the router's agenerate_content_stream method to return a stream + mock_stream = AsyncMock() + mock_stream.__aiter__ = lambda self: mock_stream + mock_stream.__anext__.side_effect = StopAsyncIteration + + # Mock all required proxy server dependencies + with patch("litellm.proxy.proxy_server.llm_router") as mock_router, \ + patch("litellm.proxy.proxy_server.general_settings", {}), \ + patch("litellm.proxy.proxy_server.proxy_config") as mock_proxy_config, \ + patch("litellm.proxy.proxy_server.version", "1.0.0"), \ + patch("litellm.proxy.litellm_pre_call_utils.add_litellm_data_to_request") as mock_add_data: + + mock_router.agenerate_content_stream = AsyncMock(return_value=mock_stream) + + # Mock add_litellm_data_to_request to return data with metadata + async def mock_add_litellm_data(data, request, user_api_key_dict, proxy_config, general_settings, version): + # Simulate adding user metadata + data["litellm_metadata"] = { + "user_api_key_user_id": "test-user-id", + "user_api_key_team_id": "test-team-id", + "user_api_key": "hashed-key", + } + return data + + mock_add_data.side_effect = mock_add_litellm_data + + # Send a request to the endpoint + response = client.post( + "/v1beta/models/test-model:streamGenerateContent", + json={ + "contents": [{"role": "user", "parts": [{"text": "Hello"}]}] + }, + headers={"Authorization": "Bearer sk-test-key"} + ) + + # Verify the response + assert response.status_code == 200 + + # Verify that add_litellm_data_to_request was called + mock_add_data.assert_called_once() + + # Verify that agenerate_content_stream was called with metadata + mock_router.agenerate_content_stream.assert_called_once() + call_args = mock_router.agenerate_content_stream.call_args + called_data = call_args[1] + + # Verify that litellm_metadata exists and contains user information + assert "litellm_metadata" in called_data + assert called_data["litellm_metadata"]["user_api_key_user_id"] == "test-user-id" + assert called_data["litellm_metadata"]["user_api_key_team_id"] == "test-team-id" + # Verify stream is set to True + assert called_data["stream"] is True \ No newline at end of file From 51971f47507caaa1322e8b27ca513e4514316a0a Mon Sep 17 00:00:00 2001 From: Sameer Kankute Date: Tue, 7 Oct 2025 23:57:04 +0530 Subject: [PATCH 23/84] Add gpt-realtime-mini support (#15283) --- ...odel_prices_and_context_window_backup.json | 31 +++++++++++++++++++ model_prices_and_context_window.json | 31 +++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index f3030dcd597..a3f38e47bf3 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -13328,6 +13328,37 @@ "supports_system_messages": true, "supports_tool_choice": true }, + "gpt-realtime-mini": { + "cache_creation_input_audio_token_cost": 3e-07, + "cache_read_input_audio_token_cost": 3e-07, + "input_cost_per_audio_token": 1e-05, + "input_cost_per_token": 6e-07, + "litellm_provider": "openai", + "max_input_tokens": 128000, + "max_output_tokens": 4096, + "max_tokens": 4096, + "mode": "chat", + "output_cost_per_audio_token": 2e-05, + "output_cost_per_token": 2.4e-06, + "supported_endpoints": [ + "/v1/realtime" + ], + "supported_modalities": [ + "text", + "image", + "audio" + ], + "supported_output_modalities": [ + "text", + "audio" + ], + "supports_audio_input": true, + "supports_audio_output": true, + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_system_messages": true, + "supports_tool_choice": true + }, "gpt-realtime-2025-08-28": { "cache_creation_input_audio_token_cost": 4e-07, "cache_read_input_token_cost": 4e-07, diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index f3030dcd597..a3f38e47bf3 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -13328,6 +13328,37 @@ "supports_system_messages": true, "supports_tool_choice": true }, + "gpt-realtime-mini": { + "cache_creation_input_audio_token_cost": 3e-07, + "cache_read_input_audio_token_cost": 3e-07, + "input_cost_per_audio_token": 1e-05, + "input_cost_per_token": 6e-07, + "litellm_provider": "openai", + "max_input_tokens": 128000, + "max_output_tokens": 4096, + "max_tokens": 4096, + "mode": "chat", + "output_cost_per_audio_token": 2e-05, + "output_cost_per_token": 2.4e-06, + "supported_endpoints": [ + "/v1/realtime" + ], + "supported_modalities": [ + "text", + "image", + "audio" + ], + "supported_output_modalities": [ + "text", + "audio" + ], + "supports_audio_input": true, + "supports_audio_output": true, + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_system_messages": true, + "supports_tool_choice": true + }, "gpt-realtime-2025-08-28": { "cache_creation_input_audio_token_cost": 4e-07, "cache_read_input_token_cost": 4e-07, From c5eb22381d292647fbf9f7bfee0050f8de33a61b Mon Sep 17 00:00:00 2001 From: Tim Elfrink Date: Tue, 7 Oct 2025 20:28:46 +0200 Subject: [PATCH 24/84] fix(bedrock): include cacheWriteInputTokens in prompt_tokens calculation Fixes #15263 This PR fixes the cost calculation for Bedrock Anthropic models with prompt caching. **Root Cause:** PR #9838 incorrectly removed adding `cacheWriteInputTokens` to `prompt_tokens` for Bedrock, based on the assumption that it would cause double counting (similar to an Anthropic API issue). However, Bedrock's token structure is different: - **Bedrock API**: `inputTokens`, `cacheReadInputTokens`, and `cacheWriteInputTokens` are ALL separate values that should be summed for total input tokens - **Anthropic API**: Same structure - all three token types are separate The fix in #9838 was later reverted for Anthropic (correctly re-adding `cache_creation_input_tokens` to `prompt_tokens`), but Bedrock was never fixed. **Changes:** 1. Re-add `cacheWriteInputTokens` to `input_tokens` in Bedrock transformation 2. Update test assertions to reflect correct behavior 3. Add regression test for prompt caching cost calculation 4. Fix typo in Anthropic transformation where `cache_creation_tokens` was incorrectly set to `cache_read_input_tokens` **Testing:** - All existing Bedrock transformation tests pass - New test validates correct cost calculation with prompt caching - Verified costs are non-negative and accurate --- litellm/llms/anthropic/chat/transformation.py | 2 +- .../bedrock/chat/converse_transformation.py | 4 +-- .../llm_cost_calc/test_llm_cost_calc_utils.py | 25 +++++++++++++++++++ .../chat/test_converse_transformation.py | 18 +++++++++---- 4 files changed, 40 insertions(+), 9 deletions(-) diff --git a/litellm/llms/anthropic/chat/transformation.py b/litellm/llms/anthropic/chat/transformation.py index c7f0a6da61e..691b46af8da 100644 --- a/litellm/llms/anthropic/chat/transformation.py +++ b/litellm/llms/anthropic/chat/transformation.py @@ -878,7 +878,7 @@ class AnthropicConfig(AnthropicModelInfo, BaseConfig): prompt_tokens_details = PromptTokensDetailsWrapper( cached_tokens=cache_read_input_tokens, - cache_creation_tokens=cache_read_input_tokens, + cache_creation_tokens=cache_creation_input_tokens, cache_creation_token_details=cache_creation_token_details, ) completion_token_details = ( diff --git a/litellm/llms/bedrock/chat/converse_transformation.py b/litellm/llms/bedrock/chat/converse_transformation.py index a61cfa39e47..d099c9813d6 100644 --- a/litellm/llms/bedrock/chat/converse_transformation.py +++ b/litellm/llms/bedrock/chat/converse_transformation.py @@ -1092,10 +1092,8 @@ class AmazonConverseConfig(BaseConfig): cache_read_input_tokens = usage["cacheReadInputTokens"] input_tokens += cache_read_input_tokens if "cacheWriteInputTokens" in usage: - """ - Do not increment prompt_tokens with cacheWriteInputTokens - """ cache_creation_input_tokens = usage["cacheWriteInputTokens"] + input_tokens += cache_creation_input_tokens prompt_tokens_details = PromptTokensDetailsWrapper( cached_tokens=cache_read_input_tokens diff --git a/tests/test_litellm/litellm_core_utils/llm_cost_calc/test_llm_cost_calc_utils.py b/tests/test_litellm/litellm_core_utils/llm_cost_calc/test_llm_cost_calc_utils.py index 0c7a6b2942b..1541eea4939 100644 --- a/tests/test_litellm/litellm_core_utils/llm_cost_calc/test_llm_cost_calc_utils.py +++ b/tests/test_litellm/litellm_core_utils/llm_cost_calc/test_llm_cost_calc_utils.py @@ -626,3 +626,28 @@ def test_service_tier_fallback_pricing(): assert abs(std_cost[0] - expected_standard_prompt) < 1e-10, f"Standard prompt cost mismatch: {std_cost[0]} vs {expected_standard_prompt}" assert abs(std_cost[1] - expected_standard_completion) < 1e-10, f"Standard completion cost mismatch: {std_cost[1]} vs {expected_standard_completion}" + + +def test_bedrock_anthropic_prompt_caching(): + """Test Bedrock Anthropic models with prompt caching return correct costs.""" + model = "us.anthropic.claude-sonnet-4-5-20250929-v1:0" + usage = Usage( + prompt_tokens=52123, + completion_tokens=497, + total_tokens=52620, + cache_creation_input_tokens=7183, + cache_read_input_tokens=22465, + ) + + custom_llm_provider = "bedrock" + + prompt_cost, completion_cost = generic_cost_per_token( + model=model, + usage=usage, + custom_llm_provider=custom_llm_provider, + ) + + assert prompt_cost >= 0 + assert completion_cost >= 0 + assert round(prompt_cost, 3) == 0.845 + assert round(completion_cost, 5) == 0.00820 diff --git a/tests/test_litellm/llms/bedrock/chat/test_converse_transformation.py b/tests/test_litellm/llms/bedrock/chat/test_converse_transformation.py index 75c4484037a..d701b54d7f8 100644 --- a/tests/test_litellm/llms/bedrock/chat/test_converse_transformation.py +++ b/tests/test_litellm/llms/bedrock/chat/test_converse_transformation.py @@ -33,7 +33,7 @@ def test_transform_usage(): openai_usage = config._transform_usage(usage) assert ( openai_usage.prompt_tokens - == usage["inputTokens"] + usage["cacheReadInputTokens"] + == usage["inputTokens"] + usage["cacheReadInputTokens"] + usage["cacheWriteInputTokens"] ) assert openai_usage.completion_tokens == usage["outputTokens"] assert openai_usage.total_tokens == usage["totalTokens"] @@ -1620,7 +1620,9 @@ async def test_no_cache_control_no_cache_point(): def test_guarded_text_wraps_in_guardrail_converse_content(): """Test that guarded_text content type gets wrapped in guardContent blocks.""" - from litellm.litellm_core_utils.prompt_templates.factory import _bedrock_converse_messages_pt + from litellm.litellm_core_utils.prompt_templates.factory import ( + _bedrock_converse_messages_pt, + ) messages = [ { @@ -1711,7 +1713,9 @@ def test_guarded_text_with_system_messages(): def test_guarded_text_with_mixed_content_types(): """Test guarded_text with mixed content types including images.""" - from litellm.litellm_core_utils.prompt_templates.factory import _bedrock_converse_messages_pt + from litellm.litellm_core_utils.prompt_templates.factory import ( + _bedrock_converse_messages_pt, + ) messages = [ { @@ -1752,7 +1756,9 @@ def test_guarded_text_with_mixed_content_types(): @pytest.mark.asyncio async def test_async_guarded_text(): """Test async version of guarded_text processing.""" - from litellm.litellm_core_utils.prompt_templates.factory import BedrockConverseMessagesProcessor + from litellm.litellm_core_utils.prompt_templates.factory import ( + BedrockConverseMessagesProcessor, + ) messages = [ { @@ -1789,7 +1795,9 @@ async def test_async_guarded_text(): def test_guarded_text_with_tool_calls(): """Test guarded_text with tool calls in the conversation.""" - from litellm.litellm_core_utils.prompt_templates.factory import _bedrock_converse_messages_pt + from litellm.litellm_core_utils.prompt_templates.factory import ( + _bedrock_converse_messages_pt, + ) messages = [ { From 07a17d6d6b92b99cfcf0edb62a65ad6346630212 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 7 Oct 2025 12:36:17 -0700 Subject: [PATCH 25/84] [Feat] Proxy CLI - dont store existing key in the URL, store it in the state param (#15290) * Feat: CLI Auth fixes for UI SSO * fix auth.py * fix test ui sso.py --- litellm/proxy/client/cli/commands/auth.py | 3 +- litellm/proxy/management_endpoints/ui_sso.py | 29 ++++--- .../proxy/management_endpoints/test_ui_sso.py | 85 ++++++++++++++++--- 3 files changed, 94 insertions(+), 23 deletions(-) diff --git a/litellm/proxy/client/cli/commands/auth.py b/litellm/proxy/client/cli/commands/auth.py index ff9f05fd32a..1ac6ce3b13b 100644 --- a/litellm/proxy/client/cli/commands/auth.py +++ b/litellm/proxy/client/cli/commands/auth.py @@ -353,7 +353,8 @@ def login(ctx: click.Context): # Construct SSO login URL with CLI source and pre-generated key sso_url = f"{base_url}/sso/key/generate?source={LITELLM_CLI_SOURCE_IDENTIFIER}&key={key_id}" - # If we have an existing key, include it so the server can regenerate it + # If we have an existing key, include it as a parameter to the login endpoint + # The server will encode it in the OAuth state parameter for the SSO flow if existing_key: sso_url += f"&existing_key={existing_key}" diff --git a/litellm/proxy/management_endpoints/ui_sso.py b/litellm/proxy/management_endpoints/ui_sso.py index a65b9cc95d2..9eec551fb7a 100644 --- a/litellm/proxy/management_endpoints/ui_sso.py +++ b/litellm/proxy/management_endpoints/ui_sso.py @@ -669,11 +669,11 @@ async def auth_callback(request: Request, state: Optional[str] = None): # noqa: ) if state and state.startswith(f"{LITELLM_CLI_SESSION_TOKEN_PREFIX}:"): - # Extract the key ID from the state - key_id = state.split(":", 1)[1] - - # Get existing_key from query parameters if provided - existing_key = request.query_params.get("existing_key") + # Extract the key ID and existing_key from the state + # State format: {PREFIX}:{key}:{existing_key} or {PREFIX}:{key} + state_parts = state.split(":", 2) # Split into max 3 parts + key_id = state_parts[1] if len(state_parts) > 1 else None + existing_key = state_parts[2] if len(state_parts) > 2 else None verbose_proxy_logger.info( f"CLI SSO callback detected for key: {key_id}, existing_key: {existing_key}" @@ -1145,6 +1145,9 @@ class SSOAuthenticationHandler: ) -> str: """ Get the redirect URL for SSO + + Note: existing_key is not added to the URL to avoid changing the callback URL. + It should be passed via the state parameter instead. """ from litellm.proxy.utils import get_custom_url @@ -1154,10 +1157,6 @@ class SSOAuthenticationHandler: else: redirect_url += "/" + sso_callback_route - # Append existing_key as query parameter if provided - if existing_key: - redirect_url += f"?existing_key={existing_key}" - return redirect_url @staticmethod @@ -1348,7 +1347,11 @@ class SSOAuthenticationHandler: """ Checks the request 'source' if a cli state token was passed in - This is used to authenticate through the CLI login flow + This is used to authenticate through the CLI login flow. + + The state parameter format is: {PREFIX}:{key}:{existing_key} + - If existing_key is provided, it's included in the state + - The state parameter is used to pass data through the OAuth flow without changing the callback URL """ from litellm.constants import ( LITELLM_CLI_SESSION_TOKEN_PREFIX, @@ -1356,8 +1359,10 @@ class SSOAuthenticationHandler: ) if source == LITELLM_CLI_SOURCE_IDENTIFIER and key: - # Just use the key - existing_key will be passed separately via query params - return f"{LITELLM_CLI_SESSION_TOKEN_PREFIX}:{key}" + if existing_key: + return f"{LITELLM_CLI_SESSION_TOKEN_PREFIX}:{key}:{existing_key}" + else: + return f"{LITELLM_CLI_SESSION_TOKEN_PREFIX}:{key}" else: return None diff --git a/tests/test_litellm/proxy/management_endpoints/test_ui_sso.py b/tests/test_litellm/proxy/management_endpoints/test_ui_sso.py index 86339c0d227..bfd5358dba6 100644 --- a/tests/test_litellm/proxy/management_endpoints/test_ui_sso.py +++ b/tests/test_litellm/proxy/management_endpoints/test_ui_sso.py @@ -993,6 +993,40 @@ class TestSSOStateHandling: assert state is None + def test_get_cli_state_with_existing_key(self): + """Test generating CLI state with existing_key embedded in state parameter""" + from litellm.proxy.management_endpoints.ui_sso import SSOAuthenticationHandler + + state = SSOAuthenticationHandler._get_cli_state( + source="litellm-cli", + key="sk-new-key-123", + existing_key="sk-existing-key-456" + ) + + assert state is not None + assert state.startswith("litellm-session-token:") + assert "sk-new-key-123" in state + assert "sk-existing-key-456" in state + # Verify the format: {PREFIX}:{key}:{existing_key} + assert state == "litellm-session-token:sk-new-key-123:sk-existing-key-456" + + def test_get_cli_state_without_existing_key(self): + """Test generating CLI state without existing_key""" + from litellm.proxy.management_endpoints.ui_sso import SSOAuthenticationHandler + + state = SSOAuthenticationHandler._get_cli_state( + source="litellm-cli", + key="sk-new-key-789", + existing_key=None + ) + + assert state is not None + assert state.startswith("litellm-session-token:") + assert "sk-new-key-789" in state + # Verify the format: {PREFIX}:{key} (no third part) + assert state == "litellm-session-token:sk-new-key-789" + assert state.count(":") == 1 # Only one colon separator + class TestStateRouting: """Test state parameter routing logic""" @@ -1009,6 +1043,36 @@ class TestStateRouting: key_id = cli_state.split(":", 1)[1] assert key_id == "sk-test123" + def test_cli_state_parsing_with_existing_key(self): + """Test parsing CLI state with existing_key embedded""" + from litellm.constants import LITELLM_CLI_SESSION_TOKEN_PREFIX + + # State format: {PREFIX}:{key}:{existing_key} + cli_state = f"{LITELLM_CLI_SESSION_TOKEN_PREFIX}:sk-new-key-456:sk-existing-key-789" + + # Parse as done in auth_callback + state_parts = cli_state.split(":", 2) # Split into max 3 parts + key_id = state_parts[1] if len(state_parts) > 1 else None + existing_key = state_parts[2] if len(state_parts) > 2 else None + + assert key_id == "sk-new-key-456" + assert existing_key == "sk-existing-key-789" + + def test_cli_state_parsing_without_existing_key(self): + """Test parsing CLI state without existing_key""" + from litellm.constants import LITELLM_CLI_SESSION_TOKEN_PREFIX + + # State format: {PREFIX}:{key} + cli_state = f"{LITELLM_CLI_SESSION_TOKEN_PREFIX}:sk-new-key-999" + + # Parse as done in auth_callback + state_parts = cli_state.split(":", 2) # Split into max 3 parts + key_id = state_parts[1] if len(state_parts) > 1 else None + existing_key = state_parts[2] if len(state_parts) > 2 else None + + assert key_id == "sk-new-key-999" + assert existing_key is None + def test_non_cli_state_detection(self): """Test detection of non-CLI state parameters""" from litellm.constants import LITELLM_CLI_SESSION_TOKEN_PREFIX @@ -1310,16 +1374,15 @@ class TestCLIKeyRegenerationFlow: @pytest.mark.asyncio async def test_auth_callback_routes_to_cli_with_existing_key(self): - """Test that auth_callback properly routes CLI requests and preserves existing_key parameter""" + """Test that auth_callback properly routes CLI requests and extracts existing_key from state parameter""" from litellm.constants import LITELLM_CLI_SESSION_TOKEN_PREFIX from litellm.proxy.management_endpoints.ui_sso import auth_callback - # Mock request with existing_key query parameter + # Mock request (no query params needed - existing_key is in state) mock_request = MagicMock(spec=Request) - mock_request.query_params.get.return_value = "sk-existing-cli-key-123" - # CLI state - cli_state = f"{LITELLM_CLI_SESSION_TOKEN_PREFIX}:sk-new-session-key-456" + # CLI state with existing_key embedded: {PREFIX}:{key}:{existing_key} + cli_state = f"{LITELLM_CLI_SESSION_TOKEN_PREFIX}:sk-new-session-key-456:sk-existing-cli-key-123" # Mock the CLI callback and required proxy server components mock_result = {"user_id": "test-user", "email": "test@example.com"} @@ -1337,7 +1400,7 @@ class TestCLIKeyRegenerationFlow: # Act await auth_callback(request=mock_request, state=cli_state) - # Assert + # Assert - existing_key should be extracted from state parameter mock_cli_callback.assert_called_once_with( request=mock_request, key="sk-new-session-key-456", @@ -1345,8 +1408,8 @@ class TestCLIKeyRegenerationFlow: result=mock_result ) - def test_get_redirect_url_preserves_existing_key(self): - """Test that redirect URL generation preserves existing_key parameter""" + def test_get_redirect_url_does_not_include_existing_key_in_url(self): + """Test that redirect URL generation does NOT include existing_key in URL (uses state parameter instead)""" from litellm.proxy.management_endpoints.ui_sso import SSOAuthenticationHandler # Mock request @@ -1354,14 +1417,16 @@ class TestCLIKeyRegenerationFlow: mock_request.base_url = "https://test.litellm.ai/" with patch("litellm.proxy.utils.get_custom_url", return_value="https://test.litellm.ai"): - # Test with existing_key + # Test with existing_key - should NOT be in URL redirect_url = SSOAuthenticationHandler.get_redirect_url_for_sso( request=mock_request, sso_callback_route="sso/callback", existing_key="sk-existing-123" ) - assert "https://test.litellm.ai/sso/callback?existing_key=sk-existing-123" == redirect_url + # existing_key should NOT be in the URL + assert "https://test.litellm.ai/sso/callback" == redirect_url + assert "existing_key" not in redirect_url def test_get_redirect_url_without_existing_key(self): """Test that redirect URL generation works without existing_key parameter""" From d71d801e4d960f9327bb30a9ad764d01587b0138 Mon Sep 17 00:00:00 2001 From: Tim Elfrink Date: Tue, 7 Oct 2025 22:08:12 +0200 Subject: [PATCH 26/84] Add Cohere Embed v4 support for AWS Bedrock - Add cohere.embed-v4:0 to model pricing configs - Update bedrock_embedding_models constant - Update documentation with v4 model support Fixes #15272 --- docs/my-website/docs/providers/bedrock_embedding.md | 1 + litellm/constants.py | 1 + litellm/model_prices_and_context_window_backup.json | 10 ++++++++++ model_prices_and_context_window.json | 10 ++++++++++ 4 files changed, 22 insertions(+) diff --git a/docs/my-website/docs/providers/bedrock_embedding.md b/docs/my-website/docs/providers/bedrock_embedding.md index 69c5f3c86ec..cd492084711 100644 --- a/docs/my-website/docs/providers/bedrock_embedding.md +++ b/docs/my-website/docs/providers/bedrock_embedding.md @@ -265,6 +265,7 @@ print(response) | TwelveLabs Marengo Embed 2.7 | `embedding(model="bedrock/us.twelvelabs.marengo-embed-2-7-v1:0", input=input)` | Supports multimodal input (text, video, audio, image) | | Cohere Embeddings - English | `embedding(model="bedrock/cohere.embed-english-v3", input=input)` | [here](https://github.com/BerriAI/litellm/blob/f5905e100068e7a4d61441d7453d7cf5609c2121/litellm/llms/bedrock/embed/cohere_transformation.py#L18) | Cohere Embeddings - Multilingual | `embedding(model="bedrock/cohere.embed-multilingual-v3", input=input)` | [here](https://github.com/BerriAI/litellm/blob/f5905e100068e7a4d61441d7453d7cf5609c2121/litellm/llms/bedrock/embed/cohere_transformation.py#L18) +| Cohere Embed v4 | `embedding(model="bedrock/cohere.embed-v4:0", input=input)` | Supports text and image input, configurable dimensions (256, 512, 1024, 1536), 128k context length | ### Advanced - [Drop Unsupported Params](https://docs.litellm.ai/docs/completion/drop_params#openai-proxy-usage) diff --git a/litellm/constants.py b/litellm/constants.py index 3ff9a4b6fb0..7fe0e69a41f 100644 --- a/litellm/constants.py +++ b/litellm/constants.py @@ -871,6 +871,7 @@ bedrock_embedding_models: set = set( "amazon.titan-embed-text-v1", "cohere.embed-english-v3", "cohere.embed-multilingual-v3", + "cohere.embed-v4:0", "twelvelabs.marengo-embed-2-7-v1:0", ] ) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index a3f38e47bf3..bdfc4fd020b 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -5294,6 +5294,16 @@ "output_cost_per_token": 0.0, "supports_embedding_image_input": true }, + "cohere.embed-v4:0": { + "input_cost_per_token": 1.2e-07, + "litellm_provider": "bedrock", + "max_input_tokens": 128000, + "max_tokens": 128000, + "mode": "embedding", + "output_cost_per_token": 0.0, + "output_vector_size": 1536, + "supports_embedding_image_input": true + }, "cohere.rerank-v3-5:0": { "input_cost_per_query": 0.002, "input_cost_per_token": 0.0, diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index a3f38e47bf3..bdfc4fd020b 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -5294,6 +5294,16 @@ "output_cost_per_token": 0.0, "supports_embedding_image_input": true }, + "cohere.embed-v4:0": { + "input_cost_per_token": 1.2e-07, + "litellm_provider": "bedrock", + "max_input_tokens": 128000, + "max_tokens": 128000, + "mode": "embedding", + "output_cost_per_token": 0.0, + "output_vector_size": 1536, + "supports_embedding_image_input": true + }, "cohere.rerank-v3-5:0": { "input_cost_per_query": 0.002, "input_cost_per_token": 0.0, From bc26eff98f84ec99c044fb51f098e814568b8120 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 7 Oct 2025 14:04:08 -0700 Subject: [PATCH 27/84] Fix: Make PATCH /model/{model_id}/update handle team_id consistently with POST /model/new (#15297) * fix: _update_team_model_in_db * test_patch_model_with_team_id_creates_proper_setup --- .../model_management_endpoints.py | 147 +++++++++++++++++- .../test_model_management_endpoints.py | 86 ++++++++++ 2 files changed, 231 insertions(+), 2 deletions(-) diff --git a/litellm/proxy/management_endpoints/model_management_endpoints.py b/litellm/proxy/management_endpoints/model_management_endpoints.py index 8f9c6edd2b7..9e9301dbbe8 100644 --- a/litellm/proxy/management_endpoints/model_management_endpoints.py +++ b/litellm/proxy/management_endpoints/model_management_endpoints.py @@ -218,8 +218,14 @@ async def patch_model( prisma_client=prisma_client, premium_user=premium_user, ) - # Create update dictionary only for provided fields - update_data = update_db_model(db_model=db_model, updated_patch=patch_data) + + # Handle team model updates with proper alias management + update_data = await _update_team_model_in_db( + db_model=db_model, + patch_data=patch_data, + user_api_key_dict=user_api_key_dict, + prisma_client=prisma_client, + ) # Add metadata about update update_data["updated_by"] = ( @@ -361,6 +367,143 @@ async def _add_team_model_to_db( return model_response +async def _update_team_model_in_db( + db_model: Deployment, + patch_data: updateDeployment, + user_api_key_dict: UserAPIKeyAuth, + prisma_client: PrismaClient, +) -> PrismaCompatibleUpdateDBModel: + """ + Handle team model updates with proper alias management. + + If patch_data contains a team_id: + - Creates unique internal model_name and team alias + - Adds model to team object + - Preserves team_public_model_name for external reference + """ + # Validate team_id if present in patch_data + from litellm.proxy.proxy_server import premium_user + + await ModelManagementAuthChecks.allow_team_model_action( + model_params=patch_data, + user_api_key_dict=user_api_key_dict, + prisma_client=prisma_client, + premium_user=premium_user, + ) + + patch_team_id = patch_data.model_info.team_id if patch_data.model_info else None + + # No team_id in patch, proceed with standard update + if patch_team_id is None: + return update_db_model(db_model=db_model, updated_patch=patch_data) + + # Determine public model name + public_model_name = _get_public_model_name( + patch_data=patch_data, + db_model=db_model, + ) + + # Ensure model_info exists and set team_public_model_name + if patch_data.model_info is None: + from litellm.types.router import ModelInfo + patch_data.model_info = ModelInfo() + patch_data.model_info.team_public_model_name = public_model_name + + # Check if team assignment is new or changed + db_team_id = db_model.model_info.team_id if db_model.model_info else None + is_new_team_assignment = db_team_id != patch_team_id + + if is_new_team_assignment: + await _setup_new_team_model_assignment( + team_id=patch_team_id, + public_model_name=public_model_name, + patch_data=patch_data, + user_api_key_dict=user_api_key_dict, + ) + else: + await _update_existing_team_model_assignment( + team_id=patch_team_id, + public_model_name=public_model_name, + db_model=db_model, + patch_data=patch_data, + user_api_key_dict=user_api_key_dict, + ) + + return update_db_model(db_model=db_model, updated_patch=patch_data) + + +def _get_public_model_name( + patch_data: updateDeployment, + db_model: Deployment, +) -> str: + """Determine the public model name from patch or existing model.""" + if patch_data.model_name: + return patch_data.model_name + + if db_model.model_info and db_model.model_info.team_public_model_name: + return db_model.model_info.team_public_model_name + + return db_model.model_name + + +async def _setup_new_team_model_assignment( + team_id: str, + public_model_name: str, + patch_data: updateDeployment, + user_api_key_dict: UserAPIKeyAuth, +) -> None: + """Set up a new team model with unique name, alias, and team membership.""" + unique_model_name = f"model_name_{team_id}_{uuid.uuid4()}" + patch_data.model_name = unique_model_name + + await update_team( + data=UpdateTeamRequest( + team_id=team_id, + model_aliases={public_model_name: unique_model_name}, + ), + user_api_key_dict=user_api_key_dict, + http_request=Request(scope={"type": "http"}), + ) + + await team_model_add( + data=TeamModelAddRequest( + team_id=team_id, + models=[public_model_name], + ), + http_request=Request(scope={"type": "http"}), + user_api_key_dict=user_api_key_dict, + ) + + +async def _update_existing_team_model_assignment( + team_id: str, + public_model_name: str, + db_model: Deployment, + patch_data: updateDeployment, + user_api_key_dict: UserAPIKeyAuth, +) -> None: + """Update an existing team model if the public name changed.""" + old_public_name = ( + db_model.model_info.team_public_model_name + if db_model.model_info + else None + ) + + # Update alias only if public name changed + if old_public_name and public_model_name != old_public_name: + await update_team( + data=UpdateTeamRequest( + team_id=team_id, + model_aliases={public_model_name: db_model.model_name}, + ), + user_api_key_dict=user_api_key_dict, + http_request=Request(scope={"type": "http"}), + ) + + # Keep existing unique model_name + patch_data.model_name = None + + class ModelManagementAuthChecks: """ Common auth checks for model management endpoints diff --git a/tests/test_litellm/proxy/management_endpoints/test_model_management_endpoints.py b/tests/test_litellm/proxy/management_endpoints/test_model_management_endpoints.py index 2f736e4e1d1..e70bc57e59b 100644 --- a/tests/test_litellm/proxy/management_endpoints/test_model_management_endpoints.py +++ b/tests/test_litellm/proxy/management_endpoints/test_model_management_endpoints.py @@ -453,6 +453,92 @@ class TestClearCache: ) +class TestTeamModelUpdate: + """Test team model update handles team_id consistently with model creation""" + + @pytest.mark.asyncio + async def test_patch_model_with_team_id_creates_proper_setup(self): + """Test PATCH with team_id creates unique model name, alias, and team membership like POST does""" + from litellm.proxy.management_endpoints.model_management_endpoints import ( + _update_team_model_in_db, + ) + from litellm.types.router import ModelInfo + + patch_data = updateDeployment( + model_name="tenant-azure-gpt4", + model_info=ModelInfo( + team_id="test_team_123", + base_model="azure/gpt-4", + ), + ) + db_model = Deployment( + model_name="original-model", + litellm_params=LiteLLM_Params(model="test_model"), + model_info=ModelInfo(), + ) + user_api_key_dict = UserAPIKeyAuth( + user_id="test_user", + user_role=LitellmUserRoles.PROXY_ADMIN, + ) + prisma_client = MockPrismaClient(team_exists=True) + + with patch( + "litellm.proxy.proxy_server.premium_user", + True, + ), patch( + "litellm.proxy.management_endpoints.model_management_endpoints.update_team" + ) as mock_update_team, patch( + "litellm.proxy.management_endpoints.model_management_endpoints.team_model_add" + ) as mock_team_model_add: + result = await _update_team_model_in_db( + db_model=db_model, + patch_data=patch_data, + user_api_key_dict=user_api_key_dict, + prisma_client=prisma_client, # type: ignore + ) + + assert result.get("model_name", "").startswith("model_name_test_team_123_") + assert "team_public_model_name" in str(result.get("model_info", "")) + mock_update_team.assert_called_once() + mock_team_model_add.assert_called_once() + + @pytest.mark.asyncio + async def test_patch_model_with_team_id_validates_permissions(self): + """Test PATCH with team_id runs same validation as POST for team permissions""" + from litellm.proxy.management_endpoints.model_management_endpoints import ( + _update_team_model_in_db, + ) + from litellm.types.router import ModelInfo + + patch_data = updateDeployment( + model_name="tenant-azure-gpt4", + model_info=ModelInfo(team_id="test_team_123"), + ) + db_model = Deployment( + model_name="original-model", + litellm_params=LiteLLM_Params(model="test_model"), + model_info=ModelInfo(), + ) + user_api_key_dict = UserAPIKeyAuth( + user_id="test_user", + user_role=LitellmUserRoles.INTERNAL_USER, + ) + prisma_client = MockPrismaClient(team_exists=True, user_admin=False) + + with patch( + "litellm.proxy.proxy_server.premium_user", + True, + ): + with pytest.raises(Exception) as exc_info: + await _update_team_model_in_db( + db_model=db_model, + patch_data=patch_data, + user_api_key_dict=user_api_key_dict, + prisma_client=prisma_client, # type: ignore + ) + assert "403" in str(exc_info.value) + + class TestModelInfoEndpoint: """Test the model_info endpoint for retrieving individual model information""" From f72f21b261c7e121ca76913985ecf3fb9d0c5aca Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Tue, 7 Oct 2025 16:18:48 -0700 Subject: [PATCH 28/84] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 1ab79c01806..f5190e67c02 100644 --- a/requirements.txt +++ b/requirements.txt @@ -54,7 +54,7 @@ rich==13.7.1 # for litellm proxy cli jinja2==3.1.6 # for prompt templates aiohttp==3.12.14 # for network calls aioboto3==13.4.0 # for async sagemaker calls -tenacity==8.2.3 # for retrying requests, when litellm.num_retries set +tenacity==8.5.0 # for retrying requests, when litellm.num_retries set pydantic==2.10.2 # proxy + openai req. jsonschema==4.22.0 # validating json schema websockets==13.1.0 # for realtime API From 49e04e02174e03d55ae38c108b58c15fdb40bdd8 Mon Sep 17 00:00:00 2001 From: Alexsander Hamir Date: Tue, 7 Oct 2025 16:45:42 -0700 Subject: [PATCH 29/84] [Fix] Networking: remove limitations (#15302) * fix: remove limitations * fix: linter issues --- litellm/llms/custom_httpx/http_handler.py | 24 +++++++---------------- litellm/llms/openai/common_utils.py | 2 -- 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/litellm/llms/custom_httpx/http_handler.py b/litellm/llms/custom_httpx/http_handler.py index 3a67d5127b7..138c31ba716 100644 --- a/litellm/llms/custom_httpx/http_handler.py +++ b/litellm/llms/custom_httpx/http_handler.py @@ -164,7 +164,7 @@ class AsyncHTTPHandler: self, timeout: Optional[Union[float, httpx.Timeout]] = None, event_hooks: Optional[Mapping[str, List[Callable[..., Any]]]] = None, - concurrent_limit=1000, + concurrent_limit=None, # Kept for backward compatibility, but ignored (no limits) client_alias: Optional[str] = None, # name for client in logs ssl_verify: Optional[VerifyTypes] = None, shared_session: Optional["ClientSession"] = None, @@ -173,7 +173,6 @@ class AsyncHTTPHandler: self.event_hooks = event_hooks self.client = self.create_client( timeout=timeout, - concurrent_limit=concurrent_limit, event_hooks=event_hooks, ssl_verify=ssl_verify, shared_session=shared_session, @@ -183,7 +182,6 @@ class AsyncHTTPHandler: def create_client( self, timeout: Optional[Union[float, httpx.Timeout]], - concurrent_limit: int, event_hooks: Optional[Mapping[str, List[Callable[..., Any]]]], ssl_verify: Optional[VerifyTypes] = None, shared_session: Optional["ClientSession"] = None, @@ -209,10 +207,6 @@ class AsyncHTTPHandler: transport=transport, event_hooks=event_hooks, timeout=timeout, - limits=httpx.Limits( - max_connections=concurrent_limit, - max_keepalive_connections=concurrent_limit, - ), verify=ssl_config, cert=cert, headers=headers, @@ -286,7 +280,7 @@ class AsyncHTTPHandler: except (httpx.RemoteProtocolError, httpx.ConnectError): # Retry the request with a new session if there is a connection error new_client = self.create_client( - timeout=timeout, concurrent_limit=1, event_hooks=self.event_hooks + timeout=timeout, event_hooks=self.event_hooks ) try: return await self.single_connection_post_request( @@ -352,7 +346,7 @@ class AsyncHTTPHandler: except (httpx.RemoteProtocolError, httpx.ConnectError): # Retry the request with a new session if there is a connection error new_client = self.create_client( - timeout=timeout, concurrent_limit=1, event_hooks=self.event_hooks + timeout=timeout, event_hooks=self.event_hooks ) try: return await self.single_connection_post_request( @@ -412,7 +406,7 @@ class AsyncHTTPHandler: except (httpx.RemoteProtocolError, httpx.ConnectError): # Retry the request with a new session if there is a connection error new_client = self.create_client( - timeout=timeout, concurrent_limit=1, event_hooks=self.event_hooks + timeout=timeout, event_hooks=self.event_hooks ) try: return await self.single_connection_post_request( @@ -471,7 +465,7 @@ class AsyncHTTPHandler: except (httpx.RemoteProtocolError, httpx.ConnectError): # Retry the request with a new session if there is a connection error new_client = self.create_client( - timeout=timeout, concurrent_limit=1, event_hooks=self.event_hooks + timeout=timeout, event_hooks=self.event_hooks ) try: return await self.single_connection_post_request( @@ -657,7 +651,7 @@ class AsyncHTTPHandler: ) return LiteLLMAiohttpTransport( client=lambda: ClientSession( - connector=TCPConnector(**connector_kwargs), + connector=TCPConnector(limit=0, **connector_kwargs), # 0 = unlimited connections per host trust_env=trust_env, ), ) @@ -680,7 +674,7 @@ class HTTPHandler: def __init__( self, timeout: Optional[Union[float, httpx.Timeout]] = None, - concurrent_limit=1000, + concurrent_limit=None, # Kept for backward compatibility, but ignored (no limits) client: Optional[httpx.Client] = None, ssl_verify: Optional[Union[bool, str]] = None, ): @@ -701,10 +695,6 @@ class HTTPHandler: self.client = httpx.Client( transport=transport, timeout=timeout, - limits=httpx.Limits( - max_connections=concurrent_limit, - max_keepalive_connections=concurrent_limit, - ), verify=ssl_config, cert=cert, headers=headers, diff --git a/litellm/llms/openai/common_utils.py b/litellm/llms/openai/common_utils.py index 00197a67e95..ce470f04aca 100644 --- a/litellm/llms/openai/common_utils.py +++ b/litellm/llms/openai/common_utils.py @@ -207,7 +207,6 @@ class BaseOpenAILLM: ssl_config = get_ssl_configuration() return httpx.AsyncClient( - limits=httpx.Limits(max_connections=1000, max_keepalive_connections=100), verify=ssl_config, transport=AsyncHTTPHandler._create_async_transport( ssl_context=ssl_config @@ -228,7 +227,6 @@ class BaseOpenAILLM: ssl_config = get_ssl_configuration() return httpx.Client( - limits=httpx.Limits(max_connections=1000, max_keepalive_connections=100), verify=ssl_config, follow_redirects=True, ) From 7b56ba240ebf56a6849b812d4504271ba3a09c2e Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 7 Oct 2025 16:48:00 -0700 Subject: [PATCH 30/84] [MCP Gateway] Litellm mcp fixes team control (#15304) * fix: _set_object_permission * fix: _set_object_permission on teams * fix: _set_object_permission * fixes for team/key permissions * statsh: object permission view * fix: MCPServerPermissions --- .../key_management_endpoints.py | 31 +- .../management_endpoints/team_endpoints.py | 36 +- .../object_permission_utils.py | 35 ++ .../test_key_management_endpoints.py | 92 +++++ .../test_team_endpoints.py | 44 +-- .../test_object_permission_utils.py | 84 +++++ .../components/object_permissions_view.tsx | 9 +- .../permissions/MCPServerPermissions.test.tsx | 356 ++++++++++++++++++ .../permissions/MCPServerPermissions.tsx | 109 ++++-- 9 files changed, 694 insertions(+), 102 deletions(-) create mode 100644 tests/test_litellm/proxy/management_helpers/test_object_permission_utils.py create mode 100644 ui/litellm-dashboard/src/components/permissions/MCPServerPermissions.test.tsx diff --git a/litellm/proxy/management_endpoints/key_management_endpoints.py b/litellm/proxy/management_endpoints/key_management_endpoints.py index fb6c11afba4..68af5b4c9f5 100644 --- a/litellm/proxy/management_endpoints/key_management_endpoints.py +++ b/litellm/proxy/management_endpoints/key_management_endpoints.py @@ -50,6 +50,7 @@ from litellm.proxy.management_endpoints.model_management_endpoints import ( from litellm.proxy.management_helpers.object_permission_utils import ( attach_object_permission_to_dict, handle_update_object_permission_common, + _set_object_permission, ) from litellm.proxy.management_helpers.team_member_permission_checks import ( TeamMemberPermissionChecks, @@ -1114,36 +1115,6 @@ def prepare_metadata_fields( return non_default_values -async def _set_object_permission( - data_json: dict, - prisma_client: Optional[PrismaClient], -): - """ - Creates the LiteLLM_ObjectPermissionTable record for the key. - - Handles permissions for vector stores and mcp servers. - """ - if prisma_client is None: - return data_json - - if "object_permission" in data_json: - # Serialize mcp_tool_permissions JSON field to avoid GraphQL parsing issues - # (e.g., server IDs starting with "3e64" being interpreted as floats) - if "mcp_tool_permissions" in data_json["object_permission"]: - data_json["object_permission"]["mcp_tool_permissions"] = safe_dumps( - data_json["object_permission"]["mcp_tool_permissions"] - ) - - created_object_permission = ( - await prisma_client.db.litellm_objectpermissiontable.create( - data=data_json["object_permission"], - ) - ) - data_json["object_permission_id"] = ( - created_object_permission.object_permission_id - ) - # delete the object_permission from the data_json - data_json.pop("object_permission") - return data_json async def prepare_key_update_data( diff --git a/litellm/proxy/management_endpoints/team_endpoints.py b/litellm/proxy/management_endpoints/team_endpoints.py index b8c0aefded2..d05a0259f46 100644 --- a/litellm/proxy/management_endpoints/team_endpoints.py +++ b/litellm/proxy/management_endpoints/team_endpoints.py @@ -56,6 +56,9 @@ from litellm.proxy._types import ( UpdateTeamRequest, UserAPIKeyAuth, ) +from litellm.proxy.management_helpers.object_permission_utils import ( + _set_object_permission, +) from litellm.proxy.auth.auth_checks import ( allowed_route_check_inside_route, can_org_access_model, @@ -473,14 +476,15 @@ async def new_team( # noqa: PLR0915 _model_id = model_dict.id + ## Create Team Member Budget Table + data_json = data.json() + ## Handle Object Permission - MCP, Vector Stores etc. - object_permission_id = await _set_object_permission( - data=data, + data_json = await _set_object_permission( + data_json=data_json, prisma_client=prisma_client, ) - ## Create Team Member Budget Table - data_json = data.json() if TeamMemberBudgetHandler.should_create_budget( team_member_budget=data.team_member_budget, team_member_rpm_limit=data.team_member_rpm_limit, @@ -499,7 +503,6 @@ async def new_team( # noqa: PLR0915 complete_team_data = LiteLLM_TeamTable( **data_json, model_id=_model_id, - object_permission_id=object_permission_id, ) # Set Management Endpoint Metadata Fields @@ -616,29 +619,6 @@ async def _update_model_table( return _model_id -async def _set_object_permission( - data: NewTeamRequest, - prisma_client: Optional[PrismaClient], -) -> Optional[str]: - """ - Creates the LiteLLM_ObjectPermissionTable record for the team. - - Handles permissions for vector stores and mcp servers. - - Returns the object_permission_id if created, otherwise None. - """ - if prisma_client is None: - return None - - if data.object_permission is not None: - created_object_permission = ( - await prisma_client.db.litellm_objectpermissiontable.create( - data=data.object_permission.model_dump(exclude_none=True), - ) - ) - del data.object_permission - return created_object_permission.object_permission_id - return None - def validate_team_org_change( team: LiteLLM_TeamTable, organization: LiteLLM_OrganizationTable, llm_router: Router diff --git a/litellm/proxy/management_helpers/object_permission_utils.py b/litellm/proxy/management_helpers/object_permission_utils.py index fb2656b6018..9670cdf330a 100644 --- a/litellm/proxy/management_helpers/object_permission_utils.py +++ b/litellm/proxy/management_helpers/object_permission_utils.py @@ -143,3 +143,38 @@ async def handle_update_object_permission_common( ) return created_object_permission_row.object_permission_id + + +async def _set_object_permission( + data_json: dict, + prisma_client: Optional[PrismaClient], +): + """ + Creates the LiteLLM_ObjectPermissionTable record for the key/team. + Handles permissions for vector stores and mcp servers. + """ + if prisma_client is None or "object_permission" not in data_json: + return data_json + + permission_data = data_json["object_permission"] + if not isinstance(permission_data, dict): + data_json.pop("object_permission") + return data_json + + # Clean data: exclude None values and object_permission_id + clean_data = { + k: v for k, v in permission_data.items() + if v is not None and k != "object_permission_id" + } + + # Serialize mcp_tool_permissions to JSON string for GraphQL compatibility + if "mcp_tool_permissions" in clean_data: + clean_data["mcp_tool_permissions"] = safe_dumps(clean_data["mcp_tool_permissions"]) + + created_permission = await prisma_client.db.litellm_objectpermissiontable.create( + data=clean_data + ) + + data_json["object_permission_id"] = created_permission.object_permission_id + data_json.pop("object_permission") + return data_json \ No newline at end of file diff --git a/tests/test_litellm/proxy/management_endpoints/test_key_management_endpoints.py b/tests/test_litellm/proxy/management_endpoints/test_key_management_endpoints.py index b6c4c609bc9..3626e170782 100644 --- a/tests/test_litellm/proxy/management_endpoints/test_key_management_endpoints.py +++ b/tests/test_litellm/proxy/management_endpoints/test_key_management_endpoints.py @@ -1813,3 +1813,95 @@ def test_check_team_key_model_specific_limits_rpm_overallocation(): "Allocated RPM limit=800 + Key RPM limit=300 is greater than team RPM limit=1000" in str(exc_info.value.detail) ) + + +@pytest.mark.asyncio +async def test_generate_key_with_object_permission(): + """ + Test that /key/generate correctly handles object_permission by: + 1. Creating a record in litellm_objectpermissiontable + 2. Passing the returned object_permission_id into the key insert payload + 3. NOT passing the object_permission dict to the key table + """ + from unittest.mock import patch + + from litellm.proxy._types import ( + GenerateKeyRequest, + LiteLLM_ObjectPermissionBase, + LitellmUserRoles, + ) + from litellm.proxy.auth.user_api_key_auth import UserAPIKeyAuth + from litellm.proxy.management_endpoints.key_management_endpoints import ( + _common_key_generation_helper, + ) + + # Mock prisma client + mock_prisma_client = MagicMock() + mock_prisma_client.jsonify_object = lambda x: x + + # Mock object permission creation + mock_object_perm_create = AsyncMock( + return_value=MagicMock(object_permission_id="objperm_key_456") + ) + mock_prisma_client.db.litellm_objectpermissiontable = MagicMock() + mock_prisma_client.db.litellm_objectpermissiontable.create = mock_object_perm_create + + # Mock key insertion + mock_key_insert = AsyncMock( + return_value=MagicMock( + token="hashed_token_123", + litellm_budget_table=None, + created_at="2024-01-01T00:00:00Z", + updated_at="2024-01-01T00:00:00Z", + ) + ) + mock_prisma_client.insert_data = mock_key_insert + + # Create request with object_permission + key_request = GenerateKeyRequest( + models=["gpt-4"], + object_permission=LiteLLM_ObjectPermissionBase( + vector_stores=["vector_store_1"], + mcp_servers=["mcp_server_1"], + ), + ) + + mock_admin_auth = UserAPIKeyAuth( + user_role=LitellmUserRoles.PROXY_ADMIN, + user_id="admin_user", + ) + + # Patch the prisma_client and other dependencies + with patch( + "litellm.proxy.management_endpoints.key_management_endpoints.prisma_client", + mock_prisma_client, + ), patch( + "litellm.proxy.management_endpoints.key_management_endpoints.llm_router", None + ), patch( + "litellm.proxy.management_endpoints.key_management_endpoints.premium_user", + False, + ), patch( + "litellm.proxy.management_endpoints.key_management_endpoints.litellm_proxy_admin_name", + "admin", + ): + # Execute + result = await _common_key_generation_helper( + data=key_request, + user_api_key_dict=mock_admin_auth, + litellm_changed_by=None, + team_table=None, + ) + + # Verify object permission creation was called + mock_object_perm_create.assert_awaited_once() + + # Verify key insertion was called + assert mock_key_insert.call_count == 1 + key_insert_kwargs = mock_key_insert.call_args.kwargs + key_data = key_insert_kwargs["data"] + + # Verify object_permission_id is in the key data + assert key_data.get("object_permission_id") == "objperm_key_456" + + # Verify object_permission dict is NOT in the key data + assert "object_permission" not in key_data diff --git a/tests/test_litellm/proxy/management_endpoints/test_team_endpoints.py b/tests/test_litellm/proxy/management_endpoints/test_team_endpoints.py index f652819b317..929ec41e09a 100644 --- a/tests/test_litellm/proxy/management_endpoints/test_team_endpoints.py +++ b/tests/test_litellm/proxy/management_endpoints/test_team_endpoints.py @@ -254,33 +254,32 @@ async def test_update_team_permissions_success(mock_db_client, mock_admin_auth): @pytest.mark.asyncio async def test_new_team_with_object_permission(mock_db_client, mock_admin_auth): - """Ensure /team/new correctly handles `object_permission` by - 1. Creating a record in litellm_objectpermissiontable - 2. Passing the returned `object_permission_id` into the team insert payload """ - # --- Configure mocked prisma client --- - # Helper identity converters used by team logic - mock_db_client.jsonify_team_object = lambda db_data: db_data # type: ignore + Test that /team/new correctly handles object_permission by: + 1. Creating a record in litellm_objectpermissiontable + 2. Passing the returned object_permission_id into the team insert payload + 3. NOT passing the object_permission dict to the team table + """ + # Configure mocked prisma client + mock_db_client.jsonify_team_object = lambda db_data: db_data mock_db_client.get_data = AsyncMock(return_value=None) mock_db_client.update_data = AsyncMock(return_value=MagicMock()) - - # Mock DB structure under prisma_client.db mock_db_client.db = MagicMock() - # 1. Mock object permission table creation + # Mock object permission table creation mock_object_perm_create = AsyncMock( return_value=MagicMock(object_permission_id="objperm123") ) mock_db_client.db.litellm_objectpermissiontable = MagicMock() mock_db_client.db.litellm_objectpermissiontable.create = mock_object_perm_create - # 2. Mock model table creation (may be skipped but provided for safety) + # Mock model table creation mock_db_client.db.litellm_modeltable = MagicMock() mock_db_client.db.litellm_modeltable.create = AsyncMock( return_value=MagicMock(id="model123") ) - # 3. Capture team table creation and count + # Capture team table creation team_create_result = MagicMock( team_id="team-456", object_permission_id="objperm123", @@ -290,9 +289,7 @@ async def test_new_team_with_object_permission(mock_db_client, mock_admin_auth): "object_permission_id": "objperm123", } mock_team_create = AsyncMock(return_value=team_create_result) - mock_team_count = AsyncMock( - return_value=0 - ) # Mock count to return 0 (no existing teams) + mock_team_count = AsyncMock(return_value=0) mock_db_client.db.litellm_teamtable = MagicMock() mock_db_client.db.litellm_teamtable.create = mock_team_create mock_db_client.db.litellm_teamtable.count = mock_team_count @@ -300,23 +297,21 @@ async def test_new_team_with_object_permission(mock_db_client, mock_admin_auth): return_value=team_create_result ) - # 4. Mock user table update behaviour (called for each member) + # Mock user table mock_db_client.db.litellm_usertable = MagicMock() mock_db_client.db.litellm_usertable.update = AsyncMock(return_value=MagicMock()) - # --- Import after mocks applied --- from fastapi import Request from litellm.proxy._types import LiteLLM_ObjectPermissionBase, NewTeamRequest from litellm.proxy.management_endpoints.team_endpoints import new_team - # Build request objects + # Build request with object_permission team_request = NewTeamRequest( team_alias="my-team", object_permission=LiteLLM_ObjectPermissionBase(vector_stores=["my-vector"]), ) - # Pass a dummy FastAPI Request object dummy_request = MagicMock(spec=Request) # Execute the endpoint function @@ -326,14 +321,19 @@ async def test_new_team_with_object_permission(mock_db_client, mock_admin_auth): user_api_key_dict=mock_admin_auth, ) - # --- Assertions --- - # 1. Object permission creation should be called exactly once + # Verify object permission creation was called mock_object_perm_create.assert_awaited_once() - # 2. Team creation payload should include the generated object_permission_id + # Verify team creation was called assert mock_team_create.call_count == 1 created_team_kwargs = mock_team_create.call_args.kwargs - assert created_team_kwargs["data"].get("object_permission_id") == "objperm123" + team_data = created_team_kwargs["data"] + + # Verify object_permission_id is in the team data + assert team_data.get("object_permission_id") == "objperm123" + + # Verify object_permission dict is NOT in the team data + assert "object_permission" not in team_data @pytest.mark.asyncio diff --git a/tests/test_litellm/proxy/management_helpers/test_object_permission_utils.py b/tests/test_litellm/proxy/management_helpers/test_object_permission_utils.py new file mode 100644 index 00000000000..07d89035dce --- /dev/null +++ b/tests/test_litellm/proxy/management_helpers/test_object_permission_utils.py @@ -0,0 +1,84 @@ +import json +import os +import sys + +import pytest + +sys.path.insert( + 0, os.path.abspath("../../../..") +) + +from unittest.mock import AsyncMock, MagicMock + +from litellm.proxy.management_helpers.object_permission_utils import ( + _set_object_permission, +) + + +@pytest.mark.asyncio +async def test_set_object_permission(): + """ + Test that _set_object_permission correctly: + 1. Creates an object permission record in the database + 2. Excludes None values from the data + 3. Excludes object_permission_id from the data sent to create + 4. Serializes mcp_tool_permissions to JSON string + 5. Returns data_json with object_permission_id set and object_permission removed + """ + # Mock prisma client + mock_prisma_client = MagicMock() + mock_created_permission = MagicMock() + mock_created_permission.object_permission_id = "test_perm_id_123" + + mock_prisma_client.db.litellm_objectpermissiontable.create = AsyncMock( + return_value=mock_created_permission + ) + + # Test data with object_permission + data_json = { + "user_id": "test_user", + "models": ["gpt-4"], + "object_permission": { + "vector_stores": ["store_1", "store_2"], + "mcp_servers": ["server_a"], + "mcp_tool_permissions": { + "server_a": ["tool1", "tool2"] + }, + "object_permission_id": "should_be_excluded", + "mcp_access_groups": None, # This should be excluded + } + } + + # Call the function + result = await _set_object_permission( + data_json=data_json, + prisma_client=mock_prisma_client + ) + + # Verify object_permission_id was added to result + assert result["object_permission_id"] == "test_perm_id_123" + + # Verify object_permission was removed from result + assert "object_permission" not in result + + # Verify create was called + mock_prisma_client.db.litellm_objectpermissiontable.create.assert_called_once() + + # Verify the data passed to create excludes None values and object_permission_id + call_args = mock_prisma_client.db.litellm_objectpermissiontable.create.call_args + created_data = call_args.kwargs["data"] + + assert "object_permission_id" not in created_data + assert "mcp_access_groups" not in created_data # None value should be excluded + assert created_data["vector_stores"] == ["store_1", "store_2"] + assert created_data["mcp_servers"] == ["server_a"] + + # Verify mcp_tool_permissions was serialized to JSON string + assert isinstance(created_data["mcp_tool_permissions"], str) + mcp_tools_parsed = json.loads(created_data["mcp_tool_permissions"]) + assert mcp_tools_parsed == {"server_a": ["tool1", "tool2"]} + + # Verify other fields remain in result + assert result["user_id"] == "test_user" + assert result["models"] == ["gpt-4"] + diff --git a/ui/litellm-dashboard/src/components/object_permissions_view.tsx b/ui/litellm-dashboard/src/components/object_permissions_view.tsx index d689916e813..77727e06602 100644 --- a/ui/litellm-dashboard/src/components/object_permissions_view.tsx +++ b/ui/litellm-dashboard/src/components/object_permissions_view.tsx @@ -7,6 +7,7 @@ interface ObjectPermission { object_permission_id: string; mcp_servers: string[]; mcp_access_groups?: string[]; + mcp_tool_permissions?: Record; vector_stores: string[]; } @@ -26,11 +27,17 @@ export function ObjectPermissionsView({ const vectorStores = objectPermission?.vector_stores || []; const mcpServers = objectPermission?.mcp_servers || []; const mcpAccessGroups = objectPermission?.mcp_access_groups || []; + const mcpToolPermissions = objectPermission?.mcp_tool_permissions || {}; const content = (
- +
); diff --git a/ui/litellm-dashboard/src/components/permissions/MCPServerPermissions.test.tsx b/ui/litellm-dashboard/src/components/permissions/MCPServerPermissions.test.tsx new file mode 100644 index 00000000000..6d0018fa160 --- /dev/null +++ b/ui/litellm-dashboard/src/components/permissions/MCPServerPermissions.test.tsx @@ -0,0 +1,356 @@ +import { describe, it, expect, vi, beforeEach } from "vitest"; +import { render, screen, waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import MCPServerPermissions from "./MCPServerPermissions"; +import * as networking from "../networking"; + +vi.mock("../networking"); + +describe("MCPServerPermissions", () => { + const mockAccessToken = "test-token"; + const mockServerId1 = "3e64bed6-57e1-4247-ad5a-4b1a47ae6583"; + const mockServerId2 = "server-456"; + const mockServerName1 = "DW_MCP"; + const mockServerName2 = "Test Server"; + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("should display MCP servers with their aliases and IDs", async () => { + /** + * Tests that MCP servers are displayed with their correct aliases and truncated IDs. + * This verifies the basic rendering of server information. + */ + const mockServers = [ + { + server_id: mockServerId1, + server_name: mockServerName1, + alias: mockServerName1, + }, + { + server_id: mockServerId2, + server_name: mockServerName2, + alias: mockServerName2, + }, + ]; + + vi.mocked(networking.fetchMCPServers).mockResolvedValue(mockServers); + + render( + + ); + + // Wait for servers to load and display + await waitFor(() => { + expect(screen.getByText(/DW_MCP/)).toBeInTheDocument(); + }); + + await waitFor(() => { + expect(screen.getByText(/Test Server/)).toBeInTheDocument(); + }); + + // Verify the count badge shows correct number + expect(screen.getByText("2")).toBeInTheDocument(); + + // Verify API was called + expect(networking.fetchMCPServers).toHaveBeenCalledWith(mockAccessToken); + }); + + it("should display expandable tool permissions for servers when they exist", async () => { + /** + * Tests that tool permissions can be expanded/collapsed by clicking the server row + * and that the tool count is displayed correctly. + */ + const mockServers = [ + { + server_id: mockServerId1, + server_name: mockServerName1, + alias: mockServerName1, + }, + ]; + + const mockToolPermissions = { + [mockServerId1]: ["read_wiki_structure", "read_wiki_contents", "ask_question"], + }; + + vi.mocked(networking.fetchMCPServers).mockResolvedValue(mockServers); + + render( + + ); + + // Wait for server to load + await waitFor(() => { + expect(screen.getByText(/DW_MCP/)).toBeInTheDocument(); + }); + + // Verify tool count is shown + expect(screen.getByText("3 tools")).toBeInTheDocument(); + + // Tools should NOT be visible initially (collapsed state) + expect(screen.queryByText("read_wiki_structure")).not.toBeInTheDocument(); + expect(screen.queryByText("read_wiki_contents")).not.toBeInTheDocument(); + expect(screen.queryByText("ask_question")).not.toBeInTheDocument(); + + // Click the server row to expand + const serverRow = screen.getByText(/DW_MCP/).closest("div"); + await userEvent.click(serverRow!); + + // Now tools should be visible + await waitFor(() => { + expect(screen.getByText("read_wiki_structure")).toBeInTheDocument(); + expect(screen.getByText("read_wiki_contents")).toBeInTheDocument(); + expect(screen.getByText("ask_question")).toBeInTheDocument(); + }); + + // Click the server row again to collapse + await userEvent.click(serverRow!); + + // Tools should be hidden again + await waitFor(() => { + expect(screen.queryByText("read_wiki_structure")).not.toBeInTheDocument(); + }); + }); + + it("should not display tool permissions section when no tools are configured", async () => { + /** + * Tests that the tool permissions section is not shown when + * mcp_tool_permissions is empty or not provided for a server. + */ + const mockServers = [ + { + server_id: mockServerId1, + server_name: mockServerName1, + alias: mockServerName1, + }, + ]; + + vi.mocked(networking.fetchMCPServers).mockResolvedValue(mockServers); + + render( + + ); + + // Wait for server to load + await waitFor(() => { + expect(screen.getByText(/DW_MCP/)).toBeInTheDocument(); + }); + + // Verify no tool count is shown (since there are no tools) + expect(screen.queryByText(/tool/)).not.toBeInTheDocument(); + }); + + it("should display access groups correctly", async () => { + /** + * Tests that access groups are displayed with the correct styling + * and indicator badges. + */ + const mockAccessGroups = ["production-group", "development-group"]; + + vi.mocked(networking.fetchMCPAccessGroups).mockResolvedValue(mockAccessGroups); + + render( + + ); + + // Wait for access groups to load + await waitFor(() => { + expect(screen.getByText("production-group")).toBeInTheDocument(); + }); + + expect(screen.getByText("development-group")).toBeInTheDocument(); + expect(screen.getAllByText("(Access Group)")).toHaveLength(2); + + // Verify the count badge shows correct number + expect(screen.getByText("2")).toBeInTheDocument(); + }); + + it("should display both servers and access groups together", async () => { + /** + * Tests that both MCP servers and access groups can be displayed + * simultaneously in the same component. + */ + const mockServers = [ + { + server_id: mockServerId1, + server_name: mockServerName1, + alias: mockServerName1, + }, + ]; + + const mockAccessGroups = ["production-group"]; + + vi.mocked(networking.fetchMCPServers).mockResolvedValue(mockServers); + vi.mocked(networking.fetchMCPAccessGroups).mockResolvedValue(mockAccessGroups); + + render( + + ); + + // Wait for both to load + await waitFor(() => { + expect(screen.getByText(/DW_MCP/)).toBeInTheDocument(); + }); + + await waitFor(() => { + expect(screen.getByText("production-group")).toBeInTheDocument(); + }); + + // Verify total count is 2 (1 server + 1 access group) + expect(screen.getByText("2")).toBeInTheDocument(); + }); + + it("should display empty state when no servers or access groups are configured", () => { + /** + * Tests that the empty state message is shown when there are no + * MCP servers or access groups to display. + */ + render( + + ); + + // Verify empty state message + expect(screen.getByText("No MCP servers or access groups configured")).toBeInTheDocument(); + + // Verify count badge shows 0 + expect(screen.getByText("0")).toBeInTheDocument(); + }); + + it("should handle multiple servers with different tool permissions", async () => { + /** + * Tests that multiple servers can each have their own tool permissions + * displayed correctly without mixing them up. + */ + const mockServers = [ + { + server_id: mockServerId1, + server_name: mockServerName1, + alias: mockServerName1, + }, + { + server_id: mockServerId2, + server_name: mockServerName2, + alias: mockServerName2, + }, + ]; + + const mockToolPermissions = { + [mockServerId1]: ["read_wiki_structure", "read_wiki_contents"], + [mockServerId2]: ["ask_question"], + }; + + vi.mocked(networking.fetchMCPServers).mockResolvedValue(mockServers); + + render( + + ); + + // Wait for servers to load + await waitFor(() => { + expect(screen.getByText(/DW_MCP/)).toBeInTheDocument(); + expect(screen.getByText(/Test Server/)).toBeInTheDocument(); + }); + + // Verify both servers show tool counts + expect(screen.getByText("2 tools")).toBeInTheDocument(); // Server 1 + expect(screen.getByText("1 tool")).toBeInTheDocument(); // Server 2 + + // Expand both servers by clicking their rows + const server1Row = screen.getByText(/DW_MCP/).closest("div"); + const server2Row = screen.getByText(/Test Server/).closest("div"); + + await userEvent.click(server1Row!); // Expand server 1 + await userEvent.click(server2Row!); // Expand server 2 + + // Verify server 1 tools are now visible + await waitFor(() => { + expect(screen.getByText("read_wiki_structure")).toBeInTheDocument(); + expect(screen.getByText("read_wiki_contents")).toBeInTheDocument(); + }); + + // Verify server 2 tools are now visible + expect(screen.getByText("ask_question")).toBeInTheDocument(); + }); + + it("should handle API errors gracefully", async () => { + /** + * Tests that the component doesn't crash when API calls fail + * and falls back to showing server IDs instead of names. + */ + vi.mocked(networking.fetchMCPServers).mockRejectedValue( + new Error("Failed to fetch servers") + ); + + render( + + ); + + // Should still render with server ID (fallback) + await waitFor(() => { + expect(screen.getByText(mockServerId1)).toBeInTheDocument(); + }); + + // Verify error was logged + expect(networking.fetchMCPServers).toHaveBeenCalledWith(mockAccessToken); + }); + + it("should not fetch server details when accessToken is not provided", () => { + /** + * Tests that the component doesn't attempt to fetch server details + * when no access token is provided. + */ + render( + + ); + + // API should not be called without token + expect(networking.fetchMCPServers).not.toHaveBeenCalled(); + }); +}); + diff --git a/ui/litellm-dashboard/src/components/permissions/MCPServerPermissions.tsx b/ui/litellm-dashboard/src/components/permissions/MCPServerPermissions.tsx index 29b02c12b93..962fc00670a 100644 --- a/ui/litellm-dashboard/src/components/permissions/MCPServerPermissions.tsx +++ b/ui/litellm-dashboard/src/components/permissions/MCPServerPermissions.tsx @@ -1,6 +1,6 @@ import React, { useState, useEffect } from "react"; import { Text, Badge } from "@tremor/react"; -import { ServerIcon } from "@heroicons/react/outline"; +import { ServerIcon, ChevronDownIcon, ChevronRightIcon } from "@heroicons/react/outline"; import { Tooltip } from "antd"; import { fetchMCPServers } from "../networking"; import { MCPServer } from "../mcp_tools/types"; @@ -8,12 +8,31 @@ import { MCPServer } from "../mcp_tools/types"; interface MCPServerPermissionsProps { mcpServers: string[]; mcpAccessGroups?: string[]; + mcpToolPermissions?: Record; accessToken?: string | null; } -export function MCPServerPermissions({ mcpServers, mcpAccessGroups = [], accessToken }: MCPServerPermissionsProps) { +export function MCPServerPermissions({ + mcpServers, + mcpAccessGroups = [], + mcpToolPermissions = {}, + accessToken +}: MCPServerPermissionsProps) { const [mcpServerDetails, setMCPServerDetails] = useState([]); const [accessGroupNames, setAccessGroupNames] = useState([]); + const [expandedServers, setExpandedServers] = useState>(new Set()); + + const toggleServerExpansion = (serverId: string) => { + setExpandedServers((prev) => { + const newSet = new Set(prev); + if (newSet.has(serverId)) { + newSet.delete(serverId); + } else { + newSet.add(serverId); + } + return newSet; + }); + }; // Fetch MCP server details when component mounts useEffect(() => { @@ -74,32 +93,80 @@ export function MCPServerPermissions({ mcpServers, mcpAccessGroups = [], accessT return (
- + MCP Servers - + {totalCount}
+ {totalCount > 0 ? ( -
- {mergedItems.map((item, index) => - item.type === "server" ? ( - -
- {getMCPServerDisplayName(item.value)} +
+ {mergedItems.map((item, index) => { + const toolsForServer = item.type === "server" ? mcpToolPermissions[item.value] : undefined; + const hasToolRestrictions = toolsForServer && toolsForServer.length > 0; + const isExpanded = expandedServers.has(item.value); + + return ( +
+
hasToolRestrictions && toggleServerExpansion(item.value)} + className={`flex items-center gap-3 py-2 px-3 rounded-lg border border-gray-200 transition-all ${ + hasToolRestrictions + ? 'cursor-pointer hover:bg-gray-50 hover:border-gray-300' + : 'bg-white' + }`} + > +
+ {item.type === "server" ? ( + +
+ + {getMCPServerDisplayName(item.value)} +
+
+ ) : ( +
+ + {getAccessGroupDisplayName(item.value)} + + Group + +
+ )} +
+ + {hasToolRestrictions && ( +
+ {toolsForServer.length} + {toolsForServer.length === 1 ? "tool" : "tools"} + {isExpanded ? ( + + ) : ( + + )} +
+ )}
- - ) : ( -
- - {getAccessGroupDisplayName(item.value)}{" "} - (Access Group) + + {/* Show tool permissions if expanded */} + {hasToolRestrictions && isExpanded && ( +
+
+ {toolsForServer.map((tool, toolIndex) => ( + + {tool} + + ))} +
+
+ )}
- ), - )} + ); + })}
) : (
From 36c971a6fd4a900f0fb6e1eb8e63c9a52c563b78 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 7 Oct 2025 17:34:48 -0700 Subject: [PATCH 31/84] [MCP Gateway] QA/Fixes - Ensure Team/Key level enforcement works for MCPs (#15305) * fix: _set_object_permission * fix: _set_object_permission on teams * fix: _set_object_permission * fixes for team/key permissions * statsh: object permission view * fix: MCPServerPermissions * fix: _get_team_object_permission * test mcp checks for permissions * fix server checks with prefix names * test_list_tools_strips_prefix_when_matching_permissions * ruff fix * docs - refactor MCP * docs update MCP docs * docs allowed tools --- docs/my-website/docs/mcp.md | 422 +----------------- docs/my-website/docs/mcp_control.md | 45 ++ docs/my-website/docs/mcp_cost.md | 121 +++++ docs/my-website/docs/mcp_guardrail.md | 88 ++++ docs/my-website/docs/mcp_usage.md | 209 +++++++++ docs/my-website/sidebars.js | 12 +- .../mcp_server/auth/user_api_key_auth_mcp.py | 57 +-- .../proxy/_experimental/mcp_server/server.py | 17 +- .../key_management_endpoints.py | 1 - .../auth/test_user_api_key_auth_mcp.py | 203 +++++++++ .../mcp_server/test_mcp_server.py | 98 ++++ 11 files changed, 820 insertions(+), 453 deletions(-) create mode 100644 docs/my-website/docs/mcp_control.md create mode 100644 docs/my-website/docs/mcp_cost.md create mode 100644 docs/my-website/docs/mcp_guardrail.md create mode 100644 docs/my-website/docs/mcp_usage.md diff --git a/docs/my-website/docs/mcp.md b/docs/my-website/docs/mcp.md index 33e9ebad153..9365b0a5542 100644 --- a/docs/my-website/docs/mcp.md +++ b/docs/my-website/docs/mcp.md @@ -2,7 +2,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import Image from '@theme/IdealImage'; -# /mcp - Model Context Protocol +# MCP Overview LiteLLM Proxy provides an MCP Gateway that allows you to use a fixed endpoint for all MCP tools and control MCP access by Key, Team. @@ -306,211 +306,6 @@ mcp_servers: - If you specify both `allowed_tools` and `disallowed_tools`, the allowed list takes priority - Tool names are case-sensitive -## Using your MCP - -### Use on LiteLLM UI - -Follow this walkthrough to use your MCP on LiteLLM UI - - - -### Use with Responses API - -Replace `http://localhost:4000` with your LiteLLM Proxy base URL. - -Demo Video Using Responses API with LiteLLM Proxy: [Demo video here](https://www.loom.com/share/34587e618c5c47c0b0d67b4e4d02718f?sid=2caf3d45-ead4-4490-bcc1-8d6dd6041c02) - - - - - -```bash title="cURL Example" showLineNumbers -curl --location 'http://localhost:4000/v1/responses' \ ---header 'Content-Type: application/json' \ ---header "Authorization: Bearer sk-1234" \ ---data '{ - "model": "gpt-5", - "input": [ - { - "role": "user", - "content": "give me TLDR of what BerriAI/litellm repo is about", - "type": "message" - } - ], - "tools": [ - { - "type": "mcp", - "server_label": "litellm", - "server_url": "litellm_proxy", - "require_approval": "never" - } - ], - "stream": true, - "tool_choice": "required" -}' -``` - - - - -```python title="Python SDK Example" showLineNumbers -""" -Use LiteLLM Proxy MCP Gateway to call MCP tools. - -When using LiteLLM Proxy, you can use the same MCP tools across all your LLM providers. -""" -import openai - -client = openai.OpenAI( - api_key="sk-1234", # paste your litellm proxy api key here - base_url="http://localhost:4000" # paste your litellm proxy base url here -) -print("Making API request to Responses API with MCP tools") - -response = client.responses.create( - model="gpt-5", - input=[ - { - "role": "user", - "content": "give me TLDR of what BerriAI/litellm repo is about", - "type": "message" - } - ], - tools=[ - { - "type": "mcp", - "server_label": "litellm", - "server_url": "litellm_proxy", - "require_approval": "never" - } - ], - stream=True, - tool_choice="required" -) - -for chunk in response: - print("response chunk: ", chunk) -``` - - - - -#### Specifying MCP Tools - -You can specify which MCP tools are available by using the `allowed_tools` parameter. This allows you to restrict access to specific tools within an MCP server. - -To get the list of allowed tools when using LiteLLM MCP Gateway, you can naigate to the LiteLLM UI on MCP Servers > MCP Tools > Click the Tool > Copy Tool Name. - - - - -```bash title="cURL Example with allowed_tools" showLineNumbers -curl --location 'http://localhost:4000/v1/responses' \ ---header 'Content-Type: application/json' \ ---header "Authorization: Bearer sk-1234" \ ---data '{ - "model": "gpt-5", - "input": [ - { - "role": "user", - "content": "give me TLDR of what BerriAI/litellm repo is about", - "type": "message" - } - ], - "tools": [ - { - "type": "mcp", - "server_label": "litellm", - "server_url": "litellm_proxy/mcp", - "require_approval": "never", - "allowed_tools": ["GitMCP-fetch_litellm_documentation"] - } - ], - "stream": true, - "tool_choice": "required" -}' -``` - - - - -```python title="Python SDK Example with allowed_tools" showLineNumbers -import openai - -client = openai.OpenAI( - api_key="sk-1234", - base_url="http://localhost:4000" -) - -response = client.responses.create( - model="gpt-5", - input=[ - { - "role": "user", - "content": "give me TLDR of what BerriAI/litellm repo is about", - "type": "message" - } - ], - tools=[ - { - "type": "mcp", - "server_label": "litellm", - "server_url": "litellm_proxy/mcp", - "require_approval": "never", - "allowed_tools": ["GitMCP-fetch_litellm_documentation"] - } - ], - stream=True, - tool_choice="required" -) - -print(response) -``` - - - - -### Use with Cursor IDE - -Use tools directly from Cursor IDE with LiteLLM MCP: - -**Setup Instructions:** - -1. **Open Cursor Settings**: Use `⇧+⌘+J` (Mac) or `Ctrl+Shift+J` (Windows/Linux) -2. **Navigate to MCP Tools**: Go to the "MCP Tools" tab and click "New MCP Server" -3. **Add Configuration**: Copy and paste the JSON configuration below, then save with `Cmd+S` or `Ctrl+S` - -```json title="Basic Cursor MCP Configuration" showLineNumbers -{ - "mcpServers": { - "LiteLLM": { - "url": "litellm_proxy", - "headers": { - "x-litellm-api-key": "Bearer $LITELLM_API_KEY" - } - } - } -} -``` - -#### How it works when server_url="litellm_proxy" - -When server_url="litellm_proxy", LiteLLM bridges non-MCP providers to your MCP tools. - -- Tool Discovery: LiteLLM fetches MCP tools and converts them to OpenAI-compatible definitions -- LLM Call: Tools are sent to the LLM with your input; LLM selects which tools to call -- Tool Execution: LiteLLM automatically parses arguments, routes calls to MCP servers, executes tools, and retrieves results -- Response Integration: Tool results are sent back to LLM for final response generation -- Output: Complete response combining LLM reasoning with tool execution results - -This enables MCP tool usage with any LiteLLM-supported provider, regardless of native MCP support. - -#### Auto-execution for require_approval: "never" - -Setting require_approval: "never" triggers automatic tool execution, returning the final response in a single API call without additional user interaction. - - - ## MCP Server Access Control LiteLLM Proxy provides two methods for controlling access to specific MCP servers: @@ -1489,221 +1284,6 @@ curl --location '/v1/responses' \ }' ``` - - -## MCP Cost Tracking - -LiteLLM provides two ways to track costs for MCP tool calls: - -| Method | When to Use | What It Does | -|--------|-------------|--------------| -| **Config-based Cost Tracking** | Simple cost tracking with fixed costs per tool/server | Automatically tracks costs based on configuration | -| **Custom Post-MCP Hook** | Dynamic cost tracking with custom logic | Allows custom cost calculations and response modifications | - -### Config-based Cost Tracking - -Configure fixed costs for MCP servers directly in your config.yaml: - -```yaml title="config.yaml" showLineNumbers -model_list: - - model_name: gpt-4o - litellm_params: - model: openai/gpt-4o - api_key: sk-xxxxxxx - -mcp_servers: - zapier_server: - url: "https://actions.zapier.com/mcp/sk-xxxxx/sse" - mcp_info: - mcp_server_cost_info: - # Default cost for all tools in this server - default_cost_per_query: 0.01 - # Custom cost for specific tools - tool_name_to_cost_per_query: - send_email: 0.05 - create_document: 0.03 - - expensive_api_server: - url: "https://api.expensive-service.com/mcp" - mcp_info: - mcp_server_cost_info: - default_cost_per_query: 1.50 -``` - -### Custom Post-MCP Hook - -Use this when you need dynamic cost calculation or want to modify the MCP response before it's returned to the user. - -#### 1. Create a custom MCP hook file - -```python title="custom_mcp_hook.py" showLineNumbers -from typing import Optional -from litellm.integrations.custom_logger import CustomLogger -from litellm.types.mcp import MCPPostCallResponseObject - - -class CustomMCPCostTracker(CustomLogger): - """ - Custom handler for MCP cost tracking and response modification - """ - - async def async_post_mcp_tool_call_hook( - self, - kwargs, - response_obj: MCPPostCallResponseObject, - start_time, - end_time - ) -> Optional[MCPPostCallResponseObject]: - """ - Called after each MCP tool call. - Modify costs and response before returning to user. - """ - - # Extract tool information from kwargs - tool_name = kwargs.get("name", "") - server_name = kwargs.get("server_name", "") - - # Calculate custom cost based on your logic - custom_cost = 42.00 - - # Set the response cost - response_obj.hidden_params.response_cost = custom_cost - - - - return response_obj - - -# Create instance for LiteLLM to use -custom_mcp_cost_tracker = CustomMCPCostTracker() -``` - -#### 2. Configure in config.yaml - -```yaml title="config.yaml" showLineNumbers -model_list: - - model_name: gpt-4o - litellm_params: - model: openai/gpt-4o - api_key: sk-xxxxxxx - -# Add your custom MCP hook -callbacks: - - custom_mcp_hook.custom_mcp_cost_tracker - -mcp_servers: - zapier_server: - url: "https://actions.zapier.com/mcp/sk-xxxxx/sse" -``` - -#### 3. Start the proxy - -```shell -$ litellm --config /path/to/config.yaml -``` - -When MCP tools are called, your custom hook will: -1. Calculate costs based on your custom logic -2. Modify the response if needed -3. Track costs in LiteLLM's logging system - -## MCP Guardrails - -LiteLLM supports applying guardrails to MCP tool calls to ensure security and compliance. You can configure guardrails to run before or during MCP calls to validate inputs and block or mask sensitive information. - -### Supported MCP Guardrail Modes - -MCP guardrails support the following modes: - -- `pre_mcp_call`: Run **before** MCP call, on **input**. Use this mode when you want to apply validation/masking/blocking for MCP requests -- `during_mcp_call`: Run **during** MCP call execution. Use this mode for real-time monitoring and intervention - -### Configuration Examples - -Configure guardrails to run before MCP tool calls to validate and sanitize inputs: - -```yaml title="config.yaml" showLineNumbers -guardrails: - - guardrail_name: "mcp-input-validation" - litellm_params: - guardrail: presidio # or other supported guardrails - mode: "pre_mcp_call" # or during_mcp_call - pii_entities_config: - CREDIT_CARD: "BLOCK" # Will block requests containing credit card numbers - EMAIL_ADDRESS: "MASK" # Will mask email addresses - PHONE_NUMBER: "MASK" # Will mask phone numbers - default_on: true -``` - - -### Usage Examples - -#### Testing Pre-MCP Call Guardrails - -Test your MCP guardrails with a request that includes sensitive information: - -```bash title="Test MCP Guardrail" showLineNumbers -curl http://localhost:4000/chat/completions \ - -H "Content-Type: application/json" \ - -H "Authorization: Bearer sk-1234" \ - -d '{ - "model": "gpt-3.5-turbo", - "messages": [ - {"role": "user", "content": "My credit card is 4111-1111-1111-1111 and my email is john@example.com"} - ], - "guardrails": ["mcp-input-validation"] - }' -``` - -The request will be processed as follows: -1. Credit card number will be blocked (request rejected) -2. Email address will be masked (e.g., replaced with ``) - -#### Using with MCP Tools - -When using MCP tools, guardrails will be applied to the tool inputs: - -```python title="Python Example with MCP Guardrails" showLineNumbers -import openai - -client = openai.OpenAI( - api_key="your-api-key", - base_url="http://localhost:4000" -) - -# This request will trigger MCP guardrails -response = client.chat.completions.create( - model="gpt-3.5-turbo", - messages=[ - {"role": "user", "content": "Send an email to 555-123-4567 with my SSN 123-45-6789"} - ], - tools=[{"type": "mcp", "server_label": "litellm", "server_url": "litellm_proxy"}], - guardrails=["mcp-input-validation"] -) -``` - -### Supported Guardrail Providers - -MCP guardrails work with all LiteLLM-supported guardrail providers: - -- **Presidio**: PII detection and masking -- **Bedrock**: AWS Bedrock guardrails -- **Lakera**: Content moderation -- **Aporia**: Custom guardrails -- **Custom**: Your own guardrail implementations - -## MCP Permission Management - -LiteLLM supports managing permissions for MCP Servers by Keys, Teams, Organizations (entities) on LiteLLM. When a MCP client attempts to list tools, LiteLLM will only return the tools the entity has permissions to access. - -When Creating a Key, Team, or Organization, you can select the allowed MCP Servers that the entity has access to. - - - - ## LiteLLM Proxy - Walk through MCP Gateway LiteLLM exposes an MCP Gateway for admins to add all their MCP servers to LiteLLM. The key benefits of using LiteLLM Proxy with MCP are: diff --git a/docs/my-website/docs/mcp_control.md b/docs/my-website/docs/mcp_control.md new file mode 100644 index 00000000000..484cb13708c --- /dev/null +++ b/docs/my-website/docs/mcp_control.md @@ -0,0 +1,45 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Image from '@theme/IdealImage'; + +# MCP Permission Management + +Control which MCP servers and tools can be accessed by specific keys, teams, or organizations in LiteLLM. When a client attempts to list or call tools, LiteLLM enforces access controls based on configured permissions. + +## Overview + +LiteLLM provides fine-grained permission management for MCP servers, allowing you to: + +- **Restrict MCP access by entity**: Control which keys, teams, or organizations can access specific MCP servers +- **Tool-level filtering**: Automatically filter available tools based on entity permissions +- **Centralized control**: Manage all MCP permissions from the LiteLLM Admin UI or API + +This ensures that only authorized entities can discover and use MCP tools, providing an additional security layer for your MCP infrastructure. + +:::info Related Documentation +- [MCP Overview](./mcp.md) - Learn about MCP in LiteLLM +- [MCP Cost Tracking](./mcp_cost.md) - Track costs for MCP tool calls +- [MCP Guardrails](./mcp_guardrail.md) - Apply security guardrails to MCP calls +- [Using MCP](./mcp_usage.md) - How to use MCP with LiteLLM +::: + +## How It Works + +LiteLLM supports managing permissions for MCP Servers by Keys, Teams, Organizations (entities) on LiteLLM. When a MCP client attempts to list tools, LiteLLM will only return the tools the entity has permissions to access. + +When Creating a Key, Team, or Organization, you can select the allowed MCP Servers that the entity has access to. + + + + +## Set Allowed Tools for a Key, Team, or Organization + +Control which tools different teams can access from the same MCP server. For example, give your Engineering team access to `list_repositories`, `create_issue`, and `search_code`, while Sales only gets `search_code` and `close_issue`. + + +This video shows how to set allowed tools for a Key, Team, or Organization. + + diff --git a/docs/my-website/docs/mcp_cost.md b/docs/my-website/docs/mcp_cost.md new file mode 100644 index 00000000000..4f5d65fe019 --- /dev/null +++ b/docs/my-website/docs/mcp_cost.md @@ -0,0 +1,121 @@ + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Image from '@theme/IdealImage'; + +# MCP Cost Tracking + +LiteLLM provides two ways to track costs for MCP tool calls: + +| Method | When to Use | What It Does | +|--------|-------------|--------------| +| **Config-based Cost Tracking** | Simple cost tracking with fixed costs per tool/server | Automatically tracks costs based on configuration | +| **Custom Post-MCP Hook** | Dynamic cost tracking with custom logic | Allows custom cost calculations and response modifications | + +### Config-based Cost Tracking + +Configure fixed costs for MCP servers directly in your config.yaml: + +```yaml title="config.yaml" showLineNumbers +model_list: + - model_name: gpt-4o + litellm_params: + model: openai/gpt-4o + api_key: sk-xxxxxxx + +mcp_servers: + zapier_server: + url: "https://actions.zapier.com/mcp/sk-xxxxx/sse" + mcp_info: + mcp_server_cost_info: + # Default cost for all tools in this server + default_cost_per_query: 0.01 + # Custom cost for specific tools + tool_name_to_cost_per_query: + send_email: 0.05 + create_document: 0.03 + + expensive_api_server: + url: "https://api.expensive-service.com/mcp" + mcp_info: + mcp_server_cost_info: + default_cost_per_query: 1.50 +``` + +### Custom Post-MCP Hook + +Use this when you need dynamic cost calculation or want to modify the MCP response before it's returned to the user. + +#### 1. Create a custom MCP hook file + +```python title="custom_mcp_hook.py" showLineNumbers +from typing import Optional +from litellm.integrations.custom_logger import CustomLogger +from litellm.types.mcp import MCPPostCallResponseObject + + +class CustomMCPCostTracker(CustomLogger): + """ + Custom handler for MCP cost tracking and response modification + """ + + async def async_post_mcp_tool_call_hook( + self, + kwargs, + response_obj: MCPPostCallResponseObject, + start_time, + end_time + ) -> Optional[MCPPostCallResponseObject]: + """ + Called after each MCP tool call. + Modify costs and response before returning to user. + """ + + # Extract tool information from kwargs + tool_name = kwargs.get("name", "") + server_name = kwargs.get("server_name", "") + + # Calculate custom cost based on your logic + custom_cost = 42.00 + + # Set the response cost + response_obj.hidden_params.response_cost = custom_cost + + + + return response_obj + + +# Create instance for LiteLLM to use +custom_mcp_cost_tracker = CustomMCPCostTracker() +``` + +#### 2. Configure in config.yaml + +```yaml title="config.yaml" showLineNumbers +model_list: + - model_name: gpt-4o + litellm_params: + model: openai/gpt-4o + api_key: sk-xxxxxxx + +# Add your custom MCP hook +callbacks: + - custom_mcp_hook.custom_mcp_cost_tracker + +mcp_servers: + zapier_server: + url: "https://actions.zapier.com/mcp/sk-xxxxx/sse" +``` + +#### 3. Start the proxy + +```shell +$ litellm --config /path/to/config.yaml +``` + +When MCP tools are called, your custom hook will: +1. Calculate costs based on your custom logic +2. Modify the response if needed +3. Track costs in LiteLLM's logging system + diff --git a/docs/my-website/docs/mcp_guardrail.md b/docs/my-website/docs/mcp_guardrail.md new file mode 100644 index 00000000000..f71ea2fe5ef --- /dev/null +++ b/docs/my-website/docs/mcp_guardrail.md @@ -0,0 +1,88 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Image from '@theme/IdealImage'; + +# MCP Guardrails + +LiteLLM supports applying guardrails to MCP tool calls to ensure security and compliance. You can configure guardrails to run before or during MCP calls to validate inputs and block or mask sensitive information. + +### Supported MCP Guardrail Modes + +MCP guardrails support the following modes: + +- `pre_mcp_call`: Run **before** MCP call, on **input**. Use this mode when you want to apply validation/masking/blocking for MCP requests +- `during_mcp_call`: Run **during** MCP call execution. Use this mode for real-time monitoring and intervention + +### Configuration Examples + +Configure guardrails to run before MCP tool calls to validate and sanitize inputs: + +```yaml title="config.yaml" showLineNumbers +guardrails: + - guardrail_name: "mcp-input-validation" + litellm_params: + guardrail: presidio # or other supported guardrails + mode: "pre_mcp_call" # or during_mcp_call + pii_entities_config: + CREDIT_CARD: "BLOCK" # Will block requests containing credit card numbers + EMAIL_ADDRESS: "MASK" # Will mask email addresses + PHONE_NUMBER: "MASK" # Will mask phone numbers + default_on: true +``` + + +### Usage Examples + +#### Testing Pre-MCP Call Guardrails + +Test your MCP guardrails with a request that includes sensitive information: + +```bash title="Test MCP Guardrail" showLineNumbers +curl http://localhost:4000/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer sk-1234" \ + -d '{ + "model": "gpt-3.5-turbo", + "messages": [ + {"role": "user", "content": "My credit card is 4111-1111-1111-1111 and my email is john@example.com"} + ], + "guardrails": ["mcp-input-validation"] + }' +``` + +The request will be processed as follows: +1. Credit card number will be blocked (request rejected) +2. Email address will be masked (e.g., replaced with ``) + +#### Using with MCP Tools + +When using MCP tools, guardrails will be applied to the tool inputs: + +```python title="Python Example with MCP Guardrails" showLineNumbers +import openai + +client = openai.OpenAI( + api_key="your-api-key", + base_url="http://localhost:4000" +) + +# This request will trigger MCP guardrails +response = client.chat.completions.create( + model="gpt-3.5-turbo", + messages=[ + {"role": "user", "content": "Send an email to 555-123-4567 with my SSN 123-45-6789"} + ], + tools=[{"type": "mcp", "server_label": "litellm", "server_url": "litellm_proxy"}], + guardrails=["mcp-input-validation"] +) +``` + +### Supported Guardrail Providers + +MCP guardrails work with all LiteLLM-supported guardrail providers: + +- **Presidio**: PII detection and masking +- **Bedrock**: AWS Bedrock guardrails +- **Lakera**: Content moderation +- **Aporia**: Custom guardrails +- **Custom**: Your own guardrail implementations \ No newline at end of file diff --git a/docs/my-website/docs/mcp_usage.md b/docs/my-website/docs/mcp_usage.md new file mode 100644 index 00000000000..ef9d8a5ed1b --- /dev/null +++ b/docs/my-website/docs/mcp_usage.md @@ -0,0 +1,209 @@ + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Image from '@theme/IdealImage'; + +# Using your MCP + +This document covers how to use LiteLLM as an MCP Gateway. You can see how to use it with Responses API, Cursor IDE, and OpenAI SDK. + +### Use on LiteLLM UI + +Follow this walkthrough to use your MCP on LiteLLM UI + + + +### Use with Responses API + +Replace `http://localhost:4000` with your LiteLLM Proxy base URL. + +Demo Video Using Responses API with LiteLLM Proxy: [Demo video here](https://www.loom.com/share/34587e618c5c47c0b0d67b4e4d02718f?sid=2caf3d45-ead4-4490-bcc1-8d6dd6041c02) + + + + + +```bash title="cURL Example" showLineNumbers +curl --location 'http://localhost:4000/v1/responses' \ +--header 'Content-Type: application/json' \ +--header "Authorization: Bearer sk-1234" \ +--data '{ + "model": "gpt-5", + "input": [ + { + "role": "user", + "content": "give me TLDR of what BerriAI/litellm repo is about", + "type": "message" + } + ], + "tools": [ + { + "type": "mcp", + "server_label": "litellm", + "server_url": "litellm_proxy", + "require_approval": "never" + } + ], + "stream": true, + "tool_choice": "required" +}' +``` + + + + +```python title="Python SDK Example" showLineNumbers +""" +Use LiteLLM Proxy MCP Gateway to call MCP tools. + +When using LiteLLM Proxy, you can use the same MCP tools across all your LLM providers. +""" +import openai + +client = openai.OpenAI( + api_key="sk-1234", # paste your litellm proxy api key here + base_url="http://localhost:4000" # paste your litellm proxy base url here +) +print("Making API request to Responses API with MCP tools") + +response = client.responses.create( + model="gpt-5", + input=[ + { + "role": "user", + "content": "give me TLDR of what BerriAI/litellm repo is about", + "type": "message" + } + ], + tools=[ + { + "type": "mcp", + "server_label": "litellm", + "server_url": "litellm_proxy", + "require_approval": "never" + } + ], + stream=True, + tool_choice="required" +) + +for chunk in response: + print("response chunk: ", chunk) +``` + + + + +#### Specifying MCP Tools + +You can specify which MCP tools are available by using the `allowed_tools` parameter. This allows you to restrict access to specific tools within an MCP server. + +To get the list of allowed tools when using LiteLLM MCP Gateway, you can naigate to the LiteLLM UI on MCP Servers > MCP Tools > Click the Tool > Copy Tool Name. + + + + +```bash title="cURL Example with allowed_tools" showLineNumbers +curl --location 'http://localhost:4000/v1/responses' \ +--header 'Content-Type: application/json' \ +--header "Authorization: Bearer sk-1234" \ +--data '{ + "model": "gpt-5", + "input": [ + { + "role": "user", + "content": "give me TLDR of what BerriAI/litellm repo is about", + "type": "message" + } + ], + "tools": [ + { + "type": "mcp", + "server_label": "litellm", + "server_url": "litellm_proxy/mcp", + "require_approval": "never", + "allowed_tools": ["GitMCP-fetch_litellm_documentation"] + } + ], + "stream": true, + "tool_choice": "required" +}' +``` + + + + +```python title="Python SDK Example with allowed_tools" showLineNumbers +import openai + +client = openai.OpenAI( + api_key="sk-1234", + base_url="http://localhost:4000" +) + +response = client.responses.create( + model="gpt-5", + input=[ + { + "role": "user", + "content": "give me TLDR of what BerriAI/litellm repo is about", + "type": "message" + } + ], + tools=[ + { + "type": "mcp", + "server_label": "litellm", + "server_url": "litellm_proxy/mcp", + "require_approval": "never", + "allowed_tools": ["GitMCP-fetch_litellm_documentation"] + } + ], + stream=True, + tool_choice="required" +) + +print(response) +``` + + + + +### Use with Cursor IDE + +Use tools directly from Cursor IDE with LiteLLM MCP: + +**Setup Instructions:** + +1. **Open Cursor Settings**: Use `⇧+⌘+J` (Mac) or `Ctrl+Shift+J` (Windows/Linux) +2. **Navigate to MCP Tools**: Go to the "MCP Tools" tab and click "New MCP Server" +3. **Add Configuration**: Copy and paste the JSON configuration below, then save with `Cmd+S` or `Ctrl+S` + +```json title="Basic Cursor MCP Configuration" showLineNumbers +{ + "mcpServers": { + "LiteLLM": { + "url": "litellm_proxy", + "headers": { + "x-litellm-api-key": "Bearer $LITELLM_API_KEY" + } + } + } +} +``` + +#### How it works when server_url="litellm_proxy" + +When server_url="litellm_proxy", LiteLLM bridges non-MCP providers to your MCP tools. + +- Tool Discovery: LiteLLM fetches MCP tools and converts them to OpenAI-compatible definitions +- LLM Call: Tools are sent to the LLM with your input; LLM selects which tools to call +- Tool Execution: LiteLLM automatically parses arguments, routes calls to MCP servers, executes tools, and retrieves results +- Response Integration: Tool results are sent back to LLM for final response generation +- Output: Complete response combining LLM reasoning with tool execution results + +This enables MCP tool usage with any LiteLLM-supported provider, regardless of native MCP support. + +#### Auto-execution for require_approval: "never" + +Setting require_approval: "never" triggers automatic tool execution, returning the final response in a single API call without additional user interaction. diff --git a/docs/my-website/sidebars.js b/docs/my-website/sidebars.js index 12fb2a681f3..74dcc90ad37 100644 --- a/docs/my-website/sidebars.js +++ b/docs/my-website/sidebars.js @@ -333,7 +333,17 @@ const sidebars = { "image_variations", ] }, - "mcp", + { + type: "category", + label: "/mcp - Model Context Protocol", + items: [ + "mcp", + "mcp_usage", + "mcp_control", + "mcp_cost", + "mcp_guardrail", + ] + }, "moderation", { type: "category", diff --git a/litellm/proxy/_experimental/mcp_server/auth/user_api_key_auth_mcp.py b/litellm/proxy/_experimental/mcp_server/auth/user_api_key_auth_mcp.py index cc890abb95b..0c15138b05b 100644 --- a/litellm/proxy/_experimental/mcp_server/auth/user_api_key_auth_mcp.py +++ b/litellm/proxy/_experimental/mcp_server/auth/user_api_key_auth_mcp.py @@ -369,7 +369,7 @@ class MCPRequestHandler: user_api_key_auth: Optional[UserAPIKeyAuth] = None, ): """Helper to get team object_permission from cache or DB.""" - from litellm.proxy.auth.auth_checks import get_team_object + from litellm.proxy.auth.auth_checks import get_object_permission, get_team_object from litellm.proxy.proxy_server import ( prisma_client, proxy_logging_obj, @@ -379,6 +379,7 @@ class MCPRequestHandler: if not user_api_key_auth or not user_api_key_auth.team_id or not prisma_client: return None + # First get the team object (which may have object_permission already loaded) team_obj: Optional[LiteLLM_TeamTable] = await get_team_object( team_id=user_api_key_auth.team_id, prisma_client=prisma_client, @@ -387,7 +388,24 @@ class MCPRequestHandler: proxy_logging_obj=proxy_logging_obj, ) - return team_obj.object_permission if team_obj else None + if not team_obj: + return None + + # Already loaded + if team_obj.object_permission: + return team_obj.object_permission + + # Need to fetch from DB using object_permission_id + if team_obj.object_permission_id: + return await get_object_permission( + object_permission_id=team_obj.object_permission_id, + prisma_client=prisma_client, + user_api_key_cache=user_api_key_cache, + parent_otel_span=user_api_key_auth.parent_otel_span, + proxy_logging_obj=proxy_logging_obj, + ) + + return None @staticmethod async def get_allowed_tools_for_server( @@ -536,41 +554,24 @@ class MCPRequestHandler: user_api_key_auth: Optional[UserAPIKeyAuth] = None, ) -> List[str]: """ - The `object_permission` for a team is not stored on the user_api_key_auth object - - first we check if the team has a object_permission_id attached - - if it does then we look up the object_permission for the team + Get allowed MCP servers for a team. + + Uses the helper _get_team_object_permission which: + 1. First checks if object_permission is already loaded on the team + 2. If not, fetches from DB using object_permission_id if it exists """ - from litellm.proxy.auth.auth_checks import get_team_object - from litellm.proxy.proxy_server import ( - prisma_client, - proxy_logging_obj, - user_api_key_cache, - ) - if user_api_key_auth is None: return [] if user_api_key_auth.team_id is None: return [] - if prisma_client is None: - verbose_logger.debug("prisma_client is None") - return [] - try: - team_obj: Optional[LiteLLM_TeamTable] = await get_team_object( - team_id=user_api_key_auth.team_id, - prisma_client=prisma_client, - user_api_key_cache=user_api_key_cache, - parent_otel_span=user_api_key_auth.parent_otel_span, - proxy_logging_obj=proxy_logging_obj, + # Use the helper method that properly handles fetching from DB if needed + object_permissions = await MCPRequestHandler._get_team_object_permission( + user_api_key_auth ) - if team_obj is None: - verbose_logger.debug("team_obj is None") - return [] - - object_permissions = team_obj.object_permission + if object_permissions is None: return [] diff --git a/litellm/proxy/_experimental/mcp_server/server.py b/litellm/proxy/_experimental/mcp_server/server.py index c70a1f7a454..d7ebfb805f3 100644 --- a/litellm/proxy/_experimental/mcp_server/server.py +++ b/litellm/proxy/_experimental/mcp_server/server.py @@ -527,14 +527,27 @@ if MCP_AVAILABLE: server_id: str, user_api_key_auth: Optional[UserAPIKeyAuth], ) -> List[MCPTool]: - """Filter tools based on key/team mcp_tool_permissions.""" + """ + Filter tools based on key/team mcp_tool_permissions. + + Note: Tool names in the DB are stored without server prefixes, + but tool names from MCP servers are prefixed. We need to strip + the prefix before comparing. + """ # Filter by key/team tool-level permissions allowed_tool_names = await MCPRequestHandler.get_allowed_tools_for_server( server_id=server_id, user_api_key_auth=user_api_key_auth, ) if allowed_tool_names is not None: - filtered_tools = [t for t in tools if t.name in allowed_tool_names] + # Strip prefix from tool names before comparing + # Tools are stored in DB without prefix, but come from MCP server with prefix + filtered_tools = [] + for t in tools: + # Get tool name without server prefix + unprefixed_tool_name, _ = get_server_name_prefix_tool_mcp(t.name) + if unprefixed_tool_name in allowed_tool_names: + filtered_tools.append(t) else: # No restrictions, return all tools filtered_tools = tools diff --git a/litellm/proxy/management_endpoints/key_management_endpoints.py b/litellm/proxy/management_endpoints/key_management_endpoints.py index 68af5b4c9f5..3226ea01798 100644 --- a/litellm/proxy/management_endpoints/key_management_endpoints.py +++ b/litellm/proxy/management_endpoints/key_management_endpoints.py @@ -21,7 +21,6 @@ import fastapi from fastapi import APIRouter, Depends, Header, HTTPException, Query, Request, status import litellm -from litellm.litellm_core_utils.safe_json_dumps import safe_dumps from litellm._logging import verbose_proxy_logger from litellm._uuid import uuid from litellm.caching import DualCache diff --git a/tests/test_litellm/proxy/_experimental/mcp_server/auth/test_user_api_key_auth_mcp.py b/tests/test_litellm/proxy/_experimental/mcp_server/auth/test_user_api_key_auth_mcp.py index 9e316289c87..7da941db390 100644 --- a/tests/test_litellm/proxy/_experimental/mcp_server/auth/test_user_api_key_auth_mcp.py +++ b/tests/test_litellm/proxy/_experimental/mcp_server/auth/test_user_api_key_auth_mcp.py @@ -1,6 +1,7 @@ import json import os import sys +from unittest import mock from unittest.mock import AsyncMock, MagicMock, patch import orjson @@ -1043,3 +1044,205 @@ def test_get_mcp_server_auth_headers_from_headers(headers, expected_result): headers = Headers(headers) result = MCPRequestHandler._get_mcp_server_auth_headers_from_headers(headers) assert result == expected_result + + +@pytest.mark.asyncio +async def test_get_team_object_permission_with_already_loaded_permission(): + """ + Test that _get_team_object_permission returns the already loaded object_permission + from the team object without making an additional DB call. + """ + from litellm.proxy._types import LiteLLM_ObjectPermissionTable, LiteLLM_TeamTable + + # Create mock object permission + mock_object_permission = LiteLLM_ObjectPermissionTable( + object_permission_id="perm-123", + mcp_servers=["server1", "server2"], + mcp_access_groups=["group1"], + vector_stores=["store1"], + ) + + # Create mock team object with object_permission already loaded + mock_team_obj = LiteLLM_TeamTable( + team_id="team-123", + object_permission=mock_object_permission, + object_permission_id="perm-123", + ) + + # Create mock user auth + mock_user_auth = UserAPIKeyAuth( + api_key="test-key", + user_id="test-user", + team_id="team-123", + ) + + # Mock get_team_object to return our team with loaded permission + with patch( + "litellm.proxy._experimental.mcp_server.auth.user_api_key_auth_mcp.get_team_object" + ) as mock_get_team: + with patch( + "litellm.proxy._experimental.mcp_server.auth.user_api_key_auth_mcp.get_object_permission" + ) as mock_get_perm: + mock_get_team.return_value = mock_team_obj + + # Call the method + result = await MCPRequestHandler._get_team_object_permission( + mock_user_auth + ) + + # Assert we got the object permission + assert result == mock_object_permission + assert result.mcp_servers == ["server1", "server2"] + + # Verify get_team_object was called + mock_get_team.assert_called_once() + + # Verify get_object_permission was NOT called (since it was already loaded) + mock_get_perm.assert_not_called() + + +@pytest.mark.asyncio +async def test_get_team_object_permission_fetches_from_db_when_not_loaded(): + """ + Test that _get_team_object_permission fetches from DB when object_permission + is not loaded but object_permission_id exists. + """ + from litellm.proxy._types import LiteLLM_ObjectPermissionTable, LiteLLM_TeamTable + + # Create mock object permission (to be returned from DB) + mock_object_permission = LiteLLM_ObjectPermissionTable( + object_permission_id="perm-456", + mcp_servers=["server3", "server4"], + mcp_access_groups=["group2"], + vector_stores=["store2"], + ) + + # Create mock team object WITHOUT object_permission loaded (but has ID) + mock_team_obj = LiteLLM_TeamTable( + team_id="team-456", + object_permission=None, + object_permission_id="perm-456", + ) + + # Create mock user auth + mock_user_auth = UserAPIKeyAuth( + api_key="test-key", + user_id="test-user", + team_id="team-456", + ) + + # Mock the methods + with patch( + "litellm.proxy._experimental.mcp_server.auth.user_api_key_auth_mcp.get_team_object" + ) as mock_get_team: + with patch( + "litellm.proxy._experimental.mcp_server.auth.user_api_key_auth_mcp.get_object_permission" + ) as mock_get_perm: + mock_get_team.return_value = mock_team_obj + mock_get_perm.return_value = mock_object_permission + + # Call the method + result = await MCPRequestHandler._get_team_object_permission( + mock_user_auth + ) + + # Assert we got the object permission + assert result == mock_object_permission + assert result.mcp_servers == ["server3", "server4"] + + # Verify get_team_object was called + mock_get_team.assert_called_once() + + # Verify get_object_permission WAS called (since it wasn't loaded) + mock_get_perm.assert_called_once_with( + object_permission_id="perm-456", + prisma_client=mock.ANY, + user_api_key_cache=mock.ANY, + parent_otel_span=mock_user_auth.parent_otel_span, + proxy_logging_obj=mock.ANY, + ) + + +@pytest.mark.asyncio +async def test_get_allowed_mcp_servers_for_team_uses_helper(): + """ + Test that _get_allowed_mcp_servers_for_team properly uses _get_team_object_permission + helper which handles both loaded and unloaded object_permission cases. + """ + from litellm.proxy._types import LiteLLM_ObjectPermissionTable + + # Create mock object permission with servers and access groups + mock_object_permission = LiteLLM_ObjectPermissionTable( + object_permission_id="perm-789", + mcp_servers=["direct-server1", "direct-server2"], + mcp_access_groups=["dev-group"], + vector_stores=[], + ) + + # Create mock user auth + mock_user_auth = UserAPIKeyAuth( + api_key="test-key", + user_id="test-user", + team_id="team-789", + ) + + # Mock the helper methods + with patch.object( + MCPRequestHandler, "_get_team_object_permission" + ) as mock_get_team_perm: + with patch.object( + MCPRequestHandler, "_get_mcp_servers_from_access_groups" + ) as mock_get_access_group_servers: + # Configure mocks + mock_get_team_perm.return_value = mock_object_permission + mock_get_access_group_servers.return_value = ["group-server1", "group-server2"] + + # Call the method + result = await MCPRequestHandler._get_allowed_mcp_servers_for_team( + mock_user_auth + ) + + # Assert the result contains both direct and access group servers + assert set(result) == { + "direct-server1", + "direct-server2", + "group-server1", + "group-server2", + } + + # Verify _get_team_object_permission was called (the helper we fixed) + mock_get_team_perm.assert_called_once_with(mock_user_auth) + + # Verify access groups were resolved + mock_get_access_group_servers.assert_called_once_with(["dev-group"]) + + +@pytest.mark.asyncio +async def test_get_allowed_mcp_servers_for_team_with_no_object_permission(): + """ + Test that _get_allowed_mcp_servers_for_team returns empty list when + team has no object_permission. + """ + # Create mock user auth + mock_user_auth = UserAPIKeyAuth( + api_key="test-key", + user_id="test-user", + team_id="team-no-perm", + ) + + # Mock the helper to return None (no object permission) + with patch.object( + MCPRequestHandler, "_get_team_object_permission" + ) as mock_get_team_perm: + mock_get_team_perm.return_value = None + + # Call the method + result = await MCPRequestHandler._get_allowed_mcp_servers_for_team( + mock_user_auth + ) + + # Assert empty list is returned + assert result == [] + + # Verify the helper was called + mock_get_team_perm.assert_called_once_with(mock_user_auth) diff --git a/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_server.py b/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_server.py index 9c23157f0fd..66871aefc1c 100644 --- a/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_server.py +++ b/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_server.py @@ -995,3 +995,101 @@ async def test_list_tools_with_no_tool_permissions_shows_all(): assert len(tools) == 3 tool_names = sorted([t.name for t in tools]) assert tool_names == ["tool1", "tool2", "tool3"] + + +@pytest.mark.asyncio +async def test_list_tools_strips_prefix_when_matching_permissions(): + """ + Test that tool permission filtering correctly strips prefixes from tool names. + + Tools from MCP servers are prefixed (e.g., "GITMCP-fetch_litellm_documentation"), + but allowed tools in DB are stored without prefix (e.g., "fetch_litellm_documentation"). + The filtering should strip the prefix before comparing. + """ + try: + from litellm.proxy._experimental.mcp_server.server import ( + _get_tools_from_mcp_servers, + set_auth_context, + ) + from litellm.proxy._types import LiteLLM_ObjectPermissionTable, UserAPIKeyAuth + except ImportError: + pytest.skip("MCP server not available") + + # Create object permission with tool-level restrictions (WITHOUT prefix) + object_permission = LiteLLM_ObjectPermissionTable( + object_permission_id="perm_123", + mcp_tool_permissions={ + "gitmcp_server": [ + "fetch_litellm_documentation", # No prefix in DB + "search_litellm_code", # No prefix in DB + ], + }, + ) + + user_api_key_auth = UserAPIKeyAuth( + api_key="test_key", + user_id="test_user", + object_permission=object_permission, + ) + set_auth_context(user_api_key_auth) + + # Mock server + server = MagicMock() + server.server_id = "gitmcp_server" + server.name = "GITMCP" + server.alias = "gitmcp" + server.allowed_tools = None + server.disallowed_tools = None + + # Mock manager + mock_manager = MagicMock() + mock_manager.get_allowed_mcp_servers = AsyncMock(return_value=["gitmcp_server"]) + mock_manager.get_mcp_server_by_id = lambda server_id: server + + async def mock_get_tools_from_server( + server, mcp_auth_header=None, extra_headers=None, add_prefix=True + ): + # Return tools WITH prefix (as they come from MCP server) + tool1 = MagicMock() + tool1.name = "GITMCP-fetch_litellm_documentation" # Prefixed + tool1.description = "Fetch docs" + tool1.inputSchema = {} + + tool2 = MagicMock() + tool2.name = "GITMCP-search_litellm_documentation" # Prefixed, not in allowed list + tool2.description = "Search docs" + tool2.inputSchema = {} + + tool3 = MagicMock() + tool3.name = "GITMCP-search_litellm_code" # Prefixed + tool3.description = "Search code" + tool3.inputSchema = {} + + tool4 = MagicMock() + tool4.name = "GITMCP-fetch_generic_url_content" # Prefixed, not in allowed list + tool4.description = "Fetch URL" + tool4.inputSchema = {} + + return [tool1, tool2, tool3, tool4] + + mock_manager._get_tools_from_server = mock_get_tools_from_server + + with patch( + "litellm.proxy._experimental.mcp_server.server.global_mcp_server_manager", + mock_manager, + ): + tools = await _get_tools_from_mcp_servers( + user_api_key_auth=user_api_key_auth, + mcp_auth_header=None, + mcp_servers=None, + mcp_server_auth_headers=None, + ) + + # Should only return the 2 tools that match (after stripping prefix) + assert len(tools) == 2 + tool_names = sorted([t.name for t in tools]) + # Tools still have prefixes in the output, but were filtered correctly + assert tool_names == [ + "GITMCP-fetch_litellm_documentation", + "GITMCP-search_litellm_code", + ] From 9fa8c6099edc7124b8b1315a21c947e8fefbdc5d Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Tue, 7 Oct 2025 17:42:04 -0700 Subject: [PATCH 32/84] Update model_group_alias_settings.tsx --- .../src/components/model_group_alias_settings.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ui/litellm-dashboard/src/components/model_group_alias_settings.tsx b/ui/litellm-dashboard/src/components/model_group_alias_settings.tsx index c1638bc3242..c7aef9ad4fd 100644 --- a/ui/litellm-dashboard/src/components/model_group_alias_settings.tsx +++ b/ui/litellm-dashboard/src/components/model_group_alias_settings.tsx @@ -5,9 +5,11 @@ import { setCallbacksCall } from "./networking"; import { Card, Title, Text, Table, TableHead, TableHeaderCell, TableBody, TableRow, TableCell } from "@tremor/react"; import NotificationsManager from "./molecules/notifications_manager"; +type ModelGroupAliasValue = string | { model: string; hidden?: boolean }; + interface ModelGroupAliasSettingsProps { accessToken: string; - initialModelGroupAlias?: { [key: string]: string }; + initialModelGroupAlias?: Record; onAliasUpdate?: (updatedAlias: { [key: string]: string }) => void; } @@ -28,11 +30,11 @@ const ModelGroupAliasSettings: React.FC = ({ const [isExpanded, setIsExpanded] = useState(true); useEffect(() => { - // Convert object to array for display - const aliasArray = Object.entries(initialModelGroupAlias).map(([aliasName, targetModelGroup], index) => ({ + const aliasArray = Object.entries(initialModelGroupAlias).map(([aliasName, value], index) => ({ id: `${index}-${aliasName}`, aliasName, - targetModelGroup, + // if object, use its model field; otherwise use the string + targetModelGroup: typeof value === "string" ? value : value?.model ?? "", })); setAliases(aliasArray); }, [initialModelGroupAlias]); From f2a96e683033b10e04c30e6818fdea7d0bac0c6d Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Tue, 7 Oct 2025 17:45:30 -0700 Subject: [PATCH 33/84] fix: e2eUI testing --- .../permissions/MCPServerPermissions.test.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ui/litellm-dashboard/src/components/permissions/MCPServerPermissions.test.tsx b/ui/litellm-dashboard/src/components/permissions/MCPServerPermissions.test.tsx index 6d0018fa160..ab5610850de 100644 --- a/ui/litellm-dashboard/src/components/permissions/MCPServerPermissions.test.tsx +++ b/ui/litellm-dashboard/src/components/permissions/MCPServerPermissions.test.tsx @@ -96,7 +96,8 @@ describe("MCPServerPermissions", () => { }); // Verify tool count is shown - expect(screen.getByText("3 tools")).toBeInTheDocument(); + expect(screen.getByText("3")).toBeInTheDocument(); + expect(screen.getByText("tools")).toBeInTheDocument(); // Tools should NOT be visible initially (collapsed state) expect(screen.queryByText("read_wiki_structure")).not.toBeInTheDocument(); @@ -180,7 +181,7 @@ describe("MCPServerPermissions", () => { }); expect(screen.getByText("development-group")).toBeInTheDocument(); - expect(screen.getAllByText("(Access Group)")).toHaveLength(2); + expect(screen.getAllByText("Group")).toHaveLength(2); // Verify the count badge shows correct number expect(screen.getByText("2")).toBeInTheDocument(); @@ -288,8 +289,11 @@ describe("MCPServerPermissions", () => { }); // Verify both servers show tool counts - expect(screen.getByText("2 tools")).toBeInTheDocument(); // Server 1 - expect(screen.getByText("1 tool")).toBeInTheDocument(); // Server 2 + // Server 1 has 2 tools, Server 2 has 1 tool + const toolCounts = screen.getAllByText(/^\d+$/); + const toolLabels = screen.getAllByText(/^tools?$/i); + expect(toolCounts.length).toBeGreaterThan(0); + expect(toolLabels.length).toBeGreaterThan(0); // Expand both servers by clicking their rows const server1Row = screen.getByText(/DW_MCP/).closest("div"); From 8590646b8420613d7751d62d1520b46ade427211 Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Tue, 7 Oct 2025 17:49:57 -0700 Subject: [PATCH 34/84] fix code QA check --- tests/code_coverage_tests/ensure_async_clients_test.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/code_coverage_tests/ensure_async_clients_test.py b/tests/code_coverage_tests/ensure_async_clients_test.py index db47973b692..a0b4a379add 100644 --- a/tests/code_coverage_tests/ensure_async_clients_test.py +++ b/tests/code_coverage_tests/ensure_async_clients_test.py @@ -11,6 +11,7 @@ ALLOWED_FILES = [ "../../litellm/llms/base.py", "../../litellm/llms/custom_httpx/httpx_handler.py", "../../litellm/llms/openai/common_utils.py", + "../../litellm/experimental_mcp_client/client.py", # when running on ci/cd "./litellm/__init__.py", "./litellm/llms/custom_httpx/http_handler.py", @@ -20,6 +21,7 @@ ALLOWED_FILES = [ "./litellm/llms/base.py", "./litellm/llms/custom_httpx/httpx_handler.py", "./litellm/llms/openai/common_utils.py", + "./litellm/experimental_mcp_client/client.py", ] warning_msg = "this is a serious violation that can impact latency. Creating Async clients per request can add +500ms per request" From e1ab3620ee61322c14c0574e0a843ae244e7c5af Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Tue, 7 Oct 2025 17:55:52 -0700 Subject: [PATCH 35/84] fix: mapped tests --- .../mcp_server/test_mcp_server_manager.py | 20 +++++++++++++++---- .../test_key_management_endpoints.py | 5 +++-- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_server_manager.py b/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_server_manager.py index ea89c5df2d7..1bf5c0abb8a 100644 --- a/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_server_manager.py +++ b/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_server_manager.py @@ -435,8 +435,11 @@ class TestMCPServerManager: disallowed_tools=None, ) - # Mock dependencies + # Mock dependencies - set object_permission and object_permission_id to None + # so permission checks return None (no restrictions) user_api_key_auth = MagicMock() + user_api_key_auth.object_permission = None + user_api_key_auth.object_permission_id = None proxy_logging_obj = MagicMock() # Mock the async methods that pre_call_tool_check calls @@ -508,8 +511,11 @@ class TestMCPServerManager: disallowed_tools=["banned_tool", "another_banned_tool"], ) - # Mock dependencies + # Mock dependencies - set object_permission and object_permission_id to None + # so permission checks return None (no restrictions) user_api_key_auth = MagicMock() + user_api_key_auth.object_permission = None + user_api_key_auth.object_permission_id = None proxy_logging_obj = MagicMock() # Mock the async methods that pre_call_tool_check calls @@ -581,8 +587,11 @@ class TestMCPServerManager: disallowed_tools=None, ) - # Mock dependencies + # Mock dependencies - set object_permission and object_permission_id to None + # so permission checks return None (no restrictions) user_api_key_auth = MagicMock() + user_api_key_auth.object_permission = None + user_api_key_auth.object_permission_id = None proxy_logging_obj = MagicMock() # Mock the async methods that pre_call_tool_check calls @@ -617,8 +626,11 @@ class TestMCPServerManager: disallowed_tools=["tool2", "tool3"], # tool2 is in both lists ) - # Mock dependencies + # Mock dependencies - set object_permission and object_permission_id to None + # so permission checks return None (no restrictions) user_api_key_auth = MagicMock() + user_api_key_auth.object_permission = None + user_api_key_auth.object_permission_id = None proxy_logging_obj = MagicMock() # Mock the async methods that pre_call_tool_check calls diff --git a/tests/test_litellm/proxy/management_endpoints/test_key_management_endpoints.py b/tests/test_litellm/proxy/management_endpoints/test_key_management_endpoints.py index 3626e170782..fcf2ac2453b 100644 --- a/tests/test_litellm/proxy/management_endpoints/test_key_management_endpoints.py +++ b/tests/test_litellm/proxy/management_endpoints/test_key_management_endpoints.py @@ -487,9 +487,10 @@ async def test_key_generation_with_mcp_tool_permissions(monkeypatch): ), ) - # Verify mcp_tool_permissions was stored + # Verify mcp_tool_permissions was stored (serialized to JSON string for GraphQL compatibility) assert "mcp_tool_permissions" in created_permission_data - assert created_permission_data["mcp_tool_permissions"] == { + import json + assert json.loads(created_permission_data["mcp_tool_permissions"]) == { "server_1": ["tool1", "tool2", "tool3"] } assert created_permission_data["mcp_servers"] == ["server_1"] From 7b82473bfb085dfe542589146739cb6c9b3bbf61 Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Tue, 7 Oct 2025 17:56:51 -0700 Subject: [PATCH 36/84] fix gpt-image-1-mini --- model_prices_and_context_window.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index a3f38e47bf3..ad5b816b8e2 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -13293,8 +13293,7 @@ "supported_endpoints": [ "/v1/images/generations", "/v1/images/edits" - ], - "supports_vision": true + ] }, "gpt-realtime": { "cache_creation_input_audio_token_cost": 4e-07, From 4de4e4af1a622028ed1091253f3a3899ccb512ae Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Tue, 7 Oct 2025 18:14:20 -0700 Subject: [PATCH 37/84] Update page.tsx --- ui/litellm-dashboard/src/app/page.tsx | 86 +++++++++++++++++++++++---- 1 file changed, 76 insertions(+), 10 deletions(-) diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index 579e90e530c..b3000609265 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -41,8 +41,33 @@ import { UiLoadingSpinner } from "@/components/ui/ui-loading-spinner"; import { cx } from "@/lib/cva.config"; function getCookie(name: string) { - const cookieValue = document.cookie.split("; ").find((row) => row.startsWith(name + "=")); - return cookieValue ? cookieValue.split("=")[1] : null; + // Safer cookie read + decoding; handles '=' inside values + const match = document.cookie.split("; ").find((row) => row.startsWith(name + "=")); + if (!match) return null; + const value = match.slice(name.length + 1); + try { + return decodeURIComponent(value); + } catch { + return value; + } +} + +function deleteCookie(name: string, path = "/") { + // Best-effort client-side clear (works for non-HttpOnly cookies without Domain) + document.cookie = `${name}=; Max-Age=0; Path=${path}`; +} + +function isJwtExpired(token: string): boolean { + try { + const decoded: any = jwtDecode(token); + if (decoded && typeof decoded.exp === "number") { + return decoded.exp * 1000 <= Date.now(); + } + return false; + } catch { + // If we can't decode, treat as invalid/expired + return true; + } } function formatUserRole(userRole: string) { @@ -149,17 +174,42 @@ export default function CreateKeyPage() { const redirectToLogin = authLoading === false && token === null && invitation_id === null; useEffect(() => { - const token = getCookie("token"); - getUiConfig().then((data) => { - // get the information for constructing the proxy base url, and then set the token and auth loading - setToken(token); - setAuthLoading(false); - }); + let cancelled = false; + + (async () => { + try { + await getUiConfig(); // ensures proxyBaseUrl etc. are ready + } catch { + // proceed regardless; we still need to decide auth state + } + + if (cancelled) return; + + const raw = getCookie("token"); + const valid = raw && !isJwtExpired(raw) ? raw : null; + + // If token exists but is invalid/expired, clear it so downstream code + // doesn't keep trying to use it and cause redirect spasms. + if (raw && !valid) { + deleteCookie("token", "/"); + } + + if (!cancelled) { + setToken(valid); + setAuthLoading(false); + } + })(); + + return () => { + cancelled = true; + }; }, []); useEffect(() => { if (redirectToLogin) { - window.location.href = (proxyBaseUrl || "") + "/sso/key/generate"; + // Replace instead of assigning to avoid back-button loops + const dest = (proxyBaseUrl || "") + "/sso/key/generate"; + window.location.replace(dest); } }, [redirectToLogin]); @@ -168,7 +218,23 @@ export default function CreateKeyPage() { return; } - const decoded = jwtDecode(token) as { [key: string]: any }; + // Defensive: re-check expiry in case cookie changed after mount + if (isJwtExpired(token)) { + deleteCookie("token", "/"); + setToken(null); + return; + } + + let decoded: any = null; + try { + decoded = jwtDecode(token); + } catch { + // Malformed token → treat as unauthenticated + deleteCookie("token", "/"); + setToken(null); + return; + } + if (decoded) { // set accessToken setAccessToken(decoded.key); From 8a8cc5a1d3be69bed6f56b274dc44d82fdae29b4 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 7 Oct 2025 18:42:17 -0700 Subject: [PATCH 38/84] [QA/Fixes] - Dynamic Rate Limiter v3 - final QA (#15311) * fix: PriorityReservationSettings * fix: use correct casting * fix type casting --- litellm/proxy/proxy_config.yaml | 68 +++++---------------------------- litellm/proxy/proxy_server.py | 4 ++ litellm/types/utils.py | 5 --- 3 files changed, 14 insertions(+), 63 deletions(-) diff --git a/litellm/proxy/proxy_config.yaml b/litellm/proxy/proxy_config.yaml index 4878d15a3f0..0a91a179ff1 100644 --- a/litellm/proxy/proxy_config.yaml +++ b/litellm/proxy/proxy_config.yaml @@ -1,63 +1,15 @@ model_list: - - model_name: bedrock/batch-anthropic.claude-3-5-sonnet-20240620-v1:0 + - model_name: db-openai-endpoint litellm_params: - model: bedrock/us.anthropic.claude-3-5-sonnet-20240620-v1:0 - ######################################################### - ########## batch specific params ######################## - s3_bucket_name: litellm-proxy - s3_region_name: us-west-2 - s3_access_key_id: os.environ/AWS_ACCESS_KEY_ID - s3_secret_access_key: os.environ/AWS_SECRET_ACCESS_KEY - aws_batch_role_arn: arn:aws:iam::888602223428:role/service-role/AmazonBedrockExecutionRoleForAgents_BB9HNW6V4CV - model_info: - mode: batch - - model_name: anthropic/* - litellm_params: - model: anthropic/* - api_key: os.environ/ANTHROPIC_API_KEY - - model_name: openai/* - litellm_params: - model: openai/* - api_key: os.environ/OPENAI_API_KEY - - model_name: gemini/* - litellm_params: - model: gemini/* - api_key: os.environ/GEMINI_API_KEY - - model_name: vertex_ai/* - litellm_params: - model: vertex_ai/* - - model_name: "grok-4" - model_info: - mode: completion - litellm_params: - model: oci/xai.grok-4 - oci_key: ocid1.api_key.oc1..aaaaaaaa7kbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbk - oci_region: us-phoenix-1 - oci_user: ocid1.user.oc1..aaaaaaaa7kbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbk - oci_fingerprint: aa:bb:cc:dd:ee:ff:11:22:33:44:55:66:77:88:99:00 - oci_tenancy: ocid1.tenancy.oc1..aaaaaaaa7kbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbk - oci_key_file: /path/to/oci_api_key.pem - oci_compartment_id: ocid1.compartment.oc1..aaaaaaaa7kbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbk - drop_params: True + model: openai/gm + api_key: hi + api_base: https://exampleopenaiendpoint-production.up.railway.app/ -guardrails: - - guardrail_name: "bedrock-pre-guard" - litellm_params: - guardrail: bedrock # supported values: "aporia", "bedrock", "lakera" - mode: "during_call" - guardrailIdentifier: ff6ujrregl1q - guardrailVersion: "DRAFT" - litellm_settings: - callbacks: ["datadog"] - include_cost_in_streaming_usage: true - datadog_params: - turn_off_message_logging: true - datadog_llm_observability_params: - turn_off_message_logging: true - - cache: True - cache_params: - type: redis - redis_startup_nodes: [{"host": "127.0.0.1", "port": "7000"}, {"host": "127.0.0.1", "port": "7001"}, {"host": "127.0.0.1", "port": "7002"}, {"host": "127.0.0.1", "port": "7003"}] \ No newline at end of file + callbacks: ["dynamic_rate_limiter_v3"] + priority_reservation: + "prod": 0.9 # 90% reserved for production (9 RPM) + "dev": 0.1 # 10% reserved for development (1 RPM) + priority_reservation_settings: + default_priority: 0.2 # Weight (0%) assigned to keys without explicit priority metadata \ No newline at end of file diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index e60482bc8d7..7a1e8f1e735 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -1880,6 +1880,10 @@ class ProxyConfig: verbose_proxy_logger.info( f"{blue_color_code}Set Global Gitlab Config on LiteLLM Proxy{reset_color_code}" ) + elif key == "priority_reservation_settings": + from litellm.types.utils import PriorityReservationSettings + + litellm.priority_reservation_settings = PriorityReservationSettings(**value) elif key == "callbacks": initialize_callbacks_on_proxy( value=value, diff --git a/litellm/types/utils.py b/litellm/types/utils.py index 0da0ba4e93d..cac3bdfb01d 100644 --- a/litellm/types/utils.py +++ b/litellm/types/utils.py @@ -2717,10 +2717,5 @@ class PriorityReservationSettings(BaseModel): default=0.50, description="Saturation threshold (0.0-1.0) at which strict priority enforcement begins. Below this threshold, generous mode allows priority borrowing. Above this threshold, strict mode enforces normalized priority limits." ) - - tracking_multiplier: int = Field( - default=10, - description="Multiplier for model-wide tracking limits in strict mode. Set to 10x because v3_limiter.should_rate_limit() both increments counters AND enforces limits - we need the counter increment (for saturation checks) but not the enforcement (priority limits handle that). High multiplier ensures tracking never blocks." - ) model_config = ConfigDict(protected_namespaces=()) From a8243079d336fa305bfc9b16d99667ed6714f752 Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Tue, 7 Oct 2025 18:51:27 -0700 Subject: [PATCH 39/84] doc fix --- docs/my-website/docs/proxy/dynamic_rate_limit.md | 3 +++ litellm/proxy/proxy_config.yaml | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/my-website/docs/proxy/dynamic_rate_limit.md b/docs/my-website/docs/proxy/dynamic_rate_limit.md index b3aed6a359e..06d49dfaf0f 100644 --- a/docs/my-website/docs/proxy/dynamic_rate_limit.md +++ b/docs/my-website/docs/proxy/dynamic_rate_limit.md @@ -141,6 +141,7 @@ litellm_settings: "dev": 0.1 # 10% reserved for development (1 RPM) priority_reservation_settings: default_priority: 0 # Weight (0%) assigned to keys without explicit priority metadata + saturation_threshold: 0.50 # A model is saturated if it has hit 50% of its RPM limit general_settings: master_key: sk-1234 # OR set `LITELLM_MASTER_KEY=".."` in your .env @@ -156,6 +157,8 @@ general_settings: `priority_reservation_settings`: Object (Optional) - **default_priority (float)**: Weight/percentage (0.0 to 1.0) assigned to API keys that have no priority metadata set (defaults to 0.5) +- **saturation_threshold (float)**: Saturation level (0.0 to 1.0) at which strict priority enforcement begins for a model. Saturation is calculated as `max(current_rpm/max_rpm, current_tpm/max_tpm)`. Below this threshold, generous mode allows priority borrowing from unused capacity. Above this threshold, strict mode enforces normalized priority limits. + - Example: When model usage is low, keys can use more than their allocated share. When model usage is high, keys are strictly limited to their allocated share. **Start Proxy** diff --git a/litellm/proxy/proxy_config.yaml b/litellm/proxy/proxy_config.yaml index 0a91a179ff1..338fa98118c 100644 --- a/litellm/proxy/proxy_config.yaml +++ b/litellm/proxy/proxy_config.yaml @@ -12,4 +12,5 @@ litellm_settings: "prod": 0.9 # 90% reserved for production (9 RPM) "dev": 0.1 # 10% reserved for development (1 RPM) priority_reservation_settings: - default_priority: 0.2 # Weight (0%) assigned to keys without explicit priority metadata \ No newline at end of file + default_priority: 0.2 # Weight (0%) assigned to keys without explicit priority metadata + saturation_threshold: 0.50 # A model is saturated if it has hit 50% of its RPM limit \ No newline at end of file From 5d6cd3ffed84c8b35d289688fcf45b35fdaf606a Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Tue, 7 Oct 2025 18:59:11 -0700 Subject: [PATCH 40/84] UI new build --- .../_buildManifest.js | 0 .../_ssgManifest.js | 0 .../chunks/{49-0e15a7b701ab2b73.js => 49-036448f42c39b97c.js} | 2 +- .../chunks/{50-fe160ecfa8bc4059.js => 50-d0da2dd7acce2eb9.js} | 0 ...{layout-21dfaab0131d6703.js => layout-df4939b4f2ec37d7.js} | 2 +- .../{page-0517a053ea1a258a.js => page-d7915f579b770030.js} | 2 +- .../{page-c69f5ef890b4b0dc.js => page-2f23c22a47b20607.js} | 2 +- .../{page-673bb6c3ebcd355a.js => page-79017a4c39acd336.js} | 2 +- .../out/_next/static/chunks/app/page-570a9fabe3b6be98.js | 1 + .../out/_next/static/chunks/app/page-a5ca703846f872ee.js | 1 - ...n-app-4f7318ae681a6d94.js => main-app-bb35cb240fbb9dca.js} | 2 +- .../_experimental/out/_next/static/css/a94bb091dba1d4f2.css | 3 +++ .../_experimental/out/_next/static/css/ec98fed1bdd650b4.css | 3 --- litellm/proxy/_experimental/out/index.html | 2 +- litellm/proxy/_experimental/out/index.txt | 4 ++-- litellm/proxy/_experimental/out/model_hub.txt | 4 ++-- litellm/proxy/_experimental/out/model_hub_table.html | 2 +- litellm/proxy/_experimental/out/model_hub_table.txt | 4 ++-- litellm/proxy/_experimental/out/onboarding.html | 2 +- litellm/proxy/_experimental/out/onboarding.txt | 4 ++-- 20 files changed, 21 insertions(+), 21 deletions(-) rename litellm/proxy/_experimental/out/_next/static/{677L3MDatvUz5h5yJedbt => 0NP4pGCTzzyECenXO-S3V}/_buildManifest.js (100%) rename litellm/proxy/_experimental/out/_next/static/{677L3MDatvUz5h5yJedbt => 0NP4pGCTzzyECenXO-S3V}/_ssgManifest.js (100%) rename litellm/proxy/_experimental/out/_next/static/chunks/{49-0e15a7b701ab2b73.js => 49-036448f42c39b97c.js} (99%) rename litellm/proxy/_experimental/out/_next/static/chunks/{50-fe160ecfa8bc4059.js => 50-d0da2dd7acce2eb9.js} (100%) rename litellm/proxy/_experimental/out/_next/static/chunks/app/{layout-21dfaab0131d6703.js => layout-df4939b4f2ec37d7.js} (59%) rename litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/{page-0517a053ea1a258a.js => page-d7915f579b770030.js} (63%) rename litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/{page-c69f5ef890b4b0dc.js => page-2f23c22a47b20607.js} (69%) rename litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/{page-673bb6c3ebcd355a.js => page-79017a4c39acd336.js} (98%) create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/page-570a9fabe3b6be98.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/page-a5ca703846f872ee.js rename litellm/proxy/_experimental/out/_next/static/chunks/{main-app-4f7318ae681a6d94.js => main-app-bb35cb240fbb9dca.js} (54%) create mode 100644 litellm/proxy/_experimental/out/_next/static/css/a94bb091dba1d4f2.css delete mode 100644 litellm/proxy/_experimental/out/_next/static/css/ec98fed1bdd650b4.css diff --git a/litellm/proxy/_experimental/out/_next/static/677L3MDatvUz5h5yJedbt/_buildManifest.js b/litellm/proxy/_experimental/out/_next/static/0NP4pGCTzzyECenXO-S3V/_buildManifest.js similarity index 100% rename from litellm/proxy/_experimental/out/_next/static/677L3MDatvUz5h5yJedbt/_buildManifest.js rename to litellm/proxy/_experimental/out/_next/static/0NP4pGCTzzyECenXO-S3V/_buildManifest.js diff --git a/litellm/proxy/_experimental/out/_next/static/677L3MDatvUz5h5yJedbt/_ssgManifest.js b/litellm/proxy/_experimental/out/_next/static/0NP4pGCTzzyECenXO-S3V/_ssgManifest.js similarity index 100% rename from litellm/proxy/_experimental/out/_next/static/677L3MDatvUz5h5yJedbt/_ssgManifest.js rename to litellm/proxy/_experimental/out/_next/static/0NP4pGCTzzyECenXO-S3V/_ssgManifest.js diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/49-0e15a7b701ab2b73.js b/litellm/proxy/_experimental/out/_next/static/chunks/49-036448f42c39b97c.js similarity index 99% rename from litellm/proxy/_experimental/out/_next/static/chunks/49-0e15a7b701ab2b73.js rename to litellm/proxy/_experimental/out/_next/static/chunks/49-036448f42c39b97c.js index a91dbe3ce6f..c1c319eccfb 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/49-0e15a7b701ab2b73.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/49-036448f42c39b97c.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[49],{31283:function(e,t,o){o.d(t,{o:function(){return a.Z}});var a=o(49566)},63610:function(e,t,o){o.d(t,{d:function(){return h}});var a=o(57437),r=o(2265),n=o(64482),c=o(52787),l=o(20577),i=o(13634),s=o(31283),d=o(15424),u=o(89970),p=o(19250);let h=["metadata","config","enforced_params","aliases"],g=(e,t)=>h.includes(e)||"json"===t.format,m=e=>{if(!e)return!0;try{return JSON.parse(e),!0}catch(e){return!1}},f=(e,t,o)=>{let a={max_budget:"Enter maximum budget in USD (e.g., 100.50)",budget_duration:"Select a time period for budget reset",tpm_limit:"Enter maximum tokens per minute (whole number)",rpm_limit:"Enter maximum requests per minute (whole number)",duration:"Enter duration (e.g., 30s, 24h, 7d)",metadata:'Enter JSON object with key-value pairs\nExample: {"team": "research", "project": "nlp"}',config:'Enter configuration as JSON object\nExample: {"setting": "value"}',permissions:"Enter comma-separated permission strings",enforced_params:'Enter parameters as JSON object\nExample: {"param": "value"}',blocked:"Enter true/false or specific block conditions",aliases:'Enter aliases as JSON object\nExample: {"alias1": "value1", "alias2": "value2"}',models:"Select one or more model names",key_alias:"Enter a unique identifier for this key",tags:"Enter comma-separated tag strings"}[e]||({string:"Text input",number:"Numeric input",integer:"Whole number input",boolean:"True/False value"})[o]||"Text input";return g(e,t)?"".concat(a,"\nMust be valid JSON format"):t.enum?"Select from available options\nAllowed values: ".concat(t.enum.join(", ")):a};t.Z=e=>{let{schemaComponent:t,excludedFields:o=[],form:h,overrideLabels:w={},overrideTooltips:y={},customValidation:j={},defaultValues:_={}}=e,[C,k]=(0,r.useState)(null),[v,T]=(0,r.useState)(null);(0,r.useEffect)(()=>{(async()=>{try{let e=(await (0,p.getOpenAPISchema)()).components.schemas[t];if(!e)throw Error('Schema component "'.concat(t,'" not found'));k(e);let a={};Object.keys(e.properties).filter(e=>!o.includes(e)&&void 0!==_[e]).forEach(e=>{a[e]=_[e]}),h.setFieldsValue(a)}catch(e){console.error("Schema fetch error:",e),T(e instanceof Error?e.message:"Failed to fetch schema")}})()},[t,h,o]);let E=e=>{if(e.type)return e.type;if(e.anyOf){let t=e.anyOf.map(e=>e.type);if(t.includes("number")||t.includes("integer"))return"number";t.includes("string")}return"string"},S=(e,t)=>{var o;let r;let p=E(t),h=null==C?void 0:null===(o=C.required)||void 0===o?void 0:o.includes(e),k=w[e]||t.title||e,v=y[e]||t.description,T=[];h&&T.push({required:!0,message:"".concat(k," is required")}),j[e]&&T.push({validator:j[e]}),g(e,t)&&T.push({validator:async(e,t)=>{if(t&&!m(t))throw Error("Please enter valid JSON")}});let S=v?(0,a.jsxs)("span",{children:[k," ",(0,a.jsx)(u.Z,{title:v,children:(0,a.jsx)(d.Z,{style:{marginLeft:"4px"}})})]}):k;return r=g(e,t)?(0,a.jsx)(n.default.TextArea,{rows:4,placeholder:"Enter as JSON",className:"font-mono"}):t.enum?(0,a.jsx)(c.default,{children:t.enum.map(e=>(0,a.jsx)(c.default.Option,{value:e,children:e},e))}):"number"===p||"integer"===p?(0,a.jsx)(l.Z,{style:{width:"100%"},precision:"integer"===p?0:void 0}):"duration"===e?(0,a.jsx)(s.o,{placeholder:"eg: 30s, 30h, 30d"}):(0,a.jsx)(s.o,{placeholder:v||""}),(0,a.jsx)(i.Z.Item,{label:S,name:e,className:"mt-8",rules:T,initialValue:_[e],help:(0,a.jsx)("div",{className:"text-xs text-gray-500",children:f(e,t,p)}),children:r},e)};return v?(0,a.jsxs)("div",{className:"text-red-500",children:["Error: ",v]}):(null==C?void 0:C.properties)?(0,a.jsx)("div",{children:Object.entries(C.properties).filter(e=>{let[t]=e;return!o.includes(t)}).map(e=>{let[t,o]=e;return S(t,o)})}):null}},9114:function(e,t,o){var a=o(2265),r=o(57271),n=o(85968);function c(){return"topRight"}function l(e,t){var o;return"string"==typeof e?{message:t,description:e}:{message:null!==(o=e.message)&&void 0!==o?o:t,...e}}function i(e){return"number"==typeof e?e:"string"==typeof e&&/^\d+$/.test(e)?parseInt(e,10):void 0}let s=["invalid api key","invalid authorization header format","authentication error","invalid proxy server token","invalid jwt token","invalid jwt submitted","unauthorized access to metrics endpoint"],d=["admin-only endpoint","not allowed to access model","user does not have permission","access forbidden","invalid credentials used to access ui","user not allowed to access proxy"],u=["db not connected","database not initialized","no db connected","prisma client not initialized","service unhealthy"],p=["no models configured on proxy","llm router not initialized","no deployments available","no healthy deployment available","not allowed to access model due to tags configuration","invalid model name passed in"],h=["deployment over user-defined ratelimit","crossed tpm / rpm / max parallel request limit","max parallel request limit"],g=["budget exceeded","crossed budget","provider budget"],m=["must be a litellm enterprise user","only be available for liteLLM enterprise users","missing litellm-enterprise package","only available on the docker image","enterprise feature","premium user"],f=["invalid json payload","invalid request type","invalid key format","invalid hash key","invalid sort column","invalid sort order","invalid limit","invalid file type","invalid field","invalid date format"],w=["model not found","model with id","credential not found","user not found","team not found","organization not found","mcp server with id","tool '"],y=["already exists","team member is already in team","user already exists"],j=["violated openai moderation policy","violated jailbreak threshold","violated prompt_injection threshold","violated content safety policy","violated lasso guardrail policy","blocked by pillar security guardrail","violated azure prompt shield guardrail policy","content blocked by model armor","response blocked by model armor","streaming response blocked by model armor","guardrail","moderation"],_=["invalid purpose","service must be specified","invalid response - response.response is none"],C=["cloudzero settings not configured","failed to decrypt cloudzero api key","cloudzero settings not found"],k=["created successfully","updated successfully","deleted successfully","credential created successfully","model added successfully","team created successfully","user created successfully","organization created successfully","cloudzero settings initialized successfully","cloudzero settings updated successfully","cloudzero export completed successfully","mock llm request made","mock slack alert sent","mock email alert sent","spend for all api keys and teams reset successfully","monthlyglobalspend view refreshed","cache cleared successfully","cache set successfully","ip ","deleted successfully"],v=["rate limit reached for deployment","deployment cooldown period active"],T=["this feature is only available for litellm enterprise users","enterprise features are not available","regenerating virtual keys is an enterprise feature","trying to set allowed_routes. this is an enterprise feature"],E=["invalid maximum_spend_logs_retention_interval value","error has invalid or non-convertible code","failed to save health check to database"];t.Z={error(e){var t,o;let a=l(e,"Error");r.ZP.error({...a,placement:null!==(t=a.placement)&&void 0!==t?t:c(),duration:null!==(o=a.duration)&&void 0!==o?o:6})},warning(e){var t,o;let a=l(e,"Warning");r.ZP.warning({...a,placement:null!==(t=a.placement)&&void 0!==t?t:c(),duration:null!==(o=a.duration)&&void 0!==o?o:5})},info(e){var t,o;let a=l(e,"Info");r.ZP.info({...a,placement:null!==(t=a.placement)&&void 0!==t?t:c(),duration:null!==(o=a.duration)&&void 0!==o?o:4})},success(e){var t,o;if(a.isValidElement(e)){r.ZP.success({message:"Success",description:e,placement:c(),duration:3.5});return}let n=l(e,"Success");r.ZP.success({...n,placement:null!==(t=n.placement)&&void 0!==t?t:c(),duration:null!==(o=n.duration)&&void 0!==o?o:3.5})},fromBackend(e,t){var o,a,l,S,b,F,P,O,B,N,x,G;let A=null!==(G=null!==(x=i(null==e?void 0:null===(N=e.response)||void 0===N?void 0:N.status))&&void 0!==x?x:i(null==e?void 0:e.status_code))&&void 0!==G?G:i(null==e?void 0:e.code),J=function(e){var t,o,a,r,c,l,i,s,d,u,p,h;if("string"==typeof e)return e;let g=null!==(h=null!==(p=null!==(u=null!==(d=null!==(s=null==e?void 0:null===(a=e.response)||void 0===a?void 0:null===(o=a.data)||void 0===o?void 0:null===(t=o.error)||void 0===t?void 0:t.message)&&void 0!==s?s:null==e?void 0:null===(c=e.response)||void 0===c?void 0:null===(r=c.data)||void 0===r?void 0:r.message)&&void 0!==d?d:null==e?void 0:null===(i=e.response)||void 0===i?void 0:null===(l=i.data)||void 0===l?void 0:l.error)&&void 0!==u?u:null==e?void 0:e.detail)&&void 0!==p?p:null==e?void 0:e.message)&&void 0!==h?h:e;return(0,n.O)(g)}(e),U={...null!=t?t:{},description:J,placement:null!==(o=null==t?void 0:t.placement)&&void 0!==o?o:c()};if(void 0!==A||e instanceof Error||"string"==typeof e||e&&"object"==typeof e&&("error"in e||"detail"in e)){let e=function(e,t){var o,a,r,n,c;let l=(t||"").toLowerCase();return s.some(e=>l.includes(e))?"Authentication Error":d.some(e=>l.includes(e))?"Access Denied":(null==u?void 0:null===(o=u.some)||void 0===o?void 0:o.call(u,e=>l.includes(e)))||503===e?"Service Unavailable":(null==g?void 0:null===(a=g.some)||void 0===a?void 0:a.call(g,e=>l.includes(e)))?"Budget Exceeded":(null==m?void 0:null===(r=m.some)||void 0===r?void 0:r.call(m,e=>l.includes(e)))?"Feature Unavailable":(null==p?void 0:null===(n=p.some)||void 0===n?void 0:n.call(p,e=>l.includes(e)))?"Routing Error":y.some(e=>l.includes(e))?"Already Exists":j.some(e=>l.includes(e))?"Content Blocked":_.some(e=>l.includes(e))?"Validation Error":C.some(e=>l.includes(e))?"Integration Error":f.some(e=>l.includes(e))?"Validation Error":404===e||l.includes("not found")||w.some(e=>l.includes(e))?"Not Found":429===e||l.includes("rate limit")||l.includes("tpm")||l.includes("rpm")||(null==h?void 0:null===(c=h.some)||void 0===c?void 0:c.call(h,e=>l.includes(e)))?"Rate Limit Exceeded":e&&e>=500?"Server Error":401===e?"Authentication Error":403===e?"Access Denied":l.includes("enterprise")||l.includes("premium")?"Info":e&&e>=400?"Request Error":"Error"}(A,J),o={...U,message:e};if("Rate Limit Exceeded"===e||"Info"===e||"Budget Exceeded"===e||"Feature Unavailable"===e||"Content Blocked"===e||"Integration Error"===e){r.ZP.warning({...o,duration:null!==(a=null==t?void 0:t.duration)&&void 0!==a?a:7});return}if("Server Error"===e){r.ZP.error({...o,duration:null!==(l=null==t?void 0:t.duration)&&void 0!==l?l:8});return}if("Request Error"===e||"Authentication Error"===e||"Access Denied"===e||"Not Found"===e||"Error"===e){r.ZP.error({...o,duration:null!==(S=null==t?void 0:t.duration)&&void 0!==S?S:6});return}r.ZP.info({...o,duration:null!==(b=null==t?void 0:t.duration)&&void 0!==b?b:4});return}let R=function(e){let t=(e||"").toLowerCase();return k.some(e=>t.includes(e))?{kind:"success",title:"Success"}:T.some(e=>t.includes(e))?{kind:"warning",title:"Feature Notice"}:E.some(e=>t.includes(e))?{kind:"warning",title:"Configuration Warning"}:v.some(e=>t.includes(e))?{kind:"warning",title:"Rate Limit"}:null}(J),I={...U,message:null!==(F=null==R?void 0:R.title)&&void 0!==F?F:"Info"};if((null==R?void 0:R.kind)==="success"){r.ZP.success({...I,duration:null!==(P=null==t?void 0:t.duration)&&void 0!==P?P:3.5});return}if((null==R?void 0:R.kind)==="warning"){r.ZP.warning({...I,duration:null!==(O=null==t?void 0:t.duration)&&void 0!==O?O:6});return}r.ZP.info({...I,duration:null!==(B=null==t?void 0:t.duration)&&void 0!==B?B:4})},clear(){r.ZP.destroy()}}},19250:function(e,t,o){o.r(t),o.d(t,{DEFAULT_ORGANIZATION:function(){return g},PredictedSpendLogsCall:function(){return ti},addAllowedIP:function(){return ef},adminGlobalActivity:function(){return eJ},adminGlobalActivityExceptions:function(){return eI},adminGlobalActivityExceptionsPerDeployment:function(){return eM},adminGlobalActivityPerModel:function(){return eR},adminGlobalCacheActivity:function(){return eU},adminSpendLogsCall:function(){return eN},adminTopEndUsersCall:function(){return eG},adminTopKeysCall:function(){return ex},adminTopModelsCall:function(){return ez},adminspendByProvider:function(){return eA},alertingSettingsCall:function(){return U},allEndUsersCall:function(){return eF},allTagNamesCall:function(){return eb},availableTeamListCall:function(){return Y},budgetCreateCall:function(){return x},budgetDeleteCall:function(){return N},budgetUpdateCall:function(){return G},cachingHealthCheckCall:function(){return tE},callMCPTool:function(){return tH},cancelModelCostMapReload:function(){return b},claimOnboardingToken:function(){return el},convertPromptFileToJson:function(){return tA},createGuardrailCall:function(){return tU},createMCPServer:function(){return tD},createPassThroughEndpoint:function(){return ty},createPromptCall:function(){return tN},credentialCreateCall:function(){return e0},credentialDeleteCall:function(){return e4},credentialGetCall:function(){return e2},credentialListCall:function(){return e1},credentialUpdateCall:function(){return e3},defaultProxyBaseUrl:function(){return i},deleteAllowedIP:function(){return ew},deleteCallback:function(){return oh},deleteConfigFieldSetting:function(){return t_},deleteGuardrailCall:function(){return oo},deleteMCPServer:function(){return tZ},deletePassThroughEndpointsCall:function(){return tC},deletePromptCall:function(){return tG},fetchMCPAccessGroups:function(){return tL},fetchMCPServers:function(){return tz},formatDate:function(){return l},getAllowedIPs:function(){return em},getBudgetList:function(){return tu},getBudgetSettings:function(){return tp},getCallbacksCall:function(){return th},getConfigFieldSetting:function(){return tf},getDefaultTeamSettings:function(){return tX},getEmailEventSettings:function(){return t8},getGeneralSettingsCall:function(){return tg},getGuardrailInfo:function(){return on},getGuardrailProviderSpecificParams:function(){return or},getGuardrailUISettings:function(){return oa},getGuardrailsList:function(){return tP},getInternalUserSettings:function(){return tI},getModelCostMapReloadStatus:function(){return F},getOnboardingCredentials:function(){return ec},getOpenAPISchema:function(){return v},getPassThroughEndpointInfo:function(){return op},getPassThroughEndpointsCall:function(){return tm},getPossibleUserRoles:function(){return eQ},getPromptInfo:function(){return tB},getPromptsList:function(){return tO},getProxyBaseUrl:function(){return p},getProxyUISettings:function(){return tF},getPublicModelHubInfo:function(){return k},getRemainingUsers:function(){return od},getSSOSettings:function(){return ol},getTeamPermissionsCall:function(){return t1},getTotalSpendCall:function(){return en},getUiConfig:function(){return C},healthCheckCall:function(){return tv},healthCheckHistoryCall:function(){return tS},individualModelHealthCheckCall:function(){return tT},invitationClaimCall:function(){return J},invitationCreateCall:function(){return A},keyAliasesCall:function(){return eq},keyCreateCall:function(){return I},keyCreateServiceAccountCall:function(){return R},keyDeleteCall:function(){return z},keyInfoCall:function(){return eL},keyInfoV1Call:function(){return eV},keyListCall:function(){return eZ},keySpendLogsCall:function(){return eT},keyUpdateCall:function(){return e5},latestHealthChecksCall:function(){return tb},listMCPTools:function(){return tq},makeModelGroupPublic:function(){return _},mcpToolsCall:function(){return og},modelAvailableCall:function(){return ev},modelCostMap:function(){return T},modelCreateCall:function(){return P},modelDeleteCall:function(){return B},modelExceptionsCall:function(){return eC},modelHubCall:function(){return eg},modelHubPublicModelsCall:function(){return eh},modelInfoCall:function(){return eu},modelInfoV1Call:function(){return ep},modelMetricsCall:function(){return ey},modelMetricsSlowResponsesCall:function(){return e_},modelPatchUpdateCall:function(){return e9},modelSettingsCall:function(){return O},modelUpdateCall:function(){return e7},organizationCreateCall:function(){return Q},organizationDeleteCall:function(){return ee},organizationInfoCall:function(){return $},organizationListCall:function(){return K},organizationMemberAddCall:function(){return ta},organizationMemberDeleteCall:function(){return tr},organizationMemberUpdateCall:function(){return tn},organizationUpdateCall:function(){return X},patchPromptCall:function(){return tJ},perUserAnalyticsCall:function(){return oT},proxyBaseUrl:function(){return d},regenerateKeyCall:function(){return ei},reloadModelCostMap:function(){return E},resetEmailEventSettings:function(){return ot},scheduleModelCostMapReload:function(){return S},serverRootPath:function(){return s},serviceHealthCheck:function(){return td},sessionSpendLogsCall:function(){return t4},setCallbacksCall:function(){return tk},setGlobalLitellmHeaderName:function(){return j},slackBudgetAlertsHealthCheck:function(){return ts},spendUsersCall:function(){return eH},streamingModelMetricsCall:function(){return ej},tagCreateCall:function(){return tW},tagDailyActivityCall:function(){return ea},tagDauCall:function(){return oj},tagDeleteCall:function(){return tQ},tagDistinctCall:function(){return ok},tagInfoCall:function(){return tK},tagListCall:function(){return t$},tagMauCall:function(){return oC},tagUpdateCall:function(){return tY},tagWauCall:function(){return o_},tagsSpendLogsCall:function(){return eS},teamBulkMemberAddCall:function(){return te},teamCreateCall:function(){return eX},teamDailyActivityCall:function(){return er},teamDeleteCall:function(){return D},teamInfoCall:function(){return q},teamListCall:function(){return W},teamMemberAddCall:function(){return e8},teamMemberDeleteCall:function(){return to},teamMemberUpdateCall:function(){return tt},teamPermissionsUpdateCall:function(){return t2},teamSpendLogsCall:function(){return eE},teamUpdateCall:function(){return e6},testConnectionRequest:function(){return eD},testMCPConnectionRequest:function(){return om},testMCPToolsListRequest:function(){return of},transformRequestCall:function(){return et},uiAuditLogsCall:function(){return os},uiSpendLogDetailsCall:function(){return tR},uiSpendLogsCall:function(){return eB},updateConfigFieldSetting:function(){return tj},updateDefaultTeamSettings:function(){return t0},updateEmailEventSettings:function(){return oe},updateGuardrailCall:function(){return oc},updateInternalUserSettings:function(){return tM},updateMCPServer:function(){return tV},updatePassThroughEndpoint:function(){return ou},updatePassThroughFieldSetting:function(){return tw},updatePromptCall:function(){return tx},updateSSOSettings:function(){return oi},updateUsefulLinksCall:function(){return ek},userAgentAnalyticsCall:function(){return oy},userAgentSummaryCall:function(){return ov},userBulkUpdateUserCall:function(){return tl},userCreateCall:function(){return M},userDailyActivityAggregatedCall:function(){return eK},userDailyActivityCall:function(){return eo},userDeleteCall:function(){return L},userFilterUICall:function(){return eP},userGetAllUsersCall:function(){return e$},userGetRequesedtModelsCall:function(){return eY},userInfoCall:function(){return Z},userListCall:function(){return V},userRequestModelCall:function(){return eW},userSpendLogsCall:function(){return eO},userUpdateUserCall:function(){return tc},v2TeamListCall:function(){return H},vectorStoreCreateCall:function(){return t3},vectorStoreDeleteCall:function(){return t6},vectorStoreInfoCall:function(){return t9},vectorStoreListCall:function(){return t5},vectorStoreSearchCall:function(){return ow},vectorStoreUpdateCall:function(){return t7}});var a=o(42264),r=o(3914),n=o(63610),c=o(9114);let l=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)},i=null,s="/",d=null;console.log=function(){};let u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=window.location.origin,a=t||o;console.log("proxyBaseUrl:",d),console.log("serverRootPath:",e),e.length>0&&!a.endsWith(e)&&"/"!=e&&(a+=e,d=a),console.log("Updated proxyBaseUrl:",d)},p=()=>d||window.location.origin,h={GET:"GET",DELETE:"DELETE"},g="default_organization",m=0,f=async e=>{let t=Date.now();t-m>6e4?(e.includes("Authentication Error - Expired Key")&&(c.Z.info("UI Session Expired. Logging out."),m=t,(0,r.b)(),window.location.href=window.location.pathname),m=t):console.log("Error suppressed to prevent spam:",e)},w="Authorization",y="x-mcp-auth";function j(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Authorization";console.log("setGlobalLitellmHeaderName: ".concat(e)),w=e}let _=async(e,t)=>{let o=d?"".concat(d,"/model_group/make_public"):"/model_group/make_public";return(await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({model_groups:t})})).json()},C=async()=>{console.log("Getting UI config");let e=await fetch(i?"".concat(i,"/litellm/.well-known/litellm-ui-config"):"/litellm/.well-known/litellm-ui-config"),t=await e.json();return console.log("jsonData in getUiConfig:",t),u(t.server_root_path,t.proxy_base_url),t},k=async()=>{let e=await fetch(i?"".concat(i,"/public/model_hub/info"):"/public/model_hub/info");return await e.json()},v=async()=>{let e=d?"".concat(d,"/openapi.json"):"/openapi.json",t=await fetch(e);return await t.json()},T=async e=>{try{let t=d?"".concat(d,"/get/litellm_model_cost_map"):"/get/litellm_model_cost_map",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),a=await o.json();return console.log("received litellm model cost data: ".concat(a)),a}catch(e){throw console.error("Failed to get model cost map:",e),e}},E=async e=>{try{let t=d?"".concat(d,"/reload/model_cost_map"):"/reload/model_cost_map",o=await fetch(t,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),a=await o.json();return console.log("Model cost map reload response: ".concat(a)),a}catch(e){throw console.error("Failed to reload model cost map:",e),e}},S=async(e,t)=>{try{let o=d?"".concat(d,"/schedule/model_cost_map_reload?hours=").concat(t):"/schedule/model_cost_map_reload?hours=".concat(t),a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),r=await a.json();return console.log("Schedule model cost map reload response: ".concat(r)),r}catch(e){throw console.error("Failed to schedule model cost map reload:",e),e}},b=async e=>{try{let t=d?"".concat(d,"/schedule/model_cost_map_reload"):"/schedule/model_cost_map_reload",o=await fetch(t,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),a=await o.json();return console.log("Cancel model cost map reload response: ".concat(a)),a}catch(e){throw console.error("Failed to cancel model cost map reload:",e),e}},F=async e=>{try{let t=d?"".concat(d,"/schedule/model_cost_map_reload/status"):"/schedule/model_cost_map_reload/status";console.log("Fetching status from URL:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){console.error("Status request failed with status: ".concat(o.status));let e=await o.text();throw console.error("Error response:",e),Error("HTTP ".concat(o.status,": ").concat(e))}let a=await o.json();return console.log("Model cost map reload status:",a),a}catch(e){throw console.error("Failed to get model cost map reload status:",e),e}},P=async(e,t)=>{try{let o=d?"".concat(d,"/model/new"):"/model/new",r=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),a.ZP.destroy(),c.Z.success("Model ".concat(t.model_name," created successfully")),n}catch(e){throw console.error("Failed to create key:",e),e}},O=async e=>{try{let t=d?"".concat(d,"/model/settings"):"/model/settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){console.error("Failed to get model settings:",e)}},B=async(e,t)=>{console.log("model_id in model delete call: ".concat(t));try{let o=d?"".concat(d,"/model/delete"):"/model/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},N=async(e,t)=>{if(console.log("budget_id in budget delete call: ".concat(t)),null!=e)try{let o=d?"".concat(d,"/budget/delete"):"/budget/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},x=async(e,t)=>{try{console.log("Form Values in budgetCreateCall:",t),console.log("Form Values after check:",t);let o=d?"".concat(d,"/budget/new"):"/budget/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},G=async(e,t)=>{try{console.log("Form Values in budgetUpdateCall:",t),console.log("Form Values after check:",t);let o=d?"".concat(d,"/budget/update"):"/budget/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,t)=>{try{let o=d?"".concat(d,"/invitation/new"):"/invitation/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},J=async(e,t)=>{try{console.log("Form Values in invitationCreateCall:",t),console.log("Form Values after check:",t);let o=d?"".concat(d,"/invitation/claim"):"/invitation/claim",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},U=async e=>{try{let t=d?"".concat(d,"/alerting/settings"):"/alerting/settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},R=async(e,t)=>{try{for(let e of(console.log("Form Values in keyCreateServiceAccountCall:",t),t.description&&(t.metadata||(t.metadata={}),t.metadata.description=t.description,delete t.description,t.metadata=JSON.stringify(t.metadata)),n.d))if(t[e]){console.log("formValues.".concat(e,":"),t[e]);try{t[e]=JSON.parse(t[e])}catch(t){throw Error("Failed to parse ".concat(e,": ")+t)}}console.log("Form Values after check:",t);let o=d?"".concat(d,"/key/service-account/generate"):"/key/service-account/generate",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,t,o)=>{try{for(let e of(console.log("Form Values in keyCreateCall:",o),o.description&&(o.metadata||(o.metadata={}),o.metadata.description=o.description,delete o.description,o.metadata=JSON.stringify(o.metadata)),n.d))if(o[e]){console.log("formValues.".concat(e,":"),o[e]);try{o[e]=JSON.parse(o[e])}catch(t){throw Error("Failed to parse ".concat(e,": ")+t)}}console.log("Form Values after check:",o);let a=d?"".concat(d,"/key/generate"):"/key/generate",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...o})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let c=await r.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},M=async(e,t,o)=>{try{if(console.log("Form Values in keyCreateCall:",o),o.description&&(o.metadata||(o.metadata={}),o.metadata.description=o.description,delete o.description,o.metadata=JSON.stringify(o.metadata)),o.auto_create_key=!1,o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",o);let a=d?"".concat(d,"/user/new"):"/user/new",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...o})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},z=async(e,t)=>{try{let o=d?"".concat(d,"/key/delete"):"/key/delete";console.log("in keyDeleteCall:",t);let a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[t]})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},L=async(e,t)=>{try{let o=d?"".concat(d,"/user/delete"):"/user/delete";console.log("in userDeleteCall:",t);let a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_ids:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to delete user(s):",e),e}},D=async(e,t)=>{try{let o=d?"".concat(d,"/team/delete"):"/team/delete";console.log("in teamDeleteCall:",t);let a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_ids:[t]})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to delete key:",e),e}},V=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,i=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,s=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null;try{let u=d?"".concat(d,"/user/list"):"/user/list";console.log("in userListCall");let p=new URLSearchParams;if(t&&t.length>0){let e=t.join(",");p.append("user_ids",e)}o&&p.append("page",o.toString()),a&&p.append("page_size",a.toString()),r&&p.append("user_email",r),n&&p.append("role",n),c&&p.append("team",c),l&&p.append("sso_user_ids",l),i&&p.append("sort_by",i),s&&p.append("sort_order",s);let h=p.toString();h&&(u+="?".concat(h));let g=await fetch(u,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!g.ok){let e=await g.json(),t=oE(e);throw f(t),Error(t)}let m=await g.json();return console.log("/user/list API Response:",m),m}catch(e){throw console.error("Failed to create key:",e),e}},Z=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4?arguments[4]:void 0,n=arguments.length>5?arguments[5]:void 0,c=arguments.length>6&&void 0!==arguments[6]&&arguments[6];console.log("userInfoCall: ".concat(t,", ").concat(o,", ").concat(a,", ").concat(r,", ").concat(n,", ").concat(c));try{let l;if(a){l=d?"".concat(d,"/user/list"):"/user/list";let e=new URLSearchParams;null!=r&&e.append("page",r.toString()),null!=n&&e.append("page_size",n.toString()),l+="?".concat(e.toString())}else l=d?"".concat(d,"/user/info"):"/user/info",("Admin"!==o&&"Admin Viewer"!==o||c)&&t&&(l+="?user_id=".concat(t));console.log("Requesting user data from:",l);let i=await fetch(l,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}let s=await i.json();return console.log("API Response:",s),s}catch(e){throw console.error("Failed to fetch user data:",e),e}},q=async(e,t)=>{try{let o=d?"".concat(d,"/team/info"):"/team/info";t&&(o="".concat(o,"?team_id=").concat(t)),console.log("in teamInfoCall");let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},H=async function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;arguments.length>5&&void 0!==arguments[5]&&arguments[5],arguments.length>6&&void 0!==arguments[6]&&arguments[6],arguments.length>7&&void 0!==arguments[7]&&arguments[7],arguments.length>8&&void 0!==arguments[8]&&arguments[8];try{let n=d?"".concat(d,"/v2/team/list"):"/v2/team/list";console.log("in teamInfoCall");let c=new URLSearchParams;o&&c.append("user_id",o.toString()),t&&c.append("organization_id",t.toString()),a&&c.append("team_id",a.toString()),r&&c.append("team_alias",r.toString());let l=c.toString();l&&(n+="?".concat(l));let i=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}let s=await i.json();return console.log("/v2/team/list API Response:",s),s}catch(e){throw console.error("Failed to create key:",e),e}},W=async function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let n=d?"".concat(d,"/team/list"):"/team/list";console.log("in teamInfoCall");let c=new URLSearchParams;o&&c.append("user_id",o.toString()),t&&c.append("organization_id",t.toString()),a&&c.append("team_id",a.toString()),r&&c.append("team_alias",r.toString());let l=c.toString();l&&(n+="?".concat(l));let i=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}let s=await i.json();return console.log("/team/list API Response:",s),s}catch(e){throw console.error("Failed to create key:",e),e}},Y=async e=>{try{let t=d?"".concat(d,"/team/available"):"/team/available";console.log("in availableTeamListCall");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("/team/available_teams API Response:",a),a}catch(e){throw e}},K=async e=>{try{let t=d?"".concat(d,"/organization/list"):"/organization/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},$=async(e,t)=>{try{let o=d?"".concat(d,"/organization/info"):"/organization/info";t&&(o="".concat(o,"?organization_id=").concat(t)),console.log("in teamInfoCall");let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},Q=async(e,t)=>{try{if(console.log("Form Values in organizationCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw console.error("Failed to parse metadata:",e),Error("Failed to parse metadata: "+e)}}let o=d?"".concat(d,"/organization/new"):"/organization/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},X=async(e,t)=>{try{console.log("Form Values in organizationUpdateCall:",t);let o=d?"".concat(d,"/organization/update"):"/organization/update",a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("Update Team Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},ee=async(e,t)=>{try{let o=d?"".concat(d,"/organization/delete"):"/organization/delete",a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_ids:[t]})});if(!a.ok){let e=await a.text();throw f(e),Error("Error deleting organization: ".concat(e))}return await a.json()}catch(e){throw console.error("Failed to delete organization:",e),e}},et=async(e,t)=>{try{let o=d?"".concat(d,"/utils/transform_request"):"/utils/transform_request",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create key:",e),e}},eo=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;try{let r=d?"".concat(d,"/user/daily/activity"):"/user/daily/activity",n=new URLSearchParams;n.append("start_date",l(t)),n.append("end_date",l(o)),n.append("page_size","1000"),n.append("page",a.toString());let c=n.toString();c&&(r+="?".concat(c));let i=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}return await i.json()}catch(e){throw console.error("Failed to create key:",e),e}},ea=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let n=d?"".concat(d,"/tag/daily/activity"):"/tag/daily/activity",c=new URLSearchParams;c.append("start_date",l(t)),c.append("end_date",l(o)),c.append("page_size","1000"),c.append("page",a.toString()),r&&c.append("tags",r.join(","));let i=c.toString();i&&(n+="?".concat(i));let s=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.json(),t=oE(e);throw f(t),Error(t)}return await s.json()}catch(e){throw console.error("Failed to create key:",e),e}},er=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let n=d?"".concat(d,"/team/daily/activity"):"/team/daily/activity",c=new URLSearchParams;c.append("start_date",l(t)),c.append("end_date",l(o)),c.append("page_size","1000"),c.append("page",a.toString()),r&&c.append("team_ids",r.join(",")),c.append("exclude_team_ids","litellm-dashboard");let i=c.toString();i&&(n+="?".concat(i));let s=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.json(),t=oE(e);throw f(t),Error(t)}return await s.json()}catch(e){throw console.error("Failed to create key:",e),e}},en=async e=>{try{let t=d?"".concat(d,"/global/spend"):"/global/spend",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ec=async e=>{try{let t=d?"".concat(d,"/onboarding/get_token"):"/onboarding/get_token";t+="?invite_link=".concat(e);let o=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},el=async(e,t,o,a)=>{let r=d?"".concat(d,"/onboarding/claim_token"):"/onboarding/claim_token";try{let n=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({invitation_link:t,user_id:o,password:a})});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to delete key:",e),e}},ei=async(e,t,o)=>{try{let a=d?"".concat(d,"/key/").concat(t,"/regenerate"):"/key/".concat(t,"/regenerate"),r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("Regenerate key Response:",n),n}catch(e){throw console.error("Failed to regenerate key:",e),e}},es=!1,ed=null,eu=async(e,t,o)=>{try{console.log("modelInfoCall:",e,t,o);let a=d?"".concat(d,"/v2/model/info"):"/v2/model/info",r=new URLSearchParams;r.append("include_team_models","true"),r.toString()&&(a+="?".concat(r.toString()));let n=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!n.ok){let e=await n.text();throw e+="error shown=".concat(es),es||(e.includes("No model list passed")&&(e="No Models Exist. Click Add Model to get started."),c.Z.info(e),es=!0,ed&&clearTimeout(ed),ed=setTimeout(()=>{es=!1},1e4)),Error("Network response was not ok")}let l=await n.json();return console.log("modelInfoCall:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},ep=async(e,t)=>{try{let o=d?"".concat(d,"/v1/model/info"):"/v1/model/info";o+="?litellm_model_id=".concat(t);let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("modelInfoV1Call:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},eh=async()=>{let e=d?"".concat(d,"/public/model_hub"):"/public/model_hub";return(await fetch(e,{method:"GET",headers:{"Content-Type":"application/json"}})).json()},eg=async e=>{try{let t=d?"".concat(d,"/model_group/info"):"/model_group/info",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("modelHubCall:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},em=async e=>{try{let t=d?"".concat(d,"/get/allowed_ips"):"/get/allowed_ips",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("getAllowedIPs:",a),a.data}catch(e){throw console.error("Failed to get allowed IPs:",e),e}},ef=async(e,t)=>{try{let o=d?"".concat(d,"/add/allowed_ip"):"/add/allowed_ip",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({ip:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("addAllowedIP:",r),r}catch(e){throw console.error("Failed to add allowed IP:",e),e}},ew=async(e,t)=>{try{let o=d?"".concat(d,"/delete/allowed_ip"):"/delete/allowed_ip",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({ip:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("deleteAllowedIP:",r),r}catch(e){throw console.error("Failed to delete allowed IP:",e),e}},ey=async(e,t,o,a,r,n,c,l)=>{try{let t=d?"".concat(d,"/model/metrics"):"/model/metrics";a&&(t="".concat(t,"?_selected_model_group=").concat(a,"&startTime=").concat(r,"&endTime=").concat(n,"&api_key=").concat(c,"&customer=").concat(l));let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ej=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/model/streaming_metrics"):"/model/streaming_metrics";t&&(r="".concat(r,"?_selected_model_group=").concat(t,"&startTime=").concat(o,"&endTime=").concat(a));let n=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}return await n.json()}catch(e){throw console.error("Failed to create key:",e),e}},e_=async(e,t,o,a,r,n,c,l)=>{try{let t=d?"".concat(d,"/model/metrics/slow_responses"):"/model/metrics/slow_responses";a&&(t="".concat(t,"?_selected_model_group=").concat(a,"&startTime=").concat(r,"&endTime=").concat(n,"&api_key=").concat(c,"&customer=").concat(l));let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},eC=async(e,t,o,a,r,n,c,l)=>{try{let t=d?"".concat(d,"/model/metrics/exceptions"):"/model/metrics/exceptions";a&&(t="".concat(t,"?_selected_model_group=").concat(a,"&startTime=").concat(r,"&endTime=").concat(n,"&api_key=").concat(c,"&customer=").concat(l));let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ek=async(e,t)=>{try{let o=d?"".concat(d,"/model_hub/update_useful_links"):"/model_hub/update_useful_links",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({useful_links:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create key:",e),e}},ev=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=(arguments.length>5&&void 0!==arguments[5]&&arguments[5],arguments.length>6&&void 0!==arguments[6]&&arguments[6]);console.log("in /models calls, globalLitellmHeaderName",w);try{let t=d?"".concat(d,"/models"):"/models",o=new URLSearchParams;o.append("include_model_access_groups","True"),!0===a&&o.append("return_wildcard_routes","True"),!0===n&&o.append("only_model_access_groups","True"),r&&o.append("team_id",r.toString()),o.toString()&&(t+="?".concat(o.toString()));let c=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}return await c.json()}catch(e){throw console.error("Failed to create key:",e),e}},eT=async(e,t)=>{try{let o=d?"".concat(d,"/global/spend/logs"):"/global/spend/logs";console.log("in keySpendLogsCall:",o);let a=await fetch("".concat(o,"?api_key=").concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},eE=async e=>{try{let t=d?"".concat(d,"/global/spend/teams"):"/global/spend/teams";console.log("in teamSpendLogsCall:",t);let o=await fetch("".concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eS=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/spend/tags"):"/global/spend/tags";t&&o&&(r="".concat(r,"?start_date=").concat(t,"&end_date=").concat(o)),a&&(r+="".concat(r,"&tags=").concat(a.join(","))),console.log("in tagsSpendLogsCall:",r);let n=await fetch("".concat(r),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to create key:",e),e}},eb=async e=>{try{let t=d?"".concat(d,"/global/spend/all_tag_names"):"/global/spend/all_tag_names";console.log("in global/spend/all_tag_names call",t);let o=await fetch("".concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eF=async e=>{try{let t=d?"".concat(d,"/customer/list"):"/customer/list";console.log("in customer/list",t);let o=await fetch("".concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eP=async(e,t)=>{try{let o=d?"".concat(d,"/user/filter/ui"):"/user/filter/ui";t.get("user_email")&&(o+="?user_email=".concat(t.get("user_email"))),t.get("user_id")&&(o+="?user_id=".concat(t.get("user_id")));let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create key:",e),e}},eO=async(e,t,o,a,r,n)=>{try{console.log("user role in spend logs call: ".concat(o));let t=d?"".concat(d,"/spend/logs"):"/spend/logs";t="App Owner"==o?"".concat(t,"?user_id=").concat(a,"&start_date=").concat(r,"&end_date=").concat(n):"".concat(t,"?start_date=").concat(r,"&end_date=").concat(n);let c=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},eB=async(e,t,o,a,r,n,c,l,i,s,u,p,h)=>{try{let g=d?"".concat(d,"/spend/logs/ui"):"/spend/logs/ui",m=new URLSearchParams;t&&m.append("api_key",t),o&&m.append("team_id",o),a&&m.append("request_id",a),r&&m.append("start_date",r),n&&m.append("end_date",n),c&&m.append("page",c.toString()),l&&m.append("page_size",l.toString()),i&&m.append("user_id",i),s&&m.append("end_user",s),u&&m.append("status_filter",u),p&&m.append("model",p),h&&m.append("key_alias",h);let y=m.toString();y&&(g+="?".concat(y));let j=await fetch(g,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!j.ok){let e=await j.json(),t=oE(e);throw f(t),Error(t)}let _=await j.json();return console.log("Spend Logs Response:",_),_}catch(e){throw console.error("Failed to fetch spend logs:",e),e}},eN=async e=>{try{let t=d?"".concat(d,"/global/spend/logs"):"/global/spend/logs",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},ex=async e=>{try{let t=d?"".concat(d,"/global/spend/keys?limit=5"):"/global/spend/keys?limit=5",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eG=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/spend/end_users"):"/global/spend/end_users",n="";n=t?JSON.stringify({api_key:t,startTime:o,endTime:a}):JSON.stringify({startTime:o,endTime:a});let c={method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:n},l=await fetch(r,c);if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}let i=await l.json();return console.log(i),i}catch(e){throw console.error("Failed to create key:",e),e}},eA=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/spend/provider"):"/global/spend/provider";o&&a&&(r+="?start_date=".concat(o,"&end_date=").concat(a)),t&&(r+="&api_key=".concat(t));let n={method:"GET",headers:{[w]:"Bearer ".concat(e)}},c=await fetch(r,n);if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eJ=async(e,t,o)=>{try{let a=d?"".concat(d,"/global/activity"):"/global/activity";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o));let r={method:"GET",headers:{[w]:"Bearer ".concat(e)}},n=await fetch(a,r);if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eU=async(e,t,o)=>{try{let a=d?"".concat(d,"/global/activity/cache_hits"):"/global/activity/cache_hits";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o));let r={method:"GET",headers:{[w]:"Bearer ".concat(e)}},n=await fetch(a,r);if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eR=async(e,t,o)=>{try{let a=d?"".concat(d,"/global/activity/model"):"/global/activity/model";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o));let r={method:"GET",headers:{[w]:"Bearer ".concat(e)}},n=await fetch(a,r);if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eI=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/activity/exceptions"):"/global/activity/exceptions";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o)),a&&(r+="&model_group=".concat(a));let n={method:"GET",headers:{[w]:"Bearer ".concat(e)}},c=await fetch(r,n);if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eM=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/activity/exceptions/deployment"):"/global/activity/exceptions/deployment";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o)),a&&(r+="&model_group=".concat(a));let n={method:"GET",headers:{[w]:"Bearer ".concat(e)}},c=await fetch(r,n);if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to fetch spend data:",e),e}},ez=async e=>{try{let t=d?"".concat(d,"/global/spend/models?limit=5"):"/global/spend/models?limit=5",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eL=async(e,t)=>{try{let o=d?"".concat(d,"/v2/key/info"):"/v2/key/info",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:t})});if(!a.ok){let e=await a.text();if(e.includes("Invalid proxy server token passed"))throw Error("Invalid proxy server token passed");throw f(e),Error("Network response was not ok")}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},eD=async(e,t,o,a)=>{try{console.log("Sending model connection test request:",JSON.stringify(t));let n=d?"".concat(d,"/health/test_connection"):"/health/test_connection",c=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",[w]:"Bearer ".concat(e)},body:JSON.stringify({litellm_params:t,model_info:o,mode:a})}),l=c.headers.get("content-type");if(!l||!l.includes("application/json")){let e=await c.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(c.status,": ").concat(c.statusText,"). Check network tab for details."))}let i=await c.json();if(!c.ok||"error"===i.status){if("error"===i.status);else{var r;return{status:"error",message:(null===(r=i.error)||void 0===r?void 0:r.message)||"Connection test failed: ".concat(c.status," ").concat(c.statusText)}}}return i}catch(e){throw console.error("Model connection test error:",e),e}},eV=async(e,t)=>{try{console.log("entering keyInfoV1Call");let o=d?"".concat(d,"/key/info"):"/key/info";o="".concat(o,"?key=").concat(t);let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(console.log("response",a),!a.ok){let e=await a.text();f(e),c.Z.fromBackend("Failed to fetch key info - "+e)}let r=await a.json();return console.log("data",r),r}catch(e){throw console.error("Failed to fetch key info:",e),e}},eZ=async function(e,t,o,a,r,n,c,l){let i=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,s=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null;try{let u=d?"".concat(d,"/key/list"):"/key/list";console.log("in keyListCall");let p=new URLSearchParams;o&&p.append("team_id",o.toString()),t&&p.append("organization_id",t.toString()),a&&p.append("key_alias",a),n&&p.append("key_hash",n),r&&p.append("user_id",r.toString()),c&&p.append("page",c.toString()),l&&p.append("size",l.toString()),i&&p.append("sort_by",i),s&&p.append("sort_order",s),p.append("return_full_object","true"),p.append("include_team_keys","true"),p.append("include_created_by_keys","true");let h=p.toString();h&&(u+="?".concat(h));let g=await fetch(u,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!g.ok){let e=await g.json(),t=oE(e);throw f(t),Error(t)}let m=await g.json();return console.log("/team/list API Response:",m),m}catch(e){throw console.error("Failed to create key:",e),e}},eq=async e=>{try{let t=d?"".concat(d,"/key/aliases"):"/key/aliases";console.log("in keyAliasesCall");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("/key/aliases API Response:",a),a}catch(e){throw console.error("Failed to fetch key aliases:",e),e}},eH=async(e,t)=>{try{let o=d?"".concat(d,"/spend/users"):"/spend/users";console.log("in spendUsersCall:",o);let a=await fetch("".concat(o,"?user_id=").concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to get spend for user",e),e}},eW=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/user/request_model"):"/user/request_model",n=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({models:[t],user_id:o,justification:a})});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to create key:",e),e}},eY=async e=>{try{let t=d?"".concat(d,"/user/get_requests"):"/user/get_requests";console.log("in userGetRequesedtModelsCall:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to get requested models:",e),e}},eK=async(e,t,o)=>{try{let a=d?"".concat(d,"/user/daily/activity/aggregated"):"/user/daily/activity/aggregated",r=new URLSearchParams,n=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)};r.append("start_date",n(t)),r.append("end_date",n(o));let c=r.toString();c&&(a+="?".concat(c));let l=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch aggregated user daily activity:",e),e}},e$=async(e,t)=>{try{let o=d?"".concat(d,"/user/get_users?role=").concat(t):"/user/get_users?role=".concat(t);console.log("in userGetAllUsersCall:",o);let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to get requested models:",e),e}},eQ=async e=>{try{let t=d?"".concat(d,"/user/available_roles"):"/user/available_roles",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("response from user/available_role",a),a}catch(e){throw e}},eX=async(e,t)=>{try{if(console.log("Form Values in teamCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let o=d?"".concat(d,"/team/new"):"/team/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},e0=async(e,t)=>{try{if(console.log("Form Values in credentialCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let o=d?"".concat(d,"/credentials"):"/credentials",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},e1=async e=>{try{let t=d?"".concat(d,"/credentials"):"/credentials";console.log("in credentialListCall");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("/credentials API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},e2=async(e,t,o)=>{try{let a=d?"".concat(d,"/credentials"):"/credentials";t?a+="/by_name/".concat(t):o&&(a+="/by_model/".concat(o)),console.log("in credentialListCall");let r=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("/credentials API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},e4=async(e,t)=>{try{let o=d?"".concat(d,"/credentials/").concat(t):"/credentials/".concat(t);console.log("in credentialDeleteCall:",t);let a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to delete key:",e),e}},e3=async(e,t,o)=>{try{if(console.log("Form Values in credentialUpdateCall:",o),o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let a=d?"".concat(d,"/credentials/").concat(t):"/credentials/".concat(t),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},e5=async(e,t)=>{try{if(console.log("Form Values in keyUpdateCall:",t),t.model_tpm_limit){console.log("formValues.model_tpm_limit:",t.model_tpm_limit);try{t.model_tpm_limit=JSON.parse(t.model_tpm_limit)}catch(e){throw Error("Failed to parse model_tpm_limit: "+e)}}if(t.model_rpm_limit){console.log("formValues.model_rpm_limit:",t.model_rpm_limit);try{t.model_rpm_limit=JSON.parse(t.model_rpm_limit)}catch(e){throw Error("Failed to parse model_rpm_limit: "+e)}}let o=d?"".concat(d,"/key/update"):"/key/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let r=await a.json();return console.log("Update key Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},e6=async(e,t)=>{try{console.log("Form Values in teamUpateCall:",t);let o=d?"".concat(d,"/team/update"):"/team/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error response from the server:",e),c.Z.fromBackend("Failed to update team settings: "+e),Error(e)}let r=await a.json();return console.log("Update Team Response:",r),r}catch(e){throw console.error("Failed to update team:",e),e}},e9=async(e,t,o)=>{try{console.log("Form Values in modelUpateCall:",t);let a=d?"".concat(d,"/model/").concat(o,"/update"):"/model/".concat(o,"/update"),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error update from the server:",e),Error("Network response was not ok")}let n=await r.json();return console.log("Update model Response:",n),n}catch(e){throw console.error("Failed to update model:",e),e}},e7=async(e,t)=>{try{console.log("Form Values in modelUpateCall:",t);let o=d?"".concat(d,"/model/update"):"/model/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error update from the server:",e),Error("Network response was not ok")}let r=await a.json();return console.log("Update model Response:",r),r}catch(e){throw console.error("Failed to update model:",e),e}},e8=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let r=d?"".concat(d,"/team/member_add"):"/team/member_add",n=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,member:o})});if(!n.ok){var a;let e=await n.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(a=t.detail)||void 0===a?void 0:a.error)||"Failed to add team member",r=Error(o);throw r.raw=t,r}let c=await n.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},te=async(e,t,o,a,r)=>{try{console.log("Bulk add team members:",{teamId:t,members:o,maxBudgetInTeam:a});let c=d?"".concat(d,"/team/bulk_member_add"):"/team/bulk_member_add",l={team_id:t};r?l.all_users=!0:l.members=o,null!=a&&(l.max_budget_in_team=a);let i=await fetch(c,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(l)});if(!i.ok){var n;let e=await i.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(n=t.detail)||void 0===n?void 0:n.error)||"Failed to bulk add team members",a=Error(o);throw a.raw=t,a}let s=await i.json();return console.log("Bulk team member add API Response:",s),s}catch(e){throw console.error("Failed to bulk add team members:",e),e}},tt=async(e,t,o)=>{try{console.log("Form Values in teamMemberUpdateCall:",o),console.log("Budget value:",o.max_budget_in_team),console.log("TPM limit:",o.tpm_limit),console.log("RPM limit:",o.rpm_limit);let r=d?"".concat(d,"/team/member_update"):"/team/member_update",n={team_id:t,role:o.role,user_id:o.user_id};void 0!==o.user_email&&(n.user_email=o.user_email),void 0!==o.max_budget_in_team&&null!==o.max_budget_in_team&&(n.max_budget_in_team=o.max_budget_in_team),void 0!==o.tpm_limit&&null!==o.tpm_limit&&(n.tpm_limit=o.tpm_limit),void 0!==o.rpm_limit&&null!==o.rpm_limit&&(n.rpm_limit=o.rpm_limit),console.log("Final request body:",n);let c=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(n)});if(!c.ok){var a;let e=await c.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(a=t.detail)||void 0===a?void 0:a.error)||"Failed to add team member",r=Error(o);throw r.raw=t,r}let l=await c.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to update team member:",e),e}},to=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let a=d?"".concat(d,"/team/member_delete"):"/team/member_delete",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,...void 0!==o.user_email&&{user_email:o.user_email},...void 0!==o.user_id&&{user_id:o.user_id}})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},ta=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let a=d?"".concat(d,"/organization/member_add"):"/organization/member_add",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,member:o})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create organization member:",e),e}},tr=async(e,t,o)=>{try{console.log("Form Values in organizationMemberDeleteCall:",o);let a=d?"".concat(d,"/organization/member_delete"):"/organization/member_delete",r=await fetch(a,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,user_id:o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to delete organization member:",e),e}},tn=async(e,t,o)=>{try{console.log("Form Values in organizationMemberUpdateCall:",o);let a=d?"".concat(d,"/organization/member_update"):"/organization/member_update",r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,...o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to update organization member:",e),e}},tc=async(e,t,o)=>{try{console.log("Form Values in userUpdateUserCall:",t);let a=d?"".concat(d,"/user/update"):"/user/update",r={...t};null!==o&&(r.user_role=o),r=JSON.stringify(r);let n=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:r});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},tl=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];try{let r;console.log("Form Values in userUpdateUserCall:",t);let n=d?"".concat(d,"/user/bulk_update"):"/user/bulk_update";if(a)r=JSON.stringify({all_users:!0,user_updates:t});else if(o&&o.length>0){let e=[];for(let a of o)e.push({user_id:a,...t});r=JSON.stringify({users:e})}else throw Error("Must provide either userIds or set allUsers=true");let c=await fetch(n,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:r});if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},ti=async(e,t)=>{try{let o=d?"".concat(d,"/global/predict/spend/logs"):"/global/predict/spend/logs",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({data:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},ts=async e=>{try{let t=d?"".concat(d,"/health/services?service=slack_budget_alerts"):"/health/services?service=slack_budget_alerts";console.log("Checking Slack Budget Alerts service health");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error(e)}let a=await o.json();return c.Z.success("Test Slack Alert worked - check your Slack!"),console.log("Service Health Response:",a),a}catch(e){throw console.error("Failed to perform health check:",e),e}},td=async(e,t)=>{try{let o=d?"".concat(d,"/health/services?service=").concat(t):"/health/services?service=".concat(t);console.log("Checking Slack Budget Alerts service health");let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw f(e),Error(e)}return await a.json()}catch(e){throw console.error("Failed to perform health check:",e),e}},tu=async e=>{try{let t=d?"".concat(d,"/budget/list"):"/budget/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tp=async e=>{try{let t=d?"".concat(d,"/budget/settings"):"/budget/settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},th=async(e,t,o)=>{try{let t=d?"".concat(d,"/get/config/callbacks"):"/get/config/callbacks",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tg=async e=>{try{let t=d?"".concat(d,"/config/list?config_type=general_settings"):"/config/list?config_type=general_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tm=async e=>{try{let t=d?"".concat(d,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tf=async(e,t)=>{try{let o=d?"".concat(d,"/config/field/info?field_name=").concat(t):"/config/field/info?field_name=".concat(t),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},tw=async(e,t,o)=>{try{let a=d?"".concat(d,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,field_value:o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return c.Z.success("Successfully updated value!"),n}catch(e){throw console.error("Failed to set callbacks:",e),e}},ty=async(e,t)=>{try{let o=d?"".concat(d,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},tj=async(e,t,o)=>{try{let a=d?"".concat(d,"/config/field/update"):"/config/field/update",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,field_value:o,config_type:"general_settings"})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return c.Z.success("Successfully updated value!"),n}catch(e){throw console.error("Failed to set callbacks:",e),e}},t_=async(e,t)=>{try{let o=d?"".concat(d,"/config/field/delete"):"/config/field/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,config_type:"general_settings"})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return c.Z.success("Field reset on proxy"),r}catch(e){throw console.error("Failed to get callbacks:",e),e}},tC=async(e,t)=>{try{let o=d?"".concat(d,"/config/pass_through_endpoint?endpoint_id=").concat(t):"/config/pass_through_endpoint?endpoint_id=".concat(t),a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tk=async(e,t)=>{try{let o=d?"".concat(d,"/config/update"):"/config/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},tv=async e=>{try{let t=d?"".concat(d,"/health"):"/health",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to call /health:",e),e}},tT=async(e,t)=>{try{let o=d?"".concat(d,"/health?model=").concat(encodeURIComponent(t)):"/health?model=".concat(encodeURIComponent(t)),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to call /health for model ".concat(t,":"),e),e}},tE=async e=>{try{let t=d?"".concat(d,"/cache/ping"):"/cache/ping",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error(e)}return await o.json()}catch(e){throw console.error("Failed to call /cache/ping:",e),e}},tS=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:100,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;try{let n=d?"".concat(d,"/health/history"):"/health/history",c=new URLSearchParams;t&&c.append("model",t),o&&c.append("status_filter",o),c.append("limit",a.toString()),c.append("offset",r.toString()),c.toString()&&(n+="?".concat(c.toString()));let l=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw f(e),Error(e)}return await l.json()}catch(e){throw console.error("Failed to call /health/history:",e),e}},tb=async e=>{try{let t=d?"".concat(d,"/health/latest"):"/health/latest",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error(e)}return await o.json()}catch(e){throw console.error("Failed to call /health/latest:",e),e}},tF=async e=>{try{console.log("Getting proxy UI settings"),console.log("proxyBaseUrl in getProxyUISettings:",d);let t=d?"".concat(d,"/sso/get/ui_settings"):"/sso/get/ui_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tP=async e=>{try{let t=d?"".concat(d,"/v2/guardrails/list"):"/v2/guardrails/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get guardrails list:",e),e}},tO=async e=>{try{let t=d?"".concat(d,"/prompts/list"):"/prompts/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get prompts list:",e),e}},tB=async(e,t)=>{try{let o=d?"".concat(d,"/prompts/").concat(t,"/info"):"/prompts/".concat(t,"/info"),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to get prompt info:",e),e}},tN=async(e,t)=>{try{let o=d?"".concat(d,"/prompts"):"/prompts",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create prompt:",e),e}},tx=async(e,t,o)=>{try{let a=d?"".concat(d,"/prompts/").concat(t):"/prompts/".concat(t),r=await fetch(a,{method:"PUT",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}return await r.json()}catch(e){throw console.error("Failed to update prompt:",e),e}},tG=async(e,t)=>{try{let o=d?"".concat(d,"/prompts/").concat(t):"/prompts/".concat(t),a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to delete prompt:",e),e}},tA=async(e,t)=>{try{let o=new FormData;o.append("file",t);let a=d?"".concat(d,"/utils/dotprompt_json_converter"):"/utils/dotprompt_json_converter",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e)},body:o});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}return await r.json()}catch(e){throw console.error("Failed to convert prompt file:",e),e}},tJ=async(e,t,o)=>{try{let a=d?"".concat(d,"/prompts/").concat(t):"/prompts/".concat(t),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}return await r.json()}catch(e){throw console.error("Failed to patch prompt:",e),e}},tU=async(e,t)=>{try{let o=d?"".concat(d,"/guardrails"):"/guardrails",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({guardrail:t})});if(!a.ok){let e=await a.text();throw f(e),Error(e)}let r=await a.json();return console.log("Create guardrail response:",r),r}catch(e){throw console.error("Failed to create guardrail:",e),e}},tR=async(e,t,o)=>{try{let a=d?"".concat(d,"/spend/logs/ui/").concat(t,"?start_date=").concat(encodeURIComponent(o)):"/spend/logs/ui/".concat(t,"?start_date=").concat(encodeURIComponent(o));console.log("Fetching log details from:",a);let r=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("Fetched log details:",n),n}catch(e){throw console.error("Failed to fetch log details:",e),e}},tI=async e=>{try{let t=d?"".concat(d,"/get/internal_user_settings"):"/get/internal_user_settings";console.log("Fetching SSO settings from:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched SSO settings:",a),a}catch(e){throw console.error("Failed to fetch SSO settings:",e),e}},tM=async(e,t)=>{try{let o=d?"".concat(d,"/update/internal_user_settings"):"/update/internal_user_settings";console.log("Updating internal user settings:",t);let a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();throw f(e),Error(e)}let r=await a.json();return console.log("Updated internal user settings:",r),c.Z.success("Internal user settings updated successfully"),r}catch(e){throw console.error("Failed to update internal user settings:",e),e}},tz=async e=>{try{let t=d?"".concat(d,"/v1/mcp/server"):"/v1/mcp/server";console.log("Fetching MCP servers from:",t);let o=await fetch(t,{method:h.GET,headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched MCP servers:",a),a}catch(e){throw console.error("Failed to fetch MCP servers:",e),e}},tL=async e=>{try{let t=d?"".concat(d,"/v1/mcp/access_groups"):"/v1/mcp/access_groups";console.log("Fetching MCP access groups from:",t);let o=await fetch(t,{method:h.GET,headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched MCP access groups:",a),a.access_groups||[]}catch(e){throw console.error("Failed to fetch MCP access groups:",e),e}},tD=async(e,t)=>{try{console.log("Form Values in createMCPServer:",t);let o=d?"".concat(d,"/v1/mcp/server"):"/v1/mcp/server",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},tV=async(e,t)=>{try{let o=d?"".concat(d,"/v1/mcp/server"):"/v1/mcp/server",a=await fetch(o,{method:"PUT",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to update MCP server:",e),e}},tZ=async(e,t)=>{try{let o=(d?"".concat(d):"")+"/v1/mcp/server/".concat(t);console.log("in deleteMCPServer:",t);let a=await fetch(o,{method:h.DELETE,headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}}catch(e){throw console.error("Failed to delete key:",e),e}},tq=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/mcp-rest/tools/list?server_id=").concat(t):"/mcp-rest/tools/list?server_id=".concat(t);console.log("Fetching MCP tools from:",r);let n={[w]:"Bearer ".concat(e),"Content-Type":"application/json"};a&&o?n["x-mcp-".concat(a,"-authorization")]=o:o&&(n[y]=o);let c=await fetch(r,{method:"GET",headers:n}),l=await c.json();if(console.log("Fetched MCP tools response:",l),!c.ok){if(l.error&&l.message)throw Error(l.message);throw Error("Failed to fetch MCP tools")}return l}catch(e){return console.error("Failed to fetch MCP tools:",e),{tools:[],error:"network_error",message:e instanceof Error?e.message:"Failed to fetch MCP tools"}}},tH=async(e,t,o,a,r)=>{try{let n=d?"".concat(d,"/mcp-rest/tools/call"):"/mcp-rest/tools/call";console.log("Calling MCP tool:",t,"with arguments:",o);let c={[w]:"Bearer ".concat(e),"Content-Type":"application/json"};r?c["x-mcp-".concat(r,"-authorization")]=a:c[y]=a;let l=await fetch(n,{method:"POST",headers:c,body:JSON.stringify({name:t,arguments:o})});if(!l.ok){let e="Network response was not ok",t=null,o=await l.text();try{let a=JSON.parse(o);a.detail?"string"==typeof a.detail?e=a.detail:"object"==typeof a.detail&&(e=a.detail.message||a.detail.error||"An error occurred",t=a.detail):e=a.message||a.error||e}catch(t){console.error("Failed to parse JSON error response:",t),o&&(e=o)}let a=Error(e);throw a.status=l.status,a.statusText=l.statusText,a.details=t,f(e),a}let i=await l.json();return console.log("MCP tool call response:",i),i}catch(e){throw console.error("Failed to call MCP tool:",e),console.error("Error type:",typeof e),e instanceof Error&&(console.error("Error message:",e.message),console.error("Error stack:",e.stack)),e}},tW=async(e,t)=>{try{let o=d?"".concat(d,"/tag/new"):"/tag/new",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();await f(e);return}return await a.json()}catch(e){throw console.error("Error creating tag:",e),e}},tY=async(e,t)=>{try{let o=d?"".concat(d,"/tag/update"):"/tag/update",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();await f(e);return}return await a.json()}catch(e){throw console.error("Error updating tag:",e),e}},tK=async(e,t)=>{try{let o=d?"".concat(d,"/tag/info"):"/tag/info",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({names:t})});if(!a.ok){let e=await a.text();return await f(e),{}}return await a.json()}catch(e){throw console.error("Error getting tag info:",e),e}},t$=async e=>{try{let t=d?"".concat(d,"/tag/list"):"/tag/list",o=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e)}});if(!o.ok){let e=await o.text();return await f(e),{}}return await o.json()}catch(e){throw console.error("Error listing tags:",e),e}},tQ=async(e,t)=>{try{let o=d?"".concat(d,"/tag/delete"):"/tag/delete",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({name:t})});if(!a.ok){let e=await a.text();await f(e);return}return await a.json()}catch(e){throw console.error("Error deleting tag:",e),e}},tX=async e=>{try{let t=d?"".concat(d,"/get/default_team_settings"):"/get/default_team_settings";console.log("Fetching default team settings from:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched default team settings:",a),a}catch(e){throw console.error("Failed to fetch default team settings:",e),e}},t0=async(e,t)=>{try{let o=d?"".concat(d,"/update/default_team_settings"):"/update/default_team_settings";console.log("Updating default team settings:",t);let a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("Updated default team settings:",r),c.Z.success("Default team settings updated successfully"),r}catch(e){throw console.error("Failed to update default team settings:",e),e}},t1=async(e,t)=>{try{let o=d?"".concat(d,"/team/permissions_list?team_id=").concat(t):"/team/permissions_list?team_id=".concat(t),a=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("Team permissions response:",r),r}catch(e){throw console.error("Failed to get team permissions:",e),e}},t2=async(e,t,o)=>{try{let a=d?"".concat(d,"/team/permissions_update"):"/team/permissions_update",r=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({team_id:t,team_member_permissions:o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("Team permissions response:",n),n}catch(e){throw console.error("Failed to update team permissions:",e),e}},t4=async(e,t)=>{try{let o=d?"".concat(d,"/spend/logs/session/ui?session_id=").concat(encodeURIComponent(t)):"/spend/logs/session/ui?session_id=".concat(encodeURIComponent(t)),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to fetch session logs:",e),e}},t3=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/new"):"/vector_store/new",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to create vector store")}return await a.json()}catch(e){throw console.error("Error creating vector store:",e),e}},t5=async function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1],arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let t=d?"".concat(d,"/vector_store/list"):"/vector_store/list",o=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}});if(!o.ok){let e=await o.json();throw Error(e.detail||"Failed to list vector stores")}return await o.json()}catch(e){throw console.error("Error listing vector stores:",e),e}},t6=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/delete"):"/vector_store/delete",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({vector_store_id:t})});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to delete vector store")}return await a.json()}catch(e){throw console.error("Error deleting vector store:",e),e}},t9=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/info"):"/vector_store/info",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({vector_store_id:t})});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to get vector store info")}return await a.json()}catch(e){throw console.error("Error getting vector store info:",e),e}},t7=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/update"):"/vector_store/update",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to update vector store")}return await a.json()}catch(e){throw console.error("Error updating vector store:",e),e}},t8=async e=>{try{let t=d?"".concat(d,"/email/event_settings"):"/email/event_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to get email event settings")}let a=await o.json();return console.log("Email event settings response:",a),a}catch(e){throw console.error("Failed to get email event settings:",e),e}},oe=async(e,t)=>{try{let o=d?"".concat(d,"/email/event_settings"):"/email/event_settings",a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();throw f(e),Error("Failed to update email event settings")}let r=await a.json();return console.log("Update email event settings response:",r),r}catch(e){throw console.error("Failed to update email event settings:",e),e}},ot=async e=>{try{let t=d?"".concat(d,"/email/event_settings/reset"):"/email/event_settings/reset",o=await fetch(t,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to reset email event settings")}let a=await o.json();return console.log("Reset email event settings response:",a),a}catch(e){throw console.error("Failed to reset email event settings:",e),e}},oo=async(e,t)=>{try{let o=d?"".concat(d,"/guardrails/").concat(t):"/guardrails/".concat(t),a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw f(e),Error(e)}let r=await a.json();return console.log("Delete guardrail response:",r),r}catch(e){throw console.error("Failed to delete guardrail:",e),e}},oa=async e=>{try{let t=d?"".concat(d,"/guardrails/ui/add_guardrail_settings"):"/guardrails/ui/add_guardrail_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to get guardrail UI settings")}let a=await o.json();return console.log("Guardrail UI settings response:",a),a}catch(e){throw console.error("Failed to get guardrail UI settings:",e),e}},or=async e=>{try{let t=d?"".concat(d,"/guardrails/ui/provider_specific_params"):"/guardrails/ui/provider_specific_params",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to get guardrail provider specific parameters")}let a=await o.json();return console.log("Guardrail provider specific params response:",a),a}catch(e){throw console.error("Failed to get guardrail provider specific parameters:",e),e}},on=async(e,t)=>{try{let o=d?"".concat(d,"/guardrails/").concat(t,"/info"):"/guardrails/".concat(t,"/info"),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw f(e),Error("Failed to get guardrail info")}let r=await a.json();return console.log("Guardrail info response:",r),r}catch(e){throw console.error("Failed to get guardrail info:",e),e}},oc=async(e,t,o)=>{try{let a=d?"".concat(d,"/guardrails/").concat(t):"/guardrails/".concat(t),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.text();throw f(e),Error("Failed to update guardrail")}let n=await r.json();return console.log("Update guardrail response:",n),n}catch(e){throw console.error("Failed to update guardrail:",e),e}},ol=async e=>{try{let t=d?"".concat(d,"/get/sso_settings"):"/get/sso_settings";console.log("Fetching SSO configuration from:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched SSO configuration:",a),a}catch(e){throw console.error("Failed to fetch SSO configuration:",e),e}},oi=async(e,t)=>{try{let o=d?"".concat(d,"/update/sso_settings"):"/update/sso_settings";console.log("Updating SSO configuration:",t);let a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("Updated SSO configuration:",r),r}catch(e){throw console.error("Failed to update SSO configuration:",e),e}},os=async(e,t,o,a,r)=>{try{let t=d?"".concat(d,"/audit"):"/audit",o=new URLSearchParams;a&&o.append("page",a.toString()),r&&o.append("page_size",r.toString());let n=o.toString();n&&(t+="?".concat(n));let c=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}return await c.json()}catch(e){throw console.error("Failed to fetch audit logs:",e),e}},od=async e=>{try{let t=d?"".concat(d,"/user/available_users"):"/user/available_users",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e)}});if(!o.ok){if(404===o.status)return null;let e=await o.text();throw f(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to fetch remaining users:",e),e}},ou=async(e,t,o)=>{try{let a=d?"".concat(d,"/config/pass_through_endpoint/").concat(encodeURIComponent(t)):"/config/pass_through_endpoint/".concat(encodeURIComponent(t)),r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return c.Z.success("Pass through endpoint updated successfully"),n}catch(e){throw console.error("Failed to update pass through endpoint:",e),e}},op=async(e,t)=>{try{let o=d?"".concat(d,"/config/pass_through_endpoint?endpoint_id=").concat(encodeURIComponent(t)):"/config/pass_through_endpoint?endpoint_id=".concat(encodeURIComponent(t)),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=(await a.json()).endpoints;if(!r||0===r.length)throw Error("Pass through endpoint not found");return r[0]}catch(e){throw console.error("Failed to get pass through endpoint info:",e),e}},oh=async(e,t)=>{try{let o=d?"".concat(d,"/config/callback/delete"):"/config/callback/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({callback_name:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to delete specific callback:",e),e}},og=async e=>{let t=p(),o=await fetch("".concat(t,"/v1/mcp/tools"),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw Error("HTTP error! status: ".concat(o.status));return await o.json()},om=async(e,t)=>{try{console.log("Testing MCP connection with config:",JSON.stringify(t));let a=d?"".concat(d,"/mcp-rest/test/connection"):"/mcp-rest/test/connection",r=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",[w]:"Bearer ".concat(e)},body:JSON.stringify(t)}),n=r.headers.get("content-type");if(!n||!n.includes("application/json")){let e=await r.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(r.status,": ").concat(r.statusText,"). Check network tab for details."))}let c=await r.json();if(!r.ok||"error"===c.status){if("error"===c.status);else{var o;return{status:"error",message:(null===(o=c.error)||void 0===o?void 0:o.message)||"MCP connection test failed: ".concat(r.status," ").concat(r.statusText)}}}return c}catch(e){throw console.error("MCP connection test error:",e),e}},of=async(e,t)=>{try{console.log("Testing MCP tools list with config:",JSON.stringify(t));let o=d?"".concat(d,"/mcp-rest/test/tools/list"):"/mcp-rest/test/tools/list",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",[w]:"Bearer ".concat(e)},body:JSON.stringify(t)}),r=a.headers.get("content-type");if(!r||!r.includes("application/json")){let e=await a.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(a.status,": ").concat(a.statusText,"). Check network tab for details."))}let n=await a.json();if((!a.ok||n.error)&&!n.error)return{tools:[],error:"request_failed",message:n.message||"MCP tools list failed: ".concat(a.status," ").concat(a.statusText)};return n}catch(e){throw console.error("MCP tools list test error:",e),e}},ow=async(e,t,o)=>{try{let a="".concat(p(),"/v1/vector_stores/").concat(t,"/search"),r=await fetch(a,{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({query:o})});if(!r.ok){let e=await r.text();return await f(e),null}return await r.json()}catch(e){throw console.error("Error testing vector store search:",e),e}},oy=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:50,n=arguments.length>5?arguments[5]:void 0;try{let c=d?"".concat(d,"/tag/user-agent/analytics"):"/tag/user-agent/analytics",l=new URLSearchParams,i=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)};l.append("start_date",i(t)),l.append("end_date",i(o)),l.append("page",a.toString()),l.append("page_size",r.toString()),n&&l.append("user_agent_filter",n);let s=l.toString();s&&(c+="?".concat(s));let u=await fetch(c,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!u.ok){let e=await u.json(),t=oE(e);throw f(t),Error(t)}return await u.json()}catch(e){throw console.error("Failed to fetch user agent analytics:",e),e}},oj=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/dau"):"/tag/dau",n=new URLSearchParams;n.append("end_date",(e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)})(t)),a&&a.length>0?a.forEach(e=>{n.append("tag_filters",e)}):o&&n.append("tag_filter",o);let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch DAU:",e),e}},o_=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/wau"):"/tag/wau",n=new URLSearchParams;n.append("end_date",(e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)})(t)),a&&a.length>0?a.forEach(e=>{n.append("tag_filters",e)}):o&&n.append("tag_filter",o);let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch WAU:",e),e}},oC=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/mau"):"/tag/mau",n=new URLSearchParams;n.append("end_date",(e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)})(t)),a&&a.length>0?a.forEach(e=>{n.append("tag_filters",e)}):o&&n.append("tag_filter",o);let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch MAU:",e),e}},ok=async e=>{try{let t=d?"".concat(d,"/tag/distinct"):"/tag/distinct",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to fetch distinct tags:",e),e}},ov=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/summary"):"/tag/summary",n=new URLSearchParams,c=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)};n.append("start_date",c(t)),n.append("end_date",c(o)),a&&a.length>0&&a.forEach(e=>{n.append("tag_filters",e)});let l=n.toString();l&&(r+="?".concat(l));let i=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}return await i.json()}catch(e){throw console.error("Failed to fetch user agent summary:",e),e}},oT=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:50,a=arguments.length>3?arguments[3]:void 0;try{let r=d?"".concat(d,"/tag/user-agent/per-user-analytics"):"/tag/user-agent/per-user-analytics",n=new URLSearchParams;n.append("page",t.toString()),n.append("page_size",o.toString()),a&&a.length>0&&a.forEach(e=>{n.append("tag_filters",e)});let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch per-user analytics:",e),e}},oE=e=>(null==e?void 0:e.error)&&(e.error.message||e.error)||(null==e?void 0:e.message)||(null==e?void 0:e.detail)||(null==e?void 0:e.error)||JSON.stringify(e)},85968:function(e,t,o){o.d(t,{O:function(){return a}});let a=e=>{if(!e)return"An unknown error occurred";if("string"==typeof e)return e;if(e.message)try{let t=JSON.parse(e.message);if(t.error&&t.error.message)return t.error.message;return"string"==typeof t?t:JSON.stringify(t,null,2)}catch(t){return e.message}if(e.response&&e.response.data){if("string"==typeof e.response.data)return e.response.data;if(e.response.data.message)return e.response.data.message;if(e.response.data.error)return"string"==typeof e.response.data.error?e.response.data.error:e.response.data.error.message||JSON.stringify(e.response.data.error)}return String(e)}},3914:function(e,t,o){function a(){let e=window.location.hostname,t=["Lax","Strict","None"];["/","/ui"].forEach(o=>{document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,";"),document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,"; domain=").concat(e,";"),t.forEach(t=>{let a="None"===t?" Secure;":"";document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,"; SameSite=").concat(t,";").concat(a),document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,"; domain=").concat(e,"; SameSite=").concat(t,";").concat(a)})}),console.log("After clearing cookies:",document.cookie)}function r(e){let t=document.cookie.split("; ").find(t=>t.startsWith(e+"="));return t?t.split("=")[1]:null}o.d(t,{b:function(){return a},e:function(){return r}})}}]); \ No newline at end of file +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[49],{49169:function(e,t,o){o.d(t,{o:function(){return a.Z}});var a=o(49566)},63610:function(e,t,o){o.d(t,{d:function(){return h}});var a=o(57437),r=o(2265),n=o(64482),c=o(52787),l=o(20577),i=o(13634),s=o(49169),d=o(15424),u=o(89970),p=o(19250);let h=["metadata","config","enforced_params","aliases"],g=(e,t)=>h.includes(e)||"json"===t.format,m=e=>{if(!e)return!0;try{return JSON.parse(e),!0}catch(e){return!1}},f=(e,t,o)=>{let a={max_budget:"Enter maximum budget in USD (e.g., 100.50)",budget_duration:"Select a time period for budget reset",tpm_limit:"Enter maximum tokens per minute (whole number)",rpm_limit:"Enter maximum requests per minute (whole number)",duration:"Enter duration (e.g., 30s, 24h, 7d)",metadata:'Enter JSON object with key-value pairs\nExample: {"team": "research", "project": "nlp"}',config:'Enter configuration as JSON object\nExample: {"setting": "value"}',permissions:"Enter comma-separated permission strings",enforced_params:'Enter parameters as JSON object\nExample: {"param": "value"}',blocked:"Enter true/false or specific block conditions",aliases:'Enter aliases as JSON object\nExample: {"alias1": "value1", "alias2": "value2"}',models:"Select one or more model names",key_alias:"Enter a unique identifier for this key",tags:"Enter comma-separated tag strings"}[e]||({string:"Text input",number:"Numeric input",integer:"Whole number input",boolean:"True/False value"})[o]||"Text input";return g(e,t)?"".concat(a,"\nMust be valid JSON format"):t.enum?"Select from available options\nAllowed values: ".concat(t.enum.join(", ")):a};t.Z=e=>{let{schemaComponent:t,excludedFields:o=[],form:h,overrideLabels:w={},overrideTooltips:y={},customValidation:j={},defaultValues:_={}}=e,[C,k]=(0,r.useState)(null),[v,T]=(0,r.useState)(null);(0,r.useEffect)(()=>{(async()=>{try{let e=(await (0,p.getOpenAPISchema)()).components.schemas[t];if(!e)throw Error('Schema component "'.concat(t,'" not found'));k(e);let a={};Object.keys(e.properties).filter(e=>!o.includes(e)&&void 0!==_[e]).forEach(e=>{a[e]=_[e]}),h.setFieldsValue(a)}catch(e){console.error("Schema fetch error:",e),T(e instanceof Error?e.message:"Failed to fetch schema")}})()},[t,h,o]);let E=e=>{if(e.type)return e.type;if(e.anyOf){let t=e.anyOf.map(e=>e.type);if(t.includes("number")||t.includes("integer"))return"number";t.includes("string")}return"string"},S=(e,t)=>{var o;let r;let p=E(t),h=null==C?void 0:null===(o=C.required)||void 0===o?void 0:o.includes(e),k=w[e]||t.title||e,v=y[e]||t.description,T=[];h&&T.push({required:!0,message:"".concat(k," is required")}),j[e]&&T.push({validator:j[e]}),g(e,t)&&T.push({validator:async(e,t)=>{if(t&&!m(t))throw Error("Please enter valid JSON")}});let S=v?(0,a.jsxs)("span",{children:[k," ",(0,a.jsx)(u.Z,{title:v,children:(0,a.jsx)(d.Z,{style:{marginLeft:"4px"}})})]}):k;return r=g(e,t)?(0,a.jsx)(n.default.TextArea,{rows:4,placeholder:"Enter as JSON",className:"font-mono"}):t.enum?(0,a.jsx)(c.default,{children:t.enum.map(e=>(0,a.jsx)(c.default.Option,{value:e,children:e},e))}):"number"===p||"integer"===p?(0,a.jsx)(l.Z,{style:{width:"100%"},precision:"integer"===p?0:void 0}):"duration"===e?(0,a.jsx)(s.o,{placeholder:"eg: 30s, 30h, 30d"}):(0,a.jsx)(s.o,{placeholder:v||""}),(0,a.jsx)(i.Z.Item,{label:S,name:e,className:"mt-8",rules:T,initialValue:_[e],help:(0,a.jsx)("div",{className:"text-xs text-gray-500",children:f(e,t,p)}),children:r},e)};return v?(0,a.jsxs)("div",{className:"text-red-500",children:["Error: ",v]}):(null==C?void 0:C.properties)?(0,a.jsx)("div",{children:Object.entries(C.properties).filter(e=>{let[t]=e;return!o.includes(t)}).map(e=>{let[t,o]=e;return S(t,o)})}):null}},9114:function(e,t,o){var a=o(2265),r=o(57271),n=o(85968);function c(){return"topRight"}function l(e,t){var o;return"string"==typeof e?{message:t,description:e}:{message:null!==(o=e.message)&&void 0!==o?o:t,...e}}function i(e){return"number"==typeof e?e:"string"==typeof e&&/^\d+$/.test(e)?parseInt(e,10):void 0}let s=["invalid api key","invalid authorization header format","authentication error","invalid proxy server token","invalid jwt token","invalid jwt submitted","unauthorized access to metrics endpoint"],d=["admin-only endpoint","not allowed to access model","user does not have permission","access forbidden","invalid credentials used to access ui","user not allowed to access proxy"],u=["db not connected","database not initialized","no db connected","prisma client not initialized","service unhealthy"],p=["no models configured on proxy","llm router not initialized","no deployments available","no healthy deployment available","not allowed to access model due to tags configuration","invalid model name passed in"],h=["deployment over user-defined ratelimit","crossed tpm / rpm / max parallel request limit","max parallel request limit"],g=["budget exceeded","crossed budget","provider budget"],m=["must be a litellm enterprise user","only be available for liteLLM enterprise users","missing litellm-enterprise package","only available on the docker image","enterprise feature","premium user"],f=["invalid json payload","invalid request type","invalid key format","invalid hash key","invalid sort column","invalid sort order","invalid limit","invalid file type","invalid field","invalid date format"],w=["model not found","model with id","credential not found","user not found","team not found","organization not found","mcp server with id","tool '"],y=["already exists","team member is already in team","user already exists"],j=["violated openai moderation policy","violated jailbreak threshold","violated prompt_injection threshold","violated content safety policy","violated lasso guardrail policy","blocked by pillar security guardrail","violated azure prompt shield guardrail policy","content blocked by model armor","response blocked by model armor","streaming response blocked by model armor","guardrail","moderation"],_=["invalid purpose","service must be specified","invalid response - response.response is none"],C=["cloudzero settings not configured","failed to decrypt cloudzero api key","cloudzero settings not found"],k=["created successfully","updated successfully","deleted successfully","credential created successfully","model added successfully","team created successfully","user created successfully","organization created successfully","cloudzero settings initialized successfully","cloudzero settings updated successfully","cloudzero export completed successfully","mock llm request made","mock slack alert sent","mock email alert sent","spend for all api keys and teams reset successfully","monthlyglobalspend view refreshed","cache cleared successfully","cache set successfully","ip ","deleted successfully"],v=["rate limit reached for deployment","deployment cooldown period active"],T=["this feature is only available for litellm enterprise users","enterprise features are not available","regenerating virtual keys is an enterprise feature","trying to set allowed_routes. this is an enterprise feature"],E=["invalid maximum_spend_logs_retention_interval value","error has invalid or non-convertible code","failed to save health check to database"];t.Z={error(e){var t,o;let a=l(e,"Error");r.ZP.error({...a,placement:null!==(t=a.placement)&&void 0!==t?t:c(),duration:null!==(o=a.duration)&&void 0!==o?o:6})},warning(e){var t,o;let a=l(e,"Warning");r.ZP.warning({...a,placement:null!==(t=a.placement)&&void 0!==t?t:c(),duration:null!==(o=a.duration)&&void 0!==o?o:5})},info(e){var t,o;let a=l(e,"Info");r.ZP.info({...a,placement:null!==(t=a.placement)&&void 0!==t?t:c(),duration:null!==(o=a.duration)&&void 0!==o?o:4})},success(e){var t,o;if(a.isValidElement(e)){r.ZP.success({message:"Success",description:e,placement:c(),duration:3.5});return}let n=l(e,"Success");r.ZP.success({...n,placement:null!==(t=n.placement)&&void 0!==t?t:c(),duration:null!==(o=n.duration)&&void 0!==o?o:3.5})},fromBackend(e,t){var o,a,l,S,b,F,P,O,B,N,x,G;let A=null!==(G=null!==(x=i(null==e?void 0:null===(N=e.response)||void 0===N?void 0:N.status))&&void 0!==x?x:i(null==e?void 0:e.status_code))&&void 0!==G?G:i(null==e?void 0:e.code),J=function(e){var t,o,a,r,c,l,i,s,d,u,p,h;if("string"==typeof e)return e;let g=null!==(h=null!==(p=null!==(u=null!==(d=null!==(s=null==e?void 0:null===(a=e.response)||void 0===a?void 0:null===(o=a.data)||void 0===o?void 0:null===(t=o.error)||void 0===t?void 0:t.message)&&void 0!==s?s:null==e?void 0:null===(c=e.response)||void 0===c?void 0:null===(r=c.data)||void 0===r?void 0:r.message)&&void 0!==d?d:null==e?void 0:null===(i=e.response)||void 0===i?void 0:null===(l=i.data)||void 0===l?void 0:l.error)&&void 0!==u?u:null==e?void 0:e.detail)&&void 0!==p?p:null==e?void 0:e.message)&&void 0!==h?h:e;return(0,n.O)(g)}(e),U={...null!=t?t:{},description:J,placement:null!==(o=null==t?void 0:t.placement)&&void 0!==o?o:c()};if(void 0!==A||e instanceof Error||"string"==typeof e||e&&"object"==typeof e&&("error"in e||"detail"in e)){let e=function(e,t){var o,a,r,n,c;let l=(t||"").toLowerCase();return s.some(e=>l.includes(e))?"Authentication Error":d.some(e=>l.includes(e))?"Access Denied":(null==u?void 0:null===(o=u.some)||void 0===o?void 0:o.call(u,e=>l.includes(e)))||503===e?"Service Unavailable":(null==g?void 0:null===(a=g.some)||void 0===a?void 0:a.call(g,e=>l.includes(e)))?"Budget Exceeded":(null==m?void 0:null===(r=m.some)||void 0===r?void 0:r.call(m,e=>l.includes(e)))?"Feature Unavailable":(null==p?void 0:null===(n=p.some)||void 0===n?void 0:n.call(p,e=>l.includes(e)))?"Routing Error":y.some(e=>l.includes(e))?"Already Exists":j.some(e=>l.includes(e))?"Content Blocked":_.some(e=>l.includes(e))?"Validation Error":C.some(e=>l.includes(e))?"Integration Error":f.some(e=>l.includes(e))?"Validation Error":404===e||l.includes("not found")||w.some(e=>l.includes(e))?"Not Found":429===e||l.includes("rate limit")||l.includes("tpm")||l.includes("rpm")||(null==h?void 0:null===(c=h.some)||void 0===c?void 0:c.call(h,e=>l.includes(e)))?"Rate Limit Exceeded":e&&e>=500?"Server Error":401===e?"Authentication Error":403===e?"Access Denied":l.includes("enterprise")||l.includes("premium")?"Info":e&&e>=400?"Request Error":"Error"}(A,J),o={...U,message:e};if("Rate Limit Exceeded"===e||"Info"===e||"Budget Exceeded"===e||"Feature Unavailable"===e||"Content Blocked"===e||"Integration Error"===e){r.ZP.warning({...o,duration:null!==(a=null==t?void 0:t.duration)&&void 0!==a?a:7});return}if("Server Error"===e){r.ZP.error({...o,duration:null!==(l=null==t?void 0:t.duration)&&void 0!==l?l:8});return}if("Request Error"===e||"Authentication Error"===e||"Access Denied"===e||"Not Found"===e||"Error"===e){r.ZP.error({...o,duration:null!==(S=null==t?void 0:t.duration)&&void 0!==S?S:6});return}r.ZP.info({...o,duration:null!==(b=null==t?void 0:t.duration)&&void 0!==b?b:4});return}let R=function(e){let t=(e||"").toLowerCase();return k.some(e=>t.includes(e))?{kind:"success",title:"Success"}:T.some(e=>t.includes(e))?{kind:"warning",title:"Feature Notice"}:E.some(e=>t.includes(e))?{kind:"warning",title:"Configuration Warning"}:v.some(e=>t.includes(e))?{kind:"warning",title:"Rate Limit"}:null}(J),I={...U,message:null!==(F=null==R?void 0:R.title)&&void 0!==F?F:"Info"};if((null==R?void 0:R.kind)==="success"){r.ZP.success({...I,duration:null!==(P=null==t?void 0:t.duration)&&void 0!==P?P:3.5});return}if((null==R?void 0:R.kind)==="warning"){r.ZP.warning({...I,duration:null!==(O=null==t?void 0:t.duration)&&void 0!==O?O:6});return}r.ZP.info({...I,duration:null!==(B=null==t?void 0:t.duration)&&void 0!==B?B:4})},clear(){r.ZP.destroy()}}},19250:function(e,t,o){o.r(t),o.d(t,{DEFAULT_ORGANIZATION:function(){return g},PredictedSpendLogsCall:function(){return ti},addAllowedIP:function(){return ef},adminGlobalActivity:function(){return eJ},adminGlobalActivityExceptions:function(){return eI},adminGlobalActivityExceptionsPerDeployment:function(){return eM},adminGlobalActivityPerModel:function(){return eR},adminGlobalCacheActivity:function(){return eU},adminSpendLogsCall:function(){return eN},adminTopEndUsersCall:function(){return eG},adminTopKeysCall:function(){return ex},adminTopModelsCall:function(){return ez},adminspendByProvider:function(){return eA},alertingSettingsCall:function(){return U},allEndUsersCall:function(){return eF},allTagNamesCall:function(){return eb},availableTeamListCall:function(){return Y},budgetCreateCall:function(){return x},budgetDeleteCall:function(){return N},budgetUpdateCall:function(){return G},cachingHealthCheckCall:function(){return tE},callMCPTool:function(){return tH},cancelModelCostMapReload:function(){return b},claimOnboardingToken:function(){return el},convertPromptFileToJson:function(){return tA},createGuardrailCall:function(){return tU},createMCPServer:function(){return tD},createPassThroughEndpoint:function(){return ty},createPromptCall:function(){return tN},credentialCreateCall:function(){return e0},credentialDeleteCall:function(){return e2},credentialGetCall:function(){return e4},credentialListCall:function(){return e1},credentialUpdateCall:function(){return e3},defaultProxyBaseUrl:function(){return i},deleteAllowedIP:function(){return ew},deleteCallback:function(){return oh},deleteConfigFieldSetting:function(){return t_},deleteGuardrailCall:function(){return oo},deleteMCPServer:function(){return tZ},deletePassThroughEndpointsCall:function(){return tC},deletePromptCall:function(){return tG},fetchMCPAccessGroups:function(){return tL},fetchMCPServers:function(){return tz},formatDate:function(){return l},getAllowedIPs:function(){return em},getBudgetList:function(){return tu},getBudgetSettings:function(){return tp},getCallbacksCall:function(){return th},getConfigFieldSetting:function(){return tf},getDefaultTeamSettings:function(){return tX},getEmailEventSettings:function(){return t8},getGeneralSettingsCall:function(){return tg},getGuardrailInfo:function(){return on},getGuardrailProviderSpecificParams:function(){return or},getGuardrailUISettings:function(){return oa},getGuardrailsList:function(){return tP},getInternalUserSettings:function(){return tI},getModelCostMapReloadStatus:function(){return F},getOnboardingCredentials:function(){return ec},getOpenAPISchema:function(){return v},getPassThroughEndpointInfo:function(){return op},getPassThroughEndpointsCall:function(){return tm},getPossibleUserRoles:function(){return eQ},getPromptInfo:function(){return tB},getPromptsList:function(){return tO},getProxyBaseUrl:function(){return p},getProxyUISettings:function(){return tF},getPublicModelHubInfo:function(){return k},getRemainingUsers:function(){return od},getSSOSettings:function(){return ol},getTeamPermissionsCall:function(){return t1},getTotalSpendCall:function(){return en},getUiConfig:function(){return C},healthCheckCall:function(){return tv},healthCheckHistoryCall:function(){return tS},individualModelHealthCheckCall:function(){return tT},invitationClaimCall:function(){return J},invitationCreateCall:function(){return A},keyAliasesCall:function(){return eq},keyCreateCall:function(){return I},keyCreateServiceAccountCall:function(){return R},keyDeleteCall:function(){return z},keyInfoCall:function(){return eL},keyInfoV1Call:function(){return eV},keyListCall:function(){return eZ},keySpendLogsCall:function(){return eT},keyUpdateCall:function(){return e5},latestHealthChecksCall:function(){return tb},listMCPTools:function(){return tq},makeModelGroupPublic:function(){return _},mcpToolsCall:function(){return og},modelAvailableCall:function(){return ev},modelCostMap:function(){return T},modelCreateCall:function(){return P},modelDeleteCall:function(){return B},modelExceptionsCall:function(){return eC},modelHubCall:function(){return eg},modelHubPublicModelsCall:function(){return eh},modelInfoCall:function(){return eu},modelInfoV1Call:function(){return ep},modelMetricsCall:function(){return ey},modelMetricsSlowResponsesCall:function(){return e_},modelPatchUpdateCall:function(){return e9},modelSettingsCall:function(){return O},modelUpdateCall:function(){return e7},organizationCreateCall:function(){return Q},organizationDeleteCall:function(){return ee},organizationInfoCall:function(){return $},organizationListCall:function(){return K},organizationMemberAddCall:function(){return ta},organizationMemberDeleteCall:function(){return tr},organizationMemberUpdateCall:function(){return tn},organizationUpdateCall:function(){return X},patchPromptCall:function(){return tJ},perUserAnalyticsCall:function(){return oT},proxyBaseUrl:function(){return d},regenerateKeyCall:function(){return ei},reloadModelCostMap:function(){return E},resetEmailEventSettings:function(){return ot},scheduleModelCostMapReload:function(){return S},serverRootPath:function(){return s},serviceHealthCheck:function(){return td},sessionSpendLogsCall:function(){return t2},setCallbacksCall:function(){return tk},setGlobalLitellmHeaderName:function(){return j},slackBudgetAlertsHealthCheck:function(){return ts},spendUsersCall:function(){return eH},streamingModelMetricsCall:function(){return ej},tagCreateCall:function(){return tW},tagDailyActivityCall:function(){return ea},tagDauCall:function(){return oj},tagDeleteCall:function(){return tQ},tagDistinctCall:function(){return ok},tagInfoCall:function(){return tK},tagListCall:function(){return t$},tagMauCall:function(){return oC},tagUpdateCall:function(){return tY},tagWauCall:function(){return o_},tagsSpendLogsCall:function(){return eS},teamBulkMemberAddCall:function(){return te},teamCreateCall:function(){return eX},teamDailyActivityCall:function(){return er},teamDeleteCall:function(){return D},teamInfoCall:function(){return q},teamListCall:function(){return W},teamMemberAddCall:function(){return e8},teamMemberDeleteCall:function(){return to},teamMemberUpdateCall:function(){return tt},teamPermissionsUpdateCall:function(){return t4},teamSpendLogsCall:function(){return eE},teamUpdateCall:function(){return e6},testConnectionRequest:function(){return eD},testMCPConnectionRequest:function(){return om},testMCPToolsListRequest:function(){return of},transformRequestCall:function(){return et},uiAuditLogsCall:function(){return os},uiSpendLogDetailsCall:function(){return tR},uiSpendLogsCall:function(){return eB},updateConfigFieldSetting:function(){return tj},updateDefaultTeamSettings:function(){return t0},updateEmailEventSettings:function(){return oe},updateGuardrailCall:function(){return oc},updateInternalUserSettings:function(){return tM},updateMCPServer:function(){return tV},updatePassThroughEndpoint:function(){return ou},updatePassThroughFieldSetting:function(){return tw},updatePromptCall:function(){return tx},updateSSOSettings:function(){return oi},updateUsefulLinksCall:function(){return ek},userAgentAnalyticsCall:function(){return oy},userAgentSummaryCall:function(){return ov},userBulkUpdateUserCall:function(){return tl},userCreateCall:function(){return M},userDailyActivityAggregatedCall:function(){return eK},userDailyActivityCall:function(){return eo},userDeleteCall:function(){return L},userFilterUICall:function(){return eP},userGetAllUsersCall:function(){return e$},userGetRequesedtModelsCall:function(){return eY},userInfoCall:function(){return Z},userListCall:function(){return V},userRequestModelCall:function(){return eW},userSpendLogsCall:function(){return eO},userUpdateUserCall:function(){return tc},v2TeamListCall:function(){return H},vectorStoreCreateCall:function(){return t3},vectorStoreDeleteCall:function(){return t6},vectorStoreInfoCall:function(){return t9},vectorStoreListCall:function(){return t5},vectorStoreSearchCall:function(){return ow},vectorStoreUpdateCall:function(){return t7}});var a=o(42264),r=o(3914),n=o(63610),c=o(9114);let l=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)},i=null,s="/",d=null;console.log=function(){};let u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=window.location.origin,a=t||o;console.log("proxyBaseUrl:",d),console.log("serverRootPath:",e),e.length>0&&!a.endsWith(e)&&"/"!=e&&(a+=e,d=a),console.log("Updated proxyBaseUrl:",d)},p=()=>d||window.location.origin,h={GET:"GET",DELETE:"DELETE"},g="default_organization",m=0,f=async e=>{let t=Date.now();t-m>6e4?(e.includes("Authentication Error - Expired Key")&&(c.Z.info("UI Session Expired. Logging out."),m=t,(0,r.b)(),window.location.href=window.location.pathname),m=t):console.log("Error suppressed to prevent spam:",e)},w="Authorization",y="x-mcp-auth";function j(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Authorization";console.log("setGlobalLitellmHeaderName: ".concat(e)),w=e}let _=async(e,t)=>{let o=d?"".concat(d,"/model_group/make_public"):"/model_group/make_public";return(await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({model_groups:t})})).json()},C=async()=>{console.log("Getting UI config");let e=await fetch(i?"".concat(i,"/litellm/.well-known/litellm-ui-config"):"/litellm/.well-known/litellm-ui-config"),t=await e.json();return console.log("jsonData in getUiConfig:",t),u(t.server_root_path,t.proxy_base_url),t},k=async()=>{let e=await fetch(i?"".concat(i,"/public/model_hub/info"):"/public/model_hub/info");return await e.json()},v=async()=>{let e=d?"".concat(d,"/openapi.json"):"/openapi.json",t=await fetch(e);return await t.json()},T=async e=>{try{let t=d?"".concat(d,"/get/litellm_model_cost_map"):"/get/litellm_model_cost_map",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),a=await o.json();return console.log("received litellm model cost data: ".concat(a)),a}catch(e){throw console.error("Failed to get model cost map:",e),e}},E=async e=>{try{let t=d?"".concat(d,"/reload/model_cost_map"):"/reload/model_cost_map",o=await fetch(t,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),a=await o.json();return console.log("Model cost map reload response: ".concat(a)),a}catch(e){throw console.error("Failed to reload model cost map:",e),e}},S=async(e,t)=>{try{let o=d?"".concat(d,"/schedule/model_cost_map_reload?hours=").concat(t):"/schedule/model_cost_map_reload?hours=".concat(t),a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),r=await a.json();return console.log("Schedule model cost map reload response: ".concat(r)),r}catch(e){throw console.error("Failed to schedule model cost map reload:",e),e}},b=async e=>{try{let t=d?"".concat(d,"/schedule/model_cost_map_reload"):"/schedule/model_cost_map_reload",o=await fetch(t,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}}),a=await o.json();return console.log("Cancel model cost map reload response: ".concat(a)),a}catch(e){throw console.error("Failed to cancel model cost map reload:",e),e}},F=async e=>{try{let t=d?"".concat(d,"/schedule/model_cost_map_reload/status"):"/schedule/model_cost_map_reload/status";console.log("Fetching status from URL:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){console.error("Status request failed with status: ".concat(o.status));let e=await o.text();throw console.error("Error response:",e),Error("HTTP ".concat(o.status,": ").concat(e))}let a=await o.json();return console.log("Model cost map reload status:",a),a}catch(e){throw console.error("Failed to get model cost map reload status:",e),e}},P=async(e,t)=>{try{let o=d?"".concat(d,"/model/new"):"/model/new",r=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),a.ZP.destroy(),c.Z.success("Model ".concat(t.model_name," created successfully")),n}catch(e){throw console.error("Failed to create key:",e),e}},O=async e=>{try{let t=d?"".concat(d,"/model/settings"):"/model/settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){console.error("Failed to get model settings:",e)}},B=async(e,t)=>{console.log("model_id in model delete call: ".concat(t));try{let o=d?"".concat(d,"/model/delete"):"/model/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},N=async(e,t)=>{if(console.log("budget_id in budget delete call: ".concat(t)),null!=e)try{let o=d?"".concat(d,"/budget/delete"):"/budget/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({id:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},x=async(e,t)=>{try{console.log("Form Values in budgetCreateCall:",t),console.log("Form Values after check:",t);let o=d?"".concat(d,"/budget/new"):"/budget/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},G=async(e,t)=>{try{console.log("Form Values in budgetUpdateCall:",t),console.log("Form Values after check:",t);let o=d?"".concat(d,"/budget/update"):"/budget/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,t)=>{try{let o=d?"".concat(d,"/invitation/new"):"/invitation/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},J=async(e,t)=>{try{console.log("Form Values in invitationCreateCall:",t),console.log("Form Values after check:",t);let o=d?"".concat(d,"/invitation/claim"):"/invitation/claim",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},U=async e=>{try{let t=d?"".concat(d,"/alerting/settings"):"/alerting/settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},R=async(e,t)=>{try{for(let e of(console.log("Form Values in keyCreateServiceAccountCall:",t),t.description&&(t.metadata||(t.metadata={}),t.metadata.description=t.description,delete t.description,t.metadata=JSON.stringify(t.metadata)),n.d))if(t[e]){console.log("formValues.".concat(e,":"),t[e]);try{t[e]=JSON.parse(t[e])}catch(t){throw Error("Failed to parse ".concat(e,": ")+t)}}console.log("Form Values after check:",t);let o=d?"".concat(d,"/key/service-account/generate"):"/key/service-account/generate",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,t,o)=>{try{for(let e of(console.log("Form Values in keyCreateCall:",o),o.description&&(o.metadata||(o.metadata={}),o.metadata.description=o.description,delete o.description,o.metadata=JSON.stringify(o.metadata)),n.d))if(o[e]){console.log("formValues.".concat(e,":"),o[e]);try{o[e]=JSON.parse(o[e])}catch(t){throw Error("Failed to parse ".concat(e,": ")+t)}}console.log("Form Values after check:",o);let a=d?"".concat(d,"/key/generate"):"/key/generate",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...o})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let c=await r.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},M=async(e,t,o)=>{try{if(console.log("Form Values in keyCreateCall:",o),o.description&&(o.metadata||(o.metadata={}),o.metadata.description=o.description,delete o.description,o.metadata=JSON.stringify(o.metadata)),o.auto_create_key=!1,o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",o);let a=d?"".concat(d,"/user/new"):"/user/new",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...o})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},z=async(e,t)=>{try{let o=d?"".concat(d,"/key/delete"):"/key/delete";console.log("in keyDeleteCall:",t);let a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[t]})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},L=async(e,t)=>{try{let o=d?"".concat(d,"/user/delete"):"/user/delete";console.log("in userDeleteCall:",t);let a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_ids:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to delete user(s):",e),e}},D=async(e,t)=>{try{let o=d?"".concat(d,"/team/delete"):"/team/delete";console.log("in teamDeleteCall:",t);let a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_ids:[t]})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to delete key:",e),e}},V=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,i=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,s=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null;try{let u=d?"".concat(d,"/user/list"):"/user/list";console.log("in userListCall");let p=new URLSearchParams;if(t&&t.length>0){let e=t.join(",");p.append("user_ids",e)}o&&p.append("page",o.toString()),a&&p.append("page_size",a.toString()),r&&p.append("user_email",r),n&&p.append("role",n),c&&p.append("team",c),l&&p.append("sso_user_ids",l),i&&p.append("sort_by",i),s&&p.append("sort_order",s);let h=p.toString();h&&(u+="?".concat(h));let g=await fetch(u,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!g.ok){let e=await g.json(),t=oE(e);throw f(t),Error(t)}let m=await g.json();return console.log("/user/list API Response:",m),m}catch(e){throw console.error("Failed to create key:",e),e}},Z=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4?arguments[4]:void 0,n=arguments.length>5?arguments[5]:void 0,c=arguments.length>6&&void 0!==arguments[6]&&arguments[6];console.log("userInfoCall: ".concat(t,", ").concat(o,", ").concat(a,", ").concat(r,", ").concat(n,", ").concat(c));try{let l;if(a){l=d?"".concat(d,"/user/list"):"/user/list";let e=new URLSearchParams;null!=r&&e.append("page",r.toString()),null!=n&&e.append("page_size",n.toString()),l+="?".concat(e.toString())}else l=d?"".concat(d,"/user/info"):"/user/info",("Admin"!==o&&"Admin Viewer"!==o||c)&&t&&(l+="?user_id=".concat(t));console.log("Requesting user data from:",l);let i=await fetch(l,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}let s=await i.json();return console.log("API Response:",s),s}catch(e){throw console.error("Failed to fetch user data:",e),e}},q=async(e,t)=>{try{let o=d?"".concat(d,"/team/info"):"/team/info";t&&(o="".concat(o,"?team_id=").concat(t)),console.log("in teamInfoCall");let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},H=async function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;arguments.length>5&&void 0!==arguments[5]&&arguments[5],arguments.length>6&&void 0!==arguments[6]&&arguments[6],arguments.length>7&&void 0!==arguments[7]&&arguments[7],arguments.length>8&&void 0!==arguments[8]&&arguments[8];try{let n=d?"".concat(d,"/v2/team/list"):"/v2/team/list";console.log("in teamInfoCall");let c=new URLSearchParams;o&&c.append("user_id",o.toString()),t&&c.append("organization_id",t.toString()),a&&c.append("team_id",a.toString()),r&&c.append("team_alias",r.toString());let l=c.toString();l&&(n+="?".concat(l));let i=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}let s=await i.json();return console.log("/v2/team/list API Response:",s),s}catch(e){throw console.error("Failed to create key:",e),e}},W=async function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let n=d?"".concat(d,"/team/list"):"/team/list";console.log("in teamInfoCall");let c=new URLSearchParams;o&&c.append("user_id",o.toString()),t&&c.append("organization_id",t.toString()),a&&c.append("team_id",a.toString()),r&&c.append("team_alias",r.toString());let l=c.toString();l&&(n+="?".concat(l));let i=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}let s=await i.json();return console.log("/team/list API Response:",s),s}catch(e){throw console.error("Failed to create key:",e),e}},Y=async e=>{try{let t=d?"".concat(d,"/team/available"):"/team/available";console.log("in availableTeamListCall");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("/team/available_teams API Response:",a),a}catch(e){throw e}},K=async e=>{try{let t=d?"".concat(d,"/organization/list"):"/organization/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},$=async(e,t)=>{try{let o=d?"".concat(d,"/organization/info"):"/organization/info";t&&(o="".concat(o,"?organization_id=").concat(t)),console.log("in teamInfoCall");let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},Q=async(e,t)=>{try{if(console.log("Form Values in organizationCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw console.error("Failed to parse metadata:",e),Error("Failed to parse metadata: "+e)}}let o=d?"".concat(d,"/organization/new"):"/organization/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},X=async(e,t)=>{try{console.log("Form Values in organizationUpdateCall:",t);let o=d?"".concat(d,"/organization/update"):"/organization/update",a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("Update Team Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},ee=async(e,t)=>{try{let o=d?"".concat(d,"/organization/delete"):"/organization/delete",a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_ids:[t]})});if(!a.ok){let e=await a.text();throw f(e),Error("Error deleting organization: ".concat(e))}return await a.json()}catch(e){throw console.error("Failed to delete organization:",e),e}},et=async(e,t)=>{try{let o=d?"".concat(d,"/utils/transform_request"):"/utils/transform_request",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create key:",e),e}},eo=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;try{let r=d?"".concat(d,"/user/daily/activity"):"/user/daily/activity",n=new URLSearchParams;n.append("start_date",l(t)),n.append("end_date",l(o)),n.append("page_size","1000"),n.append("page",a.toString());let c=n.toString();c&&(r+="?".concat(c));let i=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}return await i.json()}catch(e){throw console.error("Failed to create key:",e),e}},ea=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let n=d?"".concat(d,"/tag/daily/activity"):"/tag/daily/activity",c=new URLSearchParams;c.append("start_date",l(t)),c.append("end_date",l(o)),c.append("page_size","1000"),c.append("page",a.toString()),r&&c.append("tags",r.join(","));let i=c.toString();i&&(n+="?".concat(i));let s=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.json(),t=oE(e);throw f(t),Error(t)}return await s.json()}catch(e){throw console.error("Failed to create key:",e),e}},er=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;try{let n=d?"".concat(d,"/team/daily/activity"):"/team/daily/activity",c=new URLSearchParams;c.append("start_date",l(t)),c.append("end_date",l(o)),c.append("page_size","1000"),c.append("page",a.toString()),r&&c.append("team_ids",r.join(",")),c.append("exclude_team_ids","litellm-dashboard");let i=c.toString();i&&(n+="?".concat(i));let s=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.json(),t=oE(e);throw f(t),Error(t)}return await s.json()}catch(e){throw console.error("Failed to create key:",e),e}},en=async e=>{try{let t=d?"".concat(d,"/global/spend"):"/global/spend",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ec=async e=>{try{let t=d?"".concat(d,"/onboarding/get_token"):"/onboarding/get_token";t+="?invite_link=".concat(e);let o=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},el=async(e,t,o,a)=>{let r=d?"".concat(d,"/onboarding/claim_token"):"/onboarding/claim_token";try{let n=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({invitation_link:t,user_id:o,password:a})});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to delete key:",e),e}},ei=async(e,t,o)=>{try{let a=d?"".concat(d,"/key/").concat(t,"/regenerate"):"/key/".concat(t,"/regenerate"),r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("Regenerate key Response:",n),n}catch(e){throw console.error("Failed to regenerate key:",e),e}},es=!1,ed=null,eu=async(e,t,o)=>{try{console.log("modelInfoCall:",e,t,o);let a=d?"".concat(d,"/v2/model/info"):"/v2/model/info",r=new URLSearchParams;r.append("include_team_models","true"),r.toString()&&(a+="?".concat(r.toString()));let n=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!n.ok){let e=await n.text();throw e+="error shown=".concat(es),es||(e.includes("No model list passed")&&(e="No Models Exist. Click Add Model to get started."),c.Z.info(e),es=!0,ed&&clearTimeout(ed),ed=setTimeout(()=>{es=!1},1e4)),Error("Network response was not ok")}let l=await n.json();return console.log("modelInfoCall:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},ep=async(e,t)=>{try{let o=d?"".concat(d,"/v1/model/info"):"/v1/model/info";o+="?litellm_model_id=".concat(t);let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("modelInfoV1Call:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},eh=async()=>{let e=d?"".concat(d,"/public/model_hub"):"/public/model_hub";return(await fetch(e,{method:"GET",headers:{"Content-Type":"application/json"}})).json()},eg=async e=>{try{let t=d?"".concat(d,"/model_group/info"):"/model_group/info",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("modelHubCall:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},em=async e=>{try{let t=d?"".concat(d,"/get/allowed_ips"):"/get/allowed_ips",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("getAllowedIPs:",a),a.data}catch(e){throw console.error("Failed to get allowed IPs:",e),e}},ef=async(e,t)=>{try{let o=d?"".concat(d,"/add/allowed_ip"):"/add/allowed_ip",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({ip:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("addAllowedIP:",r),r}catch(e){throw console.error("Failed to add allowed IP:",e),e}},ew=async(e,t)=>{try{let o=d?"".concat(d,"/delete/allowed_ip"):"/delete/allowed_ip",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({ip:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("deleteAllowedIP:",r),r}catch(e){throw console.error("Failed to delete allowed IP:",e),e}},ey=async(e,t,o,a,r,n,c,l)=>{try{let t=d?"".concat(d,"/model/metrics"):"/model/metrics";a&&(t="".concat(t,"?_selected_model_group=").concat(a,"&startTime=").concat(r,"&endTime=").concat(n,"&api_key=").concat(c,"&customer=").concat(l));let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ej=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/model/streaming_metrics"):"/model/streaming_metrics";t&&(r="".concat(r,"?_selected_model_group=").concat(t,"&startTime=").concat(o,"&endTime=").concat(a));let n=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}return await n.json()}catch(e){throw console.error("Failed to create key:",e),e}},e_=async(e,t,o,a,r,n,c,l)=>{try{let t=d?"".concat(d,"/model/metrics/slow_responses"):"/model/metrics/slow_responses";a&&(t="".concat(t,"?_selected_model_group=").concat(a,"&startTime=").concat(r,"&endTime=").concat(n,"&api_key=").concat(c,"&customer=").concat(l));let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},eC=async(e,t,o,a,r,n,c,l)=>{try{let t=d?"".concat(d,"/model/metrics/exceptions"):"/model/metrics/exceptions";a&&(t="".concat(t,"?_selected_model_group=").concat(a,"&startTime=").concat(r,"&endTime=").concat(n,"&api_key=").concat(c,"&customer=").concat(l));let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to create key:",e),e}},ek=async(e,t)=>{try{let o=d?"".concat(d,"/model_hub/update_useful_links"):"/model_hub/update_useful_links",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({useful_links:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create key:",e),e}},ev=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=(arguments.length>5&&void 0!==arguments[5]&&arguments[5],arguments.length>6&&void 0!==arguments[6]&&arguments[6]);console.log("in /models calls, globalLitellmHeaderName",w);try{let t=d?"".concat(d,"/models"):"/models",o=new URLSearchParams;o.append("include_model_access_groups","True"),!0===a&&o.append("return_wildcard_routes","True"),!0===n&&o.append("only_model_access_groups","True"),r&&o.append("team_id",r.toString()),o.toString()&&(t+="?".concat(o.toString()));let c=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}return await c.json()}catch(e){throw console.error("Failed to create key:",e),e}},eT=async(e,t)=>{try{let o=d?"".concat(d,"/global/spend/logs"):"/global/spend/logs";console.log("in keySpendLogsCall:",o);let a=await fetch("".concat(o,"?api_key=").concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},eE=async e=>{try{let t=d?"".concat(d,"/global/spend/teams"):"/global/spend/teams";console.log("in teamSpendLogsCall:",t);let o=await fetch("".concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eS=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/spend/tags"):"/global/spend/tags";t&&o&&(r="".concat(r,"?start_date=").concat(t,"&end_date=").concat(o)),a&&(r+="".concat(r,"&tags=").concat(a.join(","))),console.log("in tagsSpendLogsCall:",r);let n=await fetch("".concat(r),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to create key:",e),e}},eb=async e=>{try{let t=d?"".concat(d,"/global/spend/all_tag_names"):"/global/spend/all_tag_names";console.log("in global/spend/all_tag_names call",t);let o=await fetch("".concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eF=async e=>{try{let t=d?"".concat(d,"/customer/list"):"/customer/list";console.log("in customer/list",t);let o=await fetch("".concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eP=async(e,t)=>{try{let o=d?"".concat(d,"/user/filter/ui"):"/user/filter/ui";t.get("user_email")&&(o+="?user_email=".concat(t.get("user_email"))),t.get("user_id")&&(o+="?user_id=".concat(t.get("user_id")));let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create key:",e),e}},eO=async(e,t,o,a,r,n)=>{try{console.log("user role in spend logs call: ".concat(o));let t=d?"".concat(d,"/spend/logs"):"/spend/logs";t="App Owner"==o?"".concat(t,"?user_id=").concat(a,"&start_date=").concat(r,"&end_date=").concat(n):"".concat(t,"?start_date=").concat(r,"&end_date=").concat(n);let c=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},eB=async(e,t,o,a,r,n,c,l,i,s,u,p,h)=>{try{let g=d?"".concat(d,"/spend/logs/ui"):"/spend/logs/ui",m=new URLSearchParams;t&&m.append("api_key",t),o&&m.append("team_id",o),a&&m.append("request_id",a),r&&m.append("start_date",r),n&&m.append("end_date",n),c&&m.append("page",c.toString()),l&&m.append("page_size",l.toString()),i&&m.append("user_id",i),s&&m.append("end_user",s),u&&m.append("status_filter",u),p&&m.append("model",p),h&&m.append("key_alias",h);let y=m.toString();y&&(g+="?".concat(y));let j=await fetch(g,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!j.ok){let e=await j.json(),t=oE(e);throw f(t),Error(t)}let _=await j.json();return console.log("Spend Logs Response:",_),_}catch(e){throw console.error("Failed to fetch spend logs:",e),e}},eN=async e=>{try{let t=d?"".concat(d,"/global/spend/logs"):"/global/spend/logs",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},ex=async e=>{try{let t=d?"".concat(d,"/global/spend/keys?limit=5"):"/global/spend/keys?limit=5",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eG=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/spend/end_users"):"/global/spend/end_users",n="";n=t?JSON.stringify({api_key:t,startTime:o,endTime:a}):JSON.stringify({startTime:o,endTime:a});let c={method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:n},l=await fetch(r,c);if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}let i=await l.json();return console.log(i),i}catch(e){throw console.error("Failed to create key:",e),e}},eA=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/spend/provider"):"/global/spend/provider";o&&a&&(r+="?start_date=".concat(o,"&end_date=").concat(a)),t&&(r+="&api_key=".concat(t));let n={method:"GET",headers:{[w]:"Bearer ".concat(e)}},c=await fetch(r,n);if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eJ=async(e,t,o)=>{try{let a=d?"".concat(d,"/global/activity"):"/global/activity";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o));let r={method:"GET",headers:{[w]:"Bearer ".concat(e)}},n=await fetch(a,r);if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eU=async(e,t,o)=>{try{let a=d?"".concat(d,"/global/activity/cache_hits"):"/global/activity/cache_hits";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o));let r={method:"GET",headers:{[w]:"Bearer ".concat(e)}},n=await fetch(a,r);if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eR=async(e,t,o)=>{try{let a=d?"".concat(d,"/global/activity/model"):"/global/activity/model";t&&o&&(a+="?start_date=".concat(t,"&end_date=").concat(o));let r={method:"GET",headers:{[w]:"Bearer ".concat(e)}},n=await fetch(a,r);if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eI=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/activity/exceptions"):"/global/activity/exceptions";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o)),a&&(r+="&model_group=".concat(a));let n={method:"GET",headers:{[w]:"Bearer ".concat(e)}},c=await fetch(r,n);if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to fetch spend data:",e),e}},eM=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/global/activity/exceptions/deployment"):"/global/activity/exceptions/deployment";t&&o&&(r+="?start_date=".concat(t,"&end_date=").concat(o)),a&&(r+="&model_group=".concat(a));let n={method:"GET",headers:{[w]:"Bearer ".concat(e)}},c=await fetch(r,n);if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log(l),l}catch(e){throw console.error("Failed to fetch spend data:",e),e}},ez=async e=>{try{let t=d?"".concat(d,"/global/spend/models?limit=5"):"/global/spend/models?limit=5",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to create key:",e),e}},eL=async(e,t)=>{try{let o=d?"".concat(d,"/v2/key/info"):"/v2/key/info",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:t})});if(!a.ok){let e=await a.text();if(e.includes("Invalid proxy server token passed"))throw Error("Invalid proxy server token passed");throw f(e),Error("Network response was not ok")}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},eD=async(e,t,o,a)=>{try{console.log("Sending model connection test request:",JSON.stringify(t));let n=d?"".concat(d,"/health/test_connection"):"/health/test_connection",c=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",[w]:"Bearer ".concat(e)},body:JSON.stringify({litellm_params:t,model_info:o,mode:a})}),l=c.headers.get("content-type");if(!l||!l.includes("application/json")){let e=await c.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(c.status,": ").concat(c.statusText,"). Check network tab for details."))}let i=await c.json();if(!c.ok||"error"===i.status){if("error"===i.status);else{var r;return{status:"error",message:(null===(r=i.error)||void 0===r?void 0:r.message)||"Connection test failed: ".concat(c.status," ").concat(c.statusText)}}}return i}catch(e){throw console.error("Model connection test error:",e),e}},eV=async(e,t)=>{try{console.log("entering keyInfoV1Call");let o=d?"".concat(d,"/key/info"):"/key/info";o="".concat(o,"?key=").concat(t);let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(console.log("response",a),!a.ok){let e=await a.text();f(e),c.Z.fromBackend("Failed to fetch key info - "+e)}let r=await a.json();return console.log("data",r),r}catch(e){throw console.error("Failed to fetch key info:",e),e}},eZ=async function(e,t,o,a,r,n,c,l){let i=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,s=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null;try{let u=d?"".concat(d,"/key/list"):"/key/list";console.log("in keyListCall");let p=new URLSearchParams;o&&p.append("team_id",o.toString()),t&&p.append("organization_id",t.toString()),a&&p.append("key_alias",a),n&&p.append("key_hash",n),r&&p.append("user_id",r.toString()),c&&p.append("page",c.toString()),l&&p.append("size",l.toString()),i&&p.append("sort_by",i),s&&p.append("sort_order",s),p.append("return_full_object","true"),p.append("include_team_keys","true"),p.append("include_created_by_keys","true");let h=p.toString();h&&(u+="?".concat(h));let g=await fetch(u,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!g.ok){let e=await g.json(),t=oE(e);throw f(t),Error(t)}let m=await g.json();return console.log("/team/list API Response:",m),m}catch(e){throw console.error("Failed to create key:",e),e}},eq=async e=>{try{let t=d?"".concat(d,"/key/aliases"):"/key/aliases";console.log("in keyAliasesCall");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("/key/aliases API Response:",a),a}catch(e){throw console.error("Failed to fetch key aliases:",e),e}},eH=async(e,t)=>{try{let o=d?"".concat(d,"/spend/users"):"/spend/users";console.log("in spendUsersCall:",o);let a=await fetch("".concat(o,"?user_id=").concat(t),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to get spend for user",e),e}},eW=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/user/request_model"):"/user/request_model",n=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({models:[t],user_id:o,justification:a})});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log(c),c}catch(e){throw console.error("Failed to create key:",e),e}},eY=async e=>{try{let t=d?"".concat(d,"/user/get_requests"):"/user/get_requests";console.log("in userGetRequesedtModelsCall:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log(a),a}catch(e){throw console.error("Failed to get requested models:",e),e}},eK=async(e,t,o)=>{try{let a=d?"".concat(d,"/user/daily/activity/aggregated"):"/user/daily/activity/aggregated",r=new URLSearchParams,n=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)};r.append("start_date",n(t)),r.append("end_date",n(o));let c=r.toString();c&&(a+="?".concat(c));let l=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch aggregated user daily activity:",e),e}},e$=async(e,t)=>{try{let o=d?"".concat(d,"/user/get_users?role=").concat(t):"/user/get_users?role=".concat(t);console.log("in userGetAllUsersCall:",o);let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to get requested models:",e),e}},eQ=async e=>{try{let t=d?"".concat(d,"/user/available_roles"):"/user/available_roles",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("response from user/available_role",a),a}catch(e){throw e}},eX=async(e,t)=>{try{if(console.log("Form Values in teamCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let o=d?"".concat(d,"/team/new"):"/team/new",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},e0=async(e,t)=>{try{if(console.log("Form Values in credentialCreateCall:",t),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let o=d?"".concat(d,"/credentials"):"/credentials",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},e1=async e=>{try{let t=d?"".concat(d,"/credentials"):"/credentials";console.log("in credentialListCall");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("/credentials API Response:",a),a}catch(e){throw console.error("Failed to create key:",e),e}},e4=async(e,t,o)=>{try{let a=d?"".concat(d,"/credentials"):"/credentials";t?a+="/by_name/".concat(t):o&&(a+="/by_model/".concat(o)),console.log("in credentialListCall");let r=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("/credentials API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},e2=async(e,t)=>{try{let o=d?"".concat(d,"/credentials/").concat(t):"/credentials/".concat(t);console.log("in credentialDeleteCall:",t);let a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to delete key:",e),e}},e3=async(e,t,o)=>{try{if(console.log("Form Values in credentialUpdateCall:",o),o.metadata){console.log("formValues.metadata:",o.metadata);try{o.metadata=JSON.parse(o.metadata)}catch(e){throw Error("Failed to parse metadata: "+e)}}let a=d?"".concat(d,"/credentials/").concat(t):"/credentials/".concat(t),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},e5=async(e,t)=>{try{if(console.log("Form Values in keyUpdateCall:",t),t.model_tpm_limit){console.log("formValues.model_tpm_limit:",t.model_tpm_limit);try{t.model_tpm_limit=JSON.parse(t.model_tpm_limit)}catch(e){throw Error("Failed to parse model_tpm_limit: "+e)}}if(t.model_rpm_limit){console.log("formValues.model_rpm_limit:",t.model_rpm_limit);try{t.model_rpm_limit=JSON.parse(t.model_rpm_limit)}catch(e){throw Error("Failed to parse model_rpm_limit: "+e)}}let o=d?"".concat(d,"/key/update"):"/key/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let r=await a.json();return console.log("Update key Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},e6=async(e,t)=>{try{console.log("Form Values in teamUpateCall:",t);let o=d?"".concat(d,"/team/update"):"/team/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error response from the server:",e),c.Z.fromBackend("Failed to update team settings: "+e),Error(e)}let r=await a.json();return console.log("Update Team Response:",r),r}catch(e){throw console.error("Failed to update team:",e),e}},e9=async(e,t,o)=>{try{console.log("Form Values in modelUpateCall:",t);let a=d?"".concat(d,"/model/").concat(o,"/update"):"/model/".concat(o,"/update"),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error update from the server:",e),Error("Network response was not ok")}let n=await r.json();return console.log("Update model Response:",n),n}catch(e){throw console.error("Failed to update model:",e),e}},e7=async(e,t)=>{try{console.log("Form Values in modelUpateCall:",t);let o=d?"".concat(d,"/model/update"):"/model/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.text();throw f(e),console.error("Error update from the server:",e),Error("Network response was not ok")}let r=await a.json();return console.log("Update model Response:",r),r}catch(e){throw console.error("Failed to update model:",e),e}},e8=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let r=d?"".concat(d,"/team/member_add"):"/team/member_add",n=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,member:o})});if(!n.ok){var a;let e=await n.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(a=t.detail)||void 0===a?void 0:a.error)||"Failed to add team member",r=Error(o);throw r.raw=t,r}let c=await n.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},te=async(e,t,o,a,r)=>{try{console.log("Bulk add team members:",{teamId:t,members:o,maxBudgetInTeam:a});let c=d?"".concat(d,"/team/bulk_member_add"):"/team/bulk_member_add",l={team_id:t};r?l.all_users=!0:l.members=o,null!=a&&(l.max_budget_in_team=a);let i=await fetch(c,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(l)});if(!i.ok){var n;let e=await i.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(n=t.detail)||void 0===n?void 0:n.error)||"Failed to bulk add team members",a=Error(o);throw a.raw=t,a}let s=await i.json();return console.log("Bulk team member add API Response:",s),s}catch(e){throw console.error("Failed to bulk add team members:",e),e}},tt=async(e,t,o)=>{try{console.log("Form Values in teamMemberUpdateCall:",o),console.log("Budget value:",o.max_budget_in_team),console.log("TPM limit:",o.tpm_limit),console.log("RPM limit:",o.rpm_limit);let r=d?"".concat(d,"/team/member_update"):"/team/member_update",n={team_id:t,role:o.role,user_id:o.user_id};void 0!==o.user_email&&(n.user_email=o.user_email),void 0!==o.max_budget_in_team&&null!==o.max_budget_in_team&&(n.max_budget_in_team=o.max_budget_in_team),void 0!==o.tpm_limit&&null!==o.tpm_limit&&(n.tpm_limit=o.tpm_limit),void 0!==o.rpm_limit&&null!==o.rpm_limit&&(n.rpm_limit=o.rpm_limit),console.log("Final request body:",n);let c=await fetch(r,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(n)});if(!c.ok){var a;let e=await c.text(),t={};try{t=JSON.parse(e)}catch(t){console.warn("Failed to parse error body as JSON:",e)}let o=(null==t?void 0:null===(a=t.detail)||void 0===a?void 0:a.error)||"Failed to add team member",r=Error(o);throw r.raw=t,r}let l=await c.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to update team member:",e),e}},to=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let a=d?"".concat(d,"/team/member_delete"):"/team/member_delete",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,...void 0!==o.user_email&&{user_email:o.user_email},...void 0!==o.user_id&&{user_id:o.user_id}})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},ta=async(e,t,o)=>{try{console.log("Form Values in teamMemberAddCall:",o);let a=d?"".concat(d,"/organization/member_add"):"/organization/member_add",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,member:o})});if(!r.ok){let e=await r.text();throw f(e),console.error("Error response from the server:",e),Error(e)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create organization member:",e),e}},tr=async(e,t,o)=>{try{console.log("Form Values in organizationMemberDeleteCall:",o);let a=d?"".concat(d,"/organization/member_delete"):"/organization/member_delete",r=await fetch(a,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,user_id:o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to delete organization member:",e),e}},tn=async(e,t,o)=>{try{console.log("Form Values in organizationMemberUpdateCall:",o);let a=d?"".concat(d,"/organization/member_update"):"/organization/member_update",r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({organization_id:t,...o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to update organization member:",e),e}},tc=async(e,t,o)=>{try{console.log("Form Values in userUpdateUserCall:",t);let a=d?"".concat(d,"/user/update"):"/user/update",r={...t};null!==o&&(r.user_role=o),r=JSON.stringify(r);let n=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:r});if(!n.ok){let e=await n.json(),t=oE(e);throw f(t),Error(t)}let c=await n.json();return console.log("API Response:",c),c}catch(e){throw console.error("Failed to create key:",e),e}},tl=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];try{let r;console.log("Form Values in userUpdateUserCall:",t);let n=d?"".concat(d,"/user/bulk_update"):"/user/bulk_update";if(a)r=JSON.stringify({all_users:!0,user_updates:t});else if(o&&o.length>0){let e=[];for(let a of o)e.push({user_id:a,...t});r=JSON.stringify({users:e})}else throw Error("Must provide either userIds or set allUsers=true");let c=await fetch(n,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:r});if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}let l=await c.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},ti=async(e,t)=>{try{let o=d?"".concat(d,"/global/predict/spend/logs"):"/global/predict/spend/logs",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({data:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log(r),r}catch(e){throw console.error("Failed to create key:",e),e}},ts=async e=>{try{let t=d?"".concat(d,"/health/services?service=slack_budget_alerts"):"/health/services?service=slack_budget_alerts";console.log("Checking Slack Budget Alerts service health");let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error(e)}let a=await o.json();return c.Z.success("Test Slack Alert worked - check your Slack!"),console.log("Service Health Response:",a),a}catch(e){throw console.error("Failed to perform health check:",e),e}},td=async(e,t)=>{try{let o=d?"".concat(d,"/health/services?service=").concat(t):"/health/services?service=".concat(t);console.log("Checking Slack Budget Alerts service health");let a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw f(e),Error(e)}return await a.json()}catch(e){throw console.error("Failed to perform health check:",e),e}},tu=async e=>{try{let t=d?"".concat(d,"/budget/list"):"/budget/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tp=async e=>{try{let t=d?"".concat(d,"/budget/settings"):"/budget/settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},th=async(e,t,o)=>{try{let t=d?"".concat(d,"/get/config/callbacks"):"/get/config/callbacks",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tg=async e=>{try{let t=d?"".concat(d,"/config/list?config_type=general_settings"):"/config/list?config_type=general_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tm=async e=>{try{let t=d?"".concat(d,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tf=async(e,t)=>{try{let o=d?"".concat(d,"/config/field/info?field_name=").concat(t):"/config/field/info?field_name=".concat(t),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},tw=async(e,t,o)=>{try{let a=d?"".concat(d,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,field_value:o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return c.Z.success("Successfully updated value!"),n}catch(e){throw console.error("Failed to set callbacks:",e),e}},ty=async(e,t)=>{try{let o=d?"".concat(d,"/config/pass_through_endpoint"):"/config/pass_through_endpoint",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},tj=async(e,t,o)=>{try{let a=d?"".concat(d,"/config/field/update"):"/config/field/update",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,field_value:o,config_type:"general_settings"})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return c.Z.success("Successfully updated value!"),n}catch(e){throw console.error("Failed to set callbacks:",e),e}},t_=async(e,t)=>{try{let o=d?"".concat(d,"/config/field/delete"):"/config/field/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({field_name:t,config_type:"general_settings"})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return c.Z.success("Field reset on proxy"),r}catch(e){throw console.error("Failed to get callbacks:",e),e}},tC=async(e,t)=>{try{let o=d?"".concat(d,"/config/pass_through_endpoint?endpoint_id=").concat(t):"/config/pass_through_endpoint?endpoint_id=".concat(t),a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tk=async(e,t)=>{try{let o=d?"".concat(d,"/config/update"):"/config/update",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to set callbacks:",e),e}},tv=async e=>{try{let t=d?"".concat(d,"/health"):"/health",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to call /health:",e),e}},tT=async(e,t)=>{try{let o=d?"".concat(d,"/health?model=").concat(encodeURIComponent(t)):"/health?model=".concat(encodeURIComponent(t)),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to call /health for model ".concat(t,":"),e),e}},tE=async e=>{try{let t=d?"".concat(d,"/cache/ping"):"/cache/ping",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error(e)}return await o.json()}catch(e){throw console.error("Failed to call /cache/ping:",e),e}},tS=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:100,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;try{let n=d?"".concat(d,"/health/history"):"/health/history",c=new URLSearchParams;t&&c.append("model",t),o&&c.append("status_filter",o),c.append("limit",a.toString()),c.append("offset",r.toString()),c.toString()&&(n+="?".concat(c.toString()));let l=await fetch(n,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw f(e),Error(e)}return await l.json()}catch(e){throw console.error("Failed to call /health/history:",e),e}},tb=async e=>{try{let t=d?"".concat(d,"/health/latest"):"/health/latest",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error(e)}return await o.json()}catch(e){throw console.error("Failed to call /health/latest:",e),e}},tF=async e=>{try{console.log("Getting proxy UI settings"),console.log("proxyBaseUrl in getProxyUISettings:",d);let t=d?"".concat(d,"/sso/get/ui_settings"):"/sso/get/ui_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get callbacks:",e),e}},tP=async e=>{try{let t=d?"".concat(d,"/v2/guardrails/list"):"/v2/guardrails/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get guardrails list:",e),e}},tO=async e=>{try{let t=d?"".concat(d,"/prompts/list"):"/prompts/list",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to get prompts list:",e),e}},tB=async(e,t)=>{try{let o=d?"".concat(d,"/prompts/").concat(t,"/info"):"/prompts/".concat(t,"/info"),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to get prompt info:",e),e}},tN=async(e,t)=>{try{let o=d?"".concat(d,"/prompts"):"/prompts",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to create prompt:",e),e}},tx=async(e,t,o)=>{try{let a=d?"".concat(d,"/prompts/").concat(t):"/prompts/".concat(t),r=await fetch(a,{method:"PUT",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}return await r.json()}catch(e){throw console.error("Failed to update prompt:",e),e}},tG=async(e,t)=>{try{let o=d?"".concat(d,"/prompts/").concat(t):"/prompts/".concat(t),a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to delete prompt:",e),e}},tA=async(e,t)=>{try{let o=new FormData;o.append("file",t);let a=d?"".concat(d,"/utils/dotprompt_json_converter"):"/utils/dotprompt_json_converter",r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e)},body:o});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}return await r.json()}catch(e){throw console.error("Failed to convert prompt file:",e),e}},tJ=async(e,t,o)=>{try{let a=d?"".concat(d,"/prompts/").concat(t):"/prompts/".concat(t),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}return await r.json()}catch(e){throw console.error("Failed to patch prompt:",e),e}},tU=async(e,t)=>{try{let o=d?"".concat(d,"/guardrails"):"/guardrails",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({guardrail:t})});if(!a.ok){let e=await a.text();throw f(e),Error(e)}let r=await a.json();return console.log("Create guardrail response:",r),r}catch(e){throw console.error("Failed to create guardrail:",e),e}},tR=async(e,t,o)=>{try{let a=d?"".concat(d,"/spend/logs/ui/").concat(t,"?start_date=").concat(encodeURIComponent(o)):"/spend/logs/ui/".concat(t,"?start_date=").concat(encodeURIComponent(o));console.log("Fetching log details from:",a);let r=await fetch(a,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("Fetched log details:",n),n}catch(e){throw console.error("Failed to fetch log details:",e),e}},tI=async e=>{try{let t=d?"".concat(d,"/get/internal_user_settings"):"/get/internal_user_settings";console.log("Fetching SSO settings from:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched SSO settings:",a),a}catch(e){throw console.error("Failed to fetch SSO settings:",e),e}},tM=async(e,t)=>{try{let o=d?"".concat(d,"/update/internal_user_settings"):"/update/internal_user_settings";console.log("Updating internal user settings:",t);let a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();throw f(e),Error(e)}let r=await a.json();return console.log("Updated internal user settings:",r),c.Z.success("Internal user settings updated successfully"),r}catch(e){throw console.error("Failed to update internal user settings:",e),e}},tz=async e=>{try{let t=d?"".concat(d,"/v1/mcp/server"):"/v1/mcp/server";console.log("Fetching MCP servers from:",t);let o=await fetch(t,{method:h.GET,headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched MCP servers:",a),a}catch(e){throw console.error("Failed to fetch MCP servers:",e),e}},tL=async e=>{try{let t=d?"".concat(d,"/v1/mcp/access_groups"):"/v1/mcp/access_groups";console.log("Fetching MCP access groups from:",t);let o=await fetch(t,{method:h.GET,headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched MCP access groups:",a),a.access_groups||[]}catch(e){throw console.error("Failed to fetch MCP access groups:",e),e}},tD=async(e,t)=>{try{console.log("Form Values in createMCPServer:",t);let o=d?"".concat(d,"/v1/mcp/server"):"/v1/mcp/server",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("API Response:",r),r}catch(e){throw console.error("Failed to create key:",e),e}},tV=async(e,t)=>{try{let o=d?"".concat(d,"/v1/mcp/server"):"/v1/mcp/server",a=await fetch(o,{method:"PUT",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to update MCP server:",e),e}},tZ=async(e,t)=>{try{let o=(d?"".concat(d):"")+"/v1/mcp/server/".concat(t);console.log("in deleteMCPServer:",t);let a=await fetch(o,{method:h.DELETE,headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}}catch(e){throw console.error("Failed to delete key:",e),e}},tq=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/mcp-rest/tools/list?server_id=").concat(t):"/mcp-rest/tools/list?server_id=".concat(t);console.log("Fetching MCP tools from:",r);let n={[w]:"Bearer ".concat(e),"Content-Type":"application/json"};a&&o?n["x-mcp-".concat(a,"-authorization")]=o:o&&(n[y]=o);let c=await fetch(r,{method:"GET",headers:n}),l=await c.json();if(console.log("Fetched MCP tools response:",l),!c.ok){if(l.error&&l.message)throw Error(l.message);throw Error("Failed to fetch MCP tools")}return l}catch(e){return console.error("Failed to fetch MCP tools:",e),{tools:[],error:"network_error",message:e instanceof Error?e.message:"Failed to fetch MCP tools"}}},tH=async(e,t,o,a,r)=>{try{let n=d?"".concat(d,"/mcp-rest/tools/call"):"/mcp-rest/tools/call";console.log("Calling MCP tool:",t,"with arguments:",o);let c={[w]:"Bearer ".concat(e),"Content-Type":"application/json"};r?c["x-mcp-".concat(r,"-authorization")]=a:c[y]=a;let l=await fetch(n,{method:"POST",headers:c,body:JSON.stringify({name:t,arguments:o})});if(!l.ok){let e="Network response was not ok",t=null,o=await l.text();try{let a=JSON.parse(o);a.detail?"string"==typeof a.detail?e=a.detail:"object"==typeof a.detail&&(e=a.detail.message||a.detail.error||"An error occurred",t=a.detail):e=a.message||a.error||e}catch(t){console.error("Failed to parse JSON error response:",t),o&&(e=o)}let a=Error(e);throw a.status=l.status,a.statusText=l.statusText,a.details=t,f(e),a}let i=await l.json();return console.log("MCP tool call response:",i),i}catch(e){throw console.error("Failed to call MCP tool:",e),console.error("Error type:",typeof e),e instanceof Error&&(console.error("Error message:",e.message),console.error("Error stack:",e.stack)),e}},tW=async(e,t)=>{try{let o=d?"".concat(d,"/tag/new"):"/tag/new",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();await f(e);return}return await a.json()}catch(e){throw console.error("Error creating tag:",e),e}},tY=async(e,t)=>{try{let o=d?"".concat(d,"/tag/update"):"/tag/update",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();await f(e);return}return await a.json()}catch(e){throw console.error("Error updating tag:",e),e}},tK=async(e,t)=>{try{let o=d?"".concat(d,"/tag/info"):"/tag/info",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({names:t})});if(!a.ok){let e=await a.text();return await f(e),{}}return await a.json()}catch(e){throw console.error("Error getting tag info:",e),e}},t$=async e=>{try{let t=d?"".concat(d,"/tag/list"):"/tag/list",o=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e)}});if(!o.ok){let e=await o.text();return await f(e),{}}return await o.json()}catch(e){throw console.error("Error listing tags:",e),e}},tQ=async(e,t)=>{try{let o=d?"".concat(d,"/tag/delete"):"/tag/delete",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({name:t})});if(!a.ok){let e=await a.text();await f(e);return}return await a.json()}catch(e){throw console.error("Error deleting tag:",e),e}},tX=async e=>{try{let t=d?"".concat(d,"/get/default_team_settings"):"/get/default_team_settings";console.log("Fetching default team settings from:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched default team settings:",a),a}catch(e){throw console.error("Failed to fetch default team settings:",e),e}},t0=async(e,t)=>{try{let o=d?"".concat(d,"/update/default_team_settings"):"/update/default_team_settings";console.log("Updating default team settings:",t);let a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("Updated default team settings:",r),c.Z.success("Default team settings updated successfully"),r}catch(e){throw console.error("Failed to update default team settings:",e),e}},t1=async(e,t)=>{try{let o=d?"".concat(d,"/team/permissions_list?team_id=").concat(t):"/team/permissions_list?team_id=".concat(t),a=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("Team permissions response:",r),r}catch(e){throw console.error("Failed to get team permissions:",e),e}},t4=async(e,t,o)=>{try{let a=d?"".concat(d,"/team/permissions_update"):"/team/permissions_update",r=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({team_id:t,team_member_permissions:o})});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return console.log("Team permissions response:",n),n}catch(e){throw console.error("Failed to update team permissions:",e),e}},t2=async(e,t)=>{try{let o=d?"".concat(d,"/spend/logs/session/ui?session_id=").concat(encodeURIComponent(t)):"/spend/logs/session/ui?session_id=".concat(encodeURIComponent(t)),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to fetch session logs:",e),e}},t3=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/new"):"/vector_store/new",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to create vector store")}return await a.json()}catch(e){throw console.error("Error creating vector store:",e),e}},t5=async function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1],arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let t=d?"".concat(d,"/vector_store/list"):"/vector_store/list",o=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}});if(!o.ok){let e=await o.json();throw Error(e.detail||"Failed to list vector stores")}return await o.json()}catch(e){throw console.error("Error listing vector stores:",e),e}},t6=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/delete"):"/vector_store/delete",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({vector_store_id:t})});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to delete vector store")}return await a.json()}catch(e){throw console.error("Error deleting vector store:",e),e}},t9=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/info"):"/vector_store/info",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify({vector_store_id:t})});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to get vector store info")}return await a.json()}catch(e){throw console.error("Error getting vector store info:",e),e}},t7=async(e,t)=>{try{let o=d?"".concat(d,"/vector_store/update"):"/vector_store/update",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)},body:JSON.stringify(t)});if(!a.ok){let e=await a.json();throw Error(e.detail||"Failed to update vector store")}return await a.json()}catch(e){throw console.error("Error updating vector store:",e),e}},t8=async e=>{try{let t=d?"".concat(d,"/email/event_settings"):"/email/event_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to get email event settings")}let a=await o.json();return console.log("Email event settings response:",a),a}catch(e){throw console.error("Failed to get email event settings:",e),e}},oe=async(e,t)=>{try{let o=d?"".concat(d,"/email/event_settings"):"/email/event_settings",a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.text();throw f(e),Error("Failed to update email event settings")}let r=await a.json();return console.log("Update email event settings response:",r),r}catch(e){throw console.error("Failed to update email event settings:",e),e}},ot=async e=>{try{let t=d?"".concat(d,"/email/event_settings/reset"):"/email/event_settings/reset",o=await fetch(t,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to reset email event settings")}let a=await o.json();return console.log("Reset email event settings response:",a),a}catch(e){throw console.error("Failed to reset email event settings:",e),e}},oo=async(e,t)=>{try{let o=d?"".concat(d,"/guardrails/").concat(t):"/guardrails/".concat(t),a=await fetch(o,{method:"DELETE",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw f(e),Error(e)}let r=await a.json();return console.log("Delete guardrail response:",r),r}catch(e){throw console.error("Failed to delete guardrail:",e),e}},oa=async e=>{try{let t=d?"".concat(d,"/guardrails/ui/add_guardrail_settings"):"/guardrails/ui/add_guardrail_settings",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to get guardrail UI settings")}let a=await o.json();return console.log("Guardrail UI settings response:",a),a}catch(e){throw console.error("Failed to get guardrail UI settings:",e),e}},or=async e=>{try{let t=d?"".concat(d,"/guardrails/ui/provider_specific_params"):"/guardrails/ui/provider_specific_params",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.text();throw f(e),Error("Failed to get guardrail provider specific parameters")}let a=await o.json();return console.log("Guardrail provider specific params response:",a),a}catch(e){throw console.error("Failed to get guardrail provider specific parameters:",e),e}},on=async(e,t)=>{try{let o=d?"".concat(d,"/guardrails/").concat(t,"/info"):"/guardrails/".concat(t,"/info"),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw f(e),Error("Failed to get guardrail info")}let r=await a.json();return console.log("Guardrail info response:",r),r}catch(e){throw console.error("Failed to get guardrail info:",e),e}},oc=async(e,t,o)=>{try{let a=d?"".concat(d,"/guardrails/").concat(t):"/guardrails/".concat(t),r=await fetch(a,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.text();throw f(e),Error("Failed to update guardrail")}let n=await r.json();return console.log("Update guardrail response:",n),n}catch(e){throw console.error("Failed to update guardrail:",e),e}},ol=async e=>{try{let t=d?"".concat(d,"/get/sso_settings"):"/get/sso_settings";console.log("Fetching SSO configuration from:",t);let o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}let a=await o.json();return console.log("Fetched SSO configuration:",a),a}catch(e){throw console.error("Failed to fetch SSO configuration:",e),e}},oi=async(e,t)=>{try{let o=d?"".concat(d,"/update/sso_settings"):"/update/sso_settings";console.log("Updating SSO configuration:",t);let a=await fetch(o,{method:"PATCH",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=await a.json();return console.log("Updated SSO configuration:",r),r}catch(e){throw console.error("Failed to update SSO configuration:",e),e}},os=async(e,t,o,a,r)=>{try{let t=d?"".concat(d,"/audit"):"/audit",o=new URLSearchParams;a&&o.append("page",a.toString()),r&&o.append("page_size",r.toString());let n=o.toString();n&&(t+="?".concat(n));let c=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!c.ok){let e=await c.json(),t=oE(e);throw f(t),Error(t)}return await c.json()}catch(e){throw console.error("Failed to fetch audit logs:",e),e}},od=async e=>{try{let t=d?"".concat(d,"/user/available_users"):"/user/available_users",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e)}});if(!o.ok){if(404===o.status)return null;let e=await o.text();throw f(e),Error("Network response was not ok")}return await o.json()}catch(e){throw console.error("Failed to fetch remaining users:",e),e}},ou=async(e,t,o)=>{try{let a=d?"".concat(d,"/config/pass_through_endpoint/").concat(encodeURIComponent(t)):"/config/pass_through_endpoint/".concat(encodeURIComponent(t)),r=await fetch(a,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){let e=await r.json(),t=oE(e);throw f(t),Error(t)}let n=await r.json();return c.Z.success("Pass through endpoint updated successfully"),n}catch(e){throw console.error("Failed to update pass through endpoint:",e),e}},op=async(e,t)=>{try{let o=d?"".concat(d,"/config/pass_through_endpoint?endpoint_id=").concat(encodeURIComponent(t)):"/config/pass_through_endpoint?endpoint_id=".concat(encodeURIComponent(t)),a=await fetch(o,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}let r=(await a.json()).endpoints;if(!r||0===r.length)throw Error("Pass through endpoint not found");return r[0]}catch(e){throw console.error("Failed to get pass through endpoint info:",e),e}},oh=async(e,t)=>{try{let o=d?"".concat(d,"/config/callback/delete"):"/config/callback/delete",a=await fetch(o,{method:"POST",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({callback_name:t})});if(!a.ok){let e=await a.json(),t=oE(e);throw f(t),Error(t)}return await a.json()}catch(e){throw console.error("Failed to delete specific callback:",e),e}},og=async e=>{let t=p(),o=await fetch("".concat(t,"/v1/mcp/tools"),{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok)throw Error("HTTP error! status: ".concat(o.status));return await o.json()},om=async(e,t)=>{try{console.log("Testing MCP connection with config:",JSON.stringify(t));let a=d?"".concat(d,"/mcp-rest/test/connection"):"/mcp-rest/test/connection",r=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",[w]:"Bearer ".concat(e)},body:JSON.stringify(t)}),n=r.headers.get("content-type");if(!n||!n.includes("application/json")){let e=await r.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(r.status,": ").concat(r.statusText,"). Check network tab for details."))}let c=await r.json();if(!r.ok||"error"===c.status){if("error"===c.status);else{var o;return{status:"error",message:(null===(o=c.error)||void 0===o?void 0:o.message)||"MCP connection test failed: ".concat(r.status," ").concat(r.statusText)}}}return c}catch(e){throw console.error("MCP connection test error:",e),e}},of=async(e,t)=>{try{console.log("Testing MCP tools list with config:",JSON.stringify(t));let o=d?"".concat(d,"/mcp-rest/test/tools/list"):"/mcp-rest/test/tools/list",a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",[w]:"Bearer ".concat(e)},body:JSON.stringify(t)}),r=a.headers.get("content-type");if(!r||!r.includes("application/json")){let e=await a.text();throw console.error("Received non-JSON response:",e),Error("Received non-JSON response (".concat(a.status,": ").concat(a.statusText,"). Check network tab for details."))}let n=await a.json();if((!a.ok||n.error)&&!n.error)return{tools:[],error:"request_failed",message:n.message||"MCP tools list failed: ".concat(a.status," ").concat(a.statusText)};return n}catch(e){throw console.error("MCP tools list test error:",e),e}},ow=async(e,t,o)=>{try{let a="".concat(p(),"/v1/vector_stores/").concat(t,"/search"),r=await fetch(a,{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({query:o})});if(!r.ok){let e=await r.text();return await f(e),null}return await r.json()}catch(e){throw console.error("Error testing vector store search:",e),e}},oy=async function(e,t,o){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:50,n=arguments.length>5?arguments[5]:void 0;try{let c=d?"".concat(d,"/tag/user-agent/analytics"):"/tag/user-agent/analytics",l=new URLSearchParams,i=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)};l.append("start_date",i(t)),l.append("end_date",i(o)),l.append("page",a.toString()),l.append("page_size",r.toString()),n&&l.append("user_agent_filter",n);let s=l.toString();s&&(c+="?".concat(s));let u=await fetch(c,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!u.ok){let e=await u.json(),t=oE(e);throw f(t),Error(t)}return await u.json()}catch(e){throw console.error("Failed to fetch user agent analytics:",e),e}},oj=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/dau"):"/tag/dau",n=new URLSearchParams;n.append("end_date",(e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)})(t)),a&&a.length>0?a.forEach(e=>{n.append("tag_filters",e)}):o&&n.append("tag_filter",o);let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch DAU:",e),e}},o_=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/wau"):"/tag/wau",n=new URLSearchParams;n.append("end_date",(e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)})(t)),a&&a.length>0?a.forEach(e=>{n.append("tag_filters",e)}):o&&n.append("tag_filter",o);let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch WAU:",e),e}},oC=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/mau"):"/tag/mau",n=new URLSearchParams;n.append("end_date",(e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)})(t)),a&&a.length>0?a.forEach(e=>{n.append("tag_filters",e)}):o&&n.append("tag_filter",o);let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch MAU:",e),e}},ok=async e=>{try{let t=d?"".concat(d,"/tag/distinct"):"/tag/distinct",o=await fetch(t,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!o.ok){let e=await o.json(),t=oE(e);throw f(t),Error(t)}return await o.json()}catch(e){throw console.error("Failed to fetch distinct tags:",e),e}},ov=async(e,t,o,a)=>{try{let r=d?"".concat(d,"/tag/summary"):"/tag/summary",n=new URLSearchParams,c=e=>{let t=e.getFullYear(),o=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(o,"-").concat(a)};n.append("start_date",c(t)),n.append("end_date",c(o)),a&&a.length>0&&a.forEach(e=>{n.append("tag_filters",e)});let l=n.toString();l&&(r+="?".concat(l));let i=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!i.ok){let e=await i.json(),t=oE(e);throw f(t),Error(t)}return await i.json()}catch(e){throw console.error("Failed to fetch user agent summary:",e),e}},oT=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:50,a=arguments.length>3?arguments[3]:void 0;try{let r=d?"".concat(d,"/tag/user-agent/per-user-analytics"):"/tag/user-agent/per-user-analytics",n=new URLSearchParams;n.append("page",t.toString()),n.append("page_size",o.toString()),a&&a.length>0&&a.forEach(e=>{n.append("tag_filters",e)});let c=n.toString();c&&(r+="?".concat(c));let l=await fetch(r,{method:"GET",headers:{[w]:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.json(),t=oE(e);throw f(t),Error(t)}return await l.json()}catch(e){throw console.error("Failed to fetch per-user analytics:",e),e}},oE=e=>(null==e?void 0:e.error)&&(e.error.message||e.error)||(null==e?void 0:e.message)||(null==e?void 0:e.detail)||(null==e?void 0:e.error)||JSON.stringify(e)},85968:function(e,t,o){o.d(t,{O:function(){return a}});let a=e=>{if(!e)return"An unknown error occurred";if("string"==typeof e)return e;if(e.message)try{let t=JSON.parse(e.message);if(t.error&&t.error.message)return t.error.message;return"string"==typeof t?t:JSON.stringify(t,null,2)}catch(t){return e.message}if(e.response&&e.response.data){if("string"==typeof e.response.data)return e.response.data;if(e.response.data.message)return e.response.data.message;if(e.response.data.error)return"string"==typeof e.response.data.error?e.response.data.error:e.response.data.error.message||JSON.stringify(e.response.data.error)}return String(e)}},3914:function(e,t,o){function a(){let e=window.location.hostname,t=["Lax","Strict","None"];["/","/ui"].forEach(o=>{document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,";"),document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,"; domain=").concat(e,";"),t.forEach(t=>{let a="None"===t?" Secure;":"";document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,"; SameSite=").concat(t,";").concat(a),document.cookie="token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=".concat(o,"; domain=").concat(e,"; SameSite=").concat(t,";").concat(a)})}),console.log("After clearing cookies:",document.cookie)}function r(e){let t=document.cookie.split("; ").find(t=>t.startsWith(e+"="));return t?t.split("=")[1]:null}o.d(t,{b:function(){return a},e:function(){return r}})}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/50-fe160ecfa8bc4059.js b/litellm/proxy/_experimental/out/_next/static/chunks/50-d0da2dd7acce2eb9.js similarity index 100% rename from litellm/proxy/_experimental/out/_next/static/chunks/50-fe160ecfa8bc4059.js rename to litellm/proxy/_experimental/out/_next/static/chunks/50-d0da2dd7acce2eb9.js diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/layout-21dfaab0131d6703.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/layout-df4939b4f2ec37d7.js similarity index 59% rename from litellm/proxy/_experimental/out/_next/static/chunks/app/layout-21dfaab0131d6703.js rename to litellm/proxy/_experimental/out/_next/static/chunks/app/layout-df4939b4f2ec37d7.js index 91430e42f46..a6801cb335f 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/layout-21dfaab0131d6703.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/layout-df4939b4f2ec37d7.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{96443:function(n,e,t){Promise.resolve().then(t.t.bind(t,39974,23)),Promise.resolve().then(t.t.bind(t,2778,23))},2778:function(){},39974:function(n){n.exports={style:{fontFamily:"'__Inter_1c856b', '__Inter_Fallback_1c856b'",fontStyle:"normal"},className:"__className_1c856b"}}},function(n){n.O(0,[919,986,971,117,744],function(){return n(n.s=96443)}),_N_E=n.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{85210:function(n,e,t){Promise.resolve().then(t.t.bind(t,39974,23)),Promise.resolve().then(t.t.bind(t,2778,23))},2778:function(){},39974:function(n){n.exports={style:{fontFamily:"'__Inter_1c856b', '__Inter_Fallback_1c856b'",fontStyle:"normal"},className:"__className_1c856b"}}},function(n){n.O(0,[919,986,971,117,744],function(){return n(n.s=85210)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-0517a053ea1a258a.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-d7915f579b770030.js similarity index 63% rename from litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-0517a053ea1a258a.js rename to litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-d7915f579b770030.js index e985fca1651..67a46d33fa8 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-0517a053ea1a258a.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-d7915f579b770030.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[418],{21024:function(e,n,t){Promise.resolve().then(t.bind(t,52829))},52829:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return f}});var u=t(57437),s=t(2265),c=t(99376),r=t(72162);function f(){let e=(0,c.useSearchParams)().get("key"),[n,t]=(0,s.useState)(null);return(0,s.useEffect)(()=>{e&&t(e)},[e]),(0,u.jsx)(r.Z,{accessToken:n})}}},function(e){e.O(0,[50,521,49,162,971,117,744],function(){return e(e.s=21024)}),_N_E=e.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[418],{67355:function(e,n,t){Promise.resolve().then(t.bind(t,52829))},52829:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return f}});var u=t(57437),s=t(2265),c=t(99376),r=t(72162);function f(){let e=(0,c.useSearchParams)().get("key"),[n,t]=(0,s.useState)(null);return(0,s.useEffect)(()=>{e&&t(e)},[e]),(0,u.jsx)(r.Z,{accessToken:n})}}},function(e){e.O(0,[50,521,49,162,971,117,744],function(){return e(e.s=67355)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-c69f5ef890b4b0dc.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-2f23c22a47b20607.js similarity index 69% rename from litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-c69f5ef890b4b0dc.js rename to litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-2f23c22a47b20607.js index 26836781e51..93d58fb9868 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-c69f5ef890b4b0dc.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-2f23c22a47b20607.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25],{64563:function(e,n,u){Promise.resolve().then(u.bind(u,22775))},22775:function(e,n,u){"use strict";u.r(n),u.d(n,{default:function(){return f}});var t=u(57437),s=u(2265),r=u(99376),c=u(97851);function f(){let e=(0,r.useSearchParams)().get("key"),[n,u]=(0,s.useState)(null);return(0,s.useEffect)(()=>{e&&u(e)},[e]),(0,t.jsx)(c.Z,{accessToken:n,publicPage:!0,premiumUser:!1,userRole:null})}}},function(e){e.O(0,[50,521,866,49,162,851,971,117,744],function(){return e(e.s=64563)}),_N_E=e.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25],{38520:function(e,n,u){Promise.resolve().then(u.bind(u,22775))},22775:function(e,n,u){"use strict";u.r(n),u.d(n,{default:function(){return f}});var t=u(57437),s=u(2265),r=u(99376),c=u(97851);function f(){let e=(0,r.useSearchParams)().get("key"),[n,u]=(0,s.useState)(null);return(0,s.useEffect)(()=>{e&&u(e)},[e]),(0,t.jsx)(c.Z,{accessToken:n,publicPage:!0,premiumUser:!1,userRole:null})}}},function(e){e.O(0,[50,521,866,49,162,851,971,117,744],function(){return e(e.s=38520)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-673bb6c3ebcd355a.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-79017a4c39acd336.js similarity index 98% rename from litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-673bb6c3ebcd355a.js rename to litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-79017a4c39acd336.js index f21d4fa29ee..4f336dd30c5 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-673bb6c3ebcd355a.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-79017a4c39acd336.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[461],{8672:function(e,s,r){Promise.resolve().then(r.bind(r,12011))},49804:function(e,s,r){"use strict";r.d(s,{Z:function(){return i}});var l=r(5853),o=r(97324),n=r(1153),t=r(2265),a=r(9496);let c=(0,n.fn)("Col"),i=t.forwardRef((e,s)=>{let{numColSpan:r=1,numColSpanSm:n,numColSpanMd:i,numColSpanLg:d,children:m,className:u}=e,g=(0,l._T)(e,["numColSpan","numColSpanSm","numColSpanMd","numColSpanLg","children","className"]),p=(e,s)=>e&&Object.keys(s).includes(String(e))?s[e]:"";return t.createElement("div",Object.assign({ref:s,className:(0,o.q)(c("root"),(()=>{let e=p(r,a.PT),s=p(n,a.SP),l=p(i,a.VS),t=p(d,a._w);return(0,o.q)(e,s,l,t)})(),u)},g),m)});i.displayName="Col"},67101:function(e,s,r){"use strict";r.d(s,{Z:function(){return d}});var l=r(5853),o=r(97324),n=r(1153),t=r(2265),a=r(9496);let c=(0,n.fn)("Grid"),i=(e,s)=>e&&Object.keys(s).includes(String(e))?s[e]:"",d=t.forwardRef((e,s)=>{let{numItems:r=1,numItemsSm:n,numItemsMd:d,numItemsLg:m,children:u,className:g}=e,p=(0,l._T)(e,["numItems","numItemsSm","numItemsMd","numItemsLg","children","className"]),f=i(r,a._m),h=i(n,a.LH),b=i(d,a.l5),w=i(m,a.N4),x=(0,o.q)(f,h,b,w);return t.createElement("div",Object.assign({ref:s,className:(0,o.q)(c("root"),"grid",x,g)},p),u)});d.displayName="Grid"},9496:function(e,s,r){"use strict";r.d(s,{LH:function(){return o},N4:function(){return t},PT:function(){return a},SP:function(){return c},VS:function(){return i},_m:function(){return l},_w:function(){return d},l5:function(){return n}});let l={0:"grid-cols-none",1:"grid-cols-1",2:"grid-cols-2",3:"grid-cols-3",4:"grid-cols-4",5:"grid-cols-5",6:"grid-cols-6",7:"grid-cols-7",8:"grid-cols-8",9:"grid-cols-9",10:"grid-cols-10",11:"grid-cols-11",12:"grid-cols-12"},o={0:"sm:grid-cols-none",1:"sm:grid-cols-1",2:"sm:grid-cols-2",3:"sm:grid-cols-3",4:"sm:grid-cols-4",5:"sm:grid-cols-5",6:"sm:grid-cols-6",7:"sm:grid-cols-7",8:"sm:grid-cols-8",9:"sm:grid-cols-9",10:"sm:grid-cols-10",11:"sm:grid-cols-11",12:"sm:grid-cols-12"},n={0:"md:grid-cols-none",1:"md:grid-cols-1",2:"md:grid-cols-2",3:"md:grid-cols-3",4:"md:grid-cols-4",5:"md:grid-cols-5",6:"md:grid-cols-6",7:"md:grid-cols-7",8:"md:grid-cols-8",9:"md:grid-cols-9",10:"md:grid-cols-10",11:"md:grid-cols-11",12:"md:grid-cols-12"},t={0:"lg:grid-cols-none",1:"lg:grid-cols-1",2:"lg:grid-cols-2",3:"lg:grid-cols-3",4:"lg:grid-cols-4",5:"lg:grid-cols-5",6:"lg:grid-cols-6",7:"lg:grid-cols-7",8:"lg:grid-cols-8",9:"lg:grid-cols-9",10:"lg:grid-cols-10",11:"lg:grid-cols-11",12:"lg:grid-cols-12"},a={1:"col-span-1",2:"col-span-2",3:"col-span-3",4:"col-span-4",5:"col-span-5",6:"col-span-6",7:"col-span-7",8:"col-span-8",9:"col-span-9",10:"col-span-10",11:"col-span-11",12:"col-span-12",13:"col-span-13"},c={1:"sm:col-span-1",2:"sm:col-span-2",3:"sm:col-span-3",4:"sm:col-span-4",5:"sm:col-span-5",6:"sm:col-span-6",7:"sm:col-span-7",8:"sm:col-span-8",9:"sm:col-span-9",10:"sm:col-span-10",11:"sm:col-span-11",12:"sm:col-span-12",13:"sm:col-span-13"},i={1:"md:col-span-1",2:"md:col-span-2",3:"md:col-span-3",4:"md:col-span-4",5:"md:col-span-5",6:"md:col-span-6",7:"md:col-span-7",8:"md:col-span-8",9:"md:col-span-9",10:"md:col-span-10",11:"md:col-span-11",12:"md:col-span-12",13:"md:col-span-13"},d={1:"lg:col-span-1",2:"lg:col-span-2",3:"lg:col-span-3",4:"lg:col-span-4",5:"lg:col-span-5",6:"lg:col-span-6",7:"lg:col-span-7",8:"lg:col-span-8",9:"lg:col-span-9",10:"lg:col-span-10",11:"lg:col-span-11",12:"lg:col-span-12",13:"lg:col-span-13"}},94789:function(e,s,r){"use strict";r.d(s,{Z:function(){return i}});var l=r(5853),o=r(2265),n=r(26898),t=r(97324),a=r(1153);let c=(0,a.fn)("Callout"),i=o.forwardRef((e,s)=>{let{title:r,icon:i,color:d,className:m,children:u}=e,g=(0,l._T)(e,["title","icon","color","className","children"]);return o.createElement("div",Object.assign({ref:s,className:(0,t.q)(c("root"),"flex flex-col overflow-hidden rounded-tremor-default text-tremor-default border-l-4 py-3 pr-3 pl-4",d?(0,t.q)((0,a.bM)(d,n.K.background).bgColor,(0,a.bM)(d,n.K.darkBorder).borderColor,(0,a.bM)(d,n.K.darkText).textColor,"dark:bg-opacity-10 bg-opacity-10"):(0,t.q)("bg-tremor-brand-faint border-tremor-brand-emphasis text-tremor-brand-emphasis","dark:bg-dark-tremor-brand-muted/70 dark:border-dark-tremor-brand-emphasis dark:text-dark-tremor-brand-emphasis"),m)},g),o.createElement("div",{className:(0,t.q)(c("header"),"flex items-start")},i?o.createElement(i,{className:(0,t.q)(c("icon"),"flex-none h-5 w-5 mr-1.5")}):null,o.createElement("h4",{className:(0,t.q)(c("title"),"font-semibold")},r)),o.createElement("p",{className:(0,t.q)(c("body"),"overflow-y-auto",u?"mt-2":"")},u))});i.displayName="Callout"},12011:function(e,s,r){"use strict";r.r(s),r.d(s,{default:function(){return k}});var l=r(57437),o=r(2265),n=r(99376),t=r(20831),a=r(94789),c=r(12514),i=r(49804),d=r(67101),m=r(84264),u=r(49566),g=r(96761),p=r(84566),f=r(19250),h=r(14474),b=r(13634),w=r(73002),x=r(3914);function k(){let[e]=b.Z.useForm(),s=(0,n.useSearchParams)();(0,x.e)("token");let r=s.get("invitation_id"),k=s.get("action"),[S,N]=(0,o.useState)(null),[y,_]=(0,o.useState)(""),[j,v]=(0,o.useState)(""),[C,Z]=(0,o.useState)(null),[E,I]=(0,o.useState)(""),[q,O]=(0,o.useState)(""),[P,T]=(0,o.useState)(!0);return(0,o.useEffect)(()=>{(0,f.getUiConfig)().then(e=>{console.log("ui config in onboarding.tsx:",e),T(!1)})},[]),(0,o.useEffect)(()=>{r&&!P&&(0,f.getOnboardingCredentials)(r).then(e=>{let s=e.login_url;console.log("login_url:",s),I(s);let r=e.token,l=(0,h.o)(r);O(r),console.log("decoded:",l),N(l.key),console.log("decoded user email:",l.user_email),v(l.user_email),Z(l.user_id)})},[r,P]),(0,l.jsx)("div",{className:"mx-auto w-full max-w-md mt-10",children:(0,l.jsxs)(c.Z,{children:[(0,l.jsx)(g.Z,{className:"text-sm mb-5 text-center",children:"\uD83D\uDE85 LiteLLM"}),(0,l.jsx)(g.Z,{className:"text-xl",children:"reset_password"===k?"Reset Password":"Sign up"}),(0,l.jsx)(m.Z,{children:"reset_password"===k?"Reset your password to access Admin UI.":"Claim your user account to login to Admin UI."}),"reset_password"!==k&&(0,l.jsx)(a.Z,{className:"mt-4",title:"SSO",icon:p.GH$,color:"sky",children:(0,l.jsxs)(d.Z,{numItems:2,className:"flex justify-between items-center",children:[(0,l.jsx)(i.Z,{children:"SSO is under the Enterprise Tier."}),(0,l.jsx)(i.Z,{children:(0,l.jsx)(t.Z,{variant:"primary",className:"mb-2",children:(0,l.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"Get Free Trial"})})})]})}),(0,l.jsxs)(b.Z,{className:"mt-10 mb-5 mx-auto",layout:"vertical",onFinish:e=>{console.log("in handle submit. accessToken:",S,"token:",q,"formValues:",e),S&&q&&(e.user_email=j,C&&r&&(0,f.claimOnboardingToken)(S,r,C,e.password).then(e=>{let s="/ui/";s+="?login=success",document.cookie="token="+q,console.log("redirecting to:",s);let r=(0,f.getProxyBaseUrl)();console.log("proxyBaseUrl:",r),r?window.location.href=r+s:window.location.href=s}))},children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(b.Z.Item,{label:"Email Address",name:"user_email",children:(0,l.jsx)(u.Z,{type:"email",disabled:!0,value:j,defaultValue:j,className:"max-w-md"})}),(0,l.jsx)(b.Z.Item,{label:"Password",name:"password",rules:[{required:!0,message:"password required to sign up"}],help:"reset_password"===k?"Enter your new password":"Create a password for your account",children:(0,l.jsx)(u.Z,{placeholder:"",type:"password",className:"max-w-md"})})]}),(0,l.jsx)("div",{className:"mt-10",children:(0,l.jsx)(w.ZP,{htmlType:"submit",children:"reset_password"===k?"Reset Password":"Sign Up"})})]})]})})}},14474:function(e,s,r){"use strict";r.d(s,{o:function(){return o}});class l extends Error{}function o(e,s){let r;if("string"!=typeof e)throw new l("Invalid token specified: must be a string");s||(s={});let o=!0===s.header?0:1,n=e.split(".")[o];if("string"!=typeof n)throw new l(`Invalid token specified: missing part #${o+1}`);try{r=function(e){let s=e.replace(/-/g,"+").replace(/_/g,"/");switch(s.length%4){case 0:break;case 2:s+="==";break;case 3:s+="=";break;default:throw Error("base64 string is not of the correct length")}try{var r;return r=s,decodeURIComponent(atob(r).replace(/(.)/g,(e,s)=>{let r=s.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}))}catch(e){return atob(s)}}(n)}catch(e){throw new l(`Invalid token specified: invalid base64 for part #${o+1} (${e.message})`)}try{return JSON.parse(r)}catch(e){throw new l(`Invalid token specified: invalid json for part #${o+1} (${e.message})`)}}l.prototype.name="InvalidTokenError"}},function(e){e.O(0,[665,50,49,971,117,744],function(){return e(e.s=8672)}),_N_E=e.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[461],{2532:function(e,s,r){Promise.resolve().then(r.bind(r,12011))},49804:function(e,s,r){"use strict";r.d(s,{Z:function(){return i}});var l=r(5853),o=r(97324),n=r(1153),t=r(2265),a=r(9496);let c=(0,n.fn)("Col"),i=t.forwardRef((e,s)=>{let{numColSpan:r=1,numColSpanSm:n,numColSpanMd:i,numColSpanLg:d,children:m,className:u}=e,g=(0,l._T)(e,["numColSpan","numColSpanSm","numColSpanMd","numColSpanLg","children","className"]),p=(e,s)=>e&&Object.keys(s).includes(String(e))?s[e]:"";return t.createElement("div",Object.assign({ref:s,className:(0,o.q)(c("root"),(()=>{let e=p(r,a.PT),s=p(n,a.SP),l=p(i,a.VS),t=p(d,a._w);return(0,o.q)(e,s,l,t)})(),u)},g),m)});i.displayName="Col"},67101:function(e,s,r){"use strict";r.d(s,{Z:function(){return d}});var l=r(5853),o=r(97324),n=r(1153),t=r(2265),a=r(9496);let c=(0,n.fn)("Grid"),i=(e,s)=>e&&Object.keys(s).includes(String(e))?s[e]:"",d=t.forwardRef((e,s)=>{let{numItems:r=1,numItemsSm:n,numItemsMd:d,numItemsLg:m,children:u,className:g}=e,p=(0,l._T)(e,["numItems","numItemsSm","numItemsMd","numItemsLg","children","className"]),f=i(r,a._m),h=i(n,a.LH),b=i(d,a.l5),w=i(m,a.N4),x=(0,o.q)(f,h,b,w);return t.createElement("div",Object.assign({ref:s,className:(0,o.q)(c("root"),"grid",x,g)},p),u)});d.displayName="Grid"},9496:function(e,s,r){"use strict";r.d(s,{LH:function(){return o},N4:function(){return t},PT:function(){return a},SP:function(){return c},VS:function(){return i},_m:function(){return l},_w:function(){return d},l5:function(){return n}});let l={0:"grid-cols-none",1:"grid-cols-1",2:"grid-cols-2",3:"grid-cols-3",4:"grid-cols-4",5:"grid-cols-5",6:"grid-cols-6",7:"grid-cols-7",8:"grid-cols-8",9:"grid-cols-9",10:"grid-cols-10",11:"grid-cols-11",12:"grid-cols-12"},o={0:"sm:grid-cols-none",1:"sm:grid-cols-1",2:"sm:grid-cols-2",3:"sm:grid-cols-3",4:"sm:grid-cols-4",5:"sm:grid-cols-5",6:"sm:grid-cols-6",7:"sm:grid-cols-7",8:"sm:grid-cols-8",9:"sm:grid-cols-9",10:"sm:grid-cols-10",11:"sm:grid-cols-11",12:"sm:grid-cols-12"},n={0:"md:grid-cols-none",1:"md:grid-cols-1",2:"md:grid-cols-2",3:"md:grid-cols-3",4:"md:grid-cols-4",5:"md:grid-cols-5",6:"md:grid-cols-6",7:"md:grid-cols-7",8:"md:grid-cols-8",9:"md:grid-cols-9",10:"md:grid-cols-10",11:"md:grid-cols-11",12:"md:grid-cols-12"},t={0:"lg:grid-cols-none",1:"lg:grid-cols-1",2:"lg:grid-cols-2",3:"lg:grid-cols-3",4:"lg:grid-cols-4",5:"lg:grid-cols-5",6:"lg:grid-cols-6",7:"lg:grid-cols-7",8:"lg:grid-cols-8",9:"lg:grid-cols-9",10:"lg:grid-cols-10",11:"lg:grid-cols-11",12:"lg:grid-cols-12"},a={1:"col-span-1",2:"col-span-2",3:"col-span-3",4:"col-span-4",5:"col-span-5",6:"col-span-6",7:"col-span-7",8:"col-span-8",9:"col-span-9",10:"col-span-10",11:"col-span-11",12:"col-span-12",13:"col-span-13"},c={1:"sm:col-span-1",2:"sm:col-span-2",3:"sm:col-span-3",4:"sm:col-span-4",5:"sm:col-span-5",6:"sm:col-span-6",7:"sm:col-span-7",8:"sm:col-span-8",9:"sm:col-span-9",10:"sm:col-span-10",11:"sm:col-span-11",12:"sm:col-span-12",13:"sm:col-span-13"},i={1:"md:col-span-1",2:"md:col-span-2",3:"md:col-span-3",4:"md:col-span-4",5:"md:col-span-5",6:"md:col-span-6",7:"md:col-span-7",8:"md:col-span-8",9:"md:col-span-9",10:"md:col-span-10",11:"md:col-span-11",12:"md:col-span-12",13:"md:col-span-13"},d={1:"lg:col-span-1",2:"lg:col-span-2",3:"lg:col-span-3",4:"lg:col-span-4",5:"lg:col-span-5",6:"lg:col-span-6",7:"lg:col-span-7",8:"lg:col-span-8",9:"lg:col-span-9",10:"lg:col-span-10",11:"lg:col-span-11",12:"lg:col-span-12",13:"lg:col-span-13"}},94789:function(e,s,r){"use strict";r.d(s,{Z:function(){return i}});var l=r(5853),o=r(2265),n=r(26898),t=r(97324),a=r(1153);let c=(0,a.fn)("Callout"),i=o.forwardRef((e,s)=>{let{title:r,icon:i,color:d,className:m,children:u}=e,g=(0,l._T)(e,["title","icon","color","className","children"]);return o.createElement("div",Object.assign({ref:s,className:(0,t.q)(c("root"),"flex flex-col overflow-hidden rounded-tremor-default text-tremor-default border-l-4 py-3 pr-3 pl-4",d?(0,t.q)((0,a.bM)(d,n.K.background).bgColor,(0,a.bM)(d,n.K.darkBorder).borderColor,(0,a.bM)(d,n.K.darkText).textColor,"dark:bg-opacity-10 bg-opacity-10"):(0,t.q)("bg-tremor-brand-faint border-tremor-brand-emphasis text-tremor-brand-emphasis","dark:bg-dark-tremor-brand-muted/70 dark:border-dark-tremor-brand-emphasis dark:text-dark-tremor-brand-emphasis"),m)},g),o.createElement("div",{className:(0,t.q)(c("header"),"flex items-start")},i?o.createElement(i,{className:(0,t.q)(c("icon"),"flex-none h-5 w-5 mr-1.5")}):null,o.createElement("h4",{className:(0,t.q)(c("title"),"font-semibold")},r)),o.createElement("p",{className:(0,t.q)(c("body"),"overflow-y-auto",u?"mt-2":"")},u))});i.displayName="Callout"},12011:function(e,s,r){"use strict";r.r(s),r.d(s,{default:function(){return k}});var l=r(57437),o=r(2265),n=r(99376),t=r(20831),a=r(94789),c=r(12514),i=r(49804),d=r(67101),m=r(84264),u=r(49566),g=r(96761),p=r(84566),f=r(19250),h=r(14474),b=r(13634),w=r(73002),x=r(3914);function k(){let[e]=b.Z.useForm(),s=(0,n.useSearchParams)();(0,x.e)("token");let r=s.get("invitation_id"),k=s.get("action"),[S,N]=(0,o.useState)(null),[y,_]=(0,o.useState)(""),[j,v]=(0,o.useState)(""),[C,Z]=(0,o.useState)(null),[E,I]=(0,o.useState)(""),[q,O]=(0,o.useState)(""),[P,T]=(0,o.useState)(!0);return(0,o.useEffect)(()=>{(0,f.getUiConfig)().then(e=>{console.log("ui config in onboarding.tsx:",e),T(!1)})},[]),(0,o.useEffect)(()=>{r&&!P&&(0,f.getOnboardingCredentials)(r).then(e=>{let s=e.login_url;console.log("login_url:",s),I(s);let r=e.token,l=(0,h.o)(r);O(r),console.log("decoded:",l),N(l.key),console.log("decoded user email:",l.user_email),v(l.user_email),Z(l.user_id)})},[r,P]),(0,l.jsx)("div",{className:"mx-auto w-full max-w-md mt-10",children:(0,l.jsxs)(c.Z,{children:[(0,l.jsx)(g.Z,{className:"text-sm mb-5 text-center",children:"\uD83D\uDE85 LiteLLM"}),(0,l.jsx)(g.Z,{className:"text-xl",children:"reset_password"===k?"Reset Password":"Sign up"}),(0,l.jsx)(m.Z,{children:"reset_password"===k?"Reset your password to access Admin UI.":"Claim your user account to login to Admin UI."}),"reset_password"!==k&&(0,l.jsx)(a.Z,{className:"mt-4",title:"SSO",icon:p.GH$,color:"sky",children:(0,l.jsxs)(d.Z,{numItems:2,className:"flex justify-between items-center",children:[(0,l.jsx)(i.Z,{children:"SSO is under the Enterprise Tier."}),(0,l.jsx)(i.Z,{children:(0,l.jsx)(t.Z,{variant:"primary",className:"mb-2",children:(0,l.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"Get Free Trial"})})})]})}),(0,l.jsxs)(b.Z,{className:"mt-10 mb-5 mx-auto",layout:"vertical",onFinish:e=>{console.log("in handle submit. accessToken:",S,"token:",q,"formValues:",e),S&&q&&(e.user_email=j,C&&r&&(0,f.claimOnboardingToken)(S,r,C,e.password).then(e=>{let s="/ui/";s+="?login=success",document.cookie="token="+q,console.log("redirecting to:",s);let r=(0,f.getProxyBaseUrl)();console.log("proxyBaseUrl:",r),r?window.location.href=r+s:window.location.href=s}))},children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(b.Z.Item,{label:"Email Address",name:"user_email",children:(0,l.jsx)(u.Z,{type:"email",disabled:!0,value:j,defaultValue:j,className:"max-w-md"})}),(0,l.jsx)(b.Z.Item,{label:"Password",name:"password",rules:[{required:!0,message:"password required to sign up"}],help:"reset_password"===k?"Enter your new password":"Create a password for your account",children:(0,l.jsx)(u.Z,{placeholder:"",type:"password",className:"max-w-md"})})]}),(0,l.jsx)("div",{className:"mt-10",children:(0,l.jsx)(w.ZP,{htmlType:"submit",children:"reset_password"===k?"Reset Password":"Sign Up"})})]})]})})}},14474:function(e,s,r){"use strict";r.d(s,{o:function(){return o}});class l extends Error{}function o(e,s){let r;if("string"!=typeof e)throw new l("Invalid token specified: must be a string");s||(s={});let o=!0===s.header?0:1,n=e.split(".")[o];if("string"!=typeof n)throw new l(`Invalid token specified: missing part #${o+1}`);try{r=function(e){let s=e.replace(/-/g,"+").replace(/_/g,"/");switch(s.length%4){case 0:break;case 2:s+="==";break;case 3:s+="=";break;default:throw Error("base64 string is not of the correct length")}try{var r;return r=s,decodeURIComponent(atob(r).replace(/(.)/g,(e,s)=>{let r=s.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}))}catch(e){return atob(s)}}(n)}catch(e){throw new l(`Invalid token specified: invalid base64 for part #${o+1} (${e.message})`)}try{return JSON.parse(r)}catch(e){throw new l(`Invalid token specified: invalid json for part #${o+1} (${e.message})`)}}l.prototype.name="InvalidTokenError"}},function(e){e.O(0,[665,50,49,971,117,744],function(){return e(e.s=2532)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/page-570a9fabe3b6be98.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/page-570a9fabe3b6be98.js new file mode 100644 index 00000000000..eaf344a4aba --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/page-570a9fabe3b6be98.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{31283:function(e,s,t){Promise.resolve().then(t.bind(t,98412))},12011:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return y}});var l=t(57437),a=t(2265),r=t(99376),i=t(20831),n=t(94789),o=t(12514),c=t(49804),d=t(67101),m=t(84264),u=t(49566),x=t(96761),h=t(84566),p=t(19250),g=t(14474),j=t(13634),f=t(73002),v=t(3914);function y(){let[e]=j.Z.useForm(),s=(0,r.useSearchParams)();(0,v.e)("token");let t=s.get("invitation_id"),y=s.get("action"),[b,_]=(0,a.useState)(null),[N,Z]=(0,a.useState)(""),[w,k]=(0,a.useState)(""),[S,C]=(0,a.useState)(null),[I,A]=(0,a.useState)(""),[T,E]=(0,a.useState)(""),[P,L]=(0,a.useState)(!0);return(0,a.useEffect)(()=>{(0,p.getUiConfig)().then(e=>{console.log("ui config in onboarding.tsx:",e),L(!1)})},[]),(0,a.useEffect)(()=>{t&&!P&&(0,p.getOnboardingCredentials)(t).then(e=>{let s=e.login_url;console.log("login_url:",s),A(s);let t=e.token,l=(0,g.o)(t);E(t),console.log("decoded:",l),_(l.key),console.log("decoded user email:",l.user_email),k(l.user_email),C(l.user_id)})},[t,P]),(0,l.jsx)("div",{className:"mx-auto w-full max-w-md mt-10",children:(0,l.jsxs)(o.Z,{children:[(0,l.jsx)(x.Z,{className:"text-sm mb-5 text-center",children:"\uD83D\uDE85 LiteLLM"}),(0,l.jsx)(x.Z,{className:"text-xl",children:"reset_password"===y?"Reset Password":"Sign up"}),(0,l.jsx)(m.Z,{children:"reset_password"===y?"Reset your password to access Admin UI.":"Claim your user account to login to Admin UI."}),"reset_password"!==y&&(0,l.jsx)(n.Z,{className:"mt-4",title:"SSO",icon:h.GH$,color:"sky",children:(0,l.jsxs)(d.Z,{numItems:2,className:"flex justify-between items-center",children:[(0,l.jsx)(c.Z,{children:"SSO is under the Enterprise Tier."}),(0,l.jsx)(c.Z,{children:(0,l.jsx)(i.Z,{variant:"primary",className:"mb-2",children:(0,l.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"Get Free Trial"})})})]})}),(0,l.jsxs)(j.Z,{className:"mt-10 mb-5 mx-auto",layout:"vertical",onFinish:e=>{console.log("in handle submit. accessToken:",b,"token:",T,"formValues:",e),b&&T&&(e.user_email=w,S&&t&&(0,p.claimOnboardingToken)(b,t,S,e.password).then(e=>{let s="/ui/";s+="?login=success",document.cookie="token="+T,console.log("redirecting to:",s);let t=(0,p.getProxyBaseUrl)();console.log("proxyBaseUrl:",t),t?window.location.href=t+s:window.location.href=s}))},children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(j.Z.Item,{label:"Email Address",name:"user_email",children:(0,l.jsx)(u.Z,{type:"email",disabled:!0,value:w,defaultValue:w,className:"max-w-md"})}),(0,l.jsx)(j.Z.Item,{label:"Password",name:"password",rules:[{required:!0,message:"password required to sign up"}],help:"reset_password"===y?"Enter your new password":"Create a password for your account",children:(0,l.jsx)(u.Z,{placeholder:"",type:"password",className:"max-w-md"})})]}),(0,l.jsx)("div",{className:"mt-10",children:(0,l.jsx)(f.ZP,{htmlType:"submit",children:"reset_password"===y?"Reset Password":"Sign Up"})})]})]})})}},98412:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return oL}});var l,a,r,i,n,o,c=t(57437),d=t(2265),m=t(99376),u=t(14474),x=t(21623),h=t(29827),p=t(65373),g=t(69734),j=t(19250);let f=async(e,s,t,l,a)=>{let r;r="Admin"!=t&&"Admin Viewer"!=t?await (0,j.teamListCall)(e,(null==l?void 0:l.organization_id)||null,s):await (0,j.teamListCall)(e,(null==l?void 0:l.organization_id)||null),console.log("givenTeams: ".concat(r)),a(r)};var v=t(49804),y=t(67101),b=t(20831),_=t(49566),N=t(87452),Z=t(88829),w=t(72208),k=t(84264),S=t(96761),C=t(29233),I=t(52787),A=t(13634),T=t(82680),E=t(29967),P=t(73002),L=t(64482),M=t(30150),O=e=>{let{step:s=.01,style:t={width:"100%"},placeholder:l="Enter a numerical value",min:a,max:r,onChange:i,...n}=e;return(0,c.jsx)(M.Z,{onWheel:e=>e.currentTarget.blur(),step:s,style:t,placeholder:l,min:a,max:r,onChange:i,...n})};let D=async(e,s,t)=>{try{if(null===e||null===s)return;if(null!==t){let l=(await (0,j.modelAvailableCall)(t,e,s,!0,null,!0)).data.map(e=>e.id),a=[],r=[];return l.forEach(e=>{e.endsWith("/*")?a.push(e):r.push(e)}),[...a,...r]}}catch(e){console.error("Error fetching user models:",e)}},F=e=>{if(e.endsWith("/*")){let s=e.replace("/*","");return"All ".concat(s," models")}return e},R=(e,s)=>{let t=[],l=[];return console.log("teamModels",e),console.log("allModels",s),e.forEach(e=>{if(e.endsWith("/*")){let a=e.replace("/*",""),r=s.filter(e=>e.startsWith(a+"/"));l.push(...r),t.push(e)}else l.push(e)}),[...t,...l].filter((e,s,t)=>t.indexOf(e)===s)};var z=t(63610),U=e=>{let{onChange:s,value:t,className:l,accessToken:a,placeholder:r="Select vector stores",disabled:i=!1}=e,[n,o]=(0,d.useState)([]),[m,u]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{(async()=>{if(a){u(!0);try{let e=await (0,j.vectorStoreListCall)(a);e.data&&o(e.data)}catch(e){console.error("Error fetching vector stores:",e)}finally{u(!1)}}})()},[a]),(0,c.jsx)("div",{children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:r,onChange:s,value:t,loading:m,className:l,options:n.map(e=>({label:"".concat(e.vector_store_name||e.vector_store_id," (").concat(e.vector_store_id,")"),value:e.vector_store_id,title:e.vector_store_description||e.vector_store_id})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"},disabled:i})})},q=e=>{let{teams:s,value:t,onChange:l,disabled:a}=e;return console.log("disabled",a),(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Search or select a team",value:t,onChange:l,disabled:a,filterOption:(e,t)=>{if(!t)return!1;let l=null==s?void 0:s.find(e=>e.team_id===t.key);if(!l)return!1;let a=e.toLowerCase().trim(),r=(l.team_alias||"").toLowerCase(),i=(l.team_id||"").toLowerCase();return r.includes(a)||i.includes(a)},optionFilterProp:"children",children:null==s?void 0:s.map(e=>(0,c.jsxs)(I.default.Option,{value:e.team_id,children:[(0,c.jsx)("span",{className:"font-medium",children:e.team_alias})," ",(0,c.jsxs)("span",{className:"text-gray-500",children:["(",e.team_id,")"]})]},e.team_id))})},V=t(15424),B=t(89970),K=t(23496),G=t(12514),H=t(91777),Y=t(82182),J=t(22452),W=t(74998);(l=i||(i={})).Braintrust="Braintrust",l.CustomCallbackAPI="Custom Callback API",l.Datadog="Datadog",l.Langfuse="Langfuse",l.LangfuseOtel="LangfuseOtel",l.LangSmith="LangSmith",l.Lago="Lago",l.OpenMeter="OpenMeter",l.OTel="Open Telemetry",l.S3="S3",l.Arize="Arize";let $={Braintrust:"braintrust",CustomCallbackAPI:"custom_callback_api",Datadog:"datadog",Langfuse:"langfuse",LangfuseOtel:"langfuse_otel",LangSmith:"langsmith",Lago:"lago",OpenMeter:"openmeter",OTel:"otel",S3:"s3",Arize:"arize"},Q=Object.fromEntries(Object.entries($).map(e=>{let[s,t]=e;return[t,s]})),X=e=>e.map(e=>Q[e]||e),ee=e=>e.map(e=>$[e]||e),es="/ui/assets/logos/",et={Langfuse:{logo:"".concat(es,"langfuse.png"),supports_key_team_logging:!0,dynamic_params:{langfuse_public_key:"text",langfuse_secret_key:"password",langfuse_host:"text"},description:"Langfuse v2 Logging Integration"},LangfuseOtel:{logo:"".concat(es,"langfuse.png"),supports_key_team_logging:!0,dynamic_params:{langfuse_public_key:"text",langfuse_secret_key:"password",langfuse_host:"text"},description:"Langfuse v3 OTEL Logging Integration"},Arize:{logo:"".concat(es,"arize.png"),supports_key_team_logging:!0,dynamic_params:{arize_api_key:"password",arize_space_id:"text"},description:"Arize Logging Integration"},LangSmith:{logo:"".concat(es,"langsmith.png"),supports_key_team_logging:!0,dynamic_params:{langsmith_api_key:"password",langsmith_project:"text",langsmith_base_url:"text",langsmith_sampling_rate:"number"},description:"Langsmith Logging Integration"},Braintrust:{logo:"".concat(es,"braintrust.png"),supports_key_team_logging:!1,dynamic_params:{},description:"Braintrust Logging Integration"},"Custom Callback API":{logo:"".concat(es,"custom.svg"),supports_key_team_logging:!0,dynamic_params:{},description:"Custom Callback API Logging Integration"},Datadog:{logo:"".concat(es,"datadog.png"),supports_key_team_logging:!1,dynamic_params:{},description:"Datadog Logging Integration"},Lago:{logo:"".concat(es,"lago.svg"),supports_key_team_logging:!1,dynamic_params:{},description:"Lago Billing Logging Integration"},OpenMeter:{logo:"".concat(es,"openmeter.png"),supports_key_team_logging:!1,dynamic_params:{},description:"OpenMeter Logging Integration"},"Open Telemetry":{logo:"".concat(es,"otel.png"),supports_key_team_logging:!1,dynamic_params:{},description:"OpenTelemetry Logging Integration"},S3:{logo:"".concat(es,"aws.svg"),supports_key_team_logging:!1,dynamic_params:{},description:"S3 Bucket (AWS) Logging Integration"}},{Option:el}=I.default;var ea=e=>{let{value:s=[],onChange:t,disabledCallbacks:l=[],onDisabledCallbacksChange:a}=e,r=Object.entries(et).filter(e=>{let[s,t]=e;return t.supports_key_team_logging}).map(e=>{let[s,t]=e;return s}),i=Object.keys(et),n=e=>{null==t||t(e)},o=e=>{n(s.filter((s,t)=>t!==e))},d=(e,t,l)=>{let a=[...s];if("callback_name"===t){let s=$[l]||l;a[e]={...a[e],[t]:s,callback_vars:{}}}else a[e]={...a[e],[t]:l};n(a)},m=(e,t,l)=>{let a=[...s];a[e]={...a[e],callback_vars:{...a[e].callback_vars,[t]:l}},n(a)},u=(e,s)=>{var t,l;if(!e.callback_name)return null;let a=null===(t=Object.entries($).find(s=>{let[t,l]=s;return l===e.callback_name}))||void 0===t?void 0:t[0];if(!a)return null;let r=(null===(l=et[a])||void 0===l?void 0:l.dynamic_params)||{};return 0===Object.keys(r).length?null:(0,c.jsxs)("div",{className:"mt-6 pt-4 border-t border-gray-100",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2 mb-4",children:[(0,c.jsx)("div",{className:"w-3 h-3 bg-blue-100 rounded-full flex items-center justify-center",children:(0,c.jsx)("div",{className:"w-1.5 h-1.5 bg-blue-500 rounded-full"})}),(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Integration Parameters"})]}),(0,c.jsx)("div",{className:"grid grid-cols-1 gap-4",children:Object.entries(r).map(t=>{let[l,a]=t;return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 capitalize flex items-center space-x-1",children:[(0,c.jsx)("span",{children:l.replace(/_/g," ")}),(0,c.jsx)(B.Z,{title:"Environment variable reference recommended: os.environ/".concat(l.toUpperCase()),children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})}),"password"===a&&(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-yellow-100 text-yellow-800",children:"Sensitive"}),"number"===a&&(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-yellow-100 text-yellow-800",children:"Number"})]}),"number"===a&&(0,c.jsx)("span",{className:"text-xs text-gray-500",children:"Value must be between 0 and 1"}),"number"===a?(0,c.jsx)(O,{step:.01,width:400,placeholder:"os.environ/".concat(l.toUpperCase()),value:e.callback_vars[l]||"",onChange:e=>m(s,l,e.target.value)}):(0,c.jsx)(_.Z,{type:"password"===a?"password":"text",placeholder:"os.environ/".concat(l.toUpperCase()),value:e.callback_vars[l]||"",onChange:e=>m(s,l,e.target.value)})]},l)})})]})};return(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)(H.Z,{className:"w-5 h-5 text-red-500"}),(0,c.jsx)("span",{className:"text-base font-semibold text-gray-800",children:"Disabled Callbacks"}),(0,c.jsx)(B.Z,{title:"Select callbacks to disable for this key. Disabled callbacks will not receive any logging data.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help"})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Disabled Callbacks"}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select callbacks to disable",value:l,onChange:e=>{let s=ee(e);null==a||a(s)},style:{width:"100%"},optionLabelProp:"label",children:i.map(e=>{var s,t;let l=null===(s=et[e])||void 0===s?void 0:s.logo,a=null===(t=et[e])||void 0===t?void 0:t.description;return(0,c.jsx)(el,{value:e,label:e,children:(0,c.jsx)(B.Z,{title:a,placement:"right",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[l&&(0,c.jsx)("img",{src:l,alt:e,className:"w-4 h-4 object-contain",onError:s=>{let t=s.target,l=t.parentElement;if(l){let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=e.charAt(0),l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e})]})})},e)})}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"Select callbacks that should be disabled for this key. These callbacks will not receive any logging data."})]})]}),(0,c.jsx)(K.Z,{}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)(Y.Z,{className:"w-5 h-5 text-blue-500"}),(0,c.jsx)("span",{className:"text-base font-semibold text-gray-800",children:"Logging Integrations"}),(0,c.jsx)(B.Z,{title:"Configure callback logging integrations for this team.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help"})})]}),(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{n([...s,{callback_name:"",callback_type:"success",callback_vars:{}}])},icon:J.Z,size:"sm",className:"hover:border-blue-400 hover:text-blue-500",type:"button",children:"Add Integration"})]}),(0,c.jsx)("div",{className:"space-y-4",children:s.map((e,s)=>{var t,l;let a=e.callback_name?null===(t=Object.entries($).find(s=>{let[t,l]=s;return l===e.callback_name}))||void 0===t?void 0:t[0]:void 0,i=a?null===(l=et[a])||void 0===l?void 0:l.logo:null;return(0,c.jsxs)(G.Z,{className:"border border-gray-200 shadow-sm hover:shadow-md transition-shadow duration-200",decoration:"top",decorationColor:"blue",children:[(0,c.jsxs)("div",{className:"flex justify-between items-start mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[i&&(0,c.jsx)("img",{src:i,alt:a,className:"w-5 h-5 object-contain"}),(0,c.jsxs)("span",{className:"text-sm font-medium",children:[a||"New Integration"," Configuration"]})]}),(0,c.jsx)(b.Z,{variant:"light",onClick:()=>o(s),icon:W.Z,size:"xs",color:"red",className:"hover:bg-red-50",type:"button",children:"Remove"})]}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Integration Type"}),(0,c.jsx)(I.default,{value:a,placeholder:"Select integration",onChange:e=>d(s,"callback_name",e),className:"w-full",optionLabelProp:"label",children:r.map(e=>{var s,t;let l=null===(s=et[e])||void 0===s?void 0:s.logo,a=null===(t=et[e])||void 0===t?void 0:t.description;return(0,c.jsx)(el,{value:e,label:e,children:(0,c.jsx)(B.Z,{title:a,placement:"right",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[l&&(0,c.jsx)("img",{src:l,alt:e,className:"w-4 h-4 object-contain",onError:s=>{let t=s.target,l=t.parentElement;if(l){let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=e.charAt(0),l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e})]})})},e)})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Event Type"}),(0,c.jsxs)(I.default,{value:e.callback_type,onChange:e=>d(s,"callback_type",e),className:"w-full",children:[(0,c.jsx)(el,{value:"success",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{children:"Success Only"})]})}),(0,c.jsx)(el,{value:"failure",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-red-500 rounded-full"}),(0,c.jsx)("span",{children:"Failure Only"})]})}),(0,c.jsx)(el,{value:"success_and_failure",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{children:"Success & Failure"})]})})]})]})]}),u(e,s)]})]},s)})}),0===s.length&&(0,c.jsxs)("div",{className:"text-center py-12 text-gray-500 border-2 border-dashed border-gray-200 rounded-lg bg-gray-50/50",children:[(0,c.jsx)(Y.Z,{className:"w-12 h-12 text-gray-300 mb-3 mx-auto"}),(0,c.jsx)("div",{className:"text-base font-medium mb-1",children:"No logging integrations configured"}),(0,c.jsx)("div",{className:"text-sm text-gray-400",children:'Click "Add Integration" to configure logging for this team'})]})]})},er=function(e){let{value:s,onChange:t,premiumUser:l=!1,disabledCallbacks:a=[],onDisabledCallbacksChange:r}=e;return l?(0,c.jsx)(ea,{value:s,onChange:t,disabledCallbacks:a,onDisabledCallbacksChange:r}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex flex-wrap gap-2 mb-3",children:[(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-green-50 border border-green-200 text-green-800 text-sm font-medium opacity-50",children:"✨ langfuse-logging"}),(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-green-50 border border-green-200 text-green-800 text-sm font-medium opacity-50",children:"✨ datadog-logging"})]}),(0,c.jsx)("div",{className:"p-3 bg-yellow-50 border border-yellow-200 rounded-lg",children:(0,c.jsxs)(k.Z,{className:"text-sm text-yellow-800",children:["Setting Key/Team logging settings is a LiteLLM Enterprise feature. Global Logging Settings are available for all free users. Get a trial key"," ",(0,c.jsx)("a",{href:"https://www.litellm.ai/#pricing",target:"_blank",rel:"noopener noreferrer",className:"underline",children:"here"}),"."]})})]})},ei=t(57365),en=t(93192),eo=t(9114);function ec(e){let{isInvitationLinkModalVisible:s,setIsInvitationLinkModalVisible:t,baseUrl:l,invitationLinkData:a,modalType:r="invitation"}=e,{Title:i,Paragraph:n}=en.default,o=()=>{if(!l)return"";let e=new URL(l).pathname,s=e&&"/"!==e?"".concat(e,"/ui"):"ui";if(null==a?void 0:a.has_user_setup_sso)return new URL(s,l).toString();let t="".concat(s,"?invitation_id=").concat(null==a?void 0:a.id);return"resetPassword"===r&&(t+="&action=reset_password"),new URL(t,l).toString()};return(0,c.jsxs)(T.Z,{title:"invitation"===r?"Invitation Link":"Reset Password Link",visible:s,width:800,footer:null,onOk:()=>{t(!1)},onCancel:()=>{t(!1)},children:[(0,c.jsx)(n,{children:"invitation"===r?"Copy and send the generated link to onboard this user to the proxy.":"Copy and send the generated link to the user to reset their password."}),(0,c.jsxs)("div",{className:"flex justify-between pt-5 pb-2",children:[(0,c.jsx)(k.Z,{className:"text-base",children:"User ID"}),(0,c.jsx)(k.Z,{children:null==a?void 0:a.user_id})]}),(0,c.jsxs)("div",{className:"flex justify-between pt-5 pb-2",children:[(0,c.jsx)(k.Z,{children:"invitation"===r?"Invitation Link":"Reset Password Link"}),(0,c.jsx)(k.Z,{children:(0,c.jsx)(k.Z,{children:o()})})]}),(0,c.jsx)("div",{className:"flex justify-end mt-5",children:(0,c.jsx)(C.CopyToClipboard,{text:o(),onCopy:()=>eo.Z.success("Copied!"),children:(0,c.jsx)(b.Z,{variant:"primary",children:"invitation"===r?"Copy invitation link":"Copy password reset link"})})})]})}var ed=t(65319),em=t(72188),eu=t(73879),ex=t(34310),eh=t(38434),ep=t(26349),eg=t(35291),ej=t(3632),ef=t(15452),ev=t.n(ef),ey=t(71157),eb=t(44643),e_=t(88532),eN=e=>{let{accessToken:s,teams:t,possibleUIRoles:l,onUsersCreated:a}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)([]),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(null),[y,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)(null),[w,S]=(0,d.useState)("http://localhost:4000");(0,d.useEffect)(()=>{(async()=>{try{let e=await (0,j.getProxyUISettings)(s);Z(e)}catch(e){console.error("Error fetching UI settings:",e)}})(),S(new URL("/",window.location.href).toString())},[s]);let I=async()=>{u(!0);let e=n.map(e=>({...e,status:"pending"}));o(e);let t=!1;for(let a=0;ae.trim()).filter(Boolean),0===e.teams.length&&delete e.teams),n.models&&"string"==typeof n.models&&""!==n.models.trim()&&(e.models=n.models.split(",").map(e=>e.trim()).filter(Boolean),0===e.models.length&&delete e.models),n.max_budget&&""!==n.max_budget.toString().trim()){let s=parseFloat(n.max_budget.toString());!isNaN(s)&&s>0&&(e.max_budget=s)}n.budget_duration&&""!==n.budget_duration.trim()&&(e.budget_duration=n.budget_duration.trim()),n.metadata&&"string"==typeof n.metadata&&""!==n.metadata.trim()&&(e.metadata=n.metadata.trim()),console.log("Sending user data:",e);let r=await (0,j.userCreateCall)(s,null,e);if(console.log("Full response:",r),r&&(r.key||r.user_id)){t=!0,console.log("Success case triggered");let e=(null===(l=r.data)||void 0===l?void 0:l.user_id)||r.user_id;try{if(null==N?void 0:N.SSO_ENABLED){let e=new URL("/ui",w).toString();o(s=>s.map((s,t)=>t===a?{...s,status:"success",key:r.key||r.user_id,invitation_link:e}:s))}else{let t=await (0,j.invitationCreateCall)(s,e),l=new URL("/ui?invitation_id=".concat(t.id),w).toString();o(e=>e.map((e,s)=>s===a?{...e,status:"success",key:r.key||r.user_id,invitation_link:l}:e))}}catch(e){console.error("Error creating invitation:",e),o(e=>e.map((e,s)=>s===a?{...e,status:"success",key:r.key||r.user_id,error:"User created but failed to generate invitation link"}:e))}}else{console.log("Error case triggered");let e=(null==r?void 0:r.error)||"Failed to create user";console.log("Error message:",e),o(s=>s.map((s,t)=>t===a?{...s,status:"failed",error:e}:s))}}catch(s){console.error("Caught error:",s);let e=(null==s?void 0:null===(i=s.response)||void 0===i?void 0:null===(r=i.data)||void 0===r?void 0:r.error)||(null==s?void 0:s.message)||String(s);o(s=>s.map((s,t)=>t===a?{...s,status:"failed",error:e}:s))}}u(!1),t&&a&&a()};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(b.Z,{className:"mb-0",onClick:()=>i(!0),children:"+ Bulk Invite Users"}),(0,c.jsx)(T.Z,{title:"Bulk Invite Users",visible:r,width:800,onCancel:()=>i(!1),bodyStyle:{maxHeight:"70vh",overflow:"auto"},footer:null,children:(0,c.jsx)("div",{className:"flex flex-col",children:0===n.length?(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsxs)("div",{className:"flex items-center mb-4",children:[(0,c.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center mr-3",children:"1"}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Download and fill the template"})]}),(0,c.jsxs)("div",{className:"ml-11 mb-6",children:[(0,c.jsx)("p",{className:"mb-4",children:"Add multiple users at once by following these steps:"}),(0,c.jsxs)("ol",{className:"list-decimal list-inside space-y-2 ml-2 mb-4",children:[(0,c.jsx)("li",{children:"Download our CSV template"}),(0,c.jsx)("li",{children:"Add your users' information to the spreadsheet"}),(0,c.jsx)("li",{children:"Save the file and upload it here"}),(0,c.jsx)("li",{children:"After creation, download the results file containing the API keys for each user"})]}),(0,c.jsxs)("div",{className:"bg-gray-50 p-4 rounded-md border border-gray-200 mb-4",children:[(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Template Column Names"}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-red-500 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"user_email"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:"User's email address (required)"})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-red-500 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"user_role"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'User\'s role (one of: "proxy_admin", "proxy_admin_view_only", "internal_user", "internal_user_view_only")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"teams"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Comma-separated team IDs (e.g., "team-1,team-2")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"max_budget"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Maximum budget as a number (e.g., "100")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"budget_duration"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Budget reset period (e.g., "30d", "1mo")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"models"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Comma-separated allowed models (e.g., "gpt-3.5-turbo,gpt-4")'})]})]})]})]}),(0,c.jsxs)(b.Z,{onClick:()=>{let e=new Blob([ev().unparse([["user_email","user_role","teams","max_budget","budget_duration","models"],["user@example.com","internal_user","team-id-1,team-id-2","100","30d","gpt-3.5-turbo,gpt-4"]])],{type:"text/csv"}),s=window.URL.createObjectURL(e),t=document.createElement("a");t.href=s,t.download="bulk_users_template.csv",document.body.appendChild(t),t.click(),document.body.removeChild(t),window.URL.revokeObjectURL(s)},size:"lg",className:"w-full md:w-auto",children:[(0,c.jsx)(eu.Z,{className:"mr-2"})," Download CSV Template"]})]}),(0,c.jsxs)("div",{className:"flex items-center mb-4",children:[(0,c.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center mr-3",children:"2"}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Upload your completed CSV"})]}),(0,c.jsxs)("div",{className:"ml-11",children:[y?(0,c.jsxs)("div",{className:"mb-4 p-4 rounded-md border ".concat(f?"bg-red-50 border-red-200":"bg-blue-50 border-blue-200"),children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center",children:[f?(0,c.jsx)(ex.Z,{className:"text-red-500 text-xl mr-3"}):(0,c.jsx)(eh.Z,{className:"text-blue-500 text-xl mr-3"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(en.default.Text,{strong:!0,className:f?"text-red-800":"text-blue-800",children:y.name}),(0,c.jsxs)(en.default.Text,{className:"block text-xs ".concat(f?"text-red-600":"text-blue-600"),children:[(y.size/1024).toFixed(1)," KB • ",new Date().toLocaleDateString()]})]})]}),(0,c.jsxs)(b.Z,{size:"xs",variant:"secondary",onClick:()=>{_(null),o([]),h(null),g(null),v(null)},className:"flex items-center",children:[(0,c.jsx)(ep.Z,{className:"mr-1"})," Remove"]})]}),f?(0,c.jsxs)("div",{className:"mt-3 text-red-600 text-sm flex items-start",children:[(0,c.jsx)(eg.Z,{className:"mr-2 mt-0.5"}),(0,c.jsx)("span",{children:f})]}):!p&&(0,c.jsxs)("div",{className:"mt-3 flex items-center",children:[(0,c.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-1.5",children:(0,c.jsx)("div",{className:"bg-blue-500 h-1.5 rounded-full w-full animate-pulse"})}),(0,c.jsx)("span",{className:"ml-2 text-xs text-blue-600",children:"Processing..."})]})]}):(0,c.jsx)(ed.default,{beforeUpload:e=>((h(null),g(null),v(null),_(e),"text/csv"===e.type||e.name.endsWith(".csv"))?e.size>5242880?v("File is too large (".concat((e.size/1048576).toFixed(1)," MB). Please upload a CSV file smaller than 5MB.")):ev().parse(e,{complete:e=>{if(!e.data||0===e.data.length){g("The CSV file appears to be empty. Please upload a file with data."),o([]);return}if(1===e.data.length){g("The CSV file only contains headers but no user data. Please add user data to your CSV."),o([]);return}let s=e.data[0];if(0===s.length||1===s.length&&""===s[0]){g("The CSV file doesn't contain any column headers. Please make sure your CSV has headers."),o([]);return}let l=["user_email","user_role"].filter(e=>!s.includes(e));if(l.length>0){g("Your CSV is missing these required columns: ".concat(l.join(", "),". Please add these columns to your CSV file.")),o([]);return}try{let l=e.data.slice(1).map((e,l)=>{var a,r,i,n,o,c;if(0===e.length||1===e.length&&""===e[0])return null;if(e.length=parseFloat(d.max_budget.toString())&&m.push("Max budget must be greater than 0")),d.budget_duration&&!d.budget_duration.match(/^\d+[dhmwy]$|^\d+mo$/)&&m.push('Invalid budget duration format "'.concat(d.budget_duration,'". Use format like "30d", "1mo", "2w", "6h"')),d.teams&&"string"==typeof d.teams&&t&&t.length>0){let e=t.map(e=>e.team_id),s=d.teams.split(",").map(e=>e.trim()).filter(s=>!e.includes(s));s.length>0&&m.push("Unknown team(s): ".concat(s.join(", ")))}return m.length>0&&(d.isValid=!1,d.error=m.join(", ")),d}).filter(Boolean),a=l.filter(e=>e.isValid);o(l),0===l.length?g("No valid data rows found in the CSV file. Please check your file format."):0===a.length?h("No valid users found in the CSV. Please check the errors below and fix your CSV file."):a.length{h("Failed to parse CSV file: ".concat(e.message)),o([])},header:!1}):(v("Invalid file type: ".concat(e.name,". Please upload a CSV file (.csv extension).")),eo.Z.fromBackend("Invalid file type. Please upload a CSV file.")),!1),accept:".csv",maxCount:1,showUploadList:!1,children:(0,c.jsxs)("div",{className:"border-2 border-dashed border-gray-300 rounded-lg p-8 text-center hover:border-blue-500 transition-colors cursor-pointer",children:[(0,c.jsx)(ej.Z,{className:"text-3xl text-gray-400 mb-2"}),(0,c.jsx)("p",{className:"mb-1",children:"Drag and drop your CSV file here"}),(0,c.jsx)("p",{className:"text-sm text-gray-500 mb-3",children:"or"}),(0,c.jsx)(b.Z,{size:"sm",children:"Browse files"}),(0,c.jsx)("p",{className:"text-xs text-gray-500 mt-4",children:"Only CSV files (.csv) are supported"})]})}),p&&(0,c.jsx)("div",{className:"mb-4 p-4 bg-yellow-50 border border-yellow-200 rounded-md",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)(e_.Z,{className:"h-5 w-5 text-yellow-500 mr-2 mt-0.5"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(en.default.Text,{strong:!0,className:"text-yellow-800",children:"CSV Structure Error"}),(0,c.jsx)(en.default.Paragraph,{className:"text-yellow-700 mt-1 mb-0",children:p}),(0,c.jsx)(en.default.Paragraph,{className:"text-yellow-700 mt-2 mb-0",children:"Please download our template and ensure your CSV follows the required format."})]})]})})]})]}):(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsxs)("div",{className:"flex items-center mb-4",children:[(0,c.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center mr-3",children:"3"}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:n.some(e=>"success"===e.status||"failed"===e.status)?"User Creation Results":"Review and create users"})]}),x&&(0,c.jsx)("div",{className:"ml-11 mb-4 p-4 bg-red-50 border border-red-200 rounded-md",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)(eg.Z,{className:"text-red-500 mr-2 mt-1"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:x}),n.some(e=>!e.isValid)&&(0,c.jsxs)("ul",{className:"mt-2 list-disc list-inside text-red-600 text-sm",children:[(0,c.jsx)("li",{children:"Check the table below for specific errors in each row"}),(0,c.jsx)("li",{children:"Common issues include invalid email formats, missing required fields, or incorrect role values"}),(0,c.jsx)("li",{children:"Fix these issues in your CSV file and upload again"})]})]})]})}),(0,c.jsxs)("div",{className:"ml-11",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-3",children:[(0,c.jsx)("div",{className:"flex items-center",children:n.some(e=>"success"===e.status||"failed"===e.status)?(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(k.Z,{className:"text-lg font-medium mr-3",children:"Creation Summary"}),(0,c.jsxs)(k.Z,{className:"text-sm bg-green-100 text-green-800 px-2 py-1 rounded mr-2",children:[n.filter(e=>"success"===e.status).length," Successful"]}),n.some(e=>"failed"===e.status)&&(0,c.jsxs)(k.Z,{className:"text-sm bg-red-100 text-red-800 px-2 py-1 rounded",children:[n.filter(e=>"failed"===e.status).length," Failed"]})]}):(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(k.Z,{className:"text-lg font-medium mr-3",children:"User Preview"}),(0,c.jsxs)(k.Z,{className:"text-sm bg-blue-100 text-blue-800 px-2 py-1 rounded",children:[n.filter(e=>e.isValid).length," of ",n.length," users valid"]})]})}),!n.some(e=>"success"===e.status||"failed"===e.status)&&(0,c.jsxs)("div",{className:"flex space-x-3",children:[(0,c.jsx)(b.Z,{onClick:()=>{o([]),h(null)},variant:"secondary",children:"Back"}),(0,c.jsx)(b.Z,{onClick:I,disabled:0===n.filter(e=>e.isValid).length||m,children:m?"Creating...":"Create ".concat(n.filter(e=>e.isValid).length," Users")})]})]}),n.some(e=>"success"===e.status)&&(0,c.jsx)("div",{className:"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-md",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"mr-3 mt-1",children:(0,c.jsx)(eb.Z,{className:"h-5 w-5 text-blue-500"})}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium text-blue-800",children:"User creation complete"}),(0,c.jsxs)(k.Z,{className:"block text-sm text-blue-700 mt-1",children:[(0,c.jsx)("span",{className:"font-medium",children:"Next step:"})," Download the credentials file containing API keys and invitation links. Users will need these API keys to make LLM requests through LiteLLM."]})]})]})}),(0,c.jsx)(em.Z,{dataSource:n,columns:[{title:"Row",dataIndex:"rowNumber",key:"rowNumber",width:80},{title:"Email",dataIndex:"user_email",key:"user_email"},{title:"Role",dataIndex:"user_role",key:"user_role"},{title:"Teams",dataIndex:"teams",key:"teams"},{title:"Budget",dataIndex:"max_budget",key:"max_budget"},{title:"Status",key:"status",render:(e,s)=>s.isValid?s.status&&"pending"!==s.status?"success"===s.status?(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(eb.Z,{className:"h-5 w-5 text-green-500 mr-2"}),(0,c.jsx)("span",{className:"text-green-500",children:"Success"})]}),s.invitation_link&&(0,c.jsx)("div",{className:"mt-1",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("span",{className:"text-xs text-gray-500 truncate max-w-[150px]",children:s.invitation_link}),(0,c.jsx)(C.CopyToClipboard,{text:s.invitation_link,onCopy:()=>eo.Z.success("Invitation link copied!"),children:(0,c.jsx)("button",{className:"ml-1 text-blue-500 text-xs hover:text-blue-700",children:"Copy"})})]})})]}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(ey.Z,{className:"h-5 w-5 text-red-500 mr-2"}),(0,c.jsx)("span",{className:"text-red-500",children:"Failed"})]}),s.error&&(0,c.jsx)("span",{className:"text-sm text-red-500 ml-7",children:JSON.stringify(s.error)})]}):(0,c.jsx)("span",{className:"text-gray-500",children:"Pending"}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(ey.Z,{className:"h-5 w-5 text-red-500 mr-2"}),(0,c.jsx)("span",{className:"text-red-500",children:"Invalid"})]}),s.error&&(0,c.jsx)("span",{className:"text-sm text-red-500 ml-7",children:s.error})]})}],size:"small",pagination:{pageSize:5},scroll:{y:300},rowClassName:e=>e.isValid?"":"bg-red-50"}),!n.some(e=>"success"===e.status||"failed"===e.status)&&(0,c.jsxs)("div",{className:"flex justify-end mt-4",children:[(0,c.jsx)(b.Z,{onClick:()=>{o([]),h(null)},variant:"secondary",className:"mr-3",children:"Back"}),(0,c.jsx)(b.Z,{onClick:I,disabled:0===n.filter(e=>e.isValid).length||m,children:m?"Creating...":"Create ".concat(n.filter(e=>e.isValid).length," Users")})]}),n.some(e=>"success"===e.status||"failed"===e.status)&&(0,c.jsxs)("div",{className:"flex justify-end mt-4",children:[(0,c.jsx)(b.Z,{onClick:()=>{o([]),h(null)},variant:"secondary",className:"mr-3",children:"Start New Bulk Import"}),(0,c.jsxs)(b.Z,{onClick:()=>{let e=n.map(e=>({user_email:e.user_email,user_role:e.user_role,status:e.status,key:e.key||"",invitation_link:e.invitation_link||"",error:e.error||""})),s=new Blob([ev().unparse(e)],{type:"text/csv"}),t=window.URL.createObjectURL(s),l=document.createElement("a");l.href=t,l.download="bulk_users_results.csv",document.body.appendChild(l),l.click(),document.body.removeChild(l),window.URL.revokeObjectURL(t)},variant:"primary",className:"flex items-center",children:[(0,c.jsx)(eu.Z,{className:"mr-2"})," Download User Credentials"]})]})]})]})})})]})};let{Option:eZ}=I.default,ew=()=>"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let s=16*Math.random()|0;return("x"==e?s:3&s|8).toString(16)});var ek=e=>{let{userID:s,accessToken:t,teams:l,possibleUIRoles:a,onUserCreated:r,isEmbedded:i=!1}=e,n=(0,h.NL)(),[o,m]=(0,d.useState)(null),[u]=A.Z.useForm(),[x,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)([]),[C,E]=(0,d.useState)(!1),[M,O]=(0,d.useState)(null),[D,R]=(0,d.useState)(null);(0,d.useEffect)(()=>{let e=async()=>{try{let e=await (0,j.modelAvailableCall)(t,s,"any"),l=[];for(let s=0;s{var l,a,c;try{eo.Z.info("Making API Call"),i||p(!0),e.models&&0!==e.models.length||"proxy_admin"===e.user_role||(console.log("formValues.user_role",e.user_role),e.models=["no-default-models"]),console.log("formValues in create user:",e);let a=await (0,j.userCreateCall)(t,null,e);await n.invalidateQueries({queryKey:["userList"]}),console.log("user create Response:",a),f(!0);let c=(null===(l=a.data)||void 0===l?void 0:l.user_id)||a.user_id;if(r&&i){r(c),u.resetFields();return}if(null==o?void 0:o.SSO_ENABLED){let e={id:ew(),user_id:c,is_accepted:!1,accepted_at:null,expires_at:new Date(Date.now()+6048e5),created_at:new Date,created_by:s,updated_at:new Date,updated_by:s,has_user_setup_sso:!0};O(e),E(!0)}else(0,j.invitationCreateCall)(t,c).then(e=>{e.has_user_setup_sso=!1,O(e),E(!0)});eo.Z.success("API user Created"),u.resetFields(),localStorage.removeItem("userData"+s)}catch(s){let e=(null===(c=s.response)||void 0===c?void 0:null===(a=c.data)||void 0===a?void 0:a.detail)||(null==s?void 0:s.message)||"Error creating the user";eo.Z.fromBackend(e),console.error("Error creating the user:",s)}};return i?(0,c.jsxs)(A.Z,{form:u,onFinish:z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"User Email",name:"user_email",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"User Role",name:"user_role",children:(0,c.jsx)(I.default,{children:a&&Object.entries(a).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:"Team ID",name:"team_id",children:(0,c.jsx)(I.default,{placeholder:"Select Team ID",style:{width:"100%"},children:l?l.map(e=>(0,c.jsx)(eZ,{value:e.team_id,children:e.team_alias},e.team_id)):(0,c.jsx)(eZ,{value:null,children:"Default Team"},"default")})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Create User"})})]}):(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{className:"mb-0",onClick:()=>p(!0),children:"+ Invite User"}),(0,c.jsx)(eN,{accessToken:t,teams:l,possibleUIRoles:a}),(0,c.jsxs)(T.Z,{title:"Invite User",visible:x,width:800,footer:null,onOk:()=>{p(!1),u.resetFields()},onCancel:()=>{p(!1),f(!1),u.resetFields()},children:[(0,c.jsx)(k.Z,{className:"mb-1",children:"Create a User who can own keys"}),(0,c.jsxs)(A.Z,{form:u,onFinish:z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"User Email",name:"user_email",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Global Proxy Role"," ",(0,c.jsx)(B.Z,{title:"This is the role that the user will globally on the proxy. This role is independent of any team/org specific roles.",children:(0,c.jsx)(V.Z,{})})]}),name:"user_role",children:(0,c.jsx)(I.default,{children:a&&Object.entries(a).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:"Team ID",className:"gap-2",name:"team_id",help:"If selected, user will be added as a 'user' role to the team.",children:(0,c.jsx)(I.default,{placeholder:"Select Team ID",style:{width:"100%"},children:l?l.map(e=>(0,c.jsx)(eZ,{value:e.team_id,children:e.team_alias},e.team_id)):(0,c.jsx)(eZ,{value:null,children:"Default Team"},"default")})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsxs)(N.Z,{children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)(S.Z,{children:"Personal Key Creation"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)(A.Z.Item,{className:"gap-2",label:(0,c.jsxs)("span",{children:["Models"," ",(0,c.jsx)(B.Z,{title:"Models user has access to, outside of team scope.",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",help:"Models user has access to, outside of team scope.",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),v.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})})})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Create User"})})]})]}),g&&(0,c.jsx)(ec,{isInvitationLinkModalVisible:C,setIsInvitationLinkModalVisible:E,baseUrl:D||"",invitationLinkData:M})]})},eS=t(7310),eC=t.n(eS),eI=t(20347);let{Option:eA}=I.default,eT=e=>e?({"24h":"daily","7d":"weekly","30d":"monthly"})[e]||e:"Not set";var eE=e=>{let{value:s,onChange:t,className:l="",style:a={}}=e;return(0,c.jsxs)(I.default,{style:{width:"100%",...a},value:s||void 0,onChange:t,className:l,placeholder:"n/a",children:[(0,c.jsx)(eA,{value:"24h",children:"daily"}),(0,c.jsx)(eA,{value:"7d",children:"weekly"}),(0,c.jsx)(eA,{value:"30d",children:"monthly"})]})};function eP(e,s){let t=structuredClone(e);for(let[e,l]of Object.entries(s))e in t&&(t[e]=l);return t}let eL=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return null==e?"-":e.toLocaleString("en-US",{minimumFractionDigits:s,maximumFractionDigits:s})},eM=async function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Copied to clipboard";if(!e)return!1;if(!navigator||!navigator.clipboard||!navigator.clipboard.writeText)return eO(e,s);try{return await navigator.clipboard.writeText(e),eo.Z.success(s),!0}catch(t){return console.error("Clipboard API failed: ",t),eO(e,s)}},eO=(e,s)=>{try{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.left="-999999px",t.style.top="-999999px",t.setAttribute("readonly",""),document.body.appendChild(t),t.focus(),t.select();let l=document.execCommand("copy");if(document.body.removeChild(t),l)return eo.Z.success(s),!0;throw Error("execCommand failed")}catch(e){return eo.Z.fromBackend("Failed to copy to clipboard"),console.error("Failed to copy: ",e),!1}};var eD=e=>{let{onChange:s,value:t,className:l,accessToken:a,placeholder:r="Select MCP servers",disabled:i=!1}=e,[n,o]=(0,d.useState)([]),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1);(0,d.useEffect)(()=>{(async()=>{if(a){h(!0);try{let[e,s]=await Promise.all([(0,j.fetchMCPServers)(a),(0,j.fetchMCPAccessGroups)(a)]),t=Array.isArray(e)?e:e.data||[],l=Array.isArray(s)?s:s.data||[];o(t),u(l)}catch(e){console.error("Error fetching MCP servers or access groups:",e)}finally{h(!1)}}})()},[a]);let p=[...m.map(e=>({label:e,value:e,isAccessGroup:!0,searchText:"".concat(e," Access Group")})),...n.map(e=>({label:"".concat(e.server_name||e.server_id," (").concat(e.server_id,")"),value:e.server_id,isAccessGroup:!1,searchText:"".concat(e.server_name||e.server_id," ").concat(e.server_id," MCP Server")}))],g=[...(null==t?void 0:t.servers)||[],...(null==t?void 0:t.accessGroups)||[]];return(0,c.jsx)("div",{children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:r,onChange:e=>{s({servers:e.filter(e=>!m.includes(e)),accessGroups:e.filter(e=>m.includes(e))})},value:g,loading:x,className:l,showSearch:!0,style:{width:"100%"},disabled:i,filterOption:(e,s)=>{var t;return((null===(t=p.find(e=>e.value===(null==s?void 0:s.value)))||void 0===t?void 0:t.searchText)||"").toLowerCase().includes(e.toLowerCase())},children:p.map(e=>(0,c.jsx)(I.default.Option,{value:e.value,label:e.label,children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,c.jsx)("span",{style:{display:"inline-block",width:8,height:8,borderRadius:"50%",background:e.isAccessGroup?"#52c41a":"#1890ff",flexShrink:0}}),(0,c.jsx)("span",{style:{flex:1},children:e.label}),(0,c.jsx)("span",{style:{color:e.isAccessGroup?"#52c41a":"#1890ff",fontSize:"12px",fontWeight:500,opacity:.8},children:e.isAccessGroup?"Access Group":"MCP Server"})]})},e.value))})})},eF=t(87908),eR=t(61994),ez=t(32489),eU=e=>{let{accessToken:s,selectedServers:t,toolPermissions:l,onChange:a,disabled:r=!1}=e,[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)({}),[u,x]=(0,d.useState)({}),[h,p]=(0,d.useState)({});(0,d.useEffect)(()=>{(async()=>{if(0===t.length){n([]);return}try{let e=await (0,j.fetchMCPServers)(s),l=(Array.isArray(e)?e:e.data||[]).filter(e=>t.includes(e.server_id));n(l)}catch(e){console.error("Error fetching MCP servers:",e),n([])}})()},[t,s]);let g=async e=>{x(s=>({...s,[e]:!0})),p(s=>({...s,[e]:""}));try{let t=await (0,j.listMCPTools)(s,e);t.error?(p(s=>({...s,[e]:t.message||"Failed to fetch tools"})),m(s=>({...s,[e]:[]}))):m(s=>({...s,[e]:t.tools||[]}))}catch(s){console.error("Error fetching tools for server ".concat(e,":"),s),p(s=>({...s,[e]:"Failed to fetch tools"})),m(s=>({...s,[e]:[]}))}finally{x(s=>({...s,[e]:!1}))}};(0,d.useEffect)(()=>{i.forEach(e=>{o[e.server_id]||u[e.server_id]||g(e.server_id)})},[i]);let f=(e,s)=>{let t=l[e]||[],r=t.includes(s)?t.filter(e=>e!==s):[...t,s];a({...l,[e]:r})},v=e=>{let s=o[e]||[];a({...l,[e]:s.map(e=>e.name)})},y=e=>{a({...l,[e]:[]})};return 0===t.length?null:(0,c.jsx)("div",{className:"space-y-4",children:i.map(e=>{let s=e.server_name||e.alias||e.server_id,t=o[e.server_id]||[],a=l[e.server_id]||[],i=u[e.server_id],n=h[e.server_id];return(0,c.jsxs)("div",{className:"border rounded-lg bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between p-4 border-b bg-white rounded-t-lg",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:s}),e.description&&(0,c.jsx)(k.Z,{className:"text-sm text-gray-500",children:e.description})]}),(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[(0,c.jsx)("button",{className:"text-sm text-blue-600 hover:text-blue-700 font-medium",onClick:()=>v(e.server_id),disabled:r||i,children:"Select All"}),(0,c.jsx)("button",{className:"text-sm text-blue-600 hover:text-blue-700 font-medium",onClick:()=>y(e.server_id),disabled:r||i,children:"Deselect All"}),(0,c.jsx)("button",{className:"text-gray-400 hover:text-gray-600",onClick:()=>{},children:(0,c.jsx)(ez.Z,{className:"w-4 h-4"})})]})]}),(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium text-gray-700 mb-3",children:"Available Tools"}),i&&(0,c.jsxs)("div",{className:"flex items-center justify-center py-8",children:[(0,c.jsx)(eF.Z,{size:"large"}),(0,c.jsx)(k.Z,{className:"ml-3 text-gray-500",children:"Loading tools..."})]}),n&&!i&&(0,c.jsxs)("div",{className:"p-4 bg-red-50 border border-red-200 rounded-lg text-center",children:[(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:"Unable to load tools"}),(0,c.jsx)(k.Z,{className:"text-sm text-red-500 mt-1",children:n})]}),!i&&!n&&t.length>0&&(0,c.jsx)("div",{className:"space-y-2",children:t.map(s=>{let t=a.includes(s.name);return(0,c.jsxs)("div",{className:"flex items-start gap-2",children:[(0,c.jsx)(eR.Z,{checked:t,onChange:()=>f(e.server_id,s.name),disabled:r}),(0,c.jsx)("div",{className:"flex-1 min-w-0",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900",children:s.name}),(0,c.jsxs)(k.Z,{className:"text-sm text-gray-500",children:["- ",s.description||"No description"]})]})})]},s.name)})}),!i&&!n&&0===t.length&&(0,c.jsx)("div",{className:"text-center py-6",children:(0,c.jsx)(k.Z,{className:"text-gray-500",children:"No tools available"})})]})]},e.server_id)})})},eq=t(77355),eV=t(93416),eB=t(95704),eK=t(69993);let eG=async e=>{try{let s=await (0,j.modelHubCall)(e);if(console.log("model_info:",s),(null==s?void 0:s.data.length)>0){let e=s.data.map(e=>({model_group:e.model_group,mode:null==e?void 0:e.mode}));return e.sort((e,s)=>e.model_group.localeCompare(s.model_group)),e}return[]}catch(e){throw console.error("Error fetching model info:",e),e}};var eH=e=>{let{accessToken:s,value:t,placeholder:l="Select a Model",onChange:a,disabled:r=!1,style:i,className:n,showLabel:o=!0,labelText:m="Select Model"}=e,[u,x]=(0,d.useState)(t),[h,p]=(0,d.useState)(!1),[g,j]=(0,d.useState)([]),f=(0,d.useRef)(null);return(0,d.useEffect)(()=>{x(t)},[t]),(0,d.useEffect)(()=>{s&&(async()=>{try{let e=await eG(s);console.log("Fetched models for selector:",e),e.length>0&&j(e)}catch(e){console.error("Error fetching model info:",e)}})()},[s]),(0,c.jsxs)("div",{children:[o&&(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(eK.Z,{className:"mr-2"})," ",m]}),(0,c.jsx)(I.default,{value:u,placeholder:l,onChange:e=>{"custom"===e?(p(!0),x(void 0)):(p(!1),x(e),a&&a(e))},options:[...Array.from(new Set(g.map(e=>e.model_group))).map((e,s)=>({value:e,label:e,key:s})),{value:"custom",label:"Enter custom model",key:"custom"}],style:{width:"100%",...i},showSearch:!0,className:"rounded-md ".concat(n||""),disabled:r}),h&&(0,c.jsx)(_.Z,{className:"mt-2",placeholder:"Enter custom model name",onValueChange:e=>{f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{x(e),a&&a(e)},500)},disabled:r})]})},eY=e=>{let{accessToken:s,initialModelAliases:t={},onAliasUpdate:l,showExampleConfig:a=!0}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)({aliasName:"",targetModel:""}),[m,u]=(0,d.useState)(null);(0,d.useEffect)(()=>{i(Object.entries(t).map((e,s)=>{let[t,l]=e;return{id:"".concat(s,"-").concat(t),aliasName:t,targetModel:l}}))},[t]);let x=e=>{u({...e})},h=()=>{if(!m)return;if(!m.aliasName||!m.targetModel){eo.Z.fromBackend("Please provide both alias name and target model");return}if(r.some(e=>e.id!==m.id&&e.aliasName===m.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=r.map(e=>e.id===m.id?m:e);i(e),u(null);let s={};e.forEach(e=>{s[e.aliasName]=e.targetModel}),l&&l(s),eo.Z.success("Alias updated successfully")},p=()=>{u(null)},g=e=>{let s=r.filter(s=>s.id!==e);i(s);let t={};s.forEach(e=>{t[e.aliasName]=e.targetModel}),l&&l(t),eo.Z.success("Alias deleted successfully")},j=r.reduce((e,s)=>(e[s.aliasName]=s.targetModel,e),{});return(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(eB.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Add New Alias"}),(0,c.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Alias Name"}),(0,c.jsx)("input",{type:"text",value:n.aliasName,onChange:e=>o({...n,aliasName:e.target.value}),placeholder:"e.g., gpt-4o",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Target Model"}),(0,c.jsx)(eH,{accessToken:s,value:n.targetModel,placeholder:"Select target model",onChange:e=>o({...n,targetModel:e}),showLabel:!1})]}),(0,c.jsx)("div",{className:"flex items-end",children:(0,c.jsxs)("button",{onClick:()=>{if(!n.aliasName||!n.targetModel){eo.Z.fromBackend("Please provide both alias name and target model");return}if(r.some(e=>e.aliasName===n.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=[...r,{id:"".concat(Date.now(),"-").concat(n.aliasName),aliasName:n.aliasName,targetModel:n.targetModel}];i(e),o({aliasName:"",targetModel:""});let s={};e.forEach(e=>{s[e.aliasName]=e.targetModel}),l&&l(s),eo.Z.success("Alias added successfully")},disabled:!n.aliasName||!n.targetModel,className:"flex items-center px-4 py-2 rounded-md text-sm ".concat(n.aliasName&&n.targetModel?"bg-green-600 text-white hover:bg-green-700":"bg-gray-300 text-gray-500 cursor-not-allowed"),children:[(0,c.jsx)(eq.Z,{className:"w-4 h-4 mr-1"}),"Add Alias"]})})]})]}),(0,c.jsx)(eB.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Manage Existing Aliases"}),(0,c.jsx)("div",{className:"rounded-lg custom-border relative mb-6",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(eB.iA,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(eB.ss,{children:(0,c.jsxs)(eB.SC,{children:[(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Alias Name"}),(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Target Model"}),(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Actions"})]})}),(0,c.jsxs)(eB.RM,{children:[r.map(e=>(0,c.jsx)(eB.SC,{className:"h-8",children:m&&m.id===e.id?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eB.pj,{className:"py-0.5",children:(0,c.jsx)("input",{type:"text",value:m.aliasName,onChange:e=>u({...m,aliasName:e.target.value}),className:"w-full px-2 py-1 border border-gray-300 rounded-md text-sm"})}),(0,c.jsx)(eB.pj,{className:"py-0.5",children:(0,c.jsx)(eH,{accessToken:s,value:m.targetModel,onChange:e=>u({...m,targetModel:e}),showLabel:!1,style:{height:"32px"}})}),(0,c.jsx)(eB.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:h,className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:"Save"}),(0,c.jsx)("button",{onClick:p,className:"text-xs bg-gray-50 text-gray-600 px-2 py-1 rounded hover:bg-gray-100",children:"Cancel"})]})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eB.pj,{className:"py-0.5 text-sm text-gray-900",children:e.aliasName}),(0,c.jsx)(eB.pj,{className:"py-0.5 text-sm text-gray-500",children:e.targetModel}),(0,c.jsx)(eB.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>x(e),className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:(0,c.jsx)(eV.Z,{className:"w-3 h-3"})}),(0,c.jsx)("button",{onClick:()=>g(e.id),className:"text-xs bg-red-50 text-red-600 px-2 py-1 rounded hover:bg-red-100",children:(0,c.jsx)(W.Z,{className:"w-3 h-3"})})]})})]})},e.id)),0===r.length&&(0,c.jsx)(eB.SC,{children:(0,c.jsx)(eB.pj,{colSpan:3,className:"py-0.5 text-sm text-gray-500 text-center",children:"No aliases added yet. Add a new alias above."})})]})]})})}),a&&(0,c.jsxs)(eB.Zb,{children:[(0,c.jsx)(eB.Dx,{className:"mb-4",children:"Configuration Example"}),(0,c.jsx)(eB.xv,{className:"text-gray-600 mb-4",children:"Here's how your current aliases would look in the config:"}),(0,c.jsx)("div",{className:"bg-gray-100 rounded-lg p-4 font-mono text-sm",children:(0,c.jsxs)("div",{className:"text-gray-700",children:["model_aliases:",0===Object.keys(j).length?(0,c.jsxs)("span",{className:"text-gray-500",children:[(0,c.jsx)("br",{}),"\xa0\xa0# No aliases configured yet"]}):Object.entries(j).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{children:[(0,c.jsx)("br",{}),'\xa0\xa0"',s,'": "',t,'"']},s)})]})})]})]})},eJ=t(63709),eW=t(49169);let{Option:e$}=I.default;var eQ=e=>{let{form:s,autoRotationEnabled:t,onAutoRotationChange:l,rotationInterval:a,onRotationIntervalChange:r}=e,i=a&&!["7d","30d","90d","180d","365d"].includes(a),[n,o]=(0,d.useState)(i),[m,u]=(0,d.useState)(i?a:"");return(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Key Expiry Settings"}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 flex items-center space-x-1",children:[(0,c.jsx)("span",{children:"Expire Key"}),(0,c.jsx)(B.Z,{title:"Set when this key should expire. Format: 30s (seconds), 30m (minutes), 30h (hours), 30d (days)",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})})]}),(0,c.jsx)(eW.o,{name:"duration",placeholder:"e.g., 30d",className:"w-full"})]})]}),(0,c.jsx)(K.Z,{}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Auto-Rotation Settings"}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 flex items-center space-x-1",children:[(0,c.jsx)("span",{children:"Enable Auto-Rotation"}),(0,c.jsx)(B.Z,{title:"Key will automatically regenerate at the specified interval for enhanced security.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})})]}),(0,c.jsx)(eJ.Z,{checked:t,onChange:l,size:"default",className:t?"":"bg-gray-400"})]}),t&&(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 flex items-center space-x-1",children:[(0,c.jsx)("span",{children:"Rotation Interval"}),(0,c.jsx)(B.Z,{title:"How often the key should be automatically rotated. Choose the interval that best fits your security requirements.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)(I.default,{value:n?"custom":a,onChange:e=>{"custom"===e?o(!0):(o(!1),u(""),r(e))},className:"w-full",placeholder:"Select interval",children:[(0,c.jsx)(e$,{value:"7d",children:"7 days"}),(0,c.jsx)(e$,{value:"30d",children:"30 days"}),(0,c.jsx)(e$,{value:"90d",children:"90 days"}),(0,c.jsx)(e$,{value:"180d",children:"180 days"}),(0,c.jsx)(e$,{value:"365d",children:"365 days"}),(0,c.jsx)(e$,{value:"custom",children:"Custom interval"})]}),n&&(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsx)(eW.o,{value:m,onChange:e=>{let s=e.target.value;u(s),r(s)},placeholder:"e.g., 1s, 5m, 2h, 14d"}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"Supported formats: seconds (s), minutes (m), hours (h), days (d)"})]})]})]})]}),t&&(0,c.jsx)("div",{className:"bg-blue-50 p-3 rounded-md text-sm text-blue-700",children:"When rotation occurs, you'll receive a notification with the new key. The old key will be deactivated after a brief grace period."})]})]})};let{Option:eX}=I.default;var e0=e=>{let{type:s,name:t,showDetailedDescriptions:l=!0,className:a="",initialValue:r=null,form:i,onChange:n}=e,o=s.toUpperCase(),d=s.toLowerCase(),m="Select 'guaranteed_throughput' to prevent overallocating ".concat(o," limit when the key belongs to a Team with specific ").concat(o," limits.");return(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:[o," Rate Limit Type"," ",(0,c.jsx)(B.Z,{title:m,children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:t,initialValue:r,className:a,children:(0,c.jsx)(I.default,{defaultValue:l?"default":void 0,placeholder:"Select rate limit type",style:{width:"100%"},optionLabelProp:l?"label":void 0,onChange:e=>{i&&i.setFieldValue(t,e),n&&n(e)},children:l?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eX,{value:"best_effort_throughput",label:"Default",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Default"}),(0,c.jsxs)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:["Best effort throughput - no error if we're overallocating ",d," (Team/Key Limits checked at runtime)."]})]})}),(0,c.jsx)(eX,{value:"guaranteed_throughput",label:"Guaranteed throughput",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Guaranteed throughput"}),(0,c.jsxs)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:["Guaranteed throughput - raise an error if we're overallocating ",d," (also checks model-specific limits)"]})]})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eX,{value:"best_effort_throughput",children:"Best effort throughput"}),(0,c.jsx)(eX,{value:"guaranteed_throughput",children:"Guaranteed throughput"})]})})})};let{Option:e1}=I.default,e2=e=>{let s=[];if(console.log("data:",JSON.stringify(e)),e)for(let t of e)t.metadata&&t.metadata.tags&&s.push(...t.metadata.tags);let t=Array.from(new Set(s)).map(e=>({value:e,label:e}));return console.log("uniqueTags:",t),t},e4=async(e,s,t,l)=>{try{if(null===e||null===s)return[];if(null!==t){let a=(await (0,j.modelAvailableCall)(t,e,s,!0,l,!0)).data.map(e=>e.id);return console.log("available_model_names:",a),a}return[]}catch(e){return console.error("Error fetching user models:",e),[]}},e5=async(e,s,t,l)=>{try{if(null===e||null===s)return;if(null!==t){let a=(await (0,j.modelAvailableCall)(t,e,s)).data.map(e=>e.id);console.log("available_model_names:",a),l(a)}}catch(e){console.error("Error fetching user models:",e)}};var e3=e=>{let{userID:s,team:t,teams:l,userRole:a,accessToken:r,data:i,addKey:n,premiumUser:o=!1}=e,[m]=A.Z.useForm(),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(null),[g,f]=(0,d.useState)(null),[M,D]=(0,d.useState)([]),[R,K]=(0,d.useState)([]),[G,H]=(0,d.useState)("you"),[Y,J]=(0,d.useState)(e2(i)),[W,$]=(0,d.useState)([]),[Q,X]=(0,d.useState)([]),[es,et]=(0,d.useState)([]),[el,ea]=(0,d.useState)(t),[ei,en]=(0,d.useState)(!1),[ec,ed]=(0,d.useState)(null),[em,eu]=(0,d.useState)({}),[ex,eh]=(0,d.useState)([]),[ep,eg]=(0,d.useState)(!1),[ej,ef]=(0,d.useState)([]),[ev,ey]=(0,d.useState)(!1),[eb,e_]=(0,d.useState)([]),[eN,eZ]=(0,d.useState)("default"),[ew,eS]=(0,d.useState)({}),[eA,eT]=(0,d.useState)(!1),[eP,eM]=(0,d.useState)("30d"),eO=()=>{x(!1),m.resetFields(),et([]),e_([]),eZ("default"),eS({}),eT(!1),eM("30d")},eF=()=>{x(!1),p(null),ea(null),m.resetFields(),et([]),e_([]),eZ("default"),eS({}),eT(!1),eM("30d")};(0,d.useEffect)(()=>{s&&a&&r&&e5(s,a,r,D)},[r,s,a]);let eR=async()=>{try{if(null==r)return;let e=await (0,j.fetchMCPAccessGroups)(r);ef(e)}catch(e){console.error("Failed to fetch MCP access groups:",e)}};(0,d.useEffect)(()=>{eR()},[r]),(0,d.useEffect)(()=>{let e=async()=>{try{let e=await (0,j.getPromptsList)(r);X(e.prompts.map(e=>e.prompt_id))}catch(e){console.error("Failed to fetch prompts:",e)}};(async()=>{try{let e=(await (0,j.getGuardrailsList)(r)).guardrails.map(e=>e.guardrail_name);$(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})(),e()},[r]),(0,d.useEffect)(()=>{(async()=>{try{if(r){let e=sessionStorage.getItem("possibleUserRoles");if(e)eu(JSON.parse(e));else{let e=await (0,j.getPossibleUserRoles)(r);sessionStorage.setItem("possibleUserRoles",JSON.stringify(e)),eu(e)}}}catch(e){console.error("Error fetching possible user roles:",e)}})()},[r]);let ez=R.includes("no-default-models")&&!el,eq=async e=>{try{var t,l,a,o,c;let d;let u=null!==(a=null==e?void 0:e.key_alias)&&void 0!==a?a:"",h=null!==(o=null==e?void 0:e.team_id)&&void 0!==o?o:null;if((null!==(c=null==i?void 0:i.filter(e=>e.team_id===h).map(e=>e.key_alias))&&void 0!==c?c:[]).includes(u))throw Error("Key alias ".concat(u," already exists for team with ID ").concat(h,", please provide another key alias"));eo.Z.info("Making API Call"),x(!0),"you"===G&&(e.user_id=s);let g={};try{g=JSON.parse(e.metadata||"{}")}catch(e){console.error("Error parsing metadata:",e)}if("service_account"===G&&(g.service_account_id=e.key_alias),es.length>0&&(g={...g,logging:es.filter(e=>e.callback_name)}),eb.length>0){let e=ee(eb);g={...g,litellm_disabled_callbacks:e}}if(eA&&(e.auto_rotate=!0,e.rotation_interval=eP),e.duration&&(e.duration=e.duration),e.metadata=JSON.stringify(g),e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0&&(e.object_permission={vector_stores:e.allowed_vector_store_ids},delete e.allowed_vector_store_ids),e.allowed_mcp_servers_and_groups&&((null===(t=e.allowed_mcp_servers_and_groups.servers)||void 0===t?void 0:t.length)>0||(null===(l=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===l?void 0:l.length)>0)){e.object_permission||(e.object_permission={});let{servers:s,accessGroups:t}=e.allowed_mcp_servers_and_groups;s&&s.length>0&&(e.object_permission.mcp_servers=s),t&&t.length>0&&(e.object_permission.mcp_access_groups=t),delete e.allowed_mcp_servers_and_groups}let v=e.mcp_tool_permissions||{};Object.keys(v).length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_tool_permissions=v),delete e.mcp_tool_permissions,e.allowed_mcp_access_groups&&e.allowed_mcp_access_groups.length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_access_groups=e.allowed_mcp_access_groups,delete e.allowed_mcp_access_groups),Object.keys(ew).length>0&&(e.aliases=JSON.stringify(ew)),d="service_account"===G?await (0,j.keyCreateServiceAccountCall)(r,e):await (0,j.keyCreateCall)(r,s,e),console.log("key create Response:",d),n(d),p(d.key),f(d.soft_budget),eo.Z.success("API Key Created"),m.resetFields(),localStorage.removeItem("userData"+s)}catch(e){console.log("error in create key:",e),eo.Z.fromBackend("Error creating the key: ".concat(e))}};(0,d.useEffect)(()=>{if(s&&a&&r){var e;e4(s,a,r,null!==(e=null==el?void 0:el.team_id)&&void 0!==e?e:null).then(e=>{var s;K(Array.from(new Set([...null!==(s=null==el?void 0:el.models)&&void 0!==s?s:[],...e])))})}m.setFieldValue("models",[])},[el,r,s,a]);let eV=async e=>{if(!e){eh([]);return}eg(!0);try{let s=new URLSearchParams;if(s.append("user_email",e),null==r)return;let t=(await (0,j.userFilterUICall)(r,s)).map(e=>({label:"".concat(e.user_email," (").concat(e.user_id,")"),value:e.user_id,user:e}));eh(t)}catch(e){console.error("Error fetching users:",e),eo.Z.fromBackend("Failed to search for users")}finally{eg(!1)}},eB=(0,d.useCallback)(eC()(e=>eV(e),300),[r]),eK=(e,s)=>{let t=s.user;m.setFieldsValue({user_id:t.user_id})};return(0,c.jsxs)("div",{children:[a&&eI.LQ.includes(a)&&(0,c.jsx)(b.Z,{className:"mx-auto",onClick:()=>x(!0),children:"+ Create New Key"}),(0,c.jsx)(T.Z,{visible:u,width:1e3,footer:null,onOk:eO,onCancel:eF,children:(0,c.jsxs)(A.Z,{form:m,onFinish:eq,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(S.Z,{className:"mb-4",children:"Key Ownership"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Owned By"," ",(0,c.jsx)(B.Z,{title:"Select who will own this API key",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),className:"mb-4",children:(0,c.jsxs)(E.ZP.Group,{onChange:e=>H(e.target.value),value:G,children:[(0,c.jsx)(E.ZP,{value:"you",children:"You"}),(0,c.jsx)(E.ZP,{value:"service_account",children:"Service Account"}),"Admin"===a&&(0,c.jsx)(E.ZP,{value:"another_user",children:"Another User"})]})}),"another_user"===G&&(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["User ID"," ",(0,c.jsx)(B.Z,{title:"The user who will own this key and be responsible for its usage",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"user_id",className:"mt-4",rules:[{required:"another_user"===G,message:"Please input the user ID of the user you are assigning the key to"}],children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{style:{display:"flex",marginBottom:"8px"},children:[(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Type email to search for users",filterOption:!1,onSearch:e=>{eB(e)},onSelect:(e,s)=>eK(e,s),options:ex,loading:ep,allowClear:!0,style:{width:"100%"},notFoundContent:ep?"Searching...":"No users found"}),(0,c.jsx)(P.ZP,{onClick:()=>en(!0),style:{marginLeft:"8px"},children:"Create User"})]}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"Search by email to find users"})]})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Team"," ",(0,c.jsx)(B.Z,{title:"The team this key belongs to, which determines available models and budget limits",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"team_id",initialValue:t?t.team_id:null,className:"mt-4",rules:[{required:"service_account"===G,message:"Please select a team for the service account"}],help:"service_account"===G?"required":"",children:(0,c.jsx)(q,{teams:l,onChange:e=>{ea((null==l?void 0:l.find(s=>s.team_id===e))||null)}})})]}),ez&&(0,c.jsx)("div",{className:"mb-8 p-4 bg-blue-50 border border-blue-200 rounded-md",children:(0,c.jsx)(k.Z,{className:"text-blue-800 text-sm",children:"Please select a team to continue configuring your API key. If you do not see any teams, please contact your Proxy Admin to either provide you with access to models or to add you to a team."})}),!ez&&(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(S.Z,{className:"mb-4",children:"Key Details"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["you"===G||"another_user"===G?"Key Name":"Service Account ID"," ",(0,c.jsx)(B.Z,{title:"you"===G||"another_user"===G?"A descriptive name to identify this key":"Unique identifier for this service account",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"key_alias",rules:[{required:!0,message:"Please input a ".concat("you"===G?"key name":"service account ID")}],help:"required",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Models"," ",(0,c.jsx)(B.Z,{title:"Select which models this key can access. Choose 'All Team Models' to grant access to all models available to the team",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",rules:"management"===eN||"read_only"===eN?[]:[{required:!0,message:"Please select a model"}],help:"management"===eN||"read_only"===eN?"Models field is disabled for this key type":"required",className:"mt-4",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},disabled:"management"===eN||"read_only"===eN,onChange:e=>{e.includes("all-team-models")&&m.setFieldsValue({models:["all-team-models"]})},children:[(0,c.jsx)(e1,{value:"all-team-models",children:"All Team Models"},"all-team-models"),R.map(e=>(0,c.jsx)(e1,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Key Type"," ",(0,c.jsx)(B.Z,{title:"Select the type of key to determine what routes and operations this key can access",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"key_type",initialValue:"default",className:"mt-4",children:(0,c.jsxs)(I.default,{defaultValue:"default",placeholder:"Select key type",style:{width:"100%"},optionLabelProp:"label",onChange:e=>{eZ(e),("management"===e||"read_only"===e)&&m.setFieldsValue({models:[]})},children:[(0,c.jsx)(e1,{value:"default",label:"Default",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Default"}),(0,c.jsx)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:"Can call LLM API + Management routes"})]})}),(0,c.jsx)(e1,{value:"llm_api",label:"LLM API",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"LLM API"}),(0,c.jsx)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:"Can call only LLM API routes (chat/completions, embeddings, etc.)"})]})}),(0,c.jsx)(e1,{value:"management",label:"Management",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Management"}),(0,c.jsx)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:"Can call only management routes (user/team/key management)"})]})})]})})]}),!ez&&(0,c.jsx)("div",{className:"mb-8",children:(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)(S.Z,{className:"m-0",children:"Optional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Max Budget (USD)"," ",(0,c.jsx)(B.Z,{title:"Maximum amount in USD this key can spend. When reached, the key will be blocked from making further requests",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"max_budget",help:"Budget cannot exceed team max budget: $".concat((null==t?void 0:t.max_budget)!==null&&(null==t?void 0:t.max_budget)!==void 0?null==t?void 0:t.max_budget:"unlimited"),rules:[{validator:async(e,s)=>{if(s&&t&&null!==t.max_budget&&s>t.max_budget)throw Error("Budget cannot exceed team max budget: $".concat(eL(t.max_budget,4)))}}],children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Reset Budget"," ",(0,c.jsx)(B.Z,{title:"How often the budget should reset. For example, setting 'daily' will reset the budget every 24 hours",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"budget_duration",help:"Team Reset Budget: ".concat((null==t?void 0:t.budget_duration)!==null&&(null==t?void 0:t.budget_duration)!==void 0?null==t?void 0:t.budget_duration:"None"),children:(0,c.jsx)(eE,{onChange:e=>m.setFieldValue("budget_duration",e)})}),(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Tokens per minute Limit (TPM)"," ",(0,c.jsx)(B.Z,{title:"Maximum number of tokens this key can process per minute. Helps control usage and costs",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"tpm_limit",help:"TPM cannot exceed team TPM limit: ".concat((null==t?void 0:t.tpm_limit)!==null&&(null==t?void 0:t.tpm_limit)!==void 0?null==t?void 0:t.tpm_limit:"unlimited"),rules:[{validator:async(e,s)=>{if(s&&t&&null!==t.tpm_limit&&s>t.tpm_limit)throw Error("TPM limit cannot exceed team TPM limit: ".concat(t.tpm_limit))}}],children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(e0,{type:"tpm",name:"tpm_limit_type",className:"mt-4",initialValue:null,form:m,showDetailedDescriptions:!0}),(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Requests per minute Limit (RPM)"," ",(0,c.jsx)(B.Z,{title:"Maximum number of API requests this key can make per minute. Helps prevent abuse and manage load",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"rpm_limit",help:"RPM cannot exceed team RPM limit: ".concat((null==t?void 0:t.rpm_limit)!==null&&(null==t?void 0:t.rpm_limit)!==void 0?null==t?void 0:t.rpm_limit:"unlimited"),rules:[{validator:async(e,s)=>{if(s&&t&&null!==t.rpm_limit&&s>t.rpm_limit)throw Error("RPM limit cannot exceed team RPM limit: ".concat(t.rpm_limit))}}],children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(e0,{type:"rpm",name:"rpm_limit_type",className:"mt-4",initialValue:null,form:m,showDetailedDescriptions:!0}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Apply safety guardrails to this key to filter content or enforce policies",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",className:"mt-4",help:o?"Select existing guardrails or enter new ones":"Premium feature - Upgrade to set guardrails by key",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},disabled:!o,placeholder:o?"Select or enter guardrails":"Premium feature - Upgrade to set guardrails by key",options:W.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Prompts"," ",(0,c.jsx)(B.Z,{title:"Allow this key to use specific prompt templates",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/prompt_management",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"prompts",className:"mt-4",help:o?"Select existing prompts or enter new ones":"Premium feature - Upgrade to set prompts by key",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},disabled:!o,placeholder:o?"Select or enter prompts":"Premium feature - Upgrade to set prompts by key",options:Q.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Vector Stores"," ",(0,c.jsx)(B.Z,{title:"Select which vector stores this key can access. If none selected, the key will have access to all available vector stores",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_vector_store_ids",className:"mt-4",help:"Select vector stores this key can access. Leave empty for access to all vector stores",children:(0,c.jsx)(U,{onChange:e=>m.setFieldValue("allowed_vector_store_ids",e),value:m.getFieldValue("allowed_vector_store_ids"),accessToken:r,placeholder:"Select vector stores (optional)"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Metadata"," ",(0,c.jsx)(B.Z,{title:"JSON object with additional information about this key. Used for tracking or custom logic",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"metadata",className:"mt-4",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Tags"," ",(0,c.jsx)(B.Z,{title:"Tags for tracking spend and/or doing tag-based routing. Used for analytics and filtering",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"tags",className:"mt-4",help:"Tags for tracking spend and/or doing tag-based routing.",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},placeholder:"Enter tags",tokenSeparators:[","],options:Y})}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",onClick:()=>{ev||(eR(),ey(!0))},children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"MCP Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed MCP Servers"," ",(0,c.jsx)(B.Z,{title:"Select which MCP servers or access groups this key can access",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_mcp_servers_and_groups",help:"Select MCP servers or access groups this key can access",children:(0,c.jsx)(eD,{onChange:e=>m.setFieldValue("allowed_mcp_servers_and_groups",e),value:m.getFieldValue("allowed_mcp_servers_and_groups"),accessToken:r,placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{name:"mcp_tool_permissions",initialValue:{},hidden:!0,children:(0,c.jsx)(L.default,{type:"hidden"})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.allowed_mcp_servers_and_groups!==s.allowed_mcp_servers_and_groups||e.mcp_tool_permissions!==s.mcp_tool_permissions,children:()=>{var e;return(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(eU,{accessToken:r,selectedServers:(null===(e=m.getFieldValue("allowed_mcp_servers_and_groups"))||void 0===e?void 0:e.servers)||[],toolPermissions:m.getFieldValue("mcp_tool_permissions")||{},onChange:e=>m.setFieldsValue({mcp_tool_permissions:e})})})}})]})]}),o?(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Logging Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(er,{value:es,onChange:et,premiumUser:!0,disabledCallbacks:eb,onDisabledCallbacksChange:e_})})})]}):(0,c.jsx)(B.Z,{title:(0,c.jsxs)("span",{children:["Key-level logging settings is an enterprise feature, get in touch -",(0,c.jsx)("a",{href:"https://www.litellm.ai/enterprise",target:"_blank",children:"https://www.litellm.ai/enterprise"})]}),placement:"top",children:(0,c.jsxs)("div",{style:{position:"relative"},children:[(0,c.jsx)("div",{style:{opacity:.5},children:(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Logging Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(er,{value:es,onChange:et,premiumUser:!1,disabledCallbacks:eb,onDisabledCallbacksChange:e_})})})]})}),(0,c.jsx)("div",{style:{position:"absolute",inset:0,cursor:"not-allowed"}})]})}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Model Aliases"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600 mb-4",children:"Create custom aliases for models that can be used in API calls. This allows you to create shortcuts for specific models."}),(0,c.jsx)(eY,{accessToken:r,initialModelAliases:ew,onAliasUpdate:eS,showExampleConfig:!1})]})})]}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Key Lifecycle"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(eQ,{form:m,autoRotationEnabled:eA,onAutoRotationChange:eT,rotationInterval:eP,onRotationIntervalChange:eM})})})]}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("b",{children:"Advanced Settings"}),(0,c.jsx)(B.Z,{title:(0,c.jsxs)("span",{children:["Learn more about advanced settings in our"," ",(0,c.jsx)("a",{href:j.proxyBaseUrl?"".concat(j.proxyBaseUrl,"/#/key%20management/generate_key_fn_key_generate_post"):"/#/key%20management/generate_key_fn_key_generate_post",target:"_blank",rel:"noopener noreferrer",className:"text-blue-400 hover:text-blue-300",children:"documentation"})]}),children:(0,c.jsx)(V.Z,{className:"text-gray-400 hover:text-gray-300 cursor-help"})})]})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)(z.Z,{schemaComponent:"GenerateKeyRequest",form:m,excludedFields:["key_alias","team_id","models","duration","metadata","tags","guardrails","max_budget","budget_duration","tpm_limit","rpm_limit"]})})]})]})]})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(P.ZP,{htmlType:"submit",disabled:ez,style:{opacity:ez?.5:1},children:"Create Key"})})]})}),ei&&(0,c.jsx)(T.Z,{title:"Create New User",visible:ei,onCancel:()=>en(!1),footer:null,width:800,children:(0,c.jsx)(ek,{userID:s,accessToken:r,teams:l,possibleUIRoles:em,onUserCreated:e=>{ed(e),m.setFieldsValue({user_id:e}),en(!1)},isEmbedded:!0})}),h&&(0,c.jsx)(T.Z,{visible:u,onOk:eO,onCancel:eF,footer:null,children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:"Save your Key"}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)("p",{children:["Please save this secret key somewhere safe and accessible. For security reasons,"," ",(0,c.jsx)("b",{children:"you will not be able to view it again"})," through your LiteLLM account. If you lose this secret key, you will need to generate a new one."]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:null!=h?(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mt-3",children:"API Key:"}),(0,c.jsx)("div",{style:{background:"#f8f8f8",padding:"10px",borderRadius:"5px",marginBottom:"10px"},children:(0,c.jsx)("pre",{style:{wordWrap:"break-word",whiteSpace:"normal"},children:h})}),(0,c.jsx)(C.CopyToClipboard,{text:h,onCopy:()=>{eo.Z.success("API Key copied to clipboard")},children:(0,c.jsx)(b.Z,{className:"mt-3",children:"Copy API Key"})})]}):(0,c.jsx)(k.Z,{children:"Key being created, this might take 30s"})})]})})]})},e6=t(7366),e8=t(20577),e7=e=>{let{selectedTeam:s,currentOrg:t,selectedKeyAlias:l,accessToken:a,createClicked:r}=e,[i,n]=(0,d.useState)({keys:[],total_count:0,current_page:1,total_pages:0}),[o,c]=(0,d.useState)(!0),[m,u]=(0,d.useState)(null),x=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{if(console.log("calling fetchKeys"),!a){console.log("accessToken",a);return}c(!0);let s="number"==typeof e.page?e.page:1,t="number"==typeof e.pageSize?e.pageSize:100,l=await (0,j.keyListCall)(a,null,null,null,null,null,s,t);console.log("data",l),n(l),u(null)}catch(e){u(e instanceof Error?e:Error("An error occurred"))}finally{c(!1)}};return(0,d.useEffect)(()=>{x(),console.log("selectedTeam",s,"currentOrg",t,"accessToken",a,"selectedKeyAlias",l)},[s,t,a,l,r]),{keys:i.keys,isLoading:o,error:m,pagination:{currentPage:i.current_page,totalPages:i.total_pages,totalCount:i.total_count},refresh:x,setKeys:e=>{n(s=>{let t="function"==typeof e?e(s.keys):e;return{...s,keys:t}})}}},e9=t(27281),se=t(41649),ss=t(12485),st=t(18135),sl=t(35242),sa=t(29706),sr=t(77991),si=t(10900),sn=t(23628),so=e=>{let{value:s,onChange:t,disabledCallbacks:l=[],onDisabledCallbacksChange:a}=e;return(0,c.jsx)(ea,{value:s,onChange:t,disabledCallbacks:l,onDisabledCallbacksChange:a})};let sc=["logging"],sd=e=>e&&"object"==typeof e?Object.fromEntries(Object.entries(e).filter(e=>{let[s]=e;return!sc.includes(s)})):{},sm=e=>e&&"object"==typeof e&&Array.isArray(e.logging)?e.logging:[],su=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return JSON.stringify(sd(e),null,s)};var sx=e=>{let{onChange:s,value:t,className:l,accessToken:a,disabled:r}=e,[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{(async()=>{if(a){m(!0);try{let e=await (0,j.getGuardrailsList)(a);console.log("Guardrails response:",e),e.guardrails&&(console.log("Guardrails data:",e.guardrails),n(e.guardrails))}catch(e){console.error("Error fetching guardrails:",e)}finally{m(!1)}}})()},[a]),(0,c.jsx)("div",{children:(0,c.jsx)(I.default,{mode:"multiple",disabled:r,placeholder:r?"Setting guardrails is a premium feature.":"Select guardrails",onChange:e=>{console.log("Selected guardrails:",e),s(e)},value:t,loading:o,className:l,options:i.map(e=>(console.log("Mapping guardrail:",e),{label:"".concat(e.guardrail_name),value:e.guardrail_name})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"}})})};function sh(e){var s,t,l,a,r,i,n,o,m;let{keyData:u,onCancel:x,onSubmit:h,teams:p,accessToken:g,userID:f,userRole:v,premiumUser:y=!1}=e,[N]=A.Z.useForm(),[Z,w]=(0,d.useState)([]),[k,S]=(0,d.useState)([]),C=null==p?void 0:p.find(e=>e.team_id===u.team_id),[T,E]=(0,d.useState)([]),[M,D]=(0,d.useState)([]),[F,R]=(0,d.useState)(!1),[z,q]=(0,d.useState)(Array.isArray(null===(s=u.metadata)||void 0===s?void 0:s.litellm_disabled_callbacks)?X(u.metadata.litellm_disabled_callbacks):[]),[V,K]=(0,d.useState)(u.auto_rotate||!1),[G,H]=(0,d.useState)(u.rotation_interval||"");(0,d.useEffect)(()=>{let e=async()=>{if(f&&v&&g)try{if(null===u.team_id){let e=(await (0,j.modelAvailableCall)(g,f,v)).data.map(e=>e.id);E(e)}else if(null==C?void 0:C.team_id){let e=await e4(f,v,g,C.team_id);E(Array.from(new Set([...C.models,...e])))}}catch(e){console.error("Error fetching models:",e)}};(async()=>{if(g)try{let e=await (0,j.getPromptsList)(g);S(e.prompts.map(e=>e.prompt_id))}catch(e){console.error("Failed to fetch prompts:",e)}})(),e()},[f,v,g,C,u.team_id]),(0,d.useEffect)(()=>{N.setFieldValue("disabled_callbacks",z)},[N,z]);let Y=e=>e&&({"24h":"daily","7d":"weekly","30d":"monthly"})[e]||null,J={...u,token:u.token||u.token_id,budget_duration:Y(u.budget_duration),metadata:su(u.metadata),guardrails:null===(t=u.metadata)||void 0===t?void 0:t.guardrails,prompts:null===(l=u.metadata)||void 0===l?void 0:l.prompts,vector_stores:(null===(a=u.object_permission)||void 0===a?void 0:a.vector_stores)||[],mcp_servers_and_groups:{servers:(null===(r=u.object_permission)||void 0===r?void 0:r.mcp_servers)||[],accessGroups:(null===(i=u.object_permission)||void 0===i?void 0:i.mcp_access_groups)||[]},mcp_tool_permissions:(null===(n=u.object_permission)||void 0===n?void 0:n.mcp_tool_permissions)||{},logging_settings:sm(u.metadata),disabled_callbacks:Array.isArray(null===(o=u.metadata)||void 0===o?void 0:o.litellm_disabled_callbacks)?X(u.metadata.litellm_disabled_callbacks):[],auto_rotate:u.auto_rotate||!1,...u.rotation_interval&&{rotation_interval:u.rotation_interval}};return(0,d.useEffect)(()=>{var e,s,t,l,a,r,i;N.setFieldsValue({...u,token:u.token||u.token_id,budget_duration:Y(u.budget_duration),metadata:su(u.metadata),guardrails:null===(e=u.metadata)||void 0===e?void 0:e.guardrails,prompts:null===(s=u.metadata)||void 0===s?void 0:s.prompts,vector_stores:(null===(t=u.object_permission)||void 0===t?void 0:t.vector_stores)||[],mcp_servers_and_groups:{servers:(null===(l=u.object_permission)||void 0===l?void 0:l.mcp_servers)||[],accessGroups:(null===(a=u.object_permission)||void 0===a?void 0:a.mcp_access_groups)||[]},mcp_tool_permissions:(null===(r=u.object_permission)||void 0===r?void 0:r.mcp_tool_permissions)||{},logging_settings:sm(u.metadata),disabled_callbacks:Array.isArray(null===(i=u.metadata)||void 0===i?void 0:i.litellm_disabled_callbacks)?X(u.metadata.litellm_disabled_callbacks):[],auto_rotate:u.auto_rotate||!1,...u.rotation_interval&&{rotation_interval:u.rotation_interval}})},[u,N]),(0,d.useEffect)(()=>{N.setFieldValue("auto_rotate",V)},[V,N]),(0,d.useEffect)(()=>{G&&N.setFieldValue("rotation_interval",G)},[G,N]),console.log("premiumUser:",y),(0,c.jsxs)(A.Z,{form:N,onFinish:h,initialValues:J,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Key Alias",name:"key_alias",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[T.length>0&&(0,c.jsx)(I.default.Option,{value:"all-team-models",children:"All Team Models"}),T.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,style:{width:"100%"},placeholder:"Enter a numerical value"})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"daily",children:"Daily"}),(0,c.jsx)(I.default.Option,{value:"weekly",children:"Weekly"}),(0,c.jsx)(I.default.Option,{value:"monthly",children:"Monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"TPM Limit",name:"tpm_limit",children:(0,c.jsx)(O,{min:0})}),(0,c.jsx)(e0,{type:"tpm",name:"tpm_limit_type",showDetailedDescriptions:!1}),(0,c.jsx)(A.Z.Item,{label:"RPM Limit",name:"rpm_limit",children:(0,c.jsx)(O,{min:0})}),(0,c.jsx)(e0,{type:"rpm",name:"rpm_limit_type",showDetailedDescriptions:!1}),(0,c.jsx)(A.Z.Item,{label:"Max Parallel Requests",name:"max_parallel_requests",children:(0,c.jsx)(O,{min:0})}),(0,c.jsx)(A.Z.Item,{label:"Model TPM Limit",name:"model_tpm_limit",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:'{"gpt-4": 100, "claude-v1": 200}'})}),(0,c.jsx)(A.Z.Item,{label:"Model RPM Limit",name:"model_rpm_limit",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:'{"gpt-4": 100, "claude-v1": 200}'})}),(0,c.jsx)(A.Z.Item,{label:"Guardrails",name:"guardrails",children:g&&(0,c.jsx)(sx,{onChange:e=>{N.setFieldValue("guardrails",e)},accessToken:g,disabled:!y})}),(0,c.jsx)(A.Z.Item,{label:"Prompts",name:"prompts",children:(0,c.jsx)(B.Z,{title:y?"":"Setting prompts by key is a premium feature",placement:"top",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},disabled:!y,placeholder:y?Array.isArray(null===(m=u.metadata)||void 0===m?void 0:m.prompts)&&u.metadata.prompts.length>0?"Current: ".concat(u.metadata.prompts.join(", ")):"Select or enter prompts":"Premium feature - Upgrade to set prompts by key",options:k.map(e=>({value:e,label:e}))})})}),(0,c.jsx)(A.Z.Item,{label:"Vector Stores",name:"vector_stores",children:(0,c.jsx)(U,{onChange:e=>N.setFieldValue("vector_stores",e),value:N.getFieldValue("vector_stores"),accessToken:g||"",placeholder:"Select vector stores"})}),(0,c.jsx)(A.Z.Item,{label:"MCP Servers / Access Groups",name:"mcp_servers_and_groups",children:(0,c.jsx)(eD,{onChange:e=>N.setFieldValue("mcp_servers_and_groups",e),value:N.getFieldValue("mcp_servers_and_groups"),accessToken:g||"",placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{name:"mcp_tool_permissions",initialValue:{},hidden:!0,children:(0,c.jsx)(L.default,{type:"hidden"})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.mcp_servers_and_groups!==s.mcp_servers_and_groups||e.mcp_tool_permissions!==s.mcp_tool_permissions,children:()=>{var e;return(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsx)(eU,{accessToken:g||"",selectedServers:(null===(e=N.getFieldValue("mcp_servers_and_groups"))||void 0===e?void 0:e.servers)||[],toolPermissions:N.getFieldValue("mcp_tool_permissions")||{},onChange:e=>N.setFieldsValue({mcp_tool_permissions:e})})})}}),(0,c.jsx)(A.Z.Item,{label:"Team ID",name:"team_id",children:(0,c.jsx)(I.default,{placeholder:"Select team",style:{width:"100%"},children:null==p?void 0:p.map(e=>(0,c.jsx)(I.default.Option,{value:e.team_id,children:"".concat(e.team_alias," (").concat(e.team_id,")")},e.team_id))})}),(0,c.jsx)(A.Z.Item,{label:"Logging Settings",name:"logging_settings",children:(0,c.jsx)(so,{value:N.getFieldValue("logging_settings"),onChange:e=>N.setFieldValue("logging_settings",e),disabledCallbacks:z,onDisabledCallbacksChange:e=>{q(X(e)),N.setFieldValue("disabled_callbacks",e)}})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(L.default.TextArea,{rows:10})}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(eQ,{form:N,autoRotationEnabled:V,onAutoRotationChange:K,rotationInterval:G,onRotationIntervalChange:H})}),(0,c.jsx)(A.Z.Item,{name:"token",hidden:!0,children:(0,c.jsx)(L.default,{})}),(0,c.jsx)(A.Z.Item,{name:"disabled_callbacks",hidden:!0,children:(0,c.jsx)(L.default,{})}),(0,c.jsx)(A.Z.Item,{name:"auto_rotate",hidden:!0,children:(0,c.jsx)(L.default,{})}),(0,c.jsx)(A.Z.Item,{name:"rotation_interval",hidden:!0,children:(0,c.jsx)(L.default,{})}),(0,c.jsx)("div",{className:"sticky z-10 bg-white p-4 border-t border-gray-200 bottom-[-1.5rem] inset-x-[-1.5rem]",children:(0,c.jsxs)("div",{className:"flex justify-end items-center gap-2",children:[(0,c.jsx)(P.ZP,{onClick:x,children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})})]})}function sp(e){let{selectedToken:s,visible:t,onClose:l,accessToken:a,premiumUser:r,setAccessToken:i,onKeyUpdate:n}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[f,N]=(0,d.useState)(!1),[Z,w]=(0,d.useState)(!1),[I,E]=(0,d.useState)(null);(0,d.useEffect)(()=>{t&&s&&a&&(o.setFieldsValue({key_alias:s.key_alias,max_budget:s.max_budget,tpm_limit:s.tpm_limit,rpm_limit:s.rpm_limit,duration:s.duration||""}),E(a),w(s.key_name===a))},[t,s,o,a]),(0,d.useEffect)(()=>{t||(u(null),N(!1),w(!1),E(null),o.resetFields())},[t,o]);let P=e=>{if(!e)return null;try{let s;let t=new Date;if(e.endsWith("s"))s=(0,e6.Z)(t,{seconds:parseInt(e)});else if(e.endsWith("h"))s=(0,e6.Z)(t,{hours:parseInt(e)});else if(e.endsWith("d"))s=(0,e6.Z)(t,{days:parseInt(e)});else throw Error("Invalid duration format");return s.toLocaleString()}catch(e){return null}};(0,d.useEffect)(()=>{(null==x?void 0:x.duration)?g(P(x.duration)):g(null)},[null==x?void 0:x.duration]);let L=async()=>{if(s&&I){N(!0);try{let e=await o.validateFields(),t=await (0,j.regenerateKeyCall)(I,s.token||s.token_id,e);u(t.key),eo.Z.success("API Key regenerated successfully"),console.log("Full regenerate response:",t);let l={token:t.token||t.key_id||s.token,key_name:t.key,max_budget:e.max_budget,tpm_limit:e.tpm_limit,rpm_limit:e.rpm_limit,expires:e.duration?P(e.duration):s.expires,...t};console.log("Updated key data with new token:",l),Z&&(E(t.key),i&&i(t.key)),n&&n(l),N(!1)}catch(e){console.error("Error regenerating key:",e),eo.Z.fromBackend(e),N(!1)}}},M=()=>{u(null),N(!1),w(!1),E(null),o.resetFields(),l()};return(0,c.jsx)(T.Z,{title:"Regenerate API Key",open:t,onCancel:M,footer:m?[(0,c.jsx)(b.Z,{onClick:M,children:"Close"},"close")]:[(0,c.jsx)(b.Z,{onClick:M,className:"mr-2",children:"Cancel"},"cancel"),(0,c.jsx)(b.Z,{onClick:L,disabled:f,children:f?"Regenerating...":"Regenerate"},"regenerate")],children:m?(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:"Regenerated Key"}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)("p",{children:["Please replace your old key with the new key generated. For security reasons,"," ",(0,c.jsx)("b",{children:"you will not be able to view it again"})," through your LiteLLM account. If you lose this secret key, you will need to generate a new one."]})}),(0,c.jsxs)(v.Z,{numColSpan:1,children:[(0,c.jsx)(k.Z,{className:"mt-3",children:"Key Alias:"}),(0,c.jsx)("div",{className:"bg-gray-100 p-2 rounded mb-2",children:(0,c.jsx)("pre",{className:"break-words whitespace-normal",children:(null==s?void 0:s.key_alias)||"No alias set"})}),(0,c.jsx)(k.Z,{className:"mt-3",children:"New API Key:"}),(0,c.jsx)("div",{className:"bg-gray-100 p-2 rounded mb-2",children:(0,c.jsx)("pre",{className:"break-words whitespace-normal",children:m})}),(0,c.jsx)(C.CopyToClipboard,{text:m,onCopy:()=>eo.Z.success("API Key copied to clipboard"),children:(0,c.jsx)(b.Z,{className:"mt-3",children:"Copy API Key"})})]})]}):(0,c.jsxs)(A.Z,{form:o,layout:"vertical",onValuesChange:e=>{"duration"in e&&h(s=>({...s,duration:e.duration}))},children:[(0,c.jsx)(A.Z.Item,{name:"key_alias",label:"Key Alias",children:(0,c.jsx)(_.Z,{disabled:!0})}),(0,c.jsx)(A.Z.Item,{name:"max_budget",label:"Max Budget (USD)",children:(0,c.jsx)(e8.Z,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"tpm_limit",label:"TPM Limit",children:(0,c.jsx)(e8.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"rpm_limit",label:"RPM Limit",children:(0,c.jsx)(e8.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"duration",label:"Expire Key (eg: 30s, 30h, 30d)",className:"mt-8",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsxs)("div",{className:"mt-2 text-sm text-gray-500",children:["Current expiry: ",(null==s?void 0:s.expires)?new Date(s.expires).toLocaleString():"Never"]}),p&&(0,c.jsxs)("div",{className:"mt-2 text-sm text-green-600",children:["New expiry: ",p]})]})})}var sg=t(79814),sj=function(e){let{vectorStores:s,accessToken:t}=e,[l,a]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{if(t&&0!==s.length)try{let e=await (0,j.vectorStoreListCall)(t);e.data&&a(e.data.map(e=>({vector_store_id:e.vector_store_id,vector_store_name:e.vector_store_name})))}catch(e){console.error("Error fetching vector stores:",e)}})()},[t,s.length]);let r=e=>{let s=l.find(s=>s.vector_store_id===e);return s?"".concat(s.vector_store_name||s.vector_store_id," (").concat(s.vector_store_id,")"):e};return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sg.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Vector Stores"}),(0,c.jsx)(se.Z,{color:"blue",size:"xs",children:s.length})]}),s.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:s.map((e,s)=>(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-blue-50 border border-blue-200 text-blue-800 text-sm font-medium",children:r(e)},s))}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(sg.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No vector stores configured"})]})]})},sf=t(25327),sv=t(86462),sy=t(47686),sb=function(e){let{mcpServers:s,mcpAccessGroups:l=[],mcpToolPermissions:a={},accessToken:r}=e,[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(new Set),h=e=>{x(s=>{let t=new Set(s);return t.has(e)?t.delete(e):t.add(e),t})};(0,d.useEffect)(()=>{(async()=>{if(r&&s.length>0)try{let e=await (0,j.fetchMCPServers)(r);e&&Array.isArray(e)?n(e):e.data&&Array.isArray(e.data)&&n(e.data)}catch(e){console.error("Error fetching MCP servers:",e)}})()},[r,s.length]),(0,d.useEffect)(()=>{(async()=>{if(r&&l.length>0)try{let e=await Promise.resolve().then(t.bind(t,19250)).then(e=>e.fetchMCPAccessGroups(r));m(Array.isArray(e)?e:e.data||[])}catch(e){console.error("Error fetching MCP access groups:",e)}})()},[r,l.length]);let p=e=>{let s=i.find(s=>s.server_id===e);if(s){let t=e.length>7?"".concat(e.slice(0,3),"...").concat(e.slice(-4)):e;return"".concat(s.alias," (").concat(t,")")}return e},g=e=>e,f=[...s.map(e=>({type:"server",value:e})),...l.map(e=>({type:"accessGroup",value:e}))],v=f.length;return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sf.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"MCP Servers"}),(0,c.jsx)(se.Z,{color:"blue",size:"xs",children:v})]}),v>0?(0,c.jsx)("div",{className:"max-h-[400px] overflow-y-auto space-y-2 pr-1",children:f.map((e,s)=>{let t="server"===e.type?a[e.value]:void 0,l=t&&t.length>0,r=u.has(e.value);return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{onClick:()=>l&&h(e.value),className:"flex items-center gap-3 py-2 px-3 rounded-lg border border-gray-200 transition-all ".concat(l?"cursor-pointer hover:bg-gray-50 hover:border-gray-300":"bg-white"),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:"server"===e.type?(0,c.jsx)(B.Z,{title:"Full ID: ".concat(e.value),placement:"top",children:(0,c.jsxs)("div",{className:"inline-flex items-center gap-2 min-w-0",children:[(0,c.jsx)("span",{className:"inline-block w-1.5 h-1.5 bg-blue-500 rounded-full flex-shrink-0"}),(0,c.jsx)("span",{className:"text-sm font-medium text-gray-900 truncate",children:p(e.value)})]})}):(0,c.jsxs)("div",{className:"inline-flex items-center gap-2 min-w-0",children:[(0,c.jsx)("span",{className:"inline-block w-1.5 h-1.5 bg-green-500 rounded-full flex-shrink-0"}),(0,c.jsx)("span",{className:"text-sm font-medium text-gray-900 truncate",children:g(e.value)}),(0,c.jsx)("span",{className:"ml-1 px-1.5 py-0.5 text-[9px] font-semibold text-green-600 bg-green-50 border border-green-200 rounded uppercase tracking-wide flex-shrink-0",children:"Group"})]})}),l&&(0,c.jsxs)("div",{className:"flex items-center gap-1 flex-shrink-0 whitespace-nowrap",children:[(0,c.jsx)("span",{className:"text-xs font-medium text-gray-600",children:t.length}),(0,c.jsx)("span",{className:"text-xs text-gray-500",children:1===t.length?"tool":"tools"}),r?(0,c.jsx)(sv.Z,{className:"h-3.5 w-3.5 text-gray-400 ml-0.5"}):(0,c.jsx)(sy.Z,{className:"h-3.5 w-3.5 text-gray-400 ml-0.5"})]})]}),l&&r&&(0,c.jsx)("div",{className:"ml-4 pl-4 border-l-2 border-blue-200 pb-1",children:(0,c.jsx)("div",{className:"flex flex-wrap gap-1.5",children:t.map((e,s)=>(0,c.jsx)("span",{className:"inline-flex items-center px-2.5 py-1 rounded-lg bg-blue-50 border border-blue-200 text-blue-800 text-xs font-medium",children:e},s))})})]},s)})}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(sf.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No MCP servers or access groups configured"})]})]})},s_=function(e){let{objectPermission:s,variant:t="card",className:l="",accessToken:a}=e,r=(null==s?void 0:s.vector_stores)||[],i=(null==s?void 0:s.mcp_servers)||[],n=(null==s?void 0:s.mcp_access_groups)||[],o=(null==s?void 0:s.mcp_tool_permissions)||{},d=(0,c.jsxs)("div",{className:"card"===t?"grid grid-cols-1 md:grid-cols-2 gap-6":"space-y-4",children:[(0,c.jsx)(sj,{vectorStores:r,accessToken:a}),(0,c.jsx)(sb,{mcpServers:i,mcpAccessGroups:n,mcpToolPermissions:o,accessToken:a})]});return"card"===t?(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-6 ".concat(l),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Object Permissions"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500",children:"Access control for Vector Stores and MCP Servers"})]})}),d]}):(0,c.jsxs)("div",{className:"".concat(l),children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900 mb-3",children:"Object Permissions"}),d]})},sN=function(e){let{loggingConfigs:s=[],disabledCallbacks:t=[],variant:l="card",className:a=""}=e,r=e=>{var s;return(null===(s=Object.entries($).find(s=>{let[t,l]=s;return l===e}))||void 0===s?void 0:s[0])||e},i=e=>{switch(e){case"success":return"green";case"failure":return"red";case"success_and_failure":return"blue";default:return"gray"}},n=e=>{switch(e){case"success":return"Success Only";case"failure":return"Failure Only";case"success_and_failure":return"Success & Failure";default:return e}},o=(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(Y.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Logging Integrations"}),(0,c.jsx)(se.Z,{color:"blue",size:"xs",children:s.length})]}),s.length>0?(0,c.jsx)("div",{className:"space-y-3",children:s.map((e,s)=>{var t;let l=r(e.callback_name),a=null===(t=et[l])||void 0===t?void 0:t.logo;return(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 rounded-lg bg-blue-50 border border-blue-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[a?(0,c.jsx)("img",{src:a,alt:l,className:"w-5 h-5 object-contain"}):(0,c.jsx)(Y.Z,{className:"h-5 w-5 text-gray-400"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium text-blue-800",children:l}),(0,c.jsxs)(k.Z,{className:"text-xs text-blue-600",children:[Object.keys(e.callback_vars).length," parameters configured"]})]})]}),(0,c.jsx)(se.Z,{color:i(e.callback_type),size:"sm",children:n(e.callback_type)})]},s)})}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(Y.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No logging integrations configured"})]})]}),(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(H.Z,{className:"h-4 w-4 text-red-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Disabled Callbacks"}),(0,c.jsx)(se.Z,{color:"red",size:"xs",children:t.length})]}),t.length>0?(0,c.jsx)("div",{className:"space-y-3",children:t.map((e,s)=>{var t;let l=Q[e]||e,a=null===(t=et[l])||void 0===t?void 0:t.logo;return(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 rounded-lg bg-red-50 border border-red-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[a?(0,c.jsx)("img",{src:a,alt:l,className:"w-5 h-5 object-contain"}):(0,c.jsx)(H.Z,{className:"h-5 w-5 text-gray-400"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium text-red-800",children:l}),(0,c.jsx)(k.Z,{className:"text-xs text-red-600",children:"Disabled for this key"})]})]}),(0,c.jsx)(se.Z,{color:"red",size:"sm",children:"Disabled"})]},s)})}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(H.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No callbacks disabled"})]})]})]});return"card"===l?(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-6 ".concat(a),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Logging Settings"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500",children:"Active logging integrations and disabled callbacks for this key"})]})}),o]}):(0,c.jsxs)("div",{className:"".concat(a),children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900 mb-3",children:"Logging Settings"}),o]})},sZ=t(30401),sw=t(78867),sk=t(85968),sS=t(58710),sC=e=>{let{autoRotate:s=!1,rotationInterval:t,lastRotationAt:l,keyRotationAt:a,nextRotationAt:r,variant:i="card",className:n=""}=e,o=e=>{let s=new Date(e),t=s.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),l=s.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return"".concat(t," at ").concat(l)},d=(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsx)("div",{className:"space-y-3",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sn.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Auto-Rotation"}),(0,c.jsx)(se.Z,{color:s?"green":"gray",size:"xs",children:s?"Enabled":"Disabled"}),s&&t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(k.Z,{className:"text-gray-400",children:"•"}),(0,c.jsxs)(k.Z,{className:"text-sm text-gray-600",children:["Every ",t]})]})]})}),(s||l||a||r)&&(0,c.jsxs)("div",{className:"space-y-3",children:[l&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-200 rounded-md",children:[(0,c.jsx)(sS.Z,{className:"w-4 h-4 text-gray-500"}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-700",children:"Last Rotation"}),(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:o(l)})]})]}),(a||r)&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-200 rounded-md",children:[(0,c.jsx)(sS.Z,{className:"w-4 h-4 text-gray-500"}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-700",children:"Next Scheduled Rotation"}),(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:o(r||a||"")})]})]}),s&&!l&&!a&&!r&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-100 rounded-md",children:[(0,c.jsx)(sS.Z,{className:"w-4 h-4 text-gray-500"}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"No rotation history available"})]})]}),!s&&!l&&!a&&!r&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-100 rounded-md",children:[(0,c.jsx)(sn.Z,{className:"w-4 h-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"Auto-rotation is not enabled for this key"})]})]});return"card"===i?(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-6 ".concat(n),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Auto-Rotation"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500",children:"Automatic key rotation settings and status for this key"})]})}),d]}):(0,c.jsxs)("div",{className:"".concat(n),children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900 mb-3",children:"Auto-Rotation"}),d]})};function sI(e){var s,t,l,a,r;let{keyId:i,onClose:n,keyData:o,accessToken:m,userID:u,userRole:x,teams:h,onKeyDataUpdate:p,onDelete:g,premiumUser:f,setAccessToken:v,backButtonText:_="Back to Keys"}=e,[N,Z]=(0,d.useState)(!1),[w]=A.Z.useForm(),[C,I]=(0,d.useState)(!1),[T,E]=(0,d.useState)(""),[L,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)({}),[F,R]=(0,d.useState)(o),[z,U]=(0,d.useState)(null),[q,V]=(0,d.useState)(!1);if((0,d.useEffect)(()=>{o&&R(o)},[o]),(0,d.useEffect)(()=>{if(q){let e=setTimeout(()=>{V(!1)},5e3);return()=>clearTimeout(e)}},[q]),!F)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:n,className:"mb-4",children:_}),(0,c.jsx)(k.Z,{children:"Key not found"})]});let K=async e=>{try{var s,t,l,a;if(!m)return;let r=e.token;if(e.key=r,f||(delete e.guardrails,delete e.prompts),void 0!==e.vector_stores&&(e.object_permission={...F.object_permission,vector_stores:e.vector_stores||[]},delete e.vector_stores),void 0!==e.mcp_servers_and_groups){let{servers:s,accessGroups:t}=e.mcp_servers_and_groups||{servers:[],accessGroups:[]};e.object_permission={...F.object_permission,mcp_servers:s||[],mcp_access_groups:t||[]},delete e.mcp_servers_and_groups}if(void 0!==e.mcp_tool_permissions){let s=e.mcp_tool_permissions||{};Object.keys(s).length>0&&(e.object_permission={...e.object_permission,mcp_tool_permissions:s}),delete e.mcp_tool_permissions}if(e.metadata&&"string"==typeof e.metadata)try{let l=JSON.parse(e.metadata);e.metadata={...l,...(null===(s=e.guardrails)||void 0===s?void 0:s.length)>0?{guardrails:e.guardrails}:{},...e.logging_settings?{logging:e.logging_settings}:{},...(null===(t=e.disabled_callbacks)||void 0===t?void 0:t.length)>0?{litellm_disabled_callbacks:ee(e.disabled_callbacks)}:{}}}catch(e){console.error("Error parsing metadata JSON:",e),eo.Z.error("Invalid metadata JSON");return}else e.metadata={...e.metadata||{},...(null===(l=e.guardrails)||void 0===l?void 0:l.length)>0?{guardrails:e.guardrails}:{},...e.logging_settings?{logging:e.logging_settings}:{},...(null===(a=e.disabled_callbacks)||void 0===a?void 0:a.length)>0?{litellm_disabled_callbacks:ee(e.disabled_callbacks)}:{}};delete e.logging_settings,e.budget_duration&&(e.budget_duration=({daily:"24h",weekly:"7d",monthly:"30d"})[e.budget_duration]);let i=await (0,j.keyUpdateCall)(m,e);R(e=>e?{...e,...i}:void 0),p&&p(i),eo.Z.success("Key updated successfully"),Z(!1)}catch(e){eo.Z.fromBackend((0,sk.O)(e)),console.error("Error updating key:",e)}},H=async()=>{try{if(!m)return;await (0,j.keyDeleteCall)(m,F.token||F.token_id),eo.Z.success("Key deleted successfully"),g&&g(),n()}catch(e){console.error("Error deleting the key:",e),eo.Z.fromBackend(e)}E("")},Y=async(e,s)=>{await eM(e)&&(D(e=>({...e,[s]:!0})),setTimeout(()=>{D(e=>({...e,[s]:!1}))},2e3))},J=e=>{let s=new Date(e),t=s.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),l=s.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return"".concat(t," at ").concat(l)};return(0,c.jsxs)("div",{className:"w-full h-screen p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:n,className:"mb-4",children:_}),(0,c.jsx)(S.Z,{children:F.key_alias||"API Key"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer mb-2 space-y-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-xs text-gray-400 uppercase tracking-wide mt-2",children:"Key ID"}),(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono text-sm",children:F.token_id||F.token})]}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:O["key-id"]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>Y(F.token_id||F.token,"key-id"),className:"ml-2 transition-all duration-200".concat(O["key-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-500",children:F.updated_at&&F.updated_at!==F.created_at?"Updated: ".concat(J(F.updated_at)):"Created: ".concat(J(F.created_at))}),q&&(0,c.jsx)(se.Z,{color:"green",size:"xs",className:"animate-pulse",children:"Recently Regenerated"}),z&&(0,c.jsx)(se.Z,{color:"blue",size:"xs",children:"Regenerated"})]})]}),x&&eI.LQ.includes(x)&&(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(B.Z,{title:f?"":"This is a LiteLLM Enterprise feature, and requires a valid key to use.",children:(0,c.jsx)("span",{className:"inline-block",children:(0,c.jsx)(b.Z,{icon:sn.Z,variant:"secondary",onClick:()=>M(!0),className:"flex items-center",disabled:!f,children:"Regenerate Key"})})}),(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>I(!0),className:"flex items-center",children:"Delete Key"})]})]}),(0,c.jsx)(sp,{selectedToken:F,visible:L,onClose:()=>M(!1),accessToken:m,premiumUser:f,setAccessToken:v,onKeyUpdate:e=>{R(s=>{if(s)return{...s,...e,created_at:new Date().toLocaleString()}}),U(new Date),V(!0),p&&p({...e,created_at:new Date().toLocaleString()})}}),C&&(()=>{let e=(null==F?void 0:F.key_alias)||(null==F?void 0:F.token_id)||"API Key",s=T===e;return(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl w-full max-w-2xl min-h-[380px] py-6 overflow-hidden transform transition-all flex flex-col justify-between",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Delete Key"}),(0,c.jsx)("button",{onClick:()=>{I(!1),E("")},className:"text-gray-400 hover:text-gray-500 focus:outline-none",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,c.jsxs)("div",{className:"px-6 py-4",children:[(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.082 16.5c-.77.833.192 2.5 1.732 2.5z"})})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-base font-medium text-red-600",children:"Warning: You are about to delete this API key."}),(0,c.jsx)("p",{className:"text-base text-red-600 mt-2",children:"This action is irreversible and will immediately revoke access for any applications using this key."})]})]}),(0,c.jsx)("p",{className:"text-base text-gray-600 mb-5",children:"Are you sure you want to delete this API key?"}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsx)("span",{className:"underline",children:e})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:T,onChange:e=>E(e.target.value),placeholder:"Enter key name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]})]})]}),(0,c.jsxs)("div",{className:"px-6 py-4 bg-gray-50 flex justify-end gap-4",children:[(0,c.jsx)("button",{onClick:()=>{I(!1),E("")},className:"px-5 py-3 bg-white border border-gray-300 rounded-md text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:"Cancel"}),(0,c.jsx)("button",{onClick:H,disabled:!s,className:"px-5 py-3 rounded-md text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 ".concat(s?"bg-red-600 hover:bg-red-700":"bg-red-300 cursor-not-allowed"),children:"Delete Key"})]})]})})})(),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"}),(0,c.jsx)(ss.Z,{children:"Settings"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Spend"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eL(F.spend,4)]}),(0,c.jsxs)(k.Z,{children:["of"," ",null!==F.max_budget?"$".concat(eL(F.max_budget)):"Unlimited"]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Rate Limits"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["TPM: ",null!==F.tpm_limit?F.tpm_limit:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",null!==F.rpm_limit?F.rpm_limit:"Unlimited"]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Models"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:F.models&&F.models.length>0?F.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s)):(0,c.jsx)(k.Z,{children:"No models specified"})})]}),(0,c.jsx)(G.Z,{children:(0,c.jsx)(s_,{objectPermission:F.object_permission,variant:"inline",accessToken:m})}),(0,c.jsx)(sN,{loggingConfigs:sm(F.metadata),disabledCallbacks:Array.isArray(null===(s=F.metadata)||void 0===s?void 0:s.litellm_disabled_callbacks)?X(F.metadata.litellm_disabled_callbacks):[],variant:"card"}),(0,c.jsx)(sC,{autoRotate:F.auto_rotate,rotationInterval:F.rotation_interval,lastRotationAt:F.last_rotation_at,keyRotationAt:F.key_rotation_at,nextRotationAt:F.next_rotation_at,variant:"card"})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{className:"overflow-y-auto max-h-[65vh]",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Key Settings"}),!N&&x&&eI.LQ.includes(x)&&(0,c.jsx)(b.Z,{variant:"light",onClick:()=>Z(!0),children:"Edit Settings"})]}),N?(0,c.jsx)(sh,{keyData:F,onCancel:()=>Z(!1),onSubmit:K,teams:h,accessToken:m,userID:u,userRole:x,premiumUser:f}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Key ID"}),(0,c.jsx)(k.Z,{className:"font-mono",children:F.token_id||F.token})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Key Alias"}),(0,c.jsx)(k.Z,{children:F.key_alias||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Secret Key"}),(0,c.jsx)(k.Z,{className:"font-mono",children:F.key_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team ID"}),(0,c.jsx)(k.Z,{children:F.team_id||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization"}),(0,c.jsx)(k.Z,{children:F.organization_id||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created"}),(0,c.jsx)(k.Z,{children:J(F.created_at)})]}),z&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Regenerated"}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{children:J(z)}),(0,c.jsx)(se.Z,{color:"green",size:"xs",children:"Recent"})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Expires"}),(0,c.jsx)(k.Z,{children:F.expires?J(F.expires):"Never"})]}),(0,c.jsx)(sC,{autoRotate:F.auto_rotate,rotationInterval:F.rotation_interval,lastRotationAt:F.last_rotation_at,keyRotationAt:F.key_rotation_at,nextRotationAt:F.next_rotation_at,variant:"inline",className:"pt-4 border-t border-gray-200"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Spend"}),(0,c.jsxs)(k.Z,{children:["$",eL(F.spend,4)," USD"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Budget"}),(0,c.jsx)(k.Z,{children:null!==F.max_budget?"$".concat(eL(F.max_budget,2)):"Unlimited"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompts"}),(0,c.jsx)(k.Z,{children:Array.isArray(null===(t=F.metadata)||void 0===t?void 0:t.prompts)&&F.metadata.prompts.length>0?F.metadata.prompts.map((e,s)=>(0,c.jsx)("span",{className:"px-2 mr-2 py-1 bg-blue-100 rounded text-xs",children:e},s)):"No prompts specified"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:F.models&&F.models.length>0?F.models.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:e},s)):(0,c.jsx)(k.Z,{children:"No models specified"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Rate Limits"}),(0,c.jsxs)(k.Z,{children:["TPM: ",null!==F.tpm_limit?F.tpm_limit:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",null!==F.rpm_limit?F.rpm_limit:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["Max Parallel Requests:"," ",null!==F.max_parallel_requests?F.max_parallel_requests:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["Model TPM Limits:"," ",(null===(l=F.metadata)||void 0===l?void 0:l.model_tpm_limit)?JSON.stringify(F.metadata.model_tpm_limit):"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["Model RPM Limits:"," ",(null===(a=F.metadata)||void 0===a?void 0:a.model_rpm_limit)?JSON.stringify(F.metadata.model_rpm_limit):"Unlimited"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Metadata"}),(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:su(F.metadata)})]}),(0,c.jsx)(s_,{objectPermission:F.object_permission,variant:"inline",className:"pt-4 border-t border-gray-200",accessToken:m}),(0,c.jsx)(sN,{loggingConfigs:sm(F.metadata),disabledCallbacks:Array.isArray(null===(r=F.metadata)||void 0===r?void 0:r.litellm_disabled_callbacks)?X(F.metadata.litellm_disabled_callbacks):[],variant:"inline",className:"pt-4 border-t border-gray-200"})]})]})})]})]})]})}var sA=t(2356),sT=e=>{let{options:s,onApplyFilters:t,onResetFilters:l,initialValues:a={},buttonLabel:r="Filters"}=e,[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(a),[u,x]=(0,d.useState)({}),[h,p]=(0,d.useState)({}),[g,j]=(0,d.useState)({}),[f,v]=(0,d.useState)({}),y=(0,d.useCallback)(eC()(async(e,s)=>{if(s.isSearchable&&s.searchFn){p(e=>({...e,[s.name]:!0}));try{let t=await s.searchFn(e);x(e=>({...e,[s.name]:t}))}catch(e){console.error("Error searching:",e),x(e=>({...e,[s.name]:[]}))}finally{p(e=>({...e,[s.name]:!1}))}}},300),[]),b=(0,d.useCallback)(async e=>{if(e.isSearchable&&e.searchFn&&!f[e.name]){p(s=>({...s,[e.name]:!0})),v(s=>({...s,[e.name]:!0}));try{let s=await e.searchFn("");x(t=>({...t,[e.name]:s}))}catch(s){console.error("Error loading initial options:",s),x(s=>({...s,[e.name]:[]}))}finally{p(s=>({...s,[e.name]:!1}))}}},[f]);(0,d.useEffect)(()=>{i&&s.forEach(e=>{e.isSearchable&&!f[e.name]&&b(e)})},[i,s,b,f]);let _=(e,s)=>{let l={...o,[e]:s};m(l),t(l)},N=(e,s)=>{e&&s.isSearchable&&!f[s.name]&&b(s)};return(0,c.jsxs)("div",{className:"w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-6",children:[(0,c.jsx)(P.ZP,{icon:(0,c.jsx)(sA.Z,{className:"h-4 w-4"}),onClick:()=>n(!i),className:"flex items-center gap-2",children:r}),(0,c.jsx)(P.ZP,{onClick:()=>{let e={};s.forEach(s=>{e[s.name]=""}),m(e),l()},children:"Reset Filters"})]}),i&&(0,c.jsx)("div",{className:"grid grid-cols-3 gap-x-6 gap-y-4 mb-6",children:["Team ID","Status","Organization ID","Key Alias","User ID","End User","Key Hash","Model"].map(e=>{let t=s.find(s=>s.label===e||s.name===e);return t?(0,c.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,c.jsx)("label",{className:"text-sm text-gray-600",children:t.label||t.name}),t.isSearchable?(0,c.jsx)(I.default,{showSearch:!0,className:"w-full",placeholder:"Search ".concat(t.label||t.name,"..."),value:o[t.name]||void 0,onChange:e=>_(t.name,e),onDropdownVisibleChange:e=>N(e,t),onSearch:e=>{j(s=>({...s,[t.name]:e})),t.searchFn&&y(e,t)},filterOption:!1,loading:h[t.name],options:u[t.name]||[],allowClear:!0,notFoundContent:h[t.name]?"Loading...":"No results found"}):t.options?(0,c.jsx)(I.default,{className:"w-full",placeholder:"Select ".concat(t.label||t.name,"..."),value:o[t.name]||void 0,onChange:e=>_(t.name,e),allowClear:!0,children:t.options.map(e=>(0,c.jsx)(I.default.Option,{value:e.value,children:e.label},e.value))}):(0,c.jsx)(L.default,{className:"w-full",placeholder:"Enter ".concat(t.label||t.name,"..."),value:o[t.name]||"",onChange:e=>_(t.name,e.target.value),allowClear:!0})]},t.name):null})})]})},sE=t(16593);let sP=async e=>{if(!e)return[];try{let{aliases:s}=await (0,j.keyAliasesCall)(e);return Array.from(new Set((s||[]).filter(Boolean)))}catch(e){return console.error("Error fetching all key aliases:",e),[]}},sL=async(e,s)=>{if(!e)return[];try{let t=[],l=1,a=!0;for(;a;){let r=await (0,j.teamListCall)(e,s||null,null);t=[...t,...r],l{if(!e)return[];try{let s=[],t=1,l=!0;for(;l;){let a=await (0,j.organizationListCall)(e);s=[...s,...a],t{let[e,s]=(0,d.useState)("http://localhost:4000");return(0,d.useEffect)(()=>{{let{protocol:e,host:t}=window.location;s("".concat(e,"//").concat(t))}},[]),e};var sD=t(71594),sF=t(24525),sR=t(47323),sz=t(21626),sU=t(97214),sq=t(28241),sV=t(58834),sB=t(69552),sK=t(71876),sG=t(44633),sH=t(49084);function sY(e){let{keys:s,setKeys:t,isLoading:l=!1,pagination:a,onPageChange:r,pageSize:i=50,teams:n,selectedTeam:o,setSelectedTeam:m,selectedKeyAlias:u,setSelectedKeyAlias:x,accessToken:h,userID:p,userRole:g,organizations:f,setCurrentOrg:v,refresh:y,onSortChange:_,currentSort:N,premiumUser:Z,setAccessToken:w}=e,[S,C]=(0,d.useState)(null),[I,A]=(0,d.useState)([]),[T,E]=d.useState(()=>N?[{id:N.sortBy,desc:"desc"===N.sortOrder}]:[{id:"created_at",desc:!0}]),[P,L]=(0,d.useState)({}),{filters:M,filteredKeys:O,allKeyAliases:D,allTeams:R,allOrganizations:z,handleFilterChange:U,handleFilterReset:q}=function(e){let{keys:s,teams:t,organizations:l,accessToken:a}=e,r={"Team ID":"","Organization ID":"","Key Alias":"","User ID":"","Sort By":"created_at","Sort Order":"desc"},[i,n]=(0,d.useState)(r),[o,c]=(0,d.useState)(t||[]),[m,u]=(0,d.useState)(l||[]),[x,h]=(0,d.useState)(s),p=(0,d.useRef)(0),g=(0,d.useCallback)(eC()(async e=>{if(!a)return;let s=Date.now();p.current=s;try{let t=await (0,j.keyListCall)(a,e["Organization ID"]||null,e["Team ID"]||null,e["Key Alias"]||null,e["User ID"]||null,e["Key Hash"]||null,1,25,e["Sort By"]||null,e["Sort Order"]||null);s===p.current&&t&&(h(t.keys),console.log("called from debouncedSearch filters:",JSON.stringify(e)),console.log("called from debouncedSearch data:",JSON.stringify(t)))}catch(e){console.error("Error searching users:",e)}},300),[a]);(0,d.useEffect)(()=>{if(!s){h([]);return}let e=[...s];i["Team ID"]&&(e=e.filter(e=>e.team_id===i["Team ID"])),i["Organization ID"]&&(e=e.filter(e=>e.organization_id===i["Organization ID"])),h(e)},[s,i]),(0,d.useEffect)(()=>{let e=async()=>{let e=await sL(a);e.length>0&&c(e);let s=await sM(a);s.length>0&&u(s)};a&&e()},[a]);let f=(0,sE.a)({queryKey:["allKeys"],queryFn:async()=>{if(!a)throw Error("Access token required");return await sP(a)},enabled:!!a}).data||[];return(0,d.useEffect)(()=>{t&&t.length>0&&c(e=>e.length{l&&l.length>0&&u(e=>e.length{n({"Team ID":e["Team ID"]||"","Organization ID":e["Organization ID"]||"","Key Alias":e["Key Alias"]||"","User ID":e["User ID"]||"","Sort By":e["Sort By"]||"created_at","Sort Order":e["Sort Order"]||"desc"}),g({...i,...e})},handleFilterReset:()=>{n(r),g(r)}}}({keys:s,teams:n,organizations:f,accessToken:h});(0,d.useEffect)(()=>{if(h){let e=s.map(e=>e.user_id).filter(e=>null!==e);(async()=>{A((await (0,j.userListCall)(h,e,1,100)).users)})()}},[h,s]),(0,d.useEffect)(()=>{if(y){let e=()=>{y()};return window.addEventListener("storage",e),()=>{window.removeEventListener("storage",e)}}},[y]);let V=[{id:"expander",header:()=>null,cell:e=>{let{row:s}=e;return s.getCanExpand()?(0,c.jsx)("button",{onClick:s.getToggleExpandedHandler(),style:{cursor:"pointer"},children:s.getIsExpanded()?"▼":"▶"}):null}},{id:"token",accessorKey:"token",header:"Key ID",cell:e=>(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.getValue(),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>C(e.getValue()),children:e.getValue()?"".concat(e.getValue().slice(0,7),"..."):"-"})})})},{id:"key_alias",accessorKey:"key_alias",header:"Key Alias",cell:e=>{let s=e.getValue();return(0,c.jsx)(B.Z,{title:s,children:s?s.length>20?"".concat(s.slice(0,20),"..."):s:"-"})}},{id:"key_name",accessorKey:"key_name",header:"Secret Key",cell:e=>(0,c.jsx)("span",{className:"font-mono text-xs",children:e.getValue()})},{id:"team_alias",accessorKey:"team_id",header:"Team Alias",cell:e=>{let{row:s,getValue:t}=e,l=t(),a=null==n?void 0:n.find(e=>e.team_id===l);return(null==a?void 0:a.team_alias)||"Unknown"}},{id:"team_id",accessorKey:"team_id",header:"Team ID",cell:e=>(0,c.jsx)(B.Z,{title:e.getValue(),children:e.getValue()?"".concat(e.getValue().slice(0,7),"..."):"-"})},{id:"organization_id",accessorKey:"organization_id",header:"Organization ID",cell:e=>e.getValue()?e.renderValue():"-"},{id:"user_email",accessorKey:"user_id",header:"User Email",cell:e=>{let s=e.getValue(),t=I.find(e=>e.user_id===s);return(null==t?void 0:t.user_email)?(0,c.jsx)(B.Z,{title:null==t?void 0:t.user_email,children:(0,c.jsxs)("span",{children:[null==t?void 0:t.user_email.slice(0,20),"..."]})}):"-"}},{id:"user_id",accessorKey:"user_id",header:"User ID",cell:e=>{let s=e.getValue();return s&&s.length>15?(0,c.jsx)(B.Z,{title:s,children:(0,c.jsxs)("span",{children:[s.slice(0,7),"..."]})}):s||"-"}},{id:"created_at",accessorKey:"created_at",header:"Created At",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleDateString():"-"}},{id:"created_by",accessorKey:"created_by",header:"Created By",cell:e=>{let s=e.getValue();return s&&s.length>15?(0,c.jsx)(B.Z,{title:s,children:(0,c.jsxs)("span",{children:[s.slice(0,7),"..."]})}):s}},{id:"updated_at",accessorKey:"updated_at",header:"Updated At",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleDateString():"Never"}},{id:"expires",accessorKey:"expires",header:"Expires",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleDateString():"Never"}},{id:"spend",accessorKey:"spend",header:"Spend (USD)",cell:e=>eL(e.getValue(),4)},{id:"max_budget",accessorKey:"max_budget",header:"Budget (USD)",cell:e=>{let s=e.getValue();return null===s?"Unlimited":"$".concat(eL(s))}},{id:"budget_reset_at",accessorKey:"budget_reset_at",header:"Budget Reset",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleString():"Never"}},{id:"models",accessorKey:"models",header:"Models",cell:e=>{let s=e.getValue();return(0,c.jsx)("div",{className:"flex flex-col py-2",children:Array.isArray(s)?(0,c.jsx)("div",{className:"flex flex-col",children:0===s.length?(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"flex items-start",children:[s.length>3&&(0,c.jsx)("div",{children:(0,c.jsx)(sR.Z,{icon:P[e.row.id]?sv.Z:sy.Z,className:"cursor-pointer",size:"xs",onClick:()=>{L(s=>({...s,[e.row.id]:!s[e.row.id]}))}})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[s.slice(0,3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s)),s.length>3&&!P[e.row.id]&&(0,c.jsx)(se.Z,{size:"xs",color:"gray",className:"cursor-pointer",children:(0,c.jsxs)(k.Z,{children:["+",s.length-3," ",s.length-3==1?"more model":"more models"]})}),P[e.row.id]&&(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:s.slice(3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s+3):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s+3))})]})]})})}):null})}},{id:"rate_limits",header:"Rate Limits",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:["TPM: ",null!==t.tpm_limit?t.tpm_limit:"Unlimited"]}),(0,c.jsxs)("div",{children:["RPM: ",null!==t.rpm_limit?t.rpm_limit:"Unlimited"]})]})}}];console.log("keys: ".concat(JSON.stringify(s)));let K=(0,sD.b7)({data:O,columns:V.filter(e=>"expander"!==e.id),state:{sorting:T},onSortingChange:e=>{let s="function"==typeof e?e(T):e;if(console.log("newSorting: ".concat(JSON.stringify(s))),E(s),s&&s.length>0){let e=s[0],t=e.id,l=e.desc?"desc":"asc";console.log("sortBy: ".concat(t,", sortOrder: ").concat(l)),U({...M,"Sort By":t,"Sort Order":l}),null==_||_(t,l)}},getCoreRowModel:(0,sF.sC)(),getSortedRowModel:(0,sF.tj)(),enableSorting:!0,manualSorting:!1});return d.useEffect(()=>{N&&E([{id:N.sortBy,desc:"desc"===N.sortOrder}])},[N]),(0,c.jsx)("div",{className:"w-full h-full overflow-hidden",children:S?(0,c.jsx)(sI,{keyId:S,onClose:()=>C(null),keyData:O.find(e=>e.token===S),onKeyDataUpdate:e=>{t(s=>s.map(s=>s.token===e.token?eP(s,e):s)),y&&y()},onDelete:()=>{t(e=>e.filter(e=>e.token!==S)),y&&y()},accessToken:h,userID:p,userRole:g,teams:R,premiumUser:Z,setAccessToken:w}):(0,c.jsxs)("div",{className:"border-b py-4 flex-1 overflow-hidden",children:[(0,c.jsx)("div",{className:"w-full mb-6",children:(0,c.jsx)(sT,{options:[{name:"Team ID",label:"Team ID",isSearchable:!0,searchFn:async e=>R&&0!==R.length?R.filter(s=>s.team_id.toLowerCase().includes(e.toLowerCase())||s.team_alias&&s.team_alias.toLowerCase().includes(e.toLowerCase())).map(e=>({label:"".concat(e.team_alias||e.team_id," (").concat(e.team_id,")"),value:e.team_id})):[]},{name:"Organization ID",label:"Organization ID",isSearchable:!0,searchFn:async e=>z&&0!==z.length?z.filter(s=>{var t,l;return null!==(l=null===(t=s.organization_id)||void 0===t?void 0:t.toLowerCase().includes(e.toLowerCase()))&&void 0!==l&&l}).filter(e=>null!==e.organization_id&&void 0!==e.organization_id).map(e=>({label:"".concat(e.organization_id||"Unknown"," (").concat(e.organization_id,")"),value:e.organization_id})):[]},{name:"Key Alias",label:"Key Alias",isSearchable:!0,searchFn:async e=>D.filter(s=>s.toLowerCase().includes(e.toLowerCase())).map(e=>({label:e,value:e}))},{name:"User ID",label:"User ID",isSearchable:!1},{name:"Key Hash",label:"Key Hash",isSearchable:!1}],onApplyFilters:U,initialValues:M,onResetFilters:q})}),(0,c.jsxs)("div",{className:"flex items-center justify-between w-full mb-4",children:[(0,c.jsxs)("span",{className:"inline-flex text-sm text-gray-700",children:["Showing"," ",l?"...":"".concat((a.currentPage-1)*i+1," - ").concat(Math.min(a.currentPage*i,a.totalCount))," ","of ",l?"...":a.totalCount," results"]}),(0,c.jsxs)("div",{className:"inline-flex items-center gap-2",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Page ",l?"...":a.currentPage," of ",l?"...":a.totalPages]}),(0,c.jsx)("button",{onClick:()=>r(a.currentPage-1),disabled:l||1===a.currentPage,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Previous"}),(0,c.jsx)("button",{onClick:()=>r(a.currentPage+1),disabled:l||a.currentPage===a.totalPages,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Next"})]})]}),(0,c.jsx)("div",{className:"h-[75vh] overflow-auto",children:(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sz.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sV.Z,{children:K.getHeaderGroups().map(e=>(0,c.jsx)(sK.Z,{children:e.headers.map(e=>(0,c.jsx)(sB.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sD.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sv.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sU.Z,{children:l?(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sq.Z,{colSpan:V.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"\uD83D\uDE85 Loading keys..."})})})}):O.length>0?K.getRowModel().rows.map(e=>(0,c.jsx)(sK.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sq.Z,{style:{maxWidth:"8-x",whiteSpace:"pre-wrap",overflow:"hidden"},className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("models"===e.column.id&&e.getValue().length>3?"px-0":""),children:(0,sD.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sq.Z,{colSpan:V.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No keys found"})})})})})]})})})})]})})}var sJ=e=>{let{userID:s,userRole:t,accessToken:l,selectedTeam:a,setSelectedTeam:r,data:i,setData:n,teams:o,premiumUser:m,currentOrg:u,organizations:x,setCurrentOrg:h,selectedKeyAlias:p,setSelectedKeyAlias:g,createClicked:f,setAccessToken:N}=e,[Z,w]=(0,d.useState)(!1),[I,E]=(0,d.useState)(!1),[P,L]=(0,d.useState)(null),[M,O]=(0,d.useState)(""),[F,R]=(0,d.useState)(null),[z,U]=(0,d.useState)(null),[q,V]=(0,d.useState)((null==a?void 0:a.team_id)||"");(0,d.useEffect)(()=>{V((null==a?void 0:a.team_id)||"")},[a]);let{keys:B,isLoading:K,error:G,pagination:H,refresh:Y,setKeys:J}=e7({selectedTeam:a||void 0,currentOrg:u,selectedKeyAlias:p,accessToken:l||"",createClicked:f}),[W,$]=(0,d.useState)(!1),[Q,X]=(0,d.useState)(!1),[ee,es]=(0,d.useState)(null),[et,el]=(0,d.useState)([]),ea=new Set,[er,ei]=(0,d.useState)(!1),[en,ec]=(0,d.useState)(!1),[ed,em]=(0,d.useState)(null),[eu,ex]=(0,d.useState)(null),[eh]=A.Z.useForm(),[ep,eg]=(0,d.useState)(null),[ej,ef]=(0,d.useState)(ea),[ev,ey]=(0,d.useState)([]);(0,d.useEffect)(()=>{console.log("in calculateNewExpiryTime for selectedToken",ee),(null==eu?void 0:eu.duration)?eg((e=>{if(!e)return null;try{let s;let t=new Date;if(e.endsWith("s"))s=(0,e6.Z)(t,{seconds:parseInt(e)});else if(e.endsWith("h"))s=(0,e6.Z)(t,{hours:parseInt(e)});else if(e.endsWith("d"))s=(0,e6.Z)(t,{days:parseInt(e)});else throw Error("Invalid duration format");return s.toLocaleString("en-US",{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0})}catch(e){return null}})(eu.duration)):eg(null),console.log("calculateNewExpiryTime:",ep)},[ee,null==eu?void 0:eu.duration]),(0,d.useEffect)(()=>{(async()=>{try{if(null===s||null===t||null===l)return;let e=await D(s,t,l);e&&el(e)}catch(e){eo.Z.error({description:"Error fetching user models"})}})()},[l,s,t]),(0,d.useEffect)(()=>{if(o){let e=new Set;o.forEach((s,t)=>{let l=s.team_id;e.add(l)}),ef(e)}},[o]);let eb=async()=>{if(null!=P&&null!=B){try{if(!l)return;await (0,j.keyDeleteCall)(l,P);let e=B.filter(e=>e.token!==P);J(e)}catch(e){eo.Z.error({description:"Error deleting the key"})}E(!1),L(null),O("")}},e_=()=>{E(!1),L(null),O("")},eN=(e,s)=>{ex(t=>({...t,[e]:s}))},eZ=async()=>{if(!m){eo.Z.warning({description:"Regenerate API Key is an Enterprise feature. Please upgrade to use this feature."});return}if(null!=ee)try{let e=await eh.validateFields();if(!l)return;let s=await (0,j.regenerateKeyCall)(l,ee.token||ee.token_id,e);if(em(s.key),i){let t=i.map(t=>t.token===(null==ee?void 0:ee.token)?{...t,key_name:s.key_name,...e}:t);n(t)}ec(!1),eh.resetFields(),eo.Z.success({description:"API Key regenerated successfully"})}catch(e){console.error("Error regenerating key:",e),eo.Z.error({description:"Failed to regenerate API Key"})}};return(0,c.jsxs)("div",{children:[(0,c.jsx)(sY,{keys:B,setKeys:J,isLoading:K,pagination:H,onPageChange:e=>{Y({page:e})},pageSize:100,teams:o,selectedTeam:a,setSelectedTeam:r,accessToken:l,userID:s,userRole:t,organizations:x,setCurrentOrg:h,refresh:Y,selectedKeyAlias:p,setSelectedKeyAlias:g,premiumUser:m,setAccessToken:N}),I&&(()=>{let e=null==B?void 0:B.find(e=>e.token===P),s=(null==e?void 0:e.key_alias)||(null==e?void 0:e.token_id)||P,t=M===s;return(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl w-full max-w-2xl min-h-[380px] py-6 overflow-hidden transform transition-all flex flex-col justify-between",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Delete Key"}),(0,c.jsx)("button",{onClick:()=>{e_(),O("")},className:"text-gray-400 hover:text-gray-500 focus:outline-none",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,c.jsxs)("div",{className:"px-6 py-4",children:[(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.082 16.5c-.77.833.192 2.5 1.732 2.5z"})})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-base font-medium text-red-600",children:"Warning: You are about to delete this API key."}),(0,c.jsx)("p",{className:"text-base text-red-600 mt-2",children:"This action is irreversible and will immediately revoke access for any applications using this key."})]})]}),(0,c.jsx)("p",{className:"text-base text-gray-600 mb-5",children:"Are you sure you want to delete this API key?"}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsx)("span",{className:"underline",children:s})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:M,onChange:e=>O(e.target.value),placeholder:"Enter key name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]})]})]}),(0,c.jsxs)("div",{className:"px-6 py-4 bg-gray-50 flex justify-end gap-4",children:[(0,c.jsx)("button",{onClick:()=>{e_(),O("")},className:"px-5 py-3 bg-white border border-gray-300 rounded-md text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:"Cancel"}),(0,c.jsx)("button",{onClick:eb,disabled:!t,className:"px-5 py-3 rounded-md text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 ".concat(t?"bg-red-600 hover:bg-red-700":"bg-red-300 cursor-not-allowed"),children:"Delete Key"})]})]})})})(),(0,c.jsx)(T.Z,{title:"Regenerate API Key",visible:en,onCancel:()=>{ec(!1),eh.resetFields()},footer:[(0,c.jsx)(b.Z,{onClick:()=>{ec(!1),eh.resetFields()},className:"mr-2",children:"Cancel"},"cancel"),(0,c.jsx)(b.Z,{onClick:eZ,disabled:!m,children:m?"Regenerate":"Upgrade to Regenerate"},"regenerate")],children:m?(0,c.jsxs)(A.Z,{form:eh,layout:"vertical",onValuesChange:(e,s)=>{"duration"in e&&eN("duration",e.duration)},children:[(0,c.jsx)(A.Z.Item,{name:"key_alias",label:"Key Alias",children:(0,c.jsx)(_.Z,{disabled:!0})}),(0,c.jsx)(A.Z.Item,{name:"max_budget",label:"Max Budget (USD)",children:(0,c.jsx)(e8.Z,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"tpm_limit",label:"TPM Limit",children:(0,c.jsx)(e8.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"rpm_limit",label:"RPM Limit",children:(0,c.jsx)(e8.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"duration",label:"Expire Key (eg: 30s, 30h, 30d)",className:"mt-8",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsxs)("div",{className:"mt-2 text-sm text-gray-500",children:["Current expiry:"," ",(null==ee?void 0:ee.expires)!=null?new Date(ee.expires).toLocaleString():"Never"]}),ep&&(0,c.jsxs)("div",{className:"mt-2 text-sm text-green-600",children:["New expiry: ",ep]})]}):(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"mb-2 text-gray-500 italic text-[12px]",children:"Upgrade to use this feature"}),(0,c.jsx)(b.Z,{variant:"primary",className:"mb-2",children:(0,c.jsx)("a",{href:"https://calendly.com/d/4mp-gd3-k5k/litellm-1-1-onboarding-chat",target:"_blank",children:"Get Free Trial"})})]})}),ed&&(0,c.jsx)(T.Z,{visible:!!ed,onCancel:()=>em(null),footer:[(0,c.jsx)(b.Z,{onClick:()=>em(null),children:"Close"},"close")],children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:"Regenerated Key"}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)("p",{children:["Please replace your old key with the new key generated. For security reasons,"," ",(0,c.jsx)("b",{children:"you will not be able to view it again"})," through your LiteLLM account. If you lose this secret key, you will need to generate a new one."]})}),(0,c.jsxs)(v.Z,{numColSpan:1,children:[(0,c.jsx)(k.Z,{className:"mt-3",children:"Key Alias:"}),(0,c.jsx)("div",{style:{background:"#f8f8f8",padding:"10px",borderRadius:"5px",marginBottom:"10px"},children:(0,c.jsx)("pre",{style:{wordWrap:"break-word",whiteSpace:"normal"},children:(null==ee?void 0:ee.key_alias)||"No alias set"})}),(0,c.jsx)(k.Z,{className:"mt-3",children:"New API Key:"}),(0,c.jsx)("div",{style:{background:"#f8f8f8",padding:"10px",borderRadius:"5px",marginBottom:"10px"},children:(0,c.jsx)("pre",{style:{wordWrap:"break-word",whiteSpace:"normal"},children:ed})}),(0,c.jsx)(C.CopyToClipboard,{text:ed,onCopy:()=>eo.Z.success({description:"API Key copied to clipboard"}),children:(0,c.jsx)(b.Z,{className:"mt-3",children:"Copy API Key"})})]})]})})]})},sW=t(12011),s$=t(3914),sQ=e=>{let{userID:s,userRole:t,teams:l,keys:a,setUserRole:r,userEmail:i,setUserEmail:n,setTeams:o,setKeys:x,premiumUser:h,organizations:p,addKey:g,createClicked:b}=e,[_,N]=(0,d.useState)(null),[Z,w]=(0,d.useState)(null),k=(0,m.useSearchParams)(),S=function(e){console.log("COOKIES",document.cookie);let s=document.cookie.split("; ").find(s=>s.startsWith(e+"="));return s?s.split("=")[1]:null}("token"),C=k.get("invitation_id"),[I,A]=(0,d.useState)(null),[T,E]=(0,d.useState)(null),[P,L]=(0,d.useState)([]),[M,O]=(0,d.useState)(null),[D,F]=(0,d.useState)(null),[R,z]=(0,d.useState)(null);if(window.addEventListener("beforeunload",function(){sessionStorage.clear()}),(0,d.useEffect)(()=>{if(S){let e=(0,u.o)(S);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),A(e.key),e.user_role){let s=function(e){if(!e)return"Undefined Role";switch(console.log("Received user role: ".concat(e)),e.toLowerCase()){case"app_owner":case"demo_app_owner":return"App Owner";case"app_admin":case"proxy_admin":return"Admin";case"proxy_admin_viewer":return"Admin Viewer";case"app_user":return"App User";case"internal_user":return"Internal User";case"internal_user_viewer":return"Internal Viewer";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",s),r(s)}else console.log("User role not defined");e.user_email?n(e.user_email):console.log("User Email is not set ".concat(e))}}if(s&&I&&t&&!a&&!_){let e=sessionStorage.getItem("userModels"+s);e?L(JSON.parse(e)):(console.log("currentOrg: ".concat(JSON.stringify(Z))),(async()=>{try{let e=await (0,j.getProxyUISettings)(I);O(e);let l=await (0,j.userInfoCall)(I,s,t,!1,null,null);N(l.user_info),console.log("userSpendData: ".concat(JSON.stringify(_))),(null==l?void 0:l.teams[0].keys)?x(l.keys.concat(l.teams.filter(e=>"Admin"===t||e.user_id===s).flatMap(e=>e.keys))):x(l.keys),sessionStorage.setItem("userData"+s,JSON.stringify(l.keys)),sessionStorage.setItem("userSpendData"+s,JSON.stringify(l.user_info));let a=(await (0,j.modelAvailableCall)(I,s,t)).data.map(e=>e.id);console.log("available_model_names:",a),L(a),console.log("userModels:",P),sessionStorage.setItem("userModels"+s,JSON.stringify(a))}catch(e){console.error("There was an error fetching the data",e),e.message.includes("Invalid proxy server token passed")&&U()}})(),f(I,s,t,Z,o))}},[s,S,I,a,t]),(0,d.useEffect)(()=>{I&&(async()=>{try{let e=await (0,j.keyInfoCall)(I,[I]);console.log("keyInfo: ",e)}catch(e){e.message.includes("Invalid proxy server token passed")&&U()}})()},[I]),(0,d.useEffect)(()=>{console.log("currentOrg: ".concat(JSON.stringify(Z),", accessToken: ").concat(I,", userID: ").concat(s,", userRole: ").concat(t)),I&&(console.log("fetching teams"),f(I,s,t,Z,o))},[Z]),(0,d.useEffect)(()=>{if(null!==a&&null!=D&&null!==D.team_id){let e=0;for(let s of(console.log("keys: ".concat(JSON.stringify(a))),a))D.hasOwnProperty("team_id")&&null!==s.team_id&&s.team_id===D.team_id&&(e+=s.spend);console.log("sum: ".concat(e)),E(e)}else if(null!==a){let e=0;for(let s of a)e+=s.spend;E(e)}},[D]),null!=C)return(0,c.jsx)(sW.default,{});function U(){(0,s$.b)();let e=(0,j.getProxyBaseUrl)();console.log("proxyBaseUrl:",e);let s=e?"".concat(e,"/sso/key/generate"):"/sso/key/generate";return console.log("Full URL:",s),window.location.href=s,null}if(null==S)return console.log("All cookies before redirect:",document.cookie),U(),null;try{let e=(0,u.o)(S);console.log("Decoded token:",e);let s=e.exp,t=Math.floor(Date.now()/1e3);if(s&&t>=s)return console.log("Token expired, redirecting to login"),U(),null}catch(e){return console.error("Error decoding token:",e),(0,s$.b)(),U(),null}if(null==I)return null;if(null==s)return(0,c.jsx)("h1",{children:"User ID is not set"});if(null==t&&r("App Owner"),t&&"Admin Viewer"==t){let{Title:e,Paragraph:s}=en.default;return(0,c.jsxs)("div",{children:[(0,c.jsx)(e,{level:1,children:"Access Denied"}),(0,c.jsx)(s,{children:"Ask your proxy admin for access to create keys"})]})}return console.log("inside user dashboard, selected team",D),console.log("All cookies after redirect:",document.cookie),(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[(0,c.jsx)(e3,{userID:s,team:D,teams:l,userRole:t,accessToken:I,data:a,addKey:g,premiumUser:h},D?D.team_id:null),(0,c.jsx)(sJ,{userID:s,userRole:t,accessToken:I,selectedTeam:D||null,setSelectedTeam:F,selectedKeyAlias:R,setSelectedKeyAlias:z,data:a,setData:x,premiumUser:h,teams:l,currentOrg:Z,setCurrentOrg:w,organizations:p,createClicked:b,setAccessToken:A})]})})})},sX=t(97765),s0=t(42673);let s1=async(e,s,t)=>{try{console.log("handling submit for formValues:",e);let s=e.model_mappings||[];if("model_mappings"in e&&delete e.model_mappings,e.model&&e.model.includes("all-wildcard")){let t=e.custom_llm_provider,l=s0.fK[t]+"/*";e.model_name=l,s.push({public_name:l,litellm_model:l}),e.model=l}let t=[];for(let l of s){let s={},a={},r=l.public_name;for(let[t,r]of(s.model=l.litellm_model,e.input_cost_per_token&&(e.input_cost_per_token=Number(e.input_cost_per_token)/1e6),e.output_cost_per_token&&(e.output_cost_per_token=Number(e.output_cost_per_token)/1e6),s.model=l.litellm_model,console.log("formValues add deployment:",e),Object.entries(e)))if(""!==r&&"custom_pricing"!==t&&"pricing_model"!==t&&"cache_control"!==t){if("model_name"==t)s.model=r;else if("custom_llm_provider"==t){console.log("custom_llm_provider:",r);let e=s0.fK[r];s.custom_llm_provider=e,console.log("custom_llm_provider mappingResult:",e)}else if("model"==t)continue;else if("base_model"===t)a[t]=r;else if("team_id"===t)a.team_id=r;else if("model_access_group"===t)a.access_groups=r;else if("mode"==t)console.log("placing mode in modelInfo"),a.mode=r,delete s.mode;else if("custom_model_name"===t)s.model=r;else if("litellm_extra_params"==t){console.log("litellm_extra_params:",r);let e={};if(r&&void 0!=r){try{e=JSON.parse(r)}catch(e){throw eo.Z.fromBackend("Failed to parse LiteLLM Extra Params: "+e),Error("Failed to parse litellm_extra_params: "+e)}for(let[t,l]of Object.entries(e))s[t]=l}}else if("model_info_params"==t){console.log("model_info_params:",r);let e={};if(r&&void 0!=r){try{e=JSON.parse(r)}catch(e){throw eo.Z.fromBackend("Failed to parse LiteLLM Extra Params: "+e),Error("Failed to parse litellm_extra_params: "+e)}for(let[s,t]of Object.entries(e))a[s]=t}}else if("input_cost_per_token"===t||"output_cost_per_token"===t||"input_cost_per_second"===t){r&&(s[t]=Number(r));continue}else s[t]=r}t.push({litellmParamsObj:s,modelInfoObj:a,modelName:r})}return t}catch(e){eo.Z.fromBackend("Failed to create model: "+e)}},s2=async(e,s,t,l)=>{try{let a=await s1(e,s,t);if(!a||0===a.length)return;for(let e of a){let{litellmParamsObj:t,modelInfoObj:l,modelName:a}=e,r={model_name:a,litellm_params:t,model_info:l},i=await (0,j.modelCreateCall)(s,r);console.log("response for model create call: ".concat(i.data))}l&&l(),t.resetFields()}catch(e){eo.Z.fromBackend("Failed to add model: "+e)}};var s4=t(53410),s5=t(47451),s3=t(69410);let{Link:s6}=en.default,s8={[s0.Cl.OpenAI]:[{key:"api_base",label:"API Base",type:"select",options:["https://api.openai.com/v1","https://eu.api.openai.com"],defaultValue:"https://api.openai.com/v1"},{key:"organization",label:"OpenAI Organization ID",placeholder:"[OPTIONAL] my-unique-org"},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.OpenAI_Text]:[{key:"api_base",label:"API Base",type:"select",options:["https://api.openai.com/v1","https://eu.api.openai.com"],defaultValue:"https://api.openai.com/v1"},{key:"organization",label:"OpenAI Organization ID",placeholder:"[OPTIONAL] my-unique-org"},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.Vertex_AI]:[{key:"vertex_project",label:"Vertex Project",placeholder:"adroit-cadet-1234..",required:!0},{key:"vertex_location",label:"Vertex Location",placeholder:"us-east-1",required:!0},{key:"vertex_credentials",label:"Vertex Credentials",required:!0,type:"upload"}],[s0.Cl.AssemblyAI]:[{key:"api_base",label:"API Base",type:"select",required:!0,options:["https://api.assemblyai.com","https://api.eu.assemblyai.com"]},{key:"api_key",label:"AssemblyAI API Key",type:"password",required:!0}],[s0.Cl.Azure]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_version",label:"API Version",placeholder:"2023-07-01-preview",tooltip:"By default litellm will use the latest version. If you want to use a different version, you can specify it here"},{key:"base_model",label:"Base Model",placeholder:"azure/gpt-3.5-turbo"},{key:"api_key",label:"Azure API Key",type:"password",required:!0}],[s0.Cl.Azure_AI_Studio]:[{key:"api_base",label:"API Base",placeholder:"https://.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-10-21",tooltip:"Enter your full Target URI from Azure Foundry here. Example: https://litellm8397336933.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-10-21",required:!0},{key:"api_key",label:"Azure API Key",type:"password",required:!0}],[s0.Cl.OpenAI_Compatible]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.Dashscope]:[{key:"api_key",label:"Dashscope API Key",type:"password",required:!0},{key:"api_base",label:"API Base",placeholder:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",defaultValue:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",required:!0,tooltip:"The base URL for your Dashscope server. Defaults to https://dashscope-intl.aliyuncs.com/compatible-mode/v1 if not specified."}],[s0.Cl.OpenAI_Text_Compatible]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.Bedrock]:[{key:"aws_access_key_id",label:"AWS Access Key ID",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_secret_access_key",label:"AWS Secret Access Key",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_session_token",label:"AWS Session Token",type:"password",required:!1,tooltip:"Temporary credentials session token. You can provide the raw token or the environment variable (e.g. `os.environ/MY_SESSION_TOKEN`)."},{key:"aws_region_name",label:"AWS Region Name",placeholder:"us-east-1",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_session_name",label:"AWS Session Name",placeholder:"my-session",required:!1,tooltip:"Name for the AWS session. You can provide the raw value or the environment variable (e.g. `os.environ/MY_SESSION_NAME`)."},{key:"aws_profile_name",label:"AWS Profile Name",placeholder:"default",required:!1,tooltip:"AWS profile name to use for authentication. You can provide the raw value or the environment variable (e.g. `os.environ/MY_PROFILE_NAME`)."},{key:"aws_role_name",label:"AWS Role Name",placeholder:"MyRole",required:!1,tooltip:"AWS IAM role name to assume. You can provide the raw value or the environment variable (e.g. `os.environ/MY_ROLE_NAME`)."},{key:"aws_web_identity_token",label:"AWS Web Identity Token",type:"password",required:!1,tooltip:"Web identity token for OIDC authentication. You can provide the raw token or the environment variable (e.g. `os.environ/MY_WEB_IDENTITY_TOKEN`)."},{key:"aws_bedrock_runtime_endpoint",label:"AWS Bedrock Runtime Endpoint",placeholder:"https://bedrock-runtime.us-east-1.amazonaws.com",required:!1,tooltip:"Custom Bedrock runtime endpoint URL. You can provide the raw value or the environment variable (e.g. `os.environ/MY_BEDROCK_ENDPOINT`)."}],[s0.Cl.SageMaker]:[{key:"aws_access_key_id",label:"AWS Access Key ID",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_secret_access_key",label:"AWS Secret Access Key",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_region_name",label:"AWS Region Name",placeholder:"us-east-1",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."}],[s0.Cl.Ollama]:[{key:"api_base",label:"API Base",placeholder:"http://localhost:11434",defaultValue:"http://localhost:11434",required:!1,tooltip:"The base URL for your Ollama server. Defaults to http://localhost:11434 if not specified."}],[s0.Cl.Anthropic]:[{key:"api_key",label:"API Key",placeholder:"sk-",type:"password",required:!0}],[s0.Cl.Deepgram]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.ElevenLabs]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Google_AI_Studio]:[{key:"api_key",label:"API Key",placeholder:"aig-",type:"password",required:!0}],[s0.Cl.Groq]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.MistralAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Deepseek]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Cohere]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Databricks]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.xAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.AIML]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Cerebras]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Sambanova]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Perplexity]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.TogetherAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Openrouter]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.FireworksAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.GradientAI]:[{key:"api_base",label:"GradientAI Endpoint",placeholder:"https://...",required:!1},{key:"api_key",label:"GradientAI API Key",type:"password",required:!0}],[s0.Cl.Triton]:[{key:"api_key",label:"API Key",type:"password",required:!1},{key:"api_base",label:"API Base",placeholder:"http://localhost:8000/generate",required:!1}],[s0.Cl.Hosted_Vllm]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.Voyage]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.JinaAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.VolcEngine]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.DeepInfra]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Oracle]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Snowflake]:[{key:"api_key",label:"Snowflake API Key / JWT Key for Authentication",type:"password",required:!0},{key:"api_base",label:"Snowflake API Endpoint",placeholder:"https://1234567890.snowflakecomputing.com/api/v2/cortex/inference:complete",tooltip:"Enter the full endpoint with path here. Example: https://1234567890.snowflakecomputing.com/api/v2/cortex/inference:complete",required:!0}],[s0.Cl.Infinity]:[{key:"api_base",label:"API Base",placeholder:"http://localhost:7997"}]};var s7=e=>{let{selectedProvider:s,uploadProps:t}=e,l=s0.Cl[s],a=A.Z.useFormInstance(),r=d.useMemo(()=>s8[l]||[],[l]),i={name:"file",accept:".json",beforeUpload:e=>{if("application/json"===e.type){let s=new FileReader;s.onload=e=>{if(e.target){let s=e.target.result;console.log("Setting field value from JSON, length: ".concat(s.length)),a.setFieldsValue({vertex_credentials:s}),console.log("Form values after setting:",a.getFieldsValue())}},s.readAsText(e)}return!1},onChange(e){console.log("Upload onChange triggered in ProviderSpecificFields"),console.log("Current form values:",a.getFieldsValue()),"uploading"!==e.file.status&&console.log(e.file,e.fileList)}};return(0,c.jsx)(c.Fragment,{children:r.map(e=>{var s;return(0,c.jsxs)(d.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:e.label,name:e.key,rules:e.required?[{required:!0,message:"Required"}]:void 0,tooltip:e.tooltip,className:"vertex_credentials"===e.key?"mb-0":void 0,children:"select"===e.type?(0,c.jsx)(I.default,{placeholder:e.placeholder,defaultValue:e.defaultValue,children:null===(s=e.options)||void 0===s?void 0:s.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"upload"===e.type?(0,c.jsx)(ed.default,{...i,onChange:s=>{(null==t?void 0:t.onChange)&&t.onChange(s),setTimeout(()=>{let s=a.getFieldValue(e.key);console.log("".concat(e.key," value after upload:"),JSON.stringify(s))},500)},children:(0,c.jsx)(P.ZP,{icon:(0,c.jsx)(ej.Z,{}),children:"Click to Upload"})}):(0,c.jsx)(_.Z,{placeholder:e.placeholder,type:"password"===e.type?"password":"text"})}),"vertex_credentials"===e.key&&(0,c.jsx)(s5.Z,{children:(0,c.jsx)(s3.Z,{children:(0,c.jsx)(k.Z,{className:"mb-3 mt-1",children:"Give a gcp service account(.json file)"})})}),"base_model"===e.key&&(0,c.jsxs)(s5.Z,{children:[(0,c.jsx)(s3.Z,{span:10}),(0,c.jsx)(s3.Z,{span:10,children:(0,c.jsxs)(k.Z,{className:"mb-2",children:["The actual model your azure deployment uses. Used for accurate cost tracking. Select name from"," ",(0,c.jsx)(s6,{href:"https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json",target:"_blank",children:"here"})]})})]})]},e.key)})})};let{Title:s9,Link:te}=en.default;var ts=e=>{let{isVisible:s,onCancel:t,onAddCredential:l,onUpdateCredential:a,uploadProps:r,addOrEdit:i,existingCredential:n}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)(s0.Cl.OpenAI),[x,h]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{n&&(o.setFieldsValue({credential_name:n.credential_name,custom_llm_provider:n.credential_info.custom_llm_provider,api_base:n.credential_values.api_base,api_version:n.credential_values.api_version,base_model:n.credential_values.base_model,api_key:n.credential_values.api_key}),u(n.credential_info.custom_llm_provider))},[n]),(0,c.jsx)(T.Z,{title:"add"===i?"Add New Credential":"Edit Credential",visible:s,onCancel:()=>{t(),o.resetFields()},footer:null,width:600,children:(0,c.jsxs)(A.Z,{form:o,onFinish:e=>{let s=Object.entries(e).reduce((e,s)=>{let[t,l]=s;return""!==l&&null!=l&&(e[t]=l),e},{});"add"===i?l(s):a(s),o.resetFields()},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Credential Name:",name:"credential_name",rules:[{required:!0,message:"Credential name is required"}],initialValue:null==n?void 0:n.credential_name,children:(0,c.jsx)(eW.o,{placeholder:"Enter a friendly name for these credentials",disabled:null!=n&&!!n.credential_name})}),(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Required"}],label:"Provider:",name:"custom_llm_provider",tooltip:"Helper to auto-populate provider specific fields",children:(0,c.jsx)(I.default,{showSearch:!0,onChange:e=>{u(e),o.setFieldValue("custom_llm_provider",e)},children:Object.entries(s0.Cl).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:s,children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:s0.cd[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(s7,{selectedProvider:m,uploadProps:r}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(te,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{children:[(0,c.jsx)(P.ZP,{onClick:()=>{t(),o.resetFields()},style:{marginRight:10},children:"Cancel"}),(0,c.jsx)(P.ZP,{htmlType:"submit",children:"add"===i?"Add Credential":"Update Credential"})]})]})]})})},tt=e=>{let{isVisible:s,onCancel:t,onConfirm:l,credentialName:a}=e,[r,i]=(0,d.useState)(""),n=r===a,o=()=>{i(""),t()};return(0,c.jsx)(T.Z,{title:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(e_.Z,{className:"h-6 w-6 text-red-600 mr-2"}),"Delete Credential"]}),open:s,footer:null,onCancel:o,closable:!0,destroyOnClose:!0,maskClosable:!1,children:(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)(e_.Z,{className:"h-5 w-5"})}),(0,c.jsx)("div",{children:(0,c.jsx)("p",{className:"text-base font-medium text-red-600",children:"This action cannot be undone and may break existing integrations."})})]}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsxs)("span",{className:"underline italic",children:["'",a,"'"]})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:r,onChange:e=>i(e.target.value),placeholder:"Enter credential name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(b.Z,{onClick:o,variant:"secondary",className:"mr-2",children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:()=>{n&&(i(""),l())},color:"red",className:"focus:ring-red-500",disabled:!n,children:"Delete Credential"})]})]})})},tl=e=>{let{accessToken:s,uploadProps:t,credentialList:l,fetchCredentials:a}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p]=A.Z.useForm(),g=["credential_name","custom_llm_provider"],f=async e=>{if(!s)return;let t=Object.entries(e).filter(e=>{let[s]=e;return!g.includes(s)}).reduce((e,s)=>{let[t,l]=s;return{...e,[t]:l}},{}),l={credential_name:e.credential_name,credential_values:t,credential_info:{custom_llm_provider:e.custom_llm_provider}};await (0,j.credentialUpdateCall)(s,e.credential_name,l),eo.Z.success("Credential updated successfully"),o(!1),a(s)},v=async e=>{if(!s)return;let t=Object.entries(e).filter(e=>{let[s]=e;return!g.includes(s)}).reduce((e,s)=>{let[t,l]=s;return{...e,[t]:l}},{}),l={credential_name:e.credential_name,credential_values:t,credential_info:{custom_llm_provider:e.custom_llm_provider}};await (0,j.credentialCreateCall)(s,l),eo.Z.success("Credential added successfully"),i(!1),a(s)};(0,d.useEffect)(()=>{s&&a(s)},[s]);let y=e=>{let s={openai:"blue",azure:"indigo",anthropic:"purple",default:"gray"},t=s[e.toLowerCase()]||s.default;return(0,c.jsx)(se.Z,{color:t,size:"xs",children:e})},_=async e=>{s&&(await (0,j.credentialDeleteCall)(s,e),eo.Z.success("Credential deleted successfully"),h(null),a(s))},N=e=>{h(e)};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(k.Z,{children:"Configured credentials for different AI providers. Add and manage your API credentials."})}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Credential Name"}),(0,c.jsx)(sB.Z,{children:"Provider"}),(0,c.jsx)(sB.Z,{children:"Description"})]})}),(0,c.jsx)(sU.Z,{children:l&&0!==l.length?l.map((e,s)=>{var t,l;return(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:e.credential_name}),(0,c.jsx)(sq.Z,{children:y((null===(t=e.credential_info)||void 0===t?void 0:t.custom_llm_provider)||"-")}),(0,c.jsx)(sq.Z,{children:(null===(l=e.credential_info)||void 0===l?void 0:l.description)||"-"}),(0,c.jsxs)(sq.Z,{children:[(0,c.jsx)(b.Z,{icon:s4.Z,variant:"light",size:"sm",onClick:()=>{u(e),o(!0)}}),(0,c.jsx)(b.Z,{icon:W.Z,variant:"light",size:"sm",onClick:()=>N(e.credential_name)})]})]},s)}):(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sq.Z,{colSpan:4,className:"text-center py-4 text-gray-500",children:"No credentials configured"})})})]})}),(0,c.jsx)(b.Z,{onClick:()=>i(!0),className:"mt-4",children:"Add Credential"}),r&&(0,c.jsx)(ts,{onAddCredential:v,isVisible:r,onCancel:()=>i(!1),uploadProps:t,addOrEdit:"add",onUpdateCredential:f,existingCredential:null}),n&&(0,c.jsx)(ts,{onAddCredential:v,isVisible:n,existingCredential:m,onUpdateCredential:f,uploadProps:t,onCancel:()=>o(!1),addOrEdit:"edit"}),x&&(0,c.jsx)(tt,{isVisible:!0,onCancel:()=>{h(null)},onConfirm:()=>_(x),credentialName:x})]})};let ta=e=>{var s;return(null==e?void 0:null===(s=e.model_info)||void 0===s?void 0:s.team_public_model_name)?e.model_info.team_public_model_name:(null==e?void 0:e.model_name)||"-"};var tr=t(21487),ti=e=>{let{value:s,onValueChange:t,label:l="Select Time Range",className:a="",showTimeRange:r=!0}=e,[i,n]=(0,d.useState)(!1),o=(0,d.useRef)(null),m=(0,d.useCallback)(e=>{n(!0),setTimeout(()=>n(!1),1500),t(e),requestIdleCallback(()=>{if(e.from){let s;let l={...e},a=new Date(e.from);s=new Date(e.to?e.to:e.from),a.toDateString(),s.toDateString(),a.setHours(0,0,0,0),s.setHours(23,59,59,999),l.from=a,l.to=s,t(l)}},{timeout:100})},[t]),u=(0,d.useCallback)((e,s)=>{if(!e||!s)return"";let t=e=>e.toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0,timeZoneName:"short"});if(e.toDateString()!==s.toDateString())return"".concat(t(e)," - ").concat(t(s));{let t=e.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),l=e.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0}),a=s.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0,timeZoneName:"short"});return"".concat(t,": ").concat(l," - ").concat(a)}},[]);return(0,c.jsxs)("div",{className:a,children:[l&&(0,c.jsx)(k.Z,{className:"mb-2",children:l}),(0,c.jsxs)("div",{className:"relative w-fit",children:[(0,c.jsx)("div",{ref:o,children:(0,c.jsx)(tr.Z,{enableSelect:!0,value:s,onValueChange:m,placeholder:"Select date range",enableClear:!1,style:{zIndex:100}})}),i&&(0,c.jsx)("div",{className:"absolute top-1/2 animate-pulse",style:{left:"calc(100% + 8px)",transform:"translateY(-50%)",zIndex:110},children:(0,c.jsxs)("div",{className:"flex items-center gap-1 text-green-600 text-sm font-medium bg-white px-2 py-1 rounded-full border border-green-200 shadow-sm whitespace-nowrap",children:[(0,c.jsx)("div",{className:"w-3 h-3 bg-green-500 text-white rounded-full flex items-center justify-center text-xs",children:"✓"}),(0,c.jsx)("span",{className:"text-xs",children:"Selected"})]})})]}),r&&s.from&&s.to&&(0,c.jsx)(k.Z,{className:"mt-2 text-xs text-gray-500",children:u(s.from,s.to)})]})},tn=t(75105),to=t(40278),tc=t(79326),td=t(59664),tm=e=>{let{modelMetrics:s,modelMetricsCategories:t,customTooltip:l,premiumUser:a}=e;return(0,c.jsx)(td.Z,{title:"Time to First token (s)",className:"h-72",data:s,index:"date",showLegend:!1,categories:t,colors:["indigo","rose"],connectNulls:!0,customTooltip:l})},tu=e=>{let{teamData:s,canEditTeam:t,handleMemberDelete:l,setSelectedEditMember:a,setIsEditMemberModalVisible:r,setIsAddMemberModalVisible:i}=e,n=e=>{if(null==e)return"0";if("number"==typeof e){let s=Number(e);return s===Math.floor(s)?s.toString():eL(s,8).replace(/\.?0+$/,"")}return"0"},o=e=>{if(!e)return 0;let t=s.team_memberships.find(s=>s.user_id===e);return(null==t?void 0:t.spend)||0},d=e=>{var t;if(!e)return null;let l=s.team_memberships.find(s=>s.user_id===e);console.log("membership=".concat(l));let a=null==l?void 0:null===(t=l.litellm_budget_table)||void 0===t?void 0:t.max_budget;return null==a?null:n(a)},m=e=>{var t,l;if(!e)return"No Limits";let a=s.team_memberships.find(s=>s.user_id===e),r=null==a?void 0:null===(t=a.litellm_budget_table)||void 0===t?void 0:t.rpm_limit,i=null==a?void 0:null===(l=a.litellm_budget_table)||void 0===l?void 0:l.tpm_limit,o=[r?"".concat(n(r)," RPM"):null,i?"".concat(n(i)," TPM"):null].filter(Boolean);return o.length>0?o.join(" / "):"No Limits"};return(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-auto max-h-[50vh]",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sz.Z,{className:"min-w-full",children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"User ID"}),(0,c.jsx)(sB.Z,{children:"User Email"}),(0,c.jsx)(sB.Z,{children:"Role"}),(0,c.jsxs)(sB.Z,{children:["Team Member Spend (USD)"," ",(0,c.jsx)(B.Z,{title:"This is the amount spent by a user in the team.",children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(sB.Z,{children:"Team Member Budget (USD)"}),(0,c.jsxs)(sB.Z,{children:["Team Member Rate Limits"," ",(0,c.jsx)(B.Z,{title:"Rate limits for this member's usage within this team.",children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(sB.Z,{className:"sticky right-0 bg-white z-10 border-l border-gray-200",children:"Actions"})]})}),(0,c.jsx)(sU.Z,{children:s.team_info.members_with_roles.map((e,i)=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_id})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_email?e.user_email:"No Email"})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.role})}),(0,c.jsx)(sq.Z,{children:(0,c.jsxs)(k.Z,{className:"font-mono",children:["$",eL(o(e.user_id),4)]})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:d(e.user_id)?"$".concat(eL(Number(d(e.user_id)),4)):"No Limit"})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:m(e.user_id)})}),(0,c.jsx)(sq.Z,{className:"sticky right-0 bg-white z-10 border-l border-gray-200",children:t&&(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(sR.Z,{icon:s4.Z,size:"sm",onClick:()=>{var t,l,i;let n=s.team_memberships.find(s=>s.user_id===e.user_id);a({...e,max_budget_in_team:(null==n?void 0:null===(t=n.litellm_budget_table)||void 0===t?void 0:t.max_budget)||null,tpm_limit:(null==n?void 0:null===(l=n.litellm_budget_table)||void 0===l?void 0:l.tpm_limit)||null,rpm_limit:(null==n?void 0:null===(i=n.litellm_budget_table)||void 0===i?void 0:i.rpm_limit)||null}),r(!0)},className:"cursor-pointer hover:text-blue-600"}),(0,c.jsx)(sR.Z,{icon:W.Z,size:"sm",onClick:()=>l(e),className:"cursor-pointer hover:text-red-600"})]})})]},i))})]})})}),(0,c.jsx)(b.Z,{onClick:()=>i(!0),children:"Add Member"})]})},tx=t(85180),th=t(89245),tp=t(78355);let tg={"/key/generate":"Member can generate a virtual key for this team","/key/service-account/generate":"Member can generate a service account key (not belonging to any user) for this team","/key/update":"Member can update a virtual key belonging to this team","/key/delete":"Member can delete a virtual key belonging to this team","/key/info":"Member can get info about a virtual key belonging to this team","/key/regenerate":"Member can regenerate a virtual key belonging to this team","/key/{key_id}/regenerate":"Member can regenerate a virtual key belonging to this team","/key/list":"Member can list virtual keys belonging to this team","/key/block":"Member can block a virtual key belonging to this team","/key/unblock":"Member can unblock a virtual key belonging to this team"},tj=e=>e.includes("/info")||e.includes("/list")?"GET":"POST",tf=e=>{let s=tj(e),t=tg[e];if(!t){for(let[s,l]of Object.entries(tg))if(e.includes(s)){t=l;break}}return t||(t="Access ".concat(e)),{method:s,endpoint:e,description:t,route:e}};var tv=e=>{let{teamId:s,accessToken:t,canEditTeam:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)(!0),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),g=async()=>{try{if(m(!0),!t)return;let e=await (0,j.getTeamPermissionsCall)(t,s),l=e.all_available_permissions||[];r(l);let a=e.team_member_permissions||[];n(a),p(!1)}catch(e){eo.Z.fromBackend("Failed to load permissions"),console.error("Error fetching permissions:",e)}finally{m(!1)}};(0,d.useEffect)(()=>{g()},[s,t]);let f=(e,s)=>{n(s?[...i,e]:i.filter(s=>s!==e)),p(!0)},v=async()=>{try{if(!t)return;x(!0),await (0,j.teamPermissionsUpdateCall)(t,s,i),eo.Z.success("Permissions updated successfully"),p(!1)}catch(e){eo.Z.fromBackend("Failed to update permissions"),console.error("Error updating permissions:",e)}finally{x(!1)}};if(o)return(0,c.jsx)("div",{className:"p-6 text-center",children:"Loading permissions..."});let y=a.length>0;return(0,c.jsxs)(G.Z,{className:"bg-white shadow-md rounded-md p-6",children:[(0,c.jsxs)("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center border-b pb-4 mb-6",children:[(0,c.jsx)(S.Z,{className:"mb-2 sm:mb-0",children:"Member Permissions"}),l&&h&&(0,c.jsxs)("div",{className:"flex gap-3",children:[(0,c.jsx)(P.ZP,{icon:(0,c.jsx)(th.Z,{}),onClick:()=>{g()},children:"Reset"}),(0,c.jsxs)(b.Z,{onClick:v,loading:u,className:"flex items-center gap-2",children:[(0,c.jsx)(tp.Z,{})," Save Changes"]})]})]}),(0,c.jsx)(k.Z,{className:"mb-6 text-gray-600",children:"Control what team members can do when they are not team admins."}),y?(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sz.Z,{className:" min-w-full",children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Method"}),(0,c.jsx)(sB.Z,{children:"Endpoint"}),(0,c.jsx)(sB.Z,{children:"Description"}),(0,c.jsx)(sB.Z,{className:"sticky right-0 bg-white shadow-[-4px_0_4px_-4px_rgba(0,0,0,0.1)] text-center",children:"Allow Access"})]})}),(0,c.jsx)(sU.Z,{children:a.map(e=>{let s=tf(e);return(0,c.jsxs)(sK.Z,{className:"hover:bg-gray-50 transition-colors",children:[(0,c.jsx)(sq.Z,{children:(0,c.jsx)("span",{className:"px-2 py-1 rounded text-xs font-medium ".concat("GET"===s.method?"bg-blue-100 text-blue-800":"bg-green-100 text-green-800"),children:s.method})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)("span",{className:"font-mono text-sm text-gray-800",children:s.endpoint})}),(0,c.jsx)(sq.Z,{className:"text-gray-700",children:s.description}),(0,c.jsx)(sq.Z,{className:"sticky right-0 bg-white shadow-[-4px_0_4px_-4px_rgba(0,0,0,0.1)] text-center",children:(0,c.jsx)(eR.Z,{checked:i.includes(e),onChange:s=>f(e,s.target.checked),disabled:!l})})]},e)})})]})}):(0,c.jsx)("div",{className:"py-12",children:(0,c.jsx)(tx.Z,{description:"No permissions available"})})]})},ty=t(42264),tb=e=>{var s,t,l;let{visible:a,onCancel:r,onSubmit:i,initialData:n,mode:o,config:m}=e,[u]=A.Z.useForm();console.log("Initial Data:",n),(0,d.useEffect)(()=>{if(a){if("edit"===o&&n){let e={...n,role:n.role||m.defaultRole,max_budget_in_team:n.max_budget_in_team||null,tpm_limit:n.tpm_limit||null,rpm_limit:n.rpm_limit||null};console.log("Setting form values:",e),u.setFieldsValue(e)}else{var e;u.resetFields(),u.setFieldsValue({role:m.defaultRole||(null===(e=m.roleOptions[0])||void 0===e?void 0:e.value)})}}},[a,n,o,u,m.defaultRole,m.roleOptions]);let x=async e=>{try{let s=Object.entries(e).reduce((e,s)=>{let[t,l]=s;if("string"==typeof l){let s=l.trim();return""===s&&("max_budget_in_team"===t||"tpm_limit"===t||"rpm_limit"===t)?{...e,[t]:null}:{...e,[t]:s}}return{...e,[t]:l}},{});console.log("Submitting form data:",s),i(s),u.resetFields()}catch(e){console.error("Form submission error:",e)}},h=e=>{switch(e.type){case"input":return(0,c.jsx)(_.Z,{placeholder:e.placeholder});case"numerical":return(0,c.jsx)(O,{step:e.step||1,min:e.min||0,style:{width:"100%"},placeholder:e.placeholder||"Enter a numerical value"});case"select":var s;return(0,c.jsx)(e9.Z,{children:null===(s=e.options)||void 0===s?void 0:s.map(e=>(0,c.jsx)(ei.Z,{value:e.value,children:e.label},e.value))});default:return null}};return(0,c.jsx)(T.Z,{title:m.title||("add"===o?"Add Member":"Edit Member"),open:a,width:1e3,footer:null,onCancel:r,children:(0,c.jsxs)(A.Z,{form:u,onFinish:x,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[m.showEmail&&(0,c.jsx)(A.Z.Item,{label:"Email",name:"user_email",className:"mb-4",rules:[{type:"email",message:"Please enter a valid email!"}],children:(0,c.jsx)(_.Z,{placeholder:"user@example.com"})}),m.showEmail&&m.showUserId&&(0,c.jsx)("div",{className:"text-center mb-4",children:(0,c.jsx)(k.Z,{children:"OR"})}),m.showUserId&&(0,c.jsx)(A.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,c.jsx)(_.Z,{placeholder:"user_123"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{children:"Role"}),"edit"===o&&n&&(0,c.jsxs)("span",{className:"text-gray-500 text-sm",children:["(Current: ",(t=n.role,(null===(l=m.roleOptions.find(e=>e.value===t))||void 0===l?void 0:l.label)||t),")"]})]}),name:"role",className:"mb-4",rules:[{required:!0,message:"Please select a role!"}],children:(0,c.jsx)(e9.Z,{children:"edit"===o&&n?[...m.roleOptions.filter(e=>e.value===n.role),...m.roleOptions.filter(e=>e.value!==n.role)].map(e=>(0,c.jsx)(ei.Z,{value:e.value,children:e.label},e.value)):m.roleOptions.map(e=>(0,c.jsx)(ei.Z,{value:e.value,children:e.label},e.value))})}),null===(s=m.additionalFields)||void 0===s?void 0:s.map(e=>(0,c.jsx)(A.Z.Item,{label:e.label,name:e.name,className:"mb-4",rules:e.rules,children:h(e)},e.name)),(0,c.jsxs)("div",{className:"text-right mt-6",children:[(0,c.jsx)(P.ZP,{onClick:r,className:"mr-2",children:"Cancel"}),(0,c.jsx)(P.ZP,{type:"default",htmlType:"submit",children:"add"===o?"Add Member":"Save Changes"})]})]})})},t_=e=>{let{isVisible:s,onCancel:t,onSubmit:l,accessToken:a,title:r="Add Team Member",roles:i=[{label:"admin",value:"admin",description:"Admin role. Can create team keys, add members, and manage settings."},{label:"user",value:"user",description:"User role. Can view team info, but not manage it."}],defaultRole:n="user"}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)("user_email"),f=async(e,s)=>{if(!e){u([]);return}h(!0);try{let t=new URLSearchParams;if(t.append(s,e),null==a)return;let l=(await (0,j.userFilterUICall)(a,t)).map(e=>({label:"user_email"===s?"".concat(e.user_email):"".concat(e.user_id),value:"user_email"===s?e.user_email:e.user_id,user:e}));u(l)}catch(e){console.error("Error fetching users:",e)}finally{h(!1)}},v=(0,d.useCallback)(eC()((e,s)=>f(e,s),300),[]),y=(e,s)=>{g(s),v(e,s)},b=(e,s)=>{let t=s.user;o.setFieldsValue({user_email:t.user_email,user_id:t.user_id,role:o.getFieldValue("role")})};return(0,c.jsx)(T.Z,{title:r,open:s,onCancel:()=>{o.resetFields(),u([]),t()},footer:null,width:800,children:(0,c.jsxs)(A.Z,{form:o,onFinish:l,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",initialValues:{role:n},children:[(0,c.jsx)(A.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,c.jsx)(I.default,{showSearch:!0,className:"w-full",placeholder:"Search by email",filterOption:!1,onSearch:e=>y(e,"user_email"),onSelect:(e,s)=>b(e,s),options:"user_email"===p?m:[],loading:x,allowClear:!0})}),(0,c.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,c.jsx)(A.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,c.jsx)(I.default,{showSearch:!0,className:"w-full",placeholder:"Search by user ID",filterOption:!1,onSearch:e=>y(e,"user_id"),onSelect:(e,s)=>b(e,s),options:"user_id"===p?m:[],loading:x,allowClear:!0})}),(0,c.jsx)(A.Z.Item,{label:"Member Role",name:"role",className:"mb-4",children:(0,c.jsx)(I.default,{defaultValue:n,children:i.map(e=>(0,c.jsx)(I.default.Option,{value:e.value,children:(0,c.jsxs)(B.Z,{title:e.description,children:[(0,c.jsx)("span",{className:"font-medium",children:e.label}),(0,c.jsxs)("span",{className:"ml-2 text-gray-500 text-sm",children:["- ",e.description]})]})},e.value))})}),(0,c.jsx)("div",{className:"text-right mt-4",children:(0,c.jsx)(P.ZP,{type:"default",htmlType:"submit",children:"Add Member"})})]})})},tN=e=>{var s,t,l,a,r,i,n,o,m,u,x,h,p,g,f,v;let{teamId:N,onClose:Z,accessToken:w,is_team_admin:C,is_proxy_admin:T,userModels:E,editTeam:M,premiumUser:D=!1,onUpdate:R}=e,[z,q]=(0,d.useState)(null),[K,H]=(0,d.useState)(!0),[Y,J]=(0,d.useState)(!1),[W]=A.Z.useForm(),[$,Q]=(0,d.useState)(!1),[X,ee]=(0,d.useState)(null),[es,et]=(0,d.useState)(!1),[el,ea]=(0,d.useState)([]),[er,ei]=(0,d.useState)(!1),[en,ec]=(0,d.useState)({}),[ed,em]=(0,d.useState)([]);console.log("userModels in team info",E);let eu=C||T,ex=async()=>{try{if(H(!0),!w)return;let e=await (0,j.teamInfoCall)(w,N);q(e)}catch(e){eo.Z.fromBackend("Failed to load team information"),console.error("Error fetching team info:",e)}finally{H(!1)}};(0,d.useEffect)(()=>{ex()},[N,w]),(0,d.useEffect)(()=>{(async()=>{try{if(!w)return;let e=(await (0,j.getGuardrailsList)(w)).guardrails.map(e=>e.guardrail_name);em(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})()},[w]);let eh=async e=>{try{if(null==w)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role};await (0,j.teamMemberAddCall)(w,N,s),eo.Z.success("Team member added successfully"),J(!1),W.resetFields();let t=await (0,j.teamInfoCall)(w,N);q(t),R(t)}catch(a){var s,t,l;let e="Failed to add team member";(null==a?void 0:null===(l=a.raw)||void 0===l?void 0:null===(t=l.detail)||void 0===t?void 0:null===(s=t.error)||void 0===s?void 0:s.includes("Assigning team admins is a premium feature"))?e="Assigning admins is an enterprise-only feature. Please upgrade your LiteLLM plan to enable this.":(null==a?void 0:a.message)&&(e=a.message),eo.Z.fromBackend(e),console.error("Error adding team member:",a)}},ep=async e=>{try{if(null==w)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role,max_budget_in_team:e.max_budget_in_team,tpm_limit:e.tpm_limit,rpm_limit:e.rpm_limit};console.log("Updating member with values:",s),ty.ZP.destroy(),await (0,j.teamMemberUpdateCall)(w,N,s),eo.Z.success("Team member updated successfully"),Q(!1);let t=await (0,j.teamInfoCall)(w,N);q(t),R(t)}catch(l){var s,t;let e="Failed to update team member";(null==l?void 0:null===(t=l.raw)||void 0===t?void 0:null===(s=t.detail)||void 0===s?void 0:s.includes("Assigning team admins is a premium feature"))?e="Assigning admins is an enterprise-only feature. Please upgrade your LiteLLM plan to enable this.":(null==l?void 0:l.message)&&(e=l.message),Q(!1),ty.ZP.destroy(),eo.Z.fromBackend(e),console.error("Error updating team member:",l)}},eg=async e=>{try{if(null==w)return;await (0,j.teamMemberDeleteCall)(w,N,e),eo.Z.success("Team member removed successfully");let s=await (0,j.teamInfoCall)(w,N);q(s),R(s)}catch(e){eo.Z.fromBackend("Failed to remove team member"),console.error("Error removing team member:",e)}},ej=async e=>{try{if(!w)return;let s={};try{s=e.metadata?JSON.parse(e.metadata):{}}catch(e){eo.Z.fromBackend("Invalid JSON in metadata field");return}let t=e=>null==e||"string"==typeof e&&""===e.trim()||"number"==typeof e&&Number.isNaN(e)?null:e,l={team_id:N,team_alias:e.team_alias,models:e.models,tpm_limit:t(e.tpm_limit),rpm_limit:t(e.rpm_limit),max_budget:e.max_budget,budget_duration:e.budget_duration,metadata:{...s,guardrails:e.guardrails||[],logging:e.logging_settings||[]},organization_id:e.organization_id};void 0!==e.team_member_budget&&(l.team_member_budget=Number(e.team_member_budget)),void 0!==e.team_member_key_duration&&(l.team_member_key_duration=e.team_member_key_duration),(void 0!==e.team_member_tpm_limit||void 0!==e.team_member_rpm_limit)&&(l.team_member_tpm_limit=t(e.team_member_tpm_limit),l.team_member_rpm_limit=t(e.team_member_rpm_limit));let{servers:a,accessGroups:r}=e.mcp_servers_and_groups||{servers:[],accessGroups:[]},i=e.mcp_tool_permissions||{};(a&&a.length>0||r&&r.length>0||Object.keys(i).length>0)&&(l.object_permission={},a&&a.length>0&&(l.object_permission.mcp_servers=a),r&&r.length>0&&(l.object_permission.mcp_access_groups=r),Object.keys(i).length>0&&(l.object_permission.mcp_tool_permissions=i)),delete e.mcp_servers_and_groups,delete e.mcp_tool_permissions,await (0,j.teamUpdateCall)(w,l),eo.Z.success("Team settings updated successfully"),et(!1),ex()}catch(e){console.error("Error updating team:",e)}};if(K)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!(null==z?void 0:z.team_info))return(0,c.jsx)("div",{className:"p-4",children:"Team not found"});let{team_info:ef}=z,ev=async(e,s)=>{await eM(e)&&(ec(e=>({...e,[s]:!0})),setTimeout(()=>{ec(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:Z,className:"mb-4",children:"Back to Teams"}),(0,c.jsx)(S.Z,{children:ef.team_alias}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:ef.team_id}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:en["team-id"]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>ev(ef.team_id,"team-id"),className:"left-2 z-10 transition-all duration-200 ".concat(en["team-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:M?3:0,children:[(0,c.jsx)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),...eu?[(0,c.jsx)(ss.Z,{children:"Members"},"members"),(0,c.jsx)(ss.Z,{children:"Member Permissions"},"member-permissions"),(0,c.jsx)(ss.Z,{children:"Settings"},"settings")]:[]]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Budget Status"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eL(ef.spend,4)]}),(0,c.jsxs)(k.Z,{children:["of ",null===ef.max_budget?"Unlimited":"$".concat(eL(ef.max_budget,4))]}),ef.budget_duration&&(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Reset: ",ef.budget_duration]}),(0,c.jsx)("br",{}),ef.team_member_budget_table&&(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Team Member Budget: $",eL(ef.team_member_budget_table.max_budget,4)]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Rate Limits"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["TPM: ",ef.tpm_limit||"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",ef.rpm_limit||"Unlimited"]}),ef.max_parallel_requests&&(0,c.jsxs)(k.Z,{children:["Max Parallel Requests: ",ef.max_parallel_requests]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Models"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:0===ef.models.length?(0,c.jsx)(se.Z,{color:"red",children:"All proxy models"}):ef.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Virtual Keys"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["User Keys: ",z.keys.filter(e=>e.user_id).length]}),(0,c.jsxs)(k.Z,{children:["Service Account Keys: ",z.keys.filter(e=>!e.user_id).length]}),(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Total: ",z.keys.length]})]})]}),(0,c.jsx)(s_,{objectPermission:ef.object_permission,variant:"card",accessToken:w}),(0,c.jsx)(sN,{loggingConfigs:(null===(s=ef.metadata)||void 0===s?void 0:s.logging)||[],disabledCallbacks:[],variant:"card"})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(tu,{teamData:z,canEditTeam:eu,handleMemberDelete:eg,setSelectedEditMember:ee,setIsEditMemberModalVisible:Q,setIsAddMemberModalVisible:J})}),eu&&(0,c.jsx)(sa.Z,{children:(0,c.jsx)(tv,{teamId:N,accessToken:w,canEditTeam:eu})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{className:"overflow-y-auto max-h-[65vh]",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Team Settings"}),eu&&!es&&(0,c.jsx)(b.Z,{onClick:()=>et(!0),children:"Edit Settings"})]}),es?(0,c.jsxs)(A.Z,{form:W,onFinish:ej,initialValues:{...ef,team_alias:ef.team_alias,models:ef.models,tpm_limit:ef.tpm_limit,rpm_limit:ef.rpm_limit,max_budget:ef.max_budget,budget_duration:ef.budget_duration,team_member_tpm_limit:null===(t=ef.team_member_budget_table)||void 0===t?void 0:t.tpm_limit,team_member_rpm_limit:null===(l=ef.team_member_budget_table)||void 0===l?void 0:l.rpm_limit,guardrails:(null===(a=ef.metadata)||void 0===a?void 0:a.guardrails)||[],metadata:ef.metadata?JSON.stringify((e=>{let{logging:s,...t}=e;return t})(ef.metadata),null,2):"",logging_settings:(null===(r=ef.metadata)||void 0===r?void 0:r.logging)||[],organization_id:ef.organization_id,vector_stores:(null===(i=ef.object_permission)||void 0===i?void 0:i.vector_stores)||[],mcp_servers:(null===(n=ef.object_permission)||void 0===n?void 0:n.mcp_servers)||[],mcp_access_groups:(null===(o=ef.object_permission)||void 0===o?void 0:o.mcp_access_groups)||[],mcp_servers_and_groups:{servers:(null===(m=ef.object_permission)||void 0===m?void 0:m.mcp_servers)||[],accessGroups:(null===(u=ef.object_permission)||void 0===u?void 0:u.mcp_access_groups)||[]},mcp_tool_permissions:(null===(x=ef.object_permission)||void 0===x?void 0:x.mcp_tool_permissions)||{}},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Team Name",name:"team_alias",rules:[{required:!0,message:"Please input a team name"}],children:(0,c.jsx)(L.default,{type:""})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),Array.from(new Set(E)).map((e,s)=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},s))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Budget (USD)",name:"team_member_budget",tooltip:"This is the individual budget for a user in the team.",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Key Duration (eg: 1d, 1mo)",name:"team_member_key_duration",tooltip:"Set a limit to the duration of a team member's key. Format: 30s (seconds), 30m (minutes), 30h (hours), 30d (days), 1mo (month)",children:(0,c.jsx)(_.Z,{placeholder:"e.g., 30d"})}),(0,c.jsx)(A.Z.Item,{label:"Team Member TPM Limit",name:"team_member_tpm_limit",tooltip:"Default tokens per minute limit for an individual team member. This limit applies to all requests the user makes within this team. Can be overridden per member.",children:(0,c.jsx)(O,{step:1,style:{width:"100%"},placeholder:"e.g., 1000"})}),(0,c.jsx)(A.Z.Item,{label:"Team Member RPM Limit",name:"team_member_rpm_limit",tooltip:"Default requests per minute limit for an individual team member. This limit applies to all requests the user makes within this team. Can be overridden per member.",children:(0,c.jsx)(O,{step:1,style:{width:"100%"},placeholder:"e.g., 100"})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Setup your first guardrail",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",help:"Select existing guardrails or enter new ones",children:(0,c.jsx)(I.default,{mode:"tags",placeholder:"Select or enter guardrails",options:ed.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:"Vector Stores",name:"vector_stores",children:(0,c.jsx)(U,{onChange:e=>W.setFieldValue("vector_stores",e),value:W.getFieldValue("vector_stores"),accessToken:w||"",placeholder:"Select vector stores"})}),(0,c.jsx)(A.Z.Item,{label:"MCP Servers / Access Groups",name:"mcp_servers_and_groups",children:(0,c.jsx)(eD,{onChange:e=>W.setFieldValue("mcp_servers_and_groups",e),value:W.getFieldValue("mcp_servers_and_groups"),accessToken:w||"",placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{name:"mcp_tool_permissions",initialValue:{},hidden:!0,children:(0,c.jsx)(L.default,{type:"hidden"})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.mcp_servers_and_groups!==s.mcp_servers_and_groups||e.mcp_tool_permissions!==s.mcp_tool_permissions,children:()=>{var e;return(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsx)(eU,{accessToken:w||"",selectedServers:(null===(e=W.getFieldValue("mcp_servers_and_groups"))||void 0===e?void 0:e.servers)||[],toolPermissions:W.getFieldValue("mcp_tool_permissions")||{},onChange:e=>W.setFieldsValue({mcp_tool_permissions:e})})})}}),(0,c.jsx)(A.Z.Item,{label:"Organization ID",name:"organization_id",children:(0,c.jsx)(L.default,{type:""})}),(0,c.jsx)(A.Z.Item,{label:"Logging Settings",name:"logging_settings",children:(0,c.jsx)(so,{value:W.getFieldValue("logging_settings"),onChange:e=>W.setFieldValue("logging_settings",e)})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(L.default.TextArea,{rows:10})}),(0,c.jsx)("div",{className:"sticky z-10 bg-white p-4 border-t border-gray-200 bottom-[-1.5rem] inset-x-[-1.5rem]",children:(0,c.jsxs)("div",{className:"flex justify-end items-center gap-2",children:[(0,c.jsx)(P.ZP,{htmlType:"button",onClick:()=>et(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team Name"}),(0,c.jsx)("div",{children:ef.team_alias})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team ID"}),(0,c.jsx)("div",{className:"font-mono",children:ef.team_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:new Date(ef.created_at).toLocaleString()})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:ef.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Rate Limits"}),(0,c.jsxs)("div",{children:["TPM: ",ef.tpm_limit||"Unlimited"]}),(0,c.jsxs)("div",{children:["RPM: ",ef.rpm_limit||"Unlimited"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team Budget"}),(0,c.jsxs)("div",{children:["Max Budget:"," ",null!==ef.max_budget?"$".concat(eL(ef.max_budget,4)):"No Limit"]}),(0,c.jsxs)("div",{children:["Budget Reset: ",ef.budget_duration||"Never"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["Team Member Settings"," ",(0,c.jsx)(B.Z,{title:"These are limits on individual team members",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),(0,c.jsxs)("div",{children:["Max Budget: ",(null===(h=ef.team_member_budget_table)||void 0===h?void 0:h.max_budget)||"No Limit"]}),(0,c.jsxs)("div",{children:["Key Duration: ",(null===(p=ef.metadata)||void 0===p?void 0:p.team_member_key_duration)||"No Limit"]}),(0,c.jsxs)("div",{children:["TPM Limit: ",(null===(g=ef.team_member_budget_table)||void 0===g?void 0:g.tpm_limit)||"No Limit"]}),(0,c.jsxs)("div",{children:["RPM Limit: ",(null===(f=ef.team_member_budget_table)||void 0===f?void 0:f.rpm_limit)||"No Limit"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization ID"}),(0,c.jsx)("div",{children:ef.organization_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Status"}),(0,c.jsx)(se.Z,{color:ef.blocked?"red":"green",children:ef.blocked?"Blocked":"Active"})]}),(0,c.jsx)(s_,{objectPermission:ef.object_permission,variant:"inline",className:"pt-4 border-t border-gray-200",accessToken:w}),(0,c.jsx)(sN,{loggingConfigs:(null===(v=ef.metadata)||void 0===v?void 0:v.logging)||[],disabledCallbacks:[],variant:"inline",className:"pt-4 border-t border-gray-200"})]})]})})]})]}),(0,c.jsx)(tb,{visible:$,onCancel:()=>Q(!1),onSubmit:ep,initialData:X,mode:"edit",config:{title:"Edit Member",showEmail:!0,showUserId:!0,roleOptions:[{label:"Admin",value:"admin"},{label:"User",value:"user"}],additionalFields:[{name:"max_budget_in_team",label:(0,c.jsxs)("span",{children:["Team Member Budget (USD)"," ",(0,c.jsx)(B.Z,{title:"Maximum amount in USD this member can spend within this team. This is separate from any global user budget limits",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),type:"numerical",step:.01,min:0,placeholder:"Budget limit for this member within this team"},{name:"tpm_limit",label:(0,c.jsxs)("span",{children:["Team Member TPM Limit"," ",(0,c.jsx)(B.Z,{title:"Maximum tokens per minute this member can use within this team. This is separate from any global user TPM limit",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),type:"numerical",step:1,min:0,placeholder:"Tokens per minute limit for this member in this team"},{name:"rpm_limit",label:(0,c.jsxs)("span",{children:["Team Member RPM Limit"," ",(0,c.jsx)(B.Z,{title:"Maximum requests per minute this member can make within this team. This is separate from any global user RPM limit",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),type:"numerical",step:1,min:0,placeholder:"Requests per minute limit for this member in this team"}]}}),(0,c.jsx)(t_,{isVisible:Y,onCancel:()=>J(!1),onSubmit:eh,accessToken:w})]})},tZ=t(45589);let{Title:tw,Link:tk}=en.default;var tS=e=>{let{isVisible:s,onCancel:t,onAddCredential:l,existingCredential:a,setIsCredentialModalOpen:r}=e,[i]=A.Z.useForm();return console.log("existingCredential in add credentials tab: ".concat(JSON.stringify(a))),(0,c.jsx)(T.Z,{title:"Reuse Credentials",visible:s,onCancel:()=>{t(),i.resetFields()},footer:null,width:600,children:(0,c.jsxs)(A.Z,{form:i,onFinish:e=>{l(e),i.resetFields(),r(!1)},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Credential Name:",name:"credential_name",rules:[{required:!0,message:"Credential name is required"}],initialValue:null==a?void 0:a.credential_name,children:(0,c.jsx)(eW.o,{placeholder:"Enter a friendly name for these credentials"})}),Object.entries((null==a?void 0:a.credential_values)||{}).map(e=>{let[s,t]=e;return(0,c.jsx)(A.Z.Item,{label:s,name:s,initialValue:t,children:(0,c.jsx)(eW.o,{placeholder:"Enter ".concat(s),disabled:!0})},s)}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(tk,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{children:[(0,c.jsx)(P.ZP,{onClick:()=>{t(),i.resetFields()},style:{marginRight:10},children:"Cancel"}),(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Reuse Credentials"})]})]})]})})},tC=t(45246),tI=t(96473);let{Text:tA}=en.default;var tT=e=>{let{form:s,showCacheControl:t,onCacheControlChange:l}=e,a=e=>{let t=s.getFieldValue("litellm_extra_params");try{let l=t?JSON.parse(t):{};e.length>0?l.cache_control_injection_points=e:delete l.cache_control_injection_points,Object.keys(l).length>0?s.setFieldValue("litellm_extra_params",JSON.stringify(l,null,2)):s.setFieldValue("litellm_extra_params","")}catch(e){console.error("Error updating cache control points:",e)}};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Cache Control Injection Points",name:"cache_control",valuePropName:"checked",className:"mb-4",tooltip:"Tell litellm where to inject cache control checkpoints. You can specify either by role (to apply to all messages of that role) or by specific message index.",children:(0,c.jsx)(eJ.Z,{onChange:l,className:"bg-gray-600"})}),t&&(0,c.jsxs)("div",{className:"ml-6 pl-4 border-l-2 border-gray-200",children:[(0,c.jsx)(tA,{className:"text-sm text-gray-500 block mb-4",children:"Providers like Anthropic, Bedrock API require users to specify where to inject cache control checkpoints, litellm can automatically add them for you as a cost saving feature."}),(0,c.jsx)(A.Z.List,{name:"cache_control_injection_points",initialValue:[{location:"message"}],children:(e,t)=>{let{add:l,remove:r}=t;return(0,c.jsxs)(c.Fragment,{children:[e.map((t,l)=>(0,c.jsxs)("div",{className:"flex items-center mb-4 gap-4",children:[(0,c.jsx)(A.Z.Item,{...t,label:"Type",name:[t.name,"location"],initialValue:"message",className:"mb-0",style:{width:"180px"},children:(0,c.jsx)(I.default,{disabled:!0,options:[{value:"message",label:"Message"}]})}),(0,c.jsx)(A.Z.Item,{...t,label:"Role",name:[t.name,"role"],className:"mb-0",style:{width:"180px"},tooltip:"LiteLLM will mark all messages of this role as cacheable",children:(0,c.jsx)(I.default,{placeholder:"Select a role",allowClear:!0,options:[{value:"user",label:"User"},{value:"system",label:"System"},{value:"assistant",label:"Assistant"}],onChange:()=>{a(s.getFieldValue("cache_control_points"))}})}),(0,c.jsx)(A.Z.Item,{...t,label:"Index",name:[t.name,"index"],className:"mb-0",style:{width:"180px"},tooltip:"(Optional) If set litellm will mark the message at this index as cacheable",children:(0,c.jsx)(O,{type:"number",placeholder:"Optional",step:1,min:0,onChange:()=>{a(s.getFieldValue("cache_control_points"))}})}),e.length>1&&(0,c.jsx)(tC.Z,{className:"text-red-500 cursor-pointer text-lg ml-12",onClick:()=>{r(t.name),setTimeout(()=>{a(s.getFieldValue("cache_control_points"))},0)}})]},t.key)),(0,c.jsx)(A.Z.Item,{children:(0,c.jsxs)("button",{type:"button",className:"flex items-center justify-center w-full border border-dashed border-gray-300 py-2 px-4 text-gray-600 hover:text-blue-600 hover:border-blue-300 transition-all rounded",onClick:()=>l(),children:[(0,c.jsx)(tI.Z,{className:"mr-2"}),"Add Injection Point"]})})]})}})]})]})},tE=t(44851),tP=t(67960),tL=t(70464);let{TextArea:tM}=L.default,{Panel:tO}=tE.default;var tD=e=>{let{modelInfo:s,value:t,onChange:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]);(0,d.useEffect)(()=>{if(null==t?void 0:t.routes){let e=t.routes.map((e,s)=>({id:e.id||"route-".concat(s,"-").concat(Date.now()),model:e.name||e.model||"",utterances:e.utterances||[],description:e.description||"",score_threshold:e.score_threshold||.5}));r(e),m(e.map(e=>e.id))}else r([]),m([])},[t]);let u=e=>{let s=a.filter(s=>s.id!==e);r(s),h(s),m(s=>s.filter(s=>s!==e))},x=(e,s,t)=>{let l=a.map(l=>l.id===e?{...l,[s]:t}:l);r(l),h(l)},h=e=>{let s={routes:e.map(e=>({name:e.model,utterances:e.utterances,description:e.description,score_threshold:e.score_threshold}))};null==l||l(s)},p=s.map(e=>({value:e.model_group,label:e.model_group}));return(0,c.jsxs)("div",{className:"w-full max-w-none",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6 w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold",children:"Routes Configuration"}),(0,c.jsx)(B.Z,{title:"Configure routing logic to automatically select the best model based on user input patterns",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsx)(P.ZP,{type:"primary",icon:(0,c.jsx)(tI.Z,{}),onClick:()=>{let e="route-".concat(Date.now()),s=[...a,{id:e,model:"",utterances:[],description:"",score_threshold:.5}];r(s),h(s),m(s=>[...s,e])},className:"bg-blue-600 hover:bg-blue-700",children:"Add Route"})]}),0===a.length?(0,c.jsx)("div",{className:"text-center py-12 text-gray-500 bg-gray-50 rounded-lg border-2 border-dashed border-gray-200 mb-6",children:(0,c.jsx)(k.Z,{children:"No routes configured. Click “Add Route” to get started."})}):(0,c.jsx)("div",{className:"space-y-3 mb-6 w-full",children:a.map((e,s)=>(0,c.jsx)(tP.Z,{className:"border border-gray-200 shadow-sm w-full",bodyStyle:{padding:0},children:(0,c.jsx)(tE.default,{ghost:!0,expandIcon:e=>{let{isActive:s}=e;return(0,c.jsx)(tL.Z,{rotate:s?180:0})},activeKey:o,onChange:e=>m(Array.isArray(e)?e:[e].filter(Boolean)),items:[{key:e.id,label:(0,c.jsxs)("div",{className:"flex justify-between items-center py-2",children:[(0,c.jsxs)(k.Z,{className:"font-medium text-base",children:["Route ",s+1,": ",e.model||"Unnamed"]}),(0,c.jsx)(P.ZP,{type:"text",danger:!0,icon:(0,c.jsx)(ep.Z,{}),onClick:s=>{s.stopPropagation(),u(e.id)},className:"mr-2"})]}),children:(0,c.jsxs)("div",{className:"px-6 pb-6 w-full",children:[(0,c.jsxs)("div",{className:"mb-4 w-full",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-2 block",children:"Model"}),(0,c.jsx)(I.default,{value:e.model,onChange:s=>x(e.id,"model",s),placeholder:"Select model",showSearch:!0,style:{width:"100%"},options:p})]}),(0,c.jsxs)("div",{className:"mb-4 w-full",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-2 block",children:"Description"}),(0,c.jsx)(tM,{value:e.description,onChange:s=>x(e.id,"description",s.target.value),placeholder:"Describe when this route should be used...",rows:2,style:{width:"100%"}})]}),(0,c.jsxs)("div",{className:"mb-4 w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium",children:"Score Threshold"}),(0,c.jsx)(B.Z,{title:"Minimum similarity score to route to this model (0-1)",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsx)(e8.Z,{value:e.score_threshold,onChange:s=>x(e.id,"score_threshold",s||0),min:0,max:1,step:.1,style:{width:"100%"},placeholder:"0.5"})]}),(0,c.jsxs)("div",{className:"w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium",children:"Example Utterances"}),(0,c.jsx)(B.Z,{title:"Training examples for this route. Type an utterance and press Enter to add it.",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500 mb-2",children:"Type an utterance and press Enter to add it. You can also paste multiple lines."}),(0,c.jsx)(I.default,{mode:"tags",value:e.utterances,onChange:s=>x(e.id,"utterances",s),placeholder:"Type an utterance and press Enter...",style:{width:"100%"},tokenSeparators:["\n"],maxTagCount:"responsive",allowClear:!0})]})]})}]})},e.id))}),(0,c.jsxs)("div",{className:"border-t pt-6 w-full",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4 w-full",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold",children:"JSON Preview"}),(0,c.jsx)(P.ZP,{type:"link",onClick:()=>n(!i),className:"text-blue-600 p-0",children:i?"Hide":"Show"})]}),i&&(0,c.jsx)(tP.Z,{className:"bg-gray-50 w-full",children:(0,c.jsx)("pre",{className:"text-sm overflow-auto max-h-64 w-full",children:JSON.stringify({routes:a.map(e=>({name:e.model,utterances:e.utterances,description:e.description,score_threshold:e.score_threshold}))},null,2)})})]})]})},tF=e=>{let{isVisible:s,onCancel:t,onSuccess:l,modelData:a,accessToken:r,userRole:i}=e,[n]=A.Z.useForm(),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)(!1),[b,N]=(0,d.useState)(null);(0,d.useEffect)(()=>{s&&a&&Z()},[s,a]),(0,d.useEffect)(()=>{let e=async()=>{if(r)try{let e=await (0,j.modelAvailableCall)(r,"","",!1,null,!0,!0);x(e.data.map(e=>e.id))}catch(e){console.error("Error fetching model access groups:",e)}},t=async()=>{if(r)try{let e=await eG(r);p(e)}catch(e){console.error("Error fetching model info:",e)}};s&&(e(),t())},[s,r]);let Z=()=>{try{var e,s,t,l,r,i;let o=null;(null===(e=a.litellm_params)||void 0===e?void 0:e.auto_router_config)&&(o="string"==typeof a.litellm_params.auto_router_config?JSON.parse(a.litellm_params.auto_router_config):a.litellm_params.auto_router_config),N(o),n.setFieldsValue({auto_router_name:a.model_name,auto_router_default_model:(null===(s=a.litellm_params)||void 0===s?void 0:s.auto_router_default_model)||"",auto_router_embedding_model:(null===(t=a.litellm_params)||void 0===t?void 0:t.auto_router_embedding_model)||"",model_access_group:(null===(l=a.model_info)||void 0===l?void 0:l.access_groups)||[]});let c=new Set(h.map(e=>e.model_group));f(!c.has(null===(r=a.litellm_params)||void 0===r?void 0:r.auto_router_default_model)),y(!c.has(null===(i=a.litellm_params)||void 0===i?void 0:i.auto_router_embedding_model))}catch(e){console.error("Error parsing auto router config:",e),eo.Z.fromBackend("Error loading auto router configuration")}},w=async()=>{try{m(!0);let e=await n.validateFields(),s={...a.litellm_params,auto_router_config:JSON.stringify(b),auto_router_default_model:e.auto_router_default_model,auto_router_embedding_model:e.auto_router_embedding_model||void 0},i={...a.model_info,access_groups:e.model_access_group||[]},o={model_name:e.auto_router_name,litellm_params:s,model_info:i};await (0,j.modelPatchUpdateCall)(r,o,a.model_info.id);let c={...a,model_name:e.auto_router_name,litellm_params:s,model_info:i};eo.Z.success("Auto router configuration updated successfully"),l(c),t()}catch(e){console.error("Error updating auto router:",e),eo.Z.fromBackend("Failed to update auto router configuration")}finally{m(!1)}},S=h.map(e=>({value:e.model_group,label:e.model_group}));return(0,c.jsx)(T.Z,{title:"Edit Auto Router Configuration",open:s,onCancel:t,footer:[(0,c.jsx)(P.ZP,{onClick:t,children:"Cancel"},"cancel"),(0,c.jsx)(P.ZP,{loading:o,onClick:w,children:"Save Changes"},"submit")],width:1e3,destroyOnClose:!0,children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsx)(k.Z,{className:"text-gray-600",children:"Edit the auto router configuration including routing logic, default models, and access settings."}),(0,c.jsxs)(A.Z,{form:n,layout:"vertical",className:"space-y-4",children:[(0,c.jsx)(A.Z.Item,{label:"Auto Router Name",name:"auto_router_name",rules:[{required:!0,message:"Auto router name is required"}],children:(0,c.jsx)(_.Z,{placeholder:"e.g., auto_router_1, smart_routing"})}),(0,c.jsx)("div",{className:"w-full",children:(0,c.jsx)(tD,{modelInfo:h,value:b,onChange:e=>{N(e)}})}),(0,c.jsx)(A.Z.Item,{label:"Default Model",name:"auto_router_default_model",rules:[{required:!0,message:"Default model is required"}],children:(0,c.jsx)(I.default,{placeholder:"Select a default model",onChange:e=>{f("custom"===e)},options:[...S,{value:"custom",label:"Enter custom model name"}],showSearch:!0})}),(0,c.jsx)(A.Z.Item,{label:"Embedding Model",name:"auto_router_embedding_model",children:(0,c.jsx)(I.default,{placeholder:"Select an embedding model (optional)",onChange:e=>{y("custom"===e)},options:[...S,{value:"custom",label:"Enter custom model name"}],showSearch:!0,allowClear:!0})}),"Admin"===i&&(0,c.jsx)(A.Z.Item,{label:"Model Access Groups",name:"model_access_group",tooltip:"Control who can access this auto router",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],options:u.map(e=>({value:e,label:e})),maxTagCount:"responsive",allowClear:!0})})]})]})})};function tR(e){var s,t,l,a,r,i,n,o,m,u,x,h,p,g,f,v,N,Z,w,C,E,M,D,F,R,z,U,q;let{modelId:K,onClose:H,modelData:Y,accessToken:J,userID:$,userRole:Q,editModel:X,setEditModalVisible:ee,setSelectedModel:es,onModelUpdate:et,modelAccessGroups:el}=e,[ea]=A.Z.useForm(),[er,ei]=(0,d.useState)(null),[en,ec]=(0,d.useState)(!1),[ed,em]=(0,d.useState)(!1),[eu,ex]=(0,d.useState)(!1),[eh,ep]=(0,d.useState)(!1),[eg,ej]=(0,d.useState)(!1),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)(!1),[e_,eN]=(0,d.useState)({}),[eZ,ew]=(0,d.useState)(!1),[ek,eS]=(0,d.useState)([]),eC="Admin"===Q||(null==Y?void 0:null===(s=Y.model_info)||void 0===s?void 0:s.created_by)===$,eI=(null==Y?void 0:null===(t=Y.litellm_params)||void 0===t?void 0:t.auto_router_config)!=null,eA=(null==Y?void 0:null===(l=Y.litellm_params)||void 0===l?void 0:l.litellm_credential_name)!=null&&(null==Y?void 0:null===(a=Y.litellm_params)||void 0===a?void 0:a.litellm_credential_name)!=void 0;console.log("usingExistingCredential, ",eA),console.log("modelData.litellm_params.litellm_credential_name, ",null==Y?void 0:null===(r=Y.litellm_params)||void 0===r?void 0:r.litellm_credential_name),(0,d.useEffect)(()=>{let e=async()=>{var e,s,t,l,a,r,i;if(!J)return;let n=await (0,j.modelInfoV1Call)(J,K);console.log("modelInfoResponse, ",n);let o=n.data[0];o&&!o.litellm_model_name&&(o={...o,litellm_model_name:null!==(i=null!==(r=null!==(a=null==o?void 0:null===(s=o.litellm_params)||void 0===s?void 0:s.litellm_model_name)&&void 0!==a?a:null==o?void 0:null===(t=o.litellm_params)||void 0===t?void 0:t.model)&&void 0!==r?r:null==o?void 0:null===(l=o.model_info)||void 0===l?void 0:l.key)&&void 0!==i?i:null}),ei(o),(null==o?void 0:null===(e=o.litellm_params)||void 0===e?void 0:e.cache_control_injection_points)&&eb(!0)},s=async()=>{if(J)try{let e=(await (0,j.getGuardrailsList)(J)).guardrails.map(e=>e.guardrail_name);eS(e)}catch(e){console.error("Failed to fetch guardrails:",e)}};(async()=>{if(console.log("accessToken, ",J),!J||eA)return;let e=await (0,j.credentialGetCall)(J,null,K);console.log("existingCredentialResponse, ",e),ev({credential_name:e.credential_name,credential_values:e.credential_values,credential_info:e.credential_info})})(),e(),s()},[J,K]);let eT=async e=>{var s;if(console.log("values, ",e),!J)return;let t={credential_name:e.credential_name,model_id:K,credential_info:{custom_llm_provider:null===(s=er.litellm_params)||void 0===s?void 0:s.custom_llm_provider}};eo.Z.info("Storing credential.."),console.log("credentialResponse, ",await (0,j.credentialCreateCall)(J,t)),eo.Z.success("Credential stored successfully")},eE=async e=>{try{var s;let t;if(!J)return;ep(!0),console.log("values.model_name, ",e.model_name);let l={...er.litellm_params,model:e.litellm_model_name,api_base:e.api_base,custom_llm_provider:e.custom_llm_provider,organization:e.organization,tpm:e.tpm,rpm:e.rpm,max_retries:e.max_retries,timeout:e.timeout,stream_timeout:e.stream_timeout,input_cost_per_token:e.input_cost/1e6,output_cost_per_token:e.output_cost/1e6};e.guardrails&&(l.guardrails=e.guardrails),e.cache_control&&(null===(s=e.cache_control_injection_points)||void 0===s?void 0:s.length)>0?l.cache_control_injection_points=e.cache_control_injection_points:delete l.cache_control_injection_points;try{t=e.model_info?JSON.parse(e.model_info):Y.model_info,e.model_access_group&&(t={...t,access_groups:e.model_access_group})}catch(e){eo.Z.fromBackend("Invalid JSON in Model Info");return}let a={model_name:e.model_name,litellm_params:l,model_info:t};await (0,j.modelPatchUpdateCall)(J,a,K);let r={...er,model_name:e.model_name,litellm_model_name:e.litellm_model_name,litellm_params:l,model_info:t};ei(r),et&&et(r),eo.Z.success("Model settings updated successfully"),ex(!1),ej(!1)}catch(e){console.error("Error updating model:",e),eo.Z.fromBackend("Failed to update model settings")}finally{ep(!1)}};if(!Y)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:H,className:"mb-4",children:"Back to Models"}),(0,c.jsx)(k.Z,{children:"Model not found"})]});let eP=async()=>{try{if(!J)return;await (0,j.modelDeleteCall)(J,K),eo.Z.success("Model deleted successfully"),et&&et({deleted:!0,model_info:{id:K}}),H()}catch(e){console.error("Error deleting the model:",e),eo.Z.fromBackend("Failed to delete model")}},eL=async(e,s)=>{await eM(e)&&(eN(e=>({...e,[s]:!0})),setTimeout(()=>{eN(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:H,className:"mb-4",children:"Back to Models"}),(0,c.jsxs)(S.Z,{children:["Public Model Name: ",ta(Y)]}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:Y.model_info.id}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:e_["model-id"]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>eL(Y.model_info.id,"model-id"),className:"left-2 z-10 transition-all duration-200 ".concat(e_["model-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)("div",{className:"flex gap-2",children:["Admin"===Q&&(0,c.jsx)(b.Z,{icon:tZ.Z,variant:"secondary",onClick:()=>em(!0),className:"flex items-center",children:"Re-use Credentials"}),eC&&(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>ec(!0),className:"flex items-center",children:"Delete Model"})]})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"Overview"}),(0,c.jsx)(ss.Z,{children:"Raw JSON"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6 mb-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Provider"}),(0,c.jsxs)("div",{className:"mt-2 flex items-center space-x-2",children:[Y.provider&&(0,c.jsx)("img",{src:(0,s0.dr)(Y.provider).logo,alt:"".concat(Y.provider," logo"),className:"w-4 h-4",onError:e=>{let s=e.target,t=s.parentElement;if(t){var l;let e=document.createElement("div");e.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=(null===(l=Y.provider)||void 0===l?void 0:l.charAt(0))||"-",t.replaceChild(e,s)}}}),(0,c.jsx)(S.Z,{children:Y.provider||"Not Set"})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"LiteLLM Model"}),(0,c.jsx)("div",{className:"mt-2 overflow-hidden",children:(0,c.jsx)(B.Z,{title:Y.litellm_model_name||"Not Set",children:(0,c.jsx)("div",{className:"break-all text-sm font-medium leading-relaxed cursor-pointer",children:Y.litellm_model_name||"Not Set"})})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Pricing"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["Input: $",Y.input_cost,"/1M tokens"]}),(0,c.jsxs)(k.Z,{children:["Output: $",Y.output_cost,"/1M tokens"]})]})]})]}),(0,c.jsxs)("div",{className:"mb-6 text-sm text-gray-500 flex items-center gap-x-6",children:[(0,c.jsxs)("div",{className:"flex items-center gap-x-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})}),"Created At"," ",Y.model_info.created_at?new Date(Y.model_info.created_at).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"Not Set"]}),(0,c.jsxs)("div",{className:"flex items-center gap-x-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})}),"Created By ",Y.model_info.created_by||"Not Set"]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Model Settings"}),(0,c.jsxs)("div",{className:"flex gap-2",children:[eI&&eC&&!eg&&(0,c.jsx)(b.Z,{variant:"primary",onClick:()=>ew(!0),className:"flex items-center",children:"Edit Auto Router"}),eC&&!eg&&(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>ej(!0),className:"flex items-center",children:"Edit Model"})]})]}),er?(0,c.jsx)(A.Z,{form:ea,onFinish:eE,initialValues:{model_name:er.model_name,litellm_model_name:er.litellm_model_name,api_base:er.litellm_params.api_base,custom_llm_provider:er.litellm_params.custom_llm_provider,organization:er.litellm_params.organization,tpm:er.litellm_params.tpm,rpm:er.litellm_params.rpm,max_retries:er.litellm_params.max_retries,timeout:er.litellm_params.timeout,stream_timeout:er.litellm_params.stream_timeout,input_cost:er.litellm_params.input_cost_per_token?1e6*er.litellm_params.input_cost_per_token:(null===(i=er.model_info)||void 0===i?void 0:i.input_cost_per_token)*1e6||null,output_cost:(null===(n=er.litellm_params)||void 0===n?void 0:n.output_cost_per_token)?1e6*er.litellm_params.output_cost_per_token:(null===(o=er.model_info)||void 0===o?void 0:o.output_cost_per_token)*1e6||null,cache_control:null!==(m=er.litellm_params)&&void 0!==m&&!!m.cache_control_injection_points,cache_control_injection_points:(null===(u=er.litellm_params)||void 0===u?void 0:u.cache_control_injection_points)||[],model_access_group:Array.isArray(null===(x=er.model_info)||void 0===x?void 0:x.access_groups)?er.model_info.access_groups:[],guardrails:Array.isArray(null===(h=er.litellm_params)||void 0===h?void 0:h.guardrails)?er.litellm_params.guardrails:[]},layout:"vertical",onValuesChange:()=>ex(!0),children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Model Name"}),eg?(0,c.jsx)(A.Z.Item,{name:"model_name",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter model name"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:er.model_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"LiteLLM Model Name"}),eg?(0,c.jsx)(A.Z.Item,{name:"litellm_model_name",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter LiteLLM model name"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:er.litellm_model_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Input Cost (per 1M tokens)"}),eg?(0,c.jsx)(A.Z.Item,{name:"input_cost",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter input cost"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null==er?void 0:null===(p=er.litellm_params)||void 0===p?void 0:p.input_cost_per_token)?((null===(g=er.litellm_params)||void 0===g?void 0:g.input_cost_per_token)*1e6).toFixed(4):(null==er?void 0:null===(f=er.model_info)||void 0===f?void 0:f.input_cost_per_token)?(1e6*er.model_info.input_cost_per_token).toFixed(4):null})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Output Cost (per 1M tokens)"}),eg?(0,c.jsx)(A.Z.Item,{name:"output_cost",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter output cost"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null==er?void 0:null===(v=er.litellm_params)||void 0===v?void 0:v.output_cost_per_token)?(1e6*er.litellm_params.output_cost_per_token).toFixed(4):(null==er?void 0:null===(N=er.model_info)||void 0===N?void 0:N.output_cost_per_token)?(1e6*er.model_info.output_cost_per_token).toFixed(4):null})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"API Base"}),eg?(0,c.jsx)(A.Z.Item,{name:"api_base",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter API base"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(Z=er.litellm_params)||void 0===Z?void 0:Z.api_base)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Custom LLM Provider"}),eg?(0,c.jsx)(A.Z.Item,{name:"custom_llm_provider",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter custom LLM provider"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(w=er.litellm_params)||void 0===w?void 0:w.custom_llm_provider)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization"}),eg?(0,c.jsx)(A.Z.Item,{name:"organization",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter organization"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(C=er.litellm_params)||void 0===C?void 0:C.organization)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"TPM (Tokens per Minute)"}),eg?(0,c.jsx)(A.Z.Item,{name:"tpm",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter TPM"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(E=er.litellm_params)||void 0===E?void 0:E.tpm)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"RPM (Requests per Minute)"}),eg?(0,c.jsx)(A.Z.Item,{name:"rpm",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter RPM"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(M=er.litellm_params)||void 0===M?void 0:M.rpm)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Max Retries"}),eg?(0,c.jsx)(A.Z.Item,{name:"max_retries",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter max retries"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(D=er.litellm_params)||void 0===D?void 0:D.max_retries)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Timeout (seconds)"}),eg?(0,c.jsx)(A.Z.Item,{name:"timeout",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter timeout"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(F=er.litellm_params)||void 0===F?void 0:F.timeout)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Stream Timeout (seconds)"}),eg?(0,c.jsx)(A.Z.Item,{name:"stream_timeout",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter stream timeout"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(R=er.litellm_params)||void 0===R?void 0:R.stream_timeout)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Model Access Groups"}),eg?(0,c.jsx)(A.Z.Item,{name:"model_access_group",className:"mb-0",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],maxTagCount:"responsive",allowClear:!0,style:{width:"100%"},options:null==el?void 0:el.map(e=>({value:e,label:e}))})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(z=er.model_info)||void 0===z?void 0:z.access_groups)?Array.isArray(er.model_info.access_groups)?er.model_info.access_groups.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:er.model_info.access_groups.map((e,s)=>(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-blue-100 text-blue-800",children:e},s))}):"No groups assigned":er.model_info.access_groups:"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Apply safety guardrails to this model to filter content or enforce policies",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),eg?(0,c.jsx)(A.Z.Item,{name:"guardrails",className:"mb-0",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing guardrails or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],maxTagCount:"responsive",allowClear:!0,style:{width:"100%"},options:ek.map(e=>({value:e,label:e}))})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(U=er.litellm_params)||void 0===U?void 0:U.guardrails)?Array.isArray(er.litellm_params.guardrails)?er.litellm_params.guardrails.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:er.litellm_params.guardrails.map((e,s)=>(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-green-100 text-green-800",children:e},s))}):"No guardrails assigned":er.litellm_params.guardrails:"Not Set"})]}),eg?(0,c.jsx)(tT,{form:ea,showCacheControl:ey,onCacheControlChange:e=>eb(e)}):(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Cache Control"}),(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(q=er.litellm_params)||void 0===q?void 0:q.cache_control_injection_points)?(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{children:"Enabled"}),(0,c.jsx)("div",{className:"mt-2",children:er.litellm_params.cache_control_injection_points.map((e,s)=>(0,c.jsxs)("div",{className:"text-sm text-gray-600 mb-1",children:["Location: ",e.location,",",e.role&&(0,c.jsxs)("span",{children:[" Role: ",e.role]}),void 0!==e.index&&(0,c.jsxs)("span",{children:[" Index: ",e.index]})]},s))})]}):"Disabled"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Model Info"}),eg?(0,c.jsx)(A.Z.Item,{name:"model_info",className:"mb-0",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:'{"gpt-4": 100, "claude-v1": 200}',defaultValue:JSON.stringify(Y.model_info,null,2)})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify(er.model_info,null,2)})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team ID"}),(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:Y.model_info.team_id||"Not Set"})]})]}),eg&&(0,c.jsxs)("div",{className:"mt-6 flex justify-end gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{ea.resetFields(),ex(!1),ej(!1)},children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",onClick:()=>ea.submit(),loading:eh,children:"Save Changes"})]})]})}):(0,c.jsx)(k.Z,{children:"Loading..."})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(G.Z,{children:(0,c.jsx)("pre",{className:"bg-gray-100 p-4 rounded text-xs overflow-auto",children:JSON.stringify(Y,null,2)})})})]})]}),en&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Model"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this model?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(P.ZP,{onClick:eP,className:"ml-2",danger:!0,children:"Delete"}),(0,c.jsx)(P.ZP,{onClick:()=>ec(!1),children:"Cancel"})]})]})]})}),ed&&!eA?(0,c.jsx)(tS,{isVisible:ed,onCancel:()=>em(!1),onAddCredential:eT,existingCredential:ef,setIsCredentialModalOpen:em}):(0,c.jsx)(T.Z,{open:ed,onCancel:()=>em(!1),title:"Using Existing Credential",children:(0,c.jsx)(k.Z,{children:Y.litellm_params.litellm_credential_name})}),(0,c.jsx)(tF,{isVisible:eZ,onCancel:()=>ew(!1),onSuccess:e=>{ei(e),et&&et(e)},modelData:er||Y,accessToken:J||"",userRole:Q||""})]})}var tz=e=>{let{selectedProvider:s,providerModels:t,getPlaceholder:l}=e,a=A.Z.useFormInstance(),r=e=>{let t=e.target.value,l=(a.getFieldValue("model_mappings")||[]).map(e=>"custom"===e.public_name||"custom"===e.litellm_model?s===s0.Cl.Azure?{public_name:t,litellm_model:"azure/".concat(t)}:{public_name:t,litellm_model:t}:e);a.setFieldsValue({model_mappings:l})};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(A.Z.Item,{label:"LiteLLM Model Name(s)",tooltip:"The model name LiteLLM will send to the LLM API",className:"mb-0",children:[(0,c.jsx)(A.Z.Item,{name:"model",rules:[{required:!0,message:"Please enter ".concat(s===s0.Cl.Azure?"a deployment name":"at least one model",".")}],noStyle:!0,children:s===s0.Cl.Azure||s===s0.Cl.OpenAI_Compatible||s===s0.Cl.Ollama?(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(_.Z,{placeholder:l(s),onChange:s===s0.Cl.Azure?e=>{let s=e.target.value,t=s?[{public_name:s,litellm_model:"azure/".concat(s)}]:[];a.setFieldsValue({model:s,model_mappings:t})}:void 0})}):t.length>0?(0,c.jsx)(I.default,{mode:"multiple",allowClear:!0,showSearch:!0,placeholder:"Select models",onChange:e=>{let t=Array.isArray(e)?e:[e];if(t.includes("all-wildcard"))a.setFieldsValue({model_name:void 0,model_mappings:[]});else if(JSON.stringify(a.getFieldValue("model"))!==JSON.stringify(t)){let e=t.map(e=>s===s0.Cl.Azure?{public_name:e,litellm_model:"azure/".concat(e)}:{public_name:e,litellm_model:e});a.setFieldsValue({model:t,model_mappings:e})}},optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{label:"Custom Model Name (Enter below)",value:"custom"},{label:"All ".concat(s," Models (Wildcard)"),value:"all-wildcard"},...t.map(e=>({label:e,value:e}))],style:{width:"100%"}}):(0,c.jsx)(_.Z,{placeholder:l(s)})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.model!==s.model,children:e=>{let{getFieldValue:t}=e,l=t("model")||[];return(Array.isArray(l)?l:[l]).includes("custom")&&(0,c.jsx)(A.Z.Item,{name:"custom_model_name",rules:[{required:!0,message:"Please enter a custom model name."}],className:"mt-2",children:(0,c.jsx)(_.Z,{placeholder:s===s0.Cl.Azure?"Enter Azure deployment name":"Enter custom model name",onChange:r})})}})]}),(0,c.jsxs)(s5.Z,{children:[(0,c.jsx)(s3.Z,{span:10}),(0,c.jsx)(s3.Z,{span:14,children:(0,c.jsx)(k.Z,{className:"mb-3 mt-1",children:s===s0.Cl.Azure?"Your deployment name will be saved as the public model name, and LiteLLM will use 'azure/deployment-name' internally":"The model name LiteLLM will send to the LLM API"})})]})]})},tU=t(67187);let tq=e=>{let{content:s,children:t,width:l="auto",className:a=""}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)("top"),m=(0,d.useRef)(null),u=()=>{if(m.current){let e=m.current.getBoundingClientRect(),s=e.top,t=window.innerHeight-e.bottom;s<300&&t>300?o("bottom"):o("top")}};return(0,c.jsxs)("div",{className:"relative inline-block",ref:m,children:[t||(0,c.jsx)(tU.Z,{className:"ml-1 text-gray-500 cursor-help",onMouseEnter:()=>{u(),i(!0)},onMouseLeave:()=>i(!1)}),r&&(0,c.jsxs)("div",{className:"absolute left-1/2 -translate-x-1/2 z-50 bg-black/90 text-white p-2 rounded-md text-sm font-normal shadow-lg ".concat(a),style:{["top"===n?"bottom":"top"]:"100%",width:l,marginBottom:"top"===n?"8px":"0",marginTop:"bottom"===n?"8px":"0"},children:[s,(0,c.jsx)("div",{className:"absolute left-1/2 -translate-x-1/2 w-0 h-0",style:{top:"top"===n?"100%":"auto",bottom:"bottom"===n?"100%":"auto",borderTop:"top"===n?"6px solid rgba(0, 0, 0, 0.9)":"6px solid transparent",borderBottom:"bottom"===n?"6px solid rgba(0, 0, 0, 0.9)":"6px solid transparent",borderLeft:"6px solid transparent",borderRight:"6px solid transparent"}})]})]})};var tV=()=>{let e=A.Z.useFormInstance(),[s,t]=(0,d.useState)(0),l=A.Z.useWatch("model",e)||[],a=Array.isArray(l)?l:[l],r=A.Z.useWatch("custom_model_name",e),i=!a.includes("all-wildcard"),n=A.Z.useWatch("custom_llm_provider",e);if((0,d.useEffect)(()=>{if(r&&a.includes("custom")){let s=(e.getFieldValue("model_mappings")||[]).map(e=>"custom"===e.public_name||"custom"===e.litellm_model?n===s0.Cl.Azure?{public_name:r,litellm_model:"azure/".concat(r)}:{public_name:r,litellm_model:r}:e);e.setFieldValue("model_mappings",s),t(e=>e+1)}},[r,a,n,e]),(0,d.useEffect)(()=>{if(a.length>0&&!a.includes("all-wildcard")){let s=e.getFieldValue("model_mappings")||[];if(s.length!==a.length||!a.every(e=>s.some(s=>"custom"===e?"custom"===s.litellm_model||s.litellm_model===r:n===s0.Cl.Azure?s.litellm_model==="azure/".concat(e):s.litellm_model===e))){let s=a.map(e=>"custom"===e&&r?n===s0.Cl.Azure?{public_name:r,litellm_model:"azure/".concat(r)}:{public_name:r,litellm_model:r}:n===s0.Cl.Azure?{public_name:e,litellm_model:"azure/".concat(e)}:{public_name:e,litellm_model:e});e.setFieldValue("model_mappings",s),t(e=>e+1)}}},[a,r,n,e]),!i)return null;let o=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"mb-2 font-normal",children:"The name you specify in your API calls to LiteLLM Proxy"}),(0,c.jsxs)("div",{className:"mb-2 font-normal",children:[(0,c.jsx)("strong",{children:"Example:"})," If you name your public model"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:"example-name"}),", and choose"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:"openai/qwen-plus-latest"})," as the LiteLLM model"]}),(0,c.jsxs)("div",{className:"mb-2 font-normal",children:[(0,c.jsx)("strong",{children:"Usage:"})," You make an API call to the LiteLLM proxy with"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:'model = "example-name"'})]}),(0,c.jsxs)("div",{className:"font-normal",children:[(0,c.jsx)("strong",{children:"Result:"})," LiteLLM sends"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:"qwen-plus-latest"})," to the provider"]})]}),m=(0,c.jsx)("div",{children:"The model name LiteLLM will send to the LLM API"}),u=[{title:(0,c.jsxs)("span",{className:"flex items-center",children:["Public Model Name",(0,c.jsx)(tq,{content:o,width:"500px"})]}),dataIndex:"public_name",key:"public_name",render:(s,t,l)=>(0,c.jsx)(eW.o,{value:s,onChange:s=>{let t=[...e.getFieldValue("model_mappings")];t[l].public_name=s.target.value,e.setFieldValue("model_mappings",t)}})},{title:(0,c.jsxs)("span",{className:"flex items-center",children:["LiteLLM Model Name",(0,c.jsx)(tq,{content:m,width:"360px"})]}),dataIndex:"litellm_model",key:"litellm_model"}];return(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(A.Z.Item,{label:"Model Mappings",name:"model_mappings",tooltip:"Map public model names to LiteLLM model names for load balancing",labelCol:{span:10},wrapperCol:{span:16},labelAlign:"left",rules:[{required:!0,validator:async(e,s)=>{if(!s||0===s.length)throw Error("At least one model mapping is required");if(s.filter(e=>!e.public_name||""===e.public_name.trim()).length>0)throw Error("All model mappings must have valid public names")}}],children:(0,c.jsx)(em.Z,{dataSource:e.getFieldValue("model_mappings"),columns:u,pagination:!1,size:"small"},s)})})},tB=t(90464);let{Link:tK}=en.default;var tG=e=>{let{showAdvancedSettings:s,setShowAdvancedSettings:t,teams:l,guardrailsList:a}=e,[r]=A.Z.useForm(),[i,n]=d.useState(!1),[o,m]=d.useState("per_token"),[u,x]=d.useState(!1),h=(e,s)=>s&&(isNaN(Number(s))||0>Number(s))?Promise.reject("Please enter a valid positive number"):Promise.resolve(),p=(e,s)=>{if(!s)return Promise.resolve();try{return JSON.parse(s),Promise.resolve()}catch(e){return Promise.reject("Please enter valid JSON")}};return(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)(N.Z,{className:"mt-2 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Advanced Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsxs)("div",{className:"bg-white rounded-lg",children:[(0,c.jsx)(A.Z.Item,{label:"Custom Pricing",name:"custom_pricing",valuePropName:"checked",className:"mb-4",children:(0,c.jsx)(eJ.Z,{onChange:e=>{n(e),e||r.setFieldsValue({input_cost_per_token:void 0,output_cost_per_token:void 0,input_cost_per_second:void 0})},className:"bg-gray-600"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Apply safety guardrails to this key to filter content or enforce policies",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",className:"mt-4",help:"Select existing guardrails. Go to 'Guardrails' tab to create new guardrails.",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},placeholder:"Select or enter guardrails",options:a.map(e=>({value:e,label:e}))})}),i&&(0,c.jsxs)("div",{className:"ml-6 pl-4 border-l-2 border-gray-200",children:[(0,c.jsx)(A.Z.Item,{label:"Pricing Model",name:"pricing_model",className:"mb-4",children:(0,c.jsx)(I.default,{defaultValue:"per_token",onChange:e=>m(e),options:[{value:"per_token",label:"Per Million Tokens"},{value:"per_second",label:"Per Second"}]})}),"per_token"===o?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Input Cost (per 1M tokens)",name:"input_cost_per_token",rules:[{validator:h}],className:"mb-4",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Output Cost (per 1M tokens)",name:"output_cost_per_token",rules:[{validator:h}],className:"mb-4",children:(0,c.jsx)(_.Z,{})})]}):(0,c.jsx)(A.Z.Item,{label:"Cost Per Second",name:"input_cost_per_second",rules:[{validator:h}],className:"mb-4",children:(0,c.jsx)(_.Z,{})})]}),(0,c.jsx)(A.Z.Item,{label:"Use in pass through routes",name:"use_in_pass_through",valuePropName:"checked",className:"mb-4 mt-4",tooltip:(0,c.jsxs)("span",{children:["Allow using these credentials in pass through routes."," ",(0,c.jsx)(tK,{href:"https://docs.litellm.ai/docs/pass_through/vertex_ai",target:"_blank",children:"Learn more"})]}),children:(0,c.jsx)(eJ.Z,{onChange:e=>{let s=r.getFieldValue("litellm_extra_params");try{let t=s?JSON.parse(s):{};e?t.use_in_pass_through=!0:delete t.use_in_pass_through,Object.keys(t).length>0?r.setFieldValue("litellm_extra_params",JSON.stringify(t,null,2)):r.setFieldValue("litellm_extra_params","")}catch(s){e?r.setFieldValue("litellm_extra_params",JSON.stringify({use_in_pass_through:!0},null,2)):r.setFieldValue("litellm_extra_params","")}},className:"bg-gray-600"})}),(0,c.jsx)(tT,{form:r,showCacheControl:u,onCacheControlChange:e=>{if(x(e),!e){let e=r.getFieldValue("litellm_extra_params");try{let s=e?JSON.parse(e):{};delete s.cache_control_injection_points,Object.keys(s).length>0?r.setFieldValue("litellm_extra_params",JSON.stringify(s,null,2)):r.setFieldValue("litellm_extra_params","")}catch(e){r.setFieldValue("litellm_extra_params","")}}}}),(0,c.jsx)(A.Z.Item,{label:"LiteLLM Params",name:"litellm_extra_params",tooltip:"Optional litellm params used for making a litellm.completion() call.",className:"mb-4 mt-4",rules:[{validator:p}],children:(0,c.jsx)(tB.Z,{rows:4,placeholder:'{ "rpm": 100, "timeout": 0, "stream_timeout": 0 }'})}),(0,c.jsxs)(s5.Z,{className:"mb-4",children:[(0,c.jsx)(s3.Z,{span:10}),(0,c.jsx)(s3.Z,{span:10,children:(0,c.jsxs)(k.Z,{className:"text-gray-600 text-sm",children:["Pass JSON of litellm supported params"," ",(0,c.jsx)(tK,{href:"https://docs.litellm.ai/docs/completion/input",target:"_blank",children:"litellm.completion() call"})]})})]}),(0,c.jsx)(A.Z.Item,{label:"Model Info",name:"model_info_params",tooltip:"Optional model info params. Returned when calling `/model/info` endpoint.",className:"mb-0",rules:[{validator:p}],children:(0,c.jsx)(tB.Z,{rows:4,placeholder:'{ "mode": "chat" }'})})]})})]})})},tH=t(29),tY=t.n(tH),tJ=t(23639);let{Text:tW}=en.default;var t$=e=>{let{formValues:s,accessToken:t,testMode:l,modelName:a="this model",onClose:r,onTestComplete:i}=e,[n,o]=d.useState(null),[m,u]=d.useState(null),[x,h]=d.useState(null),[p,g]=d.useState(!0),[f,v]=d.useState(!1),[y,b]=d.useState(!1),_=async()=>{g(!0),b(!1),o(null),u(null),h(null),v(!1),await new Promise(e=>setTimeout(e,100));try{console.log("Testing connection with form values:",s);let a=await s1(s,t,null);if(!a){console.log("No result from prepareModelAddRequest"),o("Failed to prepare model data. Please check your form inputs."),v(!1),g(!1);return}console.log("Result from prepareModelAddRequest:",a);let{litellmParamsObj:r,modelInfoObj:i,modelName:n}=a[0],c=await (0,j.testConnectionRequest)(t,r,i,null==i?void 0:i.mode);if("success"===c.status)eo.Z.success("Connection test successful!"),o(null),v(!0);else{var e,l;let s=(null===(e=c.result)||void 0===e?void 0:e.error)||c.message||"Unknown error";o(s),u(r),h(null===(l=c.result)||void 0===l?void 0:l.raw_request_typed_dict),v(!1)}}catch(e){console.error("Test connection error:",e),o(e instanceof Error?e.message:String(e)),v(!1)}finally{g(!1),i&&i()}};d.useEffect(()=>{let e=setTimeout(()=>{_()},200);return()=>clearTimeout(e)},[]);let N=e=>e?e.split("stack trace:")[0].trim().replace(/^litellm\.(.*?)Error: /,""):"Unknown error",Z="string"==typeof n?N(n):(null==n?void 0:n.message)?N(n.message):"Unknown error",w=x?((e,s,t)=>{let l=JSON.stringify(s,null,2).split("\n").map(e=>" ".concat(e)).join("\n"),a=Object.entries(t).map(e=>{let[s,t]=e;return"-H '".concat(s,": ").concat(t,"'")}).join(" \\\n ");return"curl -X POST \\\n ".concat(e," \\\n ").concat(a?"".concat(a," \\\n "):"","-H 'Content-Type: application/json' \\\n -d '{\n").concat(l,"\n }'")})(x.raw_request_api_base,x.raw_request_body,x.raw_request_headers||{}):"";return(0,c.jsxs)("div",{style:{padding:"24px",borderRadius:"8px",backgroundColor:"#fff"},children:[p?(0,c.jsxs)("div",{style:{textAlign:"center",padding:"32px 20px"},className:"jsx-dc9a0e2d897fe63b",children:[(0,c.jsx)("div",{style:{marginBottom:"16px"},className:"jsx-dc9a0e2d897fe63b loading-spinner",children:(0,c.jsx)("div",{style:{border:"3px solid #f3f3f3",borderTop:"3px solid #1890ff",borderRadius:"50%",width:"30px",height:"30px",animation:"spin 1s linear infinite",margin:"0 auto"},className:"jsx-dc9a0e2d897fe63b"})}),(0,c.jsxs)(tW,{style:{fontSize:"16px"},children:["Testing connection to ",a,"..."]}),(0,c.jsx)(tY(),{id:"dc9a0e2d897fe63b",children:"@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}"})]}):f?(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"32px 20px"},children:[(0,c.jsx)("div",{style:{color:"#52c41a",fontSize:"24px",display:"flex",alignItems:"center"},children:(0,c.jsx)("svg",{viewBox:"64 64 896 896",focusable:"false","data-icon":"check-circle",width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true",children:(0,c.jsx)("path",{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z"})})}),(0,c.jsxs)(tW,{type:"success",style:{fontSize:"18px",fontWeight:500,marginLeft:"10px"},children:["Connection to ",a," successful!"]})]}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",marginBottom:"20px"},children:[(0,c.jsx)(eg.Z,{style:{color:"#ff4d4f",fontSize:"24px",marginRight:"12px"}}),(0,c.jsxs)(tW,{type:"danger",style:{fontSize:"18px",fontWeight:500},children:["Connection to ",a," failed"]})]}),(0,c.jsxs)("div",{style:{backgroundColor:"#fff2f0",border:"1px solid #ffccc7",borderRadius:"8px",padding:"16px",marginBottom:"20px",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.03)"},children:[(0,c.jsxs)(tW,{strong:!0,style:{display:"block",marginBottom:"8px"},children:["Error:"," "]}),(0,c.jsx)(tW,{type:"danger",style:{fontSize:"14px",lineHeight:"1.5"},children:Z}),n&&(0,c.jsx)("div",{style:{marginTop:"12px"},children:(0,c.jsx)(P.ZP,{type:"link",onClick:()=>b(!y),style:{paddingLeft:0,height:"auto"},children:y?"Hide Details":"Show Details"})})]}),y&&(0,c.jsxs)("div",{style:{marginBottom:"20px"},children:[(0,c.jsx)(tW,{strong:!0,style:{display:"block",marginBottom:"8px",fontSize:"15px"},children:"Troubleshooting Details"}),(0,c.jsx)("pre",{style:{backgroundColor:"#f5f5f5",padding:"16px",borderRadius:"8px",fontSize:"13px",maxHeight:"200px",overflow:"auto",border:"1px solid #e8e8e8",lineHeight:"1.5"},children:"string"==typeof n?n:JSON.stringify(n,null,2)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(tW,{strong:!0,style:{display:"block",marginBottom:"8px",fontSize:"15px"},children:"API Request"}),(0,c.jsx)("pre",{style:{backgroundColor:"#f5f5f5",padding:"16px",borderRadius:"8px",fontSize:"13px",maxHeight:"250px",overflow:"auto",border:"1px solid #e8e8e8",lineHeight:"1.5"},children:w||"No request data available"}),(0,c.jsx)(P.ZP,{style:{marginTop:"8px"},icon:(0,c.jsx)(tJ.Z,{}),onClick:()=>{navigator.clipboard.writeText(w||""),eo.Z.success("Copied to clipboard")},children:"Copy to Clipboard"})]})]})}),(0,c.jsx)(K.Z,{style:{margin:"24px 0 16px"}}),(0,c.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:(0,c.jsx)(P.ZP,{type:"link",href:"https://docs.litellm.ai/docs/providers",target:"_blank",icon:(0,c.jsx)(V.Z,{}),children:"View Documentation"})})]})};let tQ=[{value:"chat",label:"Chat - /chat/completions"},{value:"completion",label:"Completion - /completions"},{value:"embedding",label:"Embedding - /embeddings"},{value:"audio_speech",label:"Audio Speech - /audio/speech"},{value:"audio_transcription",label:"Audio Transcription - /audio/transcriptions"},{value:"image_generation",label:"Image Generation - /images/generations"},{value:"rerank",label:"Rerank - /rerank"},{value:"realtime",label:"Realtime - /realtime"},{value:"batch",label:"Batch - /batch"}];var tX=t(92858);let t0=async(e,s,t,l)=>{try{console.log("=== AUTO ROUTER SUBMIT HANDLER CALLED ==="),console.log("handling auto router submit for formValues:",e),console.log("Access token:",s?"Present":"Missing"),console.log("Form:",t?"Present":"Missing"),console.log("Callback:",l?"Present":"Missing");let a={model_name:e.auto_router_name,litellm_params:{model:"auto_router/".concat(e.auto_router_name),auto_router_config:JSON.stringify(e.auto_router_config),auto_router_default_model:e.auto_router_default_model},model_info:{}};e.auto_router_embedding_model&&"custom"!==e.auto_router_embedding_model?a.litellm_params.auto_router_embedding_model=e.auto_router_embedding_model:e.custom_embedding_model&&(a.litellm_params.auto_router_embedding_model=e.custom_embedding_model),e.team_id&&(a.model_info.team_id=e.team_id),e.model_access_group&&e.model_access_group.length>0&&(a.model_info.access_groups=e.model_access_group),console.log("Auto router configuration to be created:",a),console.log("Auto router config (stringified):",a.litellm_params.auto_router_config),console.log("Calling modelCreateCall with:",{accessToken:s?"Present":"Missing",config:a});let r=await (0,j.modelCreateCall)(s,a);console.log("response for auto router create call:",r),t.resetFields()}catch(e){console.error("Failed to add auto router:",e),eo.Z.fromBackend("Failed to add auto router: "+e)}},{Title:t1,Link:t2}=en.default;var t4=e=>{let{form:s,handleOk:t,accessToken:l,userRole:a}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(""),[x,h]=(0,d.useState)([]),[p,g]=(0,d.useState)([]),[f,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(!1),[N,Z]=(0,d.useState)(null);(0,d.useEffect)(()=>{(async()=>{h((await (0,j.modelAvailableCall)(l,"","",!1,null,!0,!0)).data.map(e=>e.id))})()},[l]),(0,d.useEffect)(()=>{(async()=>{try{let e=await eG(l);console.log("Fetched models for auto router:",e),g(e)}catch(e){console.error("Error fetching model info for auto router:",e)}})()},[l]);let w=eI.ZL.includes(a),S=async()=>{o(!0),u("test-".concat(Date.now())),i(!0)},C=()=>{console.log("Auto router submit triggered!"),console.log("Router config:",N);let e=s.getFieldsValue();if(console.log("Form values:",e),!e.auto_router_name){eo.Z.fromBackend("Please enter an Auto Router Name");return}if(!e.auto_router_default_model){eo.Z.fromBackend("Please select a Default Model");return}if(s.setFieldsValue({custom_llm_provider:"auto_router",model:e.auto_router_name,api_key:"not_required_for_auto_router"}),!N||!N.routes||0===N.routes.length){eo.Z.fromBackend("Please configure at least one route for the auto router");return}if(N.routes.filter(e=>!e.name||!e.description||0===e.utterances.length).length>0){eo.Z.fromBackend("Please ensure all routes have a target model, description, and at least one utterance");return}s.validateFields().then(e=>{console.log("Form validation passed, submitting with values:",e);let a={...e,auto_router_config:N};console.log("Final submit values:",a),t0(a,l,s,t)}).catch(e=>{console.error("Validation failed:",e);let s=e.errorFields||[];if(s.length>0){let e=s.map(e=>{let s=e.name[0];return({auto_router_name:"Auto Router Name",auto_router_default_model:"Default Model",auto_router_embedding_model:"Embedding Model"})[s]||s});eo.Z.fromBackend("Please fill in the following required fields: ".concat(e.join(", ")))}else eo.Z.fromBackend("Please fill in all required fields")})};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(t1,{level:2,children:"Add Auto Router"}),(0,c.jsx)(k.Z,{className:"text-gray-600 mb-6",children:"Create an auto router with intelligent routing logic that automatically selects the best model based on user input patterns and semantic matching."}),(0,c.jsx)(tP.Z,{children:(0,c.jsxs)(A.Z,{form:s,onFinish:C,labelCol:{span:10},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Auto router name is required"}],label:"Auto Router Name",name:"auto_router_name",tooltip:"Unique name for this auto router configuration",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(_.Z,{placeholder:"e.g., auto_router_1, smart_routing"})}),(0,c.jsx)("div",{className:"w-full mb-4",children:(0,c.jsx)(tD,{modelInfo:p,value:N,onChange:e=>{Z(e),s.setFieldValue("auto_router_config",e)}})}),(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Default model is required"}],label:"Default Model",name:"auto_router_default_model",tooltip:"Fallback model to use when auto routing logic cannot determine the best model",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(I.default,{placeholder:"Select a default model",onChange:e=>{v("custom"===e)},options:[...Array.from(new Set(p.map(e=>e.model_group))).map(e=>({value:e,label:e})),{value:"custom",label:"Enter custom model name"}],style:{width:"100%"},showSearch:!0})}),(0,c.jsx)(A.Z.Item,{label:"Embedding Model",name:"auto_router_embedding_model",tooltip:"Optional: Embedding model to use for semantic routing decisions",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(I.default,{value:s.getFieldValue("auto_router_embedding_model"),placeholder:"Select an embedding model (optional)",onChange:e=>{b("custom"===e),s.setFieldValue("auto_router_embedding_model",e)},options:[...Array.from(new Set(p.map(e=>e.model_group))).map(e=>({value:e,label:e})),{value:"custom",label:"Enter custom model name"}],style:{width:"100%"},showSearch:!0,allowClear:!0})}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"Additional Settings"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),w&&(0,c.jsx)(A.Z.Item,{label:"Model Access Group",name:"model_access_group",className:"mb-4",tooltip:"Use model access groups to control who can access this auto router",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],options:x.map(e=>({value:e,label:e})),maxTagCount:"responsive",allowClear:!0})}),(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(en.default.Link,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{className:"space-x-2",children:[(0,c.jsx)(P.ZP,{onClick:S,loading:n,children:"Test Connect"}),(0,c.jsx)(P.ZP,{onClick:()=>{console.log("Add Auto Router button clicked!"),console.log("Current router config:",N),console.log("Current form values:",s.getFieldsValue()),C()},children:"Add Auto Router"})]})]})]})}),(0,c.jsx)(T.Z,{title:"Connection Test Results",open:r,onCancel:()=>{i(!1),o(!1)},footer:[(0,c.jsx)(P.ZP,{onClick:()=>{i(!1),o(!1)},children:"Close"},"close")],width:700,children:r&&(0,c.jsx)(t$,{formValues:s.getFieldsValue(),accessToken:l,testMode:"chat",modelName:s.getFieldValue("auto_router_name"),onClose:()=>{i(!1),o(!1)},onTestComplete:()=>o(!1)},m)})]})};let{Title:t5,Link:t3}=en.default;var t6=e=>{let{form:s,handleOk:t,selectedProvider:l,setSelectedProvider:a,providerModels:r,setProviderModelsFn:i,getPlaceholder:n,uploadProps:o,showAdvancedSettings:m,setShowAdvancedSettings:u,teams:x,credentials:h,accessToken:p,userRole:g,premiumUser:f}=e,[v]=A.Z.useForm(),[y,b]=(0,d.useState)("chat"),[_,N]=(0,d.useState)(!1),[Z,w]=(0,d.useState)(!1),[S,C]=(0,d.useState)([]),[E,L]=(0,d.useState)("");(0,d.useEffect)(()=>{(async()=>{try{let e=(await (0,j.getGuardrailsList)(p)).guardrails.map(e=>e.guardrail_name);C(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})()},[p]);let M=async()=>{w(!0),L("test-".concat(Date.now())),N(!0)},[O,D]=(0,d.useState)(!1),[F,R]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{R((await (0,j.modelAvailableCall)(p,"","",!1,null,!0,!0)).data.map(e=>e.id))})()},[p]);let z=eI.ZL.includes(g);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(st.Z,{className:"w-full",children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Add Model"}),(0,c.jsx)(ss.Z,{children:"Add Auto Router"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)(t5,{level:2,children:"Add Model"}),(0,c.jsx)(tP.Z,{children:(0,c.jsx)(A.Z,{form:s,onFinish:e=>{console.log("\uD83D\uDD25 Form onFinish triggered with values:",e),t()},onFinishFailed:e=>{console.log("\uD83D\uDCA5 Form onFinishFailed triggered:",e)},labelCol:{span:10},wrapperCol:{span:16},labelAlign:"left",children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Required"}],label:"Provider:",name:"custom_llm_provider",tooltip:"E.g. OpenAI, Azure OpenAI, Anthropic, Bedrock, etc.",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(I.default,{showSearch:!0,value:l,onChange:e=>{a(e),i(e),s.setFieldsValue({model:[],model_name:void 0})},children:Object.entries(s0.Cl).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:s,children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:s0.cd[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(tz,{selectedProvider:l,providerModels:r,getPlaceholder:n}),(0,c.jsx)(tV,{}),(0,c.jsx)(A.Z.Item,{label:"Mode",name:"mode",className:"mb-1",children:(0,c.jsx)(I.default,{style:{width:"100%"},value:y,onChange:e=>b(e),options:tQ})}),(0,c.jsxs)(s5.Z,{children:[(0,c.jsx)(s3.Z,{span:10}),(0,c.jsx)(s3.Z,{span:10,children:(0,c.jsxs)(k.Z,{className:"mb-5 mt-1",children:[(0,c.jsx)("strong",{children:"Optional"})," - LiteLLM endpoint to use when health checking this model"," ",(0,c.jsx)(t3,{href:"https://docs.litellm.ai/docs/proxy/health#health",target:"_blank",children:"Learn more"})]})})]}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(en.default.Text,{className:"text-sm text-gray-500 mb-2",children:"Either select existing credentials OR enter new provider credentials below"})}),(0,c.jsx)(A.Z.Item,{label:"Existing Credentials",name:"litellm_credential_name",children:(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Select or search for existing credentials",optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{value:null,label:"None"},...h.map(e=>({value:e.credential_name,label:e.credential_name}))],allowClear:!0})}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"OR"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.litellm_credential_name!==s.litellm_credential_name||e.provider!==s.provider,children:e=>{let{getFieldValue:s}=e,t=s("litellm_credential_name");return(console.log("\uD83D\uDD11 Credential Name Changed:",t),t)?(0,c.jsx)("div",{className:"text-gray-500 text-sm text-center",children:"Using existing credentials - no additional provider fields needed"}):(0,c.jsx)(s7,{selectedProvider:l,uploadProps:o})}}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"Additional Model Info Settings"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),(0,c.jsx)(A.Z.Item,{label:"Team-BYOK Model",tooltip:"Only use this model + credential combination for this team. Useful when teams want to onboard their own OpenAI keys.",className:"mb-4",children:(0,c.jsx)(B.Z,{title:f?"":"This is an enterprise-only feature. Upgrade to premium to restrict model+credential combinations to a specific team.",placement:"top",children:(0,c.jsx)(tX.Z,{checked:O,onChange:e=>{D(e),e||s.setFieldValue("team_id",void 0)},disabled:!f})})}),O&&(0,c.jsx)(A.Z.Item,{label:"Select Team",name:"team_id",className:"mb-4",tooltip:"Only keys for this team will be able to call this model.",rules:[{required:O&&!z,message:"Please select a team."}],children:(0,c.jsx)(q,{teams:x,disabled:!f})}),z&&(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(A.Z.Item,{label:"Model Access Group",name:"model_access_group",className:"mb-4",tooltip:"Use model access groups to give users access to select models, and add new ones to the group over time.",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],options:F.map(e=>({value:e,label:e})),maxTagCount:"responsive",allowClear:!0})})}),(0,c.jsx)(tG,{showAdvancedSettings:m,setShowAdvancedSettings:u,teams:x,guardrailsList:S}),(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(en.default.Link,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{className:"space-x-2",children:[(0,c.jsx)(P.ZP,{onClick:M,loading:Z,children:"Test Connect"}),(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Add Model"})]})]})]})})})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(t4,{form:v,handleOk:()=>{v.validateFields().then(e=>{t0(e,p,v,t)}).catch(e=>{console.error("Validation failed:",e)})},accessToken:p,userRole:g})})]})]}),(0,c.jsx)(T.Z,{title:"Connection Test Results",open:_,onCancel:()=>{N(!1),w(!1)},footer:[(0,c.jsx)(P.ZP,{onClick:()=>{N(!1),w(!1)},children:"Close"},"close")],width:700,children:_&&(0,c.jsx)(t$,{formValues:s.getFieldsValue(),accessToken:p,testMode:y,modelName:s.getFieldValue("model_name")||s.getFieldValue("model"),onClose:()=>{N(!1),w(!1)},onTestComplete:()=>w(!1)},E)})]})},t8=t(8048);let t7=(e,s,t,l,a,r,i,n,o,d,m)=>[{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Model ID"}),accessorKey:"model_info.id",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.model_info.id,children:(0,c.jsx)("div",{className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",onClick:()=>l(t.model_info.id),children:t.model_info.id})})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Model Information"}),accessorKey:"model_name",size:250,cell:e=>{let{row:s}=e,t=s.original,l=r(s.original)||"-",a=(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"Provider:"})," ",t.provider||"-"]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"Public Model Name:"})," ",l]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"LiteLLM Model Name:"})," ",t.litellm_model_name||"-"]})]});return(0,c.jsx)(B.Z,{title:a,children:(0,c.jsxs)("div",{className:"flex items-start space-x-2 min-w-0 w-full max-w-[250px]",children:[(0,c.jsx)("div",{className:"flex-shrink-0 mt-0.5",children:t.provider?(0,c.jsx)("img",{src:(0,s0.dr)(t.provider).logo,alt:"".concat(t.provider," logo"),className:"w-4 h-4",onError:e=>{let s=e.target,l=s.parentElement;if(l){var a;let e=document.createElement("div");e.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=(null===(a=t.provider)||void 0===a?void 0:a.charAt(0))||"-",l.replaceChild(e,s)}}}):(0,c.jsx)("div",{className:"w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",children:"-"})}),(0,c.jsxs)("div",{className:"flex flex-col min-w-0 flex-1",children:[(0,c.jsx)("div",{className:"text-xs font-medium text-gray-900 truncate max-w-[210px]",children:l}),(0,c.jsx)("div",{className:"text-xs text-gray-500 truncate mt-0.5 max-w-[210px]",children:t.litellm_model_name||"-"})]})]})})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Credentials"}),accessorKey:"litellm_credential_name",size:180,cell:e=>{var s;let{row:t}=e,l=null===(s=t.original.litellm_params)||void 0===s?void 0:s.litellm_credential_name;return l?(0,c.jsx)(B.Z,{title:"Credential: ".concat(l),children:(0,c.jsxs)("div",{className:"flex items-center space-x-2 max-w-[180px]",children:[(0,c.jsx)(tZ.Z,{className:"w-4 h-4 text-blue-500 flex-shrink-0"}),(0,c.jsx)("span",{className:"text-xs truncate",title:l,children:l})]})}):(0,c.jsxs)("div",{className:"flex items-center space-x-2 max-w-[180px]",children:[(0,c.jsx)(tZ.Z,{className:"w-4 h-4 text-gray-300 flex-shrink-0"}),(0,c.jsx)("span",{className:"text-xs text-gray-400",children:"No credentials"})]})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Created By"}),accessorKey:"model_info.created_by",sortingFn:"datetime",size:160,cell:e=>{let{row:s}=e,t=s.original,l=t.model_info.created_by,a=t.model_info.created_at?new Date(t.model_info.created_at).toLocaleDateString():null;return(0,c.jsxs)("div",{className:"flex flex-col min-w-0 max-w-[160px]",children:[(0,c.jsx)("div",{className:"text-xs font-medium text-gray-900 truncate",title:l||"Unknown",children:l||"Unknown"}),(0,c.jsx)("div",{className:"text-xs text-gray-500 truncate mt-0.5",title:a||"Unknown date",children:a||"Unknown date"})]})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Updated At"}),accessorKey:"model_info.updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.model_info.updated_at?new Date(t.model_info.updated_at).toLocaleDateString():"-"})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Costs"}),accessorKey:"input_cost",size:120,cell:e=>{let{row:s}=e,t=s.original,l=t.input_cost,a=t.output_cost;return l||a?(0,c.jsx)(B.Z,{title:"Cost per 1M tokens",children:(0,c.jsxs)("div",{className:"flex flex-col min-w-0 max-w-[120px]",children:[l&&(0,c.jsxs)("div",{className:"text-xs font-medium text-gray-900 truncate",children:["In: $",l]}),a&&(0,c.jsxs)("div",{className:"text-xs text-gray-500 truncate mt-0.5",children:["Out: $",a]})]})}):(0,c.jsx)("div",{className:"max-w-[120px]",children:(0,c.jsx)("span",{className:"text-xs text-gray-400",children:"-"})})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Team ID"}),accessorKey:"model_info.team_id",cell:e=>{let{row:s}=e,t=s.original;return t.model_info.team_id?(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:t.model_info.team_id,children:(0,c.jsxs)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>a(t.model_info.team_id),children:[t.model_info.team_id.slice(0,7),"..."]})})}):"-"}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Model Access Group"}),accessorKey:"model_info.model_access_group",enableSorting:!1,cell:e=>{let{row:s}=e,t=s.original,l=t.model_info.access_groups;if(!l||0===l.length)return"-";let a=t.model_info.id,r=d.has(a),i=l.length>1,n=()=>{let e=new Set(d);r?e.delete(a):e.add(a),m(e)};return(0,c.jsxs)("div",{className:"flex items-center gap-1 overflow-hidden",children:[(0,c.jsx)(se.Z,{size:"xs",color:"blue",className:"text-xs px-1.5 py-0.5 h-5 leading-tight flex-shrink-0",children:l[0]}),(r||!i&&2===l.length)&&l.slice(1).map((e,s)=>(0,c.jsx)(se.Z,{size:"xs",color:"blue",className:"text-xs px-1.5 py-0.5 h-5 leading-tight flex-shrink-0",children:e},s+1)),i&&(0,c.jsx)("button",{onClick:e=>{e.stopPropagation(),n()},className:"text-xs text-blue-600 hover:text-blue-800 px-1 py-0.5 rounded hover:bg-blue-50 h-5 leading-tight flex-shrink-0 whitespace-nowrap",children:r?"−":"+".concat(l.length-1)})]})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Status"}),accessorKey:"model_info.db_model",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("div",{className:"\n inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium\n ".concat(t.model_info.db_model?"bg-blue-50 text-blue-600":"bg-gray-100 text-gray-600","\n "),children:t.model_info.db_model?"DB Model":"Config Model"})}},{id:"actions",header:"",cell:t=>{var a;let{row:r}=t,i=r.original,n="Admin"===e||(null===(a=i.model_info)||void 0===a?void 0:a.created_by)===s;return(0,c.jsx)("div",{className:"flex items-center justify-end gap-2 pr-4",children:(0,c.jsx)(sR.Z,{icon:W.Z,size:"sm",onClick:()=>{n&&(l(i.model_info.id),o(!1))},className:n?"cursor-pointer":"opacity-50 cursor-not-allowed"})})}}];var t9=t(93142),le=t(867),ls=t(3810),lt=t(5540),ll=t(8881);let{Text:la}=en.default;var lr=e=>{let{accessToken:s,onReloadSuccess:t,buttonText:l="Reload Price Data",showIcon:a=!0,size:r="middle",type:i="primary",className:n=""}=e,[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)(6),[b,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)(!1);(0,d.useEffect)(()=>{w();let e=setInterval(()=>{w()},3e4);return()=>clearInterval(e)},[s]);let w=async()=>{if(s){Z(!0);try{console.log("Fetching reload status...");let e=await (0,j.getModelCostMapReloadStatus)(s);console.log("Received status:",e),_(e)}catch(e){console.error("Failed to fetch reload status:",e),_({scheduled:!1,interval_hours:null,last_run:null,next_run:null})}finally{Z(!1)}}},k=async()=>{if(!s){eo.Z.fromBackend("No access token available");return}m(!0);try{let e=await (0,j.reloadModelCostMap)(s);"success"===e.status?(eo.Z.success("Price data reloaded successfully! ".concat(e.models_count||0," models updated.")),null==t||t(),await w()):eo.Z.fromBackend("Failed to reload price data")}catch(e){console.error("Error reloading price data:",e),eo.Z.fromBackend("Failed to reload price data. Please try again.")}finally{m(!1)}},S=async()=>{if(!s){eo.Z.fromBackend("No access token available");return}if(v<=0){eo.Z.fromBackend("Hours must be greater than 0");return}x(!0);try{let e=await (0,j.scheduleModelCostMapReload)(s,v);"success"===e.status?(eo.Z.success("Periodic reload scheduled for every ".concat(v," hours")),f(!1),await w()):eo.Z.fromBackend("Failed to schedule periodic reload")}catch(e){console.error("Error scheduling reload:",e),eo.Z.fromBackend("Failed to schedule periodic reload. Please try again.")}finally{x(!1)}},C=async()=>{if(!s){eo.Z.fromBackend("No access token available");return}p(!0);try{let e=await (0,j.cancelModelCostMapReload)(s);"success"===e.status?(eo.Z.success("Periodic reload cancelled successfully"),await w()):eo.Z.fromBackend("Failed to cancel periodic reload")}catch(e){console.error("Error cancelling reload:",e),eo.Z.fromBackend("Failed to cancel periodic reload. Please try again.")}finally{p(!1)}},I=e=>{if(!e)return"Never";try{return new Date(e).toLocaleString()}catch(s){return e}};return(0,c.jsxs)("div",{className:n,children:[(0,c.jsxs)(t9.Z,{direction:"horizontal",size:"middle",style:{marginBottom:16},children:[(0,c.jsx)(le.Z,{title:"Hard Refresh Price Data",description:"This will immediately fetch the latest pricing information from the remote source. Continue?",onConfirm:k,okText:"Yes",cancelText:"No",okButtonProps:{style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem",transition:"all 0.2s ease-in-out"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#4f46e5"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#6366f1"}},children:(0,c.jsx)(P.ZP,{type:i,size:r,loading:o,icon:a?(0,c.jsx)(th.Z,{}):void 0,style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem",transition:"all 0.2s ease-in-out"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#4f46e5"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#6366f1"},children:l})}),(null==b?void 0:b.scheduled)?(0,c.jsx)(P.ZP,{type:"default",size:r,danger:!0,icon:(0,c.jsx)(ll.Z,{}),loading:h,onClick:C,style:{borderColor:"#ff4d4f",color:"#ff4d4f",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem"},children:"Cancel Periodic Reload"}):(0,c.jsx)(P.ZP,{type:"default",size:r,icon:(0,c.jsx)(lt.Z,{}),onClick:()=>f(!0),style:{borderColor:"#d9d9d9",color:"#6366f1",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem"},children:"Set Up Periodic Reload"})]}),b&&(0,c.jsx)(tP.Z,{size:"small",style:{backgroundColor:"#f8f9fa",border:"1px solid #e9ecef",borderRadius:8},children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"small",style:{width:"100%"},children:[b.scheduled?(0,c.jsx)("div",{children:(0,c.jsxs)(ls.Z,{color:"green",icon:(0,c.jsx)(lt.Z,{}),children:["Scheduled every ",b.interval_hours," hours"]})}):(0,c.jsx)(la,{type:"secondary",children:"No periodic reload scheduled"}),(0,c.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,c.jsx)(la,{type:"secondary",style:{fontSize:"12px"},children:"Last run:"}),(0,c.jsx)(la,{style:{fontSize:"12px"},children:I(b.last_run)})]}),b.scheduled&&(0,c.jsxs)(c.Fragment,{children:[b.next_run&&(0,c.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,c.jsx)(la,{type:"secondary",style:{fontSize:"12px"},children:"Next run:"}),(0,c.jsx)(la,{style:{fontSize:"12px"},children:I(b.next_run)})]}),(0,c.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,c.jsx)(la,{type:"secondary",style:{fontSize:"12px"},children:"Status:"}),(0,c.jsx)(ls.Z,{color:(null==b?void 0:b.scheduled)?b.last_run?"success":"processing":"default",children:(null==b?void 0:b.scheduled)?b.last_run?"Active":"Ready":"Not scheduled"})]})]})]})}),(0,c.jsxs)(T.Z,{title:"Set Up Periodic Reload",open:g,onOk:S,onCancel:()=>f(!1),confirmLoading:u,okText:"Schedule",cancelText:"Cancel",okButtonProps:{style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white"}},children:[(0,c.jsx)("div",{style:{marginBottom:16},children:(0,c.jsx)(la,{children:"Set up automatic reload of price data every:"})}),(0,c.jsx)("div",{style:{marginBottom:16},children:(0,c.jsx)(e8.Z,{min:1,max:168,value:v,onChange:e=>y(e||6),addonAfter:"hours",style:{width:"100%"}})}),(0,c.jsx)("div",{children:(0,c.jsxs)(la,{type:"secondary",children:["This will automatically fetch the latest pricing data from the remote source every ",v," hours."]})})]})]})},li=t(15731),ln=t(91126);let lo=(e,s,t,l,a,r,i,n,o,d,m)=>[{header:()=>(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(eR.Z,{checked:t,indeterminate:s.length>0&&!t,onChange:e=>a(e.target.checked),onClick:e=>e.stopPropagation()}),(0,c.jsx)("span",{children:"Model ID"})]}),accessorKey:"model_info.id",enableSorting:!0,sortingFn:"alphanumeric",cell:e=>{let{row:t}=e,a=t.original,r=a.model_name,i=s.includes(r);return(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(eR.Z,{checked:i,onChange:e=>l(r,e.target.checked),onClick:e=>e.stopPropagation()}),(0,c.jsx)(B.Z,{title:a.model_info.id,children:(0,c.jsx)("div",{className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",onClick:()=>m&&m(a.model_info.id),children:a.model_info.id})})]})}},{header:"Model Name",accessorKey:"model_name",enableSorting:!0,sortingFn:"alphanumeric",cell:e=>{let{row:s}=e,t=s.original,l=n(t)||t.model_name;return(0,c.jsx)("div",{className:"font-medium text-sm",children:(0,c.jsx)(B.Z,{title:l,children:(0,c.jsx)("div",{className:"truncate max-w-[200px]",children:l})})})}},{header:"Health Status",accessorKey:"health_status",enableSorting:!0,sortingFn:(e,s,t)=>{var l,a;let r=e.getValue("health_status")||"unknown",i=s.getValue("health_status")||"unknown",n={healthy:0,checking:1,unknown:2,unhealthy:3};return(null!==(l=n[r])&&void 0!==l?l:4)-(null!==(a=n[i])&&void 0!==a?a:4)},cell:s=>{var t;let{row:l}=s,a=l.original,r={status:a.health_status,loading:a.health_loading,error:a.health_error};if(r.loading)return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsxs)("div",{className:"flex space-x-1",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-indigo-500 rounded-full animate-pulse"}),(0,c.jsx)("div",{className:"w-2 h-2 bg-indigo-500 rounded-full animate-pulse",style:{animationDelay:"0.2s"}}),(0,c.jsx)("div",{className:"w-2 h-2 bg-indigo-500 rounded-full animate-pulse",style:{animationDelay:"0.4s"}})]}),(0,c.jsx)(k.Z,{className:"text-gray-600 text-sm",children:"Checking..."})]});let n=a.model_name,o="healthy"===r.status&&(null===(t=e[n])||void 0===t?void 0:t.successResponse);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[i(r.status),o&&d&&(0,c.jsx)(B.Z,{title:"View response details",placement:"top",children:(0,c.jsx)("button",{onClick:()=>{var s;return d(n,null===(s=e[n])||void 0===s?void 0:s.successResponse)},className:"p-1 text-green-600 hover:text-green-800 hover:bg-green-50 rounded cursor-pointer transition-colors",children:(0,c.jsx)(li.Z,{className:"h-4 w-4"})})})]})}},{header:"Error Details",accessorKey:"health_error",enableSorting:!1,cell:s=>{let{row:t}=s,l=t.original.model_name,a=e[l];if(!(null==a?void 0:a.error))return(0,c.jsx)(k.Z,{className:"text-gray-400 text-sm",children:"No errors"});let r=a.error,i=a.fullError||a.error;return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"max-w-[200px]",children:(0,c.jsx)(B.Z,{title:r,placement:"top",children:(0,c.jsx)(k.Z,{className:"text-red-600 text-sm truncate",children:r})})}),o&&i!==r&&(0,c.jsx)(B.Z,{title:"View full error details",placement:"top",children:(0,c.jsx)("button",{onClick:()=>o(l,r,i),className:"p-1 text-red-600 hover:text-red-800 hover:bg-red-50 rounded cursor-pointer transition-colors",children:(0,c.jsx)(li.Z,{className:"h-4 w-4"})})})]})}},{header:"Last Check",accessorKey:"last_check",enableSorting:!0,sortingFn:(e,s,t)=>{let l=e.getValue("last_check")||"Never checked",a=s.getValue("last_check")||"Never checked";if("Never checked"===l&&"Never checked"===a)return 0;if("Never checked"===l)return 1;if("Never checked"===a)return -1;if("Check in progress..."===l&&"Check in progress..."===a)return 0;if("Check in progress..."===l)return -1;if("Check in progress..."===a)return 1;let r=new Date(l),i=new Date(a);return isNaN(r.getTime())&&isNaN(i.getTime())?0:isNaN(r.getTime())?1:isNaN(i.getTime())?-1:i.getTime()-r.getTime()},cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(k.Z,{className:"text-gray-600 text-sm",children:t.health_loading?"Check in progress...":t.last_check})}},{header:"Last Success",accessorKey:"last_success",enableSorting:!0,sortingFn:(e,s,t)=>{let l=e.getValue("last_success")||"Never succeeded",a=s.getValue("last_success")||"Never succeeded";if("Never succeeded"===l&&"Never succeeded"===a)return 0;if("Never succeeded"===l)return 1;if("Never succeeded"===a)return -1;if("None"===l&&"None"===a)return 0;if("None"===l)return 1;if("None"===a)return -1;let r=new Date(l),i=new Date(a);return isNaN(r.getTime())&&isNaN(i.getTime())?0:isNaN(r.getTime())?1:isNaN(i.getTime())?-1:i.getTime()-r.getTime()},cell:s=>{let{row:t}=s,l=e[t.original.model_name],a=(null==l?void 0:l.lastSuccess)||"None";return(0,c.jsx)(k.Z,{className:"text-gray-600 text-sm",children:a})}},{header:"Actions",id:"actions",cell:e=>{let{row:s}=e,t=s.original,l=t.model_name,a=t.health_status&&"none"!==t.health_status,i=t.health_loading?"Checking...":a?"Re-run Health Check":"Run Health Check";return(0,c.jsx)(B.Z,{title:i,placement:"top",children:(0,c.jsx)("button",{className:"p-2 rounded-md transition-colors ".concat(t.health_loading?"text-gray-400 cursor-not-allowed bg-gray-100":"text-indigo-600 hover:text-indigo-700 hover:bg-indigo-50"),onClick:()=>{t.health_loading||r(l)},disabled:t.health_loading,children:t.health_loading?(0,c.jsxs)("div",{className:"flex space-x-1",children:[(0,c.jsx)("div",{className:"w-1 h-1 bg-gray-400 rounded-full animate-pulse"}),(0,c.jsx)("div",{className:"w-1 h-1 bg-gray-400 rounded-full animate-pulse",style:{animationDelay:"0.2s"}}),(0,c.jsx)("div",{className:"w-1 h-1 bg-gray-400 rounded-full animate-pulse",style:{animationDelay:"0.4s"}})]}):a?(0,c.jsx)(sn.Z,{className:"h-4 w-4"}):(0,c.jsx)(ln.Z,{className:"h-4 w-4"})})})},enableSorting:!1}],lc=[{pattern:/Missing .* API Key/i,replacement:"Missing API Key"},{pattern:/Connection timeout/i,replacement:"Connection timeout"},{pattern:/Network.*not.*ok/i,replacement:"Network connection failed"},{pattern:/403.*Forbidden/i,replacement:"Access forbidden - check API key permissions"},{pattern:/401.*Unauthorized/i,replacement:"Unauthorized - invalid API key"},{pattern:/429.*rate limit/i,replacement:"Rate limit exceeded"},{pattern:/500.*Internal Server Error/i,replacement:"Provider internal server error"},{pattern:/litellm\.AuthenticationError/i,replacement:"Authentication failed"},{pattern:/litellm\.RateLimitError/i,replacement:"Rate limit exceeded"},{pattern:/litellm\.APIError/i,replacement:"API error"}];var ld=e=>{let{accessToken:s,modelData:t,all_models_on_proxy:l,getDisplayModelName:a,setSelectedModelId:r}=e,[i,n]=(0,d.useState)({}),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(null),[v,y]=(0,d.useState)(!1),[_,N]=(0,d.useState)(null),Z=(0,d.useRef)(null);(0,d.useEffect)(()=>{s&&(null==t?void 0:t.data)&&(async()=>{let e={};t.data.forEach(s=>{e[s.model_name]={status:"none",lastCheck:"None",lastSuccess:"None",loading:!1,error:void 0,fullError:void 0,successResponse:void 0}});try{let l=await (0,j.latestHealthChecksCall)(s);l&&l.latest_health_checks&&"object"==typeof l.latest_health_checks&&Object.entries(l.latest_health_checks).forEach(s=>{let[l,a]=s;if(!a)return;let r=null,i=t.data.find(e=>e.model_name===l);if(i)r=i.model_name;else{let e=t.data.find(e=>e.model_info&&e.model_info.id===l);if(e)r=e.model_name;else if(a.model_name){let e=t.data.find(e=>e.model_name===a.model_name);e&&(r=e.model_name)}}if(r){let s=a.error_message||void 0;e[r]={status:a.status||"unknown",lastCheck:a.checked_at?new Date(a.checked_at).toLocaleString():"None",lastSuccess:"healthy"===a.status&&a.checked_at?new Date(a.checked_at).toLocaleString():"None",loading:!1,error:s?w(s):void 0,fullError:s,successResponse:"healthy"===a.status?a:void 0}}})}catch(e){console.warn("Failed to load health check history (using default states):",e)}n(e)})()},[s,t]);let w=e=>{var s;if(!e)return"Health check failed";let t="string"==typeof e?e:JSON.stringify(e),l=t.match(/(\w+Error):\s*(\d{3})/i);if(l)return"".concat(l[1],": ").concat(l[2]);let a=t.match(/(AuthenticationError|RateLimitError|BadRequestError|InternalServerError|TimeoutError|NotFoundError|ForbiddenError|ServiceUnavailableError|BadGatewayError|ContentPolicyViolationError|\w+Error)/i),r=t.match(/\b(400|401|403|404|408|429|500|502|503|504)\b/);if(a&&r)return"".concat(a[1],": ").concat(r[1]);if(r){let e=r[1];return"".concat({400:"BadRequestError",401:"AuthenticationError",403:"ForbiddenError",404:"NotFoundError",408:"TimeoutError",429:"RateLimitError",500:"InternalServerError",502:"BadGatewayError",503:"ServiceUnavailableError",504:"GatewayTimeoutError"}[e],": ").concat(e)}if(a){let e=a[1],s={AuthenticationError:"401",RateLimitError:"429",BadRequestError:"400",InternalServerError:"500",TimeoutError:"408",NotFoundError:"404",ForbiddenError:"403",ServiceUnavailableError:"503",BadGatewayError:"502",GatewayTimeoutError:"504",ContentPolicyViolationError:"400"}[e];return s?"".concat(e,": ").concat(s):e}for(let{pattern:e,replacement:s}of lc)if(e.test(t))return s;if(/missing.*api.*key|invalid.*key|unauthorized/i.test(t))return"AuthenticationError: 401";if(/rate.*limit|too.*many.*requests/i.test(t))return"RateLimitError: 429";if(/timeout|timed.*out/i.test(t))return"TimeoutError: 408";if(/not.*found/i.test(t))return"NotFoundError: 404";if(/forbidden|access.*denied/i.test(t))return"ForbiddenError: 403";if(/internal.*server.*error/i.test(t))return"InternalServerError: 500";let i=t.replace(/[\n\r]+/g," ").replace(/\s+/g," ").trim(),n=null===(s=i.split(/[.!?]/)[0])||void 0===s?void 0:s.trim();return n&&n.length>0?n.length>100?n.substring(0,97)+"...":n:i.length>100?i.substring(0,97)+"...":i},C=async e=>{if(s){n(s=>({...s,[e]:{...s[e],loading:!0,status:"checking"}}));try{var l,a;let r=await (0,j.individualModelHealthCheckCall)(s,e),i=new Date().toLocaleString();if(r.unhealthy_count>0&&r.unhealthy_endpoints&&r.unhealthy_endpoints.length>0){let s=(null===(l=r.unhealthy_endpoints[0])||void 0===l?void 0:l.error)||"Health check failed",t=w(s);n(l=>{var a;return{...l,[e]:{status:"unhealthy",lastCheck:i,lastSuccess:(null===(a=l[e])||void 0===a?void 0:a.lastSuccess)||"None",loading:!1,error:t,fullError:s}}})}else n(s=>({...s,[e]:{status:"healthy",lastCheck:i,lastSuccess:i,loading:!1,successResponse:r}}));try{let l=await (0,j.latestHealthChecksCall)(s),r=t.data.find(s=>s.model_name===e);if(r){let s=r.model_info.id,t=null===(a=l.latest_health_checks)||void 0===a?void 0:a[s];if(t){let s=t.error_message||void 0;n(l=>{var a,r,i,n,o,c,d;return{...l,[e]:{status:t.status||(null===(a=l[e])||void 0===a?void 0:a.status)||"unknown",lastCheck:t.checked_at?new Date(t.checked_at).toLocaleString():(null===(r=l[e])||void 0===r?void 0:r.lastCheck)||"None",lastSuccess:"healthy"===t.status?t.checked_at?new Date(t.checked_at).toLocaleString():(null===(i=l[e])||void 0===i?void 0:i.lastSuccess)||"None":(null===(n=l[e])||void 0===n?void 0:n.lastSuccess)||"None",loading:!1,error:s?w(s):null===(o=l[e])||void 0===o?void 0:o.error,fullError:s||(null===(c=l[e])||void 0===c?void 0:c.fullError),successResponse:"healthy"===t.status?t:null===(d=l[e])||void 0===d?void 0:d.successResponse}}})}}}catch(e){console.debug("Could not fetch updated status from database (non-critical):",e)}}catch(a){let s=new Date().toLocaleString(),t=a instanceof Error?a.message:String(a),l=w(t);n(a=>{var r;return{...a,[e]:{status:"unhealthy",lastCheck:s,lastSuccess:(null===(r=a[e])||void 0===r?void 0:r.lastSuccess)||"None",loading:!1,error:l,fullError:t}}})}}},I=async()=>{let e=o.length>0?o:l,a=e.reduce((e,s)=>(e[s]={...i[s],loading:!0,status:"checking"},e),{});n(e=>({...e,...a}));let r={},c=e.map(async e=>{if(s)try{let l=await (0,j.individualModelHealthCheckCall)(s,e);r[e]=l;let a=new Date().toLocaleString();if(l.unhealthy_count>0&&l.unhealthy_endpoints&&l.unhealthy_endpoints.length>0){var t;let s=(null===(t=l.unhealthy_endpoints[0])||void 0===t?void 0:t.error)||"Health check failed",r=w(s);n(t=>{var l;return{...t,[e]:{status:"unhealthy",lastCheck:a,lastSuccess:(null===(l=t[e])||void 0===l?void 0:l.lastSuccess)||"None",loading:!1,error:r,fullError:s}}})}else n(s=>({...s,[e]:{status:"healthy",lastCheck:a,lastSuccess:a,loading:!1,successResponse:l}}))}catch(a){console.error("Health check failed for ".concat(e,":"),a);let s=new Date().toLocaleString(),t=a instanceof Error?a.message:String(a),l=w(t);n(a=>{var r;return{...a,[e]:{status:"unhealthy",lastCheck:s,lastSuccess:(null===(r=a[e])||void 0===r?void 0:r.lastSuccess)||"None",loading:!1,error:l,fullError:t}}})}});await Promise.allSettled(c);try{if(!s)return;let l=await (0,j.latestHealthChecksCall)(s);l.latest_health_checks&&Object.entries(l.latest_health_checks).forEach(s=>{let[l,a]=s,r=t.data.find(e=>e.model_info.id===l);if(r&&e.includes(r.model_name)&&a){let e=r.model_name,s=a.error_message||void 0;n(t=>{let l=t[e];return{...t,[e]:{status:a.status||(null==l?void 0:l.status)||"unknown",lastCheck:a.checked_at?new Date(a.checked_at).toLocaleString():(null==l?void 0:l.lastCheck)||"None",lastSuccess:"healthy"===a.status&&a.checked_at?new Date(a.checked_at).toLocaleString():(null==l?void 0:l.lastSuccess)||"None",loading:!1,error:s?w(s):null==l?void 0:l.error,fullError:s||(null==l?void 0:l.fullError),successResponse:"healthy"===a.status?a:null==l?void 0:l.successResponse}}})}})}catch(e){console.warn("Failed to fetch updated health statuses from database (non-critical):",e)}},A=e=>{x(e),e?m(l):m([])},E=()=>{p(!1),f(null)},L=()=>{y(!1),N(null)};return(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Model Health Status"}),(0,c.jsx)(k.Z,{className:"text-gray-600 mt-1",children:"Run health checks on individual models to verify they are working correctly"})]}),(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[o.length>0&&(0,c.jsx)(b.Z,{size:"sm",variant:"light",onClick:()=>A(!1),className:"px-3 py-1 text-sm",children:"Clear Selection"}),(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",onClick:I,disabled:Object.values(i).some(e=>e.loading),className:"px-3 py-1 text-sm",children:o.length>0&&o.length{s?m(s=>[...s,e]):(m(s=>s.filter(s=>s!==e)),x(!1))},A,C,e=>{switch(e){case"healthy":return(0,c.jsx)(se.Z,{color:"emerald",children:"healthy"});case"unhealthy":return(0,c.jsx)(se.Z,{color:"red",children:"unhealthy"});case"checking":return(0,c.jsx)(se.Z,{color:"blue",children:"checking"});case"none":return(0,c.jsx)(se.Z,{color:"gray",children:"none"});default:return(0,c.jsx)(se.Z,{color:"gray",children:"unknown"})}},a,(e,s,t)=>{f({modelName:e,cleanedError:s,fullError:t}),p(!0)},(e,s)=>{N({modelName:e,response:s}),y(!0)},r),data:t.data.map(e=>{let s=i[e.model_name]||{status:"none",lastCheck:"None",loading:!1};return{model_name:e.model_name,model_info:e.model_info,provider:e.provider,litellm_model_name:e.litellm_model_name,health_status:s.status,last_check:s.lastCheck,last_success:s.lastSuccess||"None",health_loading:s.loading,health_error:s.error,health_full_error:s.fullError}}),isLoading:!1,table:Z})}),(0,c.jsx)(T.Z,{title:g?"Health Check Error - ".concat(g.modelName):"Error Details",open:h,onCancel:E,footer:[(0,c.jsx)(P.ZP,{onClick:E,children:"Close"},"close")],width:800,children:g&&(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Error:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-red-50 border border-red-200 rounded-md",children:(0,c.jsx)(k.Z,{className:"text-red-800",children:g.cleanedError})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Full Error Details:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md max-h-96 overflow-y-auto",children:(0,c.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:g.fullError})})]})]})}),(0,c.jsx)(T.Z,{title:_?"Health Check Response - ".concat(_.modelName):"Response Details",open:v,onCancel:L,footer:[(0,c.jsx)(P.ZP,{onClick:L,children:"Close"},"close")],width:800,children:_&&(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Status:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-green-50 border border-green-200 rounded-md",children:(0,c.jsx)(k.Z,{className:"text-green-800",children:"Health check passed successfully"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Response Details:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md max-h-96 overflow-y-auto",children:(0,c.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:JSON.stringify(_.response,null,2)})})]})]})})]})},lm=t(61778),lu=t(12660),lx=e=>{let{value:s={},onChange:t}=e,[l,a]=(0,d.useState)(Object.entries(s)),r=e=>{let s=l.filter((s,t)=>t!==e);a(s),null==t||t(Object.fromEntries(s))},i=(e,s,r)=>{let i=[...l];i[e]=[s,r],a(i),null==t||t(Object.fromEntries(i))};return(0,c.jsxs)("div",{children:[l.map((e,s)=>{let[t,l]=e;return(0,c.jsxs)(t9.Z,{style:{display:"flex",marginBottom:8},align:"center",children:[(0,c.jsx)(eW.o,{placeholder:"Header Name",value:t,onChange:e=>i(s,e.target.value,l)}),(0,c.jsx)(eW.o,{placeholder:"Header Value",value:l,onChange:e=>i(s,t,e.target.value)}),(0,c.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:(0,c.jsx)(tC.Z,{onClick:()=>r(s),style:{cursor:"pointer"}})})]},s)}),(0,c.jsx)(P.ZP,{type:"dashed",onClick:()=>{a([...l,["",""]])},icon:(0,c.jsx)(tI.Z,{}),children:"Add Header"})]})},lh=t(77565),lp=e=>{let{pathValue:s,targetValue:t,includeSubpath:l}=e,a=(0,j.getProxyBaseUrl)();return s&&t?(0,c.jsxs)(G.Z,{className:"p-5",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Route Preview"}),(0,c.jsx)(sX.Z,{className:"text-gray-600 mb-5",children:"How your requests will be routed"}),(0,c.jsxs)("div",{className:"space-y-5",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-base font-semibold text-gray-900 mb-3",children:"Basic routing:"}),(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Your endpoint"}),(0,c.jsx)("code",{className:"font-mono text-sm text-gray-900",children:s?"".concat(a).concat(s):""})]}),(0,c.jsx)("div",{className:"text-gray-400",children:(0,c.jsx)(lh.Z,{className:"text-lg"})}),(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Forwards to"}),(0,c.jsx)("code",{className:"font-mono text-sm text-gray-900",children:t})]})]})]}),l&&(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-base font-semibold text-gray-900 mb-3",children:"With subpaths:"}),(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Your endpoint + subpath"}),(0,c.jsxs)("code",{className:"font-mono text-sm text-gray-900",children:[s&&"".concat(a).concat(s),(0,c.jsx)("span",{className:"text-blue-600",children:"/v1/text-to-image/base/model"})]})]}),(0,c.jsx)("div",{className:"text-gray-400",children:(0,c.jsx)(lh.Z,{className:"text-lg"})}),(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Forwards to"}),(0,c.jsxs)("code",{className:"font-mono text-sm text-gray-900",children:[t,(0,c.jsx)("span",{className:"text-blue-600",children:"/v1/text-to-image/base/model"})]})]})]}),(0,c.jsxs)("div",{className:"mt-3 text-sm text-gray-600",children:["Any path after ",s," will be appended to the target URL"]})]})}),!l&&(0,c.jsx)("div",{className:"mt-4 p-3 bg-blue-50 rounded-md border border-blue-200",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)(V.Z,{className:"text-blue-500 mt-0.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{className:"text-sm text-blue-700",children:[(0,c.jsx)("span",{className:"font-medium",children:"Not seeing the routing you wanted?"})," Try enabling - Include Subpaths - above - this allows subroutes like"," ",(0,c.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded font-mono text-xs",children:"/api/v1/models"})," to be forwarded automatically."]})]})})]})]}):null};let{Option:lg}=I.default;var lj=e=>{let{accessToken:s,setPassThroughItems:t,passThroughItems:l}=e,[a]=A.Z.useForm(),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(""),[x,h]=(0,d.useState)(""),[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)(!0),y=()=>{a.resetFields(),h(""),g(""),v(!0),i(!1)},N=e=>{let s=e;e&&!e.startsWith("/")&&(s="/"+e),h(s),a.setFieldsValue({path:s})},Z=async e=>{console.log("addPassThrough called with:",e),o(!0);try{console.log("formValues: ".concat(JSON.stringify(e)));let r=(await (0,j.createPassThroughEndpoint)(s,e)).endpoints[0],n=[...l,r];t(n),eo.Z.success("Pass-through endpoint created successfully"),a.resetFields(),h(""),g(""),v(!0),i(!1)}catch(e){eo.Z.fromBackend("Error creating pass-through endpoint: "+e)}finally{o(!1)}};return(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{className:"mx-auto mb-4 mt-4",onClick:()=>i(!0),children:"+ Add Pass-Through Endpoint"}),(0,c.jsx)(T.Z,{title:(0,c.jsxs)("div",{className:"flex items-center space-x-3 pb-4 border-b border-gray-100",children:[(0,c.jsx)(lu.Z,{className:"text-xl text-blue-500"}),(0,c.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add Pass-Through Endpoint"})]}),open:r,width:1e3,onCancel:y,footer:null,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,c.jsxs)("div",{className:"mt-6",children:[(0,c.jsx)(lm.Z,{message:"What is a Pass-Through Endpoint?",description:"Route requests from your LiteLLM proxy to any external API. Perfect for custom models, image generation APIs, or any service you want to proxy through LiteLLM.",type:"info",showIcon:!0,className:"mb-6"}),(0,c.jsxs)(A.Z,{form:a,onFinish:Z,layout:"vertical",className:"space-y-6",initialValues:{include_subpath:!0,path:x,target:p},children:[(0,c.jsxs)(G.Z,{className:"p-5",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Route Configuration"}),(0,c.jsx)(sX.Z,{className:"text-gray-600 mb-5",children:"Configure how requests to your domain will be forwarded to the target API"}),(0,c.jsxs)("div",{className:"space-y-5",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Path Prefix"}),name:"path",rules:[{required:!0,message:"Path is required",pattern:/^\//}],extra:(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-1",children:"Example: /bria, /adobe-photoshop, /elasticsearch"}),className:"mb-4",children:(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsx)(_.Z,{placeholder:"bria",value:x,onChange:e=>N(e.target.value),className:"flex-1"})})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Target URL"}),name:"target",rules:[{required:!0,message:"Target URL is required"},{type:"url",message:"Please enter a valid URL"}],extra:(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-1",children:"Example:https://engine.prod.bria-api.com"}),className:"mb-4",children:(0,c.jsx)(_.Z,{placeholder:"https://engine.prod.bria-api.com",value:p,onChange:e=>{g(e.target.value),a.setFieldsValue({target:e.target.value})}})}),(0,c.jsxs)("div",{className:"flex items-center justify-between py-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-sm font-medium text-gray-700",children:"Include Subpaths"}),(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-0.5",children:"Forward all subpaths to the target API (recommended for REST APIs)"})]}),(0,c.jsx)(A.Z.Item,{name:"include_subpath",valuePropName:"checked",className:"mb-0",children:(0,c.jsx)(tX.Z,{checked:f,onChange:v})})]})]})]}),(0,c.jsx)(lp,{pathValue:x,targetValue:p,includeSubpath:f}),(0,c.jsxs)(G.Z,{className:"p-6",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Headers"}),(0,c.jsx)(sX.Z,{className:"text-gray-600 mb-6",children:"Add headers that will be sent with every request to the target API"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Authentication Headers",(0,c.jsx)(B.Z,{title:"Authentication and other headers to forward with requests",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"headers",rules:[{required:!0,message:"Please configure the headers"}],extra:(0,c.jsxs)("div",{className:"text-xs text-gray-500 mt-2",children:[(0,c.jsx)("div",{className:"font-medium mb-1",children:"Add authentication tokens and other required headers"}),(0,c.jsx)("div",{children:"Common examples: auth_token, Authorization, x-api-key"})]}),children:(0,c.jsx)(lx,{})})]}),(0,c.jsxs)(G.Z,{className:"p-6",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Billing"}),(0,c.jsx)(sX.Z,{className:"text-gray-600 mb-6",children:"Optional cost tracking for this endpoint"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Cost Per Request (USD)",(0,c.jsx)(B.Z,{title:"Optional: Track costs for requests to this endpoint",children:(0,c.jsx)(V.Z,{className:"ml-2 text-gray-400 hover:text-gray-600"})})]}),name:"cost_per_request",extra:(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-2",children:"The cost charged for each request through this endpoint"}),children:(0,c.jsx)(O,{min:0,step:.001,precision:4,placeholder:"2.0000",size:"large"})})]}),(0,c.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:y,children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",loading:n,onClick:()=>{console.log("Submit button clicked"),a.submit()},children:n?"Creating...":"Add Pass-Through Endpoint"})]})]})]})})]})},lf=t(87769),lv=t(42208);let ly=e=>{let{value:s}=e,[t,l]=(0,d.useState)(!1),a=JSON.stringify(s,null,2);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("pre",{className:"font-mono text-xs bg-gray-50 p-2 rounded max-w-md overflow-auto",children:t?a:"••••••••"}),(0,c.jsx)("button",{onClick:()=>l(!t),className:"p-1 hover:bg-gray-100 rounded",type:"button",children:t?(0,c.jsx)(lf.Z,{className:"w-4 h-4 text-gray-500"}):(0,c.jsx)(lv.Z,{className:"w-4 h-4 text-gray-500"})})]})};var lb=e=>{let{endpointData:s,onClose:t,accessToken:l,isAdmin:a,onEndpointUpdated:r}=e,[i,n]=(0,d.useState)(s),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(!1),[h]=A.Z.useForm(),p=async e=>{try{if(!l||!(null==i?void 0:i.id))return;let s={};if(e.headers)try{s="string"==typeof e.headers?JSON.parse(e.headers):e.headers}catch(e){eo.Z.fromBackend("Invalid JSON format for headers");return}let t={path:i.path,target:e.target,headers:s,include_subpath:e.include_subpath,cost_per_request:e.cost_per_request};await (0,j.updatePassThroughEndpoint)(l,i.id,t),n({...i,...t}),x(!1),r&&r()}catch(e){console.error("Error updating endpoint:",e),eo.Z.fromBackend("Failed to update pass through endpoint")}},g=async()=>{try{if(!l||!(null==i?void 0:i.id))return;await (0,j.deletePassThroughEndpointsCall)(l,i.id),eo.Z.success("Pass through endpoint deleted successfully"),t(),r&&r()}catch(e){console.error("Error deleting endpoint:",e),eo.Z.fromBackend("Failed to delete pass through endpoint")}};return o?(0,c.jsx)("div",{className:"p-4",children:"Loading..."}):i?(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(P.ZP,{onClick:t,className:"mb-4",children:"← Back"}),(0,c.jsxs)(S.Z,{children:["Pass Through Endpoint: ",i.path]}),(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:i.id})]})}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),a?(0,c.jsx)(ss.Z,{children:"Settings"},"settings"):(0,c.jsx)(c.Fragment,{})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Path"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{className:"font-mono",children:i.path})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Target"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{children:i.target})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Configuration"}),(0,c.jsxs)("div",{className:"mt-2 space-y-2",children:[(0,c.jsx)("div",{children:(0,c.jsx)(se.Z,{color:i.include_subpath?"green":"gray",children:i.include_subpath?"Include Subpath":"Exact Path"})}),void 0!==i.cost_per_request&&(0,c.jsx)("div",{children:(0,c.jsxs)(k.Z,{children:["Cost per request: $",i.cost_per_request]})})]})]})]}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(lp,{pathValue:i.path,targetValue:i.target,includeSubpath:i.include_subpath||!1})}),i.headers&&Object.keys(i.headers).length>0&&(0,c.jsxs)(G.Z,{className:"mt-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Headers"}),(0,c.jsxs)(se.Z,{color:"blue",children:[Object.keys(i.headers).length," headers configured"]})]}),(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(ly,{value:i.headers})})]})]}),a&&(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Pass Through Endpoint Settings"}),(0,c.jsx)("div",{className:"space-x-2",children:!u&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(b.Z,{onClick:()=>x(!0),children:"Edit Settings"}),(0,c.jsx)(b.Z,{onClick:g,variant:"secondary",color:"red",children:"Delete Endpoint"})]})})]}),u?(0,c.jsxs)(A.Z,{form:h,onFinish:p,initialValues:{target:i.target,headers:i.headers?JSON.stringify(i.headers,null,2):"",include_subpath:i.include_subpath||!1,cost_per_request:i.cost_per_request},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Target URL",name:"target",rules:[{required:!0,message:"Please input a target URL"}],children:(0,c.jsx)(_.Z,{placeholder:"https://api.example.com"})}),(0,c.jsx)(A.Z.Item,{label:"Headers (JSON)",name:"headers",children:(0,c.jsx)(L.default.TextArea,{rows:5,placeholder:'{"Authorization": "Bearer your-token", "Content-Type": "application/json"}'})}),(0,c.jsx)(A.Z.Item,{label:"Include Subpath",name:"include_subpath",valuePropName:"checked",children:(0,c.jsx)(eJ.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Cost per Request",name:"cost_per_request",children:(0,c.jsx)(e8.Z,{min:0,step:.01,precision:2,placeholder:"0.00",addonBefore:"$"})}),(0,c.jsxs)("div",{className:"flex justify-end gap-2 mt-6",children:[(0,c.jsx)(P.ZP,{onClick:()=>x(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{children:"Save Changes"})]})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Path"}),(0,c.jsx)("div",{className:"font-mono",children:i.path})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Target URL"}),(0,c.jsx)("div",{children:i.target})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Include Subpath"}),(0,c.jsx)(se.Z,{color:i.include_subpath?"green":"gray",children:i.include_subpath?"Yes":"No"})]}),void 0!==i.cost_per_request&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Cost per Request"}),(0,c.jsxs)("div",{children:["$",i.cost_per_request]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Headers"}),i.headers&&Object.keys(i.headers).length>0?(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(ly,{value:i.headers})}):(0,c.jsx)("div",{className:"text-gray-500",children:"No headers configured"})]})]})]})})]})]})]}):(0,c.jsx)("div",{className:"p-4",children:"Pass through endpoint not found"})},l_=t(19130);function lN(e){let{data:s=[],columns:t,getRowCanExpand:l,renderSubComponent:a,isLoading:r=!1,loadingMessage:i="\uD83D\uDE85 Loading logs...",noDataMessage:n="No logs found"}=e,o=(0,sD.b7)({data:s,columns:t,getRowCanExpand:l,getRowId:(e,s)=>{var t;return null!==(t=null==e?void 0:e.request_id)&&void 0!==t?t:String(s)},getCoreRowModel:(0,sF.sC)(),getExpandedRowModel:(0,sF.rV)()});return(0,c.jsx)("div",{className:"rounded-lg custom-border overflow-x-auto w-full max-w-full box-border",children:(0,c.jsxs)(l_.iA,{className:"[&_td]:py-0.5 [&_th]:py-1 table-fixed w-full box-border",style:{minWidth:"400px"},children:[(0,c.jsx)(l_.ss,{children:o.getHeaderGroups().map(e=>(0,c.jsx)(l_.SC,{children:e.headers.map(e=>(0,c.jsx)(l_.xs,{className:"py-1 h-8",children:e.isPlaceholder?null:(0,sD.ie)(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,c.jsx)(l_.RM,{children:r?(0,c.jsx)(l_.SC,{children:(0,c.jsx)(l_.pj,{colSpan:t.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:i})})})}):o.getRowModel().rows.length>0?o.getRowModel().rows.map(e=>(0,c.jsxs)(d.Fragment,{children:[(0,c.jsx)(l_.SC,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(l_.pj,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap",children:(0,sD.ie)(e.column.columnDef.cell,e.getContext())},e.id))}),e.getIsExpanded()&&(0,c.jsx)(l_.SC,{children:(0,c.jsx)(l_.pj,{colSpan:e.getVisibleCells().length,className:"p-0",children:(0,c.jsx)("div",{className:"w-full max-w-full overflow-hidden box-border",children:a({row:e})})})})]},e.id)):(0,c.jsx)(l_.SC,{children:(0,c.jsx)(l_.pj,{colSpan:t.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:n})})})})})]})})}let lZ=e=>{let{value:s}=e,[t,l]=(0,d.useState)(!1),a=JSON.stringify(s);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("span",{className:"font-mono text-xs",children:t?a:"••••••••"}),(0,c.jsx)("button",{onClick:()=>l(!t),className:"p-1 hover:bg-gray-100 rounded",type:"button",children:t?(0,c.jsx)(lf.Z,{className:"w-4 h-4 text-gray-500"}):(0,c.jsx)(lv.Z,{className:"w-4 h-4 text-gray-500"})})]})};var lw=e=>{let{accessToken:s,userRole:t,userID:l,modelData:a}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(null);(0,d.useEffect)(()=>{s&&t&&l&&(0,j.getPassThroughEndpointsCall)(s).then(e=>{i(e.endpoints)})},[s,t,l]);let p=async e=>{h(e),u(!0)},g=async()=>{if(null!=x&&s){try{await (0,j.deletePassThroughEndpointsCall)(s,x);let e=r.filter(e=>e.id!==x);i(e),eo.Z.success("Endpoint deleted successfully.")}catch(e){console.error("Error deleting the endpoint:",e),eo.Z.fromBackend("Error deleting the endpoint: "+e)}u(!1),h(null)}},f=(e,s)=>{p(e)},v=[{header:"ID",accessorKey:"id",cell:e=>(0,c.jsx)(B.Z,{title:e.row.original.id,children:(0,c.jsx)("div",{className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",onClick:()=>e.row.original.id&&o(e.row.original.id),children:e.row.original.id})})},{header:"Path",accessorKey:"path"},{header:"Target",accessorKey:"target",cell:e=>(0,c.jsx)(k.Z,{children:e.getValue()})},{header:"Headers",accessorKey:"headers",cell:e=>(0,c.jsx)(lZ,{value:e.getValue()||{}})},{header:"Actions",id:"actions",cell:e=>{let{row:s}=e;return(0,c.jsxs)("div",{className:"flex space-x-1",children:[(0,c.jsx)(sR.Z,{icon:s4.Z,size:"sm",onClick:()=>s.original.id&&o(s.original.id),title:"Edit"}),(0,c.jsx)(sR.Z,{icon:W.Z,size:"sm",onClick:()=>f(s.original.id,s.index),title:"Delete"})]})}}];if(!s)return null;if(n){console.log("selectedEndpointId",n),console.log("generalSettings",r);let e=r.find(e=>e.id===n);return e?(0,c.jsx)(lb,{endpointData:e,onClose:()=>o(null),accessToken:s,isAdmin:"Admin"===t||"admin"===t,onEndpointUpdated:()=>{s&&(0,j.getPassThroughEndpointsCall)(s).then(e=>{i(e.endpoints)})}}):(0,c.jsx)("div",{children:"Endpoint not found"})}return(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Pass Through Endpoints"}),(0,c.jsx)(k.Z,{className:"text-tremor-content",children:"Configure and manage your pass-through endpoints"})]}),(0,c.jsx)(lj,{accessToken:s,setPassThroughItems:i,passThroughItems:r}),(0,c.jsx)(lN,{data:r,columns:v,renderSubComponent:()=>(0,c.jsx)("div",{}),getRowCanExpand:()=>!1,isLoading:!1,noDataMessage:"No pass-through endpoints configured"}),m&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Pass-Through Endpoint"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this pass-through endpoint? This action cannot be undone."})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:g,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{u(!1),h(null)},children:"Cancel"})]})]})]})})]})},lk=e=>{let{accessToken:s,initialModelGroupAlias:t={},onAliasUpdate:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)({aliasName:"",targetModelGroup:""}),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!0);(0,d.useEffect)(()=>{r(Object.entries(t).map((e,s)=>{var t;let[l,a]=e;return{id:"".concat(s,"-").concat(l),aliasName:l,targetModelGroup:"string"==typeof a?a:null!==(t=null==a?void 0:a.model)&&void 0!==t?t:""}}))},[t]);let h=async e=>{if(!s)return console.error("Access token is missing"),!1;try{let t={};return e.forEach(e=>{t[e.aliasName]=e.targetModelGroup}),console.log("Saving model group alias:",t),await (0,j.setCallbacksCall)(s,{router_settings:{model_group_alias:t}}),l&&l(t),!0}catch(e){return console.error("Failed to save model group alias settings:",e),eo.Z.fromBackend("Failed to save model group alias settings"),!1}},p=async()=>{if(!i.aliasName||!i.targetModelGroup){eo.Z.fromBackend("Please provide both alias name and target model group");return}if(a.some(e=>e.aliasName===i.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=[...a,{id:"".concat(Date.now(),"-").concat(i.aliasName),aliasName:i.aliasName,targetModelGroup:i.targetModelGroup}];await h(e)&&(r(e),n({aliasName:"",targetModelGroup:""}),eo.Z.success("Alias added successfully"))},g=e=>{m({...e})},f=async()=>{if(!o)return;if(!o.aliasName||!o.targetModelGroup){eo.Z.fromBackend("Please provide both alias name and target model group");return}if(a.some(e=>e.id!==o.id&&e.aliasName===o.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=a.map(e=>e.id===o.id?o:e);await h(e)&&(r(e),m(null),eo.Z.success("Alias updated successfully"))},v=()=>{m(null)},y=async e=>{let s=a.filter(s=>s.id!==e);await h(s)&&(r(s),eo.Z.success("Alias deleted successfully"))},b=a.reduce((e,s)=>(e[s.aliasName]=s.targetModelGroup,e),{});return(0,c.jsxs)(eB.Zb,{className:"mb-6",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between cursor-pointer",onClick:()=>x(!u),children:[(0,c.jsxs)("div",{className:"flex flex-col",children:[(0,c.jsx)(eB.Dx,{className:"mb-0",children:"Model Group Alias Settings"}),(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Create aliases for your model groups to simplify API calls. For example, you can create an alias 'gpt-4o' that points to 'gpt-4o-mini-openai' model group."})]}),(0,c.jsx)("div",{className:"flex items-center",children:u?(0,c.jsx)(sv.Z,{className:"w-5 h-5 text-gray-500"}):(0,c.jsx)(sy.Z,{className:"w-5 h-5 text-gray-500"})})]}),u&&(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(eB.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Add New Alias"}),(0,c.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Alias Name"}),(0,c.jsx)("input",{type:"text",value:i.aliasName,onChange:e=>n({...i,aliasName:e.target.value}),placeholder:"e.g., gpt-4o",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Target Model Group"}),(0,c.jsx)("input",{type:"text",value:i.targetModelGroup,onChange:e=>n({...i,targetModelGroup:e.target.value}),placeholder:"e.g., gpt-4o-mini-openai",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),(0,c.jsx)("div",{className:"flex items-end",children:(0,c.jsxs)("button",{onClick:p,disabled:!i.aliasName||!i.targetModelGroup,className:"flex items-center px-4 py-2 rounded-md text-sm ".concat(i.aliasName&&i.targetModelGroup?"bg-green-600 text-white hover:bg-green-700":"bg-gray-300 text-gray-500 cursor-not-allowed"),children:[(0,c.jsx)(eq.Z,{className:"w-4 h-4 mr-1"}),"Add Alias"]})})]})]}),(0,c.jsx)(eB.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Manage Existing Aliases"}),(0,c.jsx)("div",{className:"rounded-lg custom-border relative mb-6",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(eB.iA,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(eB.ss,{children:(0,c.jsxs)(eB.SC,{children:[(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Alias Name"}),(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Target Model Group"}),(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Actions"})]})}),(0,c.jsxs)(eB.RM,{children:[a.map(e=>(0,c.jsx)(eB.SC,{className:"h-8",children:o&&o.id===e.id?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eB.pj,{className:"py-0.5",children:(0,c.jsx)("input",{type:"text",value:o.aliasName,onChange:e=>m({...o,aliasName:e.target.value}),className:"w-full px-2 py-1 border border-gray-300 rounded-md text-sm"})}),(0,c.jsx)(eB.pj,{className:"py-0.5",children:(0,c.jsx)("input",{type:"text",value:o.targetModelGroup,onChange:e=>m({...o,targetModelGroup:e.target.value}),className:"w-full px-2 py-1 border border-gray-300 rounded-md text-sm"})}),(0,c.jsx)(eB.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:f,className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:"Save"}),(0,c.jsx)("button",{onClick:v,className:"text-xs bg-gray-50 text-gray-600 px-2 py-1 rounded hover:bg-gray-100",children:"Cancel"})]})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eB.pj,{className:"py-0.5 text-sm text-gray-900",children:e.aliasName}),(0,c.jsx)(eB.pj,{className:"py-0.5 text-sm text-gray-500",children:e.targetModelGroup}),(0,c.jsx)(eB.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>g(e),className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:(0,c.jsx)(eV.Z,{className:"w-3 h-3"})}),(0,c.jsx)("button",{onClick:()=>y(e.id),className:"text-xs bg-red-50 text-red-600 px-2 py-1 rounded hover:bg-red-100",children:(0,c.jsx)(W.Z,{className:"w-3 h-3"})})]})})]})},e.id)),0===a.length&&(0,c.jsx)(eB.SC,{children:(0,c.jsx)(eB.pj,{colSpan:3,className:"py-0.5 text-sm text-gray-500 text-center",children:"No aliases added yet. Add a new alias above."})})]})]})})}),(0,c.jsxs)(eB.Zb,{children:[(0,c.jsx)(eB.Dx,{className:"mb-4",children:"Configuration Example"}),(0,c.jsx)(eB.xv,{className:"text-gray-600 mb-4",children:"Here's how your current aliases would look in the config.yaml:"}),(0,c.jsx)("div",{className:"bg-gray-100 rounded-lg p-4 font-mono text-sm",children:(0,c.jsxs)("div",{className:"text-gray-700",children:["router_settings:",(0,c.jsx)("br",{}),"\xa0\xa0model_group_alias:",0===Object.keys(b).length?(0,c.jsxs)("span",{className:"text-gray-500",children:[(0,c.jsx)("br",{}),"\xa0\xa0\xa0\xa0# No aliases configured yet"]}):Object.entries(b).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{children:[(0,c.jsx)("br",{}),'\xa0\xa0\xa0\xa0"',s,'": "',t,'"']},s)})]})})]})]})]})};let lS={"BadRequestError (400)":"BadRequestErrorRetries","AuthenticationError (401)":"AuthenticationErrorRetries","TimeoutError (408)":"TimeoutErrorRetries","RateLimitError (429)":"RateLimitErrorRetries","ContentPolicyViolationError (400)":"ContentPolicyViolationErrorRetries","InternalServerError (500)":"InternalServerErrorRetries"};var lC=e=>{let{accessToken:s,token:t,userRole:l,userID:a,modelData:r={data:[]},keys:i,setModelData:n,premiumUser:o,teams:m}=e,[u]=A.Z.useForm(),[x]=A.Z.useForm(),[h,p]=(0,d.useState)(null),[g,f]=(0,d.useState)(""),[_,N]=(0,d.useState)([]),[Z,w]=(0,d.useState)([]),[C,I]=(0,d.useState)(s0.Cl.OpenAI),[T,E]=(0,d.useState)(null),[P,L]=(0,d.useState)(!1),[M,O]=(0,d.useState)(!1),[D,F]=(0,d.useState)(null),[R,z]=(0,d.useState)([]),[U,q]=(0,d.useState)([]),[B,K]=(0,d.useState)(null),[H,Y]=(0,d.useState)([]),[J,W]=(0,d.useState)([]),[$,Q]=(0,d.useState)([]),[X,ee]=(0,d.useState)([]),[es,et]=(0,d.useState)([]),[el,ea]=(0,d.useState)([]),[er,ec]=(0,d.useState)([]),[ed,em]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[eu,ex]=(0,d.useState)(null),[eh,ep]=(0,d.useState)(null),[eg,ej]=(0,d.useState)(0),[ef,ev]=(0,d.useState)({}),[ey,eb]=(0,d.useState)([]),[e_,eN]=(0,d.useState)(!1),[eZ,ew]=(0,d.useState)(null),[ek,eS]=(0,d.useState)(null),[eC,eA]=(0,d.useState)([]),[eT,eE]=(0,d.useState)([]),[eP,eL]=(0,d.useState)({}),[eM,eO]=(0,d.useState)(!1),[eD,eF]=(0,d.useState)(null),[eR,ez]=(0,d.useState)(!1),[eU,eq]=(0,d.useState)(null),[eV,eB]=(0,d.useState)(null),[eK,eG]=(0,d.useState)(null),[eH,eY]=(0,d.useState)(null),[eJ,eW]=(0,d.useState)(""),[e$,eQ]=(0,d.useState)("personal"),[eX,e0]=(0,d.useState)("current_team"),[e1,e2]=(0,d.useState)(!1),[e4,e5]=(0,d.useState)(!1),[e3,e6]=(0,d.useState)(!1),[e7,se]=(0,d.useState)(new Set),si=(0,d.useRef)(null),so=(0,d.useRef)(null),[sc,sd]=(0,d.useState)({pageIndex:0,pageSize:50}),[sm,su]=(0,d.useState)(0),sx=(0,d.useMemo)(()=>r&&r.data&&0!==r.data.length?r.data.filter(e=>{var s,t,l,a,r;let i=""===eJ||e.model_name.toLowerCase().includes(eJ.toLowerCase()),n="all"===B||e.model_name===B||!B||"wildcard"===B&&(null===(s=e.model_name)||void 0===s?void 0:s.includes("*")),o="all"===eH||(null===(t=e.model_info.access_groups)||void 0===t?void 0:t.includes(eH))||!eH,c=!0;return"current_team"===eX&&(c="personal"===e$?(null===(l=e.model_info)||void 0===l?void 0:l.direct_access)===!0:(null===(r=e.model_info)||void 0===r?void 0:null===(a=r.access_via_team_ids)||void 0===a?void 0:a.includes(e$))===!0),i&&n&&o&&c}):[],[r,eJ,B,eH,e$,eX]),sh=(0,d.useMemo)(()=>{let e=sc.pageIndex*sc.pageSize,s=e+sc.pageSize;return sx.slice(e,s)},[sx,sc.pageIndex,sc.pageSize]);(0,d.useEffect)(()=>{sd(e=>({...e,pageIndex:0}))},[eJ,B,eH,e$,eX]);let sp=async(e,t,r)=>{if(console.log("Updating model metrics for group:",e),!s||!a||!l||!t||!r)return;console.log("inside updateModelMetrics - startTime:",t,"endTime:",r),K(e);let i=null==eZ?void 0:eZ.token;void 0===i&&(i=null);let n=ek;void 0===n&&(n=null);try{let o=await (0,j.modelMetricsCall)(s,a,l,e,t.toISOString(),r.toISOString(),i,n);console.log("Model metrics response:",o),Y(o.data),W(o.all_api_bases);let c=await (0,j.streamingModelMetricsCall)(s,e,t.toISOString(),r.toISOString());Q(c.data),ee(c.all_api_bases);let d=await (0,j.modelExceptionsCall)(s,a,l,e,t.toISOString(),r.toISOString(),i,n);console.log("Model exceptions response:",d),et(d.data),ea(d.exception_types);let m=await (0,j.modelMetricsSlowResponsesCall)(s,a,l,e,t.toISOString(),r.toISOString(),i,n);if(console.log("slowResponses:",m),ec(m),e){let l=await (0,j.adminGlobalActivityExceptions)(s,null==t?void 0:t.toISOString().split("T")[0],null==r?void 0:r.toISOString().split("T")[0],e);ev(l);let a=await (0,j.adminGlobalActivityExceptionsPerDeployment)(s,null==t?void 0:t.toISOString().split("T")[0],null==r?void 0:r.toISOString().split("T")[0],e);eb(a)}}catch(e){console.error("Failed to fetch model metrics",e)}},sg=async e=>{try{let s=await (0,j.credentialListCall)(e);console.log("credentials: ".concat(JSON.stringify(s))),eE(s.credentials)}catch(e){console.error("Error fetching credentials:",e)}};(0,d.useEffect)(()=>{sp(B,ed.from,ed.to)},[eZ,ek,eV]),(0,d.useEffect)(()=>{let e=e=>{si.current&&!si.current.contains(e.target)&&e6(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let sj={name:"file",accept:".json",beforeUpload:e=>{if("application/json"===e.type){let s=new FileReader;s.onload=e=>{if(e.target){let s=e.target.result;console.log("Resetting vertex_credentials to JSON; jsonStr: ".concat(s)),u.setFieldsValue({vertex_credentials:s}),console.log("Form values right after setting:",u.getFieldsValue())}},s.readAsText(e)}return!1},onChange(e){console.log("Upload onChange triggered with values:",e),console.log("Current form values:",u.getFieldsValue()),"uploading"!==e.file.status&&console.log(e.file,e.fileList),"done"===e.file.status?eo.Z.success("".concat(e.file.name," file uploaded successfully")):"error"===e.file.status&&eo.Z.fromBackend("".concat(e.file.name," file upload failed."))}},sf=()=>{f(new Date().toLocaleString())},sv=async()=>{if(!s){console.error("Access token is missing");return}try{let e={router_settings:{}};"global"===B?(console.log("Saving global retry policy:",eh),eh&&(e.router_settings.retry_policy=eh),eo.Z.success("Global retry settings saved successfully")):(console.log("Saving model group retry policy for",B,":",eu),eu&&(e.router_settings.model_group_retry_policy=eu),eo.Z.success("Retry settings saved successfully for ".concat(B))),await (0,j.setCallbacksCall)(s,e)}catch(e){console.error("Failed to save retry settings:",e),eo.Z.fromBackend("Failed to save retry settings")}};if((0,d.useEffect)(()=>{if(!s||!t||!l||!a)return;let e=async()=>{try{var e,t,r,i,o,c,d,m,u,x,h,p;let g=await (0,j.modelInfoCall)(s,a,l);console.log("Model data response:",g.data),n(g);let f=await (0,j.modelSettingsCall)(s);f&&w(f);let v=new Set;for(let e=0;e0&&(_=y[y.length-1],console.log("_initial_model_group:",_)),console.log("selectedModelGroup:",B);let N=await (0,j.modelMetricsCall)(s,a,l,_,null===(e=ed.from)||void 0===e?void 0:e.toISOString(),null===(t=ed.to)||void 0===t?void 0:t.toISOString(),null==eZ?void 0:eZ.token,ek);console.log("Model metrics response:",N),Y(N.data),W(N.all_api_bases);let Z=await (0,j.streamingModelMetricsCall)(s,_,null===(r=ed.from)||void 0===r?void 0:r.toISOString(),null===(i=ed.to)||void 0===i?void 0:i.toISOString());Q(Z.data),ee(Z.all_api_bases);let k=await (0,j.modelExceptionsCall)(s,a,l,_,null===(o=ed.from)||void 0===o?void 0:o.toISOString(),null===(c=ed.to)||void 0===c?void 0:c.toISOString(),null==eZ?void 0:eZ.token,ek);console.log("Model exceptions response:",k),et(k.data),ea(k.exception_types);let S=await (0,j.modelMetricsSlowResponsesCall)(s,a,l,_,null===(d=ed.from)||void 0===d?void 0:d.toISOString(),null===(m=ed.to)||void 0===m?void 0:m.toISOString(),null==eZ?void 0:eZ.token,ek),C=await (0,j.adminGlobalActivityExceptions)(s,null===(u=ed.from)||void 0===u?void 0:u.toISOString().split("T")[0],null===(x=ed.to)||void 0===x?void 0:x.toISOString().split("T")[0],_);ev(C);let I=await (0,j.adminGlobalActivityExceptionsPerDeployment)(s,null===(h=ed.from)||void 0===h?void 0:h.toISOString().split("T")[0],null===(p=ed.to)||void 0===p?void 0:p.toISOString().split("T")[0],_);eb(I),console.log("dailyExceptions:",C),console.log("dailyExceptionsPerDeplyment:",I),console.log("slowResponses:",S),ec(S);let A=await (0,j.allEndUsersCall)(s);eA(null==A?void 0:A.map(e=>e.user_id));let T=(await (0,j.getCallbacksCall)(s,a,l)).router_settings;console.log("routerSettingsInfo:",T);let E=T.model_group_retry_policy,P=T.num_retries;console.log("model_group_retry_policy:",E),console.log("default_retries:",P),ex(E),ep(T.retry_policy),ej(P);let L=T.model_group_alias||{};eL(L)}catch(e){console.error("There was an error fetching the model data",e)}};s&&t&&l&&a&&e();let r=async()=>{let e=await (0,j.modelCostMap)(s);console.log("received model cost map data: ".concat(Object.keys(e))),p(e)};null==h&&r(),sf()},[s,t,l,a,h,g,eV]),!r||!s||!t||!l||!a)return(0,c.jsx)("div",{children:"Loading..."});let sy=[],sb=[];for(let e=0;e(console.log("GET PROVIDER CALLED! - ".concat(h)),null!=h&&"object"==typeof h&&e in h)?h[e].litellm_provider:"openai";if(t){let e=t.split("/"),s=e[0];(i=l)||(i=1===e.length?u(t):s)}else i="-";a&&(n=null==a?void 0:a.input_cost_per_token,o=null==a?void 0:a.output_cost_per_token,c=null==a?void 0:a.max_tokens,d=null==a?void 0:a.max_input_tokens),(null==s?void 0:s.litellm_params)&&(m=Object.fromEntries(Object.entries(null==s?void 0:s.litellm_params).filter(e=>{let[s]=e;return"model"!==s&&"api_base"!==s}))),r.data[e].provider=i,r.data[e].input_cost=n,r.data[e].output_cost=o,r.data[e].litellm_model_name=t,sb.push(i),r.data[e].input_cost&&(r.data[e].input_cost=(1e6*Number(r.data[e].input_cost)).toFixed(2)),r.data[e].output_cost&&(r.data[e].output_cost=(1e6*Number(r.data[e].output_cost)).toFixed(2)),r.data[e].max_tokens=c,r.data[e].max_input_tokens=d,r.data[e].api_base=null==s?void 0:null===(sZ=s.litellm_params)||void 0===sZ?void 0:sZ.api_base,r.data[e].cleanedLitellmParams=m,sy.push(s.model_name),console.log(r.data[e])}if(l&&"Admin Viewer"==l){let{Title:e,Paragraph:s}=en.default;return(0,c.jsxs)("div",{children:[(0,c.jsx)(e,{level:1,children:"Access Denied"}),(0,c.jsx)(s,{children:"Ask your proxy admin for access to view all models"})]})}let sw=(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mb-1",children:"Select API Key Name"}),o?(0,c.jsxs)("div",{children:[(0,c.jsxs)(e9.Z,{defaultValue:"all-keys",children:[(0,c.jsx)(ei.Z,{value:"all-keys",onClick:()=>{ew(null)},children:"All Keys"},"all-keys"),null==i?void 0:i.map((e,s)=>e&&null!==e.key_alias&&e.key_alias.length>0?(0,c.jsx)(ei.Z,{value:String(s),onClick:()=>{ew(e)},children:e.key_alias},s):null)]}),(0,c.jsx)(k.Z,{className:"mt-1",children:"Select Customer Name"}),(0,c.jsxs)(e9.Z,{defaultValue:"all-customers",children:[(0,c.jsx)(ei.Z,{value:"all-customers",onClick:()=>{eS(null)},children:"All Customers"},"all-customers"),null==eC?void 0:eC.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,onClick:()=>{eS(e)},children:e},s))]}),(0,c.jsx)(k.Z,{className:"mt-1",children:"Select Team"}),(0,c.jsxs)(e9.Z,{className:"w-64 relative z-50",defaultValue:"all",value:null!=eK?eK:"all",onValueChange:e=>eG("all"===e?null:e),children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Teams"}),null==m?void 0:m.filter(e=>e.team_id).map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:e.team_alias?"".concat(e.team_alias," (").concat(e.team_id.slice(0,8),"...)"):"Team ".concat(e.team_id.slice(0,8),"...")},e.team_id))]})]}):(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mt-1",children:"Select Team"}),(0,c.jsxs)(e9.Z,{className:"w-64 relative z-50",defaultValue:"all",value:null!=eK?eK:"all",onValueChange:e=>eG("all"===e?null:e),children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Teams"}),null==m?void 0:m.filter(e=>e.team_id).map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:e.team_alias?"".concat(e.team_alias," (").concat(e.team_id.slice(0,8),"...)"):"Team ".concat(e.team_id.slice(0,8),"...")},e.team_id))]})]})]}),sk=e=>{var s,t;let{payload:l,active:a}=e;if(!a||!l)return null;let r=null===(t=l[0])||void 0===t?void 0:null===(s=t.payload)||void 0===s?void 0:s.date,i=l.sort((e,s)=>s.value-e.value);if(i.length>5){let e=i.length-5;(i=i.slice(0,5)).push({dataKey:"".concat(e," other deployments"),value:l.slice(5).reduce((e,s)=>e+s.value,0),color:"gray"})}return(0,c.jsxs)("div",{className:"w-150 rounded-tremor-default border border-tremor-border bg-tremor-background p-2 text-tremor-default shadow-tremor-dropdown",children:[r&&(0,c.jsxs)("p",{className:"text-tremor-content-emphasis mb-2",children:["Date: ",r]}),i.map((e,s)=>{let t=parseFloat(e.value.toFixed(5)),l=0===t&&e.value>0?"<0.00001":t.toFixed(5);return(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 mt-1 rounded-full bg-".concat(e.color,"-500")}),(0,c.jsx)("p",{className:"text-tremor-content",children:e.dataKey})]}),(0,c.jsx)("p",{className:"font-medium text-tremor-content-emphasis text-righ ml-2",children:l})]},s)})]})};console.log("selectedProvider: ".concat(C)),console.log("providerModels.length: ".concat(_.length));let sS=Object.keys(s0.Cl).find(e=>s0.Cl[e]===C);return(sS&&Z&&Z.find(e=>e.name===s0.fK[sS]),eU)?(0,c.jsx)("div",{className:"w-full h-full",children:(0,c.jsx)(tN,{teamId:eU,onClose:()=>eq(null),accessToken:s,is_team_admin:"Admin"===l,is_proxy_admin:"Proxy Admin"===l,userModels:sy,editTeam:!1,onUpdate:sf})}):(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("h2",{className:"text-lg font-semibold",children:"Model Management"}),eI.ZL.includes(l)?(0,c.jsx)("p",{className:"text-sm text-gray-600",children:"Add and manage models for the proxy"}):(0,c.jsx)("p",{className:"text-sm text-gray-600",children:"Add models for teams you are an admin for."})]})}),eD?(0,c.jsx)(tR,{modelId:eD,editModel:!0,onClose:()=>{eF(null),ez(!1)},modelData:r.data.find(e=>e.model_info.id===eD),accessToken:s,userID:a,userRole:l,setEditModalVisible:O,setSelectedModel:F,onModelUpdate:e=>{n({...r,data:r.data.map(s=>s.model_info.id===e.model_info.id?e:s)}),sf()},modelAccessGroups:U}):(0,c.jsxs)(st.Z,{index:sm,onIndexChange:su,className:"gap-2 h-[75vh] w-full ",children:[(0,c.jsxs)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsxs)("div",{className:"flex",children:[eI.ZL.includes(l)?(0,c.jsx)(ss.Z,{children:"All Models"}):(0,c.jsx)(ss.Z,{children:"Your Models"}),(0,c.jsx)(ss.Z,{children:"Add Model"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"LLM Credentials"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Pass-Through Endpoints"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Health Status"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Model Analytics"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Model Retry Settings"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Model Group Alias"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Price Data Reload"})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[g&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",g]}),(0,c.jsx)(sR.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center",onClick:sf})]})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(y.Z,{children:(0,c.jsx)("div",{className:"flex flex-col space-y-4",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsxs)("div",{className:"border-b px-6 py-4 bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold text-gray-900",children:"Current Team:"}),(0,c.jsxs)(e9.Z,{className:"w-80",defaultValue:"personal",value:e$,onValueChange:e=>eQ(e),children:[(0,c.jsx)(ei.Z,{value:"personal",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"Personal"})]})}),null==m?void 0:m.filter(e=>e.team_id).map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e.team_alias?"".concat(e.team_alias.slice(0,30),"..."):"Team ".concat(e.team_id.slice(0,30),"...")})]})},e.team_id))]})]}),(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold text-gray-900",children:"View:"}),(0,c.jsxs)(e9.Z,{className:"w-64",defaultValue:"current_team",value:eX,onValueChange:e=>e0(e),children:[(0,c.jsx)(ei.Z,{value:"current_team",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-purple-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"Current Team Models"})]})}),(0,c.jsx)(ei.Z,{value:"all",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-gray-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"All Available Models"})]})})]})]})]}),"current_team"===eX&&(0,c.jsxs)("div",{className:"flex items-start gap-2 mt-3",children:[(0,c.jsx)(V.Z,{className:"text-gray-400 mt-0.5 flex-shrink-0 text-xs"}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"personal"===e$?(0,c.jsxs)("span",{children:["To access these models: Create a Virtual Key without selecting a team on the"," ",(0,c.jsx)("a",{href:"/?login=success&page=api-keys",className:"text-gray-600 hover:text-gray-800 underline",children:"Virtual Keys page"})]}):(0,c.jsxs)("span",{children:['To access these models: Create a Virtual Key and select Team as "',e$,'" on the'," ",(0,c.jsx)("a",{href:"/?login=success&page=api-keys",className:"text-gray-600 hover:text-gray-800 underline",children:"Virtual Keys page"})]})})]})]}),(0,c.jsx)("div",{className:"border-b px-6 py-4",children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search model names...",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:eJ,onChange:e=>eW(e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 ".concat(e1?"bg-gray-100":""),onClick:()=>e2(!e1),children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filters"]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",onClick:()=>{eW(""),K("all"),eY(null),eQ("personal"),e0("current_team"),sd({pageIndex:0,pageSize:50})},children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Reset Filters"]})]}),e1&&(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-3",children:[(0,c.jsx)("div",{className:"w-64",children:(0,c.jsxs)(e9.Z,{value:null!=B?B:"all",onValueChange:e=>K("all"===e?"all":e),placeholder:"Filter by Public Model Name",children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Models"}),(0,c.jsx)(ei.Z,{value:"wildcard",children:"Wildcard Models (*)"}),R.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,children:e},s))]})}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsxs)(e9.Z,{value:null!=eH?eH:"all",onValueChange:e=>eY("all"===e?null:e),placeholder:"Filter by Model Access Group",children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Model Access Groups"}),U.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,children:e},s))]})})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-sm text-gray-700",children:sx.length>0?"Showing ".concat(sc.pageIndex*sc.pageSize+1," - ").concat(Math.min((sc.pageIndex+1)*sc.pageSize,sx.length)," of ").concat(sx.length," results"):"Showing 0 results"}),sx.length>sc.pageSize&&(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("button",{onClick:()=>sd(e=>({...e,pageIndex:e.pageIndex-1})),disabled:0===sc.pageIndex,className:"px-3 py-1 text-sm border rounded-md ".concat(0===sc.pageIndex?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Previous"}),(0,c.jsx)("button",{onClick:()=>sd(e=>({...e,pageIndex:e.pageIndex+1})),disabled:sc.pageIndex>=Math.ceil(sx.length/sc.pageSize)-1,className:"px-3 py-1 text-sm border rounded-md ".concat(sc.pageIndex>=Math.ceil(sx.length/sc.pageSize)-1?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Next"})]})]})]})}),(0,c.jsx)(t8.C,{columns:t7(l,a,o,eF,eq,ta,e=>{F(e),O(!0)},sf,ez,e7,se),data:sh,isLoading:!1,table:so})]})})})}),(0,c.jsx)(sa.Z,{className:"h-full",children:(0,c.jsx)(t6,{form:u,handleOk:()=>{console.log("\uD83D\uDE80 handleOk called from model dashboard!"),console.log("Current form values:",u.getFieldsValue()),u.validateFields().then(e=>{console.log("✅ Validation passed, submitting:",e),s2(e,s,u,sf)}).catch(e=>{var s;console.error("❌ Validation failed:",e),console.error("Form errors:",e.errorFields);let t=(null===(s=e.errorFields)||void 0===s?void 0:s.map(e=>"".concat(e.name.join("."),": ").concat(e.errors.join(", "))).join(" | "))||"Unknown validation error";eo.Z.fromBackend("Please fill in the following required fields: ".concat(t))})},selectedProvider:C,setSelectedProvider:I,providerModels:_,setProviderModelsFn:e=>{let s=(0,s0.bK)(e,h);N(s),console.log("providerModels: ".concat(s))},getPlaceholder:s0.ph,uploadProps:sj,showAdvancedSettings:eM,setShowAdvancedSettings:eO,teams:m,credentials:eT,accessToken:s,userRole:l,premiumUser:o})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(tl,{accessToken:s,uploadProps:sj,credentialList:eT,fetchCredentials:sg})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lw,{accessToken:s,userRole:l,userID:a,modelData:r})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(ld,{accessToken:s,modelData:r,all_models_on_proxy:sy,getDisplayModelName:ta,setSelectedModelId:eF})}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:4,className:"mt-2 mb-2",children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(ti,{value:ed,className:"mr-2",onValueChange:e=>{em(e),sp(B,e.from,e.to)}})}),(0,c.jsxs)(v.Z,{className:"ml-2",children:[(0,c.jsx)(k.Z,{children:"Select Model Group"}),(0,c.jsx)(e9.Z,{defaultValue:B||R[0],value:B||R[0],children:R.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,onClick:()=>sp(e,ed.from,ed.to),children:e},s))})]}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(tc.Z,{trigger:"click",content:sw,overlayStyle:{width:"20vw"},children:(0,c.jsx)(b.Z,{icon:sA.Z,size:"md",variant:"secondary",className:"mt-4 ml-2",style:{border:"none"},onClick:()=>eN(!0)})})})]}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(G.Z,{className:"mr-2 max-h-[400px] min-h-[400px]",children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"line",defaultValue:"1",children:[(0,c.jsx)(ss.Z,{value:"1",children:"Avg. Latency per Token"}),(0,c.jsx)(ss.Z,{value:"2",children:"Time to first token"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("p",{className:"text-gray-500 italic",children:" (seconds/token)"}),(0,c.jsx)(k.Z,{className:"text-gray-500 italic mt-1 mb-1",children:"average Latency for successfull requests divided by the total tokens"}),H&&J&&(0,c.jsx)(tn.Z,{title:"Model Latency",className:"h-72",data:H,showLegend:!1,index:"date",categories:J,connectNulls:!0,customTooltip:sk})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(tm,{modelMetrics:$,modelMetricsCategories:X,customTooltip:sk,premiumUser:o})})]})]})})}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(G.Z,{className:"ml-2 max-h-[400px] min-h-[400px] overflow-y-auto",children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Deployment"}),(0,c.jsx)(sB.Z,{children:"Success Responses"}),(0,c.jsxs)(sB.Z,{children:["Slow Responses ",(0,c.jsx)("p",{children:"Success Responses taking 600+s"})]})]})}),(0,c.jsx)(sU.Z,{children:er.map((e,s)=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:e.api_base}),(0,c.jsx)(sq.Z,{children:e.total_count}),(0,c.jsx)(sq.Z,{children:e.slow_count})]},s))})]})})})]}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 w-full mt-2",children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(S.Z,{children:["All Exceptions for ",B]}),(0,c.jsx)(to.Z,{className:"h-60",data:es,index:"model",categories:el,stack:!0,yAxisWidth:30})]})}),(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full mt-2",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(S.Z,{children:["All Up Rate Limit Errors (429) for ",B]}),(0,c.jsxs)(y.Z,{numItems:1,children:[(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Num Rate Limit Errors ",ef.sum_num_rate_limit_exceptions]}),(0,c.jsx)(to.Z,{className:"h-40",data:ef.daily_data,index:"date",colors:["rose"],categories:["num_rate_limit_exceptions"],onValueChange:e=>console.log(e)})]}),(0,c.jsx)(v.Z,{})]})]}),o?(0,c.jsx)(c.Fragment,{children:ey.map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:e.api_base?e.api_base:"Unknown API Base"}),(0,c.jsx)(y.Z,{numItems:1,children:(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Num Rate Limit Errors (429) ",e.sum_num_rate_limit_exceptions]}),(0,c.jsx)(to.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["rose"],categories:["num_rate_limit_exceptions"],onValueChange:e=>console.log(e)})]})})]},s))}):(0,c.jsx)(c.Fragment,{children:ey&&ey.length>0&&ey.slice(0,1).map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"✨ Rate Limit Errors by Deployment"}),(0,c.jsx)("p",{className:"mb-2 text-gray-500 italic text-[12px]",children:"Upgrade to see exceptions for all deployments"}),(0,c.jsx)(b.Z,{variant:"primary",className:"mb-2",children:(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"Get Free Trial"})}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:e.api_base}),(0,c.jsx)(y.Z,{numItems:1,children:(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Num Rate Limit Errors ",e.sum_num_rate_limit_exceptions]}),(0,c.jsx)(to.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["rose"],categories:["num_rate_limit_exceptions"],onValueChange:e=>console.log(e)})]})})]})]},s))})]})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"flex items-center gap-4 mb-6",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(k.Z,{children:"Retry Policy Scope:"}),(0,c.jsxs)(e9.Z,{className:"ml-2 w-48",defaultValue:"global",value:"global"===B?"global":B||R[0],onValueChange:e=>K(e),children:[(0,c.jsx)(ei.Z,{value:"global",children:"Global Default"}),R.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,onClick:()=>K(e),children:e},s))]})]})}),"global"===B?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(S.Z,{children:"Global Retry Policy"}),(0,c.jsx)(k.Z,{className:"mb-6",children:"Default retry settings applied to all model groups unless overridden"})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(S.Z,{children:["Retry Policy for ",B]}),(0,c.jsx)(k.Z,{className:"mb-6",children:"Model-specific retry settings. Falls back to global defaults if not set."})]}),lS&&(0,c.jsx)("table",{children:(0,c.jsx)("tbody",{children:Object.entries(lS).map((e,s)=>{var t,l,a,r;let i,[n,o]=e;if("global"===B)i=null!==(t=null==eh?void 0:eh[o])&&void 0!==t?t:eg;else{let e=null==eu?void 0:null===(l=eu[B])||void 0===l?void 0:l[o];i=null!=e?e:null!==(a=null==eh?void 0:eh[o])&&void 0!==a?a:eg}return(0,c.jsxs)("tr",{className:"flex justify-between items-center mt-2",children:[(0,c.jsxs)("td",{children:[(0,c.jsx)(k.Z,{children:n}),"global"!==B&&(0,c.jsxs)(k.Z,{className:"text-xs text-gray-500 ml-2",children:["(Global: ",null!==(r=null==eh?void 0:eh[o])&&void 0!==r?r:eg,")"]})]}),(0,c.jsx)("td",{children:(0,c.jsx)(e8.Z,{className:"ml-5",value:i,min:0,step:1,onChange:e=>{"global"===B?ep(s=>null==e?s:{...null!=s?s:{},[o]:e}):ex(s=>{var t;let l=null!==(t=null==s?void 0:s[B])&&void 0!==t?t:{};return{...null!=s?s:{},[B]:{...l,[o]:e}}})}})})]},s)})})}),(0,c.jsx)(b.Z,{className:"mt-6 mr-8",onClick:sv,children:"Save"})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lk,{accessToken:s,initialModelGroupAlias:eP,onAliasUpdate:eL})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)("div",{className:"p-6",children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(S.Z,{children:"Price Data Management"}),(0,c.jsx)(k.Z,{className:"text-tremor-content",children:"Manage model pricing data and configure automatic reload schedules"})]}),(0,c.jsx)(lr,{accessToken:s,onReloadSuccess:()=>{(async()=>{p(await (0,j.modelCostMap)(s))})()},buttonText:"Reload Price Data",size:"middle",type:"primary",className:"w-full"})]})})]})]})]})})})},lI=e=>{let{visible:s,possibleUIRoles:t,onCancel:l,user:a,onSubmit:r}=e,[i,n]=(0,d.useState)(a),[o]=A.Z.useForm();(0,d.useEffect)(()=>{o.resetFields()},[a]);let m=async()=>{o.resetFields(),l()},u=async e=>{r(e),o.resetFields(),l()};return a?(0,c.jsx)(T.Z,{visible:s,onCancel:m,footer:null,title:"Edit User "+a.user_id,width:1e3,children:(0,c.jsx)(A.Z,{form:o,onFinish:u,initialValues:a,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"User Email",tooltip:"Email of the User",name:"user_email",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"user_id",name:"user_id",hidden:!0,children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"User Role",name:"user_role",children:(0,c.jsx)(I.default,{children:t&&Object.entries(t).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:"Spend (USD)",name:"spend",tooltip:"(float) - Spend of all LLM calls completed by this user",help:"Across all keys (including keys with team_id).",children:(0,c.jsx)(e8.Z,{min:0,step:.01})}),(0,c.jsx)(A.Z.Item,{label:"User Budget (USD)",name:"max_budget",tooltip:"(float) - Maximum budget of this user",help:"Maximum budget of this user.",children:(0,c.jsx)(O,{min:0,step:.01})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsx)(eE,{})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Save"})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Save"})})]})})}):null},lA=t(16853);function lT(e){let{userData:s,onCancel:t,onSubmit:l,teams:a,accessToken:r,userID:i,userRole:n,userModels:o,possibleUIRoles:m,isBulkEdit:u=!1}=e,[x]=A.Z.useForm();return d.useEffect(()=>{var e,t,l,a,r,i;x.setFieldsValue({user_id:s.user_id,user_email:null===(e=s.user_info)||void 0===e?void 0:e.user_email,user_role:null===(t=s.user_info)||void 0===t?void 0:t.user_role,models:(null===(l=s.user_info)||void 0===l?void 0:l.models)||[],max_budget:null===(a=s.user_info)||void 0===a?void 0:a.max_budget,budget_duration:null===(r=s.user_info)||void 0===r?void 0:r.budget_duration,metadata:(null===(i=s.user_info)||void 0===i?void 0:i.metadata)?JSON.stringify(s.user_info.metadata,null,2):void 0})},[s,x]),(0,c.jsxs)(A.Z,{form:x,onFinish:e=>{if(e.metadata&&"string"==typeof e.metadata)try{e.metadata=JSON.parse(e.metadata)}catch(e){console.error("Error parsing metadata JSON:",e);return}l(e)},layout:"vertical",children:[!u&&(0,c.jsx)(A.Z.Item,{label:"User ID",name:"user_id",children:(0,c.jsx)(_.Z,{disabled:!0})}),!u&&(0,c.jsx)(A.Z.Item,{label:"Email",name:"user_email",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Global Proxy Role"," ",(0,c.jsx)(B.Z,{title:"This is the role that the user will globally on the proxy. This role is independent of any team/org specific roles.",children:(0,c.jsx)(V.Z,{})})]}),name:"user_role",children:(0,c.jsx)(I.default,{children:m&&Object.entries(m).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Personal Models"," ",(0,c.jsx)(B.Z,{title:"Select which models this user can access outside of team-scope. Choose 'All Proxy Models' to grant access to all models available on the proxy.",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},disabled:!eI.ZL.includes(n||""),children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),(0,c.jsx)(I.default.Option,{value:"no-default-models",children:"No Default Models"},"no-default-models"),o.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsx)(eE,{})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(lA.Z,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",type:"button",onClick:t,children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})]})}let{Text:lE,Title:lP}=en.default;var lL=e=>{let{visible:s,onCancel:t,selectedUsers:l,possibleUIRoles:a,accessToken:r,onSuccess:i,teams:n,userRole:o,userModels:m,allowAllUsers:u=!1}=e,[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)([]),[f,v]=(0,d.useState)(null),[y,b]=(0,d.useState)(!1),[_,N]=(0,d.useState)(!1),Z=()=>{g([]),v(null),b(!1),N(!1),t()},w=d.useMemo(()=>({user_id:"bulk_edit",user_info:{user_email:"",user_role:"",teams:[],models:[],max_budget:null,spend:0,metadata:{},created_at:null,updated_at:null},keys:[],teams:n||[]}),[n,s]),k=async e=>{if(console.log("formValues",e),!r){eo.Z.fromBackend("Access token not found");return}h(!0);try{let s=l.map(e=>e.user_id),a={};e.user_role&&""!==e.user_role&&(a.user_role=e.user_role),null!==e.max_budget&&void 0!==e.max_budget&&(a.max_budget=e.max_budget),e.models&&e.models.length>0&&(a.models=e.models),e.budget_duration&&""!==e.budget_duration&&(a.budget_duration=e.budget_duration),e.metadata&&Object.keys(e.metadata).length>0&&(a.metadata=e.metadata);let n=Object.keys(a).length>0,o=y&&p.length>0;if(!n&&!o){eo.Z.fromBackend("Please modify at least one field or select teams to add users to");return}let c=[];if(n){if(_){let e=await (0,j.userBulkUpdateUserCall)(r,a,void 0,!0);c.push("Updated all users (".concat(e.total_requested," total)"))}else await (0,j.userBulkUpdateUserCall)(r,a,s),c.push("Updated ".concat(s.length," user(s)"))}if(o){let e=[];for(let s of p)try{let t=null;_?t=null:l.map(e=>({user_id:e.user_id,role:"user",user_email:e.user_email||null}));let a=await (0,j.teamBulkMemberAddCall)(r,s,t||null,f||void 0,_);console.log("result",a),e.push({teamId:s,success:!0,successfulAdditions:a.successful_additions,failedAdditions:a.failed_additions})}catch(t){console.error("Failed to add users to team ".concat(s,":"),t),e.push({teamId:s,success:!1,error:t})}let s=e.filter(e=>e.success),t=e.filter(e=>!e.success);if(s.length>0){let e=s.reduce((e,s)=>e+s.successfulAdditions,0);c.push("Added users to ".concat(s.length," team(s) (").concat(e," total additions)"))}t.length>0&&ty.ZP.warning("Failed to add users to ".concat(t.length," team(s)"))}c.length>0&&eo.Z.success(c.join(". ")),g([]),v(null),b(!1),N(!1),i(),t()}catch(e){console.error("Bulk operation failed:",e),eo.Z.fromBackend("Failed to perform bulk operations")}finally{h(!1)}};return(0,c.jsxs)(T.Z,{visible:s,onCancel:Z,footer:null,title:_?"Bulk Edit All Users":"Bulk Edit ".concat(l.length," User(s)"),width:800,children:[u&&(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsx)(eR.Z,{checked:_,onChange:e=>N(e.target.checked),children:(0,c.jsx)(lE,{strong:!0,children:"Update ALL users in the system"})}),_&&(0,c.jsx)("div",{style:{marginTop:8},children:(0,c.jsx)(lE,{type:"warning",style:{fontSize:"12px"},children:"⚠️ This will apply changes to ALL users in the system, not just the selected ones."})})]}),!_&&(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsxs)(lP,{level:5,children:["Selected Users (",l.length,"):"]}),(0,c.jsx)(em.Z,{size:"small",bordered:!0,dataSource:l,pagination:!1,scroll:{y:200},rowKey:"user_id",columns:[{title:"User ID",dataIndex:"user_id",key:"user_id",width:"30%",render:e=>(0,c.jsx)(lE,{strong:!0,style:{fontSize:"12px"},children:e.length>20?"".concat(e.slice(0,20),"..."):e})},{title:"Email",dataIndex:"user_email",key:"user_email",width:"25%",render:e=>(0,c.jsx)(lE,{type:"secondary",style:{fontSize:"12px"},children:e||"No email"})},{title:"Current Role",dataIndex:"user_role",key:"user_role",width:"25%",render:e=>{var s;return(0,c.jsx)(lE,{style:{fontSize:"12px"},children:(null==a?void 0:null===(s=a[e])||void 0===s?void 0:s.ui_label)||e})}},{title:"Budget",dataIndex:"max_budget",key:"max_budget",width:"20%",render:e=>(0,c.jsx)(lE,{style:{fontSize:"12px"},children:null!==e?"$".concat(e):"Unlimited"})}]})]}),(0,c.jsx)(K.Z,{}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsxs)(lE,{children:[(0,c.jsx)("strong",{children:"Instructions:"})," Fill in the fields below with the values you want to apply to all selected users. You can bulk edit: role, budget, models, and metadata. You can also add users to teams."]})}),(0,c.jsx)(tP.Z,{title:"Team Management",size:"small",className:"mb-4",style:{backgroundColor:"#fafafa"},children:(0,c.jsxs)(t9.Z,{direction:"vertical",style:{width:"100%"},children:[(0,c.jsx)(eR.Z,{checked:y,onChange:e=>b(e.target.checked),children:"Add selected users to teams"}),y&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(lE,{strong:!0,children:"Select Teams:"}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select teams to add users to",value:p,onChange:g,style:{width:"100%",marginTop:8},options:(null==n?void 0:n.map(e=>({label:e.team_alias||e.team_id,value:e.team_id})))||[]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(lE,{strong:!0,children:"Team Budget (Optional):"}),(0,c.jsx)(e8.Z,{placeholder:"Max budget per user in team",value:f,onChange:e=>v(e),style:{width:"100%",marginTop:8},min:0,step:.01,precision:2}),(0,c.jsx)(lE,{type:"secondary",style:{fontSize:"12px"},children:"Leave empty for unlimited budget within team limits"})]}),(0,c.jsx)(lE,{type:"secondary",style:{fontSize:"12px"},children:'Users will be added with "user" role by default. All users will be added to each selected team.'})]})]})}),(0,c.jsx)(lT,{userData:w,onCancel:Z,onSubmit:k,teams:n,accessToken:r,userID:"bulk_edit",userRole:o,userModels:m,possibleUIRoles:a,isBulkEdit:!0}),x&&(0,c.jsx)("div",{style:{textAlign:"center",marginTop:"10px"},children:(0,c.jsxs)(lE,{children:["Updating ",_?"all users":l.length," user(s)..."]})})]})};let lM=(e,s,t,l,a,r)=>{let i=[{header:"User ID",accessorKey:"user_id",cell:e=>{let{row:s}=e;return(0,c.jsx)(B.Z,{title:s.original.user_id,children:(0,c.jsx)("span",{className:"text-xs",children:s.original.user_id?"".concat(s.original.user_id.slice(0,7),"..."):"-"})})}},{header:"Email",accessorKey:"user_email",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.user_email||"-"})}},{header:"Global Proxy Role",accessorKey:"user_role",cell:s=>{var t;let{row:l}=s;return(0,c.jsx)("span",{className:"text-xs",children:(null==e?void 0:null===(t=e[l.original.user_role])||void 0===t?void 0:t.ui_label)||"-"})}},{header:"Spend (USD)",accessorKey:"spend",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.spend?eL(s.original.spend,4):"-"})}},{header:"Budget (USD)",accessorKey:"max_budget",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:null!==s.original.max_budget?s.original.max_budget:"Unlimited"})}},{header:()=>(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{children:"SSO ID"}),(0,c.jsx)(B.Z,{title:"SSO ID is the ID of the user in the SSO provider. If the user is not using SSO, this will be null.",children:(0,c.jsx)(li.Z,{className:"w-4 h-4"})})]}),accessorKey:"sso_user_id",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:null!==s.original.sso_user_id?s.original.sso_user_id:"-"})}},{header:"API Keys",accessorKey:"key_count",cell:e=>{let{row:s}=e;return(0,c.jsx)(y.Z,{numItems:2,children:s.original.key_count>0?(0,c.jsxs)(se.Z,{size:"xs",color:"indigo",children:[s.original.key_count," Keys"]}):(0,c.jsx)(se.Z,{size:"xs",color:"gray",children:"No Keys"})})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.created_at?new Date(s.original.created_at).toLocaleDateString():"-"})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.updated_at?new Date(s.original.updated_at).toLocaleDateString():"-"})}},{id:"actions",header:"",cell:e=>{let{row:s}=e;return(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(B.Z,{title:"Edit user details",zIndex:9999,children:(0,c.jsx)(sR.Z,{icon:s4.Z,size:"sm",onClick:()=>a(s.original.user_id,!0)})}),(0,c.jsx)(B.Z,{title:"Delete user",zIndex:9999,children:(0,c.jsx)(sR.Z,{icon:W.Z,size:"sm",onClick:()=>t(s.original.user_id)})}),(0,c.jsx)(B.Z,{title:"Reset Password",zIndex:9999,children:(0,c.jsx)(sR.Z,{icon:sn.Z,size:"sm",onClick:()=>l(s.original.user_id)})})]})}}];if(r){let{onSelectUser:e,onSelectAll:s,isUserSelected:t,isAllSelected:l,isIndeterminate:a}=r;return[{id:"select",header:()=>(0,c.jsx)(eR.Z,{indeterminate:a,checked:l,onChange:e=>s(e.target.checked),onClick:e=>e.stopPropagation()}),cell:s=>{let{row:l}=s;return(0,c.jsx)(eR.Z,{checked:t(l.original),onChange:s=>e(l.original,s.target.checked),onClick:e=>e.stopPropagation()})}},...i]}return i};function lO(e){var s,t,l,a,r,i,n,o,m,u,x,h,p,g,f,v,_,N,Z,w,C,I,A,T,E,L,M,O,D,F,R,z,U,q,V,B,K;let{userId:H,onClose:Y,accessToken:J,userRole:$,onDelete:Q,possibleUIRoles:X,initialTab:ee=0,startInEditMode:es=!1}=e,[et,el]=(0,d.useState)(null),[ea,er]=(0,d.useState)(!1),[ei,en]=(0,d.useState)(!0),[ed,em]=(0,d.useState)(es),[eu,ex]=(0,d.useState)([]),[eh,ep]=(0,d.useState)(!1),[eg,ej]=(0,d.useState)(null),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)(ee),[e_,eN]=(0,d.useState)({}),[eZ,ew]=(0,d.useState)(!1);d.useEffect(()=>{ev((0,j.getProxyBaseUrl)())},[]),d.useEffect(()=>{console.log("userId: ".concat(H,", userRole: ").concat($,", accessToken: ").concat(J)),(async()=>{try{if(!J)return;let e=await (0,j.userInfoCall)(J,H,$||"",!1,null,null,!0);el(e);let s=(await (0,j.modelAvailableCall)(J,H,$||"")).data.map(e=>e.id);ex(s)}catch(e){console.error("Error fetching user data:",e),eo.Z.fromBackend("Failed to fetch user data")}finally{en(!1)}})()},[J,H,$]);let ek=async()=>{if(!J){eo.Z.fromBackend("Access token not found");return}try{eo.Z.success("Generating password reset link...");let e=await (0,j.invitationCreateCall)(J,H);ej(e),ep(!0)}catch(e){eo.Z.fromBackend("Failed to generate password reset link")}},eS=async()=>{try{if(!J)return;await (0,j.userDeleteCall)(J,[H]),eo.Z.success("User deleted successfully"),Q&&Q(),Y()}catch(e){console.error("Error deleting user:",e),eo.Z.fromBackend("Failed to delete user")}},eC=async e=>{try{if(!J||!et)return;await (0,j.userUpdateUserCall)(J,e,null),el({...et,user_info:{...et.user_info,user_email:e.user_email,models:e.models,max_budget:e.max_budget,budget_duration:e.budget_duration,metadata:e.metadata}}),eo.Z.success("User updated successfully"),em(!1)}catch(e){console.error("Error updating user:",e),eo.Z.fromBackend("Failed to update user")}};if(ei)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:Y,className:"mb-4",children:"Back to Users"}),(0,c.jsx)(k.Z,{children:"Loading user data..."})]});if(!et)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:Y,className:"mb-4",children:"Back to Users"}),(0,c.jsx)(k.Z,{children:"User not found"})]});let eA=async(e,s)=>{await eM(e)&&(eN(e=>({...e,[s]:!0})),setTimeout(()=>{eN(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:Y,className:"mb-4",children:"Back to Users"}),(0,c.jsx)(S.Z,{children:(null===(s=et.user_info)||void 0===s?void 0:s.user_email)||"User"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:et.user_id}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:e_["user-id"]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>eA(et.user_id,"user-id"),className:"left-2 z-10 transition-all duration-200 ".concat(e_["user-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),$&&eI.LQ.includes($)&&(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)(b.Z,{icon:sn.Z,variant:"secondary",onClick:ek,className:"flex items-center",children:"Reset Password"}),(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>er(!0),className:"flex items-center",children:"Delete User"})]})]}),ea&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete User"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this user?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:eS,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>er(!1),children:"Cancel"})]})]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:ey,onIndexChange:eb,children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"}),(0,c.jsx)(ss.Z,{children:"Details"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Spend"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eL((null===(t=et.user_info)||void 0===t?void 0:t.spend)||0,4)]}),(0,c.jsxs)(k.Z,{children:["of"," ",(null===(l=et.user_info)||void 0===l?void 0:l.max_budget)!==null?"$".concat(eL(et.user_info.max_budget,4)):"Unlimited"]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Teams"}),(0,c.jsx)("div",{className:"mt-2",children:(null===(a=et.teams)||void 0===a?void 0:a.length)&&(null===(r=et.teams)||void 0===r?void 0:r.length)>0?(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[null===(i=et.teams)||void 0===i?void 0:i.slice(0,eZ?et.teams.length:20).map((e,s)=>(0,c.jsx)(se.Z,{color:"blue",title:e.team_alias,children:e.team_alias},s)),!eZ&&(null===(n=et.teams)||void 0===n?void 0:n.length)>20&&(0,c.jsxs)(se.Z,{color:"gray",className:"cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!0),children:["+",et.teams.length-20," more"]}),eZ&&(null===(o=et.teams)||void 0===o?void 0:o.length)>20&&(0,c.jsx)(se.Z,{color:"gray",className:"cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!1),children:"Show Less"})]}):(0,c.jsx)(k.Z,{children:"No teams"})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"API Keys"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsxs)(k.Z,{children:[(null===(m=et.keys)||void 0===m?void 0:m.length)||0," keys"]})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Personal Models"}),(0,c.jsx)("div",{className:"mt-2",children:(null===(x=et.user_info)||void 0===x?void 0:null===(u=x.models)||void 0===u?void 0:u.length)&&(null===(p=et.user_info)||void 0===p?void 0:null===(h=p.models)||void 0===h?void 0:h.length)>0?null===(f=et.user_info)||void 0===f?void 0:null===(g=f.models)||void 0===g?void 0:g.map((e,s)=>(0,c.jsx)(k.Z,{children:e},s)):(0,c.jsx)(k.Z,{children:"All proxy models"})})]})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"User Settings"}),!ed&&$&&eI.LQ.includes($)&&(0,c.jsx)(b.Z,{variant:"light",onClick:()=>em(!0),children:"Edit Settings"})]}),ed&&et?(0,c.jsx)(lT,{userData:et,onCancel:()=>em(!1),onSubmit:eC,teams:et.teams,accessToken:J,userID:H,userRole:$,userModels:eu,possibleUIRoles:X}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"User ID"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"font-mono",children:et.user_id}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:e_["user-id"]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>eA(et.user_id,"user-id"),className:"left-2 z-10 transition-all duration-200 ".concat(e_["user-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Email"}),(0,c.jsx)(k.Z,{children:(null===(v=et.user_info)||void 0===v?void 0:v.user_email)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Global Proxy Role"}),(0,c.jsx)(k.Z,{children:(null===(_=et.user_info)||void 0===_?void 0:_.user_role)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created"}),(0,c.jsx)(k.Z,{children:(null===(N=et.user_info)||void 0===N?void 0:N.created_at)?new Date(et.user_info.created_at).toLocaleString():"Unknown"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)(k.Z,{children:(null===(Z=et.user_info)||void 0===Z?void 0:Z.updated_at)?new Date(et.user_info.updated_at).toLocaleString():"Unknown"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Teams"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:(null===(w=et.teams)||void 0===w?void 0:w.length)&&(null===(C=et.teams)||void 0===C?void 0:C.length)>0?(0,c.jsxs)(c.Fragment,{children:[null===(I=et.teams)||void 0===I?void 0:I.slice(0,eZ?et.teams.length:20).map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",title:e.team_alias||e.team_id,children:e.team_alias||e.team_id},s)),!eZ&&(null===(A=et.teams)||void 0===A?void 0:A.length)>20&&(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded text-xs cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!0),children:["+",et.teams.length-20," more"]}),eZ&&(null===(T=et.teams)||void 0===T?void 0:T.length)>20&&(0,c.jsx)("span",{className:"px-2 py-1 bg-gray-100 rounded text-xs cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!1),children:"Show Less"})]}):(0,c.jsx)(k.Z,{children:"No teams"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Personal Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:(null===(L=et.user_info)||void 0===L?void 0:null===(E=L.models)||void 0===E?void 0:E.length)&&(null===(O=et.user_info)||void 0===O?void 0:null===(M=O.models)||void 0===M?void 0:M.length)>0?null===(F=et.user_info)||void 0===F?void 0:null===(D=F.models)||void 0===D?void 0:D.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:e},s)):(0,c.jsx)(k.Z,{children:"All proxy models"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"API Keys"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:(null===(R=et.keys)||void 0===R?void 0:R.length)&&(null===(z=et.keys)||void 0===z?void 0:z.length)>0?et.keys.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-green-100 rounded text-xs",children:e.key_alias||e.token},s)):(0,c.jsx)(k.Z,{children:"No API keys"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Max Budget"}),(0,c.jsx)(k.Z,{children:(null===(U=et.user_info)||void 0===U?void 0:U.max_budget)!==null&&(null===(q=et.user_info)||void 0===q?void 0:q.max_budget)!==void 0?"$".concat(eL(et.user_info.max_budget,4)):"Unlimited"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Budget Reset"}),(0,c.jsx)(k.Z,{children:eT(null!==(K=null===(V=et.user_info)||void 0===V?void 0:V.budget_duration)&&void 0!==K?K:null)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Metadata"}),(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify((null===(B=et.user_info)||void 0===B?void 0:B.metadata)||{},null,2)})]})]})]})})]})]}),(0,c.jsx)(ec,{isInvitationLinkModalVisible:eh,setIsInvitationLinkModalVisible:ep,baseUrl:ef||"",invitationLinkData:eg,modalType:"resetPassword"})]})}function lD(e){let{data:s=[],columns:t,isLoading:l=!1,onSortChange:a,currentSort:r,accessToken:i,userRole:n,possibleUIRoles:o,handleEdit:m,handleDelete:u,handleResetPassword:x,selectedUsers:h=[],onSelectionChange:p,enableSelection:g=!1,filters:j,updateFilters:f,initialFilters:v,teams:y,userListResponse:b,currentPage:_,handlePageChange:N}=e,[Z,w]=d.useState([{id:(null==r?void 0:r.sortBy)||"created_at",desc:(null==r?void 0:r.sortOrder)==="desc"}]),[k,S]=d.useState(null),[C,I]=d.useState(!1),[A,T]=d.useState(!1),E=function(e){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];S(e),I(s)},P=(e,s)=>{p&&(s?p([...h,e]):p(h.filter(s=>s.user_id!==e.user_id)))},L=e=>{p&&(e?p(s):p([]))},M=e=>h.some(s=>s.user_id===e.user_id),O=s.length>0&&h.length===s.length,D=h.length>0&&h.lengtho?lM(o,m,u,x,E,g?{selectedUsers:h,onSelectUser:P,onSelectAll:L,isUserSelected:M,isAllSelected:O,isIndeterminate:D}:void 0):t,[o,m,u,x,E,t,g,h,O,D]),R=(0,sD.b7)({data:s,columns:F,state:{sorting:Z},onSortingChange:e=>{if(w(e),e.length>0){let s=e[0],t=s.id,l=s.desc?"desc":"asc";null==a||a(t,l)}},getCoreRowModel:(0,sF.sC)(),getSortedRowModel:(0,sF.tj)(),enableSorting:!0});return(d.useEffect(()=>{r&&w([{id:r.sortBy,desc:"desc"===r.sortOrder}])},[r]),k)?(0,c.jsx)(lO,{userId:k,onClose:()=>{S(null),I(!1)},accessToken:i,userRole:n,possibleUIRoles:o,initialTab:C?1:0,startInEditMode:C}):(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsx)("div",{className:"border-b px-6 py-4",children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search by email...",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:j.email,onChange:e=>f({email:e.target.value})}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 ".concat(A?"bg-gray-100":""),onClick:()=>T(!A),children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filters",(j.user_id||j.user_role||j.team)&&(0,c.jsx)("span",{className:"w-2 h-2 rounded-full bg-blue-500"})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",onClick:()=>{f(v)},children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Reset Filters"]})]}),A&&(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Filter by User ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:j.user_id,onChange:e=>f({user_id:e.target.value})}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})]}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsx)(e9.Z,{value:j.user_role,onValueChange:e=>f({user_role:e}),placeholder:"Select Role",children:o&&Object.entries(o).map(e=>{let[s,t]=e;return(0,c.jsx)(ei.Z,{value:s,children:t.ui_label},s)})})}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsx)(e9.Z,{value:j.team,onValueChange:e=>f({team:e}),placeholder:"Select Team",children:null==y?void 0:y.map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:e.team_alias||e.team_id},e.team_id))})}),(0,c.jsx)("div",{className:"relative w-64",children:(0,c.jsx)("input",{type:"text",placeholder:"Filter by SSO ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:j.sso_user_id,onChange:e=>f({sso_user_id:e.target.value})})})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Showing"," ",b&&b.users&&b.users.length>0?(b.page-1)*b.page_size+1:0," ","-"," ",b&&b.users?Math.min(b.page*b.page_size,b.total):0," ","of ",b?b.total:0," results"]}),(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>N(_-1),disabled:1===_,className:"px-3 py-1 text-sm border rounded-md ".concat(1===_?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Previous"}),(0,c.jsx)("button",{onClick:()=>N(_+1),disabled:!b||_>=b.total_pages,className:"px-3 py-1 text-sm border rounded-md ".concat(!b||_>=b.total_pages?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Next"})]})]})]})}),(0,c.jsx)("div",{className:"overflow-auto",children:(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sz.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sV.Z,{children:R.getHeaderGroups().map(e=>(0,c.jsx)(sK.Z,{children:e.headers.map(e=>(0,c.jsx)(sB.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sD.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sv.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sU.Z,{children:l?(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sq.Z,{colSpan:F.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"\uD83D\uDE85 Loading users..."})})})}):s.length>0?R.getRowModel().rows.map(e=>(0,c.jsx)(sK.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sq.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:()=>{"user_id"===e.column.id&&E(e.getValue(),!1)},style:{cursor:"user_id"===e.column.id?"pointer":"default",color:"user_id"===e.column.id?"#3b82f6":"inherit"},children:(0,sD.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sq.Z,{colSpan:F.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No users found"})})})})})]})})})})]})}var lF=t(67982),lR=e=>{var s;let{accessToken:t,possibleUIRoles:l,userID:a,userRole:r}=e,[i,n]=(0,d.useState)(!0),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)({}),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)([]),{Paragraph:N}=en.default,{Option:Z}=I.default;(0,d.useEffect)(()=>{(async()=>{if(!t){n(!1);return}try{let e=await (0,j.getInternalUserSettings)(t);if(m(e),p(e.values||{}),t)try{let e=await (0,j.modelAvailableCall)(t,a,r);if(e&&e.data){let s=e.data.map(e=>e.id);y(s)}}catch(e){console.error("Error fetching available models:",e)}}catch(e){console.error("Error fetching SSO settings:",e),eo.Z.fromBackend("Failed to fetch SSO settings")}finally{n(!1)}})()},[t]);let w=async()=>{if(t){f(!0);try{let e=Object.entries(h).reduce((e,s)=>{let[t,l]=s;return e[t]=""===l?null:l,e},{}),s=await (0,j.updateInternalUserSettings)(t,e);m({...o,values:s.settings}),x(!1)}catch(e){console.error("Error updating SSO settings:",e),eo.Z.fromBackend("Failed to update settings: "+e)}finally{f(!1)}}},C=(e,s)=>{p(t=>({...t,[e]:s}))},A=e=>e&&Array.isArray(e)?e.map(e=>"string"==typeof e?{team_id:e,user_role:"user"}:"object"==typeof e&&e.team_id?{team_id:e.team_id,max_budget_in_team:e.max_budget_in_team,user_role:e.user_role||"user"}:{team_id:"",user_role:"user"}):[],T=e=>{let s=A(e),t=(e,t,l)=>{let a=[...s];a[e]={...a[e],[t]:l},C("teams",a)},l=e=>{C("teams",s.filter((s,t)=>t!==e))};return(0,c.jsxs)("div",{className:"space-y-3",children:[s.map((e,s)=>(0,c.jsxs)("div",{className:"border rounded-lg p-4 bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["Team ",s+1]}),(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",icon:ep.Z,onClick:()=>l(s),className:"text-red-500 hover:text-red-700",children:"Remove"})]}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-1",children:"Team ID"}),(0,c.jsx)(_.Z,{value:e.team_id,onChange:e=>t(s,"team_id",e.target.value),placeholder:"Enter team ID"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-1",children:"Max Budget in Team"}),(0,c.jsx)(e8.Z,{style:{width:"100%"},value:e.max_budget_in_team,onChange:e=>t(s,"max_budget_in_team",e),placeholder:"Optional",min:0,step:.01,precision:2})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-1",children:"User Role"}),(0,c.jsxs)(I.default,{style:{width:"100%"},value:e.user_role,onChange:e=>t(s,"user_role",e),children:[(0,c.jsx)(Z,{value:"user",children:"User"}),(0,c.jsx)(Z,{value:"admin",children:"Admin"})]})]})]})]},s)),(0,c.jsx)(b.Z,{variant:"secondary",icon:tI.Z,onClick:()=>{C("teams",[...s,{team_id:"",user_role:"user"}])},className:"w-full",children:"Add Team"})]})},E=(e,s,t)=>{var a;let r=s.type;if("teams"===e)return(0,c.jsx)("div",{className:"mt-2",children:T(h[e]||[])});if("user_role"===e&&l)return(0,c.jsx)(I.default,{style:{width:"100%"},value:h[e]||"",onChange:s=>C(e,s),className:"mt-2",children:Object.entries(l).filter(e=>{let[s]=e;return s.includes("internal_user")}).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(Z,{value:s,children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("span",{children:t}),(0,c.jsx)("span",{className:"ml-2 text-xs text-gray-500",children:l})]})},s)})});if("budget_duration"===e)return(0,c.jsx)(eE,{value:h[e]||null,onChange:s=>C(e,s),className:"mt-2"});if("boolean"===r)return(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(eJ.Z,{checked:!!h[e],onChange:s=>C(e,s)})});if("array"===r&&(null===(a=s.items)||void 0===a?void 0:a.enum))return(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},value:h[e]||[],onChange:s=>C(e,s),className:"mt-2",children:s.items.enum.map(e=>(0,c.jsx)(Z,{value:e,children:e},e))});if("models"===e)return(0,c.jsxs)(I.default,{mode:"multiple",style:{width:"100%"},value:h[e]||[],onChange:s=>C(e,s),className:"mt-2",children:[(0,c.jsx)(Z,{value:"no-default-models",children:"No Default Models"}),v.map(e=>(0,c.jsx)(Z,{value:e,children:F(e)},e))]});if("string"===r&&s.enum)return(0,c.jsx)(I.default,{style:{width:"100%"},value:h[e]||"",onChange:s=>C(e,s),className:"mt-2",children:s.enum.map(e=>(0,c.jsx)(Z,{value:e,children:e},e))});else return(0,c.jsx)(_.Z,{value:void 0!==h[e]?String(h[e]):"",onChange:s=>C(e,s.target.value),placeholder:s.description||"",className:"mt-2"})},P=(e,s)=>{if(null==s)return(0,c.jsx)("span",{className:"text-gray-400",children:"Not set"});if("teams"===e&&Array.isArray(s)){if(0===s.length)return(0,c.jsx)("span",{className:"text-gray-400",children:"No teams assigned"});let e=A(s);return(0,c.jsx)("div",{className:"space-y-2 mt-1",children:e.map((e,s)=>(0,c.jsx)("div",{className:"border rounded-lg p-3 bg-white",children:(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-2 text-sm",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium text-gray-600",children:"Team ID:"}),(0,c.jsx)("p",{className:"text-gray-900",children:e.team_id||"Not specified"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium text-gray-600",children:"Max Budget:"}),(0,c.jsx)("p",{className:"text-gray-900",children:void 0!==e.max_budget_in_team?"$".concat(eL(e.max_budget_in_team,4)):"No limit"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium text-gray-600",children:"Role:"}),(0,c.jsx)("p",{className:"text-gray-900 capitalize",children:e.user_role})]})]})},s))})}if("user_role"===e&&l&&l[s]){let{ui_label:e,description:t}=l[s];return(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium",children:e}),t&&(0,c.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:t})]})}return"budget_duration"===e?(0,c.jsx)("span",{children:eT(s)}):"boolean"==typeof s?(0,c.jsx)("span",{children:s?"Enabled":"Disabled"}):"models"===e&&Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:F(e)},s))}):"object"==typeof s?Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:"object"==typeof e?JSON.stringify(e):String(e)},s))}):(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify(s,null,2)}):(0,c.jsx)("span",{children:String(s)})};return i?(0,c.jsx)("div",{className:"flex justify-center items-center h-64",children:(0,c.jsx)(eF.Z,{size:"large"})}):o?(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Default User Settings"}),!i&&o&&(u?(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{x(!1),p(o.values||{})},disabled:g,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:w,loading:g,children:"Save Changes"})]}):(0,c.jsx)(b.Z,{onClick:()=>x(!0),children:"Edit Settings"}))]}),(null==o?void 0:null===(s=o.field_schema)||void 0===s?void 0:s.description)&&(0,c.jsx)(N,{className:"mb-4",children:o.field_schema.description}),(0,c.jsx)(lF.Z,{}),(0,c.jsx)("div",{className:"mt-4 space-y-4",children:(()=>{let{values:e,field_schema:s}=o;return s&&s.properties?Object.entries(s.properties).map(s=>{let[t,l]=s,a=e[t],r=t.replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase());return(0,c.jsxs)("div",{className:"mb-6 pb-6 border-b border-gray-200 last:border-0",children:[(0,c.jsx)(k.Z,{className:"font-medium text-lg",children:r}),(0,c.jsx)(N,{className:"text-sm text-gray-500 mt-1",children:l.description||"No description available"}),u?(0,c.jsx)("div",{className:"mt-2",children:E(t,l,a)}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:P(t,a)})]},t)}):(0,c.jsx)(k.Z,{children:"No schema information available"})})()})]}):(0,c.jsx)(G.Z,{children:(0,c.jsx)(k.Z,{children:"No settings available or you do not have permission to view them."})})},lz=t(19616);let lU={email:"",user_id:"",user_role:"",sso_user_id:"",team:"",model:"",min_spend:null,max_spend:null,sort_by:"created_at",sort_order:"desc"};var lq=e=>{var s;let{accessToken:t,token:l,userRole:a,userID:r,teams:i}=e,n=(0,h.NL)(),[o,m]=(0,d.useState)(1),[u,x]=(0,d.useState)(!1),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(!1),[y,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)("users"),[w,k]=(0,d.useState)(lU),[S,C,I]=(0,lz.G)(w,{wait:300}),[A,T]=(0,d.useState)(!1),[E,P]=(0,d.useState)(null),[L,M]=(0,d.useState)(null),[O,D]=(0,d.useState)([]),[F,R]=(0,d.useState)(!1),[z,U]=(0,d.useState)(!1),[q,V]=(0,d.useState)([]),B=e=>{_(e),v(!0)};(0,d.useEffect)(()=>()=>{I.cancel()},[I]),(0,d.useEffect)(()=>{M((0,j.getProxyBaseUrl)())},[]),(0,d.useEffect)(()=>{(async()=>{try{if(!r||!a||!t)return;let e=(await (0,j.modelAvailableCall)(t,r,a)).data.map(e=>e.id);console.log("available_model_names:",e),V(e)}catch(e){console.error("Error fetching user models:",e)}})()},[t,r,a]);let K=e=>{k(s=>{let t={...s,...e};return C(t),t})},G=async e=>{if(!t){eo.Z.fromBackend("Access token not found");return}try{eo.Z.success("Generating password reset link...");let s=await (0,j.invitationCreateCall)(t,e);P(s),T(!0)}catch(e){eo.Z.fromBackend("Failed to generate password reset link")}},H=async()=>{if(y&&t)try{await (0,j.userDeleteCall)(t,[y]),n.setQueriesData({queryKey:["userList"]},e=>{if(void 0===e)return e;let s=e.users.filter(e=>e.user_id!==y);return{...e,users:s}}),eo.Z.success("User deleted successfully")}catch(e){console.error("Error deleting user:",e),eo.Z.fromBackend("Failed to delete user")}v(!1),_(null)},Y=async()=>{g(null),x(!1)},J=async e=>{if(console.log("inside handleEditSubmit:",e),t&&l&&a&&r){try{let s=await (0,j.userUpdateUserCall)(t,e,null);n.setQueriesData({queryKey:["userList"]},e=>{if(void 0===e)return e;let t=e.users.map(e=>e.user_id===s.data.user_id?eP(e,s.data):e);return{...e,users:t}}),eo.Z.success("User ".concat(e.user_id," updated successfully"))}catch(e){console.error("There was an error updating the user",e)}g(null),x(!1)}},W=async e=>{m(e)},$=(0,sE.a)({queryKey:["userList",{debouncedFilter:S,currentPage:o}],queryFn:async()=>{if(!t)throw Error("Access token required");return await (0,j.userListCall)(t,S.user_id?[S.user_id]:null,o,25,S.email||null,S.user_role||null,S.team||null,S.sso_user_id||null,S.sort_by,S.sort_order)},enabled:!!(t&&l&&a&&r),placeholderData:e=>e}),Q=$.data,X=(0,sE.a)({queryKey:["userRoles"],initialData:()=>({}),queryFn:async()=>{if(!t)throw Error("Access token required");return await (0,j.getPossibleUserRoles)(t)},enabled:!!(t&&l&&a&&r)}).data;if($.isLoading||!t||!l||!a||!r)return(0,c.jsx)("div",{children:"Loading..."});let ee=lM(X,e=>{g(e),x(!0)},B,G,()=>{});return(0,c.jsxs)("div",{className:"w-full p-8 overflow-hidden",children:[(0,c.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,c.jsxs)("div",{className:"flex space-x-3",children:[(0,c.jsx)(ek,{userID:r,accessToken:t,teams:i,possibleUIRoles:X}),(0,c.jsx)(b.Z,{onClick:()=>{U(!z),D([])},variant:z?"primary":"secondary",className:"flex items-center",children:z?"Cancel Selection":"Select Users"}),z&&(0,c.jsxs)(b.Z,{onClick:()=>{if(0===O.length){eo.Z.fromBackend("Please select users to edit");return}R(!0)},disabled:0===O.length,className:"flex items-center",children:["Bulk Edit (",O.length," selected)"]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:0,onIndexChange:e=>Z(0===e?"users":"settings"),children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Users"}),(0,c.jsx)(ss.Z,{children:"Default User Settings"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lD,{data:(null===(s=$.data)||void 0===s?void 0:s.users)||[],columns:ee,isLoading:$.isLoading,accessToken:t,userRole:a,onSortChange:(e,s)=>{K({sort_by:e,sort_order:s})},currentSort:{sortBy:w.sort_by,sortOrder:w.sort_order},possibleUIRoles:X,handleEdit:e=>{g(e),x(!0)},handleDelete:B,handleResetPassword:G,enableSelection:z,selectedUsers:O,onSelectionChange:e=>{D(e)},filters:w,updateFilters:K,initialFilters:lU,teams:i,userListResponse:Q,currentPage:o,handlePageChange:W})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lR,{accessToken:t,possibleUIRoles:X,userID:r,userRole:a})})]})]}),(0,c.jsx)(lI,{visible:u,possibleUIRoles:X,onCancel:Y,user:p,onSubmit:J}),f&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete User"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this user?"}),(0,c.jsxs)("p",{className:"text-sm font-medium text-gray-900 mt-2",children:["User ID: ",y]})]})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:H,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{v(!1),_(null)},children:"Cancel"})]})]})]})}),(0,c.jsx)(ec,{isInvitationLinkModalVisible:A,setIsInvitationLinkModalVisible:T,baseUrl:L||"",invitationLinkData:E,modalType:"resetPassword"}),(0,c.jsx)(lL,{visible:F,onCancel:()=>R(!1),selectedUsers:O,possibleUIRoles:X,accessToken:t,onSuccess:()=>{n.invalidateQueries({queryKey:["userList"]}),D([]),U(!1)},teams:i,userRole:a,userModels:q,allowAllUsers:!!a&&(0,eI.tY)(a)})]})},lV=e=>{var s;let{accessToken:t,userID:l,userRole:a}=e,[r,i]=(0,d.useState)(!0),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)({}),[p,g]=(0,d.useState)(!1),[f,v]=(0,d.useState)([]),{Paragraph:y}=en.default,{Option:N}=I.default;(0,d.useEffect)(()=>{(async()=>{if(!t){i(!1);return}try{let e=await (0,j.getDefaultTeamSettings)(t);if(o(e),h(e.values||{}),t)try{let e=await (0,j.modelAvailableCall)(t,l,a);if(e&&e.data){let s=e.data.map(e=>e.id);v(s)}}catch(e){console.error("Error fetching available models:",e)}}catch(e){console.error("Error fetching team SSO settings:",e),eo.Z.fromBackend("Failed to fetch team settings")}finally{i(!1)}})()},[t]);let Z=async()=>{if(t){g(!0);try{let e=await (0,j.updateDefaultTeamSettings)(t,x);o({...n,values:e.settings}),u(!1),eo.Z.success("Default team settings updated successfully")}catch(e){console.error("Error updating team settings:",e),eo.Z.fromBackend("Failed to update team settings")}finally{g(!1)}}},w=(e,s)=>{h(t=>({...t,[e]:s}))},C=(e,s,t)=>{var l;let a=s.type;return"budget_duration"===e?(0,c.jsx)(eE,{value:x[e]||null,onChange:s=>w(e,s),className:"mt-2"}):"boolean"===a?(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(eJ.Z,{checked:!!x[e],onChange:s=>w(e,s)})}):"array"===a&&(null===(l=s.items)||void 0===l?void 0:l.enum)?(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},value:x[e]||[],onChange:s=>w(e,s),className:"mt-2",children:s.items.enum.map(e=>(0,c.jsx)(N,{value:e,children:e},e))}):"models"===e?(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},value:x[e]||[],onChange:s=>w(e,s),className:"mt-2",children:f.map(e=>(0,c.jsx)(N,{value:e,children:F(e)},e))}):"string"===a&&s.enum?(0,c.jsx)(I.default,{style:{width:"100%"},value:x[e]||"",onChange:s=>w(e,s),className:"mt-2",children:s.enum.map(e=>(0,c.jsx)(N,{value:e,children:e},e))}):(0,c.jsx)(_.Z,{value:void 0!==x[e]?String(x[e]):"",onChange:s=>w(e,s.target.value),placeholder:s.description||"",className:"mt-2"})},A=(e,s)=>null==s?(0,c.jsx)("span",{className:"text-gray-400",children:"Not set"}):"budget_duration"===e?(0,c.jsx)("span",{children:eT(s)}):"boolean"==typeof s?(0,c.jsx)("span",{children:s?"Enabled":"Disabled"}):"models"===e&&Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:F(e)},s))}):"object"==typeof s?Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:"object"==typeof e?JSON.stringify(e):String(e)},s))}):(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify(s,null,2)}):(0,c.jsx)("span",{children:String(s)});return r?(0,c.jsx)("div",{className:"flex justify-center items-center h-64",children:(0,c.jsx)(eF.Z,{size:"large"})}):n?(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{className:"text-xl",children:"Default Team Settings"}),!r&&n&&(m?(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{u(!1),h(n.values||{})},disabled:p,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:Z,loading:p,children:"Save Changes"})]}):(0,c.jsx)(b.Z,{onClick:()=>u(!0),children:"Edit Settings"}))]}),(0,c.jsx)(k.Z,{children:"These settings will be applied by default when creating new teams."}),(null==n?void 0:null===(s=n.field_schema)||void 0===s?void 0:s.description)&&(0,c.jsx)(y,{className:"mb-4 mt-2",children:n.field_schema.description}),(0,c.jsx)(lF.Z,{}),(0,c.jsx)("div",{className:"mt-4 space-y-4",children:(()=>{let{values:e,field_schema:s}=n;return s&&s.properties?Object.entries(s.properties).map(s=>{let[t,l]=s,a=e[t],r=t.replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase());return(0,c.jsxs)("div",{className:"mb-6 pb-6 border-b border-gray-200 last:border-0",children:[(0,c.jsx)(k.Z,{className:"font-medium text-lg",children:r}),(0,c.jsx)(y,{className:"text-sm text-gray-500 mt-1",children:l.description||"No description available"}),m?(0,c.jsx)("div",{className:"mt-2",children:C(t,l,a)}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:A(t,a)})]},t)}):(0,c.jsx)(k.Z,{children:"No schema information available"})})()})]}):(0,c.jsx)(G.Z,{children:(0,c.jsx)(k.Z,{children:"No team settings available or you do not have permission to view them."})})},lB=e=>{let{accessToken:s,userID:t}=e,[l,a]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{if(s&&t)try{let e=await (0,j.availableTeamListCall)(s);a(e)}catch(e){console.error("Error fetching available teams:",e)}})()},[s,t]);let r=async e=>{if(s&&t)try{await (0,j.teamMemberAddCall)(s,e,{user_id:t,role:"user"}),eo.Z.success("Successfully joined team"),a(s=>s.filter(s=>s.team_id!==e))}catch(e){console.error("Error joining team:",e),eo.Z.fromBackend("Failed to join team")}};return(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Team Name"}),(0,c.jsx)(sB.Z,{children:"Description"}),(0,c.jsx)(sB.Z,{children:"Members"}),(0,c.jsx)(sB.Z,{children:"Models"}),(0,c.jsx)(sB.Z,{children:"Actions"})]})}),(0,c.jsxs)(sU.Z,{children:[l.map(e=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{children:e.team_alias})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{children:e.description||"No description available"})}),(0,c.jsx)(sq.Z,{children:(0,c.jsxs)(k.Z,{children:[e.members_with_roles.length," members"]})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)("div",{className:"flex flex-col",children:e.models&&0!==e.models.length?e.models.map((e,s)=>(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(e.slice(0,30),"..."):e})},s)):(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})})})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(b.Z,{size:"xs",variant:"secondary",onClick:()=>r(e.team_id),children:"Join Team"})})]},e.team_id)),0===l.length&&(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sq.Z,{colSpan:5,className:"text-center",children:(0,c.jsx)(k.Z,{children:"No available teams to join"})})})]})]})})},lK=t(76865);let lG=(e,s)=>{let t=[];return e&&e.models.length>0?(console.log("organization.models: ".concat(e.models)),t=e.models):t=s,R(t,s)};var lH=e=>{let{teams:s,searchParams:t,accessToken:l,setTeams:a,userID:r,userRole:i,organizations:n,premiumUser:o=!1}=e,[m,u]=(0,d.useState)(""),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[S,C]=(0,d.useState)(!1),[E,M]=(0,d.useState)({team_id:"",team_alias:"",organization_id:"",sort_by:"created_at",sort_order:"desc"});(0,d.useEffect)(()=>{console.log("inside useeffect - ".concat(m)),l&&f(l,r,i,x,a),eW()},[m]);let[R]=A.Z.useForm(),[z]=A.Z.useForm(),{Title:q,Paragraph:K}=en.default,[H,Y]=(0,d.useState)(""),[J,$]=(0,d.useState)(!1),[Q,X]=(0,d.useState)(null),[ee,es]=(0,d.useState)(null),[et,el]=(0,d.useState)(!1),[ea,ec]=(0,d.useState)(!1),[ed,em]=(0,d.useState)(!1),[eu,ex]=(0,d.useState)(!1),[eh,ep]=(0,d.useState)([]),[eg,ej]=(0,d.useState)(!1),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)([]),[e_,eN]=(0,d.useState)({}),[eZ,ew]=(0,d.useState)([]),[ek,eS]=(0,d.useState)({}),[eC,eA]=(0,d.useState)([]),[eT,eE]=(0,d.useState)([]),[eM,eO]=(0,d.useState)(!1),[eF,eR]=(0,d.useState)(""),[eq,eV]=(0,d.useState)({});(0,d.useEffect)(()=>{console.log("currentOrgForCreateTeam: ".concat(p));let e=lG(p,eh);console.log("models: ".concat(e)),eb(e),R.setFieldValue("models",[])},[p,eh]),(0,d.useEffect)(()=>{(async()=>{try{if(null==l)return;let e=(await (0,j.getGuardrailsList)(l)).guardrails.map(e=>e.guardrail_name);ew(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})()},[l]);let eB=async()=>{try{if(null==l)return;let e=await (0,j.fetchMCPAccessGroups)(l);eE(e)}catch(e){console.error("Failed to fetch MCP access groups:",e)}};(0,d.useEffect)(()=>{eB()},[l]),(0,d.useEffect)(()=>{s&&eN(s.reduce((e,s)=>(e[s.team_id]={keys:s.keys||[],team_info:{members_with_roles:s.members_with_roles||[]}},e),{}))},[s]);let eK=async e=>{ev(e),ej(!0)},eG=async()=>{if(null!=ef&&null!=s&&null!=l){try{await (0,j.teamDeleteCall)(l,ef),f(l,r,i,x,a)}catch(e){console.error("Error deleting the team:",e)}ej(!1),ev(null)}},eH=()=>{ej(!1),ev(null)};(0,d.useEffect)(()=>{(async()=>{try{if(null===r||null===i||null===l)return;let e=await D(r,i,l);e&&ep(e)}catch(e){console.error("Error fetching user models:",e)}})()},[l,r,i,s]);let eJ=async e=>{try{if(console.log("formValues: ".concat(JSON.stringify(e))),null!=l){var t,r,i;let n=null==e?void 0:e.team_alias,o=null!==(i=null==s?void 0:s.map(e=>e.team_alias))&&void 0!==i?i:[],c=(null==e?void 0:e.organization_id)||(null==x?void 0:x.organization_id);if(""===c||"string"!=typeof c?e.organization_id=null:e.organization_id=c.trim(),o.includes(n))throw Error("Team alias ".concat(n," already exists, please pick another alias"));if(eo.Z.info("Creating Team"),eC.length>0){let s={};if(e.metadata)try{s=JSON.parse(e.metadata)}catch(e){console.warn("Invalid JSON in metadata field, starting with empty object")}s={...s,logging:eC.filter(e=>e.callback_name)},e.metadata=JSON.stringify(s)}if(e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0||e.allowed_mcp_servers_and_groups&&((null===(t=e.allowed_mcp_servers_and_groups.servers)||void 0===t?void 0:t.length)>0||(null===(r=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===r?void 0:r.length)>0||e.allowed_mcp_servers_and_groups.toolPermissions)){if(e.object_permission={},e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0&&(e.object_permission.vector_stores=e.allowed_vector_store_ids,delete e.allowed_vector_store_ids),e.allowed_mcp_servers_and_groups){let{servers:s,accessGroups:t}=e.allowed_mcp_servers_and_groups;s&&s.length>0&&(e.object_permission.mcp_servers=s),t&&t.length>0&&(e.object_permission.mcp_access_groups=t),delete e.allowed_mcp_servers_and_groups}e.mcp_tool_permissions&&Object.keys(e.mcp_tool_permissions).length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_tool_permissions=e.mcp_tool_permissions,delete e.mcp_tool_permissions)}e.allowed_mcp_access_groups&&e.allowed_mcp_access_groups.length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_access_groups=e.allowed_mcp_access_groups,delete e.allowed_mcp_access_groups),Object.keys(eq).length>0&&(e.model_aliases=eq);let d=await (0,j.teamCreateCall)(l,e);null!==s?a([...s,d]):a([d]),console.log("response for team create call: ".concat(d)),eo.Z.success("Team created"),R.resetFields(),eA([]),eV({}),ec(!1)}}catch(e){console.error("Error creating the team:",e),eo.Z.fromBackend("Error creating the team: "+e)}},eW=()=>{u(new Date().toLocaleString())},e$=(e,s)=>{let t={...E,[e]:s};M(t),l&&(0,j.v2TeamListCall)(l,t.organization_id||null,null,t.team_id||null,t.team_alias||null).then(e=>{e&&e.teams&&a(e.teams)}).catch(e=>{console.error("Error fetching teams:",e)})};return(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[("Admin"==i||"Org Admin"==i)&&(0,c.jsx)(b.Z,{className:"w-fit",onClick:()=>ec(!0),children:"+ Create New Team"}),ee?(0,c.jsx)(tN,{teamId:ee,onUpdate:e=>{a(s=>{if(null==s)return s;let t=s.map(s=>e.team_id===s.team_id?eP(s,e):s);return l&&f(l,r,i,x,a),t})},onClose:()=>{es(null),el(!1)},accessToken:l,is_team_admin:(e=>{if(null==e||null==e.members_with_roles)return!1;for(let s=0;se.team_id===ee)),is_proxy_admin:"Admin"==i,userModels:eh,editTeam:et}):(0,c.jsxs)(st.Z,{className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(ss.Z,{children:"Your Teams"}),(0,c.jsx)(ss.Z,{children:"Available Teams"}),(0,eI.tY)(i||"")&&(0,c.jsx)(ss.Z,{children:"Default Team Settings"})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[m&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",m]}),(0,c.jsx)(sR.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center",onClick:eW})]})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(k.Z,{children:["Click on “Team ID” to view team details ",(0,c.jsx)("b",{children:"and"})," manage team members."]}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"w-full mx-auto flex-auto overflow-hidden overflow-y-auto max-h-[50vh]",children:[(0,c.jsx)("div",{className:"border-b px-6 py-4",children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search by Team Name...",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:E.team_alias,onChange:e=>e$("team_alias",e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 ".concat(S?"bg-gray-100":""),onClick:()=>C(!S),children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filters",(E.team_id||E.team_alias||E.organization_id)&&(0,c.jsx)("span",{className:"w-2 h-2 rounded-full bg-blue-500"})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",onClick:()=>{M({team_id:"",team_alias:"",organization_id:"",sort_by:"created_at",sort_order:"desc"}),l&&(0,j.v2TeamListCall)(l,null,r||null,null,null).then(e=>{e&&e.teams&&a(e.teams)}).catch(e=>{console.error("Error fetching teams:",e)})},children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Reset Filters"]})]}),S&&(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Enter Team ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:E.team_id,onChange:e=>e$("team_id",e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})]}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsx)(e9.Z,{value:E.organization_id||"",onValueChange:e=>e$("organization_id",e),placeholder:"Select Organization",children:null==n?void 0:n.map(e=>(0,c.jsx)(ei.Z,{value:e.organization_id||"",children:e.organization_alias||e.organization_id},e.organization_id))})})]})]})}),(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Team Name"}),(0,c.jsx)(sB.Z,{children:"Team ID"}),(0,c.jsx)(sB.Z,{children:"Created"}),(0,c.jsx)(sB.Z,{children:"Spend (USD)"}),(0,c.jsx)(sB.Z,{children:"Budget (USD)"}),(0,c.jsx)(sB.Z,{children:"Models"}),(0,c.jsx)(sB.Z,{children:"Organization"}),(0,c.jsx)(sB.Z,{children:"Info"})]})}),(0,c.jsx)(sU.Z,{children:s&&s.length>0?s.filter(e=>!x||e.organization_id===x.organization_id).sort((e,s)=>new Date(s.created_at).getTime()-new Date(e.created_at).getTime()).map(e=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:e.team_alias}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.team_id,children:(0,c.jsxs)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>{es(e.team_id)},children:[e.team_id.slice(0,7),"..."]})})})}),(0,c.jsx)(sq.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:e.created_at?new Date(e.created_at).toLocaleDateString():"N/A"}),(0,c.jsx)(sq.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:eL(e.spend,4)}),(0,c.jsx)(sq.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:null!==e.max_budget&&void 0!==e.max_budget?e.max_budget:"No limit"}),(0,c.jsx)(sq.Z,{style:{maxWidth:"8-x",whiteSpace:"pre-wrap",overflow:"hidden"},className:e.models.length>3?"px-0":"",children:(0,c.jsx)("div",{className:"flex flex-col",children:Array.isArray(e.models)?(0,c.jsx)("div",{className:"flex flex-col",children:0===e.models.length?(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"flex items-start",children:[e.models.length>3&&(0,c.jsx)("div",{children:(0,c.jsx)(sR.Z,{icon:ek[e.team_id]?sv.Z:sy.Z,className:"cursor-pointer",size:"xs",onClick:()=>{eS(s=>({...s,[e.team_id]:!s[e.team_id]}))}})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[e.models.slice(0,3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s)),e.models.length>3&&!ek[e.team_id]&&(0,c.jsx)(se.Z,{size:"xs",color:"gray",className:"cursor-pointer",children:(0,c.jsxs)(k.Z,{children:["+",e.models.length-3," ",e.models.length-3==1?"more model":"more models"]})}),ek[e.team_id]&&(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:e.models.slice(3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s+3):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s+3))})]})]})})}):null})}),(0,c.jsx)(sq.Z,{children:e.organization_id}),(0,c.jsxs)(sq.Z,{children:[(0,c.jsxs)(k.Z,{children:[e_&&e.team_id&&e_[e.team_id]&&e_[e.team_id].keys&&e_[e.team_id].keys.length," ","Keys"]}),(0,c.jsxs)(k.Z,{children:[e_&&e.team_id&&e_[e.team_id]&&e_[e.team_id].team_info&&e_[e.team_id].team_info.members_with_roles&&e_[e.team_id].team_info.members_with_roles.length," ","Members"]})]}),(0,c.jsx)(sq.Z,{children:"Admin"==i?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sR.Z,{icon:s4.Z,size:"sm",onClick:()=>{es(e.team_id),el(!0)}}),(0,c.jsx)(sR.Z,{onClick:()=>eK(e.team_id),icon:W.Z,size:"sm"})]}):null})]},e.team_id)):null})]}),eg&&(()=>{var e;let t=null==s?void 0:s.find(e=>e.team_id===ef),l=(null==t?void 0:t.team_alias)||"",a=(null==t?void 0:null===(e=t.keys)||void 0===e?void 0:e.length)||0,r=eF===l;return(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl w-full max-w-2xl min-h-[380px] py-6 overflow-hidden transform transition-all flex flex-col justify-between",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Delete Team"}),(0,c.jsx)("button",{onClick:()=>{eH(),eR("")},className:"text-gray-400 hover:text-gray-500 focus:outline-none",children:(0,c.jsx)(ez.Z,{size:20})})]}),(0,c.jsxs)("div",{className:"px-6 py-4",children:[a>0&&(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)(lK.Z,{size:20})}),(0,c.jsxs)("div",{children:[(0,c.jsxs)("p",{className:"text-base font-medium text-red-600",children:["Warning: This team has ",a," associated key",a>1?"s":"","."]}),(0,c.jsx)("p",{className:"text-base text-red-600 mt-2",children:"Deleting the team will also delete all associated keys. This action is irreversible."})]})]}),(0,c.jsx)("p",{className:"text-base text-gray-600 mb-5",children:"Are you sure you want to force delete this team and all its keys?"}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsx)("span",{className:"underline",children:l})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:eF,onChange:e=>eR(e.target.value),placeholder:"Enter team name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]})]})]}),(0,c.jsxs)("div",{className:"px-6 py-4 bg-gray-50 flex justify-end gap-4",children:[(0,c.jsx)("button",{onClick:()=>{eH(),eR("")},className:"px-5 py-3 bg-white border border-gray-300 rounded-md text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:"Cancel"}),(0,c.jsx)("button",{onClick:eG,disabled:!r,className:"px-5 py-3 rounded-md text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 ".concat(r?"bg-red-600 hover:bg-red-700":"bg-red-300 cursor-not-allowed"),children:"Force Delete"})]})]})})})()]})})})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lB,{accessToken:l,userID:r})}),(0,eI.tY)(i||"")&&(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lV,{accessToken:l,userID:r||"",userRole:i||""})})]})]}),("Admin"==i||"Org Admin"==i)&&(0,c.jsx)(T.Z,{title:"Create Team",visible:ea,width:1e3,footer:null,onOk:()=>{ec(!1),R.resetFields(),eA([]),eV({})},onCancel:()=>{ec(!1),R.resetFields(),eA([]),eV({})},children:(0,c.jsxs)(A.Z,{form:R,onFinish:eJ,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Team Name",name:"team_alias",rules:[{required:!0,message:"Please input a team name"}],children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Organization"," ",(0,c.jsx)(B.Z,{title:(0,c.jsxs)("span",{children:["Organizations can have multiple teams. Learn more about"," ",(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/user_management_heirarchy",target:"_blank",rel:"noopener noreferrer",style:{color:"#1890ff",textDecoration:"underline"},onClick:e=>e.stopPropagation(),children:"user management hierarchy"})]}),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"organization_id",initialValue:x?x.organization_id:null,className:"mt-8",children:(0,c.jsx)(I.default,{showSearch:!0,allowClear:!0,placeholder:"Search or select an Organization",onChange:e=>{R.setFieldValue("organization_id",e),g((null==n?void 0:n.find(s=>s.organization_id===e))||null)},filterOption:(e,s)=>{var t;return!!s&&((null===(t=s.children)||void 0===t?void 0:t.toString())||"").toLowerCase().includes(e.toLowerCase())},optionFilterProp:"children",children:null==n?void 0:n.map(e=>(0,c.jsxs)(I.default.Option,{value:e.organization_id,children:[(0,c.jsx)("span",{className:"font-medium",children:e.organization_alias})," ",(0,c.jsxs)("span",{className:"text-gray-500",children:["(",e.organization_id,")"]})]},e.organization_id))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Models"," ",(0,c.jsx)(B.Z,{title:"These are the models that your selected team has access to",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),ey.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsxs)(N.Z,{className:"mt-20 mb-8",onClick:()=>{eM||(eB(),eO(!0))},children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Additional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:"Team ID",name:"team_id",help:"ID of the team you want to create. If not provided, it will be generated automatically.",children:(0,c.jsx)(_.Z,{onChange:e=>{e.target.value=e.target.value.trim()}})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Budget (USD)",name:"team_member_budget",normalize:e=>e?Number(e):void 0,tooltip:"This is the individual budget for a user in the team.",children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Key Duration (eg: 1d, 1mo)",name:"team_member_key_duration",tooltip:"Set a limit to the duration of a team member's key. Format: 30s (seconds), 30m (minutes), 30h (hours), 30d (days), 1mo (month)",children:(0,c.jsx)(_.Z,{placeholder:"e.g., 30d"})}),(0,c.jsx)(A.Z.Item,{label:"Team Member RPM Limit",name:"team_member_rpm_limit",tooltip:"The RPM (Requests Per Minute) limit for individual team members",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Team Member TPM Limit",name:"team_member_tpm_limit",tooltip:"The TPM (Tokens Per Minute) limit for individual team members",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",help:"Additional team metadata. Enter metadata as JSON object.",children:(0,c.jsx)(L.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Setup your first guardrail",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",className:"mt-8",help:"Select existing guardrails or enter new ones",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},placeholder:"Select or enter guardrails",options:eZ.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Vector Stores"," ",(0,c.jsx)(B.Z,{title:"Select which vector stores this team can access by default. Leave empty for access to all vector stores",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_vector_store_ids",className:"mt-8",help:"Select vector stores this team can access. Leave empty for access to all vector stores",children:(0,c.jsx)(U,{onChange:e=>R.setFieldValue("allowed_vector_store_ids",e),value:R.getFieldValue("allowed_vector_store_ids"),accessToken:l||"",placeholder:"Select vector stores (optional)"})})]})]}),(0,c.jsxs)(N.Z,{className:"mt-8 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"MCP Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed MCP Servers"," ",(0,c.jsx)(B.Z,{title:"Select which MCP servers or access groups this team can access",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_mcp_servers_and_groups",className:"mt-4",help:"Select MCP servers or access groups this team can access",children:(0,c.jsx)(eD,{onChange:e=>R.setFieldValue("allowed_mcp_servers_and_groups",e),value:R.getFieldValue("allowed_mcp_servers_and_groups"),accessToken:l||"",placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{name:"mcp_tool_permissions",initialValue:{},hidden:!0,children:(0,c.jsx)(L.default,{type:"hidden"})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.allowed_mcp_servers_and_groups!==s.allowed_mcp_servers_and_groups||e.mcp_tool_permissions!==s.mcp_tool_permissions,children:()=>{var e;return(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(eU,{accessToken:l||"",selectedServers:(null===(e=R.getFieldValue("allowed_mcp_servers_and_groups"))||void 0===e?void 0:e.servers)||[],toolPermissions:R.getFieldValue("mcp_tool_permissions")||{},onChange:e=>R.setFieldsValue({mcp_tool_permissions:e})})})}})]})]}),(0,c.jsxs)(N.Z,{className:"mt-8 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Logging Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(er,{value:eC,onChange:eA,premiumUser:o})})})]}),(0,c.jsxs)(N.Z,{className:"mt-8 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Model Aliases"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600 mb-4",children:"Create custom aliases for models that can be used by team members in API calls. This allows you to create shortcuts for specific models."}),(0,c.jsx)(eY,{accessToken:l||"",initialModelAliases:eq,onAliasUpdate:eV,showExampleConfig:!1})]})})]})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Create Team"})})]})})]})})})},lY=e=>{var s,t,l,a,r;let{organizationId:i,onClose:n,accessToken:o,is_org_admin:m,is_proxy_admin:u,userModels:x,editOrg:h}=e,[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(!0),[N]=A.Z.useForm(),[Z,w]=(0,d.useState)(!1),[C,T]=(0,d.useState)(!1),[E,M]=(0,d.useState)(!1),[D,R]=(0,d.useState)(null),[z,q]=(0,d.useState)({}),V=m||u,B=async()=>{try{if(v(!0),!o)return;let e=await (0,j.organizationInfoCall)(o,i);g(e)}catch(e){eo.Z.fromBackend("Failed to load organization information"),console.error("Error fetching organization info:",e)}finally{v(!1)}};(0,d.useEffect)(()=>{B()},[i,o]);let K=async e=>{try{if(null==o)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role};await (0,j.organizationMemberAddCall)(o,i,s),eo.Z.success("Organization member added successfully"),T(!1),N.resetFields(),B()}catch(e){eo.Z.fromBackend("Failed to add organization member"),console.error("Error adding organization member:",e)}},H=async e=>{try{if(!o)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role};await (0,j.organizationMemberUpdateCall)(o,i,s),eo.Z.success("Organization member updated successfully"),M(!1),N.resetFields(),B()}catch(e){eo.Z.fromBackend("Failed to update organization member"),console.error("Error updating organization member:",e)}},Y=async e=>{try{if(!o)return;await (0,j.organizationMemberDeleteCall)(o,i,e.user_id),eo.Z.success("Organization member deleted successfully"),M(!1),N.resetFields(),B()}catch(e){eo.Z.fromBackend("Failed to delete organization member"),console.error("Error deleting organization member:",e)}},J=async e=>{try{if(!o)return;let s={organization_id:i,organization_alias:e.organization_alias,models:e.models,litellm_budget_table:{tpm_limit:e.tpm_limit,rpm_limit:e.rpm_limit,max_budget:e.max_budget,budget_duration:e.budget_duration},metadata:e.metadata?JSON.parse(e.metadata):null};if((void 0!==e.vector_stores||void 0!==e.mcp_servers_and_groups)&&(s.object_permission={...null==p?void 0:p.object_permission,vector_stores:e.vector_stores||[]},void 0!==e.mcp_servers_and_groups)){let{servers:t,accessGroups:l}=e.mcp_servers_and_groups||{servers:[],accessGroups:[]};t&&t.length>0&&(s.object_permission.mcp_servers=t),l&&l.length>0&&(s.object_permission.mcp_access_groups=l)}await (0,j.organizationUpdateCall)(o,s),eo.Z.success("Organization settings updated successfully"),w(!1),B()}catch(e){eo.Z.fromBackend("Failed to update organization settings"),console.error("Error updating organization:",e)}};if(f)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!p)return(0,c.jsx)("div",{className:"p-4",children:"Organization not found"});let $=async(e,s)=>{await eM(e)&&(q(e=>({...e,[s]:!0})),setTimeout(()=>{q(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"w-full h-screen p-4 bg-white",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,onClick:n,variant:"light",className:"mb-4",children:"Back to Organizations"}),(0,c.jsx)(S.Z,{children:p.organization_alias}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:p.organization_id}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:z["org-id"]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>$(p.organization_id,"org-id"),className:"left-2 z-10 transition-all duration-200 ".concat(z["org-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:h?2:0,children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"}),(0,c.jsx)(ss.Z,{children:"Members"}),(0,c.jsx)(ss.Z,{children:"Settings"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Organization Details"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["Created: ",new Date(p.created_at).toLocaleDateString()]}),(0,c.jsxs)(k.Z,{children:["Updated: ",new Date(p.updated_at).toLocaleDateString()]}),(0,c.jsxs)(k.Z,{children:["Created By: ",p.created_by]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Budget Status"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eL(p.spend,4)]}),(0,c.jsxs)(k.Z,{children:["of"," ",null===p.litellm_budget_table.max_budget?"Unlimited":"$".concat(eL(p.litellm_budget_table.max_budget,4))]}),p.litellm_budget_table.budget_duration&&(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Reset: ",p.litellm_budget_table.budget_duration]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Rate Limits"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["TPM: ",p.litellm_budget_table.tpm_limit||"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",p.litellm_budget_table.rpm_limit||"Unlimited"]}),p.litellm_budget_table.max_parallel_requests&&(0,c.jsxs)(k.Z,{children:["Max Parallel Requests: ",p.litellm_budget_table.max_parallel_requests]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Models"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:0===p.models.length?(0,c.jsx)(se.Z,{color:"red",children:"All proxy models"}):p.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Teams"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:null===(s=p.teams)||void 0===s?void 0:s.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e.team_id},s))})]}),(0,c.jsx)(s_,{objectPermission:p.object_permission,variant:"card",accessToken:o})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[75vh]",children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"User ID"}),(0,c.jsx)(sB.Z,{children:"Role"}),(0,c.jsx)(sB.Z,{children:"Spend"}),(0,c.jsx)(sB.Z,{children:"Created At"}),(0,c.jsx)(sB.Z,{})]})}),(0,c.jsx)(sU.Z,{children:null===(t=p.members)||void 0===t?void 0:t.map((e,s)=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_id})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_role})}),(0,c.jsx)(sq.Z,{children:(0,c.jsxs)(k.Z,{children:["$",eL(e.spend,4)]})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{children:new Date(e.created_at).toLocaleString()})}),(0,c.jsx)(sq.Z,{children:V&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sR.Z,{icon:s4.Z,size:"sm",onClick:()=>{R({role:e.user_role,user_email:e.user_email,user_id:e.user_id}),M(!0)}}),(0,c.jsx)(sR.Z,{icon:W.Z,size:"sm",onClick:()=>{Y(e)}})]})})]},s))})]})}),V&&(0,c.jsx)(b.Z,{onClick:()=>{T(!0)},children:"Add Member"})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{className:"overflow-y-auto max-h-[65vh]",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Organization Settings"}),V&&!Z&&(0,c.jsx)(b.Z,{onClick:()=>w(!0),children:"Edit Settings"})]}),Z?(0,c.jsxs)(A.Z,{form:N,onFinish:J,initialValues:{organization_alias:p.organization_alias,models:p.models,tpm_limit:p.litellm_budget_table.tpm_limit,rpm_limit:p.litellm_budget_table.rpm_limit,max_budget:p.litellm_budget_table.max_budget,budget_duration:p.litellm_budget_table.budget_duration,metadata:p.metadata?JSON.stringify(p.metadata,null,2):"",vector_stores:(null===(l=p.object_permission)||void 0===l?void 0:l.vector_stores)||[],mcp_servers_and_groups:{servers:(null===(a=p.object_permission)||void 0===a?void 0:a.mcp_servers)||[],accessGroups:(null===(r=p.object_permission)||void 0===r?void 0:r.mcp_access_groups)||[]}},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Organization Name",name:"organization_alias",rules:[{required:!0,message:"Please input an organization name"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),x.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Vector Stores",name:"vector_stores",children:(0,c.jsx)(U,{onChange:e=>N.setFieldValue("vector_stores",e),value:N.getFieldValue("vector_stores"),accessToken:o||"",placeholder:"Select vector stores"})}),(0,c.jsx)(A.Z.Item,{label:"MCP Servers & Access Groups",name:"mcp_servers_and_groups",children:(0,c.jsx)(eD,{onChange:e=>N.setFieldValue("mcp_servers_and_groups",e),value:N.getFieldValue("mcp_servers_and_groups"),accessToken:o||"",placeholder:"Select MCP servers and access groups"})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(L.default.TextArea,{rows:4})}),(0,c.jsx)("div",{className:"sticky z-10 bg-white p-4 border-t border-gray-200 bottom-[-1.5rem] inset-x-[-1.5rem]",children:(0,c.jsxs)("div",{className:"flex justify-end items-center gap-2",children:[(0,c.jsx)(P.ZP,{onClick:()=>w(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization Name"}),(0,c.jsx)("div",{children:p.organization_alias})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization ID"}),(0,c.jsx)("div",{className:"font-mono",children:p.organization_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:new Date(p.created_at).toLocaleString()})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:p.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Rate Limits"}),(0,c.jsxs)("div",{children:["TPM: ",p.litellm_budget_table.tpm_limit||"Unlimited"]}),(0,c.jsxs)("div",{children:["RPM: ",p.litellm_budget_table.rpm_limit||"Unlimited"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Budget"}),(0,c.jsxs)("div",{children:["Max:"," ",null!==p.litellm_budget_table.max_budget?"$".concat(eL(p.litellm_budget_table.max_budget,4)):"No Limit"]}),(0,c.jsxs)("div",{children:["Reset: ",p.litellm_budget_table.budget_duration||"Never"]})]}),(0,c.jsx)(s_,{objectPermission:p.object_permission,variant:"inline",className:"pt-4 border-t border-gray-200",accessToken:o})]})]})})]})]}),(0,c.jsx)(t_,{isVisible:C,onCancel:()=>T(!1),onSubmit:K,accessToken:o,title:"Add Organization Member",roles:[{label:"org_admin",value:"org_admin",description:"Can add and remove members, and change their roles."},{label:"internal_user",value:"internal_user",description:"Can view/create keys for themselves within organization."},{label:"internal_user_viewer",value:"internal_user_viewer",description:"Can only view their keys within organization."}],defaultRole:"internal_user"}),(0,c.jsx)(tb,{visible:E,onCancel:()=>M(!1),onSubmit:H,initialData:D,mode:"edit",config:{title:"Edit Member",showEmail:!0,showUserId:!0,roleOptions:[{label:"Org Admin",value:"org_admin"},{label:"Internal User",value:"internal_user"},{label:"Internal User Viewer",value:"internal_user_viewer"}]}})]})};let lJ=async(e,s)=>{s(await (0,j.organizationListCall)(e))};var lW=e=>{let{organizations:s,userRole:t,userModels:l,accessToken:a,lastRefreshed:r,handleRefreshClick:i,currentOrg:n,guardrailsList:o=[],setOrganizations:m,premiumUser:u}=e,[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(!1),[f,_]=(0,d.useState)(!1),[N,Z]=(0,d.useState)(null),[w,S]=(0,d.useState)(!1),[C]=A.Z.useForm(),[E,P]=(0,d.useState)({});(0,d.useEffect)(()=>{a&&lJ(a,m)},[a]);let M=e=>{e&&(Z(e),_(!0))},D=async()=>{if(N&&a)try{await (0,j.organizationDeleteCall)(a,N),eo.Z.success("Organization deleted successfully"),_(!1),Z(null),lJ(a,m)}catch(e){console.error("Error deleting organization:",e)}},R=async e=>{try{var s,t,l,r;if(!a)return;console.log("values in organizations new create call: ".concat(JSON.stringify(e))),(e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0||e.allowed_mcp_servers_and_groups&&((null===(s=e.allowed_mcp_servers_and_groups.servers)||void 0===s?void 0:s.length)>0||(null===(t=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===t?void 0:t.length)>0))&&(e.object_permission={},e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0&&(e.object_permission.vector_stores=e.allowed_vector_store_ids,delete e.allowed_vector_store_ids),e.allowed_mcp_servers_and_groups&&((null===(l=e.allowed_mcp_servers_and_groups.servers)||void 0===l?void 0:l.length)>0&&(e.object_permission.mcp_servers=e.allowed_mcp_servers_and_groups.servers),(null===(r=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===r?void 0:r.length)>0&&(e.object_permission.mcp_access_groups=e.allowed_mcp_servers_and_groups.accessGroups),delete e.allowed_mcp_servers_and_groups)),await (0,j.organizationCreateCall)(a,e),eo.Z.success("Organization created successfully"),S(!1),C.resetFields(),lJ(a,m)}catch(e){console.error("Error creating organization:",e)}};return u?(0,c.jsxs)("div",{className:"w-full mx-4 h-[75vh]",children:[(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[("Admin"===t||"Org Admin"===t)&&(0,c.jsx)(b.Z,{className:"w-fit",onClick:()=>S(!0),children:"+ Create New Organization"}),x?(0,c.jsx)(lY,{organizationId:x,onClose:()=>{h(null),g(!1)},accessToken:a,is_org_admin:!0,is_proxy_admin:"Admin"===t,userModels:l,editOrg:p}):(0,c.jsxs)(st.Z,{className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsx)("div",{className:"flex",children:(0,c.jsx)(ss.Z,{children:"Your Organizations"})}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[r&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",r]}),(0,c.jsx)(sR.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center",onClick:i})]})]}),(0,c.jsx)(sr.Z,{children:(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)(k.Z,{children:"Click on “Organization ID” to view organization details."}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Organization ID"}),(0,c.jsx)(sB.Z,{children:"Organization Name"}),(0,c.jsx)(sB.Z,{children:"Created"}),(0,c.jsx)(sB.Z,{children:"Spend (USD)"}),(0,c.jsx)(sB.Z,{children:"Budget (USD)"}),(0,c.jsx)(sB.Z,{children:"Models"}),(0,c.jsx)(sB.Z,{children:"TPM / RPM Limits"}),(0,c.jsx)(sB.Z,{children:"Info"}),(0,c.jsx)(sB.Z,{children:"Actions"})]})}),(0,c.jsx)(sU.Z,{children:s&&s.length>0?s.sort((e,s)=>new Date(s.created_at).getTime()-new Date(e.created_at).getTime()).map(e=>{var s,l,a,r,i,n,o,d,m;return(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.organization_id,children:(0,c.jsxs)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>h(e.organization_id),children:[null===(s=e.organization_id)||void 0===s?void 0:s.slice(0,7),"..."]})})})}),(0,c.jsx)(sq.Z,{children:e.organization_alias}),(0,c.jsx)(sq.Z,{children:e.created_at?new Date(e.created_at).toLocaleDateString():"N/A"}),(0,c.jsx)(sq.Z,{children:eL(e.spend,4)}),(0,c.jsx)(sq.Z,{children:(null===(l=e.litellm_budget_table)||void 0===l?void 0:l.max_budget)!==null&&(null===(a=e.litellm_budget_table)||void 0===a?void 0:a.max_budget)!==void 0?null===(r=e.litellm_budget_table)||void 0===r?void 0:r.max_budget:"No limit"}),(0,c.jsx)(sq.Z,{style:{maxWidth:"8-x",whiteSpace:"pre-wrap",overflow:"hidden"},className:e.models.length>3?"px-0":"",children:(0,c.jsx)("div",{className:"flex flex-col",children:Array.isArray(e.models)?(0,c.jsx)("div",{className:"flex flex-col",children:0===e.models.length?(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"flex items-start",children:[e.models.length>3&&(0,c.jsx)("div",{children:(0,c.jsx)(sR.Z,{icon:E[e.organization_id||""]?sv.Z:sy.Z,className:"cursor-pointer",size:"xs",onClick:()=>{P(s=>({...s,[e.organization_id||""]:!s[e.organization_id||""]}))}})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[e.models.slice(0,3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s)),e.models.length>3&&!E[e.organization_id||""]&&(0,c.jsx)(se.Z,{size:"xs",color:"gray",className:"cursor-pointer",children:(0,c.jsxs)(k.Z,{children:["+",e.models.length-3," ",e.models.length-3==1?"more model":"more models"]})}),E[e.organization_id||""]&&(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:e.models.slice(3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s+3):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s+3))})]})]})})}):null})}),(0,c.jsx)(sq.Z,{children:(0,c.jsxs)(k.Z,{children:["TPM:"," ",(null===(i=e.litellm_budget_table)||void 0===i?void 0:i.tpm_limit)?null===(n=e.litellm_budget_table)||void 0===n?void 0:n.tpm_limit:"Unlimited",(0,c.jsx)("br",{}),"RPM:"," ",(null===(o=e.litellm_budget_table)||void 0===o?void 0:o.rpm_limit)?null===(d=e.litellm_budget_table)||void 0===d?void 0:d.rpm_limit:"Unlimited"]})}),(0,c.jsx)(sq.Z,{children:(0,c.jsxs)(k.Z,{children:[(null===(m=e.members)||void 0===m?void 0:m.length)||0," Members"]})}),(0,c.jsx)(sq.Z,{children:"Admin"===t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sR.Z,{icon:s4.Z,size:"sm",onClick:()=>{h(e.organization_id),g(!0)}}),(0,c.jsx)(sR.Z,{onClick:()=>M(e.organization_id),icon:W.Z,size:"sm"})]})})]},e.organization_id)}):null})]})})})})]})})]})]})}),(0,c.jsx)(T.Z,{title:"Create Organization",visible:w,width:800,footer:null,onCancel:()=>{S(!1),C.resetFields()},children:(0,c.jsxs)(A.Z,{form:C,onFinish:R,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"Organization Name",name:"organization_alias",rules:[{required:!0,message:"Please input an organization name"}],children:(0,c.jsx)(eW.o,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),l&&l.length>0&&l.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Vector Stores"," ",(0,c.jsx)(B.Z,{title:"Select which vector stores this organization can access by default. Leave empty for access to all vector stores",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_vector_store_ids",className:"mt-4",help:"Select vector stores this organization can access. Leave empty for access to all vector stores",children:(0,c.jsx)(U,{onChange:e=>C.setFieldValue("allowed_vector_store_ids",e),value:C.getFieldValue("allowed_vector_store_ids"),accessToken:a||"",placeholder:"Select vector stores (optional)"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed MCP Servers"," ",(0,c.jsx)(B.Z,{title:"Select which MCP servers and access groups this organization can access by default.",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_mcp_servers_and_groups",className:"mt-4",help:"Select MCP servers and access groups this organization can access.",children:(0,c.jsx)(eD,{onChange:e=>C.setFieldValue("allowed_mcp_servers_and_groups",e),value:C.getFieldValue("allowed_mcp_servers_and_groups"),accessToken:a||"",placeholder:"Select MCP servers and access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(L.default.TextArea,{rows:4})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(b.Z,{type:"submit",children:"Create Organization"})})]})}),f?(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Organization"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this organization?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:D,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{_(!1),Z(null)},children:"Cancel"})]})]})]})}):(0,c.jsx)(c.Fragment,{})]}):(0,c.jsx)("div",{children:(0,c.jsxs)(k.Z,{children:["This is a LiteLLM Enterprise feature, and requires a valid key to use. Get a trial key"," ",(0,c.jsx)("a",{href:"https://www.litellm.ai/#pricing",target:"_blank",rel:"noopener noreferrer",children:"here"}),"."]})})},l$=t(94789);let lQ={google:"https://artificialanalysis.ai/img/logos/google_small.svg",microsoft:"https://upload.wikimedia.org/wikipedia/commons/a/a8/Microsoft_Azure_Logo.svg",okta:"https://www.okta.com/sites/default/files/Okta_Logo_BrightBlue_Medium.png",generic:""},lX={google:{envVarMap:{google_client_id:"GOOGLE_CLIENT_ID",google_client_secret:"GOOGLE_CLIENT_SECRET"},fields:[{label:"GOOGLE CLIENT ID",name:"google_client_id"},{label:"GOOGLE CLIENT SECRET",name:"google_client_secret"}]},microsoft:{envVarMap:{microsoft_client_id:"MICROSOFT_CLIENT_ID",microsoft_client_secret:"MICROSOFT_CLIENT_SECRET",microsoft_tenant:"MICROSOFT_TENANT"},fields:[{label:"MICROSOFT CLIENT ID",name:"microsoft_client_id"},{label:"MICROSOFT CLIENT SECRET",name:"microsoft_client_secret"},{label:"MICROSOFT TENANT",name:"microsoft_tenant"}]},okta:{envVarMap:{generic_client_id:"GENERIC_CLIENT_ID",generic_client_secret:"GENERIC_CLIENT_SECRET",generic_authorization_endpoint:"GENERIC_AUTHORIZATION_ENDPOINT",generic_token_endpoint:"GENERIC_TOKEN_ENDPOINT",generic_userinfo_endpoint:"GENERIC_USERINFO_ENDPOINT"},fields:[{label:"GENERIC CLIENT ID",name:"generic_client_id"},{label:"GENERIC CLIENT SECRET",name:"generic_client_secret"},{label:"AUTHORIZATION ENDPOINT",name:"generic_authorization_endpoint",placeholder:"https://your-okta-domain/authorize"},{label:"TOKEN ENDPOINT",name:"generic_token_endpoint",placeholder:"https://your-okta-domain/token"},{label:"USERINFO ENDPOINT",name:"generic_userinfo_endpoint",placeholder:"https://your-okta-domain/userinfo"}]},generic:{envVarMap:{generic_client_id:"GENERIC_CLIENT_ID",generic_client_secret:"GENERIC_CLIENT_SECRET",generic_authorization_endpoint:"GENERIC_AUTHORIZATION_ENDPOINT",generic_token_endpoint:"GENERIC_TOKEN_ENDPOINT",generic_userinfo_endpoint:"GENERIC_USERINFO_ENDPOINT"},fields:[{label:"GENERIC CLIENT ID",name:"generic_client_id"},{label:"GENERIC CLIENT SECRET",name:"generic_client_secret"},{label:"AUTHORIZATION ENDPOINT",name:"generic_authorization_endpoint"},{label:"TOKEN ENDPOINT",name:"generic_token_endpoint"},{label:"USERINFO ENDPOINT",name:"generic_userinfo_endpoint"}]}};var l0=e=>{let{isAddSSOModalVisible:s,isInstructionsModalVisible:t,handleAddSSOOk:l,handleAddSSOCancel:a,handleShowInstructions:r,handleInstructionsOk:i,handleInstructionsCancel:n,form:o,accessToken:m,ssoConfigured:u=!1}=e,[x,h]=(0,d.useState)(!1);(0,d.useEffect)(()=>{(async()=>{if(s&&m)try{let s=await (0,j.getSSOSettings)(m);if(console.log("Raw SSO data received:",s),s&&s.values){console.log("SSO values:",s.values),console.log("user_email from API:",s.values.user_email);let l=null;if(s.values.google_client_id)l="google";else if(s.values.microsoft_client_id)l="microsoft";else if(s.values.generic_client_id){var e,t;l=(null===(e=s.values.generic_authorization_endpoint)||void 0===e?void 0:e.includes("okta"))||(null===(t=s.values.generic_authorization_endpoint)||void 0===t?void 0:t.includes("auth0"))?"okta":"generic"}let a={sso_provider:l,proxy_base_url:s.values.proxy_base_url,user_email:s.values.user_email,...s.values};console.log("Setting form values:",a),o.resetFields(),setTimeout(()=>{o.setFieldsValue(a),console.log("Form values set, current form values:",o.getFieldsValue())},100)}}catch(e){console.error("Failed to load SSO settings:",e)}})()},[s,m,o]);let p=async e=>{if(!m){eo.Z.fromBackend("No access token available");return}try{await (0,j.updateSSOSettings)(m,e),r(e)}catch(e){console.error("Failed to save SSO settings:",e),eo.Z.fromBackend("Failed to save SSO settings")}},g=async()=>{if(!m){eo.Z.fromBackend("No access token available");return}try{await (0,j.updateSSOSettings)(m,{google_client_id:null,google_client_secret:null,microsoft_client_id:null,microsoft_client_secret:null,microsoft_tenant:null,generic_client_id:null,generic_client_secret:null,generic_authorization_endpoint:null,generic_token_endpoint:null,generic_userinfo_endpoint:null,proxy_base_url:null,user_email:null,sso_provider:null}),o.resetFields(),h(!1),l(),eo.Z.success("SSO settings cleared successfully")}catch(e){console.error("Failed to clear SSO settings:",e),eo.Z.fromBackend("Failed to clear SSO settings")}},f=e=>{let s=lX[e];return s?s.fields.map(e=>(0,c.jsx)(A.Z.Item,{label:e.label,name:e.name,rules:[{required:!0,message:"Please enter the ".concat(e.label.toLowerCase())}],children:e.name.includes("client")?(0,c.jsx)(L.default.Password,{}):(0,c.jsx)(_.Z,{placeholder:e.placeholder})},e.name)):null};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(T.Z,{title:u?"Edit SSO Settings":"Add SSO",visible:s,width:800,footer:null,onOk:l,onCancel:a,children:(0,c.jsxs)(A.Z,{form:o,onFinish:p,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"SSO Provider",name:"sso_provider",rules:[{required:!0,message:"Please select an SSO provider"}],children:(0,c.jsx)(I.default,{children:Object.entries(lQ).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:s,children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"4px 0"},children:[t&&(0,c.jsx)("img",{src:t,alt:s,style:{height:24,width:24,marginRight:12,objectFit:"contain"}}),(0,c.jsxs)("span",{children:[s.charAt(0).toUpperCase()+s.slice(1)," SSO"]})]})},s)})})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.sso_provider!==s.sso_provider,children:e=>{let{getFieldValue:s}=e,t=s("sso_provider");return t?f(t):null}}),(0,c.jsx)(A.Z.Item,{label:"Proxy Admin Email",name:"user_email",rules:[{required:!0,message:"Please enter the email of the proxy admin"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"PROXY BASE URL",name:"proxy_base_url",rules:[{required:!0,message:"Please enter the proxy base url"}],children:(0,c.jsx)(_.Z,{})})]}),(0,c.jsxs)("div",{style:{textAlign:"right",marginTop:"10px",display:"flex",justifyContent:"flex-end",alignItems:"center",gap:"8px"},children:[u&&(0,c.jsx)(P.ZP,{onClick:()=>h(!0),style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#5558eb",e.currentTarget.style.borderColor="#5558eb"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#6366f1",e.currentTarget.style.borderColor="#6366f1"},children:"Clear"}),(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Save"})]})]})}),(0,c.jsxs)(T.Z,{title:"Confirm Clear SSO Settings",visible:x,onOk:g,onCancel:()=>h(!1),okText:"Yes, Clear",cancelText:"Cancel",okButtonProps:{danger:!0,style:{backgroundColor:"#dc2626",borderColor:"#dc2626"}},children:[(0,c.jsx)("p",{children:"Are you sure you want to clear all SSO settings? This action cannot be undone."}),(0,c.jsx)("p",{children:"Users will no longer be able to login using SSO after this change."})]}),(0,c.jsxs)(T.Z,{title:"SSO Setup Instructions",visible:t,width:800,footer:null,onOk:i,onCancel:n,children:[(0,c.jsx)("p",{children:"Follow these steps to complete the SSO setup:"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"1. DO NOT Exit this TAB"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"2. Open a new tab, visit your proxy base url"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"3. Confirm your SSO is configured correctly and you can login on the new Tab"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"4. If Step 3 is successful, you can close this tab"}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(P.ZP,{onClick:i,children:"Done"})})]})]})},l1=t(62272),l2=t(92403),l4=t(29271),l5=t(34419),l3=e=>{let{accessToken:s,userID:t,proxySettings:l}=e,[a]=A.Z.useForm(),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)("");(0,d.useEffect)(()=>{let e="";u(l&&l.PROXY_BASE_URL&&void 0!==l.PROXY_BASE_URL?l.PROXY_BASE_URL:window.location.origin)},[l]);let x="".concat(m,"/scim/v2"),h=async e=>{if(!s||!t){eo.Z.fromBackend("You need to be logged in to create a SCIM token");return}try{i(!0);let l={key_alias:e.key_alias||"SCIM Access Token",team_id:null,models:[],allowed_routes:["/scim/*"]},a=await (0,j.keyCreateCall)(s,t,l);o(a),eo.Z.success("SCIM token created successfully")}catch(e){console.error("Error creating SCIM token:",e),eo.Z.fromBackend("Failed to create SCIM token: "+(0,sk.O)(e))}finally{i(!1)}};return(0,c.jsx)(y.Z,{numItems:1,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("div",{className:"flex items-center mb-4",children:(0,c.jsx)(S.Z,{children:"SCIM Configuration"})}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"System for Cross-domain Identity Management (SCIM) allows you to automatically provision and manage users and groups in LiteLLM."}),(0,c.jsx)(lF.Z,{}),(0,c.jsxs)("div",{className:"space-y-8",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-2",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full bg-blue-100 text-blue-700 mr-2",children:"1"}),(0,c.jsxs)(S.Z,{className:"text-lg flex items-center",children:[(0,c.jsx)(l1.Z,{className:"h-5 w-5 mr-2"}),"SCIM Tenant URL"]})]}),(0,c.jsx)(k.Z,{className:"text-gray-600 mb-3",children:"Use this URL in your identity provider SCIM integration settings."}),(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(_.Z,{value:x,disabled:!0,className:"flex-grow"}),(0,c.jsx)(C.CopyToClipboard,{text:x,onCopy:()=>eo.Z.success("URL copied to clipboard"),children:(0,c.jsxs)(b.Z,{variant:"primary",className:"ml-2 flex items-center",children:[(0,c.jsx)(tJ.Z,{className:"h-4 w-4 mr-1"}),"Copy"]})})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-2",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full bg-blue-100 text-blue-700 mr-2",children:"2"}),(0,c.jsxs)(S.Z,{className:"text-lg flex items-center",children:[(0,c.jsx)(l2.Z,{className:"h-5 w-5 mr-2"}),"Authentication Token"]})]}),(0,c.jsx)(l$.Z,{title:"Using SCIM",color:"blue",className:"mb-4",children:"You need a SCIM token to authenticate with the SCIM API. Create one below and use it in your SCIM provider configuration."}),n?(0,c.jsxs)(G.Z,{className:"border border-yellow-300 bg-yellow-50",children:[(0,c.jsxs)("div",{className:"flex items-center mb-2 text-yellow-800",children:[(0,c.jsx)(l4.Z,{className:"h-5 w-5 mr-2"}),(0,c.jsx)(S.Z,{className:"text-lg text-yellow-800",children:"Your SCIM Token"})]}),(0,c.jsx)(k.Z,{className:"text-yellow-800 mb-4 font-medium",children:"Make sure to copy this token now. You will not be able to see it again."}),(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(_.Z,{value:n.key,className:"flex-grow mr-2 bg-white",type:"password",disabled:!0}),(0,c.jsx)(C.CopyToClipboard,{text:n.key,onCopy:()=>eo.Z.success("Token copied to clipboard"),children:(0,c.jsxs)(b.Z,{variant:"primary",className:"flex items-center",children:[(0,c.jsx)(tJ.Z,{className:"h-4 w-4 mr-1"}),"Copy"]})})]}),(0,c.jsxs)(b.Z,{className:"mt-4 flex items-center",variant:"secondary",onClick:()=>o(null),children:[(0,c.jsx)(l5.Z,{className:"h-4 w-4 mr-1"}),"Create Another Token"]})]}):(0,c.jsx)("div",{className:"bg-gray-50 p-4 rounded-lg",children:(0,c.jsxs)(A.Z,{form:a,onFinish:h,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{name:"key_alias",label:"Token Name",rules:[{required:!0,message:"Please enter a name for your token"}],children:(0,c.jsx)(_.Z,{placeholder:"SCIM Access Token"})}),(0,c.jsx)(A.Z.Item,{children:(0,c.jsxs)(b.Z,{variant:"primary",type:"submit",loading:r,className:"flex items-center",children:[(0,c.jsx)(l2.Z,{className:"h-4 w-4 mr-1"}),"Create SCIM Token"]})})]})})]})]})]})})},l6=e=>{let{accessToken:s,onSuccess:t}=e,[l]=A.Z.useForm(),[a,r]=(0,d.useState)(!1);(0,d.useEffect)(()=>{(async()=>{if(s)try{let e=await (0,j.getSSOSettings)(s);if(e&&e.values){let s=e.values.ui_access_mode,t={};s&&"object"==typeof s?t={ui_access_mode_type:s.type,restricted_sso_group:s.restricted_sso_group,sso_group_jwt_field:s.sso_group_jwt_field}:"string"==typeof s&&(t={ui_access_mode_type:s,restricted_sso_group:e.values.restricted_sso_group,sso_group_jwt_field:e.values.team_ids_jwt_field||e.values.sso_group_jwt_field}),l.setFieldsValue(t)}}catch(e){console.error("Failed to load UI access settings:",e)}})()},[s,l]);let i=async e=>{if(!s){eo.Z.fromBackend("No access token available");return}r(!0);try{let l;l="all_authenticated_users"===e.ui_access_mode_type?{ui_access_mode:"none"}:{ui_access_mode:{type:e.ui_access_mode_type,restricted_sso_group:e.restricted_sso_group,sso_group_jwt_field:e.sso_group_jwt_field}},await (0,j.updateSSOSettings)(s,l),t()}catch(e){console.error("Failed to save UI access settings:",e),eo.Z.fromBackend("Failed to save UI access settings")}finally{r(!1)}};return(0,c.jsxs)("div",{style:{padding:"16px"},children:[(0,c.jsx)("div",{style:{marginBottom:"16px"},children:(0,c.jsx)(k.Z,{style:{fontSize:"14px",color:"#6b7280"},children:"Configure who can access the UI interface and how group information is extracted from JWT tokens."})}),(0,c.jsxs)(A.Z,{form:l,onFinish:i,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"UI Access Mode",name:"ui_access_mode_type",tooltip:"Controls who can access the UI interface",children:(0,c.jsxs)(I.default,{placeholder:"Select access mode",children:[(0,c.jsx)(I.default.Option,{value:"all_authenticated_users",children:"All Authenticated Users"}),(0,c.jsx)(I.default.Option,{value:"restricted_sso_group",children:"Restricted SSO Group"})]})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.ui_access_mode_type!==s.ui_access_mode_type,children:e=>{let{getFieldValue:s}=e;return"restricted_sso_group"===s("ui_access_mode_type")?(0,c.jsx)(A.Z.Item,{label:"Restricted SSO Group",name:"restricted_sso_group",rules:[{required:!0,message:"Please enter the restricted SSO group"}],children:(0,c.jsx)(_.Z,{placeholder:"ui-access-group"})}):null}}),(0,c.jsx)(A.Z.Item,{label:"SSO Group JWT Field",name:"sso_group_jwt_field",tooltip:"JWT field name that contains team/group information. Use dot notation to access nested fields.",children:(0,c.jsx)(_.Z,{placeholder:"groups"})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"16px"},children:(0,c.jsx)(P.ZP,{type:"primary",htmlType:"submit",loading:a,style:{backgroundColor:"#6366f1",borderColor:"#6366f1"},children:"Update UI Access Control"})})]})]})},l8=e=>{let{searchParams:s,accessToken:t,userID:l,showSSOBanner:a,premiumUser:r,proxySettings:i,userRole:n}=e,[o]=A.Z.useForm(),[u]=A.Z.useForm(),{Title:x,Paragraph:h}=en.default,[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)(null),[y,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)(!1),[w,k]=(0,d.useState)(!1),[S,C]=(0,d.useState)(!1),[I,E]=(0,d.useState)(!1),[M,O]=(0,d.useState)(!1),[D,F]=(0,d.useState)(!1),[R,z]=(0,d.useState)(!1),[U,q]=(0,d.useState)(!1),[V,B]=(0,d.useState)(!1),[K,H]=(0,d.useState)(!1),[Y,J]=(0,d.useState)([]),[W,$]=(0,d.useState)(null),[Q,X]=(0,d.useState)(!1);(0,m.useRouter)();let[ee,es]=(0,d.useState)(null);console.log=function(){};let et=sO(),el="All IP Addresses Allowed",ea=et;ea+="/fallback/login";let er=async()=>{if(t&&r)try{let e=await (0,j.getSSOSettings)(t);if(console.log("SSO data:",e),e&&e.values){let s=e.values.google_client_id&&e.values.google_client_secret,t=e.values.microsoft_client_id&&e.values.microsoft_client_secret,l=e.values.generic_client_id&&e.values.generic_client_secret;X(s||t||l)}else X(!1)}catch(e){console.error("Error checking SSO configuration:",e),X(!1)}},ei=async()=>{try{if(!0!==r){eo.Z.fromBackend("This feature is only available for premium users. Please upgrade your account.");return}if(t){let e=await (0,j.getAllowedIPs)(t);J(e&&e.length>0?e:[el])}else J([el])}catch(e){console.error("Error fetching allowed IPs:",e),eo.Z.fromBackend("Failed to fetch allowed IPs ".concat(e)),J([el])}finally{!0===r&&z(!0)}},ec=async e=>{try{if(t){await (0,j.addAllowedIP)(t,e.ip);let s=await (0,j.getAllowedIPs)(t);J(s),eo.Z.success("IP address added successfully")}}catch(e){console.error("Error adding IP:",e),eo.Z.fromBackend("Failed to add IP address ".concat(e))}finally{q(!1)}},ed=async e=>{$(e),B(!0)},em=async()=>{if(W&&t)try{await (0,j.deleteAllowedIP)(t,W);let e=await (0,j.getAllowedIPs)(t);J(e.length>0?e:[el]),eo.Z.success("IP address deleted successfully")}catch(e){console.error("Error deleting IP:",e),eo.Z.fromBackend("Failed to delete IP address ".concat(e))}finally{B(!1),$(null)}};(0,d.useEffect)(()=>{(async()=>{if(null!=t){let e=[],s=await (0,j.userGetAllUsersCall)(t,"proxy_admin_viewer");console.log("proxy admin viewer response: ",s);let l=s.users;console.log("proxy viewers response: ".concat(l)),l.forEach(s=>{e.push({user_role:s.user_role,user_id:s.user_id,user_email:s.user_email})}),console.log("proxy viewers: ".concat(l));let a=(await (0,j.userGetAllUsersCall)(t,"proxy_admin")).users;a.forEach(s=>{e.push({user_role:s.user_role,user_id:s.user_id,user_email:s.user_email})}),console.log("proxy admins: ".concat(a)),console.log("combinedList: ".concat(e)),v(e),es(await (0,j.getPossibleUserRoles)(t))}})()},[t]),(0,d.useEffect)(()=>{er()},[t,r]);let eu=()=>{H(!1)};return console.log("admins: ".concat(null==f?void 0:f.length)),(0,c.jsxs)("div",{className:"w-full m-2 mt-2 p-8",children:[(0,c.jsx)(x,{level:4,children:"Admin Access "}),(0,c.jsx)(h,{children:"Go to 'Internal Users' page to add other admins."}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{children:[(0,c.jsx)(ss.Z,{children:"Security Settings"}),(0,c.jsx)(ss.Z,{children:"SCIM"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(x,{level:4,children:" ✨ Security Settings"}),(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"1rem",marginTop:"1rem",marginLeft:"0.5rem"},children:[(0,c.jsx)("div",{children:(0,c.jsx)(b.Z,{style:{width:"150px"},onClick:()=>!0===r?O(!0):eo.Z.fromBackend("Only premium users can add SSO"),children:Q?"Edit SSO Settings":"Add SSO"})}),(0,c.jsx)("div",{children:(0,c.jsx)(b.Z,{style:{width:"150px"},onClick:ei,children:"Allowed IPs"})}),(0,c.jsx)("div",{children:(0,c.jsx)(b.Z,{style:{width:"150px"},onClick:()=>!0===r?H(!0):eo.Z.fromBackend("Only premium users can configure UI access control"),children:"UI Access Control"})})]})]}),(0,c.jsxs)("div",{className:"flex justify-start mb-4",children:[(0,c.jsx)(l0,{isAddSSOModalVisible:M,isInstructionsModalVisible:D,handleAddSSOOk:()=>{O(!1),o.resetFields(),t&&r&&er()},handleAddSSOCancel:()=>{O(!1),o.resetFields()},handleShowInstructions:e=>{O(!1),F(!0)},handleInstructionsOk:()=>{F(!1),t&&r&&er()},handleInstructionsCancel:()=>{F(!1),t&&r&&er()},form:o,accessToken:t,ssoConfigured:Q}),(0,c.jsx)(T.Z,{title:"Manage Allowed IP Addresses",width:800,visible:R,onCancel:()=>z(!1),footer:[(0,c.jsx)(b.Z,{className:"mx-1",onClick:()=>q(!0),children:"Add IP Address"},"add"),(0,c.jsx)(b.Z,{onClick:()=>z(!1),children:"Close"},"close")],children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"IP Address"}),(0,c.jsx)(sB.Z,{className:"text-right",children:"Action"})]})}),(0,c.jsx)(sU.Z,{children:Y.map((e,s)=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:e}),(0,c.jsx)(sq.Z,{className:"text-right",children:e!==el&&(0,c.jsx)(b.Z,{onClick:()=>ed(e),color:"red",size:"xs",children:"Delete"})})]},s))})]})}),(0,c.jsx)(T.Z,{title:"Add Allowed IP Address",visible:U,onCancel:()=>q(!1),footer:null,children:(0,c.jsxs)(A.Z,{onFinish:ec,children:[(0,c.jsx)(A.Z.Item,{name:"ip",rules:[{required:!0,message:"Please enter an IP address"}],children:(0,c.jsx)(L.default,{placeholder:"Enter IP address"})}),(0,c.jsx)(A.Z.Item,{children:(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Add IP Address"})})]})}),(0,c.jsx)(T.Z,{title:"Confirm Delete",visible:V,onCancel:()=>B(!1),onOk:em,footer:[(0,c.jsx)(b.Z,{className:"mx-1",onClick:()=>em(),children:"Yes"},"delete"),(0,c.jsx)(b.Z,{onClick:()=>B(!1),children:"Close"},"close")],children:(0,c.jsxs)("p",{children:["Are you sure you want to delete the IP address: ",W,"?"]})}),(0,c.jsx)(T.Z,{title:"UI Access Control Settings",visible:K,width:600,footer:null,onOk:eu,onCancel:()=>{H(!1)},children:(0,c.jsx)(l6,{accessToken:t,onSuccess:()=>{eu(),eo.Z.success("UI Access Control settings updated successfully")}})})]}),(0,c.jsxs)(l$.Z,{title:"Login without SSO",color:"teal",children:["If you need to login without sso, you can access"," ",(0,c.jsxs)("a",{href:ea,target:"_blank",children:[(0,c.jsx)("b",{children:ea})," "]})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(l3,{accessToken:t,userID:l,proxySettings:i})})]})]})]})};let{Title:l7}=en.default;var l9=e=>{let{accessToken:s}=e,[t,l]=(0,d.useState)(!0),[a,r]=(0,d.useState)([]);(0,d.useEffect)(()=>{i()},[s]);let i=async()=>{if(s){l(!0);try{let e=await (0,j.getEmailEventSettings)(s);r(e.settings)}catch(e){console.error("Failed to fetch email event settings:",e),eo.Z.fromBackend(e)}finally{l(!1)}}},n=(e,s)=>{r(a.map(t=>t.event===e?{...t,enabled:s}:t))},o=async()=>{if(s)try{await (0,j.updateEmailEventSettings)(s,{settings:a}),eo.Z.success("Email event settings updated successfully")}catch(e){console.error("Failed to update email event settings:",e),eo.Z.fromBackend(e)}},m=async()=>{if(s)try{await (0,j.resetEmailEventSettings)(s),eo.Z.success("Email event settings reset to defaults"),i()}catch(e){console.error("Failed to reset email event settings:",e),eo.Z.fromBackend(e)}},u=e=>{if(e.includes("Virtual Key Created"))return"An email will be sent to the user when a new virtual key is created with their user ID";if(e.includes("New User Invitation"))return"An email will be sent to the email address of the user when a new user is created";{let s=e.split(/(?=[A-Z])/).join(" ").toLowerCase();return"Receive an email notification when ".concat(s)}};return(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(l7,{level:4,children:"Email Notifications"}),(0,c.jsx)(k.Z,{children:"Select which events should trigger email notifications."}),(0,c.jsx)(K.Z,{}),t?(0,c.jsx)("div",{style:{textAlign:"center",padding:"20px"},children:(0,c.jsx)(eF.Z,{size:"large"})}):(0,c.jsx)("div",{className:"space-y-4",children:a.map(e=>(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(eR.Z,{checked:e.enabled,onChange:s=>n(e.event,s.target.checked)}),(0,c.jsxs)("div",{className:"ml-3",children:[(0,c.jsx)(k.Z,{children:e.event}),(0,c.jsx)("div",{className:"text-sm text-gray-500 block",children:u(e.event)})]})]},e.event))}),(0,c.jsxs)("div",{className:"mt-6 flex space-x-4",children:[(0,c.jsx)(b.Z,{onClick:o,disabled:t,children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:m,variant:"secondary",disabled:t,children:"Reset to Defaults"})]})]})};let{Title:ae}=en.default;var as=e=>{let{accessToken:s,premiumUser:t,alerts:l}=e,a=async()=>{if(!s)return;let e={};l.filter(e=>"email"===e.name).forEach(s=>{var t;Object.entries(null!==(t=s.variables)&&void 0!==t?t:{}).forEach(s=>{let[t,l]=s,a=document.querySelector('input[name="'.concat(t,'"]'));a&&a.value&&(e[t]=null==a?void 0:a.value)})}),console.log("updatedVariables",e);try{await (0,j.setCallbacksCall)(s,{general_settings:{alerting:["email"]},environment_variables:e}),eo.Z.success("Email settings updated successfully")}catch(e){eo.Z.fromBackend(e)}};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"mt-6 mb-6",children:(0,c.jsx)(l9,{accessToken:s})}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(ae,{level:4,children:"Email Server Settings"}),(0,c.jsxs)(k.Z,{children:[(0,c.jsxs)("a",{href:"https://docs.litellm.ai/docs/proxy/email",target:"_blank",style:{color:"blue"},children:[" ","LiteLLM Docs: email alerts"]})," ",(0,c.jsx)("br",{})]}),(0,c.jsx)("div",{className:"flex w-full",children:l.filter(e=>"email"===e.name).map((e,s)=>{var l;return(0,c.jsx)(sq.Z,{children:(0,c.jsx)("ul",{children:(0,c.jsx)(y.Z,{numItems:2,children:Object.entries(null!==(l=e.variables)&&void 0!==l?l:{}).map(e=>{let[s,l]=e;return(0,c.jsxs)("li",{className:"mx-2 my-2",children:[!0!=t&&("EMAIL_LOGO_URL"===s||"EMAIL_SUPPORT_CONTACT"===s)?(0,c.jsxs)("div",{children:[(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:(0,c.jsxs)(k.Z,{className:"mt-2",children:[" ✨ ",s]})}),(0,c.jsx)(_.Z,{name:s,defaultValue:l,type:"password",disabled:!0,style:{width:"400px"}})]}):(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mt-2",children:s}),(0,c.jsx)(_.Z,{name:s,defaultValue:l,type:"password",style:{width:"400px"}})]}),(0,c.jsxs)("p",{style:{fontSize:"small",fontStyle:"italic"},children:["SMTP_HOST"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the SMTP host address, e.g. `smtp.resend.com`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"SMTP_PORT"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the SMTP port number, e.g. `587`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"SMTP_USERNAME"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the SMTP username, e.g. `username`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"SMTP_PASSWORD"===s&&(0,c.jsx)("span",{style:{color:"red"},children:" Required * "}),"SMTP_SENDER_EMAIL"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the sender email address, e.g. `sender@berri.ai`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"TEST_EMAIL_ADDRESS"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Email Address to send `Test Email Alert` to. example: `info@berri.ai`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"EMAIL_LOGO_URL"===s&&(0,c.jsx)("div",{style:{color:"gray"},children:"(Optional) Customize the Logo that appears in the email, pass a url to your logo"}),"EMAIL_SUPPORT_CONTACT"===s&&(0,c.jsx)("div",{style:{color:"gray"},children:"(Optional) Customize the support email address that appears in the email. Default is support@berri.ai"})]})]},s)})})})},s)})}),(0,c.jsx)(b.Z,{className:"mt-2",onClick:()=>a(),children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:async()=>{if(s)try{await (0,j.serviceHealthCheck)(s,"email"),eo.Z.success("Email test triggered. Check your configured email inbox/logs.")}catch(e){eo.Z.fromBackend(e)}},className:"mx-2",children:"Test Email Alerts"})]})]})},at=e=>{let{alertingSettings:s,handleInputChange:t,handleResetField:l,handleSubmit:a,premiumUser:r}=e,[i]=A.Z.useForm();return(0,c.jsxs)(A.Z,{form:i,onFinish:()=>{console.log("INSIDE ONFINISH");let e=i.getFieldsValue(),s=Object.entries(e).every(e=>{let[s,t]=e;return"boolean"!=typeof t&&(""===t||null==t)});console.log("formData: ".concat(JSON.stringify(e),", isEmpty: ").concat(s)),s?console.log("Some form fields are empty."):a(e)},labelAlign:"left",children:[s.map((e,s)=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsxs)(sq.Z,{align:"center",children:[(0,c.jsx)(k.Z,{children:e.field_name}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:e.field_description})]}),e.premium_field?r?(0,c.jsx)(A.Z.Item,{name:e.field_name,children:(0,c.jsx)(sq.Z,{children:"Integer"===e.field_type?(0,c.jsx)(e8.Z,{step:1,value:e.field_value,onChange:s=>t(e.field_name,s)}):"Boolean"===e.field_type?(0,c.jsx)(tX.Z,{checked:e.field_value,onChange:s=>t(e.field_name,s)}):(0,c.jsx)(L.default,{value:e.field_value,onChange:s=>t(e.field_name,s)})})}):(0,c.jsx)(sq.Z,{children:(0,c.jsx)(b.Z,{className:"flex items-center justify-center",children:(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"✨ Enterprise Feature"})})}):(0,c.jsx)(A.Z.Item,{name:e.field_name,className:"mb-0",valuePropName:"Boolean"===e.field_type?"checked":"value",children:(0,c.jsx)(sq.Z,{children:"Integer"===e.field_type?(0,c.jsx)(e8.Z,{step:1,value:e.field_value,onChange:s=>t(e.field_name,s),className:"p-0"}):"Boolean"===e.field_type?(0,c.jsx)(tX.Z,{checked:e.field_value,onChange:s=>{t(e.field_name,s),i.setFieldsValue({[e.field_name]:s})}}):(0,c.jsx)(L.default,{value:e.field_value,onChange:s=>t(e.field_name,s)})})}),(0,c.jsx)(sq.Z,{children:!0==e.stored_in_db?(0,c.jsx)(se.Z,{icon:eb.Z,className:"text-white",children:"In DB"}):!1==e.stored_in_db?(0,c.jsx)(se.Z,{className:"text-gray bg-white outline",children:"In Config"}):(0,c.jsx)(se.Z,{className:"text-gray bg-white outline",children:"Not Set"})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(sR.Z,{icon:W.Z,color:"red",onClick:()=>l(e.field_name,s),children:"Reset"})})]},s)),(0,c.jsx)("div",{children:(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Update Settings"})})]})},al=e=>{let{accessToken:s,premiumUser:t}=e,[l,a]=(0,d.useState)([]);return(0,d.useEffect)(()=>{s&&(0,j.alertingSettingsCall)(s).then(e=>{a(e)})},[s]),(0,c.jsx)(at,{alertingSettings:l,handleInputChange:(e,s)=>{let t=l.map(t=>t.field_name===e?{...t,field_value:s}:t);console.log("updatedSettings: ".concat(JSON.stringify(t))),a(t)},handleResetField:(e,t)=>{if(s)try{let s=l.map(s=>s.field_name===e?{...s,stored_in_db:null,field_value:s.field_default_value}:s);a(s)}catch(e){console.log("ERROR OCCURRED!")}},handleSubmit:e=>{if(!s||(console.log("formValues: ".concat(e)),null==e||void 0==e))return;let t={};l.forEach(e=>{t[e.field_name]=e.field_value});let a={...e,...t};console.log("mergedFormValues: ".concat(JSON.stringify(a)));let{slack_alerting:r,...i}=a;console.log("slack_alerting: ".concat(r,", alertingArgs: ").concat(JSON.stringify(i)));try{(0,j.updateConfigFieldSetting)(s,"alerting_args",i),"boolean"==typeof r&&(!0==r?(0,j.updateConfigFieldSetting)(s,"alerting",["slack"]):(0,j.updateConfigFieldSetting)(s,"alerting",[])),eo.Z.success("Wait 10s for proxy to update.")}catch(e){}},premiumUser:t})},aa=t(38994);let{Title:ar,Paragraph:ai}=en.default;var an=e=>{let{accessToken:s,userRole:t,userID:l,premiumUser:a}=e,[r,n]=(0,d.useState)([]),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(!1),[h]=A.Z.useForm(),[p]=A.Z.useForm(),[g,f]=(0,d.useState)(null),[v,N]=(0,d.useState)(""),[Z,w]=(0,d.useState)({}),[S,C]=(0,d.useState)([]),[E,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)([]),[F,R]=(0,d.useState)([]),[z,U]=(0,d.useState)(!1),[q,V]=(0,d.useState)(null),[B,K]=(0,d.useState)(!1),[H,Y]=(0,d.useState)(null);(0,d.useEffect)(()=>{if(z&&q){let e=Object.fromEntries(Object.entries(q.variables||{}).map(e=>{let[s,t]=e;return[s,null!=t?t:""]}));p.setFieldsValue(e)}},[z,q,p]);let J=e=>{S.includes(e)?C(S.filter(s=>s!==e)):C([...S,e])},Q={llm_exceptions:"LLM Exceptions",llm_too_slow:"LLM Responses Too Slow",llm_requests_hanging:"LLM Requests Hanging",budget_alerts:"Budget Alerts (API Keys, Users)",db_exceptions:"Database Exceptions (Read/Write)",daily_reports:"Weekly/Monthly Spend Reports",outage_alerts:"Outage Alerts",region_outage_alerts:"Region Outage Alerts"};(0,d.useEffect)(()=>{s&&t&&l&&(0,j.getCallbacksCall)(s,l,t).then(e=>{n(e.callbacks),D(e.available_callbacks);let s=e.alerts;if(s&&s.length>0){let e=s[0],t=e.variables.SLACK_WEBHOOK_URL;C(e.active_alerts),N(t),w(e.alerts_to_webhook)}m(s)})},[s,t,l]);let X=e=>S&&S.includes(e),ee=async e=>{if(!s||!q)return;let a={};Object.entries(e).forEach(e=>{let[s,t]=e;"callback"!==s&&(a[s]=t)});let r={environment_variables:e,litellm_settings:{success_callback:[q.name]}};try{if(await (0,j.setCallbacksCall)(s,r),eo.Z.success("Callback updated successfully"),U(!1),p.resetFields(),V(null),l&&t){let e=await (0,j.getCallbacksCall)(s,l,t);n(e.callbacks)}}catch(e){eo.Z.fromBackend(e)}},es=async e=>{if(!s)return;let a=null==e?void 0:e.callback,r={};Object.entries(e).forEach(e=>{let[s,t]=e;"callback"!==s&&(r[s]=t)});try{await (0,j.setCallbacksCall)(s,{environment_variables:e,litellm_settings:{success_callback:[a]}}),eo.Z.success("Callback ".concat(a," added successfully")),M(!1),h.resetFields(),f(null),R([]);let r=await (0,j.getCallbacksCall)(s,l||"",t||"");n(r.callbacks)}catch(e){eo.Z.fromBackend(e)}},el=e=>{f(e.litellm_callback_name),e&&e.litellm_callback_params?R(e.litellm_callback_params):R([])},ea=async()=>{if(!s)return;let e={};Object.entries(Q).forEach(s=>{let[t,l]=s,a=document.querySelector('input[name="'.concat(t,'"]')),r=(null==a?void 0:a.value)||"";e[t]=r});try{await (0,j.setCallbacksCall)(s,{general_settings:{alert_to_webhook_url:e,alert_types:S}})}catch(e){eo.Z.fromBackend(e)}eo.Z.success("Alerts updated successfully")},er=e=>{Y(e),K(!0)},en=async()=>{if(H&&s)try{if(await (0,j.deleteCallback)(s,H),eo.Z.success("Callback ".concat(H," deleted successfully")),l&&t){let e=await (0,j.getCallbacksCall)(s,l,t);n(e.callbacks)}K(!1),Y(null)}catch(e){console.error("Failed to delete callback:",e),eo.Z.fromBackend(e)}};return s?(0,c.jsxs)("div",{className:"w-full mx-4",children:[(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"line",defaultValue:"1",children:[(0,c.jsx)(ss.Z,{value:"1",children:"Logging Callbacks"}),(0,c.jsx)(ss.Z,{value:"2",children:"Alerting Types"}),(0,c.jsx)(ss.Z,{value:"3",children:"Alerting Settings"}),(0,c.jsx)(ss.Z,{value:"4",children:"Email Alerts"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)(ar,{level:4,children:"Active Logging Callbacks"}),(0,c.jsx)(y.Z,{numItems:2,children:(0,c.jsx)(G.Z,{className:"max-h-[50vh]",children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sB.Z,{children:"Callback Name"})})}),(0,c.jsx)(sU.Z,{children:r.map((e,t)=>(0,c.jsxs)(sK.Z,{className:"flex justify-between",children:[(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{children:e.name})}),(0,c.jsx)(sq.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"flex justify-between",children:[(0,c.jsx)(sR.Z,{icon:s4.Z,size:"sm",onClick:()=>{V(e),U(!0)}}),(0,c.jsx)(sR.Z,{icon:W.Z,size:"sm",onClick:()=>er(e.name),className:"text-red-500 hover:text-red-700 cursor-pointer"}),(0,c.jsx)(b.Z,{onClick:async()=>{try{await (0,j.serviceHealthCheck)(s,e.name),eo.Z.success("Health check triggered")}catch(e){eo.Z.fromBackend((0,sk.O)(e))}},className:"ml-2",variant:"secondary",children:"Test Callback"})]})})]},t))})]})})}),(0,c.jsx)(b.Z,{className:"mt-2",onClick:()=>M(!0),children:"Add Callback"})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(k.Z,{className:"my-2",children:["Alerts are only supported for Slack Webhook URLs. Get your webhook urls from"," ",(0,c.jsx)("a",{href:"https://api.slack.com/messaging/webhooks",target:"_blank",style:{color:"blue"},children:"here"})]}),(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{}),(0,c.jsx)(sB.Z,{}),(0,c.jsx)(sB.Z,{children:"Slack Webhook URL"})]})}),(0,c.jsx)(sU.Z,{children:Object.entries(Q).map((e,s)=>{let[t,l]=e;return(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:"region_outage_alerts"==t?a?(0,c.jsx)(tX.Z,{id:"switch",name:"switch",checked:X(t),onChange:()=>J(t)}):(0,c.jsx)(b.Z,{className:"flex items-center justify-center",children:(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"✨ Enterprise Feature"})}):(0,c.jsx)(tX.Z,{id:"switch",name:"switch",checked:X(t),onChange:()=>J(t)})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{children:l})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(_.Z,{name:t,type:"password",defaultValue:Z&&Z[t]?Z[t]:v})})]},s)})})]}),(0,c.jsx)(b.Z,{size:"xs",className:"mt-2",onClick:ea,children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:async()=>{try{await (0,j.serviceHealthCheck)(s,"slack"),eo.Z.success("Alert test triggered. Test request to slack made - check logs/alerts on slack to verify")}catch(e){eo.Z.fromBackend((0,sk.O)(e))}},className:"mx-2",children:"Test Alerts"})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(al,{accessToken:s,premiumUser:a})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(as,{accessToken:s,premiumUser:a,alerts:o})})]})]})}),(0,c.jsxs)(T.Z,{title:"Add Logging Callback",visible:E,width:800,onCancel:()=>{M(!1),f(null),R([])},footer:null,children:[(0,c.jsxs)("a",{href:"https://docs.litellm.ai/docs/proxy/logging",className:"mb-8 mt-4",target:"_blank",style:{color:"blue"},children:[" ","LiteLLM Docs: Logging"]}),(0,c.jsx)(A.Z,{form:h,onFinish:es,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(aa.Z,{label:"Callback",name:"callback",rules:[{required:!0,message:"Please select a callback"}],children:(0,c.jsx)(I.default,{onChange:e=>{let s=O[e];s&&el(s)},children:Object.entries(i).map(e=>{var s;let[t,l]=e;return(0,c.jsx)(ei.Z,{value:$[t],children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(null===(s=et[l])||void 0===s?void 0:s.logo)?(0,c.jsx)("div",{className:"w-5 h-5 flex items-center justify-center",children:(0,c.jsx)("img",{src:et[l].logo,alt:"".concat(t," logo"),className:"w-5 h-5",onError:e=>{e.currentTarget.style.display="none"}})}):(0,c.jsx)("div",{className:"w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",children:l.charAt(0).toUpperCase()}),(0,c.jsx)("span",{children:l})]})},l)})})}),F&&F.map(e=>(0,c.jsx)(aa.Z,{label:e,name:e,rules:[{required:!0,message:"Please enter the value for "+e}],children:(0,c.jsx)(L.default.Password,{})},e)),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Save"})})]})})]}),(0,c.jsx)(T.Z,{visible:z,width:800,title:"Edit ".concat(null==q?void 0:q.name," Settings"),onCancel:()=>{U(!1),V(null)},footer:null,children:(0,c.jsxs)(A.Z,{form:p,onFinish:ee,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(c.Fragment,{children:q&&q.variables&&Object.entries(q.variables).map(e=>{let[s]=e;return(0,c.jsx)(aa.Z,{label:s,name:s,rules:[{required:!0,message:"Please enter the value for ".concat(s)}],children:(0,c.jsx)(L.default.Password,{})},s)})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Save"})})]})}),(0,c.jsx)(T.Z,{title:"Confirm Delete",visible:B,onOk:en,onCancel:()=>{K(!1),Y(null)},okText:"Delete",cancelText:"Cancel",okButtonProps:{danger:!0},children:(0,c.jsxs)("p",{children:["Are you sure you want to delete the callback - ",H,"? This action cannot be undone."]})})]}):null},ao=t(54250),ac=t(70450),ad=e=>{let{models:s,accessToken:t,routerSettings:l,setRouterSettings:a}=e,[r]=A.Z.useForm(),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(""),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{try{let e=await eG(t);console.log("Fetched models for fallbacks:",e),x(e)}catch(e){console.error("Error fetching model info for fallbacks:",e)}})()},[t]);let g=()=>{n(!1),r.resetFields(),p([]),m("")};return(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{className:"mx-auto",onClick:()=>n(!0),icon:()=>(0,c.jsx)("span",{className:"mr-1",children:"+"}),children:"Add Fallbacks"}),(0,c.jsx)(T.Z,{title:(0,c.jsx)("div",{className:"pb-4 border-b border-gray-100",children:(0,c.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add Fallbacks"})}),open:i,width:900,footer:null,onOk:()=>{n(!1),r.resetFields(),p([]),m("")},onCancel:g,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,c.jsxs)("div",{className:"mt-6",children:[(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsx)("p",{className:"text-gray-600",children:"Configure fallback models to improve reliability. When the primary model fails or is unavailable, requests will automatically route to the specified fallback models in order."})}),(0,c.jsxs)(A.Z,{form:r,onFinish:e=>{console.log(e);let{model_name:s,models:i}=e,o=[...l.fallbacks||[],{[s]:i}],c={...l,fallbacks:o};console.log(c);try{(0,j.setCallbacksCall)(t,{router_settings:c}),a(c)}catch(e){eo.Z.fromBackend("Failed to update router settings: "+e)}eo.Z.success("router settings updated successfully"),n(!1),r.resetFields(),p([]),m("")},layout:"vertical",className:"space-y-6",children:[(0,c.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,c.jsxs)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Primary Model ",(0,c.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"model_name",rules:[{required:!0,message:"Please select the primary model that needs fallbacks"}],className:"!mb-0",children:[(0,c.jsx)(ao.Z,{placeholder:"Select the model that needs fallback protection",value:o,onValueChange:e=>{m(e);let s=h.filter(s=>s!==e);p(s),r.setFieldValue("models",s),r.setFieldValue("model_name",e)},children:Array.from(new Set(u.map(e=>e.model_group))).map((e,s)=>(0,c.jsx)(ac.Z,{value:e,children:e},s))}),(0,c.jsx)("p",{className:"text-sm text-gray-500 mt-1",children:"This is the primary model that users will request"})]}),(0,c.jsx)("div",{className:"border-t border-gray-200 my-6"}),(0,c.jsxs)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Fallback Models (select multiple) ",(0,c.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"models",rules:[{required:!0,message:"Please select at least one fallback model"}],className:"!mb-0",children:[(0,c.jsxs)("div",{className:"space-y-3",children:[h.length>0&&(0,c.jsxs)("div",{className:"border border-gray-200 rounded-lg p-3 bg-gray-50",children:[(0,c.jsx)("p",{className:"text-sm font-medium text-gray-700 mb-2",children:"Fallback Order:"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:h.map((e,s)=>(0,c.jsxs)("div",{className:"flex items-center bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm",children:[(0,c.jsxs)("span",{className:"font-medium mr-2",children:[s+1,"."]}),(0,c.jsx)("span",{children:e}),(0,c.jsx)("button",{type:"button",onClick:()=>{let s=h.filter(s=>s!==e);p(s),r.setFieldValue("models",s)},className:"ml-2 text-blue-600 hover:text-blue-800",children:"\xd7"})]},e))})]}),(0,c.jsx)(ao.Z,{placeholder:"Add a fallback model",value:"",onValueChange:e=>{if(e&&!h.includes(e)){let s=[...h,e];p(s),r.setFieldValue("models",s)}},children:Array.from(new Set(u.map(e=>e.model_group))).filter(e=>e!==o&&!h.includes(e)).sort().map(e=>(0,c.jsx)(ac.Z,{value:e,children:e},e))})]}),(0,c.jsxs)("p",{className:"text-sm text-gray-500 mt-1",children:[(0,c.jsx)("strong",{children:"Order matters:"})," Models will be tried in the order shown above (1st, 2nd, 3rd, etc.)"]})]})]}),(0,c.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:g,children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",type:"submit",children:"Add Fallbacks"})]})]})]})})]})},am=t(26433);async function au(e,s){console.log=function(){},console.log("isLocal:",!1);let t=window.location.origin,l=new am.ZP.OpenAI({apiKey:s,baseURL:t,dangerouslyAllowBrowser:!0});try{let s=await l.chat.completions.create({model:e,messages:[{role:"user",content:"Hi, this is a test message"}],mock_testing_fallbacks:!0});eo.Z.success((0,c.jsxs)("span",{children:["Test model=",(0,c.jsx)("strong",{children:e}),", received model=",(0,c.jsx)("strong",{children:s.model}),". See"," ",(0,c.jsx)("a",{href:"#",onClick:()=>window.open("https://docs.litellm.ai/docs/proxy/reliability","_blank"),style:{textDecoration:"underline",color:"blue"},children:"curl"})]}))}catch(e){eo.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e))}}let ax={ttl:3600,lowest_latency_buffer:0},ah=e=>{let{selectedStrategy:s,strategyArgs:t,paramExplanation:l}=e;return(0,c.jsxs)(N.Z,{children:[(0,c.jsx)(w.Z,{className:"text-sm font-medium text-tremor-content-strong dark:text-dark-tremor-content-strong",children:"Routing Strategy Specific Args"}),(0,c.jsx)(Z.Z,{children:"latency-based-routing"==s?(0,c.jsx)(G.Z,{children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Setting"}),(0,c.jsx)(sB.Z,{children:"Value"})]})}),(0,c.jsx)(sU.Z,{children:Object.entries(t).map(e=>{let[s,t]=e;return(0,c.jsxs)(sK.Z,{children:[(0,c.jsxs)(sq.Z,{children:[(0,c.jsx)(k.Z,{children:s}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:l[s]})]}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(_.Z,{name:s,defaultValue:"object"==typeof t?JSON.stringify(t,null,2):t.toString()})})]},s)})})]})}):(0,c.jsx)(k.Z,{children:"No specific settings"})})]})};var ap=e=>{let{accessToken:s,userRole:t,userID:l,modelData:a}=e,[r,i]=(0,d.useState)({}),[n,o]=(0,d.useState)({}),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1),[p]=A.Z.useForm(),[g,f]=(0,d.useState)(null),[N,Z]=(0,d.useState)(null),[w,C]=(0,d.useState)(null),I={routing_strategy_args:"(dict) Arguments to pass to the routing strategy",routing_strategy:"(string) Routing strategy to use",allowed_fails:"(int) Number of times a deployment can fail before being added to cooldown",cooldown_time:"(int) time in seconds to cooldown a deployment after failure",num_retries:"(int) Number of retries for failed requests. Defaults to 0.",timeout:"(float) Timeout for requests. Defaults to None.",retry_after:"(int) Minimum time to wait before retrying a failed request",ttl:"(int) Sliding window to look back over when calculating the average latency of a deployment. Default - 1 hour (in seconds).",lowest_latency_buffer:"(float) Shuffle between deployments within this % of the lowest latency. Default - 0 (i.e. always pick lowest latency)."};(0,d.useEffect)(()=>{s&&t&&l&&((0,j.getCallbacksCall)(s,l,t).then(e=>{console.log("callbacks",e);let s=e.router_settings;"model_group_retry_policy"in s&&delete s.model_group_retry_policy,i(s)}),(0,j.getGeneralSettingsCall)(s).then(e=>{u(e)}))},[s,t,l]);let T=async e=>{if(!s)return;console.log("received key: ".concat(e)),console.log("routerSettings['fallbacks']: ".concat(r.fallbacks));let t=r.fallbacks.map(s=>(e in s&&delete s[e],s)).filter(e=>Object.keys(e).length>0),l={...r,fallbacks:t};try{await (0,j.setCallbacksCall)(s,{router_settings:l}),i(l),eo.Z.success("Router settings updated successfully")}catch(e){eo.Z.fromBackend("Failed to update router settings: "+e)}},E=(e,s)=>{u(m.map(t=>t.field_name===e?{...t,field_value:s}:t))},P=(e,t)=>{if(!s)return;let l=m[t].field_value;if(null!=l&&void 0!=l)try{(0,j.updateConfigFieldSetting)(s,e,l);let t=m.map(s=>s.field_name===e?{...s,stored_in_db:!0}:s);u(t)}catch(e){}},L=(e,t)=>{if(s)try{(0,j.deleteConfigFieldSetting)(s,e);let t=m.map(s=>s.field_name===e?{...s,stored_in_db:null,field_value:null}:s);u(t)}catch(e){}},M=e=>{if(!s)return;console.log("router_settings",e);let t=new Set(["allowed_fails","cooldown_time","num_retries","timeout","retry_after"]),l=new Set(["model_group_alias","retry_policy"]),a=(e,s,a)=>{if(void 0===s)return a;let r=s.trim();if("null"===r.toLowerCase())return null;if(t.has(e)){let e=Number(r);return Number.isNaN(e)?a:e}if(l.has(e)){if(""===r)return null;try{return JSON.parse(r)}catch(e){return a}}return"true"===r.toLowerCase()||"false"!==r.toLowerCase()&&r},r=Object.fromEntries(Object.entries(e).map(e=>{let[s,t]=e;if("routing_strategy_args"!==s&&"routing_strategy"!==s){let e=document.querySelector('input[name="'.concat(s,'"]')),l=a(s,null==e?void 0:e.value,t);return[s,l]}if("routing_strategy"===s)return[s,N];if("routing_strategy_args"===s&&"latency-based-routing"===N){let e={},s=document.querySelector('input[name="lowest_latency_buffer"]'),t=document.querySelector('input[name="ttl"]');return(null==s?void 0:s.value)&&(e.lowest_latency_buffer=Number(s.value)),(null==t?void 0:t.value)&&(e.ttl=Number(t.value)),console.log("setRoutingStrategyArgs: ".concat(e)),["routing_strategy_args",e]}return null}).filter(e=>null!=e));console.log("updatedVariables",r);try{(0,j.setCallbacksCall)(s,{router_settings:r})}catch(e){eo.Z.fromBackend("Failed to update router settings: "+e)}eo.Z.success("router settings updated successfully")};return s?(0,c.jsx)("div",{className:"w-full mx-4",children:(0,c.jsxs)(st.Z,{className:"gap-2 p-8 h-[75vh] w-full mt-2",children:[(0,c.jsxs)(sl.Z,{variant:"line",defaultValue:"1",children:[(0,c.jsx)(ss.Z,{value:"1",children:"Loadbalancing"}),(0,c.jsx)(ss.Z,{value:"2",children:"Fallbacks"}),(0,c.jsx)(ss.Z,{value:"3",children:"General"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:[(0,c.jsx)(S.Z,{children:"Router Settings"}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Setting"}),(0,c.jsx)(sB.Z,{children:"Value"})]})}),(0,c.jsx)(sU.Z,{children:Object.entries(r).filter(e=>{let[s,t]=e;return"fallbacks"!=s&&"context_window_fallbacks"!=s&&"routing_strategy_args"!=s}).map(e=>{let[s,t]=e;return(0,c.jsxs)(sK.Z,{children:[(0,c.jsxs)(sq.Z,{children:[(0,c.jsx)(k.Z,{children:s}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:I[s]})]}),(0,c.jsx)(sq.Z,{children:"routing_strategy"==s?(0,c.jsxs)(e9.Z,{defaultValue:t,className:"w-full max-w-md",onValueChange:Z,children:[(0,c.jsx)(ei.Z,{value:"usage-based-routing",children:"usage-based-routing"}),(0,c.jsx)(ei.Z,{value:"latency-based-routing",children:"latency-based-routing"}),(0,c.jsx)(ei.Z,{value:"simple-shuffle",children:"simple-shuffle"})]}):(0,c.jsx)(_.Z,{name:s,defaultValue:"object"==typeof t?JSON.stringify(t,null,2):t.toString()})})]},s)})})]}),(0,c.jsx)(ah,{selectedStrategy:N,strategyArgs:r&&r.routing_strategy_args&&Object.keys(r.routing_strategy_args).length>0?r.routing_strategy_args:ax,paramExplanation:I})]}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(b.Z,{className:"mt-2",onClick:()=>M(r),children:"Save Changes"})})]})}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Model Name"}),(0,c.jsx)(sB.Z,{children:"Fallbacks"})]})}),(0,c.jsx)(sU.Z,{children:r.fallbacks&&r.fallbacks.map((e,t)=>Object.entries(e).map(e=>{let[l,a]=e;return(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:l}),(0,c.jsx)(sq.Z,{children:Array.isArray(a)?a.join(", "):a}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(b.Z,{onClick:()=>au(l,s),children:"Test Fallback"})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(sR.Z,{icon:W.Z,size:"sm",onClick:()=>T(l)})})]},t.toString()+l)}))})]}),(0,c.jsx)(ad,{models:(null==a?void 0:a.data)?a.data.map(e=>e.model_name):[],accessToken:s,routerSettings:r,setRouterSettings:i})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(G.Z,{children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Setting"}),(0,c.jsx)(sB.Z,{children:"Value"}),(0,c.jsx)(sB.Z,{children:"Status"}),(0,c.jsx)(sB.Z,{children:"Action"})]})}),(0,c.jsx)(sU.Z,{children:m.filter(e=>"TypedDictionary"!==e.field_type).map((e,s)=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsxs)(sq.Z,{children:[(0,c.jsx)(k.Z,{children:e.field_name}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:e.field_description})]}),(0,c.jsx)(sq.Z,{children:"Integer"==e.field_type?(0,c.jsx)(e8.Z,{step:1,value:e.field_value,onChange:s=>E(e.field_name,s)}):null}),(0,c.jsx)(sq.Z,{children:!0==e.stored_in_db?(0,c.jsx)(se.Z,{icon:eb.Z,className:"text-white",children:"In DB"}):!1==e.stored_in_db?(0,c.jsx)(se.Z,{className:"text-gray bg-white outline",children:"In Config"}):(0,c.jsx)(se.Z,{className:"text-gray bg-white outline",children:"Not Set"})}),(0,c.jsxs)(sq.Z,{children:[(0,c.jsx)(b.Z,{onClick:()=>P(e.field_name,s),children:"Update"}),(0,c.jsx)(sR.Z,{icon:W.Z,color:"red",onClick:()=>L(e.field_name,s),children:"Reset"})]})]},s))})]})})})]})]})}):null},ag=e=>{let{isModalVisible:s,accessToken:t,setIsModalVisible:l,setBudgetList:a}=e,[r]=A.Z.useForm(),i=async e=>{if(null!=t&&void 0!=t)try{eo.Z.info("Making API Call");let s=await (0,j.budgetCreateCall)(t,e);console.log("key create Response:",s),a(e=>e?[...e,s]:[s]),eo.Z.success("Budget Created"),r.resetFields()}catch(e){console.error("Error creating the key:",e),eo.Z.fromBackend("Error creating the key: ".concat(e))}};return(0,c.jsx)(T.Z,{title:"Create Budget",visible:s,width:800,footer:null,onOk:()=>{l(!1),r.resetFields()},onCancel:()=>{l(!1),r.resetFields()},children:(0,c.jsxs)(A.Z,{form:r,onFinish:i,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Budget ID",name:"budget_id",rules:[{required:!0,message:"Please input a human-friendly name for the budget"}],help:"A human-friendly name for the budget",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"Max Tokens per minute",name:"tpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e8.Z,{step:1,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Max Requests per minute",name:"rpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e8.Z,{step:1,precision:2,width:200})}),(0,c.jsxs)(N.Z,{className:"mt-20 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Optional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(e8.Z,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})})]})]})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Create Budget"})})]})})},aj=e=>{let{isModalVisible:s,accessToken:t,setIsModalVisible:l,setBudgetList:a,existingBudget:r,handleUpdateCall:i}=e;console.log("existingBudget",r);let[n]=A.Z.useForm();(0,d.useEffect)(()=>{n.setFieldsValue(r)},[r,n]);let o=async e=>{if(null!=t&&void 0!=t)try{eo.Z.info("Making API Call"),l(!0);let s=await (0,j.budgetUpdateCall)(t,e);a(e=>e?[...e,s]:[s]),eo.Z.success("Budget Updated"),n.resetFields(),i()}catch(e){console.error("Error creating the key:",e),eo.Z.fromBackend("Error creating the key: ".concat(e))}};return(0,c.jsx)(T.Z,{title:"Edit Budget",visible:s,width:800,footer:null,onOk:()=>{l(!1),n.resetFields()},onCancel:()=>{l(!1),n.resetFields()},children:(0,c.jsxs)(A.Z,{form:n,onFinish:o,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",initialValues:r,children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Budget ID",name:"budget_id",rules:[{required:!0,message:"Please input a human-friendly name for the budget"}],help:"A human-friendly name for the budget",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"Max Tokens per minute",name:"tpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e8.Z,{step:1,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Max Requests per minute",name:"rpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e8.Z,{step:1,precision:2,width:200})}),(0,c.jsxs)(N.Z,{className:"mt-20 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Optional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(e8.Z,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})})]})]})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(P.ZP,{htmlType:"submit",children:"Save"})})]})})},af=t(17906),av=e=>{let{accessToken:s}=e,[t,l]=(0,d.useState)(!1),[a,r]=(0,d.useState)(!1),[i,n]=(0,d.useState)(null),[o,m]=(0,d.useState)([]);(0,d.useEffect)(()=>{s&&(0,j.getBudgetList)(s).then(e=>{m(e)})},[s]);let u=async(e,t)=>{console.log("budget_id",e),null!=s&&(n(o.find(s=>s.budget_id===e)||null),r(!0))},x=async(e,t)=>{if(null==s)return;eo.Z.info("Request made"),await (0,j.budgetDeleteCall)(s,e);let l=[...o];l.splice(t,1),m(l),eo.Z.success("Budget Deleted.")},h=async()=>{null!=s&&(0,j.getBudgetList)(s).then(e=>{m(e)})};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[(0,c.jsx)(b.Z,{size:"sm",variant:"primary",className:"mb-2",onClick:()=>l(!0),children:"+ Create Budget"}),(0,c.jsx)(ag,{accessToken:s,isModalVisible:t,setIsModalVisible:l,setBudgetList:m}),i&&(0,c.jsx)(aj,{accessToken:s,isModalVisible:a,setIsModalVisible:r,setBudgetList:m,existingBudget:i,handleUpdateCall:h}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Create a budget to assign to customers."}),(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Budget ID"}),(0,c.jsx)(sB.Z,{children:"Max Budget"}),(0,c.jsx)(sB.Z,{children:"TPM"}),(0,c.jsx)(sB.Z,{children:"RPM"})]})}),(0,c.jsx)(sU.Z,{children:o.slice().sort((e,s)=>new Date(s.updated_at).getTime()-new Date(e.updated_at).getTime()).map((e,s)=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:e.budget_id}),(0,c.jsx)(sq.Z,{children:e.max_budget?e.max_budget:"n/a"}),(0,c.jsx)(sq.Z,{children:e.tpm_limit?e.tpm_limit:"n/a"}),(0,c.jsx)(sq.Z,{children:e.rpm_limit?e.rpm_limit:"n/a"}),(0,c.jsx)(sR.Z,{icon:s4.Z,size:"sm",onClick:()=>u(e.budget_id,s)}),(0,c.jsx)(sR.Z,{icon:W.Z,size:"sm",onClick:()=>x(e.budget_id,s)})]},s))})]})]}),(0,c.jsxs)("div",{className:"mt-5",children:[(0,c.jsx)(k.Z,{className:"text-base",children:"How to use budget id"}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{children:[(0,c.jsx)(ss.Z,{children:"Assign Budget to Customer"}),(0,c.jsx)(ss.Z,{children:"Test it (Curl)"}),(0,c.jsx)(ss.Z,{children:"Test it (OpenAI SDK)"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"bash",children:"\ncurl -X POST --location '/end_user/new' \n-H 'Authorization: Bearer ' \n-H 'Content-Type: application/json' \n-d '{\"user_id\": \"my-customer-id', \"budget_id\": \"\"}' # \uD83D\uDC48 KEY CHANGE\n\n "})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"bash",children:'\ncurl -X POST --location \'/chat/completions\' \n-H \'Authorization: Bearer \' \n-H \'Content-Type: application/json\' \n-d \'{\n "model": "gpt-3.5-turbo\', \n "messages":[{"role": "user", "content": "Hey, how\'s it going?"}],\n "user": "my-customer-id"\n}\' # \uD83D\uDC48 KEY CHANGE\n\n '})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"python",children:'from openai import OpenAI\nclient = OpenAI(\n base_url="",\n api_key=""\n)\n\ncompletion = client.chat.completions.create(\n model="gpt-3.5-turbo",\n messages=[\n {"role": "system", "content": "You are a helpful assistant."},\n {"role": "user", "content": "Hello!"}\n ],\n user="my-customer-id"\n)\n\nprint(completion.choices[0].message)'})})]})]})]})]})},ay=t(77398),ab=t.n(ay);let a_=e=>{try{return new Date(e).toLocaleString("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0}).replace(",","")}catch(e){return"Error converting time"}},aN=e=>{let{utcTime:s}=e;return(0,c.jsx)("span",{style:{fontFamily:"monospace",width:"180px",display:"inline-block"},children:a_(s)})},aZ=(e,s)=>{var t,l;return(null===(l=e.metadata)||void 0===l?void 0:null===(t=l.mcp_tool_call_metadata)||void 0===t?void 0:t.mcp_server_logo_url)?e.metadata.mcp_tool_call_metadata.mcp_server_logo_url:s?(0,s0.dr)(s).logo:""},aw=[{id:"expander",header:()=>null,cell:e=>{let{row:s}=e;return(0,c.jsx)(()=>{let[e,t]=d.useState(s.getIsExpanded()),l=d.useCallback(()=>{t(e=>!e),s.getToggleExpandedHandler()()},[s]);return s.getCanExpand()?(0,c.jsx)("button",{onClick:l,style:{cursor:"pointer"},"aria-label":e?"Collapse row":"Expand row",className:"w-6 h-6 flex items-center justify-center focus:outline-none",children:(0,c.jsx)("svg",{className:"w-4 h-4 transform transition-transform duration-75 ".concat(e?"rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})}):(0,c.jsx)("span",{className:"w-6 h-6 flex items-center justify-center",children:"●"})},{})}},{header:"Time",accessorKey:"startTime",cell:e=>(0,c.jsx)(aN,{utcTime:e.getValue()})},{header:"Status",accessorKey:"metadata.status",cell:e=>{let s="failure"!==(e.getValue()||"Success").toLowerCase();return(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block text-center w-16 ".concat(s?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:s?"Success":"Failure"})}},{header:"Session ID",accessorKey:"session_id",cell:e=>{let s=String(e.getValue()||""),t=e.row.original.onSessionClick;return(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal text-xs max-w-[15ch] truncate block",onClick:()=>null==t?void 0:t(s),children:String(e.getValue()||"")})})}},{header:"Request ID",accessorKey:"request_id",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)("span",{className:"font-mono text-xs max-w-[15ch] truncate block",children:String(e.getValue()||"")})})},{header:"Cost",accessorKey:"spend",cell:e=>(0,c.jsxs)("span",{children:["$",eL(e.getValue()||0,6)]})},{header:"Duration (s)",accessorKey:"duration",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Team Name",accessorKey:"metadata.user_api_key_team_alias",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Key Hash",accessorKey:"metadata.user_api_key",cell:e=>{let s=String(e.getValue()||"-"),t=e.row.original.onKeyHashClick;return(0,c.jsx)(B.Z,{title:s,children:(0,c.jsx)("span",{className:"font-mono max-w-[15ch] truncate block cursor-pointer hover:text-blue-600",onClick:()=>null==t?void 0:t(s),children:s})})}},{header:"Key Name",accessorKey:"metadata.user_api_key_alias",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Model",accessorKey:"model",cell:e=>{let s=e.row.original,t=s.custom_llm_provider,l=String(e.getValue()||"");return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[t&&(0,c.jsx)("img",{src:aZ(s,t),alt:"",className:"w-4 h-4",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)(B.Z,{title:l,children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:l})})]})}},{header:"Tokens",accessorKey:"total_tokens",cell:e=>{let s=e.row.original;return(0,c.jsxs)("span",{className:"text-sm",children:[String(s.total_tokens||"0"),(0,c.jsxs)("span",{className:"text-gray-400 text-xs ml-1",children:["(",String(s.prompt_tokens||"0"),"+",String(s.completion_tokens||"0"),")"]})]})}},{header:"Internal User",accessorKey:"user",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"End User",accessorKey:"end_user",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Tags",accessorKey:"request_tags",cell:e=>{let s=e.getValue();if(!s||0===Object.keys(s).length)return"-";let t=Object.entries(s),l=t[0],a=t.slice(1);return(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:(0,c.jsx)(B.Z,{title:(0,c.jsx)("div",{className:"flex flex-col gap-1",children:t.map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{children:[s,": ",String(t)]},s)})}),children:(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded-full text-xs",children:[l[0],": ",String(l[1]),a.length>0&&" +".concat(a.length)]})})})}}],ak=e=>(0,c.jsx)(se.Z,{color:"gray",className:"flex items-center gap-1",children:(0,c.jsx)("span",{className:"whitespace-nowrap text-xs",children:e})}),aS=[{id:"expander",header:()=>null,cell:e=>{let{row:s}=e;return(0,c.jsx)(()=>{let[e,t]=d.useState(s.getIsExpanded()),l=d.useCallback(()=>{t(e=>!e),s.getToggleExpandedHandler()()},[s]);return s.getCanExpand()?(0,c.jsx)("button",{onClick:l,style:{cursor:"pointer"},"aria-label":e?"Collapse row":"Expand row",className:"w-6 h-6 flex items-center justify-center focus:outline-none",children:(0,c.jsx)("svg",{className:"w-4 h-4 transform transition-transform ".concat(e?"rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})}):(0,c.jsx)("span",{className:"w-6 h-6 flex items-center justify-center",children:"●"})},{})}},{header:"Timestamp",accessorKey:"updated_at",cell:e=>(0,c.jsx)(aN,{utcTime:e.getValue()})},{header:"Table Name",accessorKey:"table_name",cell:e=>{let s=e.getValue(),t=s;switch(s){case"LiteLLM_VerificationToken":t="Keys";break;case"LiteLLM_TeamTable":t="Teams";break;case"LiteLLM_OrganizationTable":t="Organizations";break;case"LiteLLM_UserTable":t="Users";break;case"LiteLLM_ProxyModelTable":t="Models";break;default:t=s}return(0,c.jsx)("span",{children:t})}},{header:"Action",accessorKey:"action",cell:e=>(0,c.jsx)("span",{children:ak(e.getValue())})},{header:"Changed By",accessorKey:"changed_by",cell:e=>{let s=e.row.original.changed_by,t=e.row.original.changed_by_api_key;return(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsx)("div",{className:"font-medium",children:s}),t&&(0,c.jsx)(B.Z,{title:t,children:(0,c.jsxs)("div",{className:"text-xs text-muted-foreground max-w-[15ch] truncate",children:[" ",t]})})]})}},{header:"Affected Item ID",accessorKey:"object_id",cell:e=>(0,c.jsx)(()=>{let s=e.getValue(),[t,l]=(0,d.useState)(!1);if(!s)return(0,c.jsx)(c.Fragment,{children:"-"});let a=async()=>{try{await navigator.clipboard.writeText(String(s)),l(!0),setTimeout(()=>l(!1),1500)}catch(e){console.error("Failed to copy object ID: ",e)}};return(0,c.jsx)(B.Z,{title:t?"Copied!":String(s),children:(0,c.jsx)("span",{className:"max-w-[20ch] truncate block cursor-pointer hover:text-blue-600",onClick:a,children:String(s)})})},{})}],aC=async(e,s,t,l)=>{console.log("prefetchLogDetails called with",e.length,"logs");let a=e.map(e=>{if(e.request_id)return console.log("Prefetching details for request_id:",e.request_id),l.prefetchQuery({queryKey:["logDetails",e.request_id,s],queryFn:async()=>{console.log("Fetching details for",e.request_id);let l=await (0,j.uiSpendLogDetailsCall)(t,e.request_id,s);return console.log("Received details for",e.request_id,":",l?"success":"failed"),l},staleTime:6e5,gcTime:6e5})});try{let e=await Promise.all(a);return console.log("All prefetch promises completed:",e.length),e}catch(e){throw console.error("Error in prefetchLogDetails:",e),e}};function aI(e){let{row:s,hasMessages:t,hasResponse:l,hasError:a,errorInfo:r,getRawRequest:i,formattedResponse:n}=e,o=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let s=document.createElement("textarea");s.value=e,s.style.position="fixed",s.style.opacity="0",document.body.appendChild(s),s.focus(),s.select();let t=document.execCommand("copy");if(document.body.removeChild(s),!t)throw Error("execCommand failed");return!0}}catch(e){return console.error("Copy failed:",e),!1}},d=async()=>{await o(JSON.stringify(i(),null,2))?eo.Z.success("Request copied to clipboard"):eo.Z.fromBackend("Failed to copy request")},m=async()=>{await o(JSON.stringify(n(),null,2))?eo.Z.success("Response copied to clipboard"):eo.Z.fromBackend("Failed to copy response")};return(0,c.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4 w-full max-w-full overflow-hidden box-border",children:[(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b",children:[(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Request"}),(0,c.jsx)("button",{onClick:d,className:"p-1 hover:bg-gray-200 rounded",title:"Copy request",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,c.jsx)("div",{className:"p-4 overflow-auto max-h-96 w-full max-w-full box-border",children:(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all w-full max-w-full overflow-hidden break-words",children:JSON.stringify(i(),null,2)})})]}),(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b",children:[(0,c.jsxs)("h3",{className:"text-lg font-medium",children:["Response",a&&(0,c.jsxs)("span",{className:"ml-2 text-sm text-red-600",children:["• HTTP code ",(null==r?void 0:r.error_code)||400]})]}),(0,c.jsx)("button",{onClick:m,className:"p-1 hover:bg-gray-200 rounded",title:"Copy response",disabled:!l,children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,c.jsx)("div",{className:"p-4 overflow-auto max-h-96 bg-gray-50 w-full max-w-full box-border",children:l?(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all w-full max-w-full overflow-hidden break-words",children:JSON.stringify(n(),null,2)}):(0,c.jsx)("div",{className:"text-gray-500 text-sm italic text-center py-4",children:"Response data not available"})})]})]})}let aA=e=>{var s;let{errorInfo:t}=e,[l,a]=d.useState({}),[r,i]=d.useState(!1),n=e=>{a(s=>({...s,[e]:!s[e]}))},o=t.traceback&&(s=t.traceback)?Array.from(s.matchAll(/File "([^"]+)", line (\d+)/g)).map(e=>{let t=e[1],l=e[2],a=t.split("/").pop()||t,r=e.index||0,i=s.indexOf('File "',r+1),n=i>-1?s.substring(r,i).trim():s.substring(r).trim(),o=n.split("\n"),c="";return o.length>1&&(c=o[o.length-1].trim()),{filePath:t,fileName:a,lineNumber:l,code:c,inFunction:n.includes(" in ")?n.split(" in ")[1].split("\n")[0]:""}}):[];return(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsx)("div",{className:"p-4 border-b",children:(0,c.jsxs)("h3",{className:"text-lg font-medium flex items-center text-red-600",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})}),"Error Details"]})}),(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"bg-red-50 rounded-md p-4 mb-4",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"text-red-800 font-medium w-20",children:"Type:"}),(0,c.jsx)("span",{className:"text-red-700",children:t.error_class||"Unknown Error"})]}),(0,c.jsxs)("div",{className:"flex mt-2",children:[(0,c.jsx)("span",{className:"text-red-800 font-medium w-20 flex-shrink-0",children:"Message:"}),(0,c.jsx)("span",{className:"text-red-700 break-words whitespace-pre-wrap",children:t.error_message||"Unknown error occurred"})]})]}),t.traceback&&(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,c.jsx)("h4",{className:"font-medium",children:"Traceback"}),(0,c.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,c.jsx)("button",{onClick:()=>{let e=!r;if(i(e),o.length>0){let s={};o.forEach((t,l)=>{s[l]=e}),a(s)}},className:"text-gray-500 hover:text-gray-700 flex items-center text-sm",children:r?"Collapse All":"Expand All"}),(0,c.jsxs)("button",{onClick:()=>navigator.clipboard.writeText(t.traceback||""),className:"text-gray-500 hover:text-gray-700 flex items-center",title:"Copy traceback",children:[(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),(0,c.jsx)("span",{className:"ml-1",children:"Copy"})]})]})]}),(0,c.jsx)("div",{className:"bg-white rounded-md border border-gray-200 overflow-hidden shadow-sm",children:o.map((e,s)=>(0,c.jsxs)("div",{className:"border-b border-gray-200 last:border-b-0",children:[(0,c.jsxs)("div",{className:"px-4 py-2 flex items-center justify-between cursor-pointer hover:bg-gray-50",onClick:()=>n(s),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("span",{className:"text-gray-400 mr-2 w-12 text-right",children:e.lineNumber}),(0,c.jsx)("span",{className:"text-gray-600 font-medium",children:e.fileName}),(0,c.jsx)("span",{className:"text-gray-500 mx-1",children:"in"}),(0,c.jsx)("span",{className:"text-indigo-600 font-medium",children:e.inFunction||e.fileName})]}),(0,c.jsx)("svg",{className:"w-5 h-5 text-gray-500 transition-transform ".concat(l[s]?"transform rotate-180":""),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),(l[s]||!1)&&e.code&&(0,c.jsx)("div",{className:"px-12 py-2 font-mono text-sm text-gray-800 bg-gray-50 overflow-x-auto border-t border-gray-100",children:e.code})]},s))})]})]})]})},aT=e=>{let{show:s}=e;return s?(0,c.jsxs)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-4 flex items-start",children:[(0,c.jsx)("div",{className:"text-blue-500 mr-3 flex-shrink-0 mt-0.5",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,c.jsx)("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),(0,c.jsx)("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"text-sm font-medium text-blue-800",children:"Request/Response Data Not Available"}),(0,c.jsxs)("p",{className:"text-sm text-blue-700 mt-1",children:["To view request and response details, enable prompt storage in your LiteLLM configuration by adding the following to your ",(0,c.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded",children:"proxy_config.yaml"})," file:"]}),(0,c.jsx)("pre",{className:"mt-2 bg-white p-3 rounded border border-blue-200 text-xs font-mono overflow-auto",children:"general_settings:\n store_model_in_db: true\n store_prompts_in_spend_logs: true"}),(0,c.jsx)("p",{className:"text-xs text-blue-700 mt-2",children:"Note: This will only affect new requests after the configuration change."})]})]}):null};var aE=t(35829);let aP=e=>{let{sessionId:s,logs:t,onBack:l}=e,[a,r]=(0,d.useState)(null),[i,n]=(0,d.useState)({}),o=t.reduce((e,s)=>e+(s.spend||0),0),m=t.reduce((e,s)=>e+(s.total_tokens||0),0),u=t.reduce((e,s)=>{var t,l;return e+((null===(l=s.metadata)||void 0===l?void 0:null===(t=l.additional_usage_values)||void 0===t?void 0:t.cache_read_input_tokens)||0)},0),x=t.reduce((e,s)=>{var t,l;return e+((null===(l=s.metadata)||void 0===l?void 0:null===(t=l.additional_usage_values)||void 0===t?void 0:t.cache_creation_input_tokens)||0)},0),h=m+u+x,p=t.length>0?new Date(t[0].startTime):new Date;(((t.length>0?new Date(t[t.length-1].endTime):new Date).getTime()-p.getTime())/1e3).toFixed(2),t.map(e=>({time:new Date(e.startTime).toISOString(),tokens:e.total_tokens||0,cost:e.spend||0}));let g=async(e,s)=>{await eM(e)&&(n(e=>({...e,[s]:!0})),setTimeout(()=>{n(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:l,className:"mb-4",children:"Back to All Logs"}),(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsx)("h1",{className:"text-2xl font-semibold text-gray-900",children:"Session Details"}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)("p",{className:"text-sm text-gray-500 font-mono",children:s}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:i["session-id"]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>g(s,"session-id"),className:"left-2 z-10 transition-all duration-200 ".concat(i["session-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]}),(0,c.jsxs)("a",{href:"https://docs.litellm.ai/docs/proxy/ui_logs_sessions",target:"_blank",rel:"noopener noreferrer",className:"text-sm text-blue-600 hover:text-blue-800 flex items-center gap-1",children:["Get started with session management here",(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})]}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Requests"}),(0,c.jsx)(aE.Z,{children:t.length})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Cost"}),(0,c.jsxs)(aE.Z,{children:["$",eL(o,6)]})]}),(0,c.jsx)(B.Z,{title:(0,c.jsxs)("div",{className:"text-white min-w-[200px]",children:[(0,c.jsx)("div",{className:"text-lg font-medium mb-3",children:"Usage breakdown"}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-base font-medium mb-2",children:"Input usage:"}),(0,c.jsxs)("div",{className:"space-y-2 text-sm text-gray-300",children:[(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"input:"}),(0,c.jsx)("span",{className:"ml-8",children:eL(t.reduce((e,s)=>e+(s.prompt_tokens||0),0))})]}),u>0&&(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"input_cached_tokens:"}),(0,c.jsx)("span",{className:"ml-8",children:eL(u)})]}),x>0&&(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"input_cache_creation_tokens:"}),(0,c.jsx)("span",{className:"ml-8",children:eL(x)})]})]})]}),(0,c.jsxs)("div",{className:"border-t border-gray-600 pt-3",children:[(0,c.jsx)("div",{className:"text-base font-medium mb-2",children:"Output usage:"}),(0,c.jsx)("div",{className:"space-y-2 text-sm text-gray-300",children:(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"output:"}),(0,c.jsx)("span",{className:"ml-8",children:eL(t.reduce((e,s)=>e+(s.completion_tokens||0),0))})]})})]}),(0,c.jsx)("div",{className:"border-t border-gray-600 pt-3",children:(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-base font-medium",children:"Total usage:"}),(0,c.jsx)("span",{className:"text-sm text-gray-300",children:eL(h)})]})})]})]}),placement:"top",overlayStyle:{minWidth:"300px"},children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)(k.Z,{children:"Total Tokens"}),(0,c.jsx)("span",{className:"text-gray-400 text-sm",children:"ⓘ"})]}),(0,c.jsx)(aE.Z,{children:eL(h)})]})})]}),(0,c.jsx)(S.Z,{children:"Session Logs"}),(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(lN,{columns:aw,data:t,renderSubComponent:aJ,getRowCanExpand:()=>!0,loadingMessage:"Loading logs...",noDataMessage:"No logs found"})})]})};function aL(e){let{data:s}=e,[t,l]=(0,d.useState)(!0),[a,r]=(0,d.useState)({});if(!s||0===s.length)return null;let i=e=>new Date(1e3*e).toLocaleString(),n=(e,s)=>"".concat(((s-e)*1e3).toFixed(2),"ms"),o=(e,s)=>{let t="".concat(e,"-").concat(s);r(e=>({...e,[t]:!e[t]}))};return(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow mb-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b cursor-pointer hover:bg-gray-50",onClick:()=>l(!t),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 text-gray-600 transition-transform ".concat(t?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Vector Store Requests"})]}),(0,c.jsx)("span",{className:"text-sm text-gray-500",children:t?"Click to collapse":"Click to expand"})]}),t&&(0,c.jsx)("div",{className:"p-4",children:s.map((e,s)=>(0,c.jsxs)("div",{className:"mb-6 last:mb-0",children:[(0,c.jsx)("div",{className:"bg-white rounded-lg border p-4 mb-4",children:(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Query:"}),(0,c.jsx)("span",{className:"font-mono",children:e.query})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Vector Store ID:"}),(0,c.jsx)("span",{className:"font-mono",children:e.vector_store_id})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Provider:"}),(0,c.jsx)("span",{className:"flex items-center",children:(()=>{let{logo:s,displayName:t}=(0,s0.dr)(e.custom_llm_provider);return(0,c.jsxs)(c.Fragment,{children:[s&&(0,c.jsx)("img",{src:s,alt:"".concat(t," logo"),className:"h-5 w-5 mr-2"}),t]})})()})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Start Time:"}),(0,c.jsx)("span",{children:i(e.start_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"End Time:"}),(0,c.jsx)("span",{children:i(e.end_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Duration:"}),(0,c.jsx)("span",{children:n(e.start_time,e.end_time)})]})]})]})}),(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Search Results"}),(0,c.jsx)("div",{className:"space-y-2",children:e.vector_store_search_response.data.map((e,t)=>{let l=a["".concat(s,"-").concat(t)]||!1;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex items-center p-3 bg-gray-50 cursor-pointer",onClick:()=>o(s,t),children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(l?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsxs)("span",{className:"font-medium mr-2",children:["Result ",t+1]}),(0,c.jsxs)("span",{className:"text-gray-500 text-sm",children:["Score: ",(0,c.jsx)("span",{className:"font-mono",children:e.score.toFixed(4)})]})]})]}),l&&(0,c.jsx)("div",{className:"p-3 border-t bg-white",children:e.content.map((e,s)=>(0,c.jsxs)("div",{className:"mb-2 last:mb-0",children:[(0,c.jsx)("div",{className:"text-xs text-gray-500 mb-1",children:e.type}),(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all bg-gray-50 p-2 rounded",children:e.text})]},s))})]},t)})})]},s))})]})}let aM=e=>e>=.8?"text-green-600":"text-yellow-600";var aO=e=>{let{entities:s}=e,[t,l]=(0,d.useState)(!0),[a,r]=(0,d.useState)({}),i=e=>{r(s=>({...s,[e]:!s[e]}))};return s&&0!==s.length?(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"flex items-center mb-2 cursor-pointer",onClick:()=>l(!t),children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(t?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsxs)("h4",{className:"font-medium",children:["Detected Entities (",s.length,")"]})]}),t&&(0,c.jsx)("div",{className:"space-y-2",children:s.map((e,s)=>{let t=a[s]||!1;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 cursor-pointer hover:bg-gray-100",onClick:()=>i(s),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(t?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsx)("span",{className:"font-medium mr-2",children:e.entity_type}),(0,c.jsxs)("span",{className:"font-mono ".concat(aM(e.score)),children:["Score: ",e.score.toFixed(2)]})]}),(0,c.jsxs)("span",{className:"text-xs text-gray-500",children:["Position: ",e.start,"-",e.end]})]}),t&&(0,c.jsx)("div",{className:"p-3 border-t bg-white",children:(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-2",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Entity Type:"}),(0,c.jsx)("span",{children:e.entity_type})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Position:"}),(0,c.jsxs)("span",{children:["Characters ",e.start,"-",e.end]})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Confidence:"}),(0,c.jsx)("span",{className:aM(e.score),children:e.score.toFixed(2)})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[e.recognition_metadata&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Recognizer:"}),(0,c.jsx)("span",{children:e.recognition_metadata.recognizer_name})]}),(0,c.jsxs)("div",{className:"flex overflow-hidden",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Identifier:"}),(0,c.jsx)("span",{className:"truncate text-xs font-mono",children:e.recognition_metadata.recognizer_identifier})]})]}),e.analysis_explanation&&(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Explanation:"}),(0,c.jsx)("span",{children:e.analysis_explanation})]})]})]})})]},s)})})]}):null};let aD=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"slate";return(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block ".concat({green:"bg-green-100 text-green-800",red:"bg-red-100 text-red-800",blue:"bg-blue-50 text-blue-700",slate:"bg-slate-100 text-slate-800",amber:"bg-amber-100 text-amber-800"}[s]),children:e})},aF=e=>e?aD("detected","red"):aD("not detected","slate"),aR=e=>{let{title:s,count:t,defaultOpen:l=!0,right:a,children:r}=e,[i,n]=(0,d.useState)(l);return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 cursor-pointer hover:bg-gray-100",onClick:()=>n(e=>!e),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(i?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsxs)("h5",{className:"font-medium",children:[s," ","number"==typeof t&&(0,c.jsxs)("span",{className:"text-gray-500 font-normal",children:["(",t,")"]})]})]}),(0,c.jsx)("div",{children:a})]}),i&&(0,c.jsx)("div",{className:"p-3 border-t bg-white",children:r})]})},az=e=>{let{label:s,children:t,mono:l}=e;return(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:s}),(0,c.jsx)("span",{className:l?"font-mono text-sm break-all":"",children:t})]})},aU=()=>(0,c.jsx)("div",{className:"my-3 border-t"});var aq=e=>{var s,t,l,a,r,i,n,o,d,m;let{response:u}=e;if(!u)return null;let x=null!==(r=null!==(a=u.outputs)&&void 0!==a?a:u.output)&&void 0!==r?r:[],h="GUARDRAIL_INTERVENED"===u.action?"red":"green",p=(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(null===(s=u.guardrailCoverage)||void 0===s?void 0:s.textCharacters)&&aD("text guarded ".concat(null!==(i=u.guardrailCoverage.textCharacters.guarded)&&void 0!==i?i:0,"/").concat(null!==(n=u.guardrailCoverage.textCharacters.total)&&void 0!==n?n:0),"blue"),(null===(t=u.guardrailCoverage)||void 0===t?void 0:t.images)&&aD("images guarded ".concat(null!==(o=u.guardrailCoverage.images.guarded)&&void 0!==o?o:0,"/").concat(null!==(d=u.guardrailCoverage.images.total)&&void 0!==d?d:0),"blue")]}),g=u.usage&&(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(u.usage).map(e=>{let[s,t]=e;return"number"==typeof t?(0,c.jsxs)("span",{className:"px-2 py-1 bg-slate-100 text-slate-800 rounded-md text-xs font-medium",children:[s,": ",t]},s):null})});return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"border rounded-lg p-4",children:[(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(az,{label:"Action:",children:aD(null!==(m=u.action)&&void 0!==m?m:"N/A",h)}),u.actionReason&&(0,c.jsx)(az,{label:"Action Reason:",children:u.actionReason}),u.blockedResponse&&(0,c.jsx)(az,{label:"Blocked Response:",children:(0,c.jsx)("span",{className:"italic",children:u.blockedResponse})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(az,{label:"Coverage:",children:p}),(0,c.jsx)(az,{label:"Usage:",children:g})]})]}),x.length>0&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(aU,{}),(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Outputs"}),(0,c.jsx)("div",{className:"space-y-2",children:x.map((e,s)=>{var t;return(0,c.jsx)("div",{className:"p-3 bg-gray-50 rounded-md",children:(0,c.jsx)("div",{className:"text-sm whitespace-pre-wrap",children:null!==(t=e.text)&&void 0!==t?t:(0,c.jsx)("em",{children:"(non-text output)"})})},s)})})]})]}),(null===(l=u.assessments)||void 0===l?void 0:l.length)?(0,c.jsx)("div",{className:"space-y-3",children:u.assessments.map((e,s)=>{var t,l,a,r,i,n,o,d,m,u,x,h,p,g,j,f,v,y,b,_,N,Z,w,k;let S=(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[e.wordPolicy&&aD("word","slate"),e.contentPolicy&&aD("content","slate"),e.topicPolicy&&aD("topic","slate"),e.sensitiveInformationPolicy&&aD("sensitive-info","slate"),e.contextualGroundingPolicy&&aD("contextual-grounding","slate"),e.automatedReasoningPolicy&&aD("automated-reasoning","slate")]});return(0,c.jsxs)(aR,{title:"Assessment #".concat(s+1),defaultOpen:!0,right:(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[(null===(t=e.invocationMetrics)||void 0===t?void 0:t.guardrailProcessingLatency)!=null&&aD("".concat(e.invocationMetrics.guardrailProcessingLatency," ms"),"amber"),S]}),children:[e.wordPolicy&&(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Word Policy"}),(null!==(f=null===(l=e.wordPolicy.customWords)||void 0===l?void 0:l.length)&&void 0!==f?f:0)>0&&(0,c.jsx)(aR,{title:"Custom Words",defaultOpen:!0,children:(0,c.jsx)("div",{className:"space-y-2",children:e.wordPolicy.customWords.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-mono text-sm break-all",children:e.match})]}),aF(e.detected)]},s)})})}),(null!==(v=null===(a=e.wordPolicy.managedWordLists)||void 0===a?void 0:a.length)&&void 0!==v?v:0)>0&&(0,c.jsx)(aR,{title:"Managed Word Lists",defaultOpen:!1,children:(0,c.jsx)("div",{className:"space-y-2",children:e.wordPolicy.managedWordLists.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-mono text-sm break-all",children:e.match}),e.type&&aD(e.type,"slate")]}),aF(e.detected)]},s)})})})]}),(null===(i=e.contentPolicy)||void 0===i?void 0:null===(r=i.filters)||void 0===r?void 0:r.length)?(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Content Policy"}),(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)("table",{className:"min-w-full text-sm",children:[(0,c.jsx)("thead",{children:(0,c.jsxs)("tr",{className:"text-left text-gray-600",children:[(0,c.jsx)("th",{className:"py-1 pr-4",children:"Type"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Action"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Detected"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Strength"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Confidence"})]})}),(0,c.jsx)("tbody",{children:e.contentPolicy.filters.map((e,s)=>{var t,l,a,r;return(0,c.jsxs)("tr",{className:"border-t",children:[(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(t=e.type)&&void 0!==t?t:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aD(null!==(l=e.action)&&void 0!==l?l:"—",e.detected?"red":"slate")}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aF(e.detected)}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(a=e.filterStrength)&&void 0!==a?a:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(r=e.confidence)&&void 0!==r?r:"—"})]},s)})})]})})]}):null,(null===(o=e.contextualGroundingPolicy)||void 0===o?void 0:null===(n=o.filters)||void 0===n?void 0:n.length)?(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Contextual Grounding"}),(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)("table",{className:"min-w-full text-sm",children:[(0,c.jsx)("thead",{children:(0,c.jsxs)("tr",{className:"text-left text-gray-600",children:[(0,c.jsx)("th",{className:"py-1 pr-4",children:"Type"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Action"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Detected"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Score"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Threshold"})]})}),(0,c.jsx)("tbody",{children:e.contextualGroundingPolicy.filters.map((e,s)=>{var t,l,a,r;return(0,c.jsxs)("tr",{className:"border-t",children:[(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(t=e.type)&&void 0!==t?t:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aD(null!==(l=e.action)&&void 0!==l?l:"—",e.detected?"red":"slate")}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aF(e.detected)}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(a=e.score)&&void 0!==a?a:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(r=e.threshold)&&void 0!==r?r:"—"})]},s)})})]})})]}):null,e.sensitiveInformationPolicy&&(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Sensitive Information"}),(null!==(y=null===(d=e.sensitiveInformationPolicy.piiEntities)||void 0===d?void 0:d.length)&&void 0!==y?y:0)>0&&(0,c.jsx)(aR,{title:"PII Entities",defaultOpen:!0,children:(0,c.jsx)("div",{className:"space-y-2",children:e.sensitiveInformationPolicy.piiEntities.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),e.type&&aD(e.type,"slate"),(0,c.jsx)("span",{className:"font-mono text-xs break-all",children:e.match})]}),aF(e.detected)]},s)})})}),(null!==(b=null===(m=e.sensitiveInformationPolicy.regexes)||void 0===m?void 0:m.length)&&void 0!==b?b:0)>0&&(0,c.jsx)(aR,{title:"Custom Regexes",defaultOpen:!1,children:(0,c.jsx)("div",{className:"space-y-2",children:e.sensitiveInformationPolicy.regexes.map((e,s)=>{var t,l;return(0,c.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between p-2 bg-gray-50 rounded gap-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-medium",children:null!==(l=e.name)&&void 0!==l?l:"regex"}),(0,c.jsx)("span",{className:"font-mono text-xs break-all",children:e.regex})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aF(e.detected),e.match&&(0,c.jsx)("span",{className:"font-mono text-xs break-all",children:e.match})]})]},s)})})})]}),(null===(x=e.topicPolicy)||void 0===x?void 0:null===(u=x.topics)||void 0===u?void 0:u.length)?(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Topic Policy"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:e.topicPolicy.topics.map((e,s)=>{var t,l;return(0,c.jsx)("div",{className:"px-3 py-1.5 bg-gray-50 rounded-md text-xs",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-medium",children:null!==(l=e.name)&&void 0!==l?l:"topic"}),e.type&&aD(e.type,"slate"),aF(e.detected)]})},s)})})]}):null,e.invocationMetrics&&(0,c.jsx)(aR,{title:"Invocation Metrics",defaultOpen:!1,children:(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(az,{label:"Latency (ms)",children:null!==(_=e.invocationMetrics.guardrailProcessingLatency)&&void 0!==_?_:"—"}),(0,c.jsx)(az,{label:"Coverage:",children:(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(null===(h=e.invocationMetrics.guardrailCoverage)||void 0===h?void 0:h.textCharacters)&&aD("text ".concat(null!==(N=e.invocationMetrics.guardrailCoverage.textCharacters.guarded)&&void 0!==N?N:0,"/").concat(null!==(Z=e.invocationMetrics.guardrailCoverage.textCharacters.total)&&void 0!==Z?Z:0),"blue"),(null===(p=e.invocationMetrics.guardrailCoverage)||void 0===p?void 0:p.images)&&aD("images ".concat(null!==(w=e.invocationMetrics.guardrailCoverage.images.guarded)&&void 0!==w?w:0,"/").concat(null!==(k=e.invocationMetrics.guardrailCoverage.images.total)&&void 0!==k?k:0),"blue")]})})]}),(0,c.jsx)("div",{className:"space-y-2",children:(0,c.jsx)(az,{label:"Usage:",children:(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:e.invocationMetrics.usage&&Object.entries(e.invocationMetrics.usage).map(e=>{let[s,t]=e;return"number"==typeof t?(0,c.jsxs)("span",{className:"px-2 py-1 bg-slate-100 text-slate-800 rounded-md text-xs font-medium",children:[s,": ",t]},s):null})})})})]})}),(null===(j=e.automatedReasoningPolicy)||void 0===j?void 0:null===(g=j.findings)||void 0===g?void 0:g.length)?(0,c.jsx)(aR,{title:"Automated Reasoning Findings",defaultOpen:!1,children:(0,c.jsx)("div",{className:"space-y-2",children:e.automatedReasoningPolicy.findings.map((e,s)=>(0,c.jsx)("pre",{className:"bg-gray-50 rounded p-2 text-xs overflow-x-auto",children:JSON.stringify(e,null,2)},s))})}):null]},s)})}):null,(0,c.jsx)(aR,{title:"Raw Bedrock Guardrail Response",defaultOpen:!1,children:(0,c.jsx)("pre",{className:"bg-gray-50 rounded p-3 text-xs overflow-x-auto",children:JSON.stringify(u,null,2)})})]})},aV=e=>{var s,t;let{data:l}=e,[a,r]=(0,d.useState)(!0),i=null!==(t=l.guardrail_provider)&&void 0!==t?t:"presidio";if(!l)return null;let n="string"==typeof l.guardrail_status&&"success"===l.guardrail_status.toLowerCase(),o=n?null:"Guardrail failed to run.",m=l.masked_entity_count?Object.values(l.masked_entity_count).reduce((e,s)=>e+s,0):0,u=e=>new Date(1e3*e).toLocaleString();return(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow mb-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b cursor-pointer hover:bg-gray-50",onClick:()=>r(!a),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 text-gray-600 transition-transform ".concat(a?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Guardrail Information"}),(0,c.jsx)(B.Z,{title:o,placement:"top",arrow:!0,destroyTooltipOnHide:!0,children:(0,c.jsx)("span",{className:"ml-3 px-2 py-1 rounded-md text-xs font-medium inline-block ".concat(n?"bg-green-100 text-green-800":"bg-red-100 text-red-800 cursor-help"),children:l.guardrail_status})}),m>0&&(0,c.jsxs)("span",{className:"ml-3 px-2 py-1 bg-blue-50 text-blue-700 rounded-md text-xs font-medium",children:[m," masked ",1===m?"entity":"entities"]})]}),(0,c.jsx)("span",{className:"text-sm text-gray-500",children:a?"Click to collapse":"Click to expand"})]}),a&&(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"bg-white rounded-lg border p-4 mb-4",children:[(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Guardrail Name:"}),(0,c.jsx)("span",{className:"font-mono",children:l.guardrail_name})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Mode:"}),(0,c.jsx)("span",{className:"font-mono",children:l.guardrail_mode})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Status:"}),(0,c.jsx)(B.Z,{title:o,placement:"top",arrow:!0,destroyTooltipOnHide:!0,children:(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block ".concat(n?"bg-green-100 text-green-800":"bg-red-100 text-red-800 cursor-help"),children:l.guardrail_status})})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Start Time:"}),(0,c.jsx)("span",{children:u(l.start_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"End Time:"}),(0,c.jsx)("span",{children:u(l.end_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Duration:"}),(0,c.jsxs)("span",{children:[l.duration.toFixed(4),"s"]})]})]})]}),l.masked_entity_count&&Object.keys(l.masked_entity_count).length>0&&(0,c.jsxs)("div",{className:"mt-4 pt-4 border-t",children:[(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Masked Entity Summary"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(l.masked_entity_count).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{className:"px-3 py-1.5 bg-blue-50 text-blue-700 rounded-md text-xs font-medium",children:[s,": ",t]},s)})})]})]}),"presidio"===i&&(null===(s=l.guardrail_response)||void 0===s?void 0:s.length)>0&&(0,c.jsx)(aO,{entities:l.guardrail_response}),"bedrock"===i&&l.guardrail_response&&(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(aq,{response:l.guardrail_response})})]})]})};let aB={TEAM_ID:"Team ID",KEY_HASH:"Key Hash",REQUEST_ID:"Request ID",MODEL:"Model",USER_ID:"User ID",END_USER:"End User",STATUS:"Status",KEY_ALIAS:"Key Alias"},aK="".concat("../ui/assets/","audit-logs-preview.png");function aG(e){let{userID:s,userRole:t,token:l,accessToken:a,isActive:r,premiumUser:i,allTeams:n}=e,[o,m]=(0,d.useState)(ab()().subtract(24,"hours").format("YYYY-MM-DDTHH:mm")),u=(0,d.useRef)(null),x=(0,d.useRef)(null),[h,p]=(0,d.useState)(1),[g]=(0,d.useState)(50),[f,v]=(0,d.useState)({}),[y,b]=(0,d.useState)(""),[_,N]=(0,d.useState)(""),[Z,w]=(0,d.useState)(""),[S,C]=(0,d.useState)("all"),[I,A]=(0,d.useState)("all"),[T,E]=(0,d.useState)(!1),[P,L]=(0,d.useState)(!1),M=(0,sE.a)({queryKey:["all_audit_logs",a,l,t,s,o],queryFn:async()=>{if(!a||!l||!t||!s)return[];let e=ab()(o).utc().format("YYYY-MM-DD HH:mm:ss"),r=ab()().utc().format("YYYY-MM-DD HH:mm:ss"),i=[],n=1,c=1;do{let s=await (0,j.uiAuditLogsCall)(a,e,r,n,50);i=i.concat(s.audit_logs),c=s.total_pages,n++}while(n<=c);return i},enabled:!!a&&!!l&&!!t&&!!s&&r,refetchInterval:5e3,refetchIntervalInBackground:!0}),O=(0,d.useCallback)(async e=>{if(a)try{let s=(await (0,j.keyListCall)(a,null,null,e,null,null,1,10)).keys.find(s=>s.key_alias===e);s?N(s.token):N("")}catch(e){console.error("Error fetching key hash for alias:",e),N("")}},[a]);(0,d.useEffect)(()=>{if(!a)return;let e=!1,s=!1;f["Team ID"]?y!==f["Team ID"]&&(b(f["Team ID"]),e=!0):""!==y&&(b(""),e=!0),f["Key Hash"]?_!==f["Key Hash"]&&(N(f["Key Hash"]),s=!0):f["Key Alias"]?O(f["Key Alias"]):""!==_&&(N(""),s=!0),(e||s)&&p(1)},[f,a,O,y,_]),(0,d.useEffect)(()=>{p(1)},[y,_,o,Z,S,I]),(0,d.useEffect)(()=>{function e(e){u.current&&!u.current.contains(e.target)&&E(!1),x.current&&!x.current.contains(e.target)&&L(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let D=(0,d.useMemo)(()=>M.data?M.data.filter(e=>{var s,t,l,a,r,i,n;let o=!0,c=!0,d=!0,m=!0,u=!0;if(y){let r="string"==typeof e.before_value?null===(s=JSON.parse(e.before_value))||void 0===s?void 0:s.team_id:null===(t=e.before_value)||void 0===t?void 0:t.team_id,i="string"==typeof e.updated_values?null===(l=JSON.parse(e.updated_values))||void 0===l?void 0:l.team_id:null===(a=e.updated_values)||void 0===a?void 0:a.team_id;o=r===y||i===y}if(_)try{let s="string"==typeof e.before_value?JSON.parse(e.before_value):e.before_value,t="string"==typeof e.updated_values?JSON.parse(e.updated_values):e.updated_values,l=null==s?void 0:s.token,a=null==t?void 0:t.token;c="string"==typeof l&&l.includes(_)||"string"==typeof a&&a.includes(_)}catch(e){c=!1}if(Z&&(d=null===(r=e.object_id)||void 0===r?void 0:r.toLowerCase().includes(Z.toLowerCase())),"all"!==S&&(m=(null===(i=e.action)||void 0===i?void 0:i.toLowerCase())===S.toLowerCase()),"all"!==I){let s="";switch(I){case"keys":s="litellm_verificationtoken";break;case"teams":s="litellm_teamtable";break;case"users":s="litellm_usertable";break;default:s=I}u=(null===(n=e.table_name)||void 0===n?void 0:n.toLowerCase())===s}return o&&c&&d&&m&&u}):[],[M.data,y,_,Z,S,I]),F=D.length,R=Math.ceil(F/g)||1,z=(0,d.useMemo)(()=>{let e=(h-1)*g,s=e+g;return D.slice(e,s)},[D,h,g]),U=!M.data||0===M.data.length,q=(0,d.useCallback)(e=>{let{row:s}=e;return(0,c.jsx)(e=>{let{rowData:s}=e,{before_value:t,updated_values:l,table_name:a,action:r}=s,i=(e,s)=>{if(!e||0===Object.keys(e).length)return(0,c.jsx)(k.Z,{children:"N/A"});if(s){let s=Object.keys(e),t=["token","spend","max_budget"];if(s.every(e=>t.includes(e))&&s.length>0)return(0,c.jsxs)("div",{children:[s.includes("token")&&(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Token:"})," ",e.token||"N/A"]}),s.includes("spend")&&(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Spend:"})," ",void 0!==e.spend?"$".concat(eL(e.spend,6)):"N/A"]}),s.includes("max_budget")&&(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Max Budget:"})," ",void 0!==e.max_budget?"$".concat(eL(e.max_budget,6)):"N/A"]})]});if(e["No differing fields detected in 'before' state"]||e["No differing fields detected in 'updated' state"]||e["No fields changed"])return(0,c.jsx)(k.Z,{children:e[Object.keys(e)[0]]})}return(0,c.jsx)("pre",{className:"p-2 bg-gray-50 border rounded text-xs overflow-auto max-h-60",children:JSON.stringify(e,null,2)})},n=t,o=l;if(("updated"===r||"rotated"===r)&&t&&l&&("LiteLLM_TeamTable"===a||"LiteLLM_UserTable"===a||"LiteLLM_VerificationToken"===a)){let e={},s={};new Set([...Object.keys(t),...Object.keys(l)]).forEach(a=>{JSON.stringify(t[a])!==JSON.stringify(l[a])&&(t.hasOwnProperty(a)&&(e[a]=t[a]),l.hasOwnProperty(a)&&(s[a]=l[a]))}),Object.keys(t).forEach(a=>{l.hasOwnProperty(a)||e.hasOwnProperty(a)||(e[a]=t[a],s[a]=void 0)}),Object.keys(l).forEach(a=>{t.hasOwnProperty(a)||s.hasOwnProperty(a)||(s[a]=l[a],e[a]=void 0)}),n=Object.keys(e).length>0?e:{"No differing fields detected in 'before' state":"N/A"},o=Object.keys(s).length>0?s:{"No differing fields detected in 'updated' state":"N/A"},0===Object.keys(e).length&&0===Object.keys(s).length&&(n={"No fields changed":"N/A"},o={"No fields changed":"N/A"})}return(0,c.jsxs)("div",{className:"-mx-4 p-4 bg-slate-100 border-y border-slate-300 grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"font-semibold mb-2 text-sm text-slate-700",children:"Before Value:"}),i(n,"LiteLLM_VerificationToken"===a)]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"font-semibold mb-2 text-sm text-slate-700",children:"Updated Value:"}),i(o,"LiteLLM_VerificationToken"===a)]})]})},{rowData:s.original})},[]);if(!i)return(0,c.jsxs)("div",{style:{textAlign:"center",marginTop:"20px"},children:[(0,c.jsx)("h1",{style:{display:"block",marginBottom:"10px"},children:"✨ Enterprise Feature."}),(0,c.jsx)(k.Z,{style:{display:"block",marginBottom:"10px"},children:"This is a LiteLLM Enterprise feature, and requires a valid key to use."}),(0,c.jsx)(k.Z,{style:{display:"block",marginBottom:"20px",fontStyle:"italic"},children:"Here's a preview of what Audit Logs offer:"}),(0,c.jsx)("img",{src:aK,alt:"Audit Logs Preview",style:{maxWidth:"100%",maxHeight:"700px",borderRadius:"8px",boxShadow:"0 4px 8px rgba(0,0,0,0.1)",margin:"0 auto"},onError:e=>{console.error("Failed to load audit logs preview image"),e.target.style.display="none"}})]});let V=F>0?(h-1)*g+1:0,B=Math.min(h*g,F);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"flex items-center justify-between mb-4"}),(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsxs)("div",{className:"border-b px-6 py-4",children:[(0,c.jsx)("h1",{className:"text-xl font-semibold py-4",children:"Audit Logs"}),(0,c.jsx)(e=>{let{show:s}=e;return s?(0,c.jsxs)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-4 flex items-start mb-6",children:[(0,c.jsx)("div",{className:"text-blue-500 mr-3 flex-shrink-0 mt-0.5",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,c.jsx)("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),(0,c.jsx)("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"text-sm font-medium text-blue-800",children:"Audit Logs Not Available"}),(0,c.jsx)("p",{className:"text-sm text-blue-700 mt-1",children:"To enable audit logging, add the following configuration to your LiteLLM proxy configuration file:"}),(0,c.jsx)("pre",{className:"mt-2 bg-white p-3 rounded border border-blue-200 text-xs font-mono overflow-auto",children:"litellm_settings:\n store_audit_logs: true"}),(0,c.jsx)("p",{className:"text-xs text-blue-700 mt-2",children:"Note: This will only affect new requests after the configuration change and proxy restart."})]})]}):null},{show:U}),(0,c.jsxs)("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between space-y-4 md:space-y-0",children:[(0,c.jsx)("div",{className:"flex flex-wrap items-center gap-3",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsx)("input",{type:"text",placeholder:"Search by Object ID...",value:Z,onChange:e=>w(e.target.value),className:"px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})}),(0,c.jsxs)("button",{onClick:()=>{M.refetch()},className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",title:"Refresh data",children:[(0,c.jsx)("svg",{className:"w-4 h-4 ".concat(M.isFetching?"animate-spin":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),(0,c.jsx)("span",{children:"Refresh"})]})]})}),(0,c.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,c.jsxs)("div",{className:"relative",ref:u,children:[(0,c.jsx)("label",{htmlFor:"actionFilterDisplay",className:"mr-2 text-sm font-medium text-gray-700 sr-only",children:"Action:"}),(0,c.jsxs)("button",{id:"actionFilterDisplay",onClick:()=>E(!T),className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 bg-white w-40 text-left justify-between",children:[(0,c.jsxs)("span",{children:["all"===S&&"All Actions","created"===S&&"Created","updated"===S&&"Updated","deleted"===S&&"Deleted","rotated"===S&&"Rotated"]}),(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M19 9l-7 7-7-7"})})]}),T&&(0,c.jsx)("div",{className:"absolute left-0 mt-2 w-40 bg-white rounded-lg shadow-lg border p-1 z-50",children:(0,c.jsx)("div",{className:"space-y-1",children:[{label:"All Actions",value:"all"},{label:"Created",value:"created"},{label:"Updated",value:"updated"},{label:"Deleted",value:"deleted"},{label:"Rotated",value:"rotated"}].map(e=>(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(S===e.value?"bg-blue-50 text-blue-600 font-medium":"font-normal"),onClick:()=>{C(e.value),E(!1)},children:e.label},e.value))})})]}),(0,c.jsxs)("div",{className:"relative",ref:x,children:[(0,c.jsx)("label",{htmlFor:"tableFilterDisplay",className:"mr-2 text-sm font-medium text-gray-700 sr-only",children:"Table:"}),(0,c.jsxs)("button",{id:"tableFilterDisplay",onClick:()=>L(!P),className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 bg-white w-40 text-left justify-between",children:[(0,c.jsxs)("span",{children:["all"===I&&"All Tables","keys"===I&&"Keys","teams"===I&&"Teams","users"===I&&"Users"]}),(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M19 9l-7 7-7-7"})})]}),P&&(0,c.jsx)("div",{className:"absolute left-0 mt-2 w-40 bg-white rounded-lg shadow-lg border p-1 z-50",children:(0,c.jsx)("div",{className:"space-y-1",children:[{label:"All Tables",value:"all"},{label:"Keys",value:"keys"},{label:"Teams",value:"teams"},{label:"Users",value:"users"}].map(e=>(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(I===e.value?"bg-blue-50 text-blue-600 font-medium":"font-normal"),onClick:()=>{A(e.value),L(!1)},children:e.label},e.value))})})]}),(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Showing ",M.isLoading?"...":V," -"," ",M.isLoading?"...":B," of"," ",M.isLoading?"...":F," results"]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Page ",M.isLoading?"...":h," of"," ",M.isLoading?"...":R]}),(0,c.jsx)("button",{onClick:()=>p(e=>Math.max(1,e-1)),disabled:M.isLoading||1===h,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Previous"}),(0,c.jsx)("button",{onClick:()=>p(e=>Math.min(R,e+1)),disabled:M.isLoading||h===R,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Next"})]})]})]})]}),(0,c.jsx)(lN,{columns:aS,data:z,renderSubComponent:q,getRowCanExpand:()=>!0})]})]})}let aH=(e,s,t)=>{if(e)return"".concat(ab()(s).format("MMM D, h:mm A")," - ").concat(ab()(t).format("MMM D, h:mm A"));let l=ab()(),a=ab()(s),r=l.diff(a,"minutes");if(r>=0&&r<2)return"Last 1 Minute";if(r>=2&&r<16)return"Last 15 Minutes";if(r>=16&&r<61)return"Last Hour";let i=l.diff(a,"hours");return i>=1&&i<5?"Last 4 Hours":i>=5&&i<25?"Last 24 Hours":i>=25&&i<169?"Last 7 Days":"".concat(a.format("MMM D")," - ").concat(l.format("MMM D"))};function aY(e){var s,t,l;let{accessToken:a,token:r,userRole:i,userID:n,allTeams:o,premiumUser:m}=e,[u,x]=(0,d.useState)(""),[p,g]=(0,d.useState)(!1),[f,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(1),[_]=(0,d.useState)(50),N=(0,d.useRef)(null),Z=(0,d.useRef)(null),w=(0,d.useRef)(null),[k,S]=(0,d.useState)(ab()().subtract(24,"hours").format("YYYY-MM-DDTHH:mm")),[C,I]=(0,d.useState)(ab()().format("YYYY-MM-DDTHH:mm")),[A,T]=(0,d.useState)(!1),[E,P]=(0,d.useState)(!1),[L,M]=(0,d.useState)(""),[O,D]=(0,d.useState)(""),[F,R]=(0,d.useState)(""),[z,U]=(0,d.useState)(""),[q,V]=(0,d.useState)(""),[B,K]=(0,d.useState)(null),[G,H]=(0,d.useState)(null),[Y,J]=(0,d.useState)(""),[W,$]=(0,d.useState)(""),[Q,X]=(0,d.useState)(i&&eI.lo.includes(i)),[ee,es]=(0,d.useState)("request logs"),[et,el]=(0,d.useState)(null),[ea,er]=(0,d.useState)(null),ei=(0,h.NL)(),[en,eo]=(0,d.useState)(()=>{let e=sessionStorage.getItem("isLiveTail");return null===e||JSON.parse(e)});(0,d.useEffect)(()=>{sessionStorage.setItem("isLiveTail",JSON.stringify(en))},[en]);let[ec,ed]=(0,d.useState)({value:24,unit:"hours"});(0,d.useEffect)(()=>{(async()=>{G&&a&&K({...(await (0,j.keyInfoV1Call)(a,G)).info,token:G,api_key:G})})()},[G,a]),(0,d.useEffect)(()=>{function e(e){N.current&&!N.current.contains(e.target)&&v(!1),Z.current&&!Z.current.contains(e.target)&&g(!1),w.current&&!w.current.contains(e.target)&&P(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,d.useEffect)(()=>{i&&eI.lo.includes(i)&&X(!0)},[i]);let em=(0,sE.a)({queryKey:["logs","table",y,_,k,C,F,z,Q?n:null,Y,q],queryFn:async()=>{if(!a||!r||!i||!n)return{data:[],total:0,page:1,page_size:_,total_pages:0};let e=ab()(k).utc().format("YYYY-MM-DD HH:mm:ss"),s=A?ab()(C).utc().format("YYYY-MM-DD HH:mm:ss"):ab()().utc().format("YYYY-MM-DD HH:mm:ss"),t=await (0,j.uiSpendLogsCall)(a,z||void 0,F||void 0,void 0,e,s,y,_,Q?n:void 0,W,Y,q);return await aC(t.data,e,a,ei),t.data=t.data.map(s=>{let t=ei.getQueryData(["logDetails",s.request_id,e]);return(null==t?void 0:t.messages)&&(null==t?void 0:t.response)&&(s.messages=t.messages,s.response=t.response),s}),t},enabled:!!a&&!!r&&!!i&&!!n&&"request logs"===ee,refetchInterval:!!en&&1===y&&15e3,refetchIntervalInBackground:!0}),{filters:eu,filteredLogs:ex,allTeams:eh,allKeyAliases:ep,handleFilterChange:eg,handleFilterReset:ej}=function(e){let{logs:s,accessToken:t,startTime:l,endTime:a,pageSize:r=25,isCustomDate:i,setCurrentPage:n,userID:o,userRole:c}=e,m=(0,d.useMemo)(()=>({[aB.TEAM_ID]:"",[aB.KEY_HASH]:"",[aB.REQUEST_ID]:"",[aB.MODEL]:"",[aB.USER_ID]:"",[aB.END_USER]:"",[aB.STATUS]:"",[aB.KEY_ALIAS]:""}),[]),[u,x]=(0,d.useState)(m),[h,p]=(0,d.useState)({data:[],total:0,page:1,page_size:50,total_pages:0}),g=(0,d.useRef)(0),f=(0,d.useCallback)(async function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!t)return;console.log("Filters being sent to API:",e);let n=Date.now();g.current=n;let o=ab()(l).utc().format("YYYY-MM-DD HH:mm:ss"),c=i?ab()(a).utc().format("YYYY-MM-DD HH:mm:ss"):ab()().utc().format("YYYY-MM-DD HH:mm:ss");try{let l=await (0,j.uiSpendLogsCall)(t,e[aB.KEY_HASH]||void 0,e[aB.TEAM_ID]||void 0,e[aB.REQUEST_ID]||void 0,o,c,s,r,e[aB.USER_ID]||void 0,e[aB.END_USER]||void 0,e[aB.STATUS]||void 0,e[aB.MODEL]||void 0,e[aB.KEY_ALIAS]||void 0);n===g.current&&l.data&&p(l)}catch(e){console.error("Error searching users:",e)}},[t,l,a,i,r]),v=(0,d.useMemo)(()=>eC()((e,s)=>f(e,s),300),[f]);(0,d.useEffect)(()=>()=>v.cancel(),[v]);let y=(0,sE.a)({queryKey:["allKeys"],queryFn:async()=>{if(!t)throw Error("Access token required");return await sP(t)},enabled:!!t}).data||[],b=(0,d.useMemo)(()=>!!(u[aB.KEY_ALIAS]||u[aB.KEY_HASH]||u[aB.REQUEST_ID]||u[aB.USER_ID]||u[aB.END_USER]),[u]),_=(0,d.useMemo)(()=>{if(!s||!s.data)return{data:[],total:0,page:1,page_size:50,total_pages:0};if(b)return s;let e=[...s.data];return u[aB.TEAM_ID]&&(e=e.filter(e=>e.team_id===u[aB.TEAM_ID])),u[aB.STATUS]&&(e=e.filter(e=>"success"===u[aB.STATUS]?!e.status||"success"===e.status:e.status===u[aB.STATUS])),u[aB.MODEL]&&(e=e.filter(e=>e.model===u[aB.MODEL])),u[aB.KEY_HASH]&&(e=e.filter(e=>e.api_key===u[aB.KEY_HASH])),u[aB.END_USER]&&(e=e.filter(e=>e.end_user===u[aB.END_USER])),{data:e,total:s.total,page:s.page,page_size:s.page_size,total_pages:s.total_pages}},[s,u,b]),N=(0,d.useMemo)(()=>b?h&&h.data&&h.data.length>0?h:s||{data:[],total:0,page:1,page_size:50,total_pages:0}:_,[b,h,_,s]),{data:Z}=(0,sE.a)({queryKey:["allTeamsForLogFilters",t],queryFn:async()=>t&&await sL(t)||[],enabled:!!t});return{filters:u,filteredLogs:N,allKeyAliases:y,allTeams:Z,handleFilterChange:e=>{x(s=>{let t={...s,...e};for(let e of Object.keys(m))e in t||(t[e]=m[e]);return JSON.stringify(t)!==JSON.stringify(s)&&(n(1),v(t,1)),t})},handleFilterReset:()=>{x(m),p({data:[],total:0,page:1,page_size:50,total_pages:0}),v(m,1)}}}({logs:em.data||{data:[],total:0,page:1,page_size:_||10,total_pages:1},accessToken:a,startTime:k,endTime:C,pageSize:_,isCustomDate:A,setCurrentPage:b,userID:n,userRole:i}),ef=(0,d.useCallback)(async e=>{if(a)try{let s=(await (0,j.keyListCall)(a,null,null,e,null,null,y,_)).keys.find(s=>s.key_alias===e);s&&U(s.token)}catch(e){console.error("Error fetching key hash for alias:",e)}},[a,y,_]);(0,d.useEffect)(()=>{a&&(eu["Team ID"]?R(eu["Team ID"]):R(""),J(eu.Status||""),V(eu.Model||""),$(eu["End User"]||""),eu["Key Hash"]?U(eu["Key Hash"]):eu["Key Alias"]?ef(eu["Key Alias"]):U(""))},[eu,a,ef]);let ev=(0,sE.a)({queryKey:["sessionLogs",ea],queryFn:async()=>{if(!a||!ea)return{data:[],total:0,page:1,page_size:50,total_pages:1};let e=await (0,j.sessionSpendLogsCall)(a,ea);return{data:e.data||e||[],total:(e.data||e||[]).length,page:1,page_size:1e3,total_pages:1}},enabled:!!a&&!!ea});if((0,d.useEffect)(()=>{var e;(null===(e=em.data)||void 0===e?void 0:e.data)&&et&&!em.data.data.some(e=>e.request_id===et)&&el(null)},[null===(s=em.data)||void 0===s?void 0:s.data,et]),!a||!r||!i||!n)return null;let ey=ex.data.filter(e=>!u||e.request_id.includes(u)||e.model.includes(u)||e.user&&e.user.includes(u)).map(e=>({...e,duration:(Date.parse(e.endTime)-Date.parse(e.startTime))/1e3,onKeyHashClick:e=>H(e),onSessionClick:e=>{e&&er(e)}}))||[],eb=(null===(l=ev.data)||void 0===l?void 0:null===(t=l.data)||void 0===t?void 0:t.map(e=>({...e,onKeyHashClick:e=>H(e),onSessionClick:e=>{}})))||[],e_=[{name:"Team ID",label:"Team ID",isSearchable:!0,searchFn:async e=>o&&0!==o.length?o.filter(s=>s.team_id.toLowerCase().includes(e.toLowerCase())||s.team_alias&&s.team_alias.toLowerCase().includes(e.toLowerCase())).map(e=>({label:"".concat(e.team_alias||e.team_id," (").concat(e.team_id,")"),value:e.team_id})):[]},{name:"Status",label:"Status",isSearchable:!1,options:[{label:"Success",value:"success"},{label:"Failure",value:"failure"}]},{name:"Model",label:"Model",isSearchable:!1},{name:"Key Alias",label:"Key Alias",isSearchable:!0,searchFn:async e=>a?(await sP(a)).filter(s=>s.toLowerCase().includes(e.toLowerCase())).map(e=>({label:e,value:e})):[]},{name:"End User",label:"End User",isSearchable:!0,searchFn:async e=>{if(!a)return[];let s=await (0,j.allEndUsersCall)(a);return((null==s?void 0:s.map(e=>e.user_id))||[]).filter(s=>s.toLowerCase().includes(e.toLowerCase())).map(e=>({label:e,value:e}))}},{name:"Key Hash",label:"Key Hash",isSearchable:!1}];if(ea&&ev.data)return(0,c.jsx)("div",{className:"w-full p-6",children:(0,c.jsx)(aP,{sessionId:ea,logs:ev.data.data,onBack:()=>er(null)})});let eN=[{label:"Last 15 Minutes",value:15,unit:"minutes"},{label:"Last Hour",value:1,unit:"hours"},{label:"Last 4 Hours",value:4,unit:"hours"},{label:"Last 24 Hours",value:24,unit:"hours"},{label:"Last 7 Days",value:7,unit:"days"}],eZ=eN.find(e=>e.value===ec.value&&e.unit===ec.unit),ew=A?aH(A,k,C):null==eZ?void 0:eZ.label;return(0,c.jsx)("div",{className:"w-full max-w-screen p-6 overflow-x-hidden box-border",children:(0,c.jsxs)(st.Z,{defaultIndex:0,onIndexChange:e=>es(0===e?"request logs":"audit logs"),children:[(0,c.jsxs)(sl.Z,{children:[(0,c.jsx)(ss.Z,{children:"Request Logs"}),(0,c.jsx)(ss.Z,{children:"Audit Logs"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,c.jsx)("h1",{className:"text-xl font-semibold",children:ea?(0,c.jsxs)(c.Fragment,{children:["Session: ",(0,c.jsx)("span",{className:"font-mono",children:ea}),(0,c.jsx)("button",{className:"ml-4 px-3 py-1 text-sm border rounded hover:bg-gray-50",onClick:()=>er(null),children:"← Back to All Logs"})]}):"Request Logs"})}),B&&G&&B.api_key===G?(0,c.jsx)(sI,{keyId:G,keyData:B,accessToken:a,userID:n,userRole:i,teams:o,onClose:()=>H(null),premiumUser:m,backButtonText:"Back to Logs"}):ea?(0,c.jsx)("div",{className:"bg-white rounded-lg shadow",children:(0,c.jsx)(lN,{columns:aw,data:eb,renderSubComponent:aJ,getRowCanExpand:()=>!0})}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sT,{options:e_,onApplyFilters:eg,onResetFilters:ej}),(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full box-border",children:[(0,c.jsx)("div",{className:"border-b px-6 py-4 w-full max-w-full box-border",children:(0,c.jsxs)("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between space-y-4 md:space-y-0 w-full max-w-full box-border",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 w-full max-w-full box-border",children:[(0,c.jsxs)("div",{className:"relative w-64 min-w-0 flex-shrink-0",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search by Request ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:u,onChange:e=>x(e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-shrink",children:[(0,c.jsxs)("div",{className:"relative z-50",ref:w,children:[(0,c.jsxs)("button",{onClick:()=>P(!E),className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})}),ew]}),E&&(0,c.jsx)("div",{className:"absolute right-0 mt-2 w-64 bg-white rounded-lg shadow-lg border p-2 z-50",children:(0,c.jsxs)("div",{className:"space-y-1",children:[eN.map(e=>(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(ew===e.label?"bg-blue-50 text-blue-600":""),onClick:()=>{I(ab()().format("YYYY-MM-DDTHH:mm")),S(ab()().subtract(e.value,e.unit).format("YYYY-MM-DDTHH:mm")),ed({value:e.value,unit:e.unit}),T(!1),P(!1)},children:e.label},e.label)),(0,c.jsx)("div",{className:"border-t my-2"}),(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(A?"bg-blue-50 text-blue-600":""),onClick:()=>T(!A),children:"Custom Range"})]})})]}),(0,c.jsx)(()=>(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-900",children:"Live Tail"}),(0,c.jsx)(tX.Z,{color:"green",checked:en,defaultChecked:!0,onChange:eo})]}),{}),(0,c.jsxs)("button",{onClick:()=>{em.refetch()},className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",title:"Refresh data",children:[(0,c.jsx)("svg",{className:"w-4 h-4 ".concat(em.isFetching?"animate-spin":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),(0,c.jsx)("span",{children:"Refresh"})]})]}),A&&(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{children:(0,c.jsx)("input",{type:"datetime-local",value:k,onChange:e=>{S(e.target.value),b(1)},className:"px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})}),(0,c.jsx)("span",{className:"text-gray-500",children:"to"}),(0,c.jsx)("div",{children:(0,c.jsx)("input",{type:"datetime-local",value:C,onChange:e=>{I(e.target.value),b(1)},className:"px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})})]})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700 whitespace-nowrap",children:["Showing ",em.isLoading?"...":ex?(y-1)*_+1:0," -"," ",em.isLoading?"...":ex?Math.min(y*_,ex.total):0," ","of ",em.isLoading?"...":ex?ex.total:0," results"]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700 min-w-[90px]",children:["Page ",em.isLoading?"...":y," of"," ",em.isLoading?"...":ex?ex.total_pages:1]}),(0,c.jsx)("button",{onClick:()=>b(e=>Math.max(1,e-1)),disabled:em.isLoading||1===y,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Previous"}),(0,c.jsx)("button",{onClick:()=>b(e=>Math.min(ex.total_pages||1,e+1)),disabled:em.isLoading||y===(ex.total_pages||1),className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Next"})]})]})]})}),en&&1===y&&(0,c.jsxs)("div",{className:"mb-4 px-4 py-2 bg-green-50 border border-greem-200 rounded-md flex items-center justify-between",children:[(0,c.jsx)("div",{className:"flex items-center gap-2",children:(0,c.jsx)("span",{className:"text-sm text-green-700",children:"Auto-refreshing every 15 seconds"})}),(0,c.jsx)("button",{onClick:()=>eo(!1),className:"text-sm text-green-600 hover:text-green-800",children:"Stop"})]}),(0,c.jsx)(lN,{columns:aw,data:ey,renderSubComponent:aJ,getRowCanExpand:()=>!0})]})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(aG,{userID:n,userRole:i,token:r,accessToken:a,isActive:"audit logs"===ee,premiumUser:m,allTeams:o})})]})]})})}function aJ(e){var s,t,l,a,r,i,n,o;let{row:d}=e,m=e=>{if("string"==typeof e)try{return JSON.parse(e)}catch(e){}return e},u=d.original.metadata||{},x="failure"===u.status,h=x?u.error_information:null,p=d.original.messages&&(Array.isArray(d.original.messages)?d.original.messages.length>0:Object.keys(d.original.messages).length>0),g=d.original.response&&Object.keys(m(d.original.response)).length>0,j=u.vector_store_request_metadata&&Array.isArray(u.vector_store_request_metadata)&&u.vector_store_request_metadata.length>0,f=d.original.metadata&&d.original.metadata.guardrail_information,v=f&&(null===(o=d.original.metadata)||void 0===o?void 0:o.guardrail_information.masked_entity_count)?Object.values(d.original.metadata.guardrail_information.masked_entity_count).reduce((e,s)=>e+("number"==typeof s?s:0),0):0;return(0,c.jsxs)("div",{className:"p-6 bg-gray-50 space-y-6 w-full max-w-full overflow-hidden box-border",children:[(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full overflow-hidden",children:[(0,c.jsx)("div",{className:"p-4 border-b",children:(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Request Details"})}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 p-4 w-full max-w-full overflow-hidden",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Request ID:"}),(0,c.jsx)("span",{className:"font-mono text-sm",children:d.original.request_id})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Model:"}),(0,c.jsx)("span",{children:d.original.model})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Model ID:"}),(0,c.jsx)("span",{children:d.original.model_id})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Call Type:"}),(0,c.jsx)("span",{children:d.original.call_type})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Provider:"}),(0,c.jsx)("span",{children:d.original.custom_llm_provider||"-"})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"API Base:"}),(0,c.jsx)(B.Z,{title:d.original.api_base||"-",children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:d.original.api_base||"-"})})]}),(null==d?void 0:null===(s=d.original)||void 0===s?void 0:s.requester_ip_address)&&(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"IP Address:"}),(0,c.jsx)("span",{children:null==d?void 0:null===(t=d.original)||void 0===t?void 0:t.requester_ip_address})]}),f&&(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Guardrail:"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-mono",children:d.original.metadata.guardrail_information.guardrail_name}),v>0&&(0,c.jsxs)("span",{className:"ml-2 px-2 py-0.5 bg-blue-50 text-blue-700 rounded-md text-xs font-medium",children:[v," masked"]})]})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Tokens:"}),(0,c.jsxs)("span",{children:[d.original.total_tokens," (",d.original.prompt_tokens," prompt tokens +"," ",d.original.completion_tokens," completion tokens)"]})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cache Read Tokens:"}),(0,c.jsx)("span",{children:eL((null===(a=d.original.metadata)||void 0===a?void 0:null===(l=a.additional_usage_values)||void 0===l?void 0:l.cache_read_input_tokens)||0)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cache Creation Tokens:"}),(0,c.jsx)("span",{children:eL(null===(r=d.original.metadata)||void 0===r?void 0:r.additional_usage_values.cache_creation_input_tokens)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cost:"}),(0,c.jsxs)("span",{children:["$",eL(d.original.spend||0,6)]})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cache Hit:"}),(0,c.jsx)("span",{children:d.original.cache_hit})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Status:"}),(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block text-center w-16 ".concat("failure"!==((null===(i=d.original.metadata)||void 0===i?void 0:i.status)||"Success").toLowerCase()?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:"failure"!==((null===(n=d.original.metadata)||void 0===n?void 0:n.status)||"Success").toLowerCase()?"Success":"Failure"})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Start Time:"}),(0,c.jsx)("span",{children:d.original.startTime})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"End Time:"}),(0,c.jsx)("span",{children:d.original.endTime})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Duration:"}),(0,c.jsxs)("span",{children:[d.original.duration," s."]})]})]})]})]}),(0,c.jsx)(aT,{show:!p&&!g}),(0,c.jsx)("div",{className:"w-full max-w-full overflow-hidden",children:(0,c.jsx)(aI,{row:d,hasMessages:p,hasResponse:g,hasError:x,errorInfo:h,getRawRequest:()=>{var e;return(null===(e=d.original)||void 0===e?void 0:e.proxy_server_request)?m(d.original.proxy_server_request):m(d.original.messages)},formattedResponse:()=>x&&h?{error:{message:h.error_message||"An error occurred",type:h.error_class||"error",code:h.error_code||"unknown",param:null}}:m(d.original.response)})}),f&&(0,c.jsx)(aV,{data:d.original.metadata.guardrail_information}),j&&(0,c.jsx)(aL,{data:u.vector_store_request_metadata}),x&&h&&(0,c.jsx)(aA,{errorInfo:h}),d.original.request_tags&&Object.keys(d.original.request_tags).length>0&&(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsx)("div",{className:"flex justify-between items-center p-4 border-b",children:(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Request Tags"})}),(0,c.jsx)("div",{className:"p-4",children:(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(d.original.request_tags).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded-full text-xs",children:[s,": ",String(t)]},s)})})})]}),d.original.metadata&&Object.keys(d.original.metadata).length>0&&(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b",children:[(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Metadata"}),(0,c.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(JSON.stringify(d.original.metadata,null,2))},className:"p-1 hover:bg-gray-200 rounded",title:"Copy metadata",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,c.jsx)("div",{className:"p-4 overflow-auto max-h-64",children:(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all",children:JSON.stringify(d.original.metadata,null,2)})})]})]})}var aW=t(97851),a$=t(14042),aQ=t(49634);let aX=[{label:"Today",shortLabel:"today",getValue:()=>({from:ab()().startOf("day").toDate(),to:ab()().endOf("day").toDate()})},{label:"Last 7 days",shortLabel:"7d",getValue:()=>({from:ab()().subtract(7,"days").startOf("day").toDate(),to:ab()().endOf("day").toDate()})},{label:"Last 30 days",shortLabel:"30d",getValue:()=>({from:ab()().subtract(30,"days").startOf("day").toDate(),to:ab()().endOf("day").toDate()})},{label:"Month to date",shortLabel:"MTD",getValue:()=>({from:ab()().startOf("month").toDate(),to:ab()().endOf("day").toDate()})},{label:"Year to date",shortLabel:"YTD",getValue:()=>({from:ab()().startOf("year").toDate(),to:ab()().endOf("day").toDate()})}];var a0=e=>{let{value:s,onValueChange:t,label:l="Select Time Range",showTimeRange:a=!0}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(s),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(""),[p,g]=(0,d.useState)(""),j=(0,d.useRef)(null),f=(0,d.useCallback)(e=>{if(!e.from||!e.to)return null;for(let s of aX){let t=s.getValue(),l=ab()(e.from).isSame(ab()(t.from),"day"),a=ab()(e.to).isSame(ab()(t.to),"day");if(l&&a)return s.shortLabel}return null},[]);(0,d.useEffect)(()=>{u(f(s))},[s,f]);let v=(0,d.useCallback)(()=>{if(!x||!p)return{isValid:!0,error:""};let e=ab()(x,"YYYY-MM-DD"),s=ab()(p,"YYYY-MM-DD");return e.isValid()&&s.isValid()?s.isBefore(e)?{isValid:!1,error:"End date cannot be before start date"}:{isValid:!0,error:""}:{isValid:!1,error:"Invalid date format"}},[x,p])();(0,d.useEffect)(()=>{s.from&&h(ab()(s.from).format("YYYY-MM-DD")),s.to&&g(ab()(s.to).format("YYYY-MM-DD")),o(s)},[s]),(0,d.useEffect)(()=>{let e=e=>{j.current&&!j.current.contains(e.target)&&i(!1)};return r&&document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[r]);let y=(0,d.useCallback)((e,s)=>{if(!e||!s)return"Select date range";let t=e=>ab()(e).format("D MMM, HH:mm");return"".concat(t(e)," - ").concat(t(s))},[]),_=(0,d.useCallback)(e=>{let s;if(!e.from)return e;let t={...e},l=new Date(e.from);return s=new Date(e.to?e.to:e.from),l.toDateString(),s.toDateString(),l.setHours(0,0,0,0),s.setHours(23,59,59,999),t.from=l,t.to=s,t},[]),N=e=>{let{from:s,to:t}=e.getValue();o({from:s,to:t}),u(e.shortLabel),h(ab()(s).format("YYYY-MM-DD")),g(ab()(t).format("YYYY-MM-DD"))},Z=(0,d.useCallback)(()=>{try{if(x&&p&&v.isValid){let e=ab()(x,"YYYY-MM-DD").startOf("day"),s=ab()(p,"YYYY-MM-DD").endOf("day");if(e.isValid()&&s.isValid()){let t={from:e.toDate(),to:s.toDate()};o(t);let l=f(t);u(l)}}}catch(e){console.warn("Invalid date format:",e)}},[x,p,v.isValid,f]);return(0,d.useEffect)(()=>{Z()},[Z]),(0,c.jsxs)("div",{children:[l&&(0,c.jsx)(k.Z,{className:"mb-2",children:l}),(0,c.jsxs)("div",{className:"relative",ref:j,children:[(0,c.jsx)("div",{className:"w-[300px] px-3 py-2 text-sm border border-gray-300 rounded-md bg-white cursor-pointer hover:border-gray-400 focus:border-blue-500 focus:ring-1 focus:ring-blue-500",onClick:()=>i(!r),children:(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(lt.Z,{className:"text-gray-600"}),(0,c.jsx)("span",{className:"text-gray-900",children:y(s.from,s.to)})]}),(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-400 transition-transform ".concat(r?"rotate-180":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})}),r&&(0,c.jsx)("div",{className:"absolute top-full left-0 z-[9999] min-w-[600px] mt-1 bg-white border border-gray-200 rounded-lg shadow-xl",children:(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsxs)("div",{className:"w-1/2 border-r border-gray-200",children:[(0,c.jsx)("div",{className:"p-3 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-sm font-semibold text-gray-900",children:"Relative time (today, 7d, 30d, MTD, YTD)"})}),(0,c.jsx)("div",{className:"h-[350px] overflow-y-auto",children:aX.map(e=>{let s=m===e.shortLabel;return(0,c.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 cursor-pointer border-b border-gray-100 transition-colors ".concat(s?"bg-blue-50 hover:bg-blue-100 border-blue-200":"hover:bg-gray-50"),onClick:()=>N(e),children:[(0,c.jsx)("span",{className:"text-sm ".concat(s?"text-blue-700 font-medium":"text-gray-700"),children:e.label}),(0,c.jsx)("span",{className:"text-xs px-2 py-1 rounded ".concat(s?"text-blue-700 bg-blue-100":"text-gray-500 bg-gray-100"),children:e.shortLabel})]},e.label)})})]}),(0,c.jsxs)("div",{className:"w-1/2 relative",children:[(0,c.jsx)("div",{className:"p-3.5 border-b border-gray-200",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(aQ.Z,{className:"text-gray-600"}),(0,c.jsx)("span",{className:"text-sm font-semibold text-gray-900",children:"Start and end dates"})]})}),(0,c.jsxs)("div",{className:"p-6 space-y-6 pb-20",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"text-sm text-gray-700 mb-1 block",children:"Start date"}),(0,c.jsx)("input",{type:"date",value:x,onChange:e=>h(e.target.value),className:"w-65 px-3 py-2 text-sm border rounded-md cursor-pointer hover:border-gray-400 focus:border-blue-500 focus:ring-1 focus:ring-blue-500 ".concat(v.isValid?"border-gray-300":"border-red-300 focus:border-red-500 focus:ring-red-200")})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"text-sm text-gray-700 mb-1 block",children:"End date"}),(0,c.jsx)("input",{type:"date",value:p,onChange:e=>g(e.target.value),className:"w-65 px-3 py-2 text-sm border rounded-md cursor-pointer hover:border-gray-400 focus:border-blue-500 focus:ring-1 focus:ring-blue-500 ".concat(v.isValid?"border-gray-300":"border-red-300 focus:border-red-500 focus:ring-red-200")})]}),!v.isValid&&v.error&&(0,c.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-md p-3",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4 text-red-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})}),(0,c.jsx)("span",{className:"text-sm text-red-700 font-medium",children:v.error})]})}),n.from&&n.to&&v.isValid&&(0,c.jsxs)("div",{className:"bg-blue-50 p-3 rounded-md",children:[(0,c.jsx)("div",{className:"text-xs text-blue-700 font-medium",children:"Preview:"}),(0,c.jsx)("div",{className:"text-sm text-blue-800",children:y(n.from,n.to)})]})]}),(0,c.jsx)("div",{className:"absolute bottom-4 right-4",children:(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{o(s),s.from&&h(ab()(s.from).format("YYYY-MM-DD")),s.to&&g(ab()(s.to).format("YYYY-MM-DD")),u(f(s)),i(!1)},children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:()=>{n.from&&n.to&&v.isValid&&(t(n),requestIdleCallback(()=>{t(_(n))},{timeout:100}),i(!1))},disabled:!n.from||!n.to||!v.isValid,children:"Apply"})]})})]})]})})]}),a&&s.from&&s.to&&(0,c.jsxs)(k.Z,{className:"mt-2 text-xs text-gray-500",children:[ab()(s.from).format("MMM D, YYYY [at] HH:mm:ss")," -"," ",ab()(s.to).format("MMM D, YYYY [at] HH:mm:ss")]})]})},a1=e=>{let{userID:s,userRole:t,accessToken:l,userSpend:a,userMaxBudget:r,selectedTeam:i}=e;console.log("userSpend: ".concat(a));let[n,o]=(0,d.useState)(null!==a?a:0),[m,u]=(0,d.useState)(i?Number(eL(i.max_budget,4)):null);(0,d.useEffect)(()=>{if(i){if("Default Team"===i.team_alias)u(r);else{let e=!1;if(i.team_memberships)for(let t of i.team_memberships)t.user_id===s&&"max_budget"in t.litellm_budget_table&&null!==t.litellm_budget_table.max_budget&&(u(t.litellm_budget_table.max_budget),e=!0);e||u(i.max_budget)}}},[i,r]);let[x,h]=(0,d.useState)([]);(0,d.useEffect)(()=>{let e=async()=>{if(!l||!s||!t)return};(async()=>{try{if(null===s||null===t)return;if(null!==l){let e=(await (0,j.modelAvailableCall)(l,s,t)).data.map(e=>e.id);console.log("available_model_names:",e),h(e)}}catch(e){console.error("Error fetching user models:",e)}})(),e()},[t,l,s]),(0,d.useEffect)(()=>{null!==a&&o(a)},[a]);let p=[];i&&i.models&&(p=i.models),p&&p.includes("all-proxy-models")?(console.log("user models:",x),p=x):p&&p.includes("all-team-models")?p=i.models:p&&0===p.length&&(p=x);let g=null!==m?"$".concat(eL(Number(m),4)," limit"):"No limit",f=void 0!==n?eL(n,4):null;return console.log("spend in view user spend: ".concat(n)),(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsxs)("div",{className:"flex justify-between gap-x-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content",children:"Total Spend"}),(0,c.jsxs)("p",{className:"text-2xl text-tremor-content-strong dark:text-dark-tremor-content-strong font-semibold",children:["$",f]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content",children:"Max Budget"}),(0,c.jsx)("p",{className:"text-2xl text-tremor-content-strong dark:text-dark-tremor-content-strong font-semibold",children:g})]})]})})};let a2=e=>{let{key:s,info:t}=e;return{token:s,...t}};var a4=e=>{let{topKeys:s,accessToken:t,userID:l,userRole:a,teams:r,premiumUser:i,showTags:n=!1}=e,[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(null),[h,p]=(0,d.useState)(void 0),[g,f]=(0,d.useState)("table"),[v,y]=(0,d.useState)(new Set),_=e=>{y(s=>{let t=new Set(s);return t.has(e)?t.delete(e):t.add(e),t})},N=async e=>{if(t)try{let s=await (0,j.keyInfoV1Call)(t,e.api_key),l=a2(s);p(l),x(e.api_key),m(!0)}catch(e){console.error("Error fetching key info:",e)}},Z=()=>{m(!1),x(null),p(void 0)};d.useEffect(()=>{let e=e=>{"Escape"===e.key&&o&&Z()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[o]);let w=[{header:"Key ID",accessorKey:"api_key",cell:e=>(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.getValue(),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>N(e.row.original),children:e.getValue()?"".concat(e.getValue().slice(0,7),"..."):"-"})})})},{header:"Key Alias",accessorKey:"key_alias",cell:e=>e.getValue()||"-"}],k={header:"Spend (USD)",accessorKey:"spend",cell:e=>{let s=e.getValue();return s>0&&s<.01?"<$0.01":"$".concat(eL(s,2))}},S=n?[...w,{header:"Tags",accessorKey:"tags",cell:e=>{let s=e.getValue(),t=e.row.original.api_key,l=v.has(t);if(!s||0===s.length)return"-";let a=s.sort((e,s)=>s.usage-e.usage),r=l?a:a.slice(0,2),i=s.length>2;return(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[r.map((e,s)=>(0,c.jsx)(B.Z,{title:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Tag Name:"})," ",e.tag]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Spend:"})," ",e.usage>0&&e.usage<.01?"<$0.01":"$".concat(eL(e.usage,2))]})]}),children:(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded-full text-xs",children:[e.tag.slice(0,7),"..."]})},s)),i&&(0,c.jsx)("button",{onClick:()=>_(t),className:"ml-1 p-1 hover:bg-gray-200 rounded-full transition-colors",title:l?"Show fewer tags":"Show all tags",children:l?(0,c.jsx)(sG.Z,{className:"h-3 w-3 text-gray-500"}):(0,c.jsx)(sv.Z,{className:"h-3 w-3 text-gray-500"})})]})})}},k]:[...w,k],C=s.map(e=>({...e,display_key_alias:e.key_alias&&e.key_alias.length>10?"".concat(e.key_alias.slice(0,10),"..."):e.key_alias||"-"}));return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"mb-4 flex justify-end items-center",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>f("table"),className:"px-3 py-1 text-sm rounded-md ".concat("table"===g?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"),children:"Table View"}),(0,c.jsx)("button",{onClick:()=>f("chart"),className:"px-3 py-1 text-sm rounded-md ".concat("chart"===g?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"),children:"Chart View"})]})}),"chart"===g?(0,c.jsx)("div",{className:"relative",children:(0,c.jsx)(to.Z,{className:"mt-4 h-40 cursor-pointer hover:opacity-90",data:C,index:"display_key_alias",categories:["spend"],colors:["cyan"],yAxisWidth:120,tickGap:5,layout:"vertical",showXAxis:!1,showLegend:!1,valueFormatter:e=>e?"$".concat(eL(e,2)):"No Key Alias",onValueChange:e=>N(e),showTooltip:!0,customTooltip:e=>{var s,t;let l=null===(t=e.payload)||void 0===t?void 0:null===(s=t[0])||void 0===s?void 0:s.payload;return(0,c.jsx)("div",{className:"relative z-50 p-3 bg-black/90 shadow-lg rounded-lg text-white max-w-xs",children:(0,c.jsxs)("div",{className:"space-y-1.5",children:[(0,c.jsxs)("div",{className:"text-sm",children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Key Alias: "}),(0,c.jsx)("span",{className:"font-mono text-gray-100 break-all",children:null==l?void 0:l.key_alias})]}),(0,c.jsxs)("div",{className:"text-sm",children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Key ID: "}),(0,c.jsx)("span",{className:"font-mono text-gray-100 break-all",children:null==l?void 0:l.api_key})]}),(0,c.jsxs)("div",{className:"text-sm",children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Spend: "}),(0,c.jsxs)("span",{className:"text-white font-medium",children:["$",eL(null==l?void 0:l.spend,2)]})]})]})})}})}):(0,c.jsx)("div",{className:"border rounded-lg overflow-hidden",children:(0,c.jsx)(lN,{columns:S,data:s,renderSubComponent:()=>(0,c.jsx)(c.Fragment,{}),getRowCanExpand:()=>!1,isLoading:!1})}),o&&u&&h&&(console.log("Rendering modal with:",{isModalOpen:o,selectedKey:u,keyData:h}),(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",onClick:e=>{e.target===e.currentTarget&&Z()},children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl relative w-11/12 max-w-6xl max-h-[90vh] overflow-y-auto min-h-[750px]",children:[(0,c.jsx)("button",{onClick:Z,className:"absolute top-4 right-4 text-gray-500 hover:text-gray-700 focus:outline-none","aria-label":"Close",children:(0,c.jsx)("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M6 18L18 6M6 6l12 12"})})}),(0,c.jsx)("div",{className:"p-6 h-full",children:(0,c.jsx)(sI,{keyId:u,onClose:Z,keyData:h,accessToken:t,userID:l,userRole:a,teams:r,premiumUser:i})})]})}))]})};function a5(e){return e>=1e6?(e/1e6).toFixed(2)+"M":e>=1e3?e/1e3+"k":e.toString()}function a3(e){return 0===e?"$0":e>=1e6?"$"+e/1e6+"M":e>=1e3?"$"+e/1e3+"k":"$"+e}let a6={blue:"#3b82f6",cyan:"#06b6d4",indigo:"#6366f1",green:"#22c55e",red:"#ef4444",purple:"#8b5cf6"},a8=e=>{let{active:s,payload:t,label:l}=e;if(s&&t&&t.length){let e=e=>e.replace("metrics.","").replace(/_/g," ").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),s=(e,s)=>{let t=s.substring(s.indexOf(".")+1);if(e.metrics&&t in e.metrics)return e.metrics[t]};return(0,c.jsxs)("div",{className:"w-56 rounded-tremor-default border border-tremor-border bg-tremor-background p-2 text-tremor-default shadow-tremor-dropdown",children:[(0,c.jsx)("p",{className:"text-tremor-content-strong",children:l}),t.map(t=>{var l;let a=null===(l=t.dataKey)||void 0===l?void 0:l.toString();if(!a||!t.payload)return null;let r=s(t.payload,a),i=a.includes("spend"),n=void 0!==r?i?"$".concat(r.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})):r.toLocaleString():"N/A",o=a6[t.color]||t.color;return(0,c.jsxs)("div",{className:"flex items-center justify-between space-x-4",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full ring-2 ring-white drop-shadow-md",style:{backgroundColor:o}}),(0,c.jsx)("p",{className:"font-medium text-tremor-content dark:text-dark-tremor-content",children:e(a)})]}),(0,c.jsx)("p",{className:"font-medium text-tremor-content-emphasis dark:text-dark-tremor-content-emphasis",children:n})]},a)})]})}return null},a7=e=>{let{categories:s,colors:t}=e,l=e=>e.replace("metrics.","").replace(/_/g," ").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ");return(0,c.jsx)("div",{className:"flex items-center justify-end space-x-4",children:s.map((e,s)=>{let a=a6[t[s]]||t[s];return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full ring-4 ring-white",style:{backgroundColor:a}}),(0,c.jsx)("p",{className:"text-sm text-tremor-content dark:text-dark-tremor-content",children:l(e)})]},e)})})},a9=e=>{var s,t;let{modelName:l,metrics:a}=e;return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)(y.Z,{numItems:4,className:"gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Requests"}),(0,c.jsx)(S.Z,{children:a.total_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Successful Requests"}),(0,c.jsx)(S.Z,{children:a.total_successful_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Tokens"}),(0,c.jsx)(S.Z,{children:a.total_tokens.toLocaleString()}),(0,c.jsxs)(k.Z,{children:[Math.round(a.total_tokens/a.total_successful_requests)," avg per successful request"]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Spend"}),(0,c.jsxs)(S.Z,{children:["$",eL(a.total_spend,2)]}),(0,c.jsxs)(k.Z,{children:["$",eL(a.total_spend/a.total_successful_requests,3)," per successful request"]})]})]}),a.top_api_keys&&a.top_api_keys.length>0&&(0,c.jsxs)(G.Z,{className:"mt-4",children:[(0,c.jsx)(S.Z,{children:"Top API Keys by Spend"}),(0,c.jsx)("div",{className:"mt-3",children:(0,c.jsx)("div",{className:"grid grid-cols-1 gap-2",children:a.top_api_keys.map((e,s)=>(0,c.jsxs)("div",{className:"flex justify-between items-center p-3 bg-gray-50 rounded-lg",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:e.key_alias||"".concat(e.api_key.substring(0,10),"...")}),e.team_id&&(0,c.jsxs)(k.Z,{className:"text-xs text-gray-500",children:["Team: ",e.team_id]})]}),(0,c.jsxs)("div",{className:"text-right",children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["$",eL(e.spend,2)]}),(0,c.jsxs)(k.Z,{className:"text-xs text-gray-500",children:[e.requests.toLocaleString()," requests | ",e.tokens.toLocaleString()," tokens"]})]})]},e.api_key))})})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Total Tokens"}),(0,c.jsx)(a7,{categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"]})]}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"],valueFormatter:a5,customTooltip:a8,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Requests per day"}),(0,c.jsx)(a7,{categories:["metrics.api_requests"],colors:["blue"]})]}),(0,c.jsx)(to.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.api_requests"],colors:["blue"],valueFormatter:a5,customTooltip:a8,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Spend per day"}),(0,c.jsx)(a7,{categories:["metrics.spend"],colors:["green"]})]}),(0,c.jsx)(to.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.spend"],colors:["green"],valueFormatter:e=>"$".concat(eL(e,2))})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Success vs Failed Requests"}),(0,c.jsx)(a7,{categories:["metrics.successful_requests","metrics.failed_requests"],colors:["green","red"]})]}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.successful_requests","metrics.failed_requests"],colors:["green","red"],valueFormatter:a5,stack:!0,customTooltip:a8,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Prompt Caching Metrics"}),(0,c.jsx)(a7,{categories:["metrics.cache_read_input_tokens","metrics.cache_creation_input_tokens"],colors:["cyan","purple"]})]}),(0,c.jsxs)("div",{className:"mb-2",children:[(0,c.jsxs)(k.Z,{children:["Cache Read: ",(null===(s=a.total_cache_read_input_tokens)||void 0===s?void 0:s.toLocaleString())||0," tokens"]}),(0,c.jsxs)(k.Z,{children:["Cache Creation: ",(null===(t=a.total_cache_creation_input_tokens)||void 0===t?void 0:t.toLocaleString())||0," tokens"]})]}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.cache_read_input_tokens","metrics.cache_creation_input_tokens"],colors:["cyan","purple"],valueFormatter:a5,customTooltip:a8,showLegend:!1})]})]})]})},re=e=>{let{modelMetrics:s}=e,t=Object.keys(s).sort((e,t)=>""===e?1:""===t?-1:s[t].total_spend-s[e].total_spend),l={total_requests:0,total_successful_requests:0,total_tokens:0,total_spend:0,total_cache_read_input_tokens:0,total_cache_creation_input_tokens:0,daily_data:{}};Object.values(s).forEach(e=>{l.total_requests+=e.total_requests,l.total_successful_requests+=e.total_successful_requests,l.total_tokens+=e.total_tokens,l.total_spend+=e.total_spend,l.total_cache_read_input_tokens+=e.total_cache_read_input_tokens||0,l.total_cache_creation_input_tokens+=e.total_cache_creation_input_tokens||0,e.daily_data.forEach(e=>{l.daily_data[e.date]||(l.daily_data[e.date]={prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,spend:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0}),l.daily_data[e.date].prompt_tokens+=e.metrics.prompt_tokens,l.daily_data[e.date].completion_tokens+=e.metrics.completion_tokens,l.daily_data[e.date].total_tokens+=e.metrics.total_tokens,l.daily_data[e.date].api_requests+=e.metrics.api_requests,l.daily_data[e.date].spend+=e.metrics.spend,l.daily_data[e.date].successful_requests+=e.metrics.successful_requests,l.daily_data[e.date].failed_requests+=e.metrics.failed_requests,l.daily_data[e.date].cache_read_input_tokens+=e.metrics.cache_read_input_tokens||0,l.daily_data[e.date].cache_creation_input_tokens+=e.metrics.cache_creation_input_tokens||0})});let a=Object.entries(l.daily_data).map(e=>{let[s,t]=e;return{date:s,metrics:t}}).sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime());return(0,c.jsxs)("div",{className:"space-y-8",children:[(0,c.jsxs)("div",{className:"border rounded-lg p-4",children:[(0,c.jsx)(S.Z,{children:"Overall Usage"}),(0,c.jsxs)(y.Z,{numItems:4,className:"gap-4 mb-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Requests"}),(0,c.jsx)(S.Z,{children:l.total_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Successful Requests"}),(0,c.jsx)(S.Z,{children:l.total_successful_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Tokens"}),(0,c.jsx)(S.Z,{children:l.total_tokens.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Spend"}),(0,c.jsxs)(S.Z,{children:["$",eL(l.total_spend,2)]})]})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Total Tokens Over Time"}),(0,c.jsx)(a7,{categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"]})]}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a,index:"date",categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"],valueFormatter:a5,customTooltip:a8,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Requests Over Time"}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a,index:"date",categories:["metrics.successful_requests","metrics.failed_requests"],colors:["emerald","red"],valueFormatter:e=>e.toLocaleString(),stack:!0,customTooltip:a8,showLegend:!1})]})]})]}),(0,c.jsx)(tE.default,{defaultActiveKey:t[0],children:t.map(e=>(0,c.jsx)(tE.default.Panel,{header:(0,c.jsxs)("div",{className:"flex justify-between items-center w-full",children:[(0,c.jsx)(S.Z,{children:s[e].label||"Unknown Item"}),(0,c.jsxs)("div",{className:"flex space-x-4 text-sm text-gray-500",children:[(0,c.jsxs)("span",{children:["$",eL(s[e].total_spend,2)]}),(0,c.jsxs)("span",{children:[s[e].total_requests.toLocaleString()," requests"]})]})]}),children:(0,c.jsx)(a9,{modelName:e||"Unknown Model",metrics:s[e]})},e))})]})},rs=(e,s)=>{let t=e.metadata.key_alias||"key-hash-".concat(s),l=e.metadata.team_id;return l?"".concat(t," (team_id: ").concat(l,")"):t},rt=(e,s)=>{let t={};return e.results.forEach(e=>{Object.entries(e.breakdown[s]||{}).forEach(l=>{let[a,r]=l;t[a]||(t[a]={label:"api_keys"===s?rs(r,a):a,total_requests:0,total_successful_requests:0,total_failed_requests:0,total_tokens:0,prompt_tokens:0,completion_tokens:0,total_spend:0,total_cache_read_input_tokens:0,total_cache_creation_input_tokens:0,top_api_keys:[],daily_data:[]}),t[a].total_requests+=r.metrics.api_requests,t[a].prompt_tokens+=r.metrics.prompt_tokens,t[a].completion_tokens+=r.metrics.completion_tokens,t[a].total_tokens+=r.metrics.total_tokens,t[a].total_spend+=r.metrics.spend,t[a].total_successful_requests+=r.metrics.successful_requests,t[a].total_failed_requests+=r.metrics.failed_requests,t[a].total_cache_read_input_tokens+=r.metrics.cache_read_input_tokens||0,t[a].total_cache_creation_input_tokens+=r.metrics.cache_creation_input_tokens||0,t[a].daily_data.push({date:e.date,metrics:{prompt_tokens:r.metrics.prompt_tokens,completion_tokens:r.metrics.completion_tokens,total_tokens:r.metrics.total_tokens,api_requests:r.metrics.api_requests,spend:r.metrics.spend,successful_requests:r.metrics.successful_requests,failed_requests:r.metrics.failed_requests,cache_read_input_tokens:r.metrics.cache_read_input_tokens||0,cache_creation_input_tokens:r.metrics.cache_creation_input_tokens||0}})})}),"api_keys"!==s&&Object.entries(t).forEach(l=>{let[a,r]=l,i={};e.results.forEach(e=>{var t;let l=null===(t=e.breakdown[s])||void 0===t?void 0:t[a];l&&"api_key_breakdown"in l&&Object.entries(l.api_key_breakdown||{}).forEach(e=>{let[s,t]=e;i[s]||(i[s]={api_key:s,key_alias:t.metadata.key_alias,team_id:t.metadata.team_id,spend:0,requests:0,tokens:0}),i[s].spend+=t.metrics.spend,i[s].requests+=t.metrics.api_requests,i[s].tokens+=t.metrics.total_tokens})}),t[a].top_api_keys=Object.values(i).sort((e,s)=>s.spend-e.spend).slice(0,5)}),Object.values(t).forEach(e=>{e.daily_data.sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime())}),t};var rl=e=>{let{accessToken:s,selectedTags:t,formatAbbreviatedNumber:l}=e,[a,r]=(0,d.useState)({results:[],total_count:0,page:1,page_size:50,total_pages:0}),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(1),u=async()=>{if(s){n(!0);try{let e=await (0,j.perUserAnalyticsCall)(s,o,50,t.length>0?t:void 0);r(e)}catch(e){console.error("Failed to fetch per-user data:",e)}finally{n(!1)}}};return(0,d.useEffect)(()=>{u()},[s,t,o]),(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(S.Z,{children:"Per User Usage"}),(0,c.jsx)(sX.Z,{children:"Individual developer usage metrics"}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"User Details"}),(0,c.jsx)(ss.Z,{children:"Usage Distribution"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"User ID"}),(0,c.jsx)(sB.Z,{children:"User Email"}),(0,c.jsx)(sB.Z,{children:"User Agent"}),(0,c.jsx)(sB.Z,{className:"text-right",children:"Success Generations"}),(0,c.jsx)(sB.Z,{className:"text-right",children:"Total Tokens"}),(0,c.jsx)(sB.Z,{className:"text-right",children:"Failed Requests"}),(0,c.jsx)(sB.Z,{className:"text-right",children:"Total Cost"})]})}),(0,c.jsx)(sU.Z,{children:a.results.slice(0,10).map((e,s)=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{className:"font-medium",children:e.user_id})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{children:e.user_email||"N/A"})}),(0,c.jsx)(sq.Z,{children:(0,c.jsx)(k.Z,{children:e.user_agent||"Unknown"})}),(0,c.jsx)(sq.Z,{className:"text-right",children:(0,c.jsx)(k.Z,{children:l(e.successful_requests)})}),(0,c.jsx)(sq.Z,{className:"text-right",children:(0,c.jsx)(k.Z,{children:l(e.total_tokens)})}),(0,c.jsx)(sq.Z,{className:"text-right",children:(0,c.jsx)(k.Z,{children:l(e.failed_requests)})}),(0,c.jsx)(sq.Z,{className:"text-right",children:(0,c.jsxs)(k.Z,{children:["$",l(e.spend,4)]})})]},s))})]}),a.results.length>10&&(0,c.jsxs)("div",{className:"mt-4 flex justify-between items-center",children:[(0,c.jsxs)(k.Z,{className:"text-sm text-gray-500",children:["Showing 10 of ",a.total_count," results"]}),(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",onClick:()=>{o>1&&m(o-1)},disabled:1===o,children:"Previous"}),(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",onClick:()=>{o=a.total_pages,children:"Next"})]})]})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsx)(S.Z,{className:"text-lg",children:"User Usage Distribution"}),(0,c.jsx)(sX.Z,{children:"Number of users by successful request frequency"})]}),(0,c.jsx)(to.Z,{data:(()=>{let e=new Map;a.results.forEach(s=>{let t=s.user_agent||"Unknown";e.set(t,(e.get(t)||0)+1)});let s=Array.from(e.entries()).sort((e,s)=>{let[,t]=e,[,l]=s;return l-t}).slice(0,8).map(e=>{let[s]=e;return s}),t={"1-9 requests":{range:[1,9],agents:{}},"10-99 requests":{range:[10,99],agents:{}},"100-999 requests":{range:[100,999],agents:{}},"1K-9.9K requests":{range:[1e3,9999],agents:{}},"10K-99.9K requests":{range:[1e4,99999],agents:{}},"100K+ requests":{range:[1e5,1/0],agents:{}}};return a.results.forEach(e=>{let l=e.successful_requests,a=e.user_agent||"Unknown";s.includes(a)&&Object.entries(t).forEach(e=>{let[s,t]=e;l>=t.range[0]&&l<=t.range[1]&&(t.agents[a]||(t.agents[a]=0),t.agents[a]++)})}),Object.entries(t).map(e=>{let[t,l]=e,a={category:t};return s.forEach(e=>{a[e]=l.agents[e]||0}),a})})(),index:"category",categories:(()=>{let e=new Map;return a.results.forEach(s=>{let t=s.user_agent||"Unknown";e.set(t,(e.get(t)||0)+1)}),Array.from(e.entries()).sort((e,s)=>{let[,t]=e,[,l]=s;return l-t}).slice(0,8).map(e=>{let[s]=e;return s})})(),colors:["blue","green","orange","red","purple","yellow","pink","indigo"],valueFormatter:e=>"".concat(e," users"),yAxisWidth:80,showLegend:!0,stack:!0})]})]})]})]})},ra=t(49096),rr=t(53335);let{cva:ri,cx:rn,compose:ro}=(0,ra.ZD)({hooks:{onComplete:e=>(0,rr.m6)(e)}});function rc(e){var s,t;let{className:l="",...a}=e,r=(0,d.useId)();return s=()=>{let e=document.getAnimations().filter(e=>e instanceof CSSAnimation&&"spin"===e.animationName),s=e.find(e=>{var s;return(null===(s=e.effect.target)||void 0===s?void 0:s.getAttribute("data-spinner-id"))===r}),t=e.find(e=>{var s;return e.effect instanceof KeyframeEffect&&(null===(s=e.effect.target)||void 0===s?void 0:s.getAttribute("data-spinner-id"))!==r});s&&t&&(s.currentTime=t.currentTime)},t=[r],(0,d.useLayoutEffect)(s,t),(0,c.jsxs)("svg",{"data-spinner-id":r,className:rn("pointer-events-none size-12 animate-spin text-current",l),fill:"none",viewBox:"0 0 24 24",...a,children:[(0,c.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,c.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}let rd=e=>{let{isDateChanging:s=!1}=e;return(0,c.jsx)("div",{className:"flex items-center justify-center h-40",children:(0,c.jsxs)("div",{className:"flex items-center justify-center gap-3",children:[(0,c.jsx)(rc,{className:"size-5"}),(0,c.jsxs)("div",{className:"flex flex-col",children:[(0,c.jsx)("span",{className:"text-gray-600 text-sm font-medium",children:s?"Processing date selection...":"Loading chart data..."}),(0,c.jsx)("span",{className:"text-gray-400 text-xs mt-1",children:s?"This will only take a moment":"Fetching your data"})]})]})})};var rm=e=>{let{accessToken:s,userRole:t}=e,[l,a]=(0,d.useState)({results:[]}),[r,i]=(0,d.useState)({results:[]}),[n,o]=(0,d.useState)({results:[]}),[m,u]=(0,d.useState)({results:[]}),[x,h]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)([]),[b,_]=(0,d.useState)([]),[N,Z]=(0,d.useState)(!1),[w,C]=(0,d.useState)(!1),[A,T]=(0,d.useState)(!1),[E,P]=(0,d.useState)(!1),[L,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)(!1),F=new Date,R=async()=>{if(s){Z(!0);try{let e=await (0,j.tagDistinctCall)(s);v(e.results.map(e=>e.tag))}catch(e){console.error("Failed to fetch available tags:",e)}finally{Z(!1)}}},z=async()=>{if(s){C(!0);try{let e=await (0,j.tagDauCall)(s,F,p||void 0,b.length>0?b:void 0);a(e)}catch(e){console.error("Failed to fetch DAU data:",e)}finally{C(!1)}}},U=async()=>{if(s){T(!0);try{let e=await (0,j.tagWauCall)(s,F,p||void 0,b.length>0?b:void 0);i(e)}catch(e){console.error("Failed to fetch WAU data:",e)}finally{T(!1)}}},q=async()=>{if(s){P(!0);try{let e=await (0,j.tagMauCall)(s,F,p||void 0,b.length>0?b:void 0);o(e)}catch(e){console.error("Failed to fetch MAU data:",e)}finally{P(!1)}}},V=async()=>{if(s&&x.from&&x.to){M(!0);try{let e=await (0,j.userAgentSummaryCall)(s,x.from,x.to,b.length>0?b:void 0);u(e)}catch(e){console.error("Failed to fetch user agent summary data:",e)}finally{M(!1),D(!1)}}};(0,d.useEffect)(()=>{R()},[s]),(0,d.useEffect)(()=>{if(!s)return;let e=setTimeout(()=>{z(),U(),q()},50);return()=>clearTimeout(e)},[s,p,b]),(0,d.useEffect)(()=>{if(!x.from||!x.to)return;let e=setTimeout(()=>{V()},50);return()=>clearTimeout(e)},[s,x,b]);let K=e=>e.startsWith("User-Agent: ")?e.replace("User-Agent: ",""):e,H=e=>e.length>15?e.substring(0,15)+"...":e,Y=e=>Object.entries(e.reduce((e,s)=>(e[s.tag]=(e[s.tag]||0)+s.active_users,e),{})).sort((e,s)=>{let[,t]=e,[,l]=s;return l-t}).map(e=>{let[s]=e;return s}),J=Y(l.results).slice(0,10),W=Y(r.results).slice(0,10),$=Y(n.results).slice(0,10),Q=(()=>{let e=[],s=new Date;for(let t=6;t>=0;t--){let l=new Date(s);l.setDate(l.getDate()-t);let a={date:l.toISOString().split("T")[0]};J.forEach(e=>{a[K(e)]=0}),e.push(a)}return l.results.forEach(s=>{let t=K(s.tag),l=e.find(e=>e.date===s.date);l&&(l[t]=s.active_users)}),e})(),X=(()=>{let e=[];for(let s=1;s<=7;s++){let t={week:"Week ".concat(s)};W.forEach(e=>{t[K(e)]=0}),e.push(t)}return r.results.forEach(s=>{let t=K(s.tag),l=s.date.match(/Week (\d+)/);if(l){let a="Week ".concat(l[1]),r=e.find(e=>e.week===a);r&&(r[t]=s.active_users)}}),e})(),ee=(()=>{let e=[];for(let s=1;s<=7;s++){let t={month:"Month ".concat(s)};$.forEach(e=>{t[K(e)]=0}),e.push(t)}return n.results.forEach(s=>{let t=K(s.tag),l=s.date.match(/Month (\d+)/);if(l){let a="Month ".concat(l[1]),r=e.find(e=>e.month===a);r&&(r[t]=s.active_users)}}),e})(),es=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e>=1e8||e>=1e7||e>=1e6?(e/1e6).toFixed(s)+"M":e>=1e4?(e/1e3).toFixed(s)+"K":e>=1e3?(e/1e3).toFixed(s)+"K":e.toFixed(s)};return(0,c.jsxs)("div",{className:"space-y-6 mt-6",children:[(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-start",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Summary by User Agent"}),(0,c.jsx)(sX.Z,{children:"Performance metrics for different user agents"})]}),(0,c.jsxs)("div",{className:"w-96",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium block mb-2",children:"Filter by User Agents"}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"All User Agents",value:b,onChange:_,style:{width:"100%"},showSearch:!0,allowClear:!0,loading:N,optionFilterProp:"label",className:"rounded-md",maxTagCount:"responsive",children:f.map(e=>{let s=K(e),t=s.length>50?"".concat(s.substring(0,50),"..."):s;return(0,c.jsx)(I.default.Option,{value:e,label:t,title:s,children:t},e)})})]})]}),(0,c.jsx)(a0,{value:x,onValueChange:e=>{D(!0),M(!0),h(e)}}),L?(0,c.jsx)(rd,{isDateChanging:O}):(0,c.jsxs)(y.Z,{numItems:4,className:"gap-4",children:[(m.results||[]).slice(0,4).map((e,s)=>{let t=K(e.tag),l=H(t);return(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(B.Z,{title:t,placement:"top",children:(0,c.jsx)(S.Z,{className:"truncate",children:l})}),(0,c.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Success Requests"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:es(e.successful_requests)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Tokens"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:es(e.total_tokens)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Cost"}),(0,c.jsxs)(aE.Z,{className:"text-lg",children:["$",es(e.total_spend,4)]})]})]})]},s)}),Array.from({length:Math.max(0,4-(m.results||[]).length)}).map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"No Data"}),(0,c.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Success Requests"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Tokens"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Cost"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:"-"})]})]})]},"empty-".concat(s)))]})]})}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"DAU/WAU/MAU"}),(0,c.jsx)(ss.Z,{children:"Per User Usage (Last 30 Days)"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(S.Z,{children:"DAU, WAU & MAU per Agent"}),(0,c.jsx)(sX.Z,{children:"Active users across different time periods"})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"DAU"}),(0,c.jsx)(ss.Z,{children:"WAU"}),(0,c.jsx)(ss.Z,{children:"MAU"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(S.Z,{className:"text-lg",children:"Daily Active Users - Last 7 Days"})}),w?(0,c.jsx)(rd,{isDateChanging:!1}):(0,c.jsx)(to.Z,{data:Q,index:"date",categories:J.map(K),valueFormatter:e=>es(e),yAxisWidth:60,showLegend:!0,stack:!0})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(S.Z,{className:"text-lg",children:"Weekly Active Users - Last 7 Weeks"})}),A?(0,c.jsx)(rd,{isDateChanging:!1}):(0,c.jsx)(to.Z,{data:X,index:"week",categories:W.map(K),valueFormatter:e=>es(e),yAxisWidth:60,showLegend:!0,stack:!0})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(S.Z,{className:"text-lg",children:"Monthly Active Users - Last 7 Months"})}),E?(0,c.jsx)(rd,{isDateChanging:!1}):(0,c.jsx)(to.Z,{data:ee,index:"month",categories:$.map(K),valueFormatter:e=>es(e),yAxisWidth:60,showLegend:!0,stack:!0})]})]})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(rl,{accessToken:s,selectedTags:b,formatAbbreviatedNumber:es})})]})]})})]})},ru=e=>{let{accessToken:s,entityType:t,entityId:l,userID:a,userRole:r,entityList:i,premiumUser:n}=e,[o,m]=(0,d.useState)({results:[],metadata:{total_spend:0,total_api_requests:0,total_successful_requests:0,total_failed_requests:0,total_tokens:0}}),u=rt(o,"models"),x=rt(o,"api_keys"),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)({from:new Date(Date.now()-24192e5),to:new Date}),b=async()=>{if(!s||!g.from||!g.to)return;let e=new Date(g.from),l=new Date(g.to);if("tag"===t)m(await (0,j.tagDailyActivityCall)(s,e,l,1,h.length>0?h:null));else if("team"===t)m(await (0,j.teamDailyActivityCall)(s,e,l,1,h.length>0?h:null));else throw Error("Invalid entity type")};(0,d.useEffect)(()=>{b()},[s,g,l,h]);let _=()=>{let e={};return o.results.forEach(s=>{Object.entries(s.breakdown.providers||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={provider:t,spend:0,requests:0,successful_requests:0,failed_requests:0,tokens:0});try{e[t].spend+=l.metrics.spend,e[t].requests+=l.metrics.api_requests,e[t].successful_requests+=l.metrics.successful_requests,e[t].failed_requests+=l.metrics.failed_requests,e[t].tokens+=l.metrics.total_tokens}catch(e){console.error("Error processing provider ".concat(t,": ").concat(e))}})}),Object.values(e).filter(e=>e.spend>0).sort((e,s)=>s.spend-e.spend)},N=e=>0===h.length?e:e.filter(e=>h.includes(e.metadata.id)),Z=()=>{let e={};return o.results.forEach(s=>{Object.entries(s.breakdown.entities||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{alias:l.metadata.team_alias||t,id:t}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests,e[t].metrics.failed_requests+=l.metrics.failed_requests,e[t].metrics.total_tokens+=l.metrics.total_tokens})}),N(Object.values(e).sort((e,s)=>s.metrics.spend-e.metrics.spend))};return(0,c.jsxs)("div",{style:{width:"100%"},children:[(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 w-full mb-4",children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(a0,{value:g,onValueChange:f})}),i&&i.length>0&&(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(k.Z,{children:["Filter by ","tag"===t?"Tags":"Teams"]}),(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select ".concat("tag"===t?"tags":"teams"," to filter..."),value:h,onChange:p,options:(()=>{if(i)return i})(),className:"mt-2",allowClear:!0})]})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"solid",className:"mt-1",children:[(0,c.jsx)(ss.Z,{children:"Cost"}),(0,c.jsx)(ss.Z,{children:"Model Activity"}),(0,c.jsx)(ss.Z,{children:"Key Activity"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 w-full",children:[(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(S.Z,{children:["tag"===t?"Tag":"Team"," Spend Overview"]}),(0,c.jsxs)(y.Z,{numItems:5,className:"gap-4 mt-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Spend"}),(0,c.jsxs)(k.Z,{className:"text-2xl font-bold mt-2",children:["$",eL(o.metadata.total_spend,2)]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:o.metadata.total_api_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Successful Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-green-600",children:o.metadata.total_successful_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Failed Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-red-600",children:o.metadata.total_failed_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Tokens"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:o.metadata.total_tokens.toLocaleString()})]})]})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Daily Spend"}),(0,c.jsx)(to.Z,{data:[...o.results].sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime()),index:"date",categories:["metrics.spend"],colors:["cyan"],valueFormatter:a3,yAxisWidth:100,showLegend:!1,customTooltip:e=>{let{payload:s,active:l}=e;if(!l||!(null==s?void 0:s[0]))return null;let a=s[0].payload,r=Object.keys(a.breakdown.entities||{}).length;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:a.date}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Total Spend: $",eL(a.metrics.spend,2)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Total Requests: ",a.metrics.api_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Successful: ",a.metrics.successful_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Failed: ",a.metrics.failed_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Total Tokens: ",a.metrics.total_tokens]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["tag"===t?"Total Tags":"Total Teams",": ",r]}),(0,c.jsxs)("div",{className:"mt-2 border-t pt-2",children:[(0,c.jsxs)("p",{className:"font-semibold",children:["Spend by ","tag"===t?"Tag":"Team",":"]}),Object.entries(a.breakdown.entities||{}).sort((e,s)=>{let[,t]=e,[,l]=s,a=t.metrics.spend;return l.metrics.spend-a}).slice(0,5).map(e=>{let[s,t]=e;return(0,c.jsxs)("p",{className:"text-sm text-gray-600",children:[t.metadata.team_alias||s,": $",eL(t.metrics.spend,2)]},s)}),r>5&&(0,c.jsxs)("p",{className:"text-sm text-gray-500 italic",children:["...and ",r-5," more"]})]})]})}})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-col space-y-2",children:[(0,c.jsxs)(S.Z,{children:["Spend Per ","tag"===t?"Tag":"Team"]}),(0,c.jsx)(sX.Z,{className:"text-xs",children:"Showing Top 5 by Spend"}),(0,c.jsxs)("div",{className:"flex items-center text-sm text-gray-500",children:[(0,c.jsxs)("span",{children:["Get Started by Tracking cost per ",t," "]}),(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/enterprise#spend-tracking",className:"text-blue-500 hover:text-blue-700 ml-1",children:"here"})]})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-6",children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(to.Z,{className:"mt-4 h-52",data:Z().slice(0,5).map(e=>({...e,metadata:{...e.metadata,alias_display:e.metadata.alias&&e.metadata.alias.length>15?"".concat(e.metadata.alias.slice(0,15),"..."):e.metadata.alias}})),index:"metadata.alias_display",categories:["metrics.spend"],colors:["cyan"],valueFormatter:a3,layout:"vertical",showLegend:!1,yAxisWidth:150,customTooltip:e=>{let{payload:s,active:t}=e;if(!t||!(null==s?void 0:s[0]))return null;let l=s[0].payload;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:l.metadata.alias}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Spend: $",eL(l.metrics.spend,4)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Requests: ",l.metrics.api_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-green-600",children:["Successful: ",l.metrics.successful_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-red-600",children:["Failed: ",l.metrics.failed_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Tokens: ",l.metrics.total_tokens.toLocaleString()]})]})}})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)("div",{className:"h-52 overflow-y-auto",children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"tag"===t?"Tag":"Team"}),(0,c.jsx)(sB.Z,{children:"Spend"}),(0,c.jsx)(sB.Z,{className:"text-green-600",children:"Successful"}),(0,c.jsx)(sB.Z,{className:"text-red-600",children:"Failed"}),(0,c.jsx)(sB.Z,{children:"Tokens"})]})}),(0,c.jsx)(sU.Z,{children:Z().filter(e=>e.metrics.spend>0).map(e=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:e.metadata.alias}),(0,c.jsxs)(sq.Z,{children:["$",eL(e.metrics.spend,4)]}),(0,c.jsx)(sq.Z,{className:"text-green-600",children:e.metrics.successful_requests.toLocaleString()}),(0,c.jsx)(sq.Z,{className:"text-red-600",children:e.metrics.failed_requests.toLocaleString()}),(0,c.jsx)(sq.Z,{children:e.metrics.total_tokens.toLocaleString()})]},e.metadata.id))})]})})})]})]})})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Top API Keys"}),(0,c.jsx)(a4,{topKeys:(()=>{console.log("debugTags",{spendData:o});let e={};return o.results.forEach(s=>{let{breakdown:t}=s,{entities:l}=t;console.log("debugTags",{entities:l});let a=Object.keys(l).reduce((e,s)=>{let{api_key_breakdown:t}=l[s];return Object.keys(t).forEach(l=>{let a={tag:s,usage:t[l].metrics.spend};e[l]?e[l].push(a):e[l]=[a]}),e},{});console.log("debugTags",{tagDictionary:a}),Object.entries(s.breakdown.api_keys||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{key_alias:l.metadata.key_alias,team_id:l.metadata.team_id||null,tags:a[t]||[]}},console.log("debugTags",{keySpend:e})),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests,e[t].metrics.failed_requests+=l.metrics.failed_requests,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{api_key:s,key_alias:t.metadata.key_alias||"-",tags:t.metadata.tags||"-",spend:t.metrics.spend}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),accessToken:s,userID:a,userRole:r,teams:null,premiumUser:n,showTags:"tag"===t})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Top Models"}),(0,c.jsx)(to.Z,{className:"mt-4 h-40",data:(()=>{let e={};return o.results.forEach(s=>{Object.entries(s.breakdown.models||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={spend:0,requests:0,successful_requests:0,failed_requests:0,tokens:0});try{e[t].spend+=l.metrics.spend}catch(e){console.error("Error adding spend for ".concat(t,": ").concat(e,", got metrics: ").concat(JSON.stringify(l)))}e[t].requests+=l.metrics.api_requests,e[t].successful_requests+=l.metrics.successful_requests,e[t].failed_requests+=l.metrics.failed_requests,e[t].tokens+=l.metrics.total_tokens})}),Object.entries(e).map(e=>{let[s,t]=e;return{key:s,...t}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),index:"display_key",categories:["spend"],colors:["cyan"],valueFormatter:e=>"$".concat(eL(e,2)),layout:"vertical",yAxisWidth:200,showLegend:!1})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsx)(S.Z,{children:"Provider Usage"}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(a$.Z,{className:"mt-4 h-40",data:_(),index:"provider",category:"spend",valueFormatter:e=>"$".concat(eL(e,2)),colors:["cyan","blue","indigo","violet","purple"]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Provider"}),(0,c.jsx)(sB.Z,{children:"Spend"}),(0,c.jsx)(sB.Z,{className:"text-green-600",children:"Successful"}),(0,c.jsx)(sB.Z,{className:"text-red-600",children:"Failed"}),(0,c.jsx)(sB.Z,{children:"Tokens"})]})}),(0,c.jsx)(sU.Z,{children:_().map(e=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[e.provider&&(0,c.jsx)("img",{src:(0,s0.dr)(e.provider).logo,alt:"".concat(e.provider," logo"),className:"w-4 h-4",onError:s=>{let t=s.target,l=t.parentElement;if(l){var a;let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=(null===(a=e.provider)||void 0===a?void 0:a.charAt(0))||"-",l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e.provider})]})}),(0,c.jsxs)(sq.Z,{children:["$",eL(e.spend,2)]}),(0,c.jsx)(sq.Z,{className:"text-green-600",children:e.successful_requests.toLocaleString()}),(0,c.jsx)(sq.Z,{className:"text-red-600",children:e.failed_requests.toLocaleString()}),(0,c.jsx)(sq.Z,{children:e.tokens.toLocaleString()})]},e.provider))})]})})]})]})})})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:u})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:x})})]})]})]})},rx=e=>{let{isOpen:s,onClose:t,accessToken:l}=e,[a]=A.Z.useForm(),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)("cloudzero"),[p,g]=(0,d.useState)(!1);(0,d.useEffect)(()=>{s&&l&&j()},[s,l]);let j=async()=>{u(!0);try{let e=await fetch("/cloudzero/settings",{method:"GET",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"}});if(e.ok){let s=await e.json();o(s),a.setFieldsValue({connection_id:s.connection_id})}else if(404!==e.status){let s=await e.json();eo.Z.fromBackend("Failed to load existing settings: ".concat(s.error||"Unknown error"))}}catch(e){console.error("Error loading CloudZero settings:",e),eo.Z.fromBackend("Failed to load existing settings")}finally{u(!1)}},f=async e=>{if(!l){eo.Z.fromBackend("No access token available");return}i(!0);try{let s={...e,timezone:"UTC"},t=await fetch(n?"/cloudzero/settings":"/cloudzero/init",{method:n?"PUT":"POST",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify(s)}),a=await t.json();if(t.ok)return eo.Z.success(a.message||"CloudZero settings saved successfully"),o({api_key_masked:e.api_key.substring(0,4)+"****"+e.api_key.slice(-4),connection_id:e.connection_id,status:"configured"}),!0;return eo.Z.fromBackend(a.error||"Failed to save CloudZero settings"),!1}catch(e){return console.error("Error saving CloudZero settings:",e),eo.Z.fromBackend("Failed to save CloudZero settings"),!1}finally{i(!1)}},v=async()=>{if(!l){eo.Z.fromBackend("No access token available");return}g(!0);try{let e=await fetch("/cloudzero/export",{method:"POST",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify({limit:1e5,operation:"replace_hourly"})}),s=await e.json();e.ok?(eo.Z.success(s.message||"Export to CloudZero completed successfully"),t()):eo.Z.fromBackend(s.error||"Failed to export to CloudZero")}catch(e){console.error("Error exporting to CloudZero:",e),eo.Z.fromBackend("Failed to export to CloudZero")}finally{g(!1)}},y=async()=>{g(!0);try{eo.Z.info("CSV export functionality coming soon!"),t()}catch(e){console.error("Error exporting CSV:",e),eo.Z.fromBackend("Failed to export CSV")}finally{g(!1)}},N=async()=>{if("cloudzero"===x){if(!n){let e=await a.validateFields();if(!await f(e))return}await v()}else await y()},Z=()=>{a.resetFields(),h("cloudzero"),o(null),t()},w=[{value:"cloudzero",label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("img",{src:"/cloudzero.png",alt:"CloudZero",className:"w-5 h-5",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)("span",{children:"Export to CloudZero"})]})},{value:"csv",label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})}),(0,c.jsx)("span",{children:"Export to CSV"})]})}];return(0,c.jsx)(T.Z,{title:"Export Data",open:s,onCancel:Z,footer:null,width:600,destroyOnClose:!0,children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium mb-2 block",children:"Export Destination"}),(0,c.jsx)(I.default,{value:x,onChange:h,options:w,className:"w-full",size:"large"})]}),"cloudzero"===x&&(0,c.jsx)("div",{children:m?(0,c.jsx)("div",{className:"flex justify-center py-8",children:(0,c.jsx)(eF.Z,{size:"large"})}):(0,c.jsxs)(c.Fragment,{children:[n&&(0,c.jsx)(l$.Z,{title:"Existing CloudZero Configuration",icon:()=>(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}),color:"green",className:"mb-4",children:(0,c.jsxs)(k.Z,{children:["API Key: ",n.api_key_masked,(0,c.jsx)("br",{}),"Connection ID: ",n.connection_id]})}),!n&&(0,c.jsxs)(A.Z,{form:a,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"CloudZero API Key",name:"api_key",rules:[{required:!0,message:"Please enter your CloudZero API key"}],children:(0,c.jsx)(_.Z,{type:"password",placeholder:"Enter your CloudZero API key"})}),(0,c.jsx)(A.Z.Item,{label:"Connection ID",name:"connection_id",rules:[{required:!0,message:"Please enter the CloudZero connection ID"}],children:(0,c.jsx)(_.Z,{placeholder:"Enter CloudZero connection ID"})})]})]})}),"csv"===x&&(0,c.jsx)(l$.Z,{title:"CSV Export",icon:()=>(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})}),color:"blue",children:(0,c.jsx)(k.Z,{children:"Export your usage data as a CSV file for analysis in spreadsheet applications."})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2 pt-4",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:Z,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:N,loading:r||p,disabled:r||p,children:"cloudzero"===x?"Export to CloudZero":"Export CSV"})]})]})})},rh=e=>{var s,t,l,a,r,i,n,o,m,u;let{accessToken:x,userRole:h,userID:p,teams:g,premiumUser:f}=e,[b,_]=(0,d.useState)({results:[],metadata:{}}),[N,Z]=(0,d.useState)(!1),[w,C]=(0,d.useState)(!1),I=(0,d.useMemo)(()=>new Date(Date.now()-6048e5),[]),A=(0,d.useMemo)(()=>new Date,[]),[T,E]=(0,d.useState)({from:I,to:A}),[P,L]=(0,d.useState)([]),[M,O]=(0,d.useState)("groups"),[D,F]=(0,d.useState)(!1),R=async()=>{x&&L(Object.values(await (0,j.tagListCall)(x)).map(e=>({label:e.name,value:e.name})))};(0,d.useEffect)(()=>{R()},[x]);let z=(null===(s=b.metadata)||void 0===s?void 0:s.total_spend)||0,U=()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.providers||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{},api_key_breakdown:{}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests||0,e[t].metrics.failed_requests+=l.metrics.failed_requests||0,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{provider:s,spend:t.metrics.spend,requests:t.metrics.api_requests,successful_requests:t.metrics.successful_requests,failed_requests:t.metrics.failed_requests,tokens:t.metrics.total_tokens}})},q=(0,d.useCallback)(async()=>{if(!x||!T.from||!T.to)return;Z(!0);let e=new Date(T.from),s=new Date(T.to);try{try{let t=await (0,j.userDailyActivityAggregatedCall)(x,e,s);_(t);return}catch(e){}let t=await (0,j.userDailyActivityCall)(x,e,s);if(t.metadata.total_pages<=1){_(t);return}let l=[...t.results],a={...t.metadata};for(let r=2;r<=t.metadata.total_pages;r++){let t=await (0,j.userDailyActivityCall)(x,e,s,r);l.push(...t.results),t.metadata&&(a.total_spend+=t.metadata.total_spend||0,a.total_api_requests+=t.metadata.total_api_requests||0,a.total_successful_requests+=t.metadata.total_successful_requests||0,a.total_failed_requests+=t.metadata.total_failed_requests||0,a.total_tokens+=t.metadata.total_tokens||0)}_({results:l,metadata:a})}catch(e){console.error("Error fetching user spend data:",e)}finally{Z(!1),C(!1)}},[x,T.from,T.to]),V=(0,d.useCallback)(e=>{C(!0),Z(!0),E(e)},[]);(0,d.useEffect)(()=>{if(!T.from||!T.to)return;let e=setTimeout(()=>{q()},50);return()=>clearTimeout(e)},[q]);let B=rt(b,"models"),K=rt(b,"api_keys"),H=rt(b,"mcp_servers");return(0,c.jsxs)("div",{style:{width:"100%"},className:"p-8 relative",children:[(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"solid",className:"mt-1",children:[eI.ZL.includes(h||"")?(0,c.jsx)(ss.Z,{children:"Global Usage"}):(0,c.jsx)(ss.Z,{children:"Your Usage"}),(0,c.jsx)(ss.Z,{children:"Team Usage"}),eI.ZL.includes(h||"")?(0,c.jsx)(ss.Z,{children:"Tag Usage"}):(0,c.jsx)(c.Fragment,{}),eI.ZL.includes(h||"")?(0,c.jsx)(ss.Z,{children:"User Agent Activity"}):(0,c.jsx)(c.Fragment,{})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)(y.Z,{numItems:2,className:"gap-10 w-1/2 mb-4",children:(0,c.jsx)(v.Z,{children:(0,c.jsx)(a0,{value:T,onValueChange:V})})}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"solid",className:"mt-1",children:[(0,c.jsx)(ss.Z,{children:"Cost"}),(0,c.jsx)(ss.Z,{children:"Model Activity"}),(0,c.jsx)(ss.Z,{children:"Key Activity"}),(0,c.jsx)(ss.Z,{children:"MCP Server Activity"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 w-full",children:[(0,c.jsxs)(v.Z,{numColSpan:2,children:[(0,c.jsxs)(k.Z,{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content mb-2 mt-2 text-lg",children:["Project Spend"," ",new Date().toLocaleString("default",{month:"long"})," ","1 - ",new Date(new Date().getFullYear(),new Date().getMonth()+1,0).getDate()]}),(0,c.jsx)(a1,{userID:p,userRole:h,accessToken:x,userSpend:z,selectedTeam:null,userMaxBudget:null})]}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Usage Metrics"}),(0,c.jsxs)(y.Z,{numItems:5,className:"gap-4 mt-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:(null===(l=b.metadata)||void 0===l?void 0:null===(t=l.total_api_requests)||void 0===t?void 0:t.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Successful Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-green-600",children:(null===(r=b.metadata)||void 0===r?void 0:null===(a=r.total_successful_requests)||void 0===a?void 0:a.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Failed Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-red-600",children:(null===(n=b.metadata)||void 0===n?void 0:null===(i=n.total_failed_requests)||void 0===i?void 0:i.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Tokens"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:(null===(m=b.metadata)||void 0===m?void 0:null===(o=m.total_tokens)||void 0===o?void 0:o.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Average Cost per Request"}),(0,c.jsxs)(k.Z,{className:"text-2xl font-bold mt-2",children:["$",eL((z||0)/((null===(u=b.metadata)||void 0===u?void 0:u.total_api_requests)||1),4)]})]})]})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Daily Spend"}),N?(0,c.jsx)(rd,{isDateChanging:w}):(0,c.jsx)(to.Z,{data:[...b.results].sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime()),index:"date",categories:["metrics.spend"],colors:["cyan"],valueFormatter:a3,yAxisWidth:100,showLegend:!1,customTooltip:e=>{let{payload:s,active:t}=e;if(!t||!(null==s?void 0:s[0]))return null;let l=s[0].payload;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:l.date}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Spend: $",eL(l.metrics.spend,2)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Requests: ",l.metrics.api_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Successful: ",l.metrics.successful_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Failed: ",l.metrics.failed_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Tokens: ",l.metrics.total_tokens]})]})}})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)(S.Z,{children:"Top API Keys"}),(0,c.jsx)(a4,{topKeys:(()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.api_keys||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{key_alias:l.metadata.key_alias,team_id:null,tags:l.metadata.tags||[]}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests,e[t].metrics.failed_requests+=l.metrics.failed_requests,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),console.log("debugTags",{keySpend:e,userSpendData:b}),Object.entries(e).map(e=>{let[s,t]=e;return{api_key:s,key_alias:t.metadata.key_alias||"-",tags:t.metadata.tags||[],spend:t.metrics.spend}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),accessToken:x,userID:p,userRole:h,teams:null,premiumUser:f})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"groups"===M?"Top Public Model Names":"Top Litellm Models"}),(0,c.jsxs)("div",{className:"flex bg-gray-100 rounded-lg p-1",children:[(0,c.jsx)("button",{className:"px-3 py-1 text-sm rounded-md transition-colors ".concat("groups"===M?"bg-white shadow-sm text-gray-900":"text-gray-600 hover:text-gray-900"),onClick:()=>O("groups"),children:"Public Model Name"}),(0,c.jsx)("button",{className:"px-3 py-1 text-sm rounded-md transition-colors ".concat("individual"===M?"bg-white shadow-sm text-gray-900":"text-gray-600 hover:text-gray-900"),onClick:()=>O("individual"),children:"Litellm Model Name"})]})]}),N?(0,c.jsx)(rd,{isDateChanging:w}):(0,c.jsx)(to.Z,{className:"mt-4 h-40",data:"groups"===M?(()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.model_groups||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{},api_key_breakdown:{}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests||0,e[t].metrics.failed_requests+=l.metrics.failed_requests||0,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{key:s,spend:t.metrics.spend,requests:t.metrics.api_requests,successful_requests:t.metrics.successful_requests,failed_requests:t.metrics.failed_requests,tokens:t.metrics.total_tokens}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})():(()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.models||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{},api_key_breakdown:{}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests||0,e[t].metrics.failed_requests+=l.metrics.failed_requests||0,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{key:s,spend:t.metrics.spend,requests:t.metrics.api_requests,successful_requests:t.metrics.successful_requests,failed_requests:t.metrics.failed_requests,tokens:t.metrics.total_tokens}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),index:"key",categories:["spend"],colors:["cyan"],valueFormatter:a3,layout:"vertical",yAxisWidth:200,showLegend:!1,customTooltip:e=>{let{payload:s,active:t}=e;if(!t||!(null==s?void 0:s[0]))return null;let l=s[0].payload;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:l.key}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Spend: $",eL(l.spend,2)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Total Requests: ",l.requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-green-600",children:["Successful: ",l.successful_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-red-600",children:["Failed: ",l.failed_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Tokens: ",l.tokens.toLocaleString()]})]})}})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(S.Z,{children:"Spend by Provider"})}),N?(0,c.jsx)(rd,{isDateChanging:w}):(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(a$.Z,{className:"mt-4 h-40",data:U(),index:"provider",category:"spend",valueFormatter:e=>"$".concat(eL(e,2)),colors:["cyan"]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Provider"}),(0,c.jsx)(sB.Z,{children:"Spend"}),(0,c.jsx)(sB.Z,{className:"text-green-600",children:"Successful"}),(0,c.jsx)(sB.Z,{className:"text-red-600",children:"Failed"}),(0,c.jsx)(sB.Z,{children:"Tokens"})]})}),(0,c.jsx)(sU.Z,{children:U().filter(e=>e.spend>0).map(e=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[e.provider&&(0,c.jsx)("img",{src:(0,s0.dr)(e.provider).logo,alt:"".concat(e.provider," logo"),className:"w-4 h-4",onError:s=>{let t=s.target,l=t.parentElement;if(l){var a;let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=(null===(a=e.provider)||void 0===a?void 0:a.charAt(0))||"-",l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e.provider})]})}),(0,c.jsxs)(sq.Z,{children:["$",eL(e.spend,2)]}),(0,c.jsx)(sq.Z,{className:"text-green-600",children:e.successful_requests.toLocaleString()}),(0,c.jsx)(sq.Z,{className:"text-red-600",children:e.failed_requests.toLocaleString()}),(0,c.jsx)(sq.Z,{children:e.tokens.toLocaleString()})]},e.provider))})]})})]})]})})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:B})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:K})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:H})})]})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(ru,{accessToken:x,entityType:"team",userID:p,userRole:h,entityList:(null==g?void 0:g.map(e=>({label:e.team_alias,value:e.team_id})))||null,premiumUser:f})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(ru,{accessToken:x,entityType:"tag",userID:p,userRole:h,entityList:P,premiumUser:f})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(rm,{accessToken:x,userRole:h})})]})]}),(0,c.jsx)(rx,{isOpen:D,onClose:()=>F(!1),accessToken:x})]})},rp=e=>{let{proxySettings:s}=e,t="";return s&&s.PROXY_BASE_URL&&void 0!==s.PROXY_BASE_URL&&(t=s.PROXY_BASE_URL),(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(y.Z,{className:"gap-2 p-8 h-[80vh] w-full mt-2",children:(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsx)("p",{className:"text-2xl text-tremor-content-strong dark:text-dark-tremor-content-strong font-semibold",children:"OpenAI Compatible Proxy: API Reference"}),(0,c.jsxs)(k.Z,{className:"mt-2 mb-2",children:["LiteLLM is OpenAI Compatible. This means your API Key works with the OpenAI SDK. Just replace the base_url to point to your litellm proxy. Example Below"," "]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{children:[(0,c.jsx)(ss.Z,{children:"OpenAI Python SDK"}),(0,c.jsx)(ss.Z,{children:"LlamaIndex"}),(0,c.jsx)(ss.Z,{children:"Langchain Py"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"python",children:'\nimport openai\nclient = openai.OpenAI(\n api_key="your_api_key",\n base_url="'.concat(t,'" # LiteLLM Proxy is OpenAI compatible, Read More: https://docs.litellm.ai/docs/proxy/user_keys\n)\n\nresponse = client.chat.completions.create(\n model="gpt-3.5-turbo", # model to send to the proxy\n messages = [\n {\n "role": "user",\n "content": "this is a test request, write a short poem"\n }\n ]\n)\n\nprint(response)\n ')})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"python",children:'\nimport os, dotenv\n\nfrom llama_index.llms import AzureOpenAI\nfrom llama_index.embeddings import AzureOpenAIEmbedding\nfrom llama_index import VectorStoreIndex, SimpleDirectoryReader, ServiceContext\n\nllm = AzureOpenAI(\n engine="azure-gpt-3.5", # model_name on litellm proxy\n temperature=0.0,\n azure_endpoint="'.concat(t,'", # litellm proxy endpoint\n api_key="sk-1234", # litellm proxy API Key\n api_version="2023-07-01-preview",\n)\n\nembed_model = AzureOpenAIEmbedding(\n deployment_name="azure-embedding-model",\n azure_endpoint="').concat(t,'",\n api_key="sk-1234",\n api_version="2023-07-01-preview",\n)\n\n\ndocuments = SimpleDirectoryReader("llama_index_data").load_data()\nservice_context = ServiceContext.from_defaults(llm=llm, embed_model=embed_model)\nindex = VectorStoreIndex.from_documents(documents, service_context=service_context)\n\nquery_engine = index.as_query_engine()\nresponse = query_engine.query("What did the author do growing up?")\nprint(response)\n\n ')})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"python",children:'\nfrom langchain.chat_models import ChatOpenAI\nfrom langchain.prompts.chat import (\n ChatPromptTemplate,\n HumanMessagePromptTemplate,\n SystemMessagePromptTemplate,\n)\nfrom langchain.schema import HumanMessage, SystemMessage\n\nchat = ChatOpenAI(\n openai_api_base="'.concat(t,'",\n model = "gpt-3.5-turbo",\n temperature=0.1\n)\n\nmessages = [\n SystemMessage(\n content="You are a helpful assistant that im using to make a test request to."\n ),\n HumanMessage(\n content="test from litellm. tell me why it\'s amazing in 1 sentence"\n ),\n]\nresponse = chat(messages)\n\nprint(response)\n\n ')})})]})]})]})})})},rg=t(243),rj=t(93837);async function rf(e,s,t,l,a,r,i,n,o,c,d,m,u,x){console.log=function(){},console.log("isLocal:",!1);let h=(0,j.getProxyBaseUrl)(),p={};a&&a.length>0&&(p["x-litellm-tags"]=a.join(","));let g=new am.ZP.OpenAI({apiKey:l,baseURL:h,dangerouslyAllowBrowser:!0,defaultHeaders:p});try{let a;let p=Date.now(),j=!1,k=u&&u.length>0?[{type:"mcp",server_label:"litellm",server_url:"".concat(h,"/mcp"),require_approval:"never",allowed_tools:u,headers:{"x-litellm-api-key":"Bearer ".concat(l)}}]:void 0;for await(let l of(await g.chat.completions.create({model:t,stream:!0,stream_options:{include_usage:!0},litellm_trace_id:c,messages:e,...d?{vector_store_ids:d}:{},...m?{guardrails:m}:{},...k?{tools:k,tool_choice:"auto"}:{}},{signal:r}))){var f,v,y,b,_,N,Z,w;console.log("Stream chunk:",l);let e=null===(f=l.choices[0])||void 0===f?void 0:f.delta;if(console.log("Delta content:",null===(y=l.choices[0])||void 0===y?void 0:null===(v=y.delta)||void 0===v?void 0:v.content),console.log("Delta reasoning content:",null==e?void 0:e.reasoning_content),!j&&((null===(_=l.choices[0])||void 0===_?void 0:null===(b=_.delta)||void 0===b?void 0:b.content)||e&&e.reasoning_content)&&(j=!0,a=Date.now()-p,console.log("First token received! Time:",a,"ms"),n?(console.log("Calling onTimingData with:",a),n(a)):console.log("onTimingData callback is not defined!")),null===(Z=l.choices[0])||void 0===Z?void 0:null===(N=Z.delta)||void 0===N?void 0:N.content){let e=l.choices[0].delta.content;s(e,l.model)}if(e&&e.image&&x&&(console.log("Image generated:",e.image),x(e.image.url,l.model)),e&&e.reasoning_content){let s=e.reasoning_content;i&&i(s)}if(l.usage&&o){console.log("Usage data found:",l.usage);let e={completionTokens:l.usage.completion_tokens,promptTokens:l.usage.prompt_tokens,totalTokens:l.usage.total_tokens};(null===(w=l.usage.completion_tokens_details)||void 0===w?void 0:w.reasoning_tokens)&&(e.reasoningTokens=l.usage.completion_tokens_details.reasoning_tokens),o(e)}}}catch(e){throw(null==r?void 0:r.aborted)&&console.log("Chat completion request was cancelled"),e}}async function rv(e,s,t,l,a,r){console.log=function(){},console.log("isLocal:",!1);let i=(0,j.getProxyBaseUrl)(),n=new am.ZP.OpenAI({apiKey:l,baseURL:i,dangerouslyAllowBrowser:!0,defaultHeaders:a&&a.length>0?{"x-litellm-tags":a.join(",")}:void 0});try{let l=await n.images.generate({model:t,prompt:e},{signal:r});if(console.log(l.data),l.data&&l.data[0]){if(l.data[0].url)s(l.data[0].url,t);else if(l.data[0].b64_json){let e=l.data[0].b64_json;s("data:image/png;base64,".concat(e),t)}else throw Error("No image data found in response")}else throw Error("Invalid response format")}catch(e){throw(null==r?void 0:r.aborted)?console.log("Image generation request was cancelled"):eo.Z.fromBackend("Error occurred while generating image. Please try again. Error: ".concat(e)),e}}async function ry(e,s,t,l,a,r,i){console.log=function(){},console.log("isLocal:",!1);let n=(0,j.getProxyBaseUrl)(),o=new am.ZP.OpenAI({apiKey:a,baseURL:n,dangerouslyAllowBrowser:!0,defaultHeaders:r&&r.length>0?{"x-litellm-tags":r.join(",")}:void 0});try{let a=Array.isArray(e)?e:[e],r=[];for(let e=0;e1&&eo.Z.success("Successfully processed ".concat(r.length," images"))}catch(e){if(console.error("Error making image edit request:",e),null==i?void 0:i.aborted)console.log("Image edits request was cancelled");else{var c;let s="Failed to edit image(s)";(null==e?void 0:null===(c=e.error)||void 0===c?void 0:c.message)?s=e.error.message:(null==e?void 0:e.message)&&(s=e.message),eo.Z.fromBackend("Image edit failed: ".concat(s))}throw e}}async function rb(e,s,t,l){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5?arguments[5]:void 0,i=arguments.length>6?arguments[6]:void 0,n=arguments.length>7?arguments[7]:void 0,o=arguments.length>8?arguments[8]:void 0,c=arguments.length>9?arguments[9]:void 0,d=arguments.length>10?arguments[10]:void 0,m=arguments.length>11?arguments[11]:void 0,u=arguments.length>12?arguments[12]:void 0,x=arguments.length>13?arguments[13]:void 0,h=arguments.length>14?arguments[14]:void 0,p=arguments.length>15?arguments[15]:void 0;if(!l)throw Error("API key is required");console.log=function(){};let g=(0,j.getProxyBaseUrl)(),f={};a&&a.length>0&&(f["x-litellm-tags"]=a.join(","));let v=new am.ZP.OpenAI({apiKey:l,baseURL:g,dangerouslyAllowBrowser:!0,defaultHeaders:f});try{let l=Date.now(),a=!1,g=e.map(e=>(Array.isArray(e.content),{role:e.role,content:e.content,type:"message"})),j=u&&u.length>0?[{type:"mcp",server_label:"litellm",server_url:"litellm_proxy/mcp",require_approval:"never",allowed_tools:u}]:void 0,f=await v.responses.create({model:t,input:g,stream:!0,litellm_trace_id:c,...x?{previous_response_id:x}:{},...d?{vector_store_ids:d}:{},...m?{guardrails:m}:{},...j?{tools:j,tool_choice:"required"}:{}},{signal:r}),S="";for await(let e of f)if(console.log("Response event:",e),"object"==typeof e&&null!==e){var y,b,_,N,Z,w,k;if(((null===(y=e.type)||void 0===y?void 0:y.startsWith("response.mcp_"))||"response.output_item.done"===e.type&&((null===(b=e.item)||void 0===b?void 0:b.type)==="mcp_list_tools"||(null===(_=e.item)||void 0===_?void 0:_.type)==="mcp_call"))&&(console.log("MCP event received:",e),p)){let s={type:e.type,sequence_number:e.sequence_number,output_index:e.output_index,item_id:e.item_id||(null===(w=e.item)||void 0===w?void 0:w.id),item:e.item,delta:e.delta,arguments:e.arguments,timestamp:Date.now()};p(s)}if("response.output_item.done"===e.type&&(null===(N=e.item)||void 0===N?void 0:N.type)==="mcp_call"&&(null===(Z=e.item)||void 0===Z?void 0:Z.name)&&(S=e.item.name,console.log("MCP tool used:",S)),"response.role.delta"===e.type)continue;if("response.output_text.delta"===e.type&&"string"==typeof e.delta){let r=e.delta;if(console.log("Text delta",r),r.trim().length>0&&(s("assistant",r,t),!a)){a=!0;let e=Date.now()-l;console.log("First token received! Time:",e,"ms"),n&&n(e)}}if("response.reasoning.delta"===e.type&&"delta"in e){let s=e.delta;"string"==typeof s&&i&&i(s)}if("response.completed"===e.type&&"response"in e){let s=e.response,t=s.usage;if(console.log("Usage data:",t),console.log("Response completed event:",s),s.id&&h&&(console.log("Response ID for session management:",s.id),h(s.id)),t&&o){console.log("Usage data:",t);let e={completionTokens:t.output_tokens,promptTokens:t.input_tokens,totalTokens:t.total_tokens};(null===(k=t.completion_tokens_details)||void 0===k?void 0:k.reasoning_tokens)&&(e.reasoningTokens=t.completion_tokens_details.reasoning_tokens),o(e,S)}}}return f}catch(e){throw(null==r?void 0:r.aborted)?console.log("Responses API request was cancelled"):eo.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e)),e}}var r_=t(85498);async function rN(e,s,t,l){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5?arguments[5]:void 0,i=arguments.length>6?arguments[6]:void 0,n=arguments.length>7?arguments[7]:void 0,o=arguments.length>8?arguments[8]:void 0,c=arguments.length>9?arguments[9]:void 0,d=arguments.length>10?arguments[10]:void 0,m=arguments.length>11?arguments[11]:void 0,u=arguments.length>12?arguments[12]:void 0;if(!l)throw Error("API key is required");console.log=function(){};let x=(0,j.getProxyBaseUrl)(),h={};a&&a.length>0&&(h["x-litellm-tags"]=a.join(","));let p=new r_.ZP({apiKey:l,baseURL:x,dangerouslyAllowBrowser:!0,defaultHeaders:h});try{let a=Date.now(),h=!1,g=u&&u.length>0?[{type:"mcp",server_label:"litellm",server_url:"".concat(x,"/mcp"),require_approval:"never",allowed_tools:u,headers:{"x-litellm-api-key":"Bearer ".concat(l)}}]:void 0,j={model:t,messages:e.map(e=>({role:e.role,content:e.content})),stream:!0,max_tokens:1024,litellm_trace_id:c};for await(let e of(d&&(j.vector_store_ids=d),m&&(j.guardrails=m),g&&(j.tools=g,j.tool_choice="auto"),p.messages.stream(j,{signal:r}))){if(console.log("Stream event:",e),"content_block_delta"===e.type){let l=e.delta;if(!h){h=!0;let e=Date.now()-a;console.log("First token received! Time:",e,"ms"),n&&n(e)}"text_delta"===l.type?s("assistant",l.text,t):"reasoning_delta"===l.type&&i&&i(l.text)}if("message_delta"===e.type&&e.usage&&o){let s=e.usage;console.log("Usage data found:",s);let t={completionTokens:s.output_tokens,promptTokens:s.input_tokens,totalTokens:s.input_tokens+s.output_tokens};o(t)}}}catch(e){throw(null==r?void 0:r.aborted)?console.log("Anthropic messages request was cancelled"):eo.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e)),e}}async function rZ(e){try{return(await (0,j.mcpToolsCall)(e)).tools||[]}catch(e){return console.error("Error fetching MCP tools:",e),[]}}var rw=t(49817),rk=t(94263),rS=e=>{let{endpointType:s,onEndpointChange:t,className:l}=e,a=[{value:rw.KP.CHAT,label:"/v1/chat/completions"},{value:rw.KP.RESPONSES,label:"/v1/responses"},{value:rw.KP.ANTHROPIC_MESSAGES,label:"/v1/messages"},{value:rw.KP.IMAGE,label:"/v1/images/generations"},{value:rw.KP.IMAGE_EDITS,label:"/v1/images/edits"}];return(0,c.jsxs)("div",{className:l,children:[(0,c.jsx)(k.Z,{children:"Endpoint Type:"}),(0,c.jsx)(I.default,{showSearch:!0,value:s,style:{width:"100%"},onChange:t,options:a,className:"rounded-md"})]})},rC=e=>{let{onChange:s,value:t,className:l,accessToken:a}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{(async()=>{if(a)try{let e=await (0,j.tagListCall)(a);console.log("List tags response:",e),i(Object.values(e))}catch(e){console.error("Error fetching tags:",e)}})()},[]),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select tags",onChange:s,value:t,loading:n,className:l,options:r.map(e=>({label:e.name,value:e.name,title:e.description||e.name})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"}})},rI=t(88658),rA=t(83322),rT=e=>{let{reasoningContent:s}=e,[t,l]=(0,d.useState)(!0);return s?(0,c.jsxs)("div",{className:"reasoning-content mt-1 mb-2",children:[(0,c.jsxs)(P.ZP,{type:"text",className:"flex items-center text-xs text-gray-500 hover:text-gray-700",onClick:()=>l(!t),icon:(0,c.jsx)(rA.Z,{}),children:[t?"Hide reasoning":"Show reasoning",t?(0,c.jsx)(tL.Z,{className:"ml-1"}):(0,c.jsx)(lh.Z,{className:"ml-1"})]}),t&&(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-700",children:(0,c.jsx)(rg.U,{components:{code(e){let{node:s,inline:t,className:l,children:a,...r}=e,i=/language-(\w+)/.exec(l||"");return!t&&i?(0,c.jsx)(af.Z,{style:rk.Z,language:i[1],PreTag:"div",className:"rounded-md my-2",...r,children:String(a).replace(/\n$/,"")}):(0,c.jsx)("code",{className:"".concat(l," px-1.5 py-0.5 rounded bg-gray-100 text-sm font-mono"),...r,children:a})}},children:s})})]}):null},rE=t(71282),rP=t(11741),rL=t(16601),rM=t(58630),rO=e=>{let{timeToFirstToken:s,usage:t,toolName:l}=e;return s||t?(0,c.jsxs)("div",{className:"response-metrics mt-2 pt-2 border-t border-gray-100 text-xs text-gray-500 flex flex-wrap gap-3",children:[void 0!==s&&(0,c.jsx)(B.Z,{title:"Time to first token",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(lt.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:[(s/1e3).toFixed(2),"s"]})]})}),(null==t?void 0:t.promptTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Prompt tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rE.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["In: ",t.promptTokens]})]})}),(null==t?void 0:t.completionTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Completion tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rP.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Out: ",t.completionTokens]})]})}),(null==t?void 0:t.reasoningTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Reasoning tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rA.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Reasoning: ",t.reasoningTokens]})]})}),(null==t?void 0:t.totalTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Total tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rL.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Total: ",t.totalTokens]})]})}),l&&(0,c.jsx)(B.Z,{title:"Tool used",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rM.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Tool: ",l]})]})})]}):null},rD=t(53508);let{Dragger:rF}=ed.default;var rR=e=>{let{responsesUploadedImage:s,responsesImagePreviewUrl:t,onImageUpload:l,onRemoveImage:a}=e;return(0,c.jsx)(c.Fragment,{children:!s&&(0,c.jsx)(rF,{beforeUpload:l,accept:"image/*,.pdf",showUploadList:!1,className:"inline-block",style:{padding:0,border:"none",background:"none"},children:(0,c.jsx)(B.Z,{title:"Attach image or PDF",children:(0,c.jsx)("button",{type:"button",className:"flex items-center justify-center w-8 h-8 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-md transition-colors",children:(0,c.jsx)(rD.Z,{style:{fontSize:"16px"}})})})})})};let rz=e=>new Promise((s,t)=>{let l=new FileReader;l.onload=()=>{s(l.result.split(",")[1])},l.onerror=t,l.readAsDataURL(e)}),rU=async(e,s)=>{let t=await rz(s),l=s.type||(s.name.toLowerCase().endsWith(".pdf")?"application/pdf":"image/jpeg");return{role:"user",content:[{type:"input_text",text:e},{type:"input_image",image_url:"data:".concat(l,";base64,").concat(t)}]}},rq=(e,s,t,l)=>{let a="";s&&l&&(a=l.toLowerCase().endsWith(".pdf")?"[PDF attached]":"[Image attached]");let r={role:"user",content:s?"".concat(e," ").concat(a):e};return s&&t&&(r.imagePreviewUrl=t),r},rV=e=>"user"===e.role&&"string"==typeof e.content&&(e.content.includes("[Image attached]")||e.content.includes("[PDF attached]"))&&!!e.imagePreviewUrl;var rB=t(50010),rK=e=>{let{message:s}=e;if(!rV(s))return null;let t="string"==typeof s.content&&s.content.includes("[PDF attached]");return(0,c.jsx)("div",{className:"mb-2",children:t?(0,c.jsx)("div",{className:"w-64 h-32 rounded-md border border-gray-200 bg-red-50 flex items-center justify-center",children:(0,c.jsx)(rB.Z,{style:{fontSize:"48px",color:"#dc2626"}})}):(0,c.jsx)("img",{src:s.imagePreviewUrl,alt:"User uploaded image",className:"max-w-64 rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"200px"}})})};let{Dragger:rG}=ed.default;var rH=e=>{let{chatUploadedImage:s,chatImagePreviewUrl:t,onImageUpload:l,onRemoveImage:a}=e;return(0,c.jsx)(c.Fragment,{children:!s&&(0,c.jsx)(rG,{beforeUpload:l,accept:"image/*,.pdf",showUploadList:!1,className:"inline-block",style:{padding:0,border:"none",background:"none"},children:(0,c.jsx)(B.Z,{title:"Attach image or PDF",children:(0,c.jsx)("button",{type:"button",className:"flex items-center justify-center w-8 h-8 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-md transition-colors",children:(0,c.jsx)(rD.Z,{style:{fontSize:"16px"}})})})})})};let rY=e=>new Promise((s,t)=>{let l=new FileReader;l.onload=()=>{s(l.result)},l.onerror=t,l.readAsDataURL(e)}),rJ=async(e,s)=>({role:"user",content:[{type:"text",text:e},{type:"image_url",image_url:{url:await rY(s)}}]}),rW=(e,s,t,l)=>{let a="";s&&l&&(a=l.toLowerCase().endsWith(".pdf")?"[PDF attached]":"[Image attached]");let r={role:"user",content:s?"".concat(e," ").concat(a):e};return s&&t&&(r.imagePreviewUrl=t),r},r$=e=>"user"===e.role&&"string"==typeof e.content&&(e.content.includes("[Image attached]")||e.content.includes("[PDF attached]"))&&!!e.imagePreviewUrl;var rQ=e=>{let{message:s}=e;if(!r$(s))return null;let t="string"==typeof s.content&&s.content.includes("[PDF attached]");return(0,c.jsx)("div",{className:"mb-2",children:t?(0,c.jsx)("div",{className:"w-64 h-32 rounded-md border border-gray-200 bg-red-50 flex items-center justify-center",children:(0,c.jsx)(rB.Z,{style:{fontSize:"48px",color:"#dc2626"}})}):(0,c.jsx)("img",{src:s.imagePreviewUrl,alt:"User uploaded image",className:"max-w-64 rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"200px"}})})},rX=e=>{let{endpointType:s,responsesSessionId:t,useApiSessionManagement:l,onToggleSessionManagement:a}=e;return s!==rw.KP.RESPONSES?null:(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Session Management"}),(0,c.jsx)(B.Z,{title:"Choose between LiteLLM API session management (using previous_response_id) or UI-based session management (using chat history)",children:(0,c.jsx)(V.Z,{className:"text-gray-400",style:{fontSize:"12px"}})})]}),(0,c.jsx)(eJ.Z,{checked:l,onChange:a,checkedChildren:"API",unCheckedChildren:"UI",size:"small"})]}),(0,c.jsxs)("div",{className:"text-xs p-2 rounded-md ".concat(t?"bg-green-50 text-green-700 border border-green-200":"bg-blue-50 text-blue-700 border border-blue-200"),children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-1",children:[(0,c.jsx)(V.Z,{style:{fontSize:"12px"}}),(()=>{if(!t)return l?"API Session: Ready":"UI Session: Ready";let e=l?"Response ID":"UI Session",s=t.slice(0,10);return"".concat(e,": ").concat(s,"...")})()]}),t&&(0,c.jsx)(B.Z,{title:(0,c.jsxs)("div",{className:"text-xs",children:[(0,c.jsx)("div",{className:"mb-1",children:"Copy response ID to continue session:"}),(0,c.jsx)("div",{className:"bg-gray-800 text-gray-100 p-2 rounded font-mono text-xs whitespace-pre-wrap",children:'curl -X POST "your-proxy-url/v1/responses" \\\n -H "Authorization: Bearer your-api-key" \\\n -H "Content-Type: application/json" \\\n -d \'{\n "model": "your-model",\n "input": [{"role": "user", "content": "your message", "type": "message"}],\n "previous_response_id": "'.concat(t,'",\n "stream": true\n }\'')})]}),overlayStyle:{maxWidth:"500px"},children:(0,c.jsx)("button",{onClick:()=>{t&&(navigator.clipboard.writeText(t),eo.Z.success("Response ID copied to clipboard!"))},className:"ml-2 p-1 hover:bg-green-100 rounded transition-colors",children:(0,c.jsx)(tJ.Z,{style:{fontSize:"12px"}})})})]}),(0,c.jsx)("div",{className:"text-xs opacity-75 mt-1",children:t?l?"LiteLLM API session active - context maintained server-side":"UI session active - context maintained client-side":l?"LiteLLM will manage session using previous_response_id":"UI will manage session using chat history"})]})]})};let{Text:r0}=en.default,{Panel:r1}=tE.default;var r2=e=>{var s,t;let{events:l,className:a}=e;if(console.log("MCPEventsDisplay: Received events:",l),!l||0===l.length)return console.log("MCPEventsDisplay: No events, returning null"),null;let r=l.find(e=>{var s;return"response.output_item.done"===e.type&&(null===(s=e.item)||void 0===s?void 0:s.type)==="mcp_list_tools"&&e.item.tools&&e.item.tools.length>0}),i=l.filter(e=>{var s;return"response.output_item.done"===e.type&&(null===(s=e.item)||void 0===s?void 0:s.type)==="mcp_call"});return(console.log("MCPEventsDisplay: toolsEvent:",r),console.log("MCPEventsDisplay: mcpCallEvents:",i),r||0!==i.length)?(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac "+"mcp-events-display ".concat(a||""),children:[(0,c.jsx)(tY(),{id:"32b14b04f420f3ac",children:'.openai-mcp-tools.jsx-32b14b04f420f3ac{position:relative;margin:0;padding:0}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse.jsx-32b14b04f420f3ac{background:transparent!important;border:none!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-item.jsx-32b14b04f420f3ac{border:none!important;background:transparent!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-header.jsx-32b14b04f420f3ac{padding:0 0 0 20px!important;background:transparent!important;border:none!important;font-size:14px!important;color:#9ca3af!important;font-weight:400!important;line-height:20px!important;min-height:20px!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-header.jsx-32b14b04f420f3ac:hover{background:transparent!important;color:#6b7280!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-content.jsx-32b14b04f420f3ac{border:none!important;background:transparent!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-content-box.jsx-32b14b04f420f3ac{padding:4px 0 0 20px!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-expand-icon.jsx-32b14b04f420f3ac{position:absolute!important;left:2px!important;top:2px!important;color:#9ca3af!important;font-size:10px!important;width:16px!important;height:16px!important;display:-webkit-box!important;display:-webkit-flex!important;display:-moz-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center!important;-webkit-align-items:center!important;-moz-box-align:center!important;-ms-flex-align:center!important;align-items:center!important;-webkit-box-pack:center!important;-webkit-justify-content:center!important;-moz-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-expand-icon.jsx-32b14b04f420f3ac:hover{color:#6b7280!important}.openai-vertical-line.jsx-32b14b04f420f3ac{position:absolute;left:9px;top:18px;bottom:0;width:.5px;background-color:#f3f4f6;opacity:.8}.tool-item.jsx-32b14b04f420f3ac{font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:13px;color:#4b5563;line-height:18px;padding:0;margin:0;background:white;position:relative;z-index:1}.mcp-section.jsx-32b14b04f420f3ac{margin-bottom:12px;background:white;position:relative;z-index:1}.mcp-section.jsx-32b14b04f420f3ac:last-child{margin-bottom:0}.mcp-section-header.jsx-32b14b04f420f3ac{font-size:13px;color:#6b7280;font-weight:500;margin-bottom:4px}.mcp-code-block.jsx-32b14b04f420f3ac{background:#f9fafb;border:1px solid#f3f4f6;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;padding:8px;font-size:12px}.mcp-json.jsx-32b14b04f420f3ac{font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:#374151;margin:0;white-space:pre-wrap;word-wrap:break-word}.mcp-approved.jsx-32b14b04f420f3ac{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;font-size:13px;color:#6b7280}.mcp-checkmark.jsx-32b14b04f420f3ac{color:#10b981;margin-right:6px;font-weight:bold}.mcp-response-content.jsx-32b14b04f420f3ac{font-size:13px;color:#374151;line-height:1.5;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace}'}),(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac openai-mcp-tools",children:[(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac openai-vertical-line"}),(0,c.jsxs)(tE.default,{ghost:!0,size:"small",expandIconPosition:"start",defaultActiveKey:r?["list-tools"]:i.map((e,s)=>"mcp-call-".concat(s)),children:[r&&(0,c.jsx)(r1,{header:"List tools",children:(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac",children:null===(t=r.item)||void 0===t?void 0:null===(s=t.tools)||void 0===s?void 0:s.map((e,s)=>(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac tool-item",children:e.name},s))})},"list-tools"),i.map((e,s)=>{var t,l,a;return(0,c.jsx)(r1,{header:(null===(t=e.item)||void 0===t?void 0:t.name)||"Tool call",children:(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac",children:[(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:[(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section-header",children:"Request"}),(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-code-block",children:(null===(l=e.item)||void 0===l?void 0:l.arguments)&&(0,c.jsx)("pre",{className:"jsx-32b14b04f420f3ac mcp-json",children:(()=>{try{return JSON.stringify(JSON.parse(e.item.arguments),null,2)}catch(s){return e.item.arguments}})()})})]}),(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-approved",children:[(0,c.jsx)("span",{className:"jsx-32b14b04f420f3ac mcp-checkmark",children:"✓"})," Approved"]})}),(null===(a=e.item)||void 0===a?void 0:a.output)&&(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:[(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section-header",children:"Response"}),(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-response-content",children:e.item.output})]})]})},"mcp-call-".concat(s))})]})]})]}):(console.log("MCPEventsDisplay: No valid events found, returning null"),null)},r4=t(61935),r5=t(71891),r3=t(44625),r6=t(57400),r8=t(26430),r7=t(11894),r9=t(15883),ie=t(99890),is=t(79276);let{TextArea:it}=L.default,{Dragger:il}=ed.default;var ia=e=>{let{accessToken:s,token:t,userRole:l,userID:a,disabledPersonalKeyCreation:r}=e,[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedMCPTools");try{let s=e?JSON.parse(e):[];return Array.isArray(s)?s:s?[s]:[]}catch(e){return console.error("Error parsing selectedMCPTools from sessionStorage",e),[]}}),[h,p]=(0,d.useState)(!1),[g,j]=(0,d.useState)(()=>{let e=sessionStorage.getItem("apiKeySource");if(e)try{return JSON.parse(e)}catch(e){console.error("Error parsing apiKeySource from sessionStorage",e)}return r?"custom":"session"}),[f,v]=(0,d.useState)(()=>sessionStorage.getItem("apiKey")||""),[y,N]=(0,d.useState)(""),[Z,w]=(0,d.useState)(()=>{try{let e=sessionStorage.getItem("chatHistory");return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing chatHistory from sessionStorage",e),[]}}),[C,A]=(0,d.useState)(()=>sessionStorage.getItem("selectedModel")||void 0),[E,L]=(0,d.useState)(!1),[M,O]=(0,d.useState)([]),D=(0,d.useRef)(null),[F,R]=(0,d.useState)(()=>sessionStorage.getItem("endpointType")||rw.KP.CHAT),[z,q]=(0,d.useState)(!1),K=(0,d.useRef)(null),[H,Y]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedTags");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedTags from sessionStorage",e),[]}}),[J,W]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedVectorStores");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedVectorStores from sessionStorage",e),[]}}),[$,Q]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedGuardrails");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedGuardrails from sessionStorage",e),[]}}),[X,ee]=(0,d.useState)(()=>sessionStorage.getItem("messageTraceId")||null),[es,et]=(0,d.useState)(()=>sessionStorage.getItem("responsesSessionId")||null),[el,ea]=(0,d.useState)(()=>{let e=sessionStorage.getItem("useApiSessionManagement");return!e||JSON.parse(e)}),[er,ei]=(0,d.useState)([]),[ec,ed]=(0,d.useState)([]),[em,eu]=(0,d.useState)(null),[ex,eh]=(0,d.useState)(null),[eg,ej]=(0,d.useState)(null),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)(!1),[e_,eN]=(0,d.useState)(""),[eZ,ew]=(0,d.useState)("openai"),[ek,eS]=(0,d.useState)([]),eC=(0,d.useRef)(null),eI=async()=>{let e="session"===g?s:f;if(e){p(!0);try{let s=await rZ(e);m(s)}catch(e){console.error("Error fetching MCP tools:",e)}finally{p(!1)}}};(0,d.useEffect)(()=>{i&&eI()},[i,s,f,g]),(0,d.useEffect)(()=>{ey&&eN((0,rI.L)({apiKeySource:g,accessToken:s,apiKey:f,inputMessage:y,chatHistory:Z,selectedTags:H,selectedVectorStores:J,selectedGuardrails:$,selectedMCPTools:u,endpointType:F,selectedModel:C,selectedSdk:eZ}))},[ey,eZ,g,s,f,y,Z,H,J,$,u,F,C]),(0,d.useEffect)(()=>{let e=setTimeout(()=>{sessionStorage.setItem("chatHistory",JSON.stringify(Z))},500);return()=>{clearTimeout(e)}},[Z]),(0,d.useEffect)(()=>{sessionStorage.setItem("apiKeySource",JSON.stringify(g)),sessionStorage.setItem("apiKey",f),sessionStorage.setItem("endpointType",F),sessionStorage.setItem("selectedTags",JSON.stringify(H)),sessionStorage.setItem("selectedVectorStores",JSON.stringify(J)),sessionStorage.setItem("selectedGuardrails",JSON.stringify($)),sessionStorage.setItem("selectedMCPTools",JSON.stringify(u)),C?sessionStorage.setItem("selectedModel",C):sessionStorage.removeItem("selectedModel"),X?sessionStorage.setItem("messageTraceId",X):sessionStorage.removeItem("messageTraceId"),es?sessionStorage.setItem("responsesSessionId",es):sessionStorage.removeItem("responsesSessionId"),sessionStorage.setItem("useApiSessionManagement",JSON.stringify(el))},[g,f,C,F,H,J,$,X,es,el,u]),(0,d.useEffect)(()=>{let e="session"===g?s:f;if(!e||!t||!l||!a){console.log("userApiKey or token or userRole or userID is missing = ",e,t,l,a);return}(async()=>{try{if(!e){console.log("userApiKey is missing");return}let s=await eG(e);console.log("Fetched models:",s),O(s);let t=s.some(e=>e.model_group===C);s.length?t||A(s[0].model_group):A(void 0)}catch(e){console.error("Error fetching model info:",e)}})(),eI()},[s,a,l,g,f,t]),(0,d.useEffect)(()=>{eC.current&&setTimeout(()=>{var e;null===(e=eC.current)||void 0===e||e.scrollIntoView({behavior:"smooth",block:"end"})},100)},[Z]);let eA=(e,s,t)=>{console.log("updateTextUI called with:",e,s,t),w(l=>{let a=l[l.length-1];if(!a||a.role!==e||a.isImage)return[...l,{role:e,content:s,model:t}];{var r;let e={...a,content:a.content+s,model:null!==(r=a.model)&&void 0!==r?r:t};return[...l.slice(0,-1),e]}})},eT=e=>{w(s=>{let t=s[s.length-1];return t&&"assistant"===t.role&&!t.isImage?[...s.slice(0,s.length-1),{...t,reasoningContent:(t.reasoningContent||"")+e}]:s.length>0&&"user"===s[s.length-1].role?[...s,{role:"assistant",content:"",reasoningContent:e}]:s})},eE=e=>{console.log("updateTimingData called with:",e),w(s=>{let t=s[s.length-1];if(console.log("Current last message:",t),t&&"assistant"===t.role){console.log("Updating assistant message with timeToFirstToken:",e);let l=[...s.slice(0,s.length-1),{...t,timeToFirstToken:e}];return console.log("Updated chat history:",l),l}return t&&"user"===t.role?(console.log("Creating new assistant message with timeToFirstToken:",e),[...s,{role:"assistant",content:"",timeToFirstToken:e}]):(console.log("No appropriate message found to update timing"),s)})},eP=(e,s)=>{console.log("Received usage data:",e),w(t=>{let l=t[t.length-1];if(l&&"assistant"===l.role){console.log("Updating message with usage data:",e);let a={...l,usage:e,toolName:s};return console.log("Updated message:",a),[...t.slice(0,t.length-1),a]}return t})},eL=e=>{console.log("Received response ID for session management:",e),el&&et(e)},eM=e=>{console.log("ChatUI: Received MCP event:",e),eS(s=>{if(s.some(s=>s.item_id===e.item_id&&s.type===e.type&&s.sequence_number===e.sequence_number))return console.log("ChatUI: Duplicate MCP event, skipping"),s;let t=[...s,e];return console.log("ChatUI: Updated MCP events:",t),t})},eO=(e,s)=>{w(t=>[...t,{role:"assistant",content:e,model:s,isImage:!0}])},eD=(e,s)=>{w(t=>{let l=t[t.length-1];if(!l||"assistant"!==l.role||l.isImage)return[...t,{role:"assistant",content:"",model:s,image:{url:e,detail:"auto"}}];{var a;let r={...l,image:{url:e,detail:"auto"},model:null!==(a=l.model)&&void 0!==a?a:s};return[...t.slice(0,-1),r]}})},eR=e=>{ei(s=>[...s,e]);let s=URL.createObjectURL(e);return ed(e=>[...e,s]),!1},ez=e=>{ec[e]&&URL.revokeObjectURL(ec[e]),ei(s=>s.filter((s,t)=>t!==e)),ed(s=>s.filter((s,t)=>t!==e))},eU=()=>{ec.forEach(e=>{URL.revokeObjectURL(e)}),ei([]),ed([])},eq=()=>{ex&&URL.revokeObjectURL(ex),eu(null),eh(null)},eV=()=>{ef&&URL.revokeObjectURL(ef),ej(null),ev(null)},eB=async()=>{let e;if(""===y.trim())return;if(F===rw.KP.IMAGE_EDITS&&0===er.length){eo.Z.fromBackend("Please upload at least one image for editing");return}if(!t||!l||!a)return;let r="session"===g?s:f;if(!r){eo.Z.fromBackend("Please provide an API key or select Current UI Session");return}K.current=new AbortController;let i=K.current.signal;if(F===rw.KP.RESPONSES&&em)try{e=await rU(y,em)}catch(e){eo.Z.fromBackend("Failed to process image. Please try again.");return}else if(F===rw.KP.CHAT&&eg)try{e=await rJ(y,eg)}catch(e){eo.Z.fromBackend("Failed to process image. Please try again.");return}else e={role:"user",content:y};let n=X||(0,rj.Z)();X||ee(n),w([...Z,F===rw.KP.RESPONSES&&em?rq(y,!0,ex||void 0,em.name):F===rw.KP.CHAT&&eg?rW(y,!0,ef||void 0,eg.name):rq(y,!1)]),eS([]),q(!0);try{if(C){if(F===rw.KP.CHAT){let s=[...Z.filter(e=>!e.isImage).map(e=>{let{role:s,content:t}=e;return{role:s,content:"string"==typeof t?t:""}}),e];await rf(s,(e,s)=>eA("assistant",e,s),C,r,H,i,eT,eE,eP,n,J.length>0?J:void 0,$.length>0?$:void 0,u,eD)}else if(F===rw.KP.IMAGE)await rv(y,(e,s)=>eO(e,s),C,r,H,i);else if(F===rw.KP.IMAGE_EDITS)er.length>0&&await ry(1===er.length?er[0]:er,y,(e,s)=>eO(e,s),C,r,H,i);else if(F===rw.KP.RESPONSES){let s;s=el&&es?[e]:[...Z.filter(e=>!e.isImage).map(e=>{let{role:s,content:t}=e;return{role:s,content:t}}),e],await rb(s,(e,s,t)=>eA(e,s,t),C,r,H,i,eT,eE,eP,n,J.length>0?J:void 0,$.length>0?$:void 0,u,el?es:null,eL,eM)}else if(F===rw.KP.ANTHROPIC_MESSAGES){let s=[...Z.filter(e=>!e.isImage).map(e=>{let{role:s,content:t}=e;return{role:s,content:t}}),e];await rN(s,(e,s,t)=>eA(e,s,t),C,r,H,i,eT,eE,eP,n,J.length>0?J:void 0,$.length>0?$:void 0,u)}}}catch(e){i.aborted?console.log("Request was cancelled"):(console.error("Error fetching response",e),eA("assistant","Error fetching response:"+e))}finally{q(!1),K.current=null,F===rw.KP.IMAGE_EDITS&&eU(),F===rw.KP.RESPONSES&&em&&eq(),F===rw.KP.CHAT&&eg&&eV()}N("")};if(l&&"Admin Viewer"===l){let{Title:e,Paragraph:s}=en.default;return(0,c.jsxs)("div",{children:[(0,c.jsx)(e,{level:1,children:"Access Denied"}),(0,c.jsx)(s,{children:"Ask your proxy admin for access to test models"})]})}let eH=(0,c.jsx)(r4.Z,{style:{fontSize:24},spin:!0});return(0,c.jsxs)("div",{className:"w-full h-screen p-4 bg-white",children:[(0,c.jsx)(G.Z,{className:"w-full rounded-xl shadow-md overflow-hidden",children:(0,c.jsxs)("div",{className:"flex h-[80vh] w-full gap-4",children:[(0,c.jsxs)("div",{className:"w-1/4 p-4 bg-gray-50 overflow-y-auto",children:[(0,c.jsx)(S.Z,{className:"text-xl font-semibold mb-6 mt-2",children:"Configurations"}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(l2.Z,{className:"mr-2"})," API Key Source"]}),(0,c.jsx)(I.default,{disabled:r,value:g,style:{width:"100%"},onChange:e=>{j(e)},options:[{value:"session",label:"Current UI Session"},{value:"custom",label:"Virtual Key"}],className:"rounded-md"}),"custom"===g&&(0,c.jsx)(_.Z,{className:"mt-2",placeholder:"Enter custom API key",type:"password",onValueChange:v,value:f,icon:l2.Z})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(eK.Z,{className:"mr-2"})," Select Model"]}),(0,c.jsx)(I.default,{value:C,placeholder:"Select a Model",onChange:e=>{console.log("selected ".concat(e)),A(e),L("custom"===e)},options:[...Array.from(new Set(M.map(e=>e.model_group))).map((e,s)=>({value:e,label:e,key:s})),{value:"custom",label:"Enter custom model",key:"custom"}],style:{width:"100%"},showSearch:!0,className:"rounded-md"}),E&&(0,c.jsx)(_.Z,{className:"mt-2",placeholder:"Enter custom model name",onValueChange:e=>{D.current&&clearTimeout(D.current),D.current=setTimeout(()=>{A(e)},500)}})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(lu.Z,{className:"mr-2"})," Endpoint Type"]}),(0,c.jsx)(rS,{endpointType:F,onEndpointChange:e=>{R(e)},className:"mb-4"}),(0,c.jsx)(rX,{endpointType:F,responsesSessionId:es,useApiSessionManagement:el,onToggleSessionManagement:e=>{ea(e),e||et(null)}})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(r5.Z,{className:"mr-2"})," Tags"]}),(0,c.jsx)(rC,{value:H,onChange:Y,className:"mb-4",accessToken:s||""})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(rM.Z,{className:"mr-2"})," MCP Tool",(0,c.jsx)(B.Z,{className:"ml-1",title:"Select MCP tools to use in your conversation, only available for /v1/responses endpoint",children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select MCP tools",value:u,onChange:e=>x(e),loading:h,className:"mb-4",allowClear:!0,optionLabelProp:"label",disabled:F!==rw.KP.RESPONSES,maxTagCount:"responsive",children:Array.isArray(o)&&o.map(e=>(0,c.jsx)(I.default.Option,{value:e.name,label:(0,c.jsx)("div",{className:"font-medium",children:e.name}),children:(0,c.jsxs)("div",{className:"flex flex-col py-1",children:[(0,c.jsx)("span",{className:"font-medium",children:e.name}),(0,c.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.description})]})},e.name))})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(r3.Z,{className:"mr-2"})," Vector Store",(0,c.jsx)(B.Z,{className:"ml-1",title:(0,c.jsxs)("span",{children:["Select vector store(s) to use for this LLM API call. You can set up your vector store"," ",(0,c.jsx)("a",{href:"?page=vector-stores",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(U,{value:J,onChange:W,className:"mb-4",accessToken:s||""})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(r6.Z,{className:"mr-2"})," Guardrails",(0,c.jsx)(B.Z,{className:"ml-1",title:(0,c.jsxs)("span",{children:["Select guardrail(s) to use for this LLM API call. You can set up your guardrails"," ",(0,c.jsx)("a",{href:"?page=guardrails",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(sx,{value:$,onChange:Q,className:"mb-4",accessToken:s||""})]})]})]}),(0,c.jsxs)("div",{className:"w-3/4 flex flex-col bg-white",children:[(0,c.jsxs)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:[(0,c.jsx)(S.Z,{className:"text-xl font-semibold mb-0",children:"Test Key"}),(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{onClick:()=>{w([]),ee(null),et(null),eS([]),eU(),eq(),eV(),sessionStorage.removeItem("chatHistory"),sessionStorage.removeItem("messageTraceId"),sessionStorage.removeItem("responsesSessionId"),eo.Z.success("Chat history cleared.")},className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:r8.Z,children:"Clear Chat"}),(0,c.jsx)(b.Z,{onClick:()=>eb(!0),className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:r7.Z,children:"Get Code"})]})]}),(0,c.jsxs)("div",{className:"flex-1 overflow-auto p-4 pb-0",children:[0===Z.length&&(0,c.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,c.jsx)(eK.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,c.jsx)(k.Z,{children:"Start a conversation or generate an image"})]}),Z.map((e,s)=>(0,c.jsx)("div",{children:(0,c.jsx)("div",{className:"mb-4 ".concat("user"===e.role?"text-right":"text-left"),children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:"user"===e.role?"#f0f8ff":"#ffffff",border:"user"===e.role?"1px solid #e6f0fa":"1px solid #f0f0f0",textAlign:"left"},children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:"user"===e.role?"#e6f0fa":"#f5f5f5"},children:"user"===e.role?(0,c.jsx)(r9.Z,{style:{fontSize:"12px",color:"#2563eb"}}):(0,c.jsx)(eK.Z,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,c.jsx)("strong",{className:"text-sm capitalize",children:e.role}),"assistant"===e.role&&e.model&&(0,c.jsx)("span",{className:"text-xs px-2 py-0.5 rounded bg-gray-100 text-gray-600 font-normal",children:e.model})]}),e.reasoningContent&&(0,c.jsx)(rT,{reasoningContent:e.reasoningContent}),"assistant"===e.role&&s===Z.length-1&&ek.length>0&&F===rw.KP.RESPONSES&&(0,c.jsx)("div",{className:"mb-3",children:(0,c.jsx)(r2,{events:ek})}),(0,c.jsxs)("div",{className:"whitespace-pre-wrap break-words max-w-full message-content",style:{wordWrap:"break-word",overflowWrap:"break-word",wordBreak:"break-word",hyphens:"auto"},children:[e.isImage?(0,c.jsx)("img",{src:"string"==typeof e.content?e.content:"",alt:"Generated image",className:"max-w-full rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"500px"}}):(0,c.jsxs)(c.Fragment,{children:[F===rw.KP.RESPONSES&&(0,c.jsx)(rK,{message:e}),F===rw.KP.CHAT&&(0,c.jsx)(rQ,{message:e}),(0,c.jsx)(rg.U,{components:{code(e){let{node:s,inline:t,className:l,children:a,...r}=e,i=/language-(\w+)/.exec(l||"");return!t&&i?(0,c.jsx)(af.Z,{style:rk.Z,language:i[1],PreTag:"div",className:"rounded-md my-2",wrapLines:!0,wrapLongLines:!0,...r,children:String(a).replace(/\n$/,"")}):(0,c.jsx)("code",{className:"".concat(l," px-1.5 py-0.5 rounded bg-gray-100 text-sm font-mono"),style:{wordBreak:"break-word"},...r,children:a})},pre:e=>{let{node:s,...t}=e;return(0,c.jsx)("pre",{style:{overflowX:"auto",maxWidth:"100%"},...t})}},children:"string"==typeof e.content?e.content:""}),e.image&&(0,c.jsx)("div",{className:"mt-3",children:(0,c.jsx)("img",{src:e.image.url,alt:"Generated image",className:"max-w-full rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"500px"}})})]}),"assistant"===e.role&&(e.timeToFirstToken||e.usage)&&(0,c.jsx)(rO,{timeToFirstToken:e.timeToFirstToken,usage:e.usage,toolName:e.toolName})]})]})})},s)),z&&ek.length>0&&F===rw.KP.RESPONSES&&Z.length>0&&"user"===Z[Z.length-1].role&&(0,c.jsx)("div",{className:"text-left mb-4",children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:"#ffffff",border:"1px solid #f0f0f0",textAlign:"left"},children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:"#f5f5f5"},children:(0,c.jsx)(eK.Z,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,c.jsx)("strong",{className:"text-sm capitalize",children:"Assistant"})]}),(0,c.jsx)(r2,{events:ek})]})}),z&&(0,c.jsx)("div",{className:"flex justify-center items-center my-4",children:(0,c.jsx)(eF.Z,{indicator:eH})}),(0,c.jsx)("div",{ref:eC,style:{height:"1px"}})]}),(0,c.jsxs)("div",{className:"p-4 border-t border-gray-200 bg-white",children:[F===rw.KP.IMAGE_EDITS&&(0,c.jsx)("div",{className:"mb-4",children:0===er.length?(0,c.jsxs)(il,{beforeUpload:eR,accept:"image/*",showUploadList:!1,className:"border-dashed border-2 border-gray-300 rounded-lg p-4",children:[(0,c.jsx)("p",{className:"ant-upload-drag-icon",children:(0,c.jsx)(ie.Z,{style:{fontSize:"24px",color:"#666"}})}),(0,c.jsx)("p",{className:"ant-upload-text text-sm",children:"Click or drag images to upload"}),(0,c.jsx)("p",{className:"ant-upload-hint text-xs text-gray-500",children:"Support for PNG, JPG, JPEG formats. Multiple images supported."})]}):(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[er.map((e,s)=>(0,c.jsxs)("div",{className:"relative inline-block",children:[(0,c.jsx)("img",{src:ec[s]||"",alt:"Upload preview ".concat(s+1),className:"max-w-32 max-h-32 rounded-md border border-gray-200 object-cover"}),(0,c.jsx)("button",{className:"absolute top-1 right-1 bg-white shadow-sm border border-gray-200 rounded px-1 py-1 text-red-500 hover:bg-red-50 text-xs",onClick:()=>ez(s),children:(0,c.jsx)(ep.Z,{})})]},s)),(0,c.jsxs)("div",{className:"flex items-center justify-center w-32 h-32 border-2 border-dashed border-gray-300 rounded-md hover:border-gray-400 cursor-pointer",onClick:()=>{var e;return null===(e=document.getElementById("additional-image-upload"))||void 0===e?void 0:e.click()},children:[(0,c.jsxs)("div",{className:"text-center",children:[(0,c.jsx)(ie.Z,{style:{fontSize:"24px",color:"#666"}}),(0,c.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:"Add more"})]}),(0,c.jsx)("input",{id:"additional-image-upload",type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:e=>{Array.from(e.target.files||[]).forEach(e=>eR(e))}})]})]})}),F===rw.KP.RESPONSES&&em&&(0,c.jsx)("div",{className:"mb-2",children:(0,c.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[(0,c.jsx)("div",{className:"relative inline-block",children:em.name.toLowerCase().endsWith(".pdf")?(0,c.jsx)("div",{className:"w-10 h-10 rounded-md bg-red-500 flex items-center justify-center",children:(0,c.jsx)(rB.Z,{style:{fontSize:"16px",color:"white"}})}):(0,c.jsx)("img",{src:ex||"",alt:"Upload preview",className:"w-10 h-10 rounded-md border border-gray-200 object-cover"})}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsx)("div",{className:"text-sm font-medium text-gray-900 truncate",children:em.name}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:em.name.toLowerCase().endsWith(".pdf")?"PDF":"Image"})]}),(0,c.jsx)("button",{className:"flex items-center justify-center w-6 h-6 text-gray-400 hover:text-gray-600 hover:bg-gray-200 rounded-full transition-colors",onClick:eq,children:(0,c.jsx)(ep.Z,{style:{fontSize:"12px"}})})]})}),F===rw.KP.CHAT&&eg&&(0,c.jsx)("div",{className:"mb-2",children:(0,c.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[(0,c.jsx)("div",{className:"relative inline-block",children:eg.name.toLowerCase().endsWith(".pdf")?(0,c.jsx)("div",{className:"w-10 h-10 rounded-md bg-red-500 flex items-center justify-center",children:(0,c.jsx)(rB.Z,{style:{fontSize:"16px",color:"white"}})}):(0,c.jsx)("img",{src:ef||"",alt:"Upload preview",className:"w-10 h-10 rounded-md border border-gray-200 object-cover"})}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsx)("div",{className:"text-sm font-medium text-gray-900 truncate",children:eg.name}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:eg.name.toLowerCase().endsWith(".pdf")?"PDF":"Image"})]}),(0,c.jsx)("button",{className:"flex items-center justify-center w-6 h-6 text-gray-400 hover:text-gray-600 hover:bg-gray-200 rounded-full transition-colors",onClick:eV,children:(0,c.jsx)(ep.Z,{style:{fontSize:"12px"}})})]})}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsxs)("div",{className:"flex items-center flex-1 bg-white border border-gray-300 rounded-xl px-3 py-1 min-h-[44px]",children:[(0,c.jsxs)("div",{className:"flex-shrink-0 mr-2",children:[F===rw.KP.RESPONSES&&!em&&(0,c.jsx)(rR,{responsesUploadedImage:em,responsesImagePreviewUrl:ex,onImageUpload:e=>(eu(e),eh(URL.createObjectURL(e)),!1),onRemoveImage:eq}),F===rw.KP.CHAT&&!eg&&(0,c.jsx)(rH,{chatUploadedImage:eg,chatImagePreviewUrl:ef,onImageUpload:e=>(ej(e),ev(URL.createObjectURL(e)),!1),onRemoveImage:eV})]}),(0,c.jsx)(it,{value:y,onChange:e=>N(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),eB())},placeholder:F===rw.KP.CHAT||F===rw.KP.RESPONSES||F===rw.KP.ANTHROPIC_MESSAGES?"Type your message... (Shift+Enter for new line)":F===rw.KP.IMAGE_EDITS?"Describe how you want to edit the image...":"Describe the image you want to generate...",disabled:z,className:"flex-1",autoSize:{minRows:1,maxRows:4},style:{resize:"none",border:"none",boxShadow:"none",background:"transparent",padding:"4px 0",fontSize:"14px",lineHeight:"20px"}}),(0,c.jsx)(b.Z,{onClick:eB,disabled:z||!y.trim(),className:"flex-shrink-0 ml-2 !w-8 !h-8 !min-w-8 !p-0 !rounded-full !bg-blue-600 hover:!bg-blue-700 disabled:!bg-gray-300 !border-none !text-white disabled:!text-gray-500 !flex !items-center !justify-center",children:(0,c.jsx)(is.Z,{style:{fontSize:"14px"}})})]}),z&&(0,c.jsx)(b.Z,{onClick:()=>{K.current&&(K.current.abort(),K.current=null,q(!1),eo.Z.info("Request cancelled"))},className:"bg-red-50 hover:bg-red-100 text-red-600 border-red-200",icon:ep.Z,children:"Cancel"})]})]})]})]})}),(0,c.jsxs)(T.Z,{title:"Generated Code",visible:ey,onCancel:()=>eb(!1),footer:null,width:800,children:[(0,c.jsxs)("div",{className:"flex justify-between items-end my-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium block mb-1 text-gray-700",children:"SDK Type"}),(0,c.jsx)(I.default,{value:eZ,onChange:e=>ew(e),style:{width:150},options:[{value:"openai",label:"OpenAI SDK"},{value:"azure",label:"Azure SDK"}]})]}),(0,c.jsx)(P.ZP,{onClick:()=>{navigator.clipboard.writeText(e_),eo.Z.success("Copied to clipboard!")},children:"Copy to Clipboard"})]}),(0,c.jsx)(af.Z,{language:"python",style:rk.Z,wrapLines:!0,wrapLongLines:!0,className:"rounded-md",customStyle:{maxHeight:"60vh",overflowY:"auto"},children:e_})]}),"custom"===g&&(0,c.jsx)(T.Z,{title:"Select MCP Tool",visible:i,onCancel:()=>n(!1),onOk:()=>{n(!1),eo.Z.success("MCP tool selection updated")},width:800,children:h?(0,c.jsx)("div",{className:"flex justify-center items-center py-8",children:(0,c.jsx)(eF.Z,{indicator:(0,c.jsx)(r4.Z,{style:{fontSize:24},spin:!0})})}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)(k.Z,{className:"text-gray-600 block mb-4",children:"Select the MCP tools you want to use in your conversation."}),(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select MCP tools",value:u,onChange:e=>x(e),optionLabelProp:"label",allowClear:!0,maxTagCount:"responsive",children:o.map(e=>(0,c.jsx)(I.default.Option,{value:e.name,label:(0,c.jsx)("div",{className:"font-medium",children:e.name}),children:(0,c.jsxs)("div",{className:"flex flex-col py-1",children:[(0,c.jsx)("span",{className:"font-medium",children:e.name}),(0,c.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.description})]})},e.name))})]})})]})},ir=t(19226),ii=t(45937),io=t(28595),ic=t(68208),id=t(9775),im=t(41361),iu=t(37527),ix=t(88009),ih=t(48231),ip=t(41169),ig=t(55322),ij=t(11429),iv=t(70525),iy=t(95805),ib=t(51817),i_=t(21047);t(22135),t(40875);var iN=t(49663);let iZ=function(){for(var e=arguments.length,s=Array(e),t=0;t{(async()=>{if(s){u(!0),h(null);try{let e=await (0,j.getRemainingUsers)(s);o(e)}catch(e){console.error("Failed to fetch usage data:",e),h("Failed to load usage data")}finally{u(!1)}}})()},[s]);let{isOverLimit:p,isNearLimit:g,usagePercentage:f,userMetrics:v,teamMetrics:y}=(e=>{if(!e)return{isOverLimit:!1,isNearLimit:!1,usagePercentage:0,userMetrics:{isOverLimit:!1,isNearLimit:!1,usagePercentage:0},teamMetrics:{isOverLimit:!1,isNearLimit:!1,usagePercentage:0}};let s=!!e.total_users_remaining&&e.total_users_remaining<=0,t=!!e.total_users_remaining&&e.total_users_remaining<=5&&e.total_users_remaining>0,l=e.total_users?e.total_users_used/e.total_users*100:0,a=!!e.total_teams_remaining&&e.total_teams_remaining<=0,r=!!e.total_teams_remaining&&e.total_teams_remaining<=5&&e.total_teams_remaining>0,i=e.total_teams?e.total_teams_used/e.total_teams*100:0,n=s||a;return{isOverLimit:n,isNearLimit:(t||r)&&!n,usagePercentage:Math.max(l,i),userMetrics:{isOverLimit:s,isNearLimit:t,usagePercentage:l},teamMetrics:{isOverLimit:a,isNearLimit:r,usagePercentage:i}}})(n),b=()=>p?"red":g?"yellow":"green",_=()=>p?"Over Limit":g?"Near Limit":"Active",N=()=>p?(0,c.jsx)(lK.Z,{className:"h-3 w-3"}):g?(0,c.jsx)(iv.Z,{className:"h-3 w-3"}):null;return s&&((null==n?void 0:n.total_users)!==null||(null==n?void 0:n.total_teams)!==null)?(0,c.jsx)("div",{className:"fixed bottom-4 left-4 z-50",style:{width:"".concat(Math.min(t,220),"px")},children:(0,c.jsx)(()=>{if(r){let e=p||g;return(0,c.jsx)("button",{onClick:()=>i(!1),className:iZ("bg-white border border-gray-200 rounded-lg shadow-sm p-3 hover:shadow-md transition-all w-full",e&&p&&"border-red-200 bg-red-50",e&&g&&"border-yellow-200 bg-yellow-50"),title:"Show usage details",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(iy.Z,{className:"h-4 w-4 flex-shrink-0"}),e&&(0,c.jsx)("span",{className:"flex-shrink-0",children:N()}),(0,c.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium truncate",children:[n&&null!==n.total_users&&(0,c.jsxs)("span",{className:"flex-shrink-0",children:["U: ",n.total_users_used,"/",n.total_users]}),n&&null!==n.total_teams&&(0,c.jsxs)("span",{className:"flex-shrink-0",children:["T: ",n.total_teams_used,"/",n.total_teams]}),!n||null===n.total_users&&null===n.total_teams&&(0,c.jsx)("span",{className:"truncate",children:"Usage"})]})]})})}return m?(0,c.jsx)("div",{className:"bg-white border border-gray-200 rounded-lg shadow-sm p-4 w-full",children:(0,c.jsxs)("div",{className:"flex items-center justify-center gap-2 py-2",children:[(0,c.jsx)(ib.Z,{className:"h-4 w-4 animate-spin"}),(0,c.jsx)("span",{className:"text-sm text-gray-500 truncate",children:"Loading..."})]})}):x||!n?(0,c.jsx)("div",{className:"bg-white border border-gray-200 rounded-lg shadow-sm p-4 group w-full",children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex-1 min-w-0",children:(0,c.jsx)("span",{className:"text-sm text-gray-500 truncate block",children:x||"No data"})}),(0,c.jsx)("button",{onClick:()=>i(!0),className:"opacity-0 group-hover:opacity-100 p-1 hover:bg-gray-100 rounded transition-all flex-shrink-0",title:"Minimize",children:(0,c.jsx)(i_.Z,{className:"h-3 w-3 text-gray-400"})})]})}):(0,c.jsxs)("div",{className:iZ("bg-white border rounded-lg shadow-sm p-3 transition-all duration-200 group w-full",p&&"border-red-200 bg-red-50",g&&"border-yellow-200 bg-yellow-50"),children:[(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2 mb-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[(0,c.jsx)(iy.Z,{className:"h-4 w-4 flex-shrink-0"}),(0,c.jsx)("span",{className:"font-medium text-sm truncate",children:"Usage"}),(p||g)&&(0,c.jsx)(se.Z,{color:b(),className:"text-xs px-1.5 py-0.5 flex-shrink-0",children:_()})]}),(0,c.jsx)("button",{onClick:()=>i(!0),className:"opacity-0 group-hover:opacity-100 p-1 hover:bg-gray-100 rounded transition-all flex-shrink-0",title:"Minimize",children:(0,c.jsx)(i_.Z,{className:"h-3 w-3 text-gray-400"})})]}),(0,c.jsxs)("div",{className:"space-y-3 text-sm",children:[null!==n.total_users&&(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-1 text-xs text-gray-600 mb-1",children:[(0,c.jsx)(iy.Z,{className:"h-3 w-3"}),(0,c.jsx)("span",{className:"font-medium",children:"Users"})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Used:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[n.total_users_used,"/",n.total_users]})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Remaining:"}),(0,c.jsx)("span",{className:iZ("font-medium text-right",v.isOverLimit&&"text-red-600",v.isNearLimit&&"text-yellow-600"),children:n.total_users_remaining})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Usage:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[Math.round(v.usagePercentage),"%"]})]}),(0,c.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,c.jsx)("div",{className:iZ("h-2 rounded-full transition-all duration-300",v.isOverLimit&&"bg-red-500",v.isNearLimit&&"bg-yellow-500",!v.isOverLimit&&!v.isNearLimit&&"bg-green-500"),style:{width:"".concat(Math.min(v.usagePercentage,100),"%")}})})]}),null!==n.total_teams&&(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-1 text-xs text-gray-600 mb-1",children:[(0,c.jsx)(iN.Z,{className:"h-3 w-3"}),(0,c.jsx)("span",{className:"font-medium",children:"Teams"})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Used:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[n.total_teams_used,"/",n.total_teams]})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Remaining:"}),(0,c.jsx)("span",{className:iZ("font-medium text-right",y.isOverLimit&&"text-red-600",y.isNearLimit&&"text-yellow-600"),children:n.total_teams_remaining})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Usage:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[Math.round(y.usagePercentage),"%"]})]}),(0,c.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,c.jsx)("div",{className:iZ("h-2 rounded-full transition-all duration-300",y.isOverLimit&&"bg-red-500",y.isNearLimit&&"bg-yellow-500",!y.isOverLimit&&!y.isNearLimit&&"bg-green-500"),style:{width:"".concat(Math.min(y.usagePercentage,100),"%")}})})]})]})]})},{})}):null}var ik=t(13959);let{Sider:iS}=ir.default;var iC=e=>{let{accessToken:s,setPage:t,userRole:l,defaultSelectedKey:a,collapsed:r=!1}=e,i=[{key:"1",page:"api-keys",label:"Virtual Keys",icon:(0,c.jsx)(l2.Z,{style:{fontSize:"18px"}})},{key:"3",page:"llm-playground",label:"Test Key",icon:(0,c.jsx)(io.Z,{style:{fontSize:"18px"}}),roles:eI.LQ},{key:"2",page:"models",label:"Models + Endpoints",icon:(0,c.jsx)(ic.Z,{style:{fontSize:"18px"}}),roles:eI.LQ},{key:"12",page:"new_usage",label:"Usage",icon:(0,c.jsx)(id.Z,{style:{fontSize:"18px"}}),roles:[...eI.ZL,...eI.lo]},{key:"6",page:"teams",label:"Teams",icon:(0,c.jsx)(im.Z,{style:{fontSize:"18px"}})},{key:"17",page:"organizations",label:"Organizations",icon:(0,c.jsx)(iu.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"5",page:"users",label:"Internal Users",icon:(0,c.jsx)(r9.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"14",page:"api_ref",label:"API Reference",icon:(0,c.jsx)(lu.Z,{style:{fontSize:"18px"}})},{key:"16",page:"model-hub-table",label:"Model Hub",icon:(0,c.jsx)(ix.Z,{style:{fontSize:"18px"}})},{key:"15",page:"logs",label:"Logs",icon:(0,c.jsx)(ih.Z,{style:{fontSize:"18px"}})},{key:"11",page:"guardrails",label:"Guardrails",icon:(0,c.jsx)(r6.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"26",page:"tools",label:"Tools",icon:(0,c.jsx)(rM.Z,{style:{fontSize:"18px"}}),children:[{key:"18",page:"mcp-servers",label:"MCP Servers",icon:(0,c.jsx)(rM.Z,{style:{fontSize:"18px"}})},{key:"21",page:"vector-stores",label:"Vector Stores",icon:(0,c.jsx)(r3.Z,{style:{fontSize:"18px"}}),roles:eI.ZL}]},{key:"experimental",page:"experimental",label:"Experimental",icon:(0,c.jsx)(ip.Z,{style:{fontSize:"18px"}}),children:[{key:"9",page:"caching",label:"Caching",icon:(0,c.jsx)(r3.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"25",page:"prompts",label:"Prompts",icon:(0,c.jsx)(eh.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"10",page:"budgets",label:"Budgets",icon:(0,c.jsx)(iu.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"20",page:"transform-request",label:"API Playground",icon:(0,c.jsx)(lu.Z,{style:{fontSize:"18px"}}),roles:[...eI.ZL,...eI.lo]},{key:"19",page:"tag-management",label:"Tag Management",icon:(0,c.jsx)(r5.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"4",page:"usage",label:"Old Usage",icon:(0,c.jsx)(id.Z,{style:{fontSize:"18px"}})}]},{key:"settings",page:"settings",label:"Settings",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL,children:[{key:"11",page:"general-settings",label:"Router Settings",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"8",page:"settings",label:"Logging & Alerts",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"13",page:"admin-panel",label:"Admin Settings",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"14",page:"ui-theme",label:"UI Theme",icon:(0,c.jsx)(ij.Z,{style:{fontSize:"18px"}}),roles:eI.ZL}]}],n=(e=>{let s=i.find(s=>s.page===e);if(s)return s.key;for(let s of i)if(s.children){let t=s.children.find(s=>s.page===e);if(t)return t.key}return"1"})(a),o=i.filter(e=>{let s=!e.roles||e.roles.includes(l);return console.log("Menu item ".concat(e.label,": roles=").concat(e.roles,", userRole=").concat(l,", hasAccess=").concat(s)),!!s&&(e.children&&(e.children=e.children.filter(e=>!e.roles||e.roles.includes(l))),!0)});return(0,c.jsx)(ir.default,{style:{minHeight:"100vh"},children:(0,c.jsxs)(iS,{theme:"light",width:220,collapsed:r,collapsedWidth:80,collapsible:!0,trigger:null,style:{transition:"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",position:"relative"},children:[(0,c.jsx)(ik.ZP,{theme:{components:{Menu:{iconSize:18,fontSize:14}}},children:(0,c.jsx)(ii.Z,{mode:"inline",selectedKeys:[n],defaultOpenKeys:r?[]:["llm-tools"],inlineCollapsed:r,className:"custom-sidebar-menu",style:{borderRight:0,backgroundColor:"transparent",fontSize:"14px"},items:o.map(e=>{var s;return{key:e.key,icon:e.icon,label:e.label,children:null===(s=e.children)||void 0===s?void 0:s.map(e=>({key:e.key,icon:e.icon,label:e.label,onClick:()=>{let s=new URLSearchParams(window.location.search);s.set("page",e.page),window.history.pushState(null,"","?".concat(s.toString())),t(e.page)}})),onClick:e.children?void 0:()=>{let s=new URLSearchParams(window.location.search);s.set("page",e.page),window.history.pushState(null,"","?".concat(s.toString())),t(e.page)}}})})}),(0,eI.tY)(l)&&!r&&(0,c.jsx)(iw,{accessToken:s,width:220})]})})},iI=t(96889),iA=t(92414),iT=t(46030);console.log("process.env.NODE_ENV","production");let iE=e=>null!==e&&("Admin"===e||"Admin Viewer"===e);var iP=e=>{let{accessToken:s,token:t,userRole:l,userID:a,keys:r,premiumUser:i}=e,n=new Date,[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)([]),[_,N]=(0,d.useState)([]),[Z,w]=(0,d.useState)([]),[C,I]=(0,d.useState)([]),[A,T]=(0,d.useState)([]),[E,P]=(0,d.useState)([]),[L,M]=(0,d.useState)([]),[O,D]=(0,d.useState)({}),[F,R]=(0,d.useState)([]),[z,U]=(0,d.useState)(""),[q,V]=(0,d.useState)(["all-tags"]),[B,K]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[H,Y]=(0,d.useState)(null),[J,W]=(0,d.useState)(0),$=new Date(n.getFullYear(),n.getMonth(),1),Q=new Date(n.getFullYear(),n.getMonth()+1,0),X=er($),ee=er(Q);function es(e){return new Intl.NumberFormat("en-US",{maximumFractionDigits:0,notation:"compact",compactDisplay:"short"}).format(e)}console.log("keys in usage",r),console.log("premium user in usage",i);let et=async()=>{if(s)try{let e=await (0,j.getProxyUISettings)(s);return console.log("usage tab: proxy_settings",e),e}catch(e){console.error("Error fetching proxy settings:",e)}};(0,d.useEffect)(()=>{ea(B.from,B.to)},[B,q]);let el=async(e,t,l)=>{if(!e||!t||!s)return;console.log("uiSelectedKey",l);let a=await (0,j.adminTopEndUsersCall)(s,l,e.toISOString(),t.toISOString());console.log("End user data updated successfully",a),f(a)},ea=async(e,t)=>{if(!e||!t||!s)return;let l=await et();null!=l&&l.DISABLE_EXPENSIVE_DB_QUERIES||(w((await (0,j.tagsSpendLogsCall)(s,e.toISOString(),t.toISOString(),0===q.length?void 0:q)).spend_per_tag),console.log("Tag spend data updated successfully"))};function er(e){let s=e.getFullYear(),t=e.getMonth()+1,l=e.getDate();return"".concat(s,"-").concat(t<10?"0"+t:t,"-").concat(l<10?"0"+l:l)}console.log("Start date is ".concat(X)),console.log("End date is ".concat(ee));let en=async(e,s,t)=>{try{let t=await e();s(t)}catch(e){console.error(t,e)}},eo=(e,s,t,l)=>{let a=[],r=new Date(s),i=e=>{if(e.includes("-"))return e;{let[s,t]=e.split(" ");return new Date(new Date().getFullYear(),new Date("".concat(s," 01 2024")).getMonth(),parseInt(t)).toISOString().split("T")[0]}},n=new Map(e.map(e=>{let s=i(e.date);return[s,{...e,date:s}]}));for(;r<=t;){let e=r.toISOString().split("T")[0];if(n.has(e))a.push(n.get(e));else{let s={date:e,api_requests:0,total_tokens:0};l.forEach(e=>{s[e]||(s[e]=0)}),a.push(s)}r.setDate(r.getDate()+1)}return a},ec=async()=>{if(s)try{let e=await (0,j.adminSpendLogsCall)(s),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0),r=eo(e,l,a,[]),i=Number(r.reduce((e,s)=>e+(s.spend||0),0).toFixed(2));W(i),m(r)}catch(e){console.error("Error fetching overall spend:",e)}},ed=()=>en(()=>s&&t?(0,j.adminspendByProvider)(s,t,X,ee):Promise.reject("No access token or token"),M,"Error fetching provider spend"),em=async()=>{s&&await en(async()=>(await (0,j.adminTopKeysCall)(s)).map(e=>({key:e.api_key.substring(0,10),api_key:e.api_key,key_alias:e.key_alias,spend:Number(e.total_spend.toFixed(2))})),x,"Error fetching top keys")},eu=async()=>{s&&await en(async()=>(await (0,j.adminTopModelsCall)(s)).map(e=>({key:e.model,spend:eL(e.total_spend,2)})),p,"Error fetching top models")},ex=async()=>{s&&await en(async()=>{let e=await (0,j.teamSpendLogsCall)(s),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0);return N(eo(e.daily_spend,l,a,e.teams)),T(e.teams),e.total_spend_per_team.map(e=>({name:e.team_id||"",value:eL(e.total_spend||0,2)}))},P,"Error fetching team spend")},eh=()=>{s&&en(async()=>(await (0,j.allTagNamesCall)(s)).tag_names,I,"Error fetching tag names")},ep=()=>{s&&en(()=>{var e,t;return(0,j.tagsSpendLogsCall)(s,null===(e=B.from)||void 0===e?void 0:e.toISOString(),null===(t=B.to)||void 0===t?void 0:t.toISOString(),void 0)},e=>w(e.spend_per_tag),"Error fetching top tags")},eg=()=>{s&&en(()=>(0,j.adminTopEndUsersCall)(s,null,void 0,void 0),f,"Error fetching top end users")},ej=async()=>{if(s)try{let e=await (0,j.adminGlobalActivity)(s,X,ee),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0),r=eo(e.daily_data||[],l,a,["api_requests","total_tokens"]);D({...e,daily_data:r})}catch(e){console.error("Error fetching global activity:",e)}},ef=async()=>{if(s)try{let e=await (0,j.adminGlobalActivityPerModel)(s,X,ee),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0),r=e.map(e=>({...e,daily_data:eo(e.daily_data||[],l,a,["api_requests","total_tokens"])}));R(r)}catch(e){console.error("Error fetching global activity per model:",e)}};return((0,d.useEffect)(()=>{(async()=>{if(s&&t&&l&&a){let e=await et();e&&(Y(e),null!=e&&e.DISABLE_EXPENSIVE_DB_QUERIES)||(console.log("fetching data - valiue of proxySettings",H),ec(),ed(),em(),eu(),ej(),ef(),iE(l)&&(ex(),eh(),ep(),eg()))}})()},[s,t,l,a,X,ee]),null==H?void 0:H.DISABLE_EXPENSIVE_DB_QUERIES)?(0,c.jsx)("div",{style:{width:"100%"},className:"p-8",children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Database Query Limit Reached"}),(0,c.jsxs)(k.Z,{className:"mt-4",children:["SpendLogs in DB has ",H.NUM_SPEND_LOGS_ROWS," rows.",(0,c.jsx)("br",{}),"Please follow our guide to view usage when SpendLogs has more than 1M rows."]}),(0,c.jsx)(b.Z,{className:"mt-4",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/spending_monitoring",target:"_blank",children:"View Usage Guide"})})]})}):(0,c.jsx)("div",{style:{width:"100%"},className:"p-8",children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mt-2",children:[(0,c.jsx)(ss.Z,{children:"All Up"}),iE(l)?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ss.Z,{children:"Team Based Usage"}),(0,c.jsx)(ss.Z,{children:"Customer Usage"}),(0,c.jsx)(ss.Z,{children:"Tag Based Usage"})]}):(0,c.jsx)(c.Fragment,{children:(0,c.jsx)("div",{})})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"solid",className:"mt-1",children:[(0,c.jsx)(ss.Z,{children:"Cost"}),(0,c.jsx)(ss.Z,{children:"Activity"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 h-[100vh] w-full",children:[(0,c.jsxs)(v.Z,{numColSpan:2,children:[(0,c.jsxs)(k.Z,{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content mb-2 mt-2 text-lg",children:["Project Spend ",new Date().toLocaleString("default",{month:"long"})," 1 -"," ",new Date(new Date().getFullYear(),new Date().getMonth()+1,0).getDate()]}),(0,c.jsx)(a1,{userID:a,userRole:l,accessToken:s,userSpend:J,selectedTeam:null,userMaxBudget:null})]}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Monthly Spend"}),(0,c.jsx)(to.Z,{data:o,index:"date",categories:["spend"],colors:["cyan"],valueFormatter:e=>"$ ".concat(eL(e,2)),yAxisWidth:100,tickGap:5})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)(S.Z,{children:"Top API Keys"}),(0,c.jsx)(a4,{topKeys:u,accessToken:s,userID:a,userRole:l,teams:null,premiumUser:i})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)(S.Z,{children:"Top Models"}),(0,c.jsx)(to.Z,{className:"mt-4 h-40",data:h,index:"key",categories:["spend"],colors:["cyan"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1,valueFormatter:e=>"$".concat(eL(e,2))})]})}),(0,c.jsx)(v.Z,{numColSpan:1}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{className:"mb-2",children:[(0,c.jsx)(S.Z,{children:"Spend by Provider"}),(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(a$.Z,{className:"mt-4 h-40",variant:"pie",data:L,index:"provider",category:"spend",colors:["cyan"],valueFormatter:e=>"$".concat(eL(e,2))})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Provider"}),(0,c.jsx)(sB.Z,{children:"Spend"})]})}),(0,c.jsx)(sU.Z,{children:L.map(e=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:e.provider}),(0,c.jsx)(sq.Z,{children:1e-5>parseFloat(e.spend.toFixed(2))?"less than 0.00":eL(e.spend,2)})]},e.provider))})]})})]})})]})})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"All Up"}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["API Requests ",es(O.sum_api_requests)]}),(0,c.jsx)(tn.Z,{className:"h-40",data:O.daily_data,valueFormatter:es,index:"date",colors:["cyan"],categories:["api_requests"],onValueChange:e=>console.log(e)})]}),(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Tokens ",es(O.sum_total_tokens)]}),(0,c.jsx)(to.Z,{className:"h-40",data:O.daily_data,valueFormatter:es,index:"date",colors:["cyan"],categories:["total_tokens"],onValueChange:e=>console.log(e)})]})]})]}),(0,c.jsx)(c.Fragment,{children:F.map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:e.model}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["API Requests ",es(e.sum_api_requests)]}),(0,c.jsx)(tn.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["cyan"],categories:["api_requests"],valueFormatter:es,onValueChange:e=>console.log(e)})]}),(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Tokens ",es(e.sum_total_tokens)]}),(0,c.jsx)(to.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["cyan"],categories:["total_tokens"],valueFormatter:es,onValueChange:e=>console.log(e)})]})]})]},s))})]})})]})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(v.Z,{numColSpan:2,children:[(0,c.jsxs)(G.Z,{className:"mb-2",children:[(0,c.jsx)(S.Z,{children:"Total Spend Per Team"}),(0,c.jsx)(iI.Z,{data:E})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Daily Spend Per Team"}),(0,c.jsx)(to.Z,{className:"h-72",data:_,showLegend:!0,index:"date",categories:A,yAxisWidth:80,stack:!0})]})]}),(0,c.jsx)(v.Z,{numColSpan:2})]})}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)("p",{className:"mb-2 text-gray-500 italic text-[12px]",children:["Customers of your LLM API calls. Tracked when a `user` param is passed in your LLM calls"," ",(0,c.jsx)("a",{className:"text-blue-500",href:"https://docs.litellm.ai/docs/proxy/users",target:"_blank",children:"docs here"})]}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(ti,{value:B,onValueChange:e=>{K(e),el(e.from,e.to,null)}})}),(0,c.jsxs)(v.Z,{children:[(0,c.jsx)(k.Z,{children:"Select Key"}),(0,c.jsxs)(e9.Z,{defaultValue:"all-keys",children:[(0,c.jsx)(ei.Z,{value:"all-keys",onClick:()=>{el(B.from,B.to,null)},children:"All Keys"},"all-keys"),null==r?void 0:r.map((e,s)=>e&&null!==e.key_alias&&e.key_alias.length>0?(0,c.jsx)(ei.Z,{value:String(s),onClick:()=>{el(B.from,B.to,e.token)},children:e.key_alias},s):null)]})]})]}),(0,c.jsx)(G.Z,{className:"mt-4",children:(0,c.jsxs)(sz.Z,{className:"max-h-[70vh] min-h-[500px]",children:[(0,c.jsx)(sV.Z,{children:(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sB.Z,{children:"Customer"}),(0,c.jsx)(sB.Z,{children:"Spend"}),(0,c.jsx)(sB.Z,{children:"Total Events"})]})}),(0,c.jsx)(sU.Z,{children:null==g?void 0:g.map((e,s)=>(0,c.jsxs)(sK.Z,{children:[(0,c.jsx)(sq.Z,{children:e.end_user}),(0,c.jsx)(sq.Z,{children:eL(e.total_spend,2)}),(0,c.jsx)(sq.Z,{children:e.total_count})]},s))})]})})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(ti,{className:"mb-4",value:B,onValueChange:e=>{K(e),ea(e.from,e.to)}})}),(0,c.jsx)(v.Z,{children:i?(0,c.jsx)("div",{children:(0,c.jsxs)(iA.Z,{value:q,onValueChange:e=>V(e),children:[(0,c.jsx)(iT.Z,{value:"all-tags",onClick:()=>V(["all-tags"]),children:"All Tags"},"all-tags"),C&&C.filter(e=>"all-tags"!==e).map((e,s)=>(0,c.jsx)(iT.Z,{value:String(e),children:e},e))]})}):(0,c.jsx)("div",{children:(0,c.jsxs)(iA.Z,{value:q,onValueChange:e=>V(e),children:[(0,c.jsx)(iT.Z,{value:"all-tags",onClick:()=>V(["all-tags"]),children:"All Tags"},"all-tags"),C&&C.filter(e=>"all-tags"!==e).map((e,s)=>(0,c.jsxs)(ei.Z,{value:String(e),disabled:!0,children:["✨ ",e," (Enterprise only Feature)"]},e))]})})})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 h-[75vh] w-full mb-4",children:[(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Spend Per Tag"}),(0,c.jsxs)(k.Z,{children:["Get Started by Tracking cost per tag"," ",(0,c.jsx)("a",{className:"text-blue-500",href:"https://docs.litellm.ai/docs/proxy/cost_tracking",target:"_blank",children:"here"})]}),(0,c.jsx)(to.Z,{className:"h-72",data:Z,index:"name",categories:["spend"],colors:["cyan"]})]})}),(0,c.jsx)(v.Z,{numColSpan:2})]})]})]})]})})},iL=t(51853);let iM=e=>{let{responseTimeMs:s}=e;return null==s?null:(0,c.jsxs)("div",{className:"flex items-center space-x-1 text-xs text-gray-500 font-mono",children:[(0,c.jsx)("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{d:"M12 6V12L16 14M12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2Z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),(0,c.jsxs)("span",{children:[s.toFixed(0),"ms"]})]})},iO=e=>{let s=e;if("string"==typeof s)try{s=JSON.parse(s)}catch(e){}return s},iD=e=>{let{label:s,value:t}=e,[l,a]=d.useState(!1),[r,i]=d.useState(!1),n=(null==t?void 0:t.toString())||"N/A",o=n.length>50?n.substring(0,50)+"...":n;return(0,c.jsx)("tr",{className:"hover:bg-gray-50",children:(0,c.jsx)("td",{className:"px-4 py-2 align-top",colSpan:2,children:(0,c.jsxs)("div",{className:"flex items-center justify-between group",children:[(0,c.jsxs)("div",{className:"flex items-center flex-1",children:[(0,c.jsx)("button",{onClick:()=>a(!l),className:"text-gray-400 hover:text-gray-600 mr-2",children:l?"▼":"▶"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-sm text-gray-600",children:s}),(0,c.jsx)("pre",{className:"mt-1 text-sm font-mono text-gray-800 whitespace-pre-wrap",children:l?n:o})]})]}),(0,c.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(n),i(!0),setTimeout(()=>i(!1),2e3)},className:"opacity-0 group-hover:opacity-100 text-gray-400 hover:text-gray-600",children:(0,c.jsx)(iL.Z,{className:"h-4 w-4"})})]})})})},iF=e=>{var s,t,l,a,r,i,n,o,d,m,u,x,h,p;let{response:g}=e,j=null,f={},v={};try{if(null==g?void 0:g.error)try{let e="string"==typeof g.error.message?JSON.parse(g.error.message):g.error.message;j={message:(null==e?void 0:e.message)||"Unknown error",traceback:(null==e?void 0:e.traceback)||"No traceback available",litellm_params:(null==e?void 0:e.litellm_cache_params)||{},health_check_cache_params:(null==e?void 0:e.health_check_cache_params)||{}},f=iO(j.litellm_params)||{},v=iO(j.health_check_cache_params)||{}}catch(e){console.warn("Error parsing error details:",e),j={message:String(g.error.message||"Unknown error"),traceback:"Error parsing details",litellm_params:{},health_check_cache_params:{}}}else f=iO(null==g?void 0:g.litellm_cache_params)||{},v=iO(null==g?void 0:g.health_check_cache_params)||{}}catch(e){console.warn("Error in response parsing:",e),f={},v={}}let y={redis_host:(null==v?void 0:null===(l=v.redis_client)||void 0===l?void 0:null===(t=l.connection_pool)||void 0===t?void 0:null===(s=t.connection_kwargs)||void 0===s?void 0:s.host)||(null==v?void 0:null===(i=v.redis_async_client)||void 0===i?void 0:null===(r=i.connection_pool)||void 0===r?void 0:null===(a=r.connection_kwargs)||void 0===a?void 0:a.host)||(null==v?void 0:null===(n=v.connection_kwargs)||void 0===n?void 0:n.host)||(null==v?void 0:v.host)||"N/A",redis_port:(null==v?void 0:null===(m=v.redis_client)||void 0===m?void 0:null===(d=m.connection_pool)||void 0===d?void 0:null===(o=d.connection_kwargs)||void 0===o?void 0:o.port)||(null==v?void 0:null===(h=v.redis_async_client)||void 0===h?void 0:null===(x=h.connection_pool)||void 0===x?void 0:null===(u=x.connection_kwargs)||void 0===u?void 0:u.port)||(null==v?void 0:null===(p=v.connection_kwargs)||void 0===p?void 0:p.port)||(null==v?void 0:v.port)||"N/A",redis_version:(null==v?void 0:v.redis_version)||"N/A",startup_nodes:(()=>{try{var e,s,t,l,a,r,i,n,o,c,d,m,u;if(null==v?void 0:null===(e=v.redis_kwargs)||void 0===e?void 0:e.startup_nodes)return JSON.stringify(v.redis_kwargs.startup_nodes);let x=(null==v?void 0:null===(l=v.redis_client)||void 0===l?void 0:null===(t=l.connection_pool)||void 0===t?void 0:null===(s=t.connection_kwargs)||void 0===s?void 0:s.host)||(null==v?void 0:null===(i=v.redis_async_client)||void 0===i?void 0:null===(r=i.connection_pool)||void 0===r?void 0:null===(a=r.connection_kwargs)||void 0===a?void 0:a.host),h=(null==v?void 0:null===(c=v.redis_client)||void 0===c?void 0:null===(o=c.connection_pool)||void 0===o?void 0:null===(n=o.connection_kwargs)||void 0===n?void 0:n.port)||(null==v?void 0:null===(u=v.redis_async_client)||void 0===u?void 0:null===(m=u.connection_pool)||void 0===m?void 0:null===(d=m.connection_kwargs)||void 0===d?void 0:d.port);return x&&h?JSON.stringify([{host:x,port:h}]):"N/A"}catch(e){return"N/A"}})(),namespace:(null==v?void 0:v.namespace)||"N/A"};return(0,c.jsx)("div",{className:"bg-white rounded-lg shadow",children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"border-b border-gray-200 px-4",children:[(0,c.jsx)(ss.Z,{className:"px-4 py-2 text-sm font-medium text-gray-600 hover:text-gray-800",children:"Summary"}),(0,c.jsx)(ss.Z,{className:"px-4 py-2 text-sm font-medium text-gray-600 hover:text-gray-800",children:"Raw Response"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{className:"p-4",children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-6",children:[(null==g?void 0:g.status)==="healthy"?(0,c.jsx)(eb.Z,{className:"h-5 w-5 text-green-500 mr-2"}):(0,c.jsx)(ey.Z,{className:"h-5 w-5 text-red-500 mr-2"}),(0,c.jsxs)(k.Z,{className:"text-sm font-medium ".concat((null==g?void 0:g.status)==="healthy"?"text-green-500":"text-red-500"),children:["Cache Status: ",(null==g?void 0:g.status)||"unhealthy"]})]}),(0,c.jsx)("table",{className:"w-full border-collapse",children:(0,c.jsxs)("tbody",{children:[j&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("tr",{children:(0,c.jsx)("td",{colSpan:2,className:"pt-4 pb-2 font-semibold text-red-600",children:"Error Details"})}),(0,c.jsx)(iD,{label:"Error Message",value:j.message}),(0,c.jsx)(iD,{label:"Traceback",value:j.traceback})]}),(0,c.jsx)("tr",{children:(0,c.jsx)("td",{colSpan:2,className:"pt-4 pb-2 font-semibold",children:"Cache Details"})}),(0,c.jsx)(iD,{label:"Cache Configuration",value:String(null==f?void 0:f.type)}),(0,c.jsx)(iD,{label:"Ping Response",value:String(g.ping_response)}),(0,c.jsx)(iD,{label:"Set Cache Response",value:g.set_cache_response||"N/A"}),(0,c.jsx)(iD,{label:"litellm_settings.cache_params",value:JSON.stringify(f,null,2)}),(null==f?void 0:f.type)==="redis"&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("tr",{children:(0,c.jsx)("td",{colSpan:2,className:"pt-4 pb-2 font-semibold",children:"Redis Details"})}),(0,c.jsx)(iD,{label:"Redis Host",value:y.redis_host||"N/A"}),(0,c.jsx)(iD,{label:"Redis Port",value:y.redis_port||"N/A"}),(0,c.jsx)(iD,{label:"Redis Version",value:y.redis_version||"N/A"}),(0,c.jsx)(iD,{label:"Startup Nodes",value:y.startup_nodes||"N/A"}),(0,c.jsx)(iD,{label:"Namespace",value:y.namespace||"N/A"})]})]})})]})}),(0,c.jsx)(sa.Z,{className:"p-4",children:(0,c.jsx)("div",{className:"bg-gray-50 rounded-md p-4 font-mono text-sm",children:(0,c.jsx)("pre",{className:"whitespace-pre-wrap break-words overflow-auto max-h-[500px]",children:(()=>{try{let e={...g,litellm_cache_params:f,health_check_cache_params:v},s=JSON.parse(JSON.stringify(e,(e,s)=>{if("string"==typeof s)try{return JSON.parse(s)}catch(e){}return s}));return JSON.stringify(s,null,2)}catch(e){return"Error formatting JSON: "+e.message}})()})})})]})]})})},iR=e=>{let{accessToken:s,healthCheckResponse:t,runCachingHealthCheck:l,responseTimeMs:a}=e,[r,i]=d.useState(null),[n,o]=d.useState(!1),m=async()=>{o(!0);let e=performance.now();await l(),i(performance.now()-e),o(!1)};return(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)(b.Z,{onClick:m,disabled:n,className:"bg-indigo-600 hover:bg-indigo-700 disabled:bg-indigo-400 text-white text-sm px-4 py-2 rounded-md",children:n?"Running Health Check...":"Run Health Check"}),(0,c.jsx)(iM,{responseTimeMs:r})]}),t&&(0,c.jsx)(iF,{response:t})]})},iz=e=>{if(e)return e.toISOString().split("T")[0]};function iU(e){return new Intl.NumberFormat("en-US",{maximumFractionDigits:0,notation:"compact",compactDisplay:"short"}).format(e)}var iq=e=>{let{accessToken:s,token:t,userRole:l,userID:a,premiumUser:r}=e,[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)("0"),[b,_]=(0,d.useState)("0"),[N,Z]=(0,d.useState)("0"),[w,S]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[C,I]=(0,d.useState)(""),[A,T]=(0,d.useState)("");(0,d.useEffect)(()=>{s&&w&&((async()=>{p(await (0,j.adminGlobalCacheActivity)(s,iz(w.from),iz(w.to)))})(),I(new Date().toLocaleString()))},[s]);let E=Array.from(new Set(h.map(e=>{var s;return null!==(s=null==e?void 0:e.api_key)&&void 0!==s?s:""}))),P=Array.from(new Set(h.map(e=>{var s;return null!==(s=null==e?void 0:e.model)&&void 0!==s?s:""})));Array.from(new Set(h.map(e=>{var s;return null!==(s=null==e?void 0:e.call_type)&&void 0!==s?s:""})));let L=async(e,t)=>{e&&t&&s&&p(await (0,j.adminGlobalCacheActivity)(s,iz(e),iz(t)))};(0,d.useEffect)(()=>{console.log("DATA IN CACHE DASHBOARD",h);let e=h;o.length>0&&(e=e.filter(e=>o.includes(e.api_key))),u.length>0&&(e=e.filter(e=>u.includes(e.model))),console.log("before processed data in cache dashboard",e);let s=0,t=0,l=0,a=e.reduce((e,a)=>{console.log("Processing item:",a),a.call_type||(console.log("Item has no call_type:",a),a.call_type="Unknown"),s+=(a.total_rows||0)-(a.cache_hit_true_rows||0),t+=a.cache_hit_true_rows||0,l+=a.cached_completion_tokens||0;let r=e.find(e=>e.name===a.call_type);return r?(r["LLM API requests"]+=(a.total_rows||0)-(a.cache_hit_true_rows||0),r["Cache hit"]+=a.cache_hit_true_rows||0,r["Cached Completion Tokens"]+=a.cached_completion_tokens||0,r["Generated Completion Tokens"]+=a.generated_completion_tokens||0):e.push({name:a.call_type,"LLM API requests":(a.total_rows||0)-(a.cache_hit_true_rows||0),"Cache hit":a.cache_hit_true_rows||0,"Cached Completion Tokens":a.cached_completion_tokens||0,"Generated Completion Tokens":a.generated_completion_tokens||0}),e},[]);f(iU(t)),_(iU(l));let r=t+s;r>0?Z((t/r*100).toFixed(2)):Z("0"),n(a),console.log("PROCESSED DATA IN CACHE DASHBOARD",a)},[o,u,w,h]);let M=async()=>{try{eo.Z.info("Running cache health check..."),T("");let e=await (0,j.cachingHealthCheckCall)(null!==s?s:"");console.log("CACHING HEALTH CHECK RESPONSE",e),T(e)}catch(s){let e;if(console.error("Error running health check:",s),s&&s.message)try{let t=JSON.parse(s.message);t.error&&(t=t.error),e=t}catch(t){e={message:s.message}}else e={message:"Unknown error occurred"};T({error:e})}};return(0,c.jsxs)(st.Z,{className:"gap-2 p-8 h-full w-full mt-2 mb-8",children:[(0,c.jsxs)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(ss.Z,{children:"Cache Analytics"}),(0,c.jsx)(ss.Z,{children:(0,c.jsx)("pre",{children:"Cache Health"})})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[C&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",C]}),(0,c.jsx)(sR.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center",onClick:()=>{I(new Date().toLocaleString())}})]})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(y.Z,{numItems:3,className:"gap-4 mt-4",children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(iA.Z,{placeholder:"Select API Keys",value:o,onValueChange:m,children:E.map(e=>(0,c.jsx)(iT.Z,{value:e,children:e},e))})}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(iA.Z,{placeholder:"Select Models",value:u,onValueChange:x,children:P.map(e=>(0,c.jsx)(iT.Z,{value:e,children:e},e))})}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(ti,{value:w,onValueChange:e=>{S(e),L(e.from,e.to)}})})]}),(0,c.jsxs)("div",{className:"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3 mt-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("p",{className:"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content",children:"Cache Hit Ratio"}),(0,c.jsx)("div",{className:"mt-2 flex items-baseline space-x-2.5",children:(0,c.jsxs)("p",{className:"text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong",children:[N,"%"]})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("p",{className:"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content",children:"Cache Hits"}),(0,c.jsx)("div",{className:"mt-2 flex items-baseline space-x-2.5",children:(0,c.jsx)("p",{className:"text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong",children:g})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("p",{className:"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content",children:"Cached Tokens"}),(0,c.jsx)("div",{className:"mt-2 flex items-baseline space-x-2.5",children:(0,c.jsx)("p",{className:"text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong",children:b})})]})]}),(0,c.jsx)(sX.Z,{className:"mt-4",children:"Cache Hits vs API Requests"}),(0,c.jsx)(to.Z,{title:"Cache Hits vs API Requests",data:i,stack:!0,index:"name",valueFormatter:iU,categories:["LLM API requests","Cache hit"],colors:["sky","teal"],yAxisWidth:48}),(0,c.jsx)(sX.Z,{className:"mt-4",children:"Cached Completion Tokens vs Generated Completion Tokens"}),(0,c.jsx)(to.Z,{className:"mt-6",data:i,stack:!0,index:"name",valueFormatter:iU,categories:["Generated Completion Tokens","Cached Completion Tokens"],colors:["sky","teal"],yAxisWidth:48})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(iR,{accessToken:s,healthCheckResponse:A,runCachingHealthCheck:M})})]})]})},iV=t(91810);(a=n||(n={})).PresidioPII="Presidio PII",a.Bedrock="Bedrock Guardrail",a.Lakera="Lakera";let iB={},iK=e=>{let s={};return s.PresidioPII="Presidio PII",s.Bedrock="Bedrock Guardrail",s.Lakera="Lakera",Object.entries(e).forEach(e=>{let[t,l]=e;l&&"object"==typeof l&&"ui_friendly_name"in l&&(s[t.split("_").map((e,s)=>e.charAt(0).toUpperCase()+e.slice(1)).join("")]=l.ui_friendly_name)}),iB=s,s},iG=()=>Object.keys(iB).length>0?iB:n,iH={PresidioPII:"presidio",Bedrock:"bedrock",Lakera:"lakera_v2"},iY=e=>{Object.entries(e).forEach(e=>{let[s,t]=e;t&&"object"==typeof t&&"ui_friendly_name"in t&&(iH[s.split("_").map((e,s)=>e.charAt(0).toUpperCase()+e.slice(1)).join("")]=s)})},iJ=e=>!!e&&"Presidio PII"===iG()[e],iW="../ui/assets/logos/",i$={"Presidio PII":"".concat(iW,"presidio.png"),"Bedrock Guardrail":"".concat(iW,"bedrock.svg"),Lakera:"".concat(iW,"lakeraai.jpeg"),"Azure Content Safety Prompt Shield":"".concat(iW,"presidio.png"),"Azure Content Safety Text Moderation":"".concat(iW,"presidio.png")},iQ=e=>{if(!e)return{logo:"",displayName:"-"};let s=Object.keys(iH).find(s=>iH[s].toLowerCase()===e.toLowerCase());if(!s)return{logo:"",displayName:e};let t=iG()[s];return{logo:i$[t]||"",displayName:t||e}};var iX=t(33866),i0=t(97416),i1=t(10798),i2=t(49638);let{Text:i4}=en.default,{Option:i5}=I.default,i3=e=>e.replace(/_/g," "),i6=e=>{switch(e){case"MASK":return(0,c.jsx)(i0.Z,{style:{marginRight:4}});case"BLOCK":return(0,c.jsx)(ll.Z,{style:{marginRight:4}});default:return null}},i8=e=>{let{categories:s,selectedCategories:t,onChange:l}=e;return(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-2",children:[(0,c.jsx)(i1.Z,{className:"text-gray-500 mr-1"}),(0,c.jsx)(i4,{className:"text-gray-500 font-medium",children:"Filter by category"})]}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select categories to filter by",style:{width:"100%"},onChange:l,value:t,allowClear:!0,showSearch:!0,optionFilterProp:"children",className:"mb-4",tagRender:e=>(0,c.jsx)(ls.Z,{color:"blue",closable:e.closable,onClose:e.onClose,className:"mr-2 mb-2",children:e.label}),children:s.map(e=>(0,c.jsx)(i5,{value:e.category,children:e.category},e.category))})]})},i7=e=>{let{onSelectAll:s,onUnselectAll:t,hasSelectedEntities:l}=e;return(0,c.jsxs)("div",{className:"bg-gray-50 p-5 rounded-lg mb-6 border border-gray-200 shadow-sm",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(i4,{strong:!0,className:"text-gray-700 text-base",children:"Quick Actions"}),(0,c.jsx)(B.Z,{title:"Apply action to all PII types at once",children:(0,c.jsx)("div",{className:"ml-2 text-gray-400 cursor-help text-xs",children:"ⓘ"})})]}),(0,c.jsx)(P.ZP,{type:"default",onClick:t,disabled:!l,icon:(0,c.jsx)(i2.Z,{}),className:"border-gray-300 hover:text-red-600 hover:border-red-300",children:"Unselect All"})]}),(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsx)(P.ZP,{type:"default",onClick:()=>s("MASK"),className:"flex items-center justify-center h-10 border-blue-200 hover:border-blue-300 hover:text-blue-700 bg-blue-50 hover:bg-blue-100 text-blue-600",block:!0,icon:(0,c.jsx)(i0.Z,{}),children:"Select All & Mask"}),(0,c.jsx)(P.ZP,{type:"default",onClick:()=>s("BLOCK"),className:"flex items-center justify-center h-10 border-red-200 hover:border-red-300 hover:text-red-700 bg-red-50 hover:bg-red-100 text-red-600",block:!0,icon:(0,c.jsx)(ll.Z,{}),children:"Select All & Block"})]})]})},i9=e=>{let{entities:s,selectedEntities:t,selectedActions:l,actions:a,onEntitySelect:r,onActionSelect:i,entityToCategoryMap:n}=e;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden shadow-sm",children:[(0,c.jsxs)("div",{className:"bg-gray-50 px-5 py-3 border-b flex",children:[(0,c.jsx)(i4,{strong:!0,className:"flex-1 text-gray-700",children:"PII Type"}),(0,c.jsx)(i4,{strong:!0,className:"w-32 text-right text-gray-700",children:"Action"})]}),(0,c.jsx)("div",{className:"max-h-[400px] overflow-y-auto",children:0===s.length?(0,c.jsx)("div",{className:"py-10 text-center text-gray-500",children:"No PII types match your filter criteria"}):s.map(e=>(0,c.jsxs)("div",{className:"px-5 py-3 flex items-center justify-between hover:bg-gray-50 border-b ".concat(t.includes(e)?"bg-blue-50":""),children:[(0,c.jsxs)("div",{className:"flex items-center flex-1",children:[(0,c.jsx)(eR.Z,{checked:t.includes(e),onChange:()=>r(e),className:"mr-3"}),(0,c.jsx)(i4,{className:t.includes(e)?"font-medium text-gray-900":"text-gray-700",children:i3(e)}),n.get(e)&&(0,c.jsx)(ls.Z,{className:"ml-2 text-xs",color:"blue",children:n.get(e)})]}),(0,c.jsx)("div",{className:"w-32",children:(0,c.jsx)(I.default,{value:t.includes(e)&&l[e]||"MASK",onChange:s=>i(e,s),style:{width:120},disabled:!t.includes(e),className:"".concat(t.includes(e)?"":"opacity-50"),dropdownMatchSelectWidth:!1,children:a.map(e=>(0,c.jsx)(i5,{value:e,children:(0,c.jsxs)("div",{className:"flex items-center",children:[i6(e),e]})},e))})})]},e))})]})},{Title:ne,Text:ns}=en.default;var nt=e=>{let{entities:s,actions:t,selectedEntities:l,selectedActions:a,onEntitySelect:r,onActionSelect:i,entityCategories:n=[]}=e,[o,m]=(0,d.useState)([]),u=new Map;n.forEach(e=>{e.entities.forEach(s=>{u.set(s,e.category)})});let x=s.filter(e=>0===o.length||o.includes(u.get(e)||""));return(0,c.jsxs)("div",{className:"pii-configuration",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-5",children:[(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsx)(ne,{level:4,className:"mb-0 font-semibold text-gray-800",children:"Configure PII Protection"})}),(0,c.jsx)(iX.Z,{count:l.length,showZero:!0,style:{backgroundColor:l.length>0?"#4f46e5":"#d9d9d9"},overflowCount:999,children:(0,c.jsxs)(ns,{className:"text-gray-500",children:[l.length," items selected"]})})]}),(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(i8,{categories:n,selectedCategories:o,onChange:m}),(0,c.jsx)(i7,{onSelectAll:e=>{s.forEach(s=>{l.includes(s)||r(s),i(s,e)})},onUnselectAll:()=>{l.forEach(e=>{r(e)})},hasSelectedEntities:l.length>0})]}),(0,c.jsx)(i9,{entities:x,selectedEntities:l,selectedActions:a,actions:t,onEntitySelect:r,onActionSelect:i,entityToCategoryMap:u})]})},nl=e=>{var s;let{selectedProvider:t,accessToken:l,providerParams:a=null,value:r=null}=e,[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(a),[u,x]=(0,d.useState)(null);if((0,d.useEffect)(()=>{if(a){m(a);return}let e=async()=>{if(l){n(!0),x(null);try{let e=await (0,j.getGuardrailProviderSpecificParams)(l);console.log("Provider params API response:",e),m(e),iK(e),iY(e)}catch(e){console.error("Error fetching provider params:",e),x("Failed to load provider parameters")}finally{n(!1)}}};a||e()},[l,a]),!t)return null;if(i)return(0,c.jsx)(eF.Z,{tip:"Loading provider parameters..."});if(u)return(0,c.jsx)("div",{className:"text-red-500",children:u});let h=null===(s=iH[t])||void 0===s?void 0:s.toLowerCase(),p=o&&o[h];if(console.log("Provider key:",h),console.log("Provider fields:",p),!p||0===Object.keys(p).length)return(0,c.jsx)("div",{children:"No configuration fields available for this provider."});console.log("Value:",r);let g=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=arguments.length>2?arguments[2]:void 0;return Object.entries(e).map(e=>{let[l,a]=e,i=s?"".concat(s,".").concat(l):l,n=t?t[l]:null==r?void 0:r[l];return(console.log("Field value:",n),"ui_friendly_name"===l||"optional_params"===l&&"nested"===a.type&&a.fields)?null:"nested"===a.type&&a.fields?(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"mb-2 font-medium",children:l}),(0,c.jsx)("div",{className:"ml-4 border-l-2 border-gray-200 pl-4",children:g(a.fields,i,n)})]},i):(0,c.jsx)(A.Z.Item,{name:i,label:l,tooltip:a.description,rules:a.required?[{required:!0,message:"".concat(l," is required")}]:void 0,children:"select"===a.type&&a.options?(0,c.jsx)(I.default,{placeholder:a.description,defaultValue:n||a.default_value,children:a.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"multiselect"===a.type&&a.options?(0,c.jsx)(I.default,{mode:"multiple",placeholder:a.description,defaultValue:n||a.default_value,children:a.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"bool"===a.type||"boolean"===a.type?(0,c.jsxs)(I.default,{placeholder:a.description,defaultValue:void 0!==n?String(n):a.default_value,children:[(0,c.jsx)(I.default.Option,{value:"true",children:"True"}),(0,c.jsx)(I.default.Option,{value:"false",children:"False"})]}):"number"===a.type?(0,c.jsx)(O,{step:1,width:400,placeholder:a.description,defaultValue:void 0!==n?Number(n):void 0}):l.includes("password")||l.includes("secret")||l.includes("key")?(0,c.jsx)(eW.o,{placeholder:a.description,type:"password",defaultValue:n||""}):(0,c.jsx)(eW.o,{placeholder:a.description,type:"text",defaultValue:n||""})},i)})};return(0,c.jsx)(c.Fragment,{children:g(p)})};let{Title:na}=en.default,nr=e=>{let{field:s,fieldKey:t,fullFieldKey:l,value:a}=e,[r,i]=d.useState([]),[n,o]=d.useState(s.dict_key_options||[]);d.useEffect(()=>{if(a&&"object"==typeof a){let e=Object.keys(a);i(e.map(e=>({key:e,id:"".concat(e,"_").concat(Date.now(),"_").concat(Math.random())}))),o((s.dict_key_options||[]).filter(s=>!e.includes(s)))}},[a,s.dict_key_options]);let m=e=>{e&&(i([...r,{key:e,id:"".concat(e,"_").concat(Date.now())}]),o(n.filter(s=>s!==e)))},u=(e,s)=>{i(r.filter(s=>s.id!==e)),o([...n,s].sort())};return(0,c.jsxs)("div",{className:"space-y-3",children:[r.map(e=>(0,c.jsxs)("div",{className:"flex items-center space-x-3 p-3 border rounded-lg",children:[(0,c.jsx)("div",{className:"w-24 font-medium text-sm",children:e.key}),(0,c.jsx)("div",{className:"flex-1",children:(0,c.jsx)(A.Z.Item,{name:Array.isArray(l)?[...l,e.key]:[l,e.key],style:{marginBottom:0},initialValue:a&&"object"==typeof a?a[e.key]:void 0,normalize:"number"===s.dict_value_type?e=>{if(null==e||""===e)return;let s=Number(e);return isNaN(s)?e:s}:void 0,children:"number"===s.dict_value_type?(0,c.jsx)(O,{step:1,width:200,placeholder:"Enter ".concat(e.key," value")}):"boolean"===s.dict_value_type?(0,c.jsxs)(I.default,{placeholder:"Select ".concat(e.key," value"),children:[(0,c.jsx)(I.default.Option,{value:!0,children:"True"}),(0,c.jsx)(I.default.Option,{value:!1,children:"False"})]}):(0,c.jsx)(eW.o,{placeholder:"Enter ".concat(e.key," value"),type:"text"})})}),(0,c.jsx)("button",{type:"button",className:"text-red-500 hover:text-red-700 text-sm",onClick:()=>u(e.id,e.key),children:"Remove"})]},e.id)),n.length>0&&(0,c.jsxs)("div",{className:"flex items-center space-x-3 mt-2",children:[(0,c.jsx)(I.default,{placeholder:"Select category to configure",style:{width:200},onSelect:e=>e&&m(e),value:void 0,children:n.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}),(0,c.jsx)("span",{className:"text-sm text-gray-500",children:"Select a category to add threshold configuration"})]})]})};var ni=e=>{let{optionalParams:s,parentFieldKey:t,values:l}=e,a=(e,s)=>{let a="".concat(t,".").concat(e),r=null==l?void 0:l[e];return(console.log("value",r),"dict"===s.type&&s.dict_key_options)?(0,c.jsxs)("div",{className:"mb-8 p-6 bg-gray-50 rounded-lg border border-gray-200",children:[(0,c.jsx)("div",{className:"mb-4 font-medium text-gray-900 text-base",children:e}),(0,c.jsx)("p",{className:"text-sm text-gray-600 mb-4",children:s.description}),(0,c.jsx)(nr,{field:s,fieldKey:e,fullFieldKey:[t,e],value:r})]},a):(0,c.jsx)("div",{className:"mb-8 p-6 bg-white rounded-lg border border-gray-200 shadow-sm",children:(0,c.jsx)(A.Z.Item,{name:[t,e],label:(0,c.jsxs)("div",{className:"mb-2",children:[(0,c.jsx)("div",{className:"font-medium text-gray-900 text-base",children:e}),(0,c.jsx)("p",{className:"text-sm text-gray-600 mt-1",children:s.description})]}),rules:s.required?[{required:!0,message:"".concat(e," is required")}]:void 0,className:"mb-0",initialValue:void 0!==r?r:s.default_value,normalize:"number"===s.type?e=>{if(null==e||""===e)return;let s=Number(e);return isNaN(s)?e:s}:void 0,children:"select"===s.type&&s.options?(0,c.jsx)(I.default,{placeholder:s.description,children:s.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"multiselect"===s.type&&s.options?(0,c.jsx)(I.default,{mode:"multiple",placeholder:s.description,children:s.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"bool"===s.type||"boolean"===s.type?(0,c.jsxs)(I.default,{placeholder:s.description,children:[(0,c.jsx)(I.default.Option,{value:"true",children:"True"}),(0,c.jsx)(I.default.Option,{value:"false",children:"False"})]}):"number"===s.type?(0,c.jsx)(O,{step:1,width:400,placeholder:s.description}):e.includes("password")||e.includes("secret")||e.includes("key")?(0,c.jsx)(eW.o,{placeholder:s.description,type:"password"}):(0,c.jsx)(eW.o,{placeholder:s.description,type:"text"})})},a)};return s.fields&&0!==Object.keys(s.fields).length?(0,c.jsxs)("div",{className:"guardrail-optional-params",children:[(0,c.jsxs)("div",{className:"mb-8 pb-4 border-b border-gray-100",children:[(0,c.jsx)(na,{level:3,className:"mb-2 font-semibold text-gray-900",children:"Optional Parameters"}),(0,c.jsx)("p",{className:"text-gray-600 text-sm",children:s.description||"Configure additional settings for this guardrail provider"})]}),(0,c.jsx)("div",{className:"space-y-8",children:Object.entries(s.fields).map(e=>{let[s,t]=e;return a(s,t)})})]}):null};let{Title:nn,Text:no,Link:nc}=en.default,{Option:nd}=I.default,{Step:nm}=iV.default,nu={pre_call:"Before LLM Call - Runs before the LLM call and checks the input (Recommended)",during_call:"During LLM Call - Runs in parallel with the LLM call, with response held until check completes",post_call:"After LLM Call - Runs after the LLM call and checks only the output",logging_only:"Logging Only - Only runs on logging callbacks without affecting the LLM call",pre_mcp_call:"Before MCP Tool Call - Runs before MCP tool execution and validates tool calls",during_mcp_call:"During MCP Tool Call - Runs in parallel with MCP tool execution for monitoring"};var nx=e=>{let{visible:s,onClose:t,accessToken:l,onSuccess:a}=e,[r]=A.Z.useForm(),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(null),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)({}),[v,y]=(0,d.useState)(0),[N,Z]=(0,d.useState)(null),[w,k]=(0,d.useState)([]),[S,C]=(0,d.useState)(2),[E,P]=(0,d.useState)({});(0,d.useEffect)(()=>{l&&(async()=>{try{let[e,s]=await Promise.all([(0,j.getGuardrailUISettings)(l),(0,j.getGuardrailProviderSpecificParams)(l)]);x(e),Z(s),iK(s),iY(s)}catch(e){console.error("Error fetching guardrail data:",e),eo.Z.fromBackend("Failed to load guardrail configuration")}})()},[l]);let L=e=>{m(e),r.setFieldsValue({config:void 0,presidio_analyzer_api_base:void 0,presidio_anonymizer_api_base:void 0}),p([]),f({}),k([]),C(2),P({})},M=e=>{p(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},O=(e,s)=>{f(t=>({...t,[e]:s}))},D=async()=>{try{if(0===v&&(await r.validateFields(["guardrail_name","provider","mode","default_on"]),o)){let e=["guardrail_name","provider","mode","default_on"];"PresidioPII"===o&&e.push("presidio_analyzer_api_base","presidio_anonymizer_api_base"),await r.validateFields(e)}if(1===v&&iJ(o)&&0===h.length){eo.Z.fromBackend("Please select at least one PII entity to continue");return}y(v+1)}catch(e){console.error("Form validation failed:",e)}},F=()=>{r.resetFields(),m(null),p([]),f({}),k([]),C(2),P({}),y(0)},R=()=>{F(),t()},z=async()=>{try{n(!0),await r.validateFields();let s=r.getFieldsValue(!0),i=iH[s.provider],c={guardrail_name:s.guardrail_name,litellm_params:{guardrail:i,mode:s.mode,default_on:s.default_on},guardrail_info:{}};if("PresidioPII"===s.provider&&h.length>0){let e={};h.forEach(s=>{e[s]=g[s]||"MASK"}),c.litellm_params.pii_entities_config=e,s.presidio_analyzer_api_base&&(c.litellm_params.presidio_analyzer_api_base=s.presidio_analyzer_api_base),s.presidio_anonymizer_api_base&&(c.litellm_params.presidio_anonymizer_api_base=s.presidio_anonymizer_api_base)}else if(s.config)try{let e=JSON.parse(s.config);c.guardrail_info=e}catch(e){eo.Z.fromBackend("Invalid JSON in configuration"),n(!1);return}if(console.log("values: ",JSON.stringify(s)),N&&o){var e;let t=null===(e=iH[o])||void 0===e?void 0:e.toLowerCase();console.log("providerKey: ",t);let l=N[t]||{},a=new Set;console.log("providerSpecificParams: ",JSON.stringify(l)),Object.keys(l).forEach(e=>{"optional_params"!==e&&a.add(e)}),l.optional_params&&l.optional_params.fields&&Object.keys(l.optional_params.fields).forEach(e=>{a.add(e)}),console.log("allowedParams: ",a),a.forEach(e=>{let t=s[e];if(null==t||""===t){var l;t=null===(l=s.optional_params)||void 0===l?void 0:l[e]}null!=t&&""!==t&&(c.litellm_params[e]=t)})}if(!l)throw Error("No access token available");console.log("Sending guardrail data:",JSON.stringify(c)),await (0,j.createGuardrailCall)(l,c),eo.Z.success("Guardrail created successfully"),F(),a(),t()}catch(e){console.error("Failed to create guardrail:",e),eo.Z.fromBackend("Failed to create guardrail: "+(e instanceof Error?e.message:String(e)))}finally{n(!1)}},U=()=>{var e;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{name:"guardrail_name",label:"Guardrail Name",rules:[{required:!0,message:"Please enter a guardrail name"}],children:(0,c.jsx)(_.Z,{placeholder:"Enter a name for this guardrail"})}),(0,c.jsx)(A.Z.Item,{name:"provider",label:"Guardrail Provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,c.jsx)(I.default,{placeholder:"Select a guardrail provider",onChange:L,labelInValue:!1,optionLabelProp:"label",dropdownRender:e=>e,showSearch:!0,children:Object.entries(iG()).map(e=>{let[s,t]=e;return(0,c.jsx)(nd,{value:s,label:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[i$[t]&&(0,c.jsx)("img",{src:i$[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,c.jsx)("span",{children:t})]}),children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[i$[t]&&(0,c.jsx)("img",{src:i$[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(A.Z.Item,{name:"mode",label:"Mode",tooltip:"How the guardrail should be applied",rules:[{required:!0,message:"Please select a mode"}],children:(0,c.jsx)(I.default,{optionLabelProp:"label",mode:"multiple",children:(null==u?void 0:null===(e=u.supported_modes)||void 0===e?void 0:e.map(e=>(0,c.jsx)(nd,{value:e,label:e,children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:e}),"pre_call"===e&&(0,c.jsx)(ls.Z,{color:"green",style:{marginLeft:"8px"},children:"Recommended"})]}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu[e]})]})},e)))||(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(nd,{value:"pre_call",label:"pre_call",children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"pre_call"})," ",(0,c.jsx)(ls.Z,{color:"green",children:"Recommended"})]}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu.pre_call})]})}),(0,c.jsx)(nd,{value:"during_call",label:"during_call",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{children:(0,c.jsx)("strong",{children:"during_call"})}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu.during_call})]})}),(0,c.jsx)(nd,{value:"post_call",label:"post_call",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{children:(0,c.jsx)("strong",{children:"post_call"})}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu.post_call})]})}),(0,c.jsx)(nd,{value:"logging_only",label:"logging_only",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{children:(0,c.jsx)("strong",{children:"logging_only"})}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu.logging_only})]})})]})})}),(0,c.jsx)(A.Z.Item,{name:"default_on",label:"Always On",tooltip:"If enabled, this guardrail will be applied to all requests by default.",children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:!0,children:"Yes"}),(0,c.jsx)(I.default.Option,{value:!1,children:"No"})]})}),(0,c.jsx)(nl,{selectedProvider:o,accessToken:l,providerParams:N})]})},q=()=>u&&"PresidioPII"===o?(0,c.jsx)(nt,{entities:u.supported_entities,actions:u.supported_actions,selectedEntities:h,selectedActions:g,onEntitySelect:M,onActionSelect:O,entityCategories:u.pii_entity_categories}):null,V=()=>{var e;if(!o||!N)return null;console.log("guardrail_provider_map: ",iH),console.log("selectedProvider: ",o);let s=null===(e=iH[o])||void 0===e?void 0:e.toLowerCase(),t=N&&N[s];return t&&t.optional_params?(0,c.jsx)(ni,{optionalParams:t.optional_params,parentFieldKey:"optional_params"}):null};return(0,c.jsx)(T.Z,{title:"Add Guardrail",open:s,onCancel:R,footer:null,width:700,children:(0,c.jsxs)(A.Z,{form:r,layout:"vertical",initialValues:{mode:"pre_call",default_on:!1},children:[(0,c.jsxs)(iV.default,{current:v,className:"mb-6",children:[(0,c.jsx)(nm,{title:"Basic Info"}),(0,c.jsx)(nm,{title:iJ(o)?"PII Configuration":"Provider Configuration"})]}),(()=>{switch(v){case 0:return U();case 1:if(iJ(o))return q();return V();default:return null}})(),(0,c.jsxs)("div",{className:"flex justify-end space-x-2 mt-4",children:[v>0&&(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{y(v-1)},children:"Previous"}),v<2&&(0,c.jsx)(b.Z,{onClick:D,children:"Next"}),2===v&&(0,c.jsx)(b.Z,{onClick:z,loading:i,children:"Create Guardrail"}),(0,c.jsx)(b.Z,{variant:"secondary",onClick:R,children:"Cancel"})]})]})})};let{Title:nh,Text:np}=en.default,{Option:ng}=I.default;var nj=e=>{var s;let{visible:t,onClose:l,accessToken:a,onSuccess:r,guardrailId:i,initialValues:n}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)((null==n?void 0:n.provider)||null),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)([]),[y,N]=(0,d.useState)({});(0,d.useEffect)(()=>{(async()=>{try{if(!a)return;let e=await (0,j.getGuardrailUISettings)(a);g(e)}catch(e){console.error("Error fetching guardrail settings:",e),eo.Z.fromBackend("Failed to load guardrail settings")}})()},[a]),(0,d.useEffect)(()=>{(null==n?void 0:n.pii_entities_config)&&Object.keys(n.pii_entities_config).length>0&&(v(Object.keys(n.pii_entities_config)),N(n.pii_entities_config))},[n]);let Z=e=>{v(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},w=(e,s)=>{N(t=>({...t,[e]:s}))},k=async()=>{try{u(!0);let e=await o.validateFields(),s=iH[e.provider],t={guardrail_id:i,guardrail:{guardrail_name:e.guardrail_name,litellm_params:{guardrail:s,mode:e.mode,default_on:e.default_on},guardrail_info:{}}};if("PresidioPII"===e.provider&&f.length>0){let e={};f.forEach(s=>{e[s]=y[s]||"MASK"}),t.guardrail.litellm_params.pii_entities_config=e}else if(e.config)try{let s=JSON.parse(e.config);"Bedrock"===e.provider&&s?(s.guardrail_id&&(t.guardrail.litellm_params.guardrailIdentifier=s.guardrail_id),s.guardrail_version&&(t.guardrail.litellm_params.guardrailVersion=s.guardrail_version)):t.guardrail.guardrail_info=s}catch(e){eo.Z.fromBackend("Invalid JSON in configuration"),u(!1);return}if(!a)throw Error("No access token available");console.log("Sending guardrail update data:",JSON.stringify(t));let n=await fetch("/guardrails/".concat(i),{method:"PUT",headers:{Authorization:"Bearer ".concat(a),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok){let e=await n.text();throw Error(e||"Failed to update guardrail")}eo.Z.success("Guardrail updated successfully"),r(),l()}catch(e){console.error("Failed to update guardrail:",e),eo.Z.fromBackend("Failed to update guardrail: "+(e instanceof Error?e.message:String(e)))}finally{u(!1)}},S=()=>p&&x&&"PresidioPII"===x?(0,c.jsx)(nt,{entities:p.supported_entities,actions:p.supported_actions,selectedEntities:f,selectedActions:y,onEntitySelect:Z,onActionSelect:w,entityCategories:p.pii_entity_categories}):null;return(0,c.jsx)(T.Z,{title:"Edit Guardrail",open:t,onCancel:l,footer:null,width:700,children:(0,c.jsxs)(A.Z,{form:o,layout:"vertical",initialValues:n,children:[(0,c.jsx)(A.Z.Item,{name:"guardrail_name",label:"Guardrail Name",rules:[{required:!0,message:"Please enter a guardrail name"}],children:(0,c.jsx)(_.Z,{placeholder:"Enter a name for this guardrail"})}),(0,c.jsx)(A.Z.Item,{name:"provider",label:"Guardrail Provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,c.jsx)(I.default,{placeholder:"Select a guardrail provider",onChange:e=>{h(e),o.setFieldsValue({config:void 0}),v([]),N({})},disabled:!0,optionLabelProp:"label",children:Object.entries(iG()).map(e=>{let[s,t]=e;return(0,c.jsx)(ng,{value:s,label:t,children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[i$[t]&&(0,c.jsx)("img",{src:i$[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(A.Z.Item,{name:"mode",label:"Mode",tooltip:"How the guardrail should be applied",rules:[{required:!0,message:"Please select a mode"}],children:(0,c.jsx)(I.default,{children:(null==p?void 0:null===(s=p.supported_modes)||void 0===s?void 0:s.map(e=>(0,c.jsx)(ng,{value:e,children:e},e)))||(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ng,{value:"pre_call",children:"pre_call"}),(0,c.jsx)(ng,{value:"post_call",children:"post_call"})]})})}),(0,c.jsx)(A.Z.Item,{name:"default_on",label:"Always On",tooltip:"If enabled, this guardrail will be applied to all requests by default",valuePropName:"checked",children:(0,c.jsx)(eJ.Z,{})}),(()=>{if(!x)return null;if("PresidioPII"===x)return S();switch(x){case"Aporia":return(0,c.jsx)(A.Z.Item,{label:"Aporia Configuration",name:"config",tooltip:"JSON configuration for Aporia",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_aporia_api_key",\n "project_name": "your_project_name"\n}'})});case"AimSecurity":return(0,c.jsx)(A.Z.Item,{label:"Aim Security Configuration",name:"config",tooltip:"JSON configuration for Aim Security",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_aim_api_key"\n}'})});case"Bedrock":return(0,c.jsx)(A.Z.Item,{label:"Amazon Bedrock Configuration",name:"config",tooltip:"JSON configuration for Amazon Bedrock guardrails",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:'{\n "guardrail_id": "your_guardrail_id",\n "guardrail_version": "your_guardrail_version"\n}'})});case"GuardrailsAI":return(0,c.jsx)(A.Z.Item,{label:"Guardrails.ai Configuration",name:"config",tooltip:"JSON configuration for Guardrails.ai",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_guardrails_api_key",\n "guardrail_id": "your_guardrail_id"\n}'})});case"LakeraAI":return(0,c.jsx)(A.Z.Item,{label:"Lakera AI Configuration",name:"config",tooltip:"JSON configuration for Lakera AI",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_lakera_api_key"\n}'})});case"PromptInjection":return(0,c.jsx)(A.Z.Item,{label:"Prompt Injection Configuration",name:"config",tooltip:"JSON configuration for prompt injection detection",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:'{\n "threshold": 0.8\n}'})});default:return(0,c.jsx)(A.Z.Item,{label:"Custom Configuration",name:"config",tooltip:"JSON configuration for your custom guardrail",children:(0,c.jsx)(L.default.TextArea,{rows:4,placeholder:'{\n "key1": "value1",\n "key2": "value2"\n}'})})}})(),(0,c.jsxs)("div",{className:"flex justify-end space-x-2 mt-4",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:l,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:k,loading:m,children:"Update Guardrail"})]})]})})},nf=e=>{let{guardrailsList:s,isLoading:t,onDeleteClick:l,accessToken:a,onGuardrailUpdated:r,isAdmin:i=!1,onGuardrailClick:n}=e,[o,m]=(0,d.useState)([{id:"created_at",desc:!0}]),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(null),g=e=>e?new Date(e).toLocaleString():"-",j=[{header:"Guardrail ID",accessorKey:"guardrail_id",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>e.getValue()&&n(e.getValue()),children:e.getValue()?"".concat(String(e.getValue()).slice(0,7),"..."):""})})},{header:"Name",accessorKey:"guardrail_name",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.guardrail_name,children:(0,c.jsx)("span",{className:"text-xs font-medium",children:t.guardrail_name||"-"})})}},{header:"Provider",accessorKey:"litellm_params.guardrail",cell:e=>{let{row:s}=e,{logo:t,displayName:l}=iQ(s.original.litellm_params.guardrail);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[t&&(0,c.jsx)("img",{src:t,alt:"".concat(l," logo"),className:"w-4 h-4",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)("span",{className:"text-xs",children:l})]})}},{header:"Mode",accessorKey:"litellm_params.mode",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.litellm_params.mode})}},{header:"Default On",accessorKey:"litellm_params.default_on",cell:e=>{var s,t;let{row:l}=e,a=l.original;return(0,c.jsx)(se.Z,{color:(null===(s=a.litellm_params)||void 0===s?void 0:s.default_on)?"green":"gray",className:"text-xs font-normal",size:"xs",children:(null===(t=a.litellm_params)||void 0===t?void 0:t.default_on)?"Default On":"Default Off"})}},{header:"Created At",accessorKey:"created_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.created_at,children:(0,c.jsx)("span",{className:"text-xs",children:g(t.created_at)})})}},{header:"Updated At",accessorKey:"updated_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.updated_at,children:(0,c.jsx)("span",{className:"text-xs",children:g(t.updated_at)})})}},{id:"actions",header:"",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("div",{className:"flex space-x-2",children:(0,c.jsx)(sR.Z,{icon:W.Z,size:"sm",onClick:()=>t.guardrail_id&&l(t.guardrail_id,t.guardrail_name||"Unnamed Guardrail"),className:"cursor-pointer hover:text-red-500",tooltip:"Delete guardrail"})})}}],f=(0,sD.b7)({data:s,columns:j,state:{sorting:o},onSortingChange:m,getCoreRowModel:(0,sF.sC)(),getSortedRowModel:(0,sF.tj)(),enableSorting:!0});return(0,c.jsxs)("div",{className:"rounded-lg custom-border relative",children:[(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sz.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sV.Z,{children:f.getHeaderGroups().map(e=>(0,c.jsx)(sK.Z,{children:e.headers.map(e=>(0,c.jsx)(sB.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sD.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sv.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sU.Z,{children:t?(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sq.Z,{colSpan:j.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"Loading..."})})})}):s.length>0?f.getRowModel().rows.map(e=>(0,c.jsx)(sK.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sq.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),children:(0,sD.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sq.Z,{colSpan:j.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No guardrails found"})})})})})]})}),h&&(0,c.jsx)(nj,{visible:u,onClose:()=>x(!1),accessToken:a,onSuccess:()=>{x(!1),p(null),r()},guardrailId:h.guardrail_id||"",initialValues:{guardrail_name:h.guardrail_name||"",provider:Object.keys(iH).find(e=>iH[e]===(null==h?void 0:h.litellm_params.guardrail))||"",mode:h.litellm_params.mode,default_on:h.litellm_params.default_on,pii_entities_config:h.litellm_params.pii_entities_config,...h.guardrail_info}})]})},nv=e=>{var s,t,l,a,r,i,n,o,m,u,x;let{guardrailId:h,onClose:p,accessToken:g,isAdmin:f}=e,[v,N]=(0,d.useState)(null),[Z,w]=(0,d.useState)(null),[C,T]=(0,d.useState)(!0),[E,M]=(0,d.useState)(!1),[O]=A.Z.useForm(),[D,F]=(0,d.useState)([]),[R,z]=(0,d.useState)({}),[U,q]=(0,d.useState)(null),[V,B]=(0,d.useState)({}),H=async()=>{try{var e;if(T(!0),!g)return;let s=await (0,j.getGuardrailInfo)(g,h);if(N(s),null===(e=s.litellm_params)||void 0===e?void 0:e.pii_entities_config){let e=s.litellm_params.pii_entities_config;if(F([]),z({}),Object.keys(e).length>0){let s=[],t={};Object.entries(e).forEach(e=>{let[l,a]=e;s.push(l),t[l]="string"==typeof a?a:"MASK"}),F(s),z(t)}}else F([]),z({})}catch(e){eo.Z.fromBackend("Failed to load guardrail information"),console.error("Error fetching guardrail info:",e)}finally{T(!1)}},Y=async()=>{try{if(!g)return;let e=await (0,j.getGuardrailProviderSpecificParams)(g);w(e)}catch(e){console.error("Error fetching guardrail provider specific params:",e)}},J=async()=>{try{if(!g)return;let e=await (0,j.getGuardrailUISettings)(g);q(e)}catch(e){console.error("Error fetching guardrail UI settings:",e)}};(0,d.useEffect)(()=>{Y()},[g]),(0,d.useEffect)(()=>{H(),J()},[h,g]),(0,d.useEffect)(()=>{if(v&&O){var e;O.setFieldsValue({guardrail_name:v.guardrail_name,...v.litellm_params,guardrail_info:v.guardrail_info?JSON.stringify(v.guardrail_info,null,2):"",...(null===(e=v.litellm_params)||void 0===e?void 0:e.optional_params)&&{optional_params:v.litellm_params.optional_params}})}},[v,Z,O]);let W=async e=>{try{var s,t,l;if(!g)return;let a={litellm_params:{}};e.guardrail_name!==v.guardrail_name&&(a.guardrail_name=e.guardrail_name),e.default_on!==(null===(s=v.litellm_params)||void 0===s?void 0:s.default_on)&&(a.litellm_params.default_on=e.default_on);let r=v.guardrail_info,i=e.guardrail_info?JSON.parse(e.guardrail_info):void 0;JSON.stringify(r)!==JSON.stringify(i)&&(a.guardrail_info=i);let n=(null===(t=v.litellm_params)||void 0===t?void 0:t.pii_entities_config)||{},o={};D.forEach(e=>{o[e]=R[e]||"MASK"}),JSON.stringify(n)!==JSON.stringify(o)&&(a.litellm_params.pii_entities_config=o);let c=Object.keys(iH).find(e=>{var s;return iH[e]===(null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)});if(console.log("values: ",JSON.stringify(e)),console.log("currentProvider: ",c),Z&&c){let s=Z[null===(l=iH[c])||void 0===l?void 0:l.toLowerCase()]||{},t=new Set;console.log("providerSpecificParams: ",JSON.stringify(s)),Object.keys(s).forEach(e=>{"optional_params"!==e&&t.add(e)}),s.optional_params&&s.optional_params.fields&&Object.keys(s.optional_params.fields).forEach(e=>{t.add(e)}),console.log("allowedParams: ",t),t.forEach(s=>{var t,l;let r=e[s];(null==r||""===r)&&(r=null===(l=e.optional_params)||void 0===l?void 0:l[s]);let i=null===(t=v.litellm_params)||void 0===t?void 0:t[s];JSON.stringify(r)!==JSON.stringify(i)&&(null!=r&&""!==r?a.litellm_params[s]=r:null!=i&&""!==i&&(a.litellm_params[s]=null))})}if(0===Object.keys(a.litellm_params).length&&delete a.litellm_params,0===Object.keys(a).length){eo.Z.info("No changes detected"),M(!1);return}await (0,j.updateGuardrailCall)(g,h,a),eo.Z.success("Guardrail updated successfully"),H(),M(!1)}catch(e){console.error("Error updating guardrail:",e),eo.Z.fromBackend("Failed to update guardrail")}};if(C)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!v)return(0,c.jsx)("div",{className:"p-4",children:"Guardrail not found"});let $=e=>e?new Date(e).toLocaleString():"-",{logo:Q,displayName:X}=iQ((null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)||""),ee=async(e,s)=>{await eM(e)&&(B(e=>({...e,[s]:!0})),setTimeout(()=>{B(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:p,className:"mb-4",children:"Back to Guardrails"}),(0,c.jsx)(S.Z,{children:v.guardrail_name||"Unnamed Guardrail"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:v.guardrail_id}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:V["guardrail-id"]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>ee(v.guardrail_id,"guardrail-id"),className:"left-2 z-10 transition-all duration-200 ".concat(V["guardrail-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),f?(0,c.jsx)(ss.Z,{children:"Settings"},"settings"):(0,c.jsx)(c.Fragment,{})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Provider"}),(0,c.jsxs)("div",{className:"mt-2 flex items-center space-x-2",children:[Q&&(0,c.jsx)("img",{src:Q,alt:"".concat(X," logo"),className:"w-6 h-6",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)(S.Z,{children:X})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Mode"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:(null===(t=v.litellm_params)||void 0===t?void 0:t.mode)||"-"}),(0,c.jsx)(se.Z,{color:(null===(l=v.litellm_params)||void 0===l?void 0:l.default_on)?"green":"gray",children:(null===(a=v.litellm_params)||void 0===a?void 0:a.default_on)?"Default On":"Default Off"})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Created At"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:$(v.created_at)}),(0,c.jsxs)(k.Z,{children:["Last Updated: ",$(v.updated_at)]})]})]})]}),(null===(r=v.litellm_params)||void 0===r?void 0:r.pii_entities_config)&&Object.keys(v.litellm_params.pii_entities_config).length>0&&(0,c.jsx)(G.Z,{className:"mt-6",children:(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"PII Protection"}),(0,c.jsxs)(se.Z,{color:"blue",children:[Object.keys(v.litellm_params.pii_entities_config).length," PII entities configured"]})]})}),v.guardrail_info&&Object.keys(v.guardrail_info).length>0&&(0,c.jsxs)(G.Z,{className:"mt-6",children:[(0,c.jsx)(k.Z,{children:"Guardrail Info"}),(0,c.jsx)("div",{className:"mt-2 space-y-2",children:Object.entries(v.guardrail_info).map(e=>{let[s,t]=e;return(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(k.Z,{className:"font-medium w-1/3",children:s}),(0,c.jsx)(k.Z,{className:"w-2/3",children:"object"==typeof t?JSON.stringify(t,null,2):String(t)})]},s)})})]})]}),f&&(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Guardrail Settings"}),!E&&(0,c.jsx)(b.Z,{onClick:()=>M(!0),children:"Edit Settings"})]}),E?(0,c.jsxs)(A.Z,{form:O,onFinish:W,initialValues:{guardrail_name:v.guardrail_name,...v.litellm_params,guardrail_info:v.guardrail_info?JSON.stringify(v.guardrail_info,null,2):"",...(null===(i=v.litellm_params)||void 0===i?void 0:i.optional_params)&&{optional_params:v.litellm_params.optional_params}},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Guardrail Name",name:"guardrail_name",rules:[{required:!0,message:"Please input a guardrail name"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Default On",name:"default_on",children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:!0,children:"Yes"}),(0,c.jsx)(I.default.Option,{value:!1,children:"No"})]})}),(null===(n=v.litellm_params)||void 0===n?void 0:n.guardrail)==="presidio"&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(K.Z,{orientation:"left",children:"PII Protection"}),(0,c.jsx)("div",{className:"mb-6",children:U&&(0,c.jsx)(nt,{entities:U.supported_entities,actions:U.supported_actions,selectedEntities:D,selectedActions:R,onEntitySelect:e=>{F(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},onActionSelect:(e,s)=>{z(t=>({...t,[e]:s}))},entityCategories:U.pii_entity_categories})})]}),(0,c.jsx)(K.Z,{orientation:"left",children:"Provider Settings"}),(0,c.jsx)(nl,{selectedProvider:Object.keys(iH).find(e=>{var s;return iH[e]===(null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)})||null,accessToken:g,providerParams:Z,value:v.litellm_params}),Z&&(()=>{var e;let s=Object.keys(iH).find(e=>{var s;return iH[e]===(null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)});if(!s)return null;let t=Z[null===(e=iH[s])||void 0===e?void 0:e.toLowerCase()];return t&&t.optional_params?(0,c.jsx)(ni,{optionalParams:t.optional_params,parentFieldKey:"optional_params",values:v.litellm_params}):null})(),(0,c.jsx)(K.Z,{orientation:"left",children:"Advanced Settings"}),(0,c.jsx)(A.Z.Item,{label:"Guardrail Information",name:"guardrail_info",children:(0,c.jsx)(L.default.TextArea,{rows:5})}),(0,c.jsxs)("div",{className:"flex justify-end gap-2 mt-6",children:[(0,c.jsx)(P.ZP,{onClick:()=>M(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{children:"Save Changes"})]})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Guardrail ID"}),(0,c.jsx)("div",{className:"font-mono",children:v.guardrail_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Guardrail Name"}),(0,c.jsx)("div",{children:v.guardrail_name||"Unnamed Guardrail"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Provider"}),(0,c.jsx)("div",{children:X})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Mode"}),(0,c.jsx)("div",{children:(null===(o=v.litellm_params)||void 0===o?void 0:o.mode)||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Default On"}),(0,c.jsx)(se.Z,{color:(null===(m=v.litellm_params)||void 0===m?void 0:m.default_on)?"green":"gray",children:(null===(u=v.litellm_params)||void 0===u?void 0:u.default_on)?"Yes":"No"})]}),(null===(x=v.litellm_params)||void 0===x?void 0:x.pii_entities_config)&&Object.keys(v.litellm_params.pii_entities_config).length>0&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"PII Protection"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsxs)(se.Z,{color:"blue",children:[Object.keys(v.litellm_params.pii_entities_config).length," PII entities configured"]})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:$(v.created_at)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)("div",{children:$(v.updated_at)})]})]})]})})]})]})]})},ny=e=>{let{accessToken:s,userRole:t}=e,[l,a]=(0,d.useState)([]),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),f=!!t&&(0,eI.tY)(t),v=async()=>{if(s){o(!0);try{let e=await (0,j.getGuardrailsList)(s);console.log("guardrails: ".concat(JSON.stringify(e))),a(e.guardrails)}catch(e){console.error("Error fetching guardrails:",e)}finally{o(!1)}}};(0,d.useEffect)(()=>{v()},[s]);let y=async()=>{if(x&&s){u(!0);try{await (0,j.deleteGuardrailCall)(s,x.id),eo.Z.success('Guardrail "'.concat(x.name,'" deleted successfully')),v()}catch(e){console.error("Error deleting guardrail:",e),eo.Z.fromBackend("Failed to delete guardrail")}finally{u(!1),h(null)}}};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(b.Z,{onClick:()=>{p&&g(null),i(!0)},disabled:!s,children:"+ Add New Guardrail"})}),p?(0,c.jsx)(nv,{guardrailId:p,onClose:()=>g(null),accessToken:s,isAdmin:f}):(0,c.jsx)(nf,{guardrailsList:l,isLoading:n,onDeleteClick:(e,s)=>{h({id:e,name:s})},accessToken:s,onGuardrailUpdated:v,isAdmin:f,onGuardrailClick:e=>g(e)}),(0,c.jsx)(nx,{visible:r,onClose:()=>{i(!1)},accessToken:s,onSuccess:()=>{v()}}),x&&(0,c.jsxs)(T.Z,{title:"Delete Guardrail",open:null!==x,onOk:y,onCancel:()=>{h(null)},confirmLoading:m,okText:"Delete",okButtonProps:{danger:!0},children:[(0,c.jsxs)("p",{children:["Are you sure you want to delete guardrail: ",x.name," ?"]}),(0,c.jsx)("p",{children:"This action cannot be undone."})]})]})},nb=e=>{let{promptsList:s,isLoading:t,onPromptClick:l,onDeleteClick:a,accessToken:r,isAdmin:i}=e,[n,o]=(0,d.useState)([{id:"created_at",desc:!0}]),m=e=>e?new Date(e).toLocaleString():"-",u=[{header:"Prompt ID",accessorKey:"prompt_id",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>e.getValue()&&(null==l?void 0:l(e.getValue())),children:e.getValue()?"".concat(String(e.getValue()).slice(0,7),"..."):""})})},{header:"Created At",accessorKey:"created_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.created_at,children:(0,c.jsx)("span",{className:"text-xs",children:m(t.created_at)})})}},{header:"Updated At",accessorKey:"updated_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.updated_at,children:(0,c.jsx)("span",{className:"text-xs",children:m(t.updated_at)})})}},{header:"Type",accessorKey:"prompt_info.prompt_type",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.prompt_info.prompt_type,children:(0,c.jsx)("span",{className:"text-xs",children:t.prompt_info.prompt_type})})}},...i?[{header:"Actions",id:"actions",enableSorting:!1,cell:e=>{let{row:s}=e,t=s.original,l=t.prompt_id||"Unknown Prompt";return(0,c.jsx)("div",{className:"flex items-center gap-1",children:(0,c.jsx)(B.Z,{title:"Delete prompt",children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",color:"red",onClick:e=>{e.stopPropagation(),null==a||a(t.prompt_id,l)},icon:W.Z,className:"text-red-500 hover:text-red-700 hover:bg-red-50"})})})}}]:[]],x=(0,sD.b7)({data:s,columns:u,state:{sorting:n},onSortingChange:o,getCoreRowModel:(0,sF.sC)(),getSortedRowModel:(0,sF.tj)(),enableSorting:!0});return(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sz.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sV.Z,{children:x.getHeaderGroups().map(e=>(0,c.jsx)(sK.Z,{children:e.headers.map(e=>(0,c.jsx)(sB.Z,{className:"py-1 h-8",onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sD.ie)(e.column.columnDef.header,e.getContext())}),(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sv.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sU.Z,{children:t?(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sq.Z,{colSpan:u.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"Loading..."})})})}):s.length>0?x.getRowModel().rows.map(e=>(0,c.jsx)(sK.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sq.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap",children:(0,sD.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sq.Z,{colSpan:u.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No prompts found"})})})})})]})})})},n_=e=>{var s,t,l;let{promptId:a,onClose:r,accessToken:i,isAdmin:n,onDelete:o}=e,[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(!0),[_,N]=(0,d.useState)({}),[Z,w]=(0,d.useState)(!1),[C,I]=(0,d.useState)(!1),A=async()=>{try{if(v(!0),!i)return;let e=await (0,j.getPromptInfo)(i,a);u(e.prompt_spec),h(e.raw_prompt_template),g(e)}catch(e){eo.Z.fromBackend("Failed to load prompt information"),console.error("Error fetching prompt info:",e)}finally{v(!1)}};if((0,d.useEffect)(()=>{A()},[a,i]),f)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!m)return(0,c.jsx)("div",{className:"p-4",children:"Prompt not found"});let E=e=>e?new Date(e).toLocaleString():"-",L=async(e,s)=>{await eM(e)&&(N(e=>({...e,[s]:!0})),setTimeout(()=>{N(e=>({...e,[s]:!1}))},2e3))},M=async()=>{if(i&&m){I(!0);try{await (0,j.deletePromptCall)(i,m.prompt_id),eo.Z.success('Prompt "'.concat(m.prompt_id,'" deleted successfully')),null==o||o(),r()}catch(e){console.error("Error deleting prompt:",e),eo.Z.fromBackend("Failed to delete prompt")}finally{I(!1),w(!1)}}};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:r,className:"mb-4",children:"Back to Prompts"}),(0,c.jsxs)("div",{className:"flex justify-between items-start mb-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Prompt Details"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:m.prompt_id}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:_["prompt-id"]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>L(m.prompt_id,"prompt-id"),className:"left-2 z-10 transition-all duration-200 ".concat(_["prompt-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),n&&(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>{w(!0)},className:"flex items-center",children:"Delete Prompt"})]})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),x?(0,c.jsx)(ss.Z,{children:"Prompt Template"},"prompt-template"):(0,c.jsx)(c.Fragment,{}),n?(0,c.jsx)(ss.Z,{children:"Details"},"details"):(0,c.jsx)(c.Fragment,{}),(0,c.jsx)(ss.Z,{children:"Raw JSON"},"raw-json")]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Prompt ID"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{className:"font-mono text-sm",children:m.prompt_id})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Prompt Type"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:(null===(s=m.prompt_info)||void 0===s?void 0:s.prompt_type)||"-"}),(0,c.jsx)(se.Z,{color:"blue",className:"mt-1",children:(null===(t=m.prompt_info)||void 0===t?void 0:t.prompt_type)||"Unknown"})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Created At"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:E(m.created_at)}),(0,c.jsxs)(k.Z,{children:["Last Updated: ",E(m.updated_at)]})]})]})]}),m.litellm_params&&Object.keys(m.litellm_params).length>0&&(0,c.jsxs)(G.Z,{className:"mt-6",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"LiteLLM Parameters"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(m.litellm_params,null,2)})})]})]}),x&&(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Prompt Template"}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:_["prompt-content"]?(0,c.jsx)(sZ.Z,{size:16}):(0,c.jsx)(sw.Z,{size:16}),onClick:()=>L(x.content,"prompt-content"),className:"transition-all duration-200 ".concat(_["prompt-content"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100"),children:_["prompt-content"]?"Copied!":"Copy Content"})]}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Template ID"}),(0,c.jsx)("div",{className:"font-mono text-sm bg-gray-50 p-2 rounded",children:x.litellm_prompt_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Content"}),(0,c.jsx)("div",{className:"mt-2 p-4 bg-gray-50 rounded-md border overflow-auto max-h-96",children:(0,c.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:x.content})})]}),x.metadata&&Object.keys(x.metadata).length>0&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Template Metadata"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap overflow-auto max-h-64",children:JSON.stringify(x.metadata,null,2)})})]})]})]})}),n&&(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{className:"mb-4",children:"Prompt Details"}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompt ID"}),(0,c.jsx)("div",{className:"font-mono text-sm bg-gray-50 p-2 rounded",children:m.prompt_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompt Type"}),(0,c.jsx)("div",{children:(null===(l=m.prompt_info)||void 0===l?void 0:l.prompt_type)||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:E(m.created_at)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)("div",{children:E(m.updated_at)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"LiteLLM Parameters"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap overflow-auto max-h-96",children:JSON.stringify(m.litellm_params,null,2)})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompt Info"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(m.prompt_info,null,2)})})]})]})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Raw API Response"}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:_["raw-json"]?(0,c.jsx)(sZ.Z,{size:16}):(0,c.jsx)(sw.Z,{size:16}),onClick:()=>L(JSON.stringify(p,null,2),"raw-json"),className:"transition-all duration-200 ".concat(_["raw-json"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100"),children:_["raw-json"]?"Copied!":"Copy JSON"})]}),(0,c.jsx)("div",{className:"p-4 bg-gray-50 rounded-md border overflow-auto",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(p,null,2)})})]})})]})]}),(0,c.jsxs)(T.Z,{title:"Delete Prompt",open:Z,onOk:M,onCancel:()=>{w(!1)},confirmLoading:C,okText:"Delete",okButtonProps:{danger:!0},children:[(0,c.jsxs)("p",{children:["Are you sure you want to delete prompt: ",(0,c.jsx)("strong",{children:null==m?void 0:m.prompt_id}),"?"]}),(0,c.jsx)("p",{children:"This action cannot be undone."})]})]})};let{Option:nN}=I.default;var nZ=e=>{let{visible:s,onClose:t,accessToken:l,onSuccess:a}=e,[r]=A.Z.useForm(),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)("dotprompt"),h=()=>{r.resetFields(),m([]),x("dotprompt"),t()},p=async()=>{try{let e=await r.validateFields();if(console.log("values: ",e),!l){eo.Z.fromBackend("Access token is required");return}if("dotprompt"===u&&0===o.length){eo.Z.fromBackend("Please upload a .prompt file");return}n(!0);let s={};if("dotprompt"===u&&o.length>0){let t=o[0].originFileObj;try{let a=await (0,j.convertPromptFileToJson)(l,t);console.log("Conversion result:",a),s={prompt_id:e.prompt_id,litellm_params:{prompt_integration:"dotprompt",prompt_id:a.prompt_id,prompt_data:a.json_data},prompt_info:{prompt_type:"db"}}}catch(e){console.error("Error converting prompt file:",e),eo.Z.fromBackend("Failed to convert prompt file to JSON"),n(!1);return}}try{await (0,j.createPromptCall)(l,s),eo.Z.success("Prompt created successfully!"),h(),a()}catch(e){console.error("Error creating prompt:",e),eo.Z.fromBackend("Failed to create prompt")}}catch(e){console.error("Form validation error:",e)}finally{n(!1)}};return(0,c.jsx)(T.Z,{title:"Add New Prompt",open:s,onCancel:h,footer:[(0,c.jsx)(P.ZP,{onClick:h,children:"Cancel"},"cancel"),(0,c.jsx)(P.ZP,{loading:i,onClick:p,children:"Create Prompt"},"submit")],width:600,children:(0,c.jsxs)(A.Z,{form:r,layout:"vertical",requiredMark:!1,children:[(0,c.jsx)(A.Z.Item,{label:"Prompt ID",name:"prompt_id",rules:[{required:!0,message:"Please enter a prompt ID"},{pattern:/^[a-zA-Z0-9_-]+$/,message:"Prompt ID can only contain letters, numbers, underscores, and hyphens"}],children:(0,c.jsx)(eW.o,{placeholder:"Enter unique prompt ID (e.g., my_prompt_id)"})}),(0,c.jsx)(A.Z.Item,{label:"Prompt Integration",name:"prompt_integration",initialValue:"dotprompt",children:(0,c.jsx)(I.default,{value:u,onChange:x,children:(0,c.jsx)(nN,{value:"dotprompt",children:"dotprompt"})})}),"dotprompt"===u&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(K.Z,{}),(0,c.jsxs)(A.Z.Item,{label:"Prompt File",extra:"Upload a .prompt file that follows the Dotprompt specification",children:[(0,c.jsx)(ed.default,{beforeUpload:e=>(e.name.endsWith(".prompt")||eo.Z.fromBackend("Please upload a .prompt file"),!1),fileList:o,onChange:e=>{let{fileList:s}=e;m(s.slice(-1))},onRemove:()=>{m([])},children:(0,c.jsx)(P.ZP,{icon:(0,c.jsx)(ej.Z,{}),children:"Select .prompt File"})}),o.length>0&&(0,c.jsxs)("div",{className:"mt-2 text-sm text-gray-600",children:["Selected: ",o[0].name]})]})]})]})})},nw=e=>{let{accessToken:s,userRole:t}=e,[l,a]=(0,d.useState)([]),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)(null),f=!!t&&(0,eI.tY)(t),v=async()=>{if(s){i(!0);try{let e=await (0,j.getPromptsList)(s);console.log("prompts: ".concat(JSON.stringify(e))),a(e.prompts)}catch(e){console.error("Error fetching prompts:",e)}finally{i(!1)}}};(0,d.useEffect)(()=>{v()},[s]);let y=async()=>{if(p&&s){h(!0);try{await (0,j.deletePromptCall)(s,p.id),eo.Z.success('Prompt "'.concat(p.name,'" deleted successfully')),v()}catch(e){console.error("Error deleting prompt:",e),eo.Z.fromBackend("Failed to delete prompt")}finally{h(!1),g(null)}}};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[n?(0,c.jsx)(n_,{promptId:n,onClose:()=>o(null),accessToken:s,isAdmin:f,onDelete:v}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(b.Z,{onClick:()=>{n&&o(null),u(!0)},disabled:!s,children:"+ Add New Prompt"})}),(0,c.jsx)(nb,{promptsList:l,isLoading:r,onPromptClick:e=>{o(e)},onDeleteClick:(e,s)=>{g({id:e,name:s})},accessToken:s,isAdmin:f})]}),(0,c.jsx)(nZ,{visible:m,onClose:()=>{u(!1)},accessToken:s,onSuccess:()=>{v()}}),p&&(0,c.jsxs)(T.Z,{title:"Delete Prompt",open:null!==p,onOk:y,onCancel:()=>{g(null)},confirmLoading:x,okText:"Delete",okButtonProps:{danger:!0},children:[(0,c.jsxs)("p",{children:["Are you sure you want to delete prompt: ",p.name," ?"]}),(0,c.jsx)("p",{children:"This action cannot be undone."})]})]})},nk=e=>{let{accessToken:s}=e,[t,l]=(0,d.useState)('{\n "model": "openai/gpt-4o",\n "messages": [\n {\n "role": "system",\n "content": "You are a helpful assistant."\n },\n {\n "role": "user",\n "content": "Explain quantum computing in simple terms"\n }\n ],\n "temperature": 0.7,\n "max_tokens": 500,\n "stream": true\n}'),[a,r]=(0,d.useState)(""),[i,n]=(0,d.useState)(!1),o=(e,s,t)=>{let l=JSON.stringify(s,null,2).split("\n").map(e=>" ".concat(e)).join("\n"),a=Object.entries(t).map(e=>{let[s,t]=e;return"-H '".concat(s,": ").concat(t,"'")}).join(" \\\n ");return"curl -X POST \\\n ".concat(e," \\\n ").concat(a?"".concat(a," \\\n "):"","-H 'Content-Type: application/json' \\\n -d '{\n").concat(l,"\n }'")},m=async()=>{n(!0);try{let e;try{e=JSON.parse(t)}catch(e){eo.Z.fromBackend("Invalid JSON in request body"),n(!1);return}let l={call_type:"completion",request_body:e};if(!s){eo.Z.fromBackend("No access token found"),n(!1);return}let a=await (0,j.transformRequestCall)(s,l);if(a.raw_request_api_base&&a.raw_request_body){let e=o(a.raw_request_api_base,a.raw_request_body,a.raw_request_headers||{});r(e),eo.Z.success("Request transformed successfully")}else{let e="string"==typeof a?a:JSON.stringify(a);r(e),eo.Z.info("Transformed request received in unexpected format")}}catch(e){console.error("Error transforming request:",e),eo.Z.fromBackend("Failed to transform request")}finally{n(!1)}};return(0,c.jsxs)("div",{className:"w-full m-2",style:{overflow:"hidden"},children:[(0,c.jsx)(S.Z,{children:"Playground"}),(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"See how LiteLLM transforms your request for the specified provider."}),(0,c.jsxs)("div",{style:{display:"flex",gap:"16px",width:"100%",minWidth:0,overflow:"hidden"},className:"mt-4",children:[(0,c.jsxs)("div",{style:{flex:"1 1 50%",display:"flex",flexDirection:"column",border:"1px solid #e8e8e8",borderRadius:"8px",padding:"24px",overflow:"hidden",maxHeight:"600px",minWidth:0},children:[(0,c.jsxs)("div",{style:{marginBottom:"24px"},children:[(0,c.jsx)("h2",{style:{fontSize:"24px",fontWeight:"bold",margin:"0 0 4px 0"},children:"Original Request"}),(0,c.jsx)("p",{style:{color:"#666",margin:0},children:"The request you would send to LiteLLM /chat/completions endpoint."})]}),(0,c.jsx)("textarea",{style:{flex:"1 1 auto",width:"100%",minHeight:"240px",padding:"16px",border:"1px solid #e8e8e8",borderRadius:"6px",fontFamily:"monospace",fontSize:"14px",resize:"none",marginBottom:"24px",overflow:"auto"},value:t,onChange:e=>l(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&"Enter"===e.key&&(e.preventDefault(),m())},placeholder:"Press Cmd/Ctrl + Enter to transform"}),(0,c.jsx)("div",{style:{display:"flex",justifyContent:"flex-end",marginTop:"auto"},children:(0,c.jsxs)(P.ZP,{type:"primary",style:{backgroundColor:"#000",display:"flex",alignItems:"center",gap:"8px"},onClick:m,loading:i,children:[(0,c.jsx)("span",{children:"Transform"}),(0,c.jsx)("span",{children:"→"})]})})]}),(0,c.jsxs)("div",{style:{flex:"1 1 50%",display:"flex",flexDirection:"column",border:"1px solid #e8e8e8",borderRadius:"8px",padding:"24px",overflow:"hidden",maxHeight:"800px",minWidth:0},children:[(0,c.jsxs)("div",{style:{marginBottom:"24px"},children:[(0,c.jsx)("h2",{style:{fontSize:"24px",fontWeight:"bold",margin:"0 0 4px 0"},children:"Transformed Request"}),(0,c.jsx)("p",{style:{color:"#666",margin:0},children:"How LiteLLM transforms your request for the specified provider."}),(0,c.jsx)("br",{}),(0,c.jsx)("p",{style:{color:"#666",margin:0},className:"text-xs",children:"Note: Sensitive headers are not shown."})]}),(0,c.jsxs)("div",{style:{position:"relative",backgroundColor:"#f5f5f5",borderRadius:"6px",flex:"1 1 auto",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,c.jsx)("pre",{style:{padding:"16px",fontFamily:"monospace",fontSize:"14px",margin:0,overflow:"auto",flex:"1 1 auto"},children:a||'curl -X POST \\\n https://api.openai.com/v1/chat/completions \\\n -H \'Authorization: Bearer sk-xxx\' \\\n -H \'Content-Type: application/json\' \\\n -d \'{\n "model": "gpt-4",\n "messages": [\n {\n "role": "system",\n "content": "You are a helpful assistant."\n }\n ],\n "temperature": 0.7\n }\''}),(0,c.jsx)(P.ZP,{type:"text",icon:(0,c.jsx)(tJ.Z,{}),style:{position:"absolute",right:"8px",top:"8px"},size:"small",onClick:()=>{navigator.clipboard.writeText(a||""),eo.Z.success("Copied to clipboard")}})]})]})]}),(0,c.jsx)("div",{className:"mt-4 text-right w-full",children:(0,c.jsxs)("p",{className:"text-sm text-gray-500",children:["Found an error? File an issue"," ",(0,c.jsx)("a",{href:"https://github.com/BerriAI/litellm/issues",target:"_blank",rel:"noopener noreferrer",children:"here"}),"."]})})]})};let nS=e=>{try{let s=e.indexOf("/mcp/");if(-1===s)return{token:null,baseUrl:e};let t=e.split("/mcp/");if(2!==t.length)return{token:null,baseUrl:e};let l=t[0]+"/mcp/",a=t[1];if(!a)return{token:null,baseUrl:e};return{token:a,baseUrl:l}}catch(s){return console.error("Error parsing MCP URL:",s),{token:null,baseUrl:e}}},nC=e=>{let{token:s,baseUrl:t}=nS(e);return s?t+"...":e},nI=e=>{let{token:s}=nS(e);return{maskedUrl:nC(e),hasToken:!!s}},nA=e=>e?/^https?:\/\/[^\s/$.?#].[^\s]*$/i.test(e)?Promise.resolve():Promise.reject("Please enter a valid URL (e.g., http://service-name.domain:1234/path or https://example.com)"):Promise.resolve(),nT=e=>e&&e.includes("-")?Promise.reject("Server name cannot contain '-' (hyphen). Please use '_' (underscore) instead."):Promise.resolve(),nE=(e,s,t,l)=>[{accessorKey:"server_id",header:"Server ID",cell:e=>{let{row:t}=e;return(0,c.jsxs)("button",{onClick:()=>s(t.original.server_id),className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",children:[t.original.server_id.slice(0,7),"..."]})}},{accessorKey:"server_name",header:"Name"},{accessorKey:"alias",header:"Alias"},{id:"url",header:"URL",cell:e=>{let{row:s}=e,{maskedUrl:t}=nI(s.original.url);return(0,c.jsx)("span",{className:"font-mono text-sm",children:t})}},{accessorKey:"transport",header:"Transport",cell:e=>{let{getValue:s}=e;return(0,c.jsx)("span",{children:(s()||"http").toUpperCase()})}},{accessorKey:"auth_type",header:"Auth Type",cell:e=>{let{getValue:s}=e;return(0,c.jsx)("span",{children:s()||"none"})}},{id:"health_status",header:"Health Status",cell:e=>{let{row:s}=e,t=s.original,l=t.status||"unknown",a=t.last_health_check,r=t.health_check_error,i=(0,c.jsxs)("div",{className:"max-w-xs",children:[(0,c.jsxs)("div",{className:"font-semibold mb-1",children:["Health Status: ",l]}),a&&(0,c.jsxs)("div",{className:"text-xs mb-1",children:["Last Check: ",new Date(a).toLocaleString()]}),r&&(0,c.jsxs)("div",{className:"text-xs",children:[(0,c.jsx)("div",{className:"font-medium text-red-400 mb-1",children:"Error:"}),(0,c.jsx)("div",{className:"break-words",children:r})]}),!a&&!r&&(0,c.jsx)("div",{className:"text-xs text-gray-400",children:"No health check data available"})]});return(0,c.jsx)(B.Z,{title:i,placement:"top",children:(0,c.jsxs)("button",{className:"font-mono text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[10ch] ".concat((e=>{switch(e){case"healthy":return"text-green-500 bg-green-50 hover:bg-green-100";case"unhealthy":return"text-red-500 bg-red-50 hover:bg-red-100";default:return"text-gray-500 bg-gray-50 hover:bg-gray-100"}})(l)),children:[(0,c.jsx)("span",{className:"mr-1",children:"●"}),l.charAt(0).toUpperCase()+l.slice(1)]})})}},{id:"mcp_access_groups",header:"Access Groups",cell:e=>{let{row:s}=e,t=s.original.mcp_access_groups;if(Array.isArray(t)&&t.length>0&&"string"==typeof t[0]){let e=t.join(", ");return(0,c.jsx)(B.Z,{title:e,children:(0,c.jsx)("span",{className:"max-w-[200px] truncate block",children:e.length>30?"".concat(e.slice(0,30),"..."):e})})}return(0,c.jsx)("span",{className:"text-gray-400 italic",children:"None"})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.created_at?new Date(t.created_at).toLocaleDateString():"-"})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.updated_at?new Date(t.updated_at).toLocaleDateString():"-"})}},{id:"actions",header:"Actions",cell:e=>{let{row:s}=e;return(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sR.Z,{icon:s4.Z,size:"sm",onClick:()=>t(s.original.server_id),className:"cursor-pointer"}),(0,c.jsx)(sR.Z,{icon:W.Z,size:"sm",onClick:()=>l(s.original.server_id),className:"cursor-pointer"})]})}}];var nP=t(82376),nL=t(71437);let nM={NONE:"none",API_KEY:"api_key",BEARER_TOKEN:"bearer_token",BASIC:"basic"},nO={SSE:"sse"},nD=e=>(console.log(e),null==e)?nO.SSE:e,nF=e=>null==e?nM.NONE:e,nR=e=>nF(e)!==nM.NONE;var nz=t(62670),nU=e=>{let{value:s={},onChange:t,tools:l=[],disabled:a=!1}=e,r=(e,l)=>{let a={...s,tool_name_to_cost_per_query:{...s.tool_name_to_cost_per_query,[e]:l}};null==t||t(a)};return(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,c.jsx)(nz.Z,{className:"text-green-600"}),(0,c.jsx)(S.Z,{children:"Cost Configuration"}),(0,c.jsx)(B.Z,{title:"Configure costs for this MCP server's tool calls. Set a default rate and per-tool overrides.",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:["Default Cost per Query ($)",(0,c.jsx)(B.Z,{title:"Default cost charged for each tool call to this server.",children:(0,c.jsx)(V.Z,{className:"ml-1 text-gray-400"})})]}),(0,c.jsx)(e8.Z,{min:0,step:1e-4,precision:4,placeholder:"0.0000",value:s.default_cost_per_query,onChange:e=>{let l={...s,default_cost_per_query:e};null==t||t(l)},disabled:a,style:{width:"200px"},addonBefore:"$"}),(0,c.jsx)(k.Z,{className:"block mt-1 text-gray-500 text-sm",children:"Set a default cost for all tool calls to this server"})]}),l.length>0&&(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("label",{className:"block text-sm font-medium text-gray-700",children:["Tool-Specific Costs ($)",(0,c.jsx)(B.Z,{title:"Override the default cost for specific tools. Leave blank to use the default rate.",children:(0,c.jsx)(V.Z,{className:"ml-1 text-gray-400"})})]}),(0,c.jsx)(tE.default,{items:[{key:"1",label:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rM.Z,{className:"mr-2 text-blue-500"}),(0,c.jsx)("span",{className:"font-medium",children:"Available Tools"}),(0,c.jsx)(iX.Z,{count:l.length,style:{backgroundColor:"#52c41a",marginLeft:"8px"}})]}),children:(0,c.jsx)("div",{className:"space-y-3 max-h-64 overflow-y-auto",children:l.map((e,t)=>{var l;return(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 rounded-lg",children:[(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900",children:e.name}),e.description&&(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm block mt-1",children:e.description})]}),(0,c.jsx)("div",{className:"ml-4",children:(0,c.jsx)(e8.Z,{min:0,step:1e-4,precision:4,placeholder:"Use default",value:null===(l=s.tool_name_to_cost_per_query)||void 0===l?void 0:l[e.name],onChange:s=>r(e.name,s),disabled:a,style:{width:"120px"},addonBefore:"$"})})]},t)})})}]})]})]}),(s.default_cost_per_query||s.tool_name_to_cost_per_query&&Object.keys(s.tool_name_to_cost_per_query).length>0)&&(0,c.jsxs)("div",{className:"mt-6 p-4 bg-blue-50 border border-blue-200 rounded-lg",children:[(0,c.jsx)(k.Z,{className:"text-blue-800 font-medium",children:"Cost Summary:"}),(0,c.jsxs)("div",{className:"mt-2 space-y-1",children:[s.default_cost_per_query&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• Default cost: $",s.default_cost_per_query.toFixed(4)," per query"]}),s.tool_name_to_cost_per_query&&Object.entries(s.tool_name_to_cost_per_query).map(e=>{let[s,t]=e;return null!=t&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• ",s,": $",t.toFixed(4)," per query"]},s)})]})]})]})})};let{Panel:nq}=tE.default;var nV=e=>{let{availableAccessGroups:s,mcpServer:t,searchValue:l,setSearchValue:a,getAccessGroupOptions:r}=e,i=A.Z.useFormInstance();return(0,d.useEffect)(()=>{t&&t.extra_headers&&i.setFieldValue("extra_headers",t.extra_headers)},[t,i]),(0,c.jsx)(tE.default,{className:"bg-gray-50 border border-gray-200 rounded-lg",expandIconPosition:"end",ghost:!1,children:(0,c.jsx)(nq,{header:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Permission Management / Access Control"})]}),(0,c.jsx)("p",{className:"text-sm text-gray-600 ml-4",children:"Configure access permissions and security settings (Optional)"})]}),className:"border-0",children:(0,c.jsxs)("div",{className:"space-y-6 pt-4",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["MCP Access Groups",(0,c.jsx)(B.Z,{title:"Specify access groups for this MCP server. Users must be in at least one of these groups to access the server.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"mcp_access_groups",className:"mb-4",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"value",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.value)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},onSearch:e=>a(e),tokenSeparators:[","],options:r(),maxTagCount:"responsive",allowClear:!0})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Extra Headers",(0,c.jsx)(B.Z,{title:"Forward custom headers from incoming requests to this MCP server (e.g., Authorization, X-Custom-Header, User-Agent)",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})}),(null==t?void 0:t.extra_headers)&&t.extra_headers.length>0&&(0,c.jsxs)("span",{className:"ml-2 text-xs bg-blue-100 text-blue-700 px-2 py-1 rounded-full",children:[t.extra_headers.length," configured"]})]}),name:"extra_headers",children:(0,c.jsx)(I.default,{mode:"tags",placeholder:(null==t?void 0:t.extra_headers)&&t.extra_headers.length>0?"Currently: ".concat(t.extra_headers.join(", ")):"Enter header names (e.g., Authorization, X-Custom-Header)",className:"rounded-lg",size:"large",tokenSeparators:[","],allowClear:!0})})]})},"permissions")})},nB=t(83669);let nK=e=>{let{accessToken:s,formValues:t,enabled:l=!0}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,c]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),x=!!(t.url&&t.transport&&t.auth_type&&s),h=async()=>{if(s&&t.url){n(!0),c(null);try{let e={server_id:t.server_id||"",server_name:t.server_name||"",url:t.url,transport:t.transport,auth_type:t.auth_type,mcp_info:t.mcp_info},l=await (0,j.testMCPToolsListRequest)(s,e);if(l.tools&&!l.error)r(l.tools),c(null),l.tools.length>0&&!m&&u(!0);else{let e=l.message||"Failed to retrieve tools list";c(e),r([]),u(!1)}}catch(e){console.error("Tools fetch error:",e),c(e instanceof Error?e.message:String(e)),r([]),u(!1)}finally{n(!1)}}},p=()=>{r([]),c(null),u(!1)};return(0,d.useEffect)(()=>{l&&(x?h():p())},[t.url,t.transport,t.auth_type,s,l,x]),{tools:a,isLoadingTools:i,toolsError:o,hasShownSuccessMessage:m,canFetchTools:x,fetchTools:h,clearTools:p}};var nG=e=>{let{accessToken:s,formValues:t,allowedTools:l,existingAllowedTools:a,onAllowedToolsChange:r}=e,i=(0,d.useRef)(0),{tools:n,isLoadingTools:o,toolsError:m,canFetchTools:u}=nK({accessToken:s,formValues:t,enabled:!0});(0,d.useEffect)(()=>{if(n.length>0&&n.length!==i.current&&0===l.length){if(a&&a.length>0){let e=n.map(e=>e.name);r(a.filter(s=>e.includes(s)))}else r(n.map(e=>e.name))}i.current=n.length},[n,l.length,a,r]);let x=e=>{l.includes(e)?r(l.filter(s=>s!==e)):r([...l,e])};return u||t.url?(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)("div",{className:"flex items-center justify-between",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(rM.Z,{className:"text-blue-600"}),(0,c.jsx)(S.Z,{children:"Tool Configuration"}),n.length>0&&(0,c.jsx)(iX.Z,{count:n.length,style:{backgroundColor:"#52c41a"}})]})}),(0,c.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-3",children:(0,c.jsxs)(k.Z,{className:"text-blue-800 text-sm",children:[(0,c.jsx)("strong",{children:"Select which tools users can call:"})," Only checked tools will be available for users to invoke. Unchecked tools will be blocked from execution."]})}),o&&(0,c.jsxs)("div",{className:"flex items-center justify-center py-6",children:[(0,c.jsx)(eF.Z,{size:"large"}),(0,c.jsx)(k.Z,{className:"ml-3",children:"Loading tools..."})]}),m&&!o&&(0,c.jsxs)("div",{className:"text-center py-6 text-red-500 border rounded-lg border-dashed border-red-300 bg-red-50",children:[(0,c.jsx)(rM.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:"Unable to load tools"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm text-red-500",children:m})]}),!o&&!m&&0===n.length&&u&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,c.jsx)(rM.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{children:"No tools available for configuration"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm",children:"Connect to an MCP server with tools to configure them"})]}),!u&&t.url&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,c.jsx)(rM.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{children:"Complete required fields to configure tools"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm",children:"Fill in URL, Transport, and Authentication to load available tools"})]}),!o&&!m&&n.length>0&&(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-green-50 rounded-lg border border-green-200 flex-1",children:[(0,c.jsx)(nB.Z,{className:"text-green-600"}),(0,c.jsxs)(k.Z,{className:"text-green-700 font-medium",children:[l.length," of ",n.length," ",1===n.length?"tool":"tools"," enabled for user access"]})]}),(0,c.jsxs)("div",{className:"flex gap-2 ml-3",children:[(0,c.jsx)("button",{type:"button",onClick:()=>{r(n.map(e=>e.name))},className:"px-3 py-1.5 text-sm text-blue-600 hover:text-blue-700 hover:bg-blue-50 rounded-md transition-colors",children:"Enable All"}),(0,c.jsx)("button",{type:"button",onClick:()=>{r([])},className:"px-3 py-1.5 text-sm text-gray-600 hover:text-gray-700 hover:bg-gray-100 rounded-md transition-colors",children:"Disable All"})]})]}),(0,c.jsx)("div",{className:"space-y-2",children:n.map((e,s)=>(0,c.jsx)("div",{className:"p-4 rounded-lg border transition-colors cursor-pointer ".concat(l.includes(e.name)?"bg-blue-50 border-blue-300 hover:border-blue-400":"bg-gray-50 border-gray-200 hover:border-gray-300"),onClick:()=>x(e.name),children:(0,c.jsxs)("div",{className:"flex items-start gap-3",children:[(0,c.jsx)(eR.Z,{checked:l.includes(e.name),onChange:()=>x(e.name)}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900",children:e.name}),(0,c.jsx)("span",{className:"px-2 py-0.5 text-xs rounded-full font-medium ".concat(l.includes(e.name)?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:l.includes(e.name)?"Enabled":"Disabled"})]}),e.description&&(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm block mt-1",children:e.description}),(0,c.jsx)(k.Z,{className:"text-gray-400 text-xs block mt-1",children:l.includes(e.name)?"✓ Users can call this tool":"✗ Users cannot call this tool"})]})]})},s))})]})]})}):null},nH=e=>{let{mcpServer:s,accessToken:t,onCancel:l,onSuccess:a,availableAccessGroups:r}=e,[i]=A.Z.useForm(),[n,o]=(0,d.useState)({}),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)(!1),[y,N]=(0,d.useState)([]);(0,d.useEffect)(()=>{var e;(null===(e=s.mcp_info)||void 0===e?void 0:e.mcp_server_cost_info)&&o(s.mcp_info.mcp_server_cost_info)},[s]),(0,d.useEffect)(()=>{s.allowed_tools&&N(s.allowed_tools)},[s]),(0,d.useEffect)(()=>{if(s.mcp_access_groups){let e=s.mcp_access_groups.map(e=>"string"==typeof e?e:e.name||String(e));i.setFieldValue("mcp_access_groups",e)}},[s]),(0,d.useEffect)(()=>{Z()},[s,t]);let Z=async()=>{if(t&&s.url){h(!0);try{let e={server_id:s.server_id,server_name:s.server_name,url:s.url,transport:s.transport,auth_type:s.auth_type,mcp_info:s.mcp_info},l=await (0,j.testMCPToolsListRequest)(t,e);l.tools&&!l.error?u(l.tools):(console.error("Failed to fetch tools:",l.message),u([]))}catch(e){console.error("Tools fetch error:",e),u([])}finally{h(!1)}}},w=async e=>{if(t)try{let l=(e.mcp_access_groups||[]).map(e=>"string"==typeof e?e:e.name||String(e)),r={...e,server_id:s.server_id,mcp_info:{server_name:e.server_name||e.url,description:e.description,mcp_server_cost_info:Object.keys(n).length>0?n:null},mcp_access_groups:l,alias:e.alias,extra_headers:e.extra_headers||[],allowed_tools:y.length>0?y:null,disallowed_tools:e.disallowed_tools||[]},i=await (0,j.updateMCPServer)(t,r);eo.Z.success("MCP Server updated successfully"),a(i)}catch(e){eo.Z.fromBackend("Failed to update MCP Server"+((null==e?void 0:e.message)?": ".concat(e.message):""))}};return(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"grid w-full grid-cols-2",children:[(0,c.jsx)(ss.Z,{children:"Server Configuration"}),(0,c.jsx)(ss.Z,{children:"Cost Configuration"})]}),(0,c.jsxs)(sr.Z,{className:"mt-6",children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(A.Z,{form:i,onFinish:w,initialValues:s,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"MCP Server Name",name:"server_name",rules:[{validator:(e,s)=>nT(s)}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Alias",name:"alias",rules:[{validator:(e,s)=>nT(s)}],children:(0,c.jsx)(_.Z,{onChange:()=>v(!0)})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"description",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"MCP Server URL",name:"url",rules:[{required:!0,message:"Please enter a server URL"},{validator:(e,s)=>nA(s)}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Transport Type",name:"transport",rules:[{required:!0}],children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:"sse",children:"Server-Sent Events (SSE)"}),(0,c.jsx)(I.default.Option,{value:"http",children:"HTTP"})]})}),(0,c.jsx)(A.Z.Item,{label:"Authentication",name:"auth_type",rules:[{required:!0}],children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:"none",children:"None"}),(0,c.jsx)(I.default.Option,{value:"api_key",children:"API Key"}),(0,c.jsx)(I.default.Option,{value:"bearer_token",children:"Bearer Token"}),(0,c.jsx)(I.default.Option,{value:"basic",children:"Basic Auth"})]})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nV,{availableAccessGroups:r,mcpServer:s,searchValue:p,setSearchValue:g,getAccessGroupOptions:()=>{let e=r.map(e=>({value:e,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e})]})}));return p&&!r.some(e=>e.toLowerCase().includes(p.toLowerCase()))&&e.push({value:p,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:p}),(0,c.jsx)("span",{className:"text-gray-400 text-xs ml-1",children:"create new group"})]})}),e}})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nG,{accessToken:t,formValues:{server_id:s.server_id,server_name:s.server_name,url:s.url,transport:s.transport,auth_type:s.auth_type,mcp_info:s.mcp_info},allowedTools:y,existingAllowedTools:s.allowed_tools||null,onAllowedToolsChange:N})}),(0,c.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,c.jsx)(P.ZP,{onClick:l,children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsx)(nU,{value:n,onChange:o,tools:m,disabled:x}),(0,c.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,c.jsx)(P.ZP,{onClick:l,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:()=>i.submit(),children:"Save Changes"})]})]})})]})]})},nY=e=>{let{costConfig:s}=e,t=(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null,l=(null==s?void 0:s.tool_name_to_cost_per_query)&&Object.keys(s.tool_name_to_cost_per_query).length>0;return t||l?(0,c.jsx)("div",{className:"mt-6 pt-6 border-t border-gray-200",children:(0,c.jsxs)("div",{className:"space-y-4",children:[t&&(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Default Cost per Query"}),(0,c.jsxs)("div",{className:"text-green-600 font-mono",children:["$",s.default_cost_per_query.toFixed(4)]})]}),l&&(null==s?void 0:s.tool_name_to_cost_per_query)&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Tool-Specific Costs"}),(0,c.jsx)("div",{className:"mt-2 space-y-2",children:Object.entries(s.tool_name_to_cost_per_query).map(e=>{let[s,t]=e;return null!=t&&(0,c.jsxs)("div",{className:"flex justify-between items-center p-3 bg-gray-50 rounded-lg",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:s}),(0,c.jsxs)(k.Z,{className:"text-green-600 font-mono",children:["$",t.toFixed(4)," per query"]})]},s)})})]}),(0,c.jsxs)("div",{className:"mt-4 p-4 bg-blue-50 border border-blue-200 rounded-lg",children:[(0,c.jsx)(k.Z,{className:"text-blue-800 font-medium",children:"Cost Summary:"}),(0,c.jsxs)("div",{className:"mt-2 space-y-1",children:[t&&(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• Default cost: $",s.default_cost_per_query.toFixed(4)," per query"]}),l&&(null==s?void 0:s.tool_name_to_cost_per_query)&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• ",Object.keys(s.tool_name_to_cost_per_query).length," tool(s) with custom pricing"]})]})]})]})}):(0,c.jsx)("div",{className:"mt-6 pt-6 border-t border-gray-200",children:(0,c.jsx)("div",{className:"space-y-4",children:(0,c.jsx)("div",{className:"p-4 bg-gray-50 border border-gray-200 rounded-lg",children:(0,c.jsx)(k.Z,{className:"text-gray-600",children:"No cost configuration set for this server. Tool calls will be charged at $0.00 per tool call."})})})})};let nJ=e=>{var s,t,l,a,r;let{mcpServer:i,onBack:n,isEditing:o,isProxyAdmin:m,accessToken:u,userRole:x,userID:h,availableAccessGroups:p}=e,[g,j]=(0,d.useState)(o),[f,v]=(0,d.useState)(!1),[_,N]=(0,d.useState)({}),{maskedUrl:Z,hasToken:w}=nI(i.url),C=(e,s)=>w?s?e:Z:e,I=async(e,s)=>{await eM(e)&&(N(e=>({...e,[s]:!0})),setTimeout(()=>{N(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4 max-w-full",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",className:"mb-4",onClick:n,children:"Back to All Servers"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(S.Z,{children:i.server_name}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:_["mcp-server_name"]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>I(i.server_name,"mcp-server_name"),className:"left-2 z-10 transition-all duration-200 ".concat(_["mcp-server_name"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")}),i.alias&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{className:"ml-4 text-gray-500",children:"Alias:"}),(0,c.jsx)("span",{className:"ml-1 font-mono text-blue-600",children:i.alias}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:_["mcp-alias"]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>I(i.alias,"mcp-alias"),className:"left-2 z-10 transition-all duration-200 ".concat(_["mcp-alias"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:i.server_id}),(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:_["mcp-server-id"]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>I(i.server_id,"mcp-server-id"),className:"left-2 z-10 transition-all duration-200 ".concat(_["mcp-server-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:g?2:0,children:[(0,c.jsx)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),(0,c.jsx)(ss.Z,{children:"MCP Tools"},"tools"),...m?[(0,c.jsx)(ss.Z,{children:"Settings"},"settings")]:[]]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Transport"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{children:nD(null!==(a=i.transport)&&void 0!==a?a:void 0)})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Auth Type"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(k.Z,{children:nF(null!==(r=i.auth_type)&&void 0!==r?r:void 0)})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Host Url"}),(0,c.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"break-all overflow-wrap-anywhere",children:C(i.url,f)}),w&&(0,c.jsx)("button",{onClick:()=>v(!f),className:"p-1 hover:bg-gray-100 rounded",children:(0,c.jsx)(sR.Z,{icon:f?nP.Z:nL.Z,size:"sm",className:"text-gray-500"})})]})]})]}),(0,c.jsxs)(G.Z,{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:"Cost Configuration"}),(0,c.jsx)(nY,{costConfig:null===(s=i.mcp_info)||void 0===s?void 0:s.mcp_server_cost_info})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(om,{serverId:i.server_id,accessToken:u,auth_type:i.auth_type,userRole:x,userID:h,serverAlias:i.alias})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"MCP Server Settings"}),g?null:(0,c.jsx)(b.Z,{variant:"light",onClick:()=>j(!0),children:"Edit Settings"})]}),g?(0,c.jsx)(nH,{mcpServer:i,accessToken:u,onCancel:()=>j(!1),onSuccess:e=>{j(!1),n()},availableAccessGroups:p}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Server Name"}),(0,c.jsx)("div",{children:i.server_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Alias"}),(0,c.jsx)("div",{children:i.alias})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Description"}),(0,c.jsx)("div",{children:i.description})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"URL"}),(0,c.jsxs)("div",{className:"font-mono break-all overflow-wrap-anywhere max-w-full flex items-center gap-2",children:[C(i.url,f),w&&(0,c.jsx)("button",{onClick:()=>v(!f),className:"p-1 hover:bg-gray-100 rounded",children:(0,c.jsx)(sR.Z,{icon:f?nP.Z:nL.Z,size:"sm",className:"text-gray-500"})})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Transport"}),(0,c.jsx)("div",{children:nD(i.transport)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Extra Headers"}),(0,c.jsx)("div",{children:null===(t=i.extra_headers)||void 0===t?void 0:t.join(", ")})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Auth Type"}),(0,c.jsx)("div",{children:nF(i.auth_type)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Access Groups"}),(0,c.jsx)("div",{children:i.mcp_access_groups&&i.mcp_access_groups.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:i.mcp_access_groups.map((e,s)=>{var t;return(0,c.jsx)("span",{className:"px-2 py-1 bg-gray-100 rounded-md text-sm",children:"string"==typeof e?e:null!==(t=null==e?void 0:e.name)&&void 0!==t?t:""},s)})}):(0,c.jsx)(k.Z,{className:"text-gray-500",children:"No access groups defined"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Allowed Tools"}),(0,c.jsx)("div",{children:i.allowed_tools&&i.allowed_tools.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:i.allowed_tools.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-50 border border-blue-200 rounded-md text-sm",children:e},s))}):(0,c.jsx)(k.Z,{className:"text-gray-500",children:"All tools enabled"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Cost Configuration"}),(0,c.jsx)(nY,{costConfig:null===(l=i.mcp_info)||void 0===l?void 0:l.mcp_server_cost_info})]})]})]})})]})]})]})};var nW=e=>{let{accessToken:s,formValues:t,onToolsLoaded:l}=e,{tools:a,isLoadingTools:r,toolsError:i,canFetchTools:n,fetchTools:o}=nK({accessToken:s,formValues:t,enabled:!0});return((0,d.useEffect)(()=>{null==l||l(a)},[a,l]),n||t.url)?(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(nB.Z,{className:"text-blue-600"}),(0,c.jsx)(S.Z,{children:"Connection Status"})]}),!n&&t.url&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,c.jsx)(rM.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{children:"Complete required fields to test connection"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm",children:"Fill in URL, Transport, and Authentication to test MCP server connection"})]}),n&&(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-gray-700 font-medium",children:r?"Testing connection to MCP server...":a.length>0?"Connection successful":i?"Connection failed":"Ready to test connection"}),(0,c.jsx)("br",{}),(0,c.jsxs)(k.Z,{className:"text-gray-500 text-sm",children:["Server: ",t.url]})]}),r&&(0,c.jsxs)("div",{className:"flex items-center text-blue-600",children:[(0,c.jsx)(eF.Z,{size:"small",className:"mr-2"}),(0,c.jsx)(k.Z,{className:"text-blue-600",children:"Connecting..."})]}),!r&&!i&&a.length>0&&(0,c.jsxs)("div",{className:"flex items-center text-green-600",children:[(0,c.jsx)(nB.Z,{className:"mr-1"}),(0,c.jsx)(k.Z,{className:"text-green-600 font-medium",children:"Connected"})]}),i&&(0,c.jsxs)("div",{className:"flex items-center text-red-600",children:[(0,c.jsx)(l4.Z,{className:"mr-1"}),(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:"Failed"})]})]}),r&&(0,c.jsxs)("div",{className:"flex items-center justify-center py-6",children:[(0,c.jsx)(eF.Z,{size:"large"}),(0,c.jsx)(k.Z,{className:"ml-3",children:"Testing connection and loading tools..."})]}),i&&(0,c.jsx)(lm.Z,{message:"Connection Failed",description:i,type:"error",showIcon:!0,action:(0,c.jsx)(P.ZP,{icon:(0,c.jsx)(th.Z,{}),onClick:o,size:"small",children:"Retry"})}),!r&&0===a.length&&!i&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-500 border rounded-lg border-dashed",children:[(0,c.jsx)(nB.Z,{className:"text-2xl mb-2 text-green-500"}),(0,c.jsx)(k.Z,{className:"text-green-600 font-medium",children:"Connection successful!"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-gray-500",children:"No tools found for this MCP server"})]})]})]})}):null},n$=e=>{let{isVisible:s}=e;return s?(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Stdio Configuration (JSON)",(0,c.jsx)(B.Z,{title:"Paste your stdio MCP server configuration in JSON format. You can use the full mcpServers structure from config.yaml or just the inner server configuration.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"stdio_config",rules:[{required:!0,message:"Please enter stdio configuration"},{validator:(e,s)=>{if(!s)return Promise.resolve();try{return JSON.parse(s),Promise.resolve()}catch(e){return Promise.reject("Please enter valid JSON")}}}],children:(0,c.jsx)(L.default.TextArea,{placeholder:'{\n "mcpServers": {\n "circleci-mcp-server": {\n "command": "npx",\n "args": ["-y", "@circleci/mcp-server-circleci"],\n "env": {\n "CIRCLECI_TOKEN": "your-circleci-token",\n "CIRCLECI_BASE_URL": "https://circleci.com"\n }\n }\n }\n}',rows:12,className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500 font-mono text-sm"})}):null};let nQ="".concat("../ui/assets/logos/","mcp_logo.png");var nX=e=>{let{userRole:s,accessToken:t,onCreateSuccess:l,isModalVisible:a,setModalVisible:r,availableAccessGroups:i}=e,[n]=A.Z.useForm(),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)({}),[h,p]=(0,d.useState)({}),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)([]),[N,Z]=(0,d.useState)([]),[w,k]=(0,d.useState)(""),[S,C]=(0,d.useState)(""),[E,P]=(0,d.useState)(""),L=(e,s)=>{if(!e){P("");return}"sse"!==s||e.endsWith("/sse")?"http"!==s||e.endsWith("/mcp")?P(""):P("Typically MCP HTTP URLs end with /mcp. You can add this url but this is a warning."):P("Typically MCP SSE URLs end with /sse. You can add this url but this is a warning.")},M=async e=>{m(!0);try{let s=e.mcp_access_groups,a={};if(e.stdio_config&&"stdio"===w)try{let s=JSON.parse(e.stdio_config),t=s;if(s.mcpServers&&"object"==typeof s.mcpServers){let l=Object.keys(s.mcpServers);if(l.length>0){let a=l[0];t=s.mcpServers[a],e.server_name||(e.server_name=a.replace(/-/g,"_"))}}a={command:t.command,args:t.args,env:t.env},console.log("Parsed stdio config:",a)}catch(e){eo.Z.fromBackend("Invalid JSON in stdio configuration");return}let i={...e,...a,stdio_config:void 0,mcp_info:{server_name:e.server_name||e.url,description:e.description,mcp_server_cost_info:Object.keys(u).length>0?u:null},mcp_access_groups:s,alias:e.alias,allowed_tools:N.length>0?N:null};if(console.log("Payload: ".concat(JSON.stringify(i))),null!=t){let e=await (0,j.createMCPServer)(t,i);eo.Z.success("MCP Server created successfully"),n.resetFields(),x({}),y([]),Z([]),P(""),f(!1),r(!1),l(e)}}catch(e){eo.Z.fromBackend("Error creating MCP Server: "+e)}finally{m(!1)}},O=()=>{n.resetFields(),x({}),y([]),Z([]),P(""),f(!1),r(!1)};return(d.useEffect(()=>{if(!g&&h.server_name){let e=h.server_name.replace(/\s+/g,"_");n.setFieldsValue({alias:e}),p(s=>({...s,alias:e}))}},[h.server_name]),d.useEffect(()=>{a||p({})},[a]),(0,eI.tY)(s))?(0,c.jsx)(T.Z,{title:(0,c.jsxs)("div",{className:"flex items-center space-x-3 pb-4 border-b border-gray-100",children:[(0,c.jsx)("img",{src:nQ,alt:"MCP Logo",className:"w-8 h-8 object-contain",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"}}),(0,c.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add New MCP Server"})]}),open:a,width:1e3,onCancel:O,footer:null,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsxs)(A.Z,{form:n,onFinish:M,onValuesChange:(e,s)=>p(s),layout:"vertical",className:"space-y-6",children:[(0,c.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["MCP Server Name",(0,c.jsx)(B.Z,{title:"Best practice: Use a descriptive name that indicates the server's purpose (e.g., 'GitHub_MCP', 'Email_Service'). Hyphens '-' are not allowed; use underscores '_' instead.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"server_name",rules:[{required:!1,message:"Please enter a server name"},{validator:(e,s)=>nT(s)}],children:(0,c.jsx)(_.Z,{placeholder:"e.g., GitHub_MCP, Zapier_MCP, etc.",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Alias",(0,c.jsx)(B.Z,{title:"A short, unique identifier for this server. Defaults to the server name with spaces replaced by underscores.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"alias",rules:[{required:!1},{validator:(e,s)=>s&&s.includes("-")?Promise.reject("Alias cannot contain '-' (hyphen). Please use '_' (underscore) instead."):Promise.resolve()}],children:(0,c.jsx)(_.Z,{placeholder:"e.g., GitHub_MCP, Zapier_MCP, etc.",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500",onChange:()=>f(!0)})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Description"}),name:"description",rules:[{required:!1,message:"Please enter a server description!!!!!!!!!"}],children:(0,c.jsx)(_.Z,{placeholder:"Brief description of what this server does",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Transport Type"}),name:"transport",rules:[{required:!0,message:"Please select a transport type"}],children:(0,c.jsxs)(I.default,{placeholder:"Select transport",className:"rounded-lg",size:"large",onChange:e=>{if(k(e),"stdio"===e)n.setFieldsValue({url:void 0,auth_type:void 0}),P("");else{n.setFieldsValue({command:void 0,args:void 0,env:void 0});let s=n.getFieldValue("url");s&&L(s,e)}},value:w,children:[(0,c.jsx)(I.default.Option,{value:"http",children:"HTTP"}),(0,c.jsx)(I.default.Option,{value:"sse",children:"Server-Sent Events (SSE)"}),(0,c.jsx)(I.default.Option,{value:"stdio",children:"Standard Input/Output (stdio)"})]})}),"stdio"!==w&&(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"MCP Server URL"}),name:"url",rules:[{required:!0,message:"Please enter a server URL"},{validator:(e,s)=>nA(s)}],children:(0,c.jsxs)("div",{children:[(0,c.jsx)(_.Z,{placeholder:"https://your-mcp-server.com",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500",onChange:e=>L(e.target.value,w)}),E&&(0,c.jsx)("div",{className:"mt-1 text-red-500 text-sm font-medium",children:E})]})}),"stdio"!==w&&(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Authentication"}),name:"auth_type",rules:[{required:!0,message:"Please select an auth type"}],children:(0,c.jsxs)(I.default,{placeholder:"Select auth type",className:"rounded-lg",size:"large",children:[(0,c.jsx)(I.default.Option,{value:"none",children:"None"}),(0,c.jsx)(I.default.Option,{value:"api_key",children:"API Key"}),(0,c.jsx)(I.default.Option,{value:"bearer_token",children:"Bearer Token"}),(0,c.jsx)(I.default.Option,{value:"basic",children:"Basic Auth"})]})}),(0,c.jsx)(n$,{isVisible:"stdio"===w})]}),(0,c.jsx)("div",{className:"mt-8",children:(0,c.jsx)(nV,{availableAccessGroups:i,mcpServer:null,searchValue:S,setSearchValue:C,getAccessGroupOptions:()=>{let e=i.map(e=>({value:e,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e})]})}));return S&&!i.some(e=>e.toLowerCase().includes(S.toLowerCase()))&&e.push({value:S,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:S}),(0,c.jsx)("span",{className:"text-gray-400 text-xs ml-1",children:"create new group"})]})}),e}})}),(0,c.jsx)("div",{className:"mt-8 pt-6 border-t border-gray-200",children:(0,c.jsx)(nW,{accessToken:t,formValues:h,onToolsLoaded:y})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nG,{accessToken:t,formValues:h,allowedTools:N,existingAllowedTools:null,onAllowedToolsChange:Z})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nU,{value:u,onChange:x,tools:v.filter(e=>N.includes(e.name)),disabled:!1})}),(0,c.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:O,children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",loading:o,children:o?"Creating...":"Add MCP Server"})]})]})})}):null},n0=t(64935),n1=t(11239),n2=t(54001),n4=t(96137),n5=t(96362),n3=t(80221),n6=t(29202);let{Title:n8,Text:n7}=en.default,{Panel:n9}=tE.default,oe=e=>{let{icon:s,title:t,description:l,children:a,serverName:r,accessGroups:i=["dev"]}=e,[n,o]=(0,d.useState)(!1),m=()=>{let e={"x-litellm-api-key":"Bearer YOUR_LITELLM_API_KEY"};if(n&&r){let s=[r.replace(/\s+/g,"_"),...i].join(",");e["x-mcp-servers"]=[s]}return e};return(0,c.jsxs)(tP.Z,{className:"border border-gray-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)("span",{className:"p-2 rounded-lg bg-gray-50",children:s}),(0,c.jsxs)("div",{children:[(0,c.jsx)(n8,{level:5,className:"mb-0",children:t}),(0,c.jsx)(n7,{className:"text-gray-600",children:l})]})]}),r&&("Implementation Example"===t||"Configuration"===t)&&(0,c.jsxs)(A.Z.Item,{className:"mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(eJ.Z,{size:"small",checked:n,onChange:o}),(0,c.jsxs)(n7,{className:"text-sm",children:["Limit tools to specific MCP servers or MCP groups by passing the ",(0,c.jsx)("code",{children:"x-mcp-servers"})," header"]})]}),n&&(0,c.jsx)(lm.Z,{className:"mt-2",type:"info",showIcon:!0,message:"Two Options",description:(0,c.jsxs)("div",{children:[(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Option 1:"})," Get a specific server: ",(0,c.jsxs)("code",{children:['["',r.replace(/\s+/g,"_"),'"]']})]}),(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Option 2:"})," Get a group of MCPs: ",(0,c.jsx)("code",{children:'["dev-group"]'})]}),(0,c.jsxs)("p",{className:"mt-2 text-sm text-gray-600",children:["You can also mix both: ",(0,c.jsx)("code",{children:'["Server1,dev-group"]'})]})]})})]}),d.Children.map(a,e=>{if(d.isValidElement(e)&&e.props.hasOwnProperty("code")&&e.props.hasOwnProperty("copyKey")){let s=e.props.code;if(s&&s.includes('"headers":'))return d.cloneElement(e,{code:s.replace(/"headers":\s*{[^}]*}/,'"headers": '.concat(JSON.stringify(m(),null,8)))})}return e})]})};var os=e=>{let{currentServerAccessGroups:s=[]}=e,t=(0,j.getProxyBaseUrl)(),[l,a]=(0,d.useState)({}),[r,i]=(0,d.useState)({openai:[],litellm:[],cursor:[],http:[]}),[n]=(0,d.useState)("Zapier_MCP"),o=async(e,s)=>{await eM(e)&&(a(e=>({...e,[s]:!0})),setTimeout(()=>{a(e=>({...e,[s]:!1}))},2e3))},m=e=>{let{code:s,copyKey:t,title:a,className:r=""}=e;return(0,c.jsxs)("div",{className:"relative group",children:[a&&(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(n0.Z,{size:16,className:"text-blue-600"}),(0,c.jsx)(n7,{strong:!0,className:"text-gray-700",children:a})]}),(0,c.jsxs)(tP.Z,{className:"bg-gray-50 border border-gray-200 relative ".concat(r),children:[(0,c.jsx)(P.ZP,{type:"text",size:"small",icon:l[t]?(0,c.jsx)(sZ.Z,{size:12}):(0,c.jsx)(sw.Z,{size:12}),onClick:()=>o(s,t),className:"absolute top-2 right-2 z-10 transition-all duration-200 ".concat(l[t]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")}),(0,c.jsx)("pre",{className:"text-sm overflow-x-auto pr-10 text-gray-800 font-mono leading-relaxed",children:s})]})]})},u=e=>{let{step:s,title:t,children:l}=e;return(0,c.jsxs)("div",{className:"flex gap-4",children:[(0,c.jsx)("div",{className:"flex-shrink-0",children:(0,c.jsx)("div",{className:"w-8 h-8 bg-blue-600 text-white rounded-full flex items-center justify-center text-sm font-semibold",children:s})}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(n7,{strong:!0,className:"text-gray-800 block mb-2",children:t}),l]})]})};return(0,c.jsx)("div",{children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{className:"text-3xl font-bold text-gray-900 mb-3",children:"Connect to your MCP client"}),(0,c.jsx)(k.Z,{className:"text-lg text-gray-600",children:"Use tools directly from any MCP client with LiteLLM MCP. Enable your AI assistant to perform real-world tasks through a simple, secure connection."})]}),(0,c.jsxs)(st.Z,{className:"w-full",children:[(0,c.jsx)(sl.Z,{className:"flex justify-start mt-8 mb-6",children:(0,c.jsxs)("div",{className:"flex bg-gray-100 p-1 rounded-lg",children:[(0,c.jsx)(ss.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n0.Z,{size:18}),"OpenAI API"]})}),(0,c.jsx)(ss.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n1.Z,{size:18}),"LiteLLM Proxy"]})}),(0,c.jsx)(ss.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n3.Z,{size:18}),"Cursor"]})}),(0,c.jsx)(ss.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n6.Z,{size:18}),"Streamable HTTP"]})})]})}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-blue-50 to-indigo-50 p-6 rounded-lg border border-blue-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n0.Z,{className:"text-blue-600",size:24}),(0,c.jsx)(n8,{level:4,className:"mb-0 text-blue-900",children:"OpenAI Responses API Integration"})]}),(0,c.jsx)(n7,{className:"text-blue-700",children:"Connect OpenAI Responses API to your LiteLLM MCP server for seamless tool integration"})]}),(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsx)(oe,{icon:(0,c.jsx)(n2.Z,{className:"text-blue-600",size:16}),title:"API Key Setup",description:"Configure your OpenAI API key for authentication",children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,c.jsx)("div",{children:(0,c.jsxs)(n7,{children:["Get your API key from the"," ",(0,c.jsxs)("a",{href:"https://platform.openai.com/api-keys",target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-700 inline-flex items-center gap-1",children:["OpenAI platform ",(0,c.jsx)(n5.Z,{size:12})]})]})}),(0,c.jsx)(m,{title:"Environment Variable",code:'export OPENAI_API_KEY="sk-..."',copyKey:"openai-env"})]})}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n4.Z,{className:"text-blue-600",size:16}),title:"MCP Server Information",description:"Connection details for your LiteLLM MCP server",children:(0,c.jsx)(m,{title:"Server URL",code:"".concat(t,"/mcp"),copyKey:"openai-server-url"})}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n0.Z,{className:"text-blue-600",size:16}),title:"Implementation Example",description:"Complete cURL example for using the Responses API",serverName:"Zapier Gmail",accessGroups:["dev"],children:(0,c.jsx)(m,{code:'curl --location \'https://api.openai.com/v1/responses\' \\\n--header \'Content-Type: application/json\' \\\n--header "Authorization: Bearer $OPENAI_API_KEY" \\\n--data \'{\n "model": "gpt-4.1",\n "tools": [\n {\n "type": "mcp",\n "server_label": "litellm",\n "server_url": "'.concat(t,'/mcp",\n "require_approval": "never",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n ],\n "input": "Run available tools",\n "tool_choice": "required"\n}\''),copyKey:"openai-curl",className:"text-xs"})})]})]}),{})}),(0,c.jsx)(sa.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-emerald-50 to-green-50 p-6 rounded-lg border border-emerald-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n1.Z,{className:"text-emerald-600",size:24}),(0,c.jsx)(n8,{level:4,className:"mb-0 text-emerald-900",children:"LiteLLM Proxy API Integration"})]}),(0,c.jsx)(n7,{className:"text-emerald-700",children:"Connect to LiteLLM Proxy Responses API for seamless tool integration with multiple model providers"})]}),(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsx)(oe,{icon:(0,c.jsx)(n2.Z,{className:"text-emerald-600",size:16}),title:"API Key Setup",description:"Configure your LiteLLM Proxy API key for authentication",children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,c.jsx)("div",{children:(0,c.jsx)(n7,{children:"Get your API key from your LiteLLM Proxy dashboard or contact your administrator"})}),(0,c.jsx)(m,{title:"Environment Variable",code:'export LITELLM_API_KEY="sk-..."',copyKey:"litellm-env"})]})}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n4.Z,{className:"text-emerald-600",size:16}),title:"MCP Server Information",description:"Connection details for your LiteLLM MCP server",children:(0,c.jsx)(m,{title:"Server URL",code:"".concat(t,"/mcp"),copyKey:"litellm-server-url"})}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n0.Z,{className:"text-emerald-600",size:16}),title:"Implementation Example",description:"Complete cURL example for using the LiteLLM Proxy Responses API",serverName:n,accessGroups:["dev"],children:(0,c.jsx)(m,{code:"curl --location '".concat(t,'/v1/responses\' \\\n--header \'Content-Type: application/json\' \\\n--header "Authorization: Bearer $LITELLM_API_KEY" \\\n--data \'{\n "model": "gpt-4",\n "tools": [\n {\n "type": "mcp",\n "server_label": "litellm",\n "server_url": "').concat(t,'/mcp",\n "require_approval": "never",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n ],\n "input": "Run available tools",\n "tool_choice": "required"\n}\''),copyKey:"litellm-curl",className:"text-xs"})})]})]}),{})}),(0,c.jsx)(sa.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-purple-50 to-blue-50 p-6 rounded-lg border border-purple-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n3.Z,{className:"text-purple-600",size:24}),(0,c.jsx)(n8,{level:4,className:"mb-0 text-purple-900",children:"Cursor IDE Integration"})]}),(0,c.jsx)(n7,{className:"text-purple-700",children:"Use tools directly from Cursor IDE with LiteLLM MCP. Enable your AI assistant to perform real-world tasks without leaving your coding environment."})]}),(0,c.jsxs)(tP.Z,{className:"border border-gray-200",children:[(0,c.jsx)(n8,{level:5,className:"mb-4 text-gray-800",children:"Setup Instructions"}),(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsx)(u,{step:1,title:"Open Cursor Settings",children:(0,c.jsxs)(n7,{className:"text-gray-600",children:["Use the keyboard shortcut ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"⇧+⌘+J"})," (Mac) or"," ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Ctrl+Shift+J"})," (Windows/Linux)"]})}),(0,c.jsx)(u,{step:2,title:"Navigate to MCP Tools",children:(0,c.jsx)(n7,{className:"text-gray-600",children:'Go to the "MCP Tools" tab and click "New MCP Server"'})}),(0,c.jsxs)(u,{step:3,title:"Add Configuration",children:[(0,c.jsxs)(n7,{className:"text-gray-600 mb-3",children:["Copy the JSON configuration below and paste it into Cursor, then save with"," ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Cmd+S"})," or"," ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Ctrl+S"})]}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n0.Z,{className:"text-purple-600",size:16}),title:"Configuration",description:"Cursor MCP configuration",serverName:"Zapier Gmail",accessGroups:["dev"],children:(0,c.jsx)(m,{code:'{\n "mcpServers": {\n "Zapier_MCP": {\n "server_url": "'.concat(t,'/mcp",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n }\n}'),copyKey:"cursor-config",className:"text-xs"})})]})]})]})]}),{})}),(0,c.jsx)(sa.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-green-50 to-teal-50 p-6 rounded-lg border border-green-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n6.Z,{className:"text-green-600",size:24}),(0,c.jsx)(n8,{level:4,className:"mb-0 text-green-900",children:"Streamable HTTP Transport"})]}),(0,c.jsx)(n7,{className:"text-green-700",children:"Connect to LiteLLM MCP using HTTP transport. Compatible with any MCP client that supports HTTP streaming."})]}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n6.Z,{className:"text-green-600",size:16}),title:"Universal MCP Connection",description:"Use this URL with any MCP client that supports HTTP transport",children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,c.jsx)("div",{children:(0,c.jsx)(n7,{children:"Each MCP client supports different transports. Refer to your client documentation to determine the appropriate transport method."})}),(0,c.jsx)(m,{title:"Server URL",code:"".concat(t,"/mcp"),copyKey:"http-server-url"}),(0,c.jsx)(m,{title:"Headers Configuration",code:JSON.stringify({"x-litellm-api-key":"Bearer YOUR_LITELLM_API_KEY"},null,2),copyKey:"http-headers"}),(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(P.ZP,{type:"link",className:"p-0 h-auto text-blue-600 hover:text-blue-700",href:"https://modelcontextprotocol.io/docs/concepts/transports",icon:(0,c.jsx)(n5.Z,{size:14}),children:"Learn more about MCP transports"})})]})})]}),{})})]})]})]})})};let{Option:ot}=I.default,ol=e=>{let{isModalOpen:s,title:t,confirmDelete:l,cancelDelete:a}=e;return s?(0,c.jsx)(T.Z,{open:s,onOk:l,okType:"danger",onCancel:a,children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:t}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)("p",{children:"Are you sure you want to delete this MCP Server?"})})]})}):null};var oa=e=>{let{accessToken:s,userRole:t,userID:l}=e,{data:a,isLoading:r,refetch:i,dataUpdatedAt:n}=(0,sE.a)({queryKey:["mcpServers"],queryFn:()=>{if(!s)throw Error("Access Token required");return(0,j.fetchMCPServers)(s)},enabled:!!s});d.useEffect(()=>{a&&(console.log("MCP Servers fetched:",a),a.forEach(e=>{console.log("Server: ".concat(e.server_name||e.server_id)),console.log(" allowed_tools:",e.allowed_tools)}))},[a]);let[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(null),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)("all"),[_,N]=(0,d.useState)("all"),[Z,w]=(0,d.useState)([]),[C,A]=(0,d.useState)(!1),T="Internal User"===t,E=d.useMemo(()=>{if(!a)return[];let e=new Set,s=[];return a.forEach(t=>{t.teams&&t.teams.forEach(t=>{let l=t.team_id;e.has(l)||(e.add(l),s.push(t))})}),s},[a]),P=d.useMemo(()=>a?Array.from(new Set(a.flatMap(e=>e.mcp_access_groups).filter(e=>null!=e))):[],[a]),L=e=>{y(e),O(e,_)},M=e=>{N(e),O(v,e)},O=(e,s)=>{if(!a)return w([]);let t=a;if("personal"===e){w([]);return}"all"!==e&&(t=t.filter(s=>{var t;return null===(t=s.teams)||void 0===t?void 0:t.some(s=>s.team_id===e)})),"all"!==s&&(t=t.filter(e=>{var t;return null===(t=e.mcp_access_groups)||void 0===t?void 0:t.some(e=>"string"==typeof e?e===s:e&&e.name===s)})),w(t)};(0,d.useEffect)(()=>{O(v,_)},[n]);let D=d.useMemo(()=>nE(null!=t?t:"",e=>{p(e),f(!1)},e=>{p(e),f(!0)},F),[t]);function F(e){m(e),x(!0)}let R=async()=>{if(null!=o&&null!=s){try{await (0,j.deleteMCPServer)(s,o),eo.Z.success("Deleted MCP Server successfully"),i()}catch(e){console.error("Error deleting the mcp server:",e)}x(!1),m(null)}};return s&&t&&l?(0,c.jsxs)("div",{className:"w-full h-full p-6",children:[(0,c.jsx)(ol,{isModalOpen:u,title:"Delete MCP Server",confirmDelete:R,cancelDelete:()=>{x(!1),m(null)}}),(0,c.jsx)(nX,{userRole:t,accessToken:s,onCreateSuccess:e=>{w(s=>[...s,e]),A(!1)},isModalVisible:C,setModalVisible:A,availableAccessGroups:P}),(0,c.jsx)(S.Z,{children:"MCP Servers"}),(0,c.jsx)(k.Z,{className:"text-tremor-content mt-2",children:"Configure and manage your MCP servers"}),(0,eI.tY)(t)&&(0,c.jsx)(b.Z,{className:"mt-4 mb-4",onClick:()=>A(!0),children:"+ Add New MCP Server"}),(0,c.jsxs)(st.Z,{className:"w-full h-full",children:[(0,c.jsx)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(ss.Z,{children:"All Servers"}),(0,c.jsx)(ss.Z,{children:"Connect"})]})}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(()=>h?(0,c.jsx)(nJ,{mcpServer:Z.find(e=>e.server_id===h)||{server_id:"",server_name:"",alias:"",url:"",transport:"",auth_type:"",created_at:"",created_by:"",updated_at:"",updated_by:""},onBack:()=>{f(!1),p(null),i()},isProxyAdmin:(0,eI.tY)(t),isEditing:g,accessToken:s,userID:l,userRole:t,availableAccessGroups:P}):(0,c.jsxs)("div",{className:"w-full h-full",children:[(0,c.jsx)("div",{className:"w-full px-6",children:(0,c.jsx)("div",{className:"flex flex-col space-y-4",children:(0,c.jsx)("div",{className:"flex items-center justify-between bg-gray-50 rounded-lg p-4 border-2 border-gray-200",children:(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold text-gray-900",children:"Current Team:"}),(0,c.jsxs)(I.default,{value:v,onChange:L,style:{width:300},children:[(0,c.jsx)(ot,{value:"all",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:T?"All Available Servers":"All Servers"})]})}),(0,c.jsx)(ot,{value:"personal",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"Personal"})]})}),E.map(e=>(0,c.jsx)(ot,{value:e.team_id,children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e.team_alias||e.team_id})]})},e.team_id))]}),(0,c.jsxs)(k.Z,{className:"text-lg font-semibold text-gray-900 ml-6",children:["Access Group:",(0,c.jsx)(B.Z,{title:"An MCP Access Group is a set of users or teams that have permission to access specific MCP servers. Use access groups to control and organize who can connect to which servers.",children:(0,c.jsx)(tU.Z,{style:{marginLeft:4,color:"#888"}})})]}),(0,c.jsxs)(I.default,{value:_,onChange:M,style:{width:300},children:[(0,c.jsx)(ot,{value:"all",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"All Access Groups"})]})}),P.map(e=>(0,c.jsx)(ot,{value:e,children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e})]})},e))]})]})})})}),(0,c.jsx)("div",{className:"w-full px-6 mt-6",children:(0,c.jsx)(lN,{data:Z,columns:D,renderSubComponent:()=>(0,c.jsx)("div",{}),getRowCanExpand:()=>!1,isLoading:r,noDataMessage:"No MCP servers configured"})})]}),{})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(os,{})})]})]})]}):(console.log("Missing required authentication parameters",{accessToken:s,userRole:t,userID:l}),(0,c.jsx)("div",{className:"p-6 text-center text-gray-500",children:"Missing required authentication parameters."}))},or=t(21770);function oi(e){let{tool:s,needsAuth:t,authValue:l,onSubmit:a,isLoading:r,result:i,error:n,onClose:o}=e,[m]=A.Z.useForm(),[u,x]=d.useState("formatted"),[h,p]=d.useState(null),[g,j]=d.useState(null),f=d.useMemo(()=>"string"==typeof s.inputSchema?{type:"object",properties:{input:{type:"string",description:"Input for this tool"}},required:["input"]}:s.inputSchema,[s.inputSchema]),v=d.useMemo(()=>f.properties&&f.properties.params&&"object"===f.properties.params.type&&f.properties.params.properties?{type:"object",properties:f.properties.params.properties,required:f.properties.params.required||[]}:f,[f]);d.useEffect(()=>{h&&(i||n)&&j(Date.now()-h)},[i,n,h]);let y=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let s=document.createElement("textarea");s.value=e,s.style.position="fixed",s.style.opacity="0",document.body.appendChild(s),s.focus(),s.select();let t=document.execCommand("copy");if(document.body.removeChild(s),!t)throw Error("execCommand failed");return!0}}catch(e){return console.error("Copy failed:",e),!1}},N=async()=>{await y(JSON.stringify(i,null,2))?eo.Z.success("Result copied to clipboard"):eo.Z.fromBackend("Failed to copy result")},Z=async()=>{await y(s.name)?eo.Z.success("Tool name copied to clipboard"):eo.Z.fromBackend("Failed to copy tool name")};return(0,c.jsxs)("div",{className:"space-y-4 h-full",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between pb-3 border-b border-gray-200",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-3",children:[s.mcp_info.logo_url&&(0,c.jsx)("img",{src:s.mcp_info.logo_url,alt:"".concat(s.mcp_info.server_name," logo"),className:"w-6 h-6 object-contain"}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2 mb-1",children:[(0,c.jsx)("h2",{className:"text-lg font-semibold text-gray-900",children:"Test Tool:"}),(0,c.jsxs)("div",{className:"group inline-flex items-center space-x-1 bg-slate-50 hover:bg-slate-100 px-3 py-1 rounded-md cursor-pointer transition-colors border border-slate-200",onClick:Z,title:"Click to copy tool name",children:[(0,c.jsx)("span",{className:"font-mono text-slate-700 font-medium text-sm",children:s.name}),(0,c.jsx)("svg",{className:"w-3 h-3 text-slate-400 group-hover:text-slate-600 transition-colors",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})]})]}),(0,c.jsx)("p",{className:"text-xs text-gray-600",children:s.description}),(0,c.jsxs)("p",{className:"text-xs text-gray-500",children:["Provider: ",s.mcp_info.server_name]})]})]}),(0,c.jsx)(b.Z,{onClick:o,variant:"light",size:"sm",className:"text-gray-500 hover:text-gray-700",children:(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4 h-full",children:[(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg",children:[(0,c.jsx)("div",{className:"border-b border-gray-100 px-4 py-2",children:(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:"Input Parameters"}),(0,c.jsx)(B.Z,{title:"Configure the input parameters for this tool call",children:(0,c.jsx)(V.Z,{className:"text-gray-400 hover:text-gray-600"})})]})}),(0,c.jsx)("div",{className:"p-4",children:(0,c.jsxs)(A.Z,{form:m,onFinish:e=>{p(Date.now()),j(null);let s={};Object.entries(e).forEach(e=>{var t;let[l,a]=e,r=null===(t=v.properties)||void 0===t?void 0:t[l];if(r&&null!=a&&""!==a)switch(r.type){case"boolean":s[l]="true"===a||!0===a;break;case"number":s[l]=Number(a);break;case"string":s[l]=String(a);break;default:s[l]=a}else null!=a&&""!==a&&(s[l]=a)}),a(f.properties&&f.properties.params&&"object"===f.properties.params.type&&f.properties.params.properties?{params:s}:s)},layout:"vertical",className:"space-y-3",children:["string"==typeof s.inputSchema?(0,c.jsx)("div",{className:"space-y-3",children:(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Input ",(0,c.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"input",rules:[{required:!0,message:"Please enter input for this tool"}],className:"mb-3",children:(0,c.jsx)(_.Z,{placeholder:"Enter input for this tool",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})})}):void 0===v.properties?(0,c.jsx)("div",{className:"text-center py-6 bg-gray-50 rounded-lg border border-gray-200",children:(0,c.jsxs)("div",{className:"max-w-sm mx-auto",children:[(0,c.jsx)("h4",{className:"text-sm font-medium text-gray-900 mb-1",children:"No Parameters Required"}),(0,c.jsx)("p",{className:"text-xs text-gray-500",children:"This tool can be called without any input parameters."})]})}):(0,c.jsx)("div",{className:"space-y-3",children:Object.entries(v.properties).map(e=>{var s,t,l,a,r;let[i,n]=e;return(0,c.jsxs)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:[i," ",(null===(s=v.required)||void 0===s?void 0:s.includes(i))&&(0,c.jsx)("span",{className:"text-red-500",children:"*"}),n.description&&(0,c.jsx)(B.Z,{title:n.description,children:(0,c.jsx)(V.Z,{className:"ml-2 text-gray-400 hover:text-gray-600"})})]}),name:i,rules:[{required:null===(t=v.required)||void 0===t?void 0:t.includes(i),message:"Please enter ".concat(i)}],className:"mb-3",children:["string"===n.type&&n.enum&&(0,c.jsxs)("select",{className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors",defaultValue:n.default,children:[!(null===(l=v.required)||void 0===l?void 0:l.includes(i))&&(0,c.jsxs)("option",{value:"",children:["Select ",i]}),n.enum.map(e=>(0,c.jsx)("option",{value:e,children:e},e))]}),"string"===n.type&&!n.enum&&(0,c.jsx)(_.Z,{placeholder:n.description||"Enter ".concat(i),className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"}),"number"===n.type&&(0,c.jsx)("input",{type:"number",placeholder:n.description||"Enter ".concat(i),className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors"}),"boolean"===n.type&&(0,c.jsxs)("select",{className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors",defaultValue:(null===(a=n.default)||void 0===a?void 0:a.toString())||"",children:[!(null===(r=v.required)||void 0===r?void 0:r.includes(i))&&(0,c.jsxs)("option",{value:"",children:["Select ",i]}),(0,c.jsx)("option",{value:"true",children:"True"}),(0,c.jsx)("option",{value:"false",children:"False"})]})]},i)})}),(0,c.jsx)("div",{className:"pt-3 border-t border-gray-100",children:(0,c.jsx)(b.Z,{onClick:()=>m.submit(),disabled:r,variant:"primary",className:"w-full",loading:r,children:r?"Calling Tool...":i||n?"Call Again":"Call Tool"})})]})})]}),(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg",children:[(0,c.jsx)("div",{className:"border-b border-gray-100 px-4 py-2",children:(0,c.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:"Tool Result"})}),(0,c.jsx)("div",{className:"p-4",children:i||n||r?(0,c.jsxs)("div",{className:"space-y-3",children:[i&&!r&&!n&&(0,c.jsx)("div",{className:"p-2 bg-green-50 border border-green-200 rounded-lg",children:(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("svg",{className:"h-4 w-4 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}),(0,c.jsx)("h4",{className:"text-xs font-medium text-green-900",children:"Tool executed successfully"}),null!==g&&(0,c.jsxs)("span",{className:"text-xs text-green-600 ml-1",children:["• ",(g/1e3).toFixed(2),"s"]})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-1",children:[(0,c.jsxs)("div",{className:"flex bg-white rounded border border-green-300 p-0.5",children:[(0,c.jsx)("button",{onClick:()=>x("formatted"),className:"px-2 py-1 text-xs font-medium rounded transition-colors ".concat("formatted"===u?"bg-green-100 text-green-800":"text-green-600 hover:text-green-800"),children:"Formatted"}),(0,c.jsx)("button",{onClick:()=>x("json"),className:"px-2 py-1 text-xs font-medium rounded transition-colors ".concat("json"===u?"bg-green-100 text-green-800":"text-green-600 hover:text-green-800"),children:"JSON"})]}),(0,c.jsx)("button",{onClick:N,className:"p-1 hover:bg-green-100 rounded text-green-700",title:"Copy response",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]})]})}),(0,c.jsxs)("div",{className:"max-h-96 overflow-y-auto",children:[r&&(0,c.jsxs)("div",{className:"flex flex-col justify-center items-center h-48 text-gray-500",children:[(0,c.jsxs)("div",{className:"relative",children:[(0,c.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-gray-200"}),(0,c.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-blue-600 border-t-transparent absolute top-0"})]}),(0,c.jsx)("p",{className:"text-sm font-medium mt-3",children:"Calling tool..."}),(0,c.jsx)("p",{className:"text-xs text-gray-400 mt-1",children:"Please wait while we process your request"})]}),n&&(0,c.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-lg p-3",children:(0,c.jsxs)("div",{className:"flex items-start space-x-2",children:[(0,c.jsx)("div",{className:"flex-shrink-0",children:(0,c.jsx)("svg",{className:"h-4 w-4 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2 mb-1",children:[(0,c.jsx)("h4",{className:"text-xs font-medium text-red-900",children:"Tool Call Failed"}),null!==g&&(0,c.jsxs)("span",{className:"text-xs text-red-600",children:["• ",(g/1e3).toFixed(2),"s"]})]}),(0,c.jsx)("div",{className:"bg-white border border-red-200 rounded p-2 max-h-48 overflow-y-auto",children:(0,c.jsx)("pre",{className:"text-xs whitespace-pre-wrap text-red-700 font-mono",children:n.message})})]})]})}),i&&!r&&!n&&(0,c.jsx)("div",{className:"space-y-3",children:"formatted"===u?i.map((e,s)=>(0,c.jsxs)("div",{className:"border border-gray-200 rounded-lg overflow-hidden",children:["text"===e.type&&(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Text Response"})}),(0,c.jsx)("div",{className:"p-3",children:(0,c.jsx)("div",{className:"bg-white rounded border border-gray-200 max-h-64 overflow-y-auto",children:(0,c.jsx)("div",{className:"p-3 space-y-2",children:e.text.split("\n\n").map((e,s)=>{if(""===e.trim())return null;if(e.startsWith("##")){let t=e.replace(/^#+\s/,"");return(0,c.jsx)("div",{className:"border-b border-gray-200 pb-1 mb-2",children:(0,c.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:t})},s)}let t=/(https?:\/\/[^\s\)]+)/g;if(t.test(e)){let l=e.split(t);return(0,c.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded p-2",children:(0,c.jsx)("div",{className:"text-xs text-gray-700 leading-relaxed whitespace-pre-wrap",children:l.map((e,s)=>t.test(e)?(0,c.jsx)("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-800 underline break-all",children:e},s):e)})},s)}return e.includes("Score:")?(0,c.jsx)("div",{className:"bg-green-50 border-l-4 border-green-400 p-2 rounded-r",children:(0,c.jsx)("p",{className:"text-xs text-green-800 font-medium whitespace-pre-wrap",children:e})},s):(0,c.jsx)("div",{className:"bg-gray-50 rounded p-2 border border-gray-200",children:(0,c.jsx)("div",{className:"text-xs text-gray-700 leading-relaxed whitespace-pre-wrap font-mono",children:e})},s)}).filter(Boolean)})})})]}),"image"===e.type&&e.url&&(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Image Response"})}),(0,c.jsx)("div",{className:"p-3",children:(0,c.jsx)("div",{className:"bg-gray-50 rounded p-3 border border-gray-200",children:(0,c.jsx)("img",{src:e.url,alt:"Tool result",className:"max-w-full h-auto rounded shadow-sm"})})})]}),"embedded_resource"===e.type&&(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Embedded Resource"})}),(0,c.jsx)("div",{className:"p-3",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2 p-3 bg-blue-50 border border-blue-200 rounded",children:[(0,c.jsx)("div",{className:"flex-shrink-0",children:(0,c.jsx)("svg",{className:"h-5 w-5 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})})}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsxs)("p",{className:"text-xs font-medium text-blue-900",children:["Resource Type: ",e.resource_type]}),e.url&&(0,c.jsxs)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center text-xs text-blue-600 hover:text-blue-800 hover:underline mt-1 transition-colors",children:["View Resource",(0,c.jsxs)("svg",{className:"ml-1 h-3 w-3",fill:"currentColor",viewBox:"0 0 20 20",children:[(0,c.jsx)("path",{d:"M11 3a1 1 0 100 2h2.586l-6.293 6.293a1 1 0 101.414 1.414L15 6.414V9a1 1 0 102 0V4a1 1 0 00-1-1h-5z"}),(0,c.jsx)("path",{d:"M5 5a2 2 0 00-2 2v8a2 2 0 002 2h8a2 2 0 002-2v-3a1 1 0 10-2 0v3H5V7h3a1 1 0 000-2H5z"})]})]})]})]})})]})]},s)):(0,c.jsx)("div",{className:"bg-white rounded border border-gray-200",children:(0,c.jsx)("div",{className:"p-3 overflow-auto max-h-80 bg-gray-50",children:(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all text-gray-800",children:JSON.stringify(i,null,2)})})})})]})]}):(0,c.jsx)("div",{className:"flex flex-col justify-center items-center h-48 text-gray-500",children:(0,c.jsxs)("div",{className:"text-center max-w-sm",children:[(0,c.jsx)("div",{className:"mb-3",children:(0,c.jsx)("svg",{className:"mx-auto h-12 w-12 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1,d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,c.jsx)("h4",{className:"text-sm font-medium text-gray-900 mb-1",children:"Ready to Call Tool"}),(0,c.jsx)("p",{className:"text-xs text-gray-500 leading-relaxed",children:'Configure the input parameters and click "Call Tool" to see the results here.'})]})})})]})]})]})}var on=t(29488),oo=t(36724);let oc=e=>{let s,{visible:t,onOk:l,onCancel:a,authType:r}=e,[i]=A.Z.useForm();if(r===nM.API_KEY||r===nM.BEARER_TOKEN){let e=r===nM.API_KEY?"API Key":"Bearer Token";s=(0,c.jsx)(A.Z.Item,{name:"authValue",label:e,rules:[{required:!0,message:"Please input your ".concat(e)}],children:(0,c.jsx)(L.default.Password,{})})}else r===nM.BASIC&&(s=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{name:"username",label:"Username",rules:[{required:!0,message:"Please input your username"}],children:(0,c.jsx)(L.default,{})}),(0,c.jsx)(A.Z.Item,{name:"password",label:"Password",rules:[{required:!0,message:"Please input your password"}],children:(0,c.jsx)(L.default.Password,{})})]}));return(0,c.jsx)(T.Z,{open:t,title:"Authentication",onOk:()=>{i.validateFields().then(e=>{r===nM.BASIC?l("".concat(e.username.trim(),":").concat(e.password.trim())):l(e.authValue.trim())})},onCancel:a,destroyOnClose:!0,children:(0,c.jsx)(A.Z,{form:i,layout:"vertical",children:s})})},od=e=>{let{authType:s,onAuthSubmit:t,onClearAuth:l,hasAuth:a}=e,[r,i]=(0,d.useState)(!1);return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)(oo.xv,{className:"text-sm font-medium text-gray-700",children:["Authentication ",a?"✓":""]}),(0,c.jsxs)("div",{className:"flex gap-2",children:[a&&(0,c.jsx)(oo.zx,{onClick:()=>{l()},size:"sm",variant:"secondary",className:"text-xs text-red-600 hover:text-red-700",children:"Clear"}),(0,c.jsx)(oo.zx,{onClick:()=>i(!0),size:"sm",variant:"secondary",className:"text-xs",children:a?"Update":"Add Auth"})]})]}),(0,c.jsx)(oo.xv,{className:"text-xs text-gray-500",children:a?"Authentication configured and saved locally":"Some tools may require authentication"}),(0,c.jsx)(oc,{visible:r,onOk:e=>{t(e),i(!1)},onCancel:()=>i(!1),authType:s})]})};var om=e=>{let{serverId:s,accessToken:t,auth_type:l,userRole:a,userID:r,serverAlias:i}=e,[n,o]=(0,d.useState)(""),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null);(0,d.useEffect)(()=>{if(nR(l)){let e=(0,on.Ui)(s,i||void 0);e&&o(e)}},[s,i,l]);let f=e=>{o(e),e&&nR(l)&&((0,on.Hc)(s,e,l||"none",i||void 0),eo.Z.success("Authentication token saved locally"))},v=()=>{o(""),(0,on.e4)(s),eo.Z.info("Authentication token cleared")},{data:y,isLoading:b,error:_}=(0,sE.a)({queryKey:["mcpTools",s,n,i],queryFn:()=>{if(!t)throw Error("Access Token required");return(0,j.listMCPTools)(t,s,n,i||void 0)},enabled:!!t,staleTime:3e4}),{mutate:N,isPending:Z}=(0,or.D)({mutationFn:async e=>{if(!t)throw Error("Access Token required");try{return await (0,j.callMCPTool)(t,e.tool.name,e.arguments,e.authValue,i||void 0)}catch(e){throw e}},onSuccess:e=>{h(e),g(null)},onError:e=>{g(e),h(null)}}),w=(null==y?void 0:y.tools)||[],k=""!==n;return(0,c.jsx)("div",{className:"w-full h-screen p-4 bg-white",children:(0,c.jsx)(oo.Zb,{className:"w-full rounded-xl shadow-md overflow-hidden",children:(0,c.jsxs)("div",{className:"flex h-auto w-full gap-4",children:[(0,c.jsxs)("div",{className:"w-1/4 p-4 bg-gray-50 flex flex-col",children:[(0,c.jsx)(oo.Dx,{className:"text-xl font-semibold mb-6 mt-2",children:"MCP Tools"}),(0,c.jsxs)("div",{className:"flex flex-col flex-1",children:[(0,c.jsxs)("div",{className:"flex flex-col flex-1 min-h-0",children:[(0,c.jsxs)(oo.xv,{className:"font-medium block mb-3 text-gray-700 flex items-center",children:[(0,c.jsx)(rM.Z,{className:"mr-2"})," Available Tools",w.length>0&&(0,c.jsx)("span",{className:"ml-2 bg-blue-100 text-blue-800 text-xs font-medium px-2 py-0.5 rounded-full",children:w.length})]}),b&&(0,c.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 bg-white border border-gray-200 rounded-lg",children:[(0,c.jsxs)("div",{className:"relative mb-3",children:[(0,c.jsx)("div",{className:"animate-spin rounded-full h-6 w-6 border-2 border-gray-200"}),(0,c.jsx)("div",{className:"animate-spin rounded-full h-6 w-6 border-2 border-blue-600 border-t-transparent absolute top-0"})]}),(0,c.jsx)("p",{className:"text-xs font-medium text-gray-700",children:"Loading tools..."})]}),(null==y?void 0:y.error)&&!b&&!w.length&&(0,c.jsx)("div",{className:"p-3 text-xs text-red-800 rounded-lg bg-red-50 border border-red-200",children:(0,c.jsxs)("p",{className:"font-medium",children:["Error: ",y.message]})}),!b&&!(null==y?void 0:y.error)&&(!w||0===w.length)&&(0,c.jsxs)("div",{className:"p-4 text-center bg-white border border-gray-200 rounded-lg",children:[(0,c.jsx)("div",{className:"mx-auto w-8 h-8 bg-gray-200 rounded-full flex items-center justify-center mb-2",children:(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 8.172V5L8 4z"})})}),(0,c.jsx)("p",{className:"text-xs font-medium text-gray-700 mb-1",children:"No tools available"}),(0,c.jsx)("p",{className:"text-xs text-gray-500",children:"No tools found for this server"})]}),!b&&!(null==y?void 0:y.error)&&w.length>0&&(0,c.jsx)("div",{className:"space-y-2 flex-1 overflow-y-auto min-h-0 mcp-tools-scrollable",style:{maxHeight:"400px",scrollbarWidth:"auto",scrollbarColor:"#cbd5e0 #f7fafc"},children:w.map(e=>(0,c.jsxs)("div",{className:"border rounded-lg p-3 cursor-pointer transition-all hover:shadow-sm ".concat((null==m?void 0:m.name)===e.name?"border-blue-500 bg-blue-50 ring-1 ring-blue-200":"border-gray-200 bg-white hover:border-gray-300"),onClick:()=>{u(e),h(null),g(null)},children:[(0,c.jsxs)("div",{className:"flex items-start space-x-2",children:[e.mcp_info.logo_url&&(0,c.jsx)("img",{src:e.mcp_info.logo_url,alt:"".concat(e.mcp_info.server_name," logo"),className:"w-4 h-4 object-contain flex-shrink-0 mt-0.5"}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsx)("h4",{className:"font-mono text-xs font-medium text-gray-900 truncate",children:e.name}),(0,c.jsx)("p",{className:"text-xs text-gray-500 truncate",children:e.mcp_info.server_name}),(0,c.jsx)("p",{className:"text-xs text-gray-600 mt-1 line-clamp-2 leading-relaxed",children:e.description})]})]}),(null==m?void 0:m.name)===e.name&&(0,c.jsx)("div",{className:"mt-2 pt-2 border-t border-blue-200",children:(0,c.jsxs)("div",{className:"flex items-center text-xs font-medium text-blue-700",children:[(0,c.jsx)("svg",{className:"w-3 h-3 mr-1",fill:"currentColor",viewBox:"0 0 20 20",children:(0,c.jsx)("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})}),"Selected"]})})]},e.name))})]}),nR(l)&&(0,c.jsx)("div",{className:"pt-4 border-t border-gray-200 flex-shrink-0 mt-6",children:k?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(oo.xv,{className:"font-medium block mb-3 text-gray-700 flex items-center",children:[(0,c.jsx)(r6.Z,{className:"mr-2"})," Authentication"]}),(0,c.jsx)(od,{authType:l,onAuthSubmit:f,onClearAuth:v,hasAuth:k})]}):(0,c.jsxs)("div",{className:"p-4 bg-gradient-to-r from-orange-50 to-red-50 border border-orange-200 rounded-lg",children:[(0,c.jsxs)("div",{className:"flex items-center mb-3",children:[(0,c.jsx)(r6.Z,{className:"mr-2 text-orange-600 text-lg"}),(0,c.jsx)(oo.xv,{className:"font-semibold text-orange-800",children:"Authentication Required"})]}),(0,c.jsx)(oo.xv,{className:"text-sm text-orange-700 mb-4",children:"This MCP server requires authentication. You must add your credentials below to access the tools."}),(0,c.jsx)(od,{authType:l,onAuthSubmit:f,onClearAuth:v,hasAuth:k})]})})]})]}),(0,c.jsxs)("div",{className:"w-3/4 flex flex-col bg-white",children:[(0,c.jsx)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:(0,c.jsx)(oo.Dx,{className:"text-xl font-semibold mb-0",children:"Tool Testing Playground"})}),(0,c.jsx)("div",{className:"flex-1 overflow-auto p-4",children:m?(0,c.jsx)("div",{className:"h-full",children:(0,c.jsx)(oi,{tool:m,needsAuth:nR(l),authValue:n,onSubmit:e=>{N({tool:m,arguments:e,authValue:n})},result:x,error:p,isLoading:Z,onClose:()=>u(null)})}):(0,c.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,c.jsx)(eK.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,c.jsx)(oo.xv,{className:"text-lg font-medium text-gray-600 mb-2",children:"Select a Tool to Test"}),(0,c.jsx)(oo.xv,{className:"text-center text-gray-500 max-w-md",children:"Choose a tool from the left sidebar to start testing its functionality with custom inputs."})]})})]})]})})})},ou=t(57018),ox=e=>{let{tagId:s,onClose:t,accessToken:l,is_admin:a,editTag:r}=e,[i]=A.Z.useForm(),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(r),[x,h]=(0,d.useState)([]),p=async()=>{if(l)try{let e=(await (0,j.tagInfoCall)(l,[s]))[s];e&&(o(e),r&&i.setFieldsValue({name:e.name,description:e.description,models:e.models}))}catch(e){console.error("Error fetching tag details:",e),eo.Z.fromBackend("Error fetching tag details: "+e)}};(0,d.useEffect)(()=>{p()},[s,l]),(0,d.useEffect)(()=>{l&&e5("dummy-user","Admin",l,h)},[l]);let g=async e=>{if(l)try{await (0,j.tagUpdateCall)(l,{name:e.name,description:e.description,models:e.models}),eo.Z.success("Tag updated successfully"),u(!1),p()}catch(e){console.error("Error updating tag:",e),eo.Z.fromBackend("Error updating tag: "+e)}};return n?(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.zx,{onClick:t,className:"mb-4",children:"← Back to Tags"}),(0,c.jsxs)(ou.Dx,{children:["Tag Name: ",n.name]}),(0,c.jsx)(ou.xv,{className:"text-gray-500",children:n.description||"No description"})]}),a&&!m&&(0,c.jsx)(ou.zx,{onClick:()=>u(!0),children:"Edit Tag"})]}),m?(0,c.jsx)(ou.Zb,{children:(0,c.jsxs)(A.Z,{form:i,onFinish:g,layout:"vertical",initialValues:n,children:[(0,c.jsx)(A.Z.Item,{label:"Tag Name",name:"name",rules:[{required:!0,message:"Please input a tag name"}],children:(0,c.jsx)(L.default,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"description",children:(0,c.jsx)(L.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed LLMs"," ",(0,c.jsx)(B.Z,{title:"Select which LLMs are allowed to process this type of data",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select LLMs",children:x.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(ou.zx,{onClick:()=>u(!1),children:"Cancel"}),(0,c.jsx)(ou.zx,{type:"submit",children:"Save Changes"})]})]})}):(0,c.jsx)("div",{className:"space-y-6",children:(0,c.jsxs)(ou.Zb,{children:[(0,c.jsx)(ou.Dx,{children:"Tag Details"}),(0,c.jsxs)("div",{className:"space-y-4 mt-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Name"}),(0,c.jsx)(ou.xv,{children:n.name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Description"}),(0,c.jsx)(ou.xv,{children:n.description||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Allowed LLMs"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-2",children:0===n.models.length?(0,c.jsx)(ou.Ct,{color:"red",children:"All Models"}):n.models.map(e=>{var s;return(0,c.jsx)(ou.Ct,{color:"blue",children:(0,c.jsx)(B.Z,{title:"ID: ".concat(e),children:(null===(s=n.model_info)||void 0===s?void 0:s[e])||e})},e)})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Created"}),(0,c.jsx)(ou.xv,{children:n.created_at?new Date(n.created_at).toLocaleString():"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)(ou.xv,{children:n.updated_at?new Date(n.updated_at).toLocaleString():"-"})]})]})]})})]}):(0,c.jsx)("div",{children:"Loading..."})},oh=e=>{let{data:s,onEdit:t,onDelete:l,onSelectTag:a}=e,[r,i]=d.useState([{id:"created_at",desc:!0}]),n=[{header:"Tag Name",accessorKey:"name",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:t.name,children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5",onClick:()=>a(t.name),children:t.name})})})}},{header:"Description",accessorKey:"description",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.description,children:(0,c.jsx)("span",{className:"text-xs",children:t.description||"-"})})}},{header:"Allowed LLMs",accessorKey:"models",cell:e=>{var s,t;let{row:l}=e,a=l.original;return(0,c.jsx)("div",{style:{display:"flex",flexDirection:"column"},children:(null==a?void 0:null===(s=a.models)||void 0===s?void 0:s.length)===0?(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"red",children:"All Models"}):null==a?void 0:null===(t=a.models)||void 0===t?void 0:t.map(e=>{var s;return(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"blue",children:(0,c.jsx)(B.Z,{title:"ID: ".concat(e),children:(0,c.jsx)(k.Z,{children:(null===(s=a.model_info)||void 0===s?void 0:s[e])||e})})},e)})})}},{header:"Created",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:new Date(t.created_at).toLocaleDateString()})}},{id:"actions",header:"",cell:e=>{let{row:s}=e,a=s.original;return(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)(sR.Z,{icon:s4.Z,size:"sm",onClick:()=>t(a),className:"cursor-pointer"}),(0,c.jsx)(sR.Z,{icon:W.Z,size:"sm",onClick:()=>l(a.name),className:"cursor-pointer"})]})}}],o=(0,sD.b7)({data:s,columns:n,state:{sorting:r},onSortingChange:i,getCoreRowModel:(0,sF.sC)(),getSortedRowModel:(0,sF.tj)(),enableSorting:!0});return(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sz.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sV.Z,{children:o.getHeaderGroups().map(e=>(0,c.jsx)(sK.Z,{children:e.headers.map(e=>(0,c.jsx)(sB.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sD.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sv.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sU.Z,{children:o.getRowModel().rows.length>0?o.getRowModel().rows.map(e=>(0,c.jsx)(sK.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sq.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),children:(0,sD.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sq.Z,{colSpan:n.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No tags found"})})})})})]})})})},op=e=>{let{accessToken:s,userID:t,userRole:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(null),[N,Z]=(0,d.useState)(""),[w]=A.Z.useForm(),[S,C]=(0,d.useState)([]),E=async()=>{if(s)try{let e=await (0,j.tagListCall)(s);console.log("List tags response:",e),r(Object.values(e))}catch(e){console.error("Error fetching tags:",e),eo.Z.fromBackend("Error fetching tags: "+e)}},P=async e=>{if(s)try{await (0,j.tagCreateCall)(s,{name:e.tag_name,description:e.description,models:e.allowed_llms}),eo.Z.success("Tag created successfully"),n(!1),w.resetFields(),E()}catch(e){console.error("Error creating tag:",e),eo.Z.fromBackend("Error creating tag: "+e)}},M=async e=>{f(e),p(!0)},O=async()=>{if(s&&g){try{await (0,j.tagDeleteCall)(s,g),eo.Z.success("Tag deleted successfully"),E()}catch(e){console.error("Error deleting tag:",e),eo.Z.fromBackend("Error deleting tag: "+e)}p(!1),f(null)}};return(0,d.useEffect)(()=>{t&&l&&s&&(async()=>{try{let e=await (0,j.modelInfoCall)(s,t,l);e&&e.data&&C(e.data)}catch(e){console.error("Error fetching models:",e),eo.Z.fromBackend("Error fetching models: "+e)}})()},[s,t,l]),(0,d.useEffect)(()=>{E()},[s]),(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:o?(0,c.jsx)(ox,{tagId:o,onClose:()=>{m(null),x(!1)},accessToken:s,is_admin:"Admin"===l,editTag:u}):(0,c.jsxs)("div",{className:"gap-2 p-8 h-[75vh] w-full mt-2",children:[(0,c.jsxs)("div",{className:"flex justify-between mt-2 w-full items-center mb-4",children:[(0,c.jsx)("h1",{children:"Tag Management"}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[N&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",N]}),(0,c.jsx)(sR.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center cursor-pointer",onClick:()=>{E(),Z(new Date().toLocaleString())}})]})]}),(0,c.jsxs)(k.Z,{className:"mb-4",children:["Click on a tag name to view and edit its details.",(0,c.jsxs)("p",{children:["You can use tags to restrict the usage of certain LLMs based on tags passed in the request. Read more about tag routing"," ",(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/tag_routing",target:"_blank",rel:"noopener noreferrer",children:"here"}),"."]})]}),(0,c.jsx)(b.Z,{className:"mb-4",onClick:()=>n(!0),children:"+ Create New Tag"}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(oh,{data:a,onEdit:e=>{m(e.name),x(!0)},onDelete:M,onSelectTag:m})})}),(0,c.jsx)(T.Z,{title:"Create New Tag",visible:i,width:800,footer:null,onCancel:()=>{n(!1),w.resetFields()},children:(0,c.jsxs)(A.Z,{form:w,onFinish:P,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"Tag Name",name:"tag_name",rules:[{required:!0,message:"Please input a tag name"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"description",children:(0,c.jsx)(L.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Models"," ",(0,c.jsx)(B.Z,{title:"Select which LLMs are allowed to process requests from this tag",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_llms",children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select LLMs",children:S.map(e=>(0,c.jsx)(I.default.Option,{value:e.model_info.id,children:(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{children:e.model_name}),(0,c.jsxs)("span",{className:"text-gray-400 ml-2",children:["(",e.model_info.id,")"]})]})},e.model_info.id))})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(b.Z,{type:"submit",children:"Create Tag"})})]})}),h&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Tag"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this tag?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:O,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{p(!1),f(null)},children:"Cancel"})]})]})]})})]})})},og=e=>{let{data:s,onView:t,onEdit:l,onDelete:a}=e,[r,i]=d.useState([{id:"created_at",desc:!0}]),n=[{header:"Vector Store ID",accessorKey:"vector_store_id",cell:e=>{let{row:s}=e,l=s.original;return(0,c.jsx)("button",{onClick:()=>t(l.vector_store_id),className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",children:l.vector_store_id.length>15?"".concat(l.vector_store_id.slice(0,15),"..."):l.vector_store_id})}},{header:"Name",accessorKey:"vector_store_name",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.vector_store_name,children:(0,c.jsx)("span",{className:"text-xs",children:t.vector_store_name||"-"})})}},{header:"Description",accessorKey:"vector_store_description",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.vector_store_description,children:(0,c.jsx)("span",{className:"text-xs",children:t.vector_store_description||"-"})})}},{header:"Provider",accessorKey:"custom_llm_provider",cell:e=>{let{row:s}=e,t=s.original,{displayName:l,logo:a}=(0,s0.dr)(t.custom_llm_provider);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[a&&(0,c.jsx)("img",{src:a,alt:l,className:"h-4 w-4"}),(0,c.jsx)("span",{className:"text-xs",children:l})]})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:new Date(t.created_at).toLocaleDateString()})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:new Date(t.updated_at).toLocaleDateString()})}},{id:"actions",header:"",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)(sR.Z,{icon:s4.Z,size:"sm",onClick:()=>l(t.vector_store_id),className:"cursor-pointer"}),(0,c.jsx)(sR.Z,{icon:W.Z,size:"sm",onClick:()=>a(t.vector_store_id),className:"cursor-pointer"})]})}}],o=(0,sD.b7)({data:s,columns:n,state:{sorting:r},onSortingChange:i,getCoreRowModel:(0,sF.sC)(),getSortedRowModel:(0,sF.tj)(),enableSorting:!0});return(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sz.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sV.Z,{children:o.getHeaderGroups().map(e=>(0,c.jsx)(sK.Z,{children:e.headers.map(e=>(0,c.jsx)(sB.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sD.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sv.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sU.Z,{children:o.getRowModel().rows.length>0?o.getRowModel().rows.map(e=>(0,c.jsx)(sK.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sq.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),children:(0,sD.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sK.Z,{children:(0,c.jsx)(sq.Z,{colSpan:n.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No vector stores found"})})})})})]})})})};(r=o||(o={})).Bedrock="Amazon Bedrock",r.PgVector="PostgreSQL pgvector (LiteLLM Connector)",r.VertexRagEngine="Vertex AI RAG Engine",r.OpenAI="OpenAI",r.Azure="Azure OpenAI";let oj={Bedrock:"bedrock",PgVector:"pg_vector",VertexRagEngine:"vertex_ai",OpenAI:"openai",Azure:"azure"},of="/ui/assets/logos/",ov={"Amazon Bedrock":"".concat(of,"bedrock.svg"),"PostgreSQL pgvector (LiteLLM Connector)":"".concat(of,"postgresql.svg"),"Vertex AI RAG Engine":"".concat(of,"google.svg"),OpenAI:"".concat(of,"openai_small.svg"),"Azure OpenAI":"".concat(of,"microsoft_azure.svg")},oy={bedrock:[],pg_vector:[{name:"api_base",label:"API Base",tooltip:"Enter the base URL of your deployed litellm-pgvector server (e.g., http://your-server:8000)",placeholder:"http://your-deployed-server:8000",required:!0,type:"text"},{name:"api_key",label:"API Key",tooltip:"Enter the API key from your deployed litellm-pgvector server",placeholder:"your-deployed-api-key",required:!0,type:"password"}],vertex_rag_engine:[],openai:[{name:"api_key",label:"API Key",tooltip:"Enter your OpenAI API key",placeholder:"sk-...",required:!0,type:"password"}],azure:[{name:"api_key",label:"API Key",tooltip:"Enter your Azure OpenAI API key",placeholder:"your-azure-api-key",required:!0,type:"password"},{name:"api_base",label:"API Base",tooltip:"Enter your Azure OpenAI endpoint (e.g., https://your-resource.openai.azure.com/)",placeholder:"https://your-resource.openai.azure.com/",required:!0,type:"text"}]},ob=e=>oy[e]||[];var o_=e=>{let{isVisible:s,onCancel:t,onSuccess:l,accessToken:a,credentials:r}=e,[i]=A.Z.useForm(),[n,m]=(0,d.useState)("{}"),[u,x]=(0,d.useState)("bedrock"),h=async e=>{if(a)try{let s={};try{s=n.trim()?JSON.parse(n):{}}catch(e){eo.Z.fromBackend("Invalid JSON in metadata field");return}let t={vector_store_id:e.vector_store_id,custom_llm_provider:e.custom_llm_provider,vector_store_name:e.vector_store_name,vector_store_description:e.vector_store_description,vector_store_metadata:s,litellm_credential_name:e.litellm_credential_name},r=ob(e.custom_llm_provider).reduce((s,t)=>(s[t.name]=e[t.name],s),{});t.litellm_params=r,await (0,j.vectorStoreCreateCall)(a,t),eo.Z.success("Vector store created successfully"),i.resetFields(),m("{}"),l()}catch(e){console.error("Error creating vector store:",e),eo.Z.fromBackend("Error creating vector store: "+e)}},p=()=>{i.resetFields(),m("{}"),x("bedrock"),t()};return(0,c.jsx)(T.Z,{title:"Add New Vector Store",visible:s,width:1e3,footer:null,onCancel:p,children:(0,c.jsxs)(A.Z,{form:i,onFinish:h,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Provider"," ",(0,c.jsx)(B.Z,{title:"Select the provider for this vector store",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"custom_llm_provider",rules:[{required:!0,message:"Please select a provider"}],initialValue:"bedrock",children:(0,c.jsx)(I.default,{onChange:e=>x(e),children:Object.entries(o).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:oj[s],children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:ov[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s)})})}),"pg_vector"===u&&(0,c.jsx)(lm.Z,{message:"PG Vector Setup Required",description:(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{children:"LiteLLM provides a server to connect to PG Vector. To use this provider:"}),(0,c.jsxs)("ol",{style:{marginLeft:"16px",marginTop:"8px"},children:[(0,c.jsxs)("li",{children:["Deploy the litellm-pgvector server from:"," ",(0,c.jsx)("a",{href:"https://github.com/BerriAI/litellm-pgvector",target:"_blank",rel:"noopener noreferrer",children:"https://github.com/BerriAI/litellm-pgvector"})]}),(0,c.jsx)("li",{children:"Configure your PostgreSQL database with pgvector extension"}),(0,c.jsx)("li",{children:"Start the server and note the API base URL and API key"}),(0,c.jsx)("li",{children:"Enter those details in the fields below"})]})]}),type:"info",showIcon:!0,style:{marginBottom:"16px"}}),"vertex_rag_engine"===u&&(0,c.jsx)(lm.Z,{message:"Vertex AI RAG Engine Setup",description:(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{children:"To use Vertex AI RAG Engine:"}),(0,c.jsxs)("ol",{style:{marginLeft:"16px",marginTop:"8px"},children:[(0,c.jsxs)("li",{children:["Set up your Vertex AI RAG Engine corpus following the guide:"," ",(0,c.jsx)("a",{href:"https://cloud.google.com/vertex-ai/generative-ai/docs/rag-engine/rag-overview",target:"_blank",rel:"noopener noreferrer",children:"Vertex AI RAG Engine Overview"})]}),(0,c.jsx)("li",{children:"Create a corpus in your Google Cloud project"}),(0,c.jsx)("li",{children:"Note the corpus ID from the Vertex AI console"}),(0,c.jsx)("li",{children:"Enter the corpus ID in the Vector Store ID field below"})]})]}),type:"info",showIcon:!0,style:{marginBottom:"16px"}}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Vector Store ID"," ",(0,c.jsx)(B.Z,{title:"Enter the vector store ID from your api provider",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"vector_store_id",rules:[{required:!0,message:"Please input the vector store ID from your api provider"}],children:(0,c.jsx)(_.Z,{placeholder:"vertex_rag_engine"===u?"6917529027641081856 (Get corpus ID from Vertex AI console)":"Enter vector store ID from your provider"})}),ob(u).map(e=>(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:[e.label," ",(0,c.jsx)(B.Z,{title:e.tooltip,children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:e.name,rules:e.required?[{required:!0,message:"Please input the ".concat(e.label.toLowerCase())}]:[],children:(0,c.jsx)(_.Z,{type:e.type||"text",placeholder:e.placeholder})},e.name)),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Vector Store Name"," ",(0,c.jsx)(B.Z,{title:"Custom name you want to give to the vector store, this name will be rendered on the LiteLLM UI",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"vector_store_name",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"vector_store_description",children:(0,c.jsx)(L.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Existing Credentials"," ",(0,c.jsx)(B.Z,{title:"Optionally select API provider credentials for this vector store eg. Bedrock API KEY",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"litellm_credential_name",children:(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Select or search for existing credentials",optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{value:null,label:"None"},...r.map(e=>({value:e.credential_name,label:e.credential_name}))],allowClear:!0})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Metadata"," ",(0,c.jsx)(B.Z,{title:"JSON metadata for the vector store (optional)",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),children:(0,c.jsx)(L.default.TextArea,{rows:4,value:n,onChange:e=>m(e.target.value),placeholder:'{"key": "value"}'})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-3",children:[(0,c.jsx)(b.Z,{onClick:p,variant:"secondary",children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",type:"submit",children:"Create"})]})]})})},oN=e=>{let{isVisible:s,onCancel:t,onConfirm:l}=e;return(0,c.jsxs)(T.Z,{title:"Delete Vector Store",visible:s,footer:null,onCancel:t,children:[(0,c.jsx)("p",{children:"Are you sure you want to delete this vector store? This action cannot be undone."}),(0,c.jsxs)("div",{className:"px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:l,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:t,variant:"primary",children:"Cancel"})]})]})},oZ=t(23907);let{TextArea:ow}=L.default,{Text:ok,Title:oS}=en.default;var oC=e=>{let{vectorStoreId:s,accessToken:t,className:l=""}=e,[a,r]=(0,d.useState)(""),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)({}),h=async()=>{if(!a.trim()){ty.ZP.warning("Please enter a search query");return}n(!0);try{let e=await (0,j.vectorStoreSearchCall)(t,s,a),l={query:a,response:e,timestamp:Date.now()};m(e=>[l,...e]),r("")}catch(e){console.error("Error searching vector store:",e),eo.Z.fromBackend("Failed to search vector store")}finally{n(!1)}},p=e=>new Date(e).toLocaleString(),g=(e,s)=>{let t="".concat(e,"-").concat(s);x(e=>({...e,[t]:!e[t]}))};return(0,c.jsx)(tP.Z,{className:"w-full rounded-xl shadow-md",children:(0,c.jsxs)("div",{className:"flex flex-col h-[600px]",children:[(0,c.jsxs)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(r3.Z,{className:"mr-2 text-blue-500"}),(0,c.jsx)(oS,{level:4,className:"mb-0",children:"Test Vector Store"})]}),o.length>0&&(0,c.jsx)(P.ZP,{onClick:()=>{m([]),x({}),eo.Z.success("Search history cleared")},size:"small",children:"Clear History"})]}),(0,c.jsxs)("div",{className:"flex-1 overflow-auto p-4 pb-0",children:[0===o.length?(0,c.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,c.jsx)(r3.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,c.jsx)(ok,{children:"Test your vector store by entering a search query below"})]}):(0,c.jsx)("div",{className:"space-y-4",children:o.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("div",{className:"text-right",children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3 bg-blue-50 border border-blue-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,c.jsx)("strong",{className:"text-sm",children:"Query"}),(0,c.jsx)("span",{className:"text-xs text-gray-500",children:p(e.timestamp)})]}),(0,c.jsx)("div",{className:"text-left",children:e.query})]})}),(0,c.jsx)("div",{className:"text-left",children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3 bg-white border border-gray-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(r3.Z,{className:"text-green-500"}),(0,c.jsx)("strong",{className:"text-sm",children:"Vector Store Results"}),e.response&&(0,c.jsxs)("span",{className:"text-xs px-2 py-0.5 rounded bg-gray-100 text-gray-600",children:[(null===(t=e.response.data)||void 0===t?void 0:t.length)||0," results"]})]}),e.response&&e.response.data&&e.response.data.length>0?(0,c.jsx)("div",{className:"space-y-3",children:e.response.data.map((e,t)=>{let l=u["".concat(s,"-").concat(t)]||!1;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-3 cursor-pointer hover:bg-gray-100 transition-colors",onClick:()=>g(s,t),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[l?(0,c.jsx)(tL.Z,{className:"text-gray-500 mr-2"}):(0,c.jsx)(lh.Z,{className:"text-gray-500 mr-2"}),(0,c.jsxs)("span",{className:"font-medium text-sm",children:["Result ",t+1]}),!l&&e.content&&e.content[0]&&(0,c.jsxs)("span",{className:"ml-2 text-xs text-gray-500 truncate max-w-md",children:["- ",e.content[0].text.substring(0,100),"..."]})]}),(0,c.jsxs)("span",{className:"text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded",children:["Score: ",e.score.toFixed(4)]})]}),l&&(0,c.jsxs)("div",{className:"border-t bg-white p-3",children:[e.content&&e.content.map((e,s)=>(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsxs)("div",{className:"text-xs text-gray-500 mb-1",children:["Content (",e.type,")"]}),(0,c.jsx)("div",{className:"text-sm bg-gray-50 p-3 rounded border text-gray-800 max-h-40 overflow-y-auto",children:e.text})]},s)),(e.file_id||e.filename||e.attributes)&&(0,c.jsxs)("div",{className:"mt-3 pt-3 border-t border-gray-200",children:[(0,c.jsx)("div",{className:"text-xs text-gray-500 mb-2 font-medium",children:"Metadata"}),(0,c.jsxs)("div",{className:"space-y-2 text-xs",children:[e.file_id&&(0,c.jsxs)("div",{className:"bg-gray-50 p-2 rounded",children:[(0,c.jsx)("span",{className:"font-medium",children:"File ID:"})," ",e.file_id]}),e.filename&&(0,c.jsxs)("div",{className:"bg-gray-50 p-2 rounded",children:[(0,c.jsx)("span",{className:"font-medium",children:"Filename:"})," ",e.filename]}),e.attributes&&Object.keys(e.attributes).length>0&&(0,c.jsxs)("div",{className:"bg-gray-50 p-2 rounded",children:[(0,c.jsx)("span",{className:"font-medium block mb-1",children:"Attributes:"}),(0,c.jsx)("pre",{className:"text-xs bg-white p-2 rounded border overflow-x-auto",children:JSON.stringify(e.attributes,null,2)})]})]})]})]})]},t)})}):(0,c.jsx)("div",{className:"text-gray-500 text-sm",children:"No results found"})]})}),sr(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),h())},placeholder:"Enter your search query... (Shift+Enter for new line)",disabled:i,autoSize:{minRows:1,maxRows:4},style:{resize:"none"}})}),(0,c.jsx)(P.ZP,{type:"primary",onClick:h,disabled:i||!a.trim(),icon:(0,c.jsx)(oZ.Z,{}),loading:i,children:"Search"})]})})]})})},oI=e=>{let{vectorStoreId:s,onClose:t,accessToken:l,is_admin:a,editVectorStore:r}=e,[i]=A.Z.useForm(),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(r),[x,h]=(0,d.useState)("{}"),[p,g]=(0,d.useState)([]),[f,v]=(0,d.useState)("details"),y=async()=>{if(l)try{let e=await (0,j.vectorStoreInfoCall)(l,s);if(e&&e.vector_store){if(o(e.vector_store),e.vector_store.vector_store_metadata){let s="string"==typeof e.vector_store.vector_store_metadata?JSON.parse(e.vector_store.vector_store_metadata):e.vector_store.vector_store_metadata;h(JSON.stringify(s,null,2))}r&&i.setFieldsValue({vector_store_id:e.vector_store.vector_store_id,custom_llm_provider:e.vector_store.custom_llm_provider,vector_store_name:e.vector_store.vector_store_name,vector_store_description:e.vector_store.vector_store_description})}}catch(e){console.error("Error fetching vector store details:",e),eo.Z.fromBackend("Error fetching vector store details: "+e)}},_=async()=>{if(l)try{let e=await (0,j.credentialListCall)(l);console.log("List credentials response:",e),g(e.credentials||[])}catch(e){console.error("Error fetching credentials:",e)}};(0,d.useEffect)(()=>{y(),_()},[s,l]);let N=async e=>{if(l)try{let s={};try{s=x?JSON.parse(x):{}}catch(e){eo.Z.fromBackend("Invalid JSON in metadata field");return}let t={vector_store_id:e.vector_store_id,custom_llm_provider:e.custom_llm_provider,vector_store_name:e.vector_store_name,vector_store_description:e.vector_store_description,vector_store_metadata:s};await (0,j.vectorStoreUpdateCall)(l,t),eo.Z.success("Vector store updated successfully"),u(!1),y()}catch(e){console.error("Error updating vector store:",e),eo.Z.fromBackend("Error updating vector store: "+e)}};return n?(0,c.jsxs)("div",{className:"p-4 max-w-full",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",className:"mb-4",onClick:t,children:"Back to Vector Stores"}),(0,c.jsxs)(S.Z,{children:["Vector Store ID: ",n.vector_store_id]}),(0,c.jsx)(k.Z,{className:"text-gray-500",children:n.vector_store_description||"No description"})]}),a&&!m&&(0,c.jsx)(b.Z,{onClick:()=>u(!0),children:"Edit Vector Store"})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"Details"}),(0,c.jsx)(ss.Z,{children:"Test Vector Store"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:m?(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(S.Z,{children:"Edit Vector Store"})}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)(A.Z,{form:i,onFinish:N,layout:"vertical",initialValues:n,children:[(0,c.jsx)(A.Z.Item,{label:"Vector Store ID",name:"vector_store_id",rules:[{required:!0,message:"Please input a vector store ID"}],children:(0,c.jsx)(L.default,{disabled:!0})}),(0,c.jsx)(A.Z.Item,{label:"Vector Store Name",name:"vector_store_name",children:(0,c.jsx)(L.default,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"vector_store_description",children:(0,c.jsx)(L.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Provider"," ",(0,c.jsx)(B.Z,{title:"Select the provider for this vector store",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"custom_llm_provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,c.jsx)(I.default,{children:Object.entries(s0.Cl).map(e=>{let[s,t]=e;return"Bedrock"===s?(0,c.jsx)(I.default.Option,{value:s0.fK[s],children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:s0.cd[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s):null})})}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(k.Z,{className:"text-sm text-gray-500 mb-2",children:"Either select existing credentials OR enter provider credentials below"})}),(0,c.jsx)(A.Z.Item,{label:"Existing Credentials",name:"litellm_credential_name",children:(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Select or search for existing credentials",optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{value:null,label:"None"},...p.map(e=>({value:e.credential_name,label:e.credential_name}))],allowClear:!0})}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"OR"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Metadata"," ",(0,c.jsx)(B.Z,{title:"JSON metadata for the vector store",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),children:(0,c.jsx)(L.default.TextArea,{rows:4,value:x,onChange:e=>h(e.target.value),placeholder:'{"key": "value"}'})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(P.ZP,{onClick:()=>u(!1),children:"Cancel"}),(0,c.jsx)(P.ZP,{type:"primary",htmlType:"submit",children:"Save Changes"})]})]})})]}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Vector Store Details"}),a&&(0,c.jsx)(b.Z,{onClick:()=>u(!0),children:"Edit Vector Store"})]}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"ID"}),(0,c.jsx)(k.Z,{children:n.vector_store_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Name"}),(0,c.jsx)(k.Z,{children:n.vector_store_name||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Description"}),(0,c.jsx)(k.Z,{children:n.vector_store_description||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Provider"}),(0,c.jsx)("div",{className:"flex items-center space-x-2 mt-1",children:(()=>{let e=n.custom_llm_provider||"bedrock",{displayName:s,logo:t}=(()=>{let s=Object.keys(s0.fK).find(s=>s0.fK[s].toLowerCase()===e.toLowerCase());if(!s)return{displayName:e,logo:""};let t=s0.Cl[s],l=s0.cd[t];return{displayName:t,logo:l}})();return(0,c.jsxs)(c.Fragment,{children:[t&&(0,c.jsx)("img",{src:t,alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let t=e.target,l=t.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=s.charAt(0),l.replaceChild(e,t)}}}),(0,c.jsx)(se.Z,{color:"blue",children:s})]})})()})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Metadata"}),(0,c.jsx)("div",{className:"bg-gray-50 p-3 rounded mt-2 font-mono text-xs overflow-auto max-h-48",children:(0,c.jsx)("pre",{children:x})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created"}),(0,c.jsx)(k.Z,{children:n.created_at?new Date(n.created_at).toLocaleString():"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)(k.Z,{children:n.updated_at?new Date(n.updated_at).toLocaleString():"-"})]})]})})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(oC,{vectorStoreId:n.vector_store_id,accessToken:l||""})})]})]})]}):(0,c.jsx)("div",{children:"Loading..."})},oA=e=>{let{accessToken:s,userID:t,userRole:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(null),[h,p]=(0,d.useState)(""),[g,f]=(0,d.useState)([]),[_,N]=(0,d.useState)(null),[Z,w]=(0,d.useState)(!1),S=async()=>{if(s)try{let e=await (0,j.vectorStoreListCall)(s);console.log("List vector stores response:",e),r(e.data||[])}catch(e){console.error("Error fetching vector stores:",e),eo.Z.fromBackend("Error fetching vector stores: "+e)}},C=async()=>{if(s)try{let e=await (0,j.credentialListCall)(s);console.log("List credentials response:",e),f(e.credentials||[])}catch(e){console.error("Error fetching credentials:",e),eo.Z.fromBackend("Error fetching credentials: "+e)}},I=async e=>{x(e),m(!0)},A=async()=>{if(s&&u){try{await (0,j.vectorStoreDeleteCall)(s,u),eo.Z.success("Vector store deleted successfully"),S()}catch(e){console.error("Error deleting vector store:",e),eo.Z.fromBackend("Error deleting vector store: "+e)}m(!1),x(null)}};return(0,d.useEffect)(()=>{S(),C()},[s]),_?(0,c.jsx)("div",{className:"w-full h-full",children:(0,c.jsx)(oI,{vectorStoreId:_,onClose:()=>{N(null),w(!1),S()},accessToken:s,is_admin:(0,eI.tY)(l||""),editVectorStore:Z})}):(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsxs)("div",{className:"gap-2 p-8 h-[75vh] w-full mt-2",children:[(0,c.jsxs)("div",{className:"flex justify-between mt-2 w-full items-center mb-4",children:[(0,c.jsx)("h1",{children:"Vector Store Management"}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[h&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",h]}),(0,c.jsx)(sR.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center cursor-pointer",onClick:()=>{S(),C(),p(new Date().toLocaleString())}})]})]}),(0,c.jsx)(k.Z,{className:"mb-4",children:(0,c.jsx)("p",{children:"You can use vector stores to store and retrieve LLM embeddings.."})}),(0,c.jsx)(b.Z,{className:"mb-4",onClick:()=>n(!0),children:"+ Add Vector Store"}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(og,{data:a,onView:e=>{N(e),w(!1)},onEdit:e=>{N(e),w(!0)},onDelete:I})})}),(0,c.jsx)(o_,{isVisible:i,onCancel:()=>n(!1),onSuccess:()=>{n(!1),S()},accessToken:s,credentials:g}),(0,c.jsx)(oN,{isVisible:o,onCancel:()=>m(!1),onConfirm:A})]})})},oT=e=>{let{userID:s,userRole:t,accessToken:l}=e,{logoUrl:a,setLogoUrl:r}=(0,g.F)(),[i,n]=(0,d.useState)(""),[o,m]=(0,d.useState)(!1);(0,d.useEffect)(()=>{l&&u()},[l]);let u=async()=>{try{let s=(0,j.getProxyBaseUrl)(),t=await fetch(s?"".concat(s,"/get/ui_theme_settings"):"/get/ui_theme_settings",{method:"GET",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"}});if(t.ok){var e;let s=await t.json(),l=(null===(e=s.values)||void 0===e?void 0:e.logo_url)||"";n(l),r(l||null)}}catch(e){console.error("Error fetching theme settings:",e)}},x=async()=>{m(!0);try{let e=(0,j.getProxyBaseUrl)();if((await fetch(e?"".concat(e,"/update/ui_theme_settings"):"/update/ui_theme_settings",{method:"PATCH",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify({logo_url:i||null})})).ok)eo.Z.success("Logo settings updated successfully!"),r(i||null);else throw Error("Failed to update settings")}catch(e){console.error("Error updating logo settings:",e),eo.Z.fromBackend("Failed to update logo settings")}finally{m(!1)}},h=async()=>{n(""),r(null),m(!0);try{let e=(0,j.getProxyBaseUrl)();if((await fetch(e?"".concat(e,"/update/ui_theme_settings"):"/update/ui_theme_settings",{method:"PATCH",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify({logo_url:null})})).ok)eo.Z.success("Logo reset to default!");else throw Error("Failed to reset logo")}catch(e){console.error("Error resetting logo:",e),eo.Z.fromBackend("Failed to reset logo")}finally{m(!1)}};return l?(0,c.jsxs)("div",{className:"w-full mx-auto max-w-4xl px-6 py-8",children:[(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(S.Z,{className:"text-2xl font-bold mb-2",children:"Logo Customization"}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"Customize your LiteLLM admin dashboard with a custom logo."})]}),(0,c.jsx)(G.Z,{className:"shadow-sm p-6",children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium text-gray-700 mb-2 block",children:"Custom Logo URL"}),(0,c.jsx)(_.Z,{placeholder:"https://example.com/logo.png",value:i,onValueChange:e=>{n(e),r(e||null)},className:"w-full"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500 mt-1",children:"Enter a URL for your custom logo or leave empty to use the default LiteLLM logo"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium text-gray-700 mb-2 block",children:"Current Logo"}),(0,c.jsx)("div",{className:"bg-gray-50 rounded-lg p-6 flex items-center justify-center min-h-[120px]",children:i?(0,c.jsx)("img",{src:i,alt:"Custom logo",className:"max-w-full max-h-24 object-contain",onError:e=>{var s;let t=e.target;t.style.display="none";let l=document.createElement("div");l.className="text-gray-500 text-sm",l.textContent="Failed to load image",null===(s=t.parentElement)||void 0===s||s.appendChild(l)}}):(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"Default LiteLLM logo will be used"})})]}),(0,c.jsxs)("div",{className:"flex gap-3 pt-4",children:[(0,c.jsx)(b.Z,{onClick:x,loading:o,disabled:o,color:"indigo",children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:h,loading:o,disabled:o,variant:"secondary",color:"gray",children:"Reset to Default"})]})]})})]}):null};let oE=new x.S;function oP(){return(0,c.jsxs)("div",{className:rn("h-screen","flex items-center justify-center gap-4"),children:[(0,c.jsx)("div",{className:"text-lg font-medium py-2 pr-4 border-r border-r-gray-200",children:"\uD83D\uDE85 LiteLLM"}),(0,c.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,c.jsx)(rc,{className:"size-4"}),(0,c.jsx)("span",{className:"text-gray-600 text-sm",children:"Loading..."})]})]})}function oL(){let[e,s]=(0,d.useState)(""),[t,l]=(0,d.useState)(!1),[a,r]=(0,d.useState)(!1),[i,n]=(0,d.useState)(null),[o,x]=(0,d.useState)(null),[v,y]=(0,d.useState)([]),[b,_]=(0,d.useState)([]),[N,Z]=(0,d.useState)([]),[w,k]=(0,d.useState)({PROXY_BASE_URL:"",PROXY_LOGOUT_URL:""}),[S,C]=(0,d.useState)(!0),I=(0,m.useSearchParams)(),[A,T]=(0,d.useState)({data:[]}),[E,P]=(0,d.useState)(null),[L,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)(!0),[F,R]=(0,d.useState)(null),z=I.get("invitation_id"),[U,q]=(0,d.useState)(()=>I.get("page")||"api-keys"),[V,B]=(0,d.useState)(null),[K,G]=(0,d.useState)(!1),H=e=>{y(s=>s?[...s,e]:[e]),M(()=>!L)},Y=!1===O&&null===E&&null===z;return((0,d.useEffect)(()=>{let e=function(e){let s=document.cookie.split("; ").find(s=>s.startsWith(e+"="));return s?s.split("=")[1]:null}("token");(0,j.getUiConfig)().then(s=>{P(e),D(!1)})},[]),(0,d.useEffect)(()=>{Y&&(window.location.href=(j.proxyBaseUrl||"")+"/sso/key/generate")},[Y]),(0,d.useEffect)(()=>{if(!E)return;let e=(0,u.o)(E);if(e){if(B(e.key),r(e.disabled_non_admin_personal_key_creation),e.user_role){let t=function(e){if(!e)return"Undefined Role";switch(e.toLowerCase()){case"app_owner":case"demo_app_owner":return"App Owner";case"app_admin":case"proxy_admin":return"Admin";case"proxy_admin_viewer":return"Admin Viewer";case"org_admin":return"Org Admin";case"internal_user":return"Internal User";case"internal_user_viewer":case"internal_viewer":return"Internal Viewer";case"app_user":return"App User";default:return"Unknown Role"}}(e.user_role);s(t),"Admin Viewer"==t&&q("usage")}e.user_email&&n(e.user_email),e.login_method&&C("username_password"==e.login_method),e.premium_user&&l(e.premium_user),e.auth_header_name&&(0,j.setGlobalLitellmHeaderName)(e.auth_header_name),e.user_id&&R(e.user_id)}},[E]),(0,d.useEffect)(()=>{V&&F&&e&&e5(F,e,V,Z),V&&F&&e&&f(V,F,e,null,x),V&&lJ(V,_)},[V,F,e]),O||Y)?(0,c.jsx)(oP,{}):(0,c.jsx)(d.Suspense,{fallback:(0,c.jsx)(oP,{}),children:(0,c.jsx)(h.aH,{client:oE,children:(0,c.jsx)(g.f,{accessToken:V,children:z?(0,c.jsx)(sQ,{userID:F,userRole:e,premiumUser:t,teams:o,keys:v,setUserRole:s,userEmail:i,setUserEmail:n,setTeams:x,setKeys:y,organizations:b,addKey:H,createClicked:L}):(0,c.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,c.jsx)(p.Z,{userID:F,userRole:e,premiumUser:t,userEmail:i,setProxySettings:k,proxySettings:w,accessToken:V,isPublicPage:!1,sidebarCollapsed:K,onToggleSidebar:()=>{G(!K)}}),(0,c.jsxs)("div",{className:"flex flex-1 overflow-auto",children:[(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(iC,{accessToken:V,setPage:e=>{let s=new URLSearchParams(I);s.set("page",e),window.history.pushState(null,"","?".concat(s.toString())),q(e)},userRole:e,defaultSelectedKey:U,collapsed:K})}),"api-keys"==U?(0,c.jsx)(sQ,{userID:F,userRole:e,premiumUser:t,teams:o,keys:v,setUserRole:s,userEmail:i,setUserEmail:n,setTeams:x,setKeys:y,organizations:b,addKey:H,createClicked:L}):"models"==U?(0,c.jsx)(lC,{userID:F,userRole:e,token:E,keys:v,accessToken:V,modelData:A,setModelData:T,premiumUser:t,teams:o}):"llm-playground"==U?(0,c.jsx)(ia,{userID:F,userRole:e,token:E,accessToken:V,disabledPersonalKeyCreation:a}):"users"==U?(0,c.jsx)(lq,{userID:F,userRole:e,token:E,keys:v,teams:o,accessToken:V,setKeys:y}):"teams"==U?(0,c.jsx)(lH,{teams:o,setTeams:x,searchParams:I,accessToken:V,userID:F,userRole:e,organizations:b,premiumUser:t}):"organizations"==U?(0,c.jsx)(lW,{organizations:b,setOrganizations:_,userModels:N,accessToken:V,userRole:e,premiumUser:t}):"admin-panel"==U?(0,c.jsx)(l8,{setTeams:x,searchParams:I,accessToken:V,userID:F,showSSOBanner:S,premiumUser:t,proxySettings:w}):"api_ref"==U?(0,c.jsx)(rp,{proxySettings:w}):"settings"==U?(0,c.jsx)(an,{userID:F,userRole:e,accessToken:V,premiumUser:t}):"budgets"==U?(0,c.jsx)(av,{accessToken:V}):"guardrails"==U?(0,c.jsx)(ny,{accessToken:V,userRole:e}):"prompts"==U?(0,c.jsx)(nw,{accessToken:V,userRole:e}):"transform-request"==U?(0,c.jsx)(nk,{accessToken:V}):"general-settings"==U?(0,c.jsx)(ap,{userID:F,userRole:e,accessToken:V,modelData:A}):"ui-theme"==U?(0,c.jsx)(oT,{userID:F,userRole:e,accessToken:V}):"model-hub-table"==U?(0,c.jsx)(aW.Z,{accessToken:V,publicPage:!1,premiumUser:t,userRole:e}):"caching"==U?(0,c.jsx)(iq,{userID:F,userRole:e,token:E,accessToken:V,premiumUser:t}):"pass-through-settings"==U?(0,c.jsx)(lw,{userID:F,userRole:e,accessToken:V,modelData:A}):"logs"==U?(0,c.jsx)(aY,{userID:F,userRole:e,token:E,accessToken:V,allTeams:null!=o?o:[],premiumUser:t}):"mcp-servers"==U?(0,c.jsx)(oa,{accessToken:V,userRole:e,userID:F}):"tag-management"==U?(0,c.jsx)(op,{accessToken:V,userRole:e,userID:F}):"vector-stores"==U?(0,c.jsx)(oA,{accessToken:V,userRole:e,userID:F}):"new_usage"==U?(0,c.jsx)(rh,{userID:F,userRole:e,accessToken:V,teams:null!=o?o:[],premiumUser:t}):(0,c.jsx)(iP,{userID:F,userRole:e,token:E,accessToken:V,keys:v,premiumUser:t})]})]})})})})}}},function(e){e.O(0,[665,990,50,521,866,313,49,162,851,971,117,744],function(){return e(e.s=31283)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/page-a5ca703846f872ee.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/page-a5ca703846f872ee.js deleted file mode 100644 index 752b3295241..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/page-a5ca703846f872ee.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{36362:function(e,s,t){Promise.resolve().then(t.bind(t,98412))},12011:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return y}});var l=t(57437),a=t(2265),r=t(99376),i=t(20831),n=t(94789),o=t(12514),c=t(49804),d=t(67101),m=t(84264),u=t(49566),x=t(96761),h=t(84566),p=t(19250),g=t(14474),j=t(13634),f=t(73002),v=t(3914);function y(){let[e]=j.Z.useForm(),s=(0,r.useSearchParams)();(0,v.e)("token");let t=s.get("invitation_id"),y=s.get("action"),[b,_]=(0,a.useState)(null),[N,Z]=(0,a.useState)(""),[w,k]=(0,a.useState)(""),[S,C]=(0,a.useState)(null),[I,A]=(0,a.useState)(""),[T,E]=(0,a.useState)(""),[L,P]=(0,a.useState)(!0);return(0,a.useEffect)(()=>{(0,p.getUiConfig)().then(e=>{console.log("ui config in onboarding.tsx:",e),P(!1)})},[]),(0,a.useEffect)(()=>{t&&!L&&(0,p.getOnboardingCredentials)(t).then(e=>{let s=e.login_url;console.log("login_url:",s),A(s);let t=e.token,l=(0,g.o)(t);E(t),console.log("decoded:",l),_(l.key),console.log("decoded user email:",l.user_email),k(l.user_email),C(l.user_id)})},[t,L]),(0,l.jsx)("div",{className:"mx-auto w-full max-w-md mt-10",children:(0,l.jsxs)(o.Z,{children:[(0,l.jsx)(x.Z,{className:"text-sm mb-5 text-center",children:"\uD83D\uDE85 LiteLLM"}),(0,l.jsx)(x.Z,{className:"text-xl",children:"reset_password"===y?"Reset Password":"Sign up"}),(0,l.jsx)(m.Z,{children:"reset_password"===y?"Reset your password to access Admin UI.":"Claim your user account to login to Admin UI."}),"reset_password"!==y&&(0,l.jsx)(n.Z,{className:"mt-4",title:"SSO",icon:h.GH$,color:"sky",children:(0,l.jsxs)(d.Z,{numItems:2,className:"flex justify-between items-center",children:[(0,l.jsx)(c.Z,{children:"SSO is under the Enterprise Tier."}),(0,l.jsx)(c.Z,{children:(0,l.jsx)(i.Z,{variant:"primary",className:"mb-2",children:(0,l.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"Get Free Trial"})})})]})}),(0,l.jsxs)(j.Z,{className:"mt-10 mb-5 mx-auto",layout:"vertical",onFinish:e=>{console.log("in handle submit. accessToken:",b,"token:",T,"formValues:",e),b&&T&&(e.user_email=w,S&&t&&(0,p.claimOnboardingToken)(b,t,S,e.password).then(e=>{let s="/ui/";s+="?login=success",document.cookie="token="+T,console.log("redirecting to:",s);let t=(0,p.getProxyBaseUrl)();console.log("proxyBaseUrl:",t),t?window.location.href=t+s:window.location.href=s}))},children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(j.Z.Item,{label:"Email Address",name:"user_email",children:(0,l.jsx)(u.Z,{type:"email",disabled:!0,value:w,defaultValue:w,className:"max-w-md"})}),(0,l.jsx)(j.Z.Item,{label:"Password",name:"password",rules:[{required:!0,message:"password required to sign up"}],help:"reset_password"===y?"Enter your new password":"Create a password for your account",children:(0,l.jsx)(u.Z,{placeholder:"",type:"password",className:"max-w-md"})})]}),(0,l.jsx)("div",{className:"mt-10",children:(0,l.jsx)(f.ZP,{htmlType:"submit",children:"reset_password"===y?"Reset Password":"Sign Up"})})]})]})})}},98412:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return oP}});var l,a,r,i,n,o,c=t(57437),d=t(2265),m=t(99376),u=t(14474),x=t(21623),h=t(29827),p=t(65373),g=t(69734),j=t(19250);let f=async(e,s,t,l,a)=>{let r;r="Admin"!=t&&"Admin Viewer"!=t?await (0,j.teamListCall)(e,(null==l?void 0:l.organization_id)||null,s):await (0,j.teamListCall)(e,(null==l?void 0:l.organization_id)||null),console.log("givenTeams: ".concat(r)),a(r)};var v=t(49804),y=t(67101),b=t(20831),_=t(49566),N=t(87452),Z=t(88829),w=t(72208),k=t(84264),S=t(96761),C=t(29233),I=t(52787),A=t(13634),T=t(82680),E=t(29967),L=t(73002),P=t(64482),M=t(30150),O=e=>{let{step:s=.01,style:t={width:"100%"},placeholder:l="Enter a numerical value",min:a,max:r,onChange:i,...n}=e;return(0,c.jsx)(M.Z,{onWheel:e=>e.currentTarget.blur(),step:s,style:t,placeholder:l,min:a,max:r,onChange:i,...n})};let D=async(e,s,t)=>{try{if(null===e||null===s)return;if(null!==t){let l=(await (0,j.modelAvailableCall)(t,e,s,!0,null,!0)).data.map(e=>e.id),a=[],r=[];return l.forEach(e=>{e.endsWith("/*")?a.push(e):r.push(e)}),[...a,...r]}}catch(e){console.error("Error fetching user models:",e)}},F=e=>{if(e.endsWith("/*")){let s=e.replace("/*","");return"All ".concat(s," models")}return e},R=(e,s)=>{let t=[],l=[];return console.log("teamModels",e),console.log("allModels",s),e.forEach(e=>{if(e.endsWith("/*")){let a=e.replace("/*",""),r=s.filter(e=>e.startsWith(a+"/"));l.push(...r),t.push(e)}else l.push(e)}),[...t,...l].filter((e,s,t)=>t.indexOf(e)===s)};var z=t(63610),U=e=>{let{onChange:s,value:t,className:l,accessToken:a,placeholder:r="Select vector stores",disabled:i=!1}=e,[n,o]=(0,d.useState)([]),[m,u]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{(async()=>{if(a){u(!0);try{let e=await (0,j.vectorStoreListCall)(a);e.data&&o(e.data)}catch(e){console.error("Error fetching vector stores:",e)}finally{u(!1)}}})()},[a]),(0,c.jsx)("div",{children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:r,onChange:s,value:t,loading:m,className:l,options:n.map(e=>({label:"".concat(e.vector_store_name||e.vector_store_id," (").concat(e.vector_store_id,")"),value:e.vector_store_id,title:e.vector_store_description||e.vector_store_id})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"},disabled:i})})},q=e=>{let{teams:s,value:t,onChange:l,disabled:a}=e;return console.log("disabled",a),(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Search or select a team",value:t,onChange:l,disabled:a,filterOption:(e,t)=>{if(!t)return!1;let l=null==s?void 0:s.find(e=>e.team_id===t.key);if(!l)return!1;let a=e.toLowerCase().trim(),r=(l.team_alias||"").toLowerCase(),i=(l.team_id||"").toLowerCase();return r.includes(a)||i.includes(a)},optionFilterProp:"children",children:null==s?void 0:s.map(e=>(0,c.jsxs)(I.default.Option,{value:e.team_id,children:[(0,c.jsx)("span",{className:"font-medium",children:e.team_alias})," ",(0,c.jsxs)("span",{className:"text-gray-500",children:["(",e.team_id,")"]})]},e.team_id))})},V=t(15424),B=t(89970),K=t(23496),G=t(12514),H=t(91777),Y=t(82182),J=t(22452),W=t(74998);(l=i||(i={})).Braintrust="Braintrust",l.CustomCallbackAPI="Custom Callback API",l.Datadog="Datadog",l.Langfuse="Langfuse",l.LangfuseOtel="LangfuseOtel",l.LangSmith="LangSmith",l.Lago="Lago",l.OpenMeter="OpenMeter",l.OTel="Open Telemetry",l.S3="S3",l.Arize="Arize";let $={Braintrust:"braintrust",CustomCallbackAPI:"custom_callback_api",Datadog:"datadog",Langfuse:"langfuse",LangfuseOtel:"langfuse_otel",LangSmith:"langsmith",Lago:"lago",OpenMeter:"openmeter",OTel:"otel",S3:"s3",Arize:"arize"},Q=Object.fromEntries(Object.entries($).map(e=>{let[s,t]=e;return[t,s]})),X=e=>e.map(e=>Q[e]||e),ee=e=>e.map(e=>$[e]||e),es="/ui/assets/logos/",et={Langfuse:{logo:"".concat(es,"langfuse.png"),supports_key_team_logging:!0,dynamic_params:{langfuse_public_key:"text",langfuse_secret_key:"password",langfuse_host:"text"},description:"Langfuse v2 Logging Integration"},LangfuseOtel:{logo:"".concat(es,"langfuse.png"),supports_key_team_logging:!0,dynamic_params:{langfuse_public_key:"text",langfuse_secret_key:"password",langfuse_host:"text"},description:"Langfuse v3 OTEL Logging Integration"},Arize:{logo:"".concat(es,"arize.png"),supports_key_team_logging:!0,dynamic_params:{arize_api_key:"password",arize_space_id:"text"},description:"Arize Logging Integration"},LangSmith:{logo:"".concat(es,"langsmith.png"),supports_key_team_logging:!0,dynamic_params:{langsmith_api_key:"password",langsmith_project:"text",langsmith_base_url:"text",langsmith_sampling_rate:"number"},description:"Langsmith Logging Integration"},Braintrust:{logo:"".concat(es,"braintrust.png"),supports_key_team_logging:!1,dynamic_params:{},description:"Braintrust Logging Integration"},"Custom Callback API":{logo:"".concat(es,"custom.svg"),supports_key_team_logging:!0,dynamic_params:{},description:"Custom Callback API Logging Integration"},Datadog:{logo:"".concat(es,"datadog.png"),supports_key_team_logging:!1,dynamic_params:{},description:"Datadog Logging Integration"},Lago:{logo:"".concat(es,"lago.svg"),supports_key_team_logging:!1,dynamic_params:{},description:"Lago Billing Logging Integration"},OpenMeter:{logo:"".concat(es,"openmeter.png"),supports_key_team_logging:!1,dynamic_params:{},description:"OpenMeter Logging Integration"},"Open Telemetry":{logo:"".concat(es,"otel.png"),supports_key_team_logging:!1,dynamic_params:{},description:"OpenTelemetry Logging Integration"},S3:{logo:"".concat(es,"aws.svg"),supports_key_team_logging:!1,dynamic_params:{},description:"S3 Bucket (AWS) Logging Integration"}},{Option:el}=I.default;var ea=e=>{let{value:s=[],onChange:t,disabledCallbacks:l=[],onDisabledCallbacksChange:a}=e,r=Object.entries(et).filter(e=>{let[s,t]=e;return t.supports_key_team_logging}).map(e=>{let[s,t]=e;return s}),i=Object.keys(et),n=e=>{null==t||t(e)},o=e=>{n(s.filter((s,t)=>t!==e))},d=(e,t,l)=>{let a=[...s];if("callback_name"===t){let s=$[l]||l;a[e]={...a[e],[t]:s,callback_vars:{}}}else a[e]={...a[e],[t]:l};n(a)},m=(e,t,l)=>{let a=[...s];a[e]={...a[e],callback_vars:{...a[e].callback_vars,[t]:l}},n(a)},u=(e,s)=>{var t,l;if(!e.callback_name)return null;let a=null===(t=Object.entries($).find(s=>{let[t,l]=s;return l===e.callback_name}))||void 0===t?void 0:t[0];if(!a)return null;let r=(null===(l=et[a])||void 0===l?void 0:l.dynamic_params)||{};return 0===Object.keys(r).length?null:(0,c.jsxs)("div",{className:"mt-6 pt-4 border-t border-gray-100",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2 mb-4",children:[(0,c.jsx)("div",{className:"w-3 h-3 bg-blue-100 rounded-full flex items-center justify-center",children:(0,c.jsx)("div",{className:"w-1.5 h-1.5 bg-blue-500 rounded-full"})}),(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Integration Parameters"})]}),(0,c.jsx)("div",{className:"grid grid-cols-1 gap-4",children:Object.entries(r).map(t=>{let[l,a]=t;return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 capitalize flex items-center space-x-1",children:[(0,c.jsx)("span",{children:l.replace(/_/g," ")}),(0,c.jsx)(B.Z,{title:"Environment variable reference recommended: os.environ/".concat(l.toUpperCase()),children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})}),"password"===a&&(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-yellow-100 text-yellow-800",children:"Sensitive"}),"number"===a&&(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-yellow-100 text-yellow-800",children:"Number"})]}),"number"===a&&(0,c.jsx)("span",{className:"text-xs text-gray-500",children:"Value must be between 0 and 1"}),"number"===a?(0,c.jsx)(O,{step:.01,width:400,placeholder:"os.environ/".concat(l.toUpperCase()),value:e.callback_vars[l]||"",onChange:e=>m(s,l,e.target.value)}):(0,c.jsx)(_.Z,{type:"password"===a?"password":"text",placeholder:"os.environ/".concat(l.toUpperCase()),value:e.callback_vars[l]||"",onChange:e=>m(s,l,e.target.value)})]},l)})})]})};return(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)(H.Z,{className:"w-5 h-5 text-red-500"}),(0,c.jsx)("span",{className:"text-base font-semibold text-gray-800",children:"Disabled Callbacks"}),(0,c.jsx)(B.Z,{title:"Select callbacks to disable for this key. Disabled callbacks will not receive any logging data.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help"})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Disabled Callbacks"}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select callbacks to disable",value:l,onChange:e=>{let s=ee(e);null==a||a(s)},style:{width:"100%"},optionLabelProp:"label",children:i.map(e=>{var s,t;let l=null===(s=et[e])||void 0===s?void 0:s.logo,a=null===(t=et[e])||void 0===t?void 0:t.description;return(0,c.jsx)(el,{value:e,label:e,children:(0,c.jsx)(B.Z,{title:a,placement:"right",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[l&&(0,c.jsx)("img",{src:l,alt:e,className:"w-4 h-4 object-contain",onError:s=>{let t=s.target,l=t.parentElement;if(l){let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=e.charAt(0),l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e})]})})},e)})}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"Select callbacks that should be disabled for this key. These callbacks will not receive any logging data."})]})]}),(0,c.jsx)(K.Z,{}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)(Y.Z,{className:"w-5 h-5 text-blue-500"}),(0,c.jsx)("span",{className:"text-base font-semibold text-gray-800",children:"Logging Integrations"}),(0,c.jsx)(B.Z,{title:"Configure callback logging integrations for this team.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help"})})]}),(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{n([...s,{callback_name:"",callback_type:"success",callback_vars:{}}])},icon:J.Z,size:"sm",className:"hover:border-blue-400 hover:text-blue-500",type:"button",children:"Add Integration"})]}),(0,c.jsx)("div",{className:"space-y-4",children:s.map((e,s)=>{var t,l;let a=e.callback_name?null===(t=Object.entries($).find(s=>{let[t,l]=s;return l===e.callback_name}))||void 0===t?void 0:t[0]:void 0,i=a?null===(l=et[a])||void 0===l?void 0:l.logo:null;return(0,c.jsxs)(G.Z,{className:"border border-gray-200 shadow-sm hover:shadow-md transition-shadow duration-200",decoration:"top",decorationColor:"blue",children:[(0,c.jsxs)("div",{className:"flex justify-between items-start mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[i&&(0,c.jsx)("img",{src:i,alt:a,className:"w-5 h-5 object-contain"}),(0,c.jsxs)("span",{className:"text-sm font-medium",children:[a||"New Integration"," Configuration"]})]}),(0,c.jsx)(b.Z,{variant:"light",onClick:()=>o(s),icon:W.Z,size:"xs",color:"red",className:"hover:bg-red-50",type:"button",children:"Remove"})]}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Integration Type"}),(0,c.jsx)(I.default,{value:a,placeholder:"Select integration",onChange:e=>d(s,"callback_name",e),className:"w-full",optionLabelProp:"label",children:r.map(e=>{var s,t;let l=null===(s=et[e])||void 0===s?void 0:s.logo,a=null===(t=et[e])||void 0===t?void 0:t.description;return(0,c.jsx)(el,{value:e,label:e,children:(0,c.jsx)(B.Z,{title:a,placement:"right",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[l&&(0,c.jsx)("img",{src:l,alt:e,className:"w-4 h-4 object-contain",onError:s=>{let t=s.target,l=t.parentElement;if(l){let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=e.charAt(0),l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e})]})})},e)})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Event Type"}),(0,c.jsxs)(I.default,{value:e.callback_type,onChange:e=>d(s,"callback_type",e),className:"w-full",children:[(0,c.jsx)(el,{value:"success",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{children:"Success Only"})]})}),(0,c.jsx)(el,{value:"failure",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-red-500 rounded-full"}),(0,c.jsx)("span",{children:"Failure Only"})]})}),(0,c.jsx)(el,{value:"success_and_failure",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{children:"Success & Failure"})]})})]})]})]}),u(e,s)]})]},s)})}),0===s.length&&(0,c.jsxs)("div",{className:"text-center py-12 text-gray-500 border-2 border-dashed border-gray-200 rounded-lg bg-gray-50/50",children:[(0,c.jsx)(Y.Z,{className:"w-12 h-12 text-gray-300 mb-3 mx-auto"}),(0,c.jsx)("div",{className:"text-base font-medium mb-1",children:"No logging integrations configured"}),(0,c.jsx)("div",{className:"text-sm text-gray-400",children:'Click "Add Integration" to configure logging for this team'})]})]})},er=function(e){let{value:s,onChange:t,premiumUser:l=!1,disabledCallbacks:a=[],onDisabledCallbacksChange:r}=e;return l?(0,c.jsx)(ea,{value:s,onChange:t,disabledCallbacks:a,onDisabledCallbacksChange:r}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex flex-wrap gap-2 mb-3",children:[(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-green-50 border border-green-200 text-green-800 text-sm font-medium opacity-50",children:"✨ langfuse-logging"}),(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-green-50 border border-green-200 text-green-800 text-sm font-medium opacity-50",children:"✨ datadog-logging"})]}),(0,c.jsx)("div",{className:"p-3 bg-yellow-50 border border-yellow-200 rounded-lg",children:(0,c.jsxs)(k.Z,{className:"text-sm text-yellow-800",children:["Setting Key/Team logging settings is a LiteLLM Enterprise feature. Global Logging Settings are available for all free users. Get a trial key"," ",(0,c.jsx)("a",{href:"https://www.litellm.ai/#pricing",target:"_blank",rel:"noopener noreferrer",className:"underline",children:"here"}),"."]})})]})},ei=t(57365),en=t(93192),eo=t(9114);function ec(e){let{isInvitationLinkModalVisible:s,setIsInvitationLinkModalVisible:t,baseUrl:l,invitationLinkData:a,modalType:r="invitation"}=e,{Title:i,Paragraph:n}=en.default,o=()=>{if(!l)return"";let e=new URL(l).pathname,s=e&&"/"!==e?"".concat(e,"/ui"):"ui";if(null==a?void 0:a.has_user_setup_sso)return new URL(s,l).toString();let t="".concat(s,"?invitation_id=").concat(null==a?void 0:a.id);return"resetPassword"===r&&(t+="&action=reset_password"),new URL(t,l).toString()};return(0,c.jsxs)(T.Z,{title:"invitation"===r?"Invitation Link":"Reset Password Link",visible:s,width:800,footer:null,onOk:()=>{t(!1)},onCancel:()=>{t(!1)},children:[(0,c.jsx)(n,{children:"invitation"===r?"Copy and send the generated link to onboard this user to the proxy.":"Copy and send the generated link to the user to reset their password."}),(0,c.jsxs)("div",{className:"flex justify-between pt-5 pb-2",children:[(0,c.jsx)(k.Z,{className:"text-base",children:"User ID"}),(0,c.jsx)(k.Z,{children:null==a?void 0:a.user_id})]}),(0,c.jsxs)("div",{className:"flex justify-between pt-5 pb-2",children:[(0,c.jsx)(k.Z,{children:"invitation"===r?"Invitation Link":"Reset Password Link"}),(0,c.jsx)(k.Z,{children:(0,c.jsx)(k.Z,{children:o()})})]}),(0,c.jsx)("div",{className:"flex justify-end mt-5",children:(0,c.jsx)(C.CopyToClipboard,{text:o(),onCopy:()=>eo.Z.success("Copied!"),children:(0,c.jsx)(b.Z,{variant:"primary",children:"invitation"===r?"Copy invitation link":"Copy password reset link"})})})]})}var ed=t(65319),em=t(72188),eu=t(73879),ex=t(34310),eh=t(38434),ep=t(26349),eg=t(35291),ej=t(3632),ef=t(15452),ev=t.n(ef),ey=t(71157),eb=t(44643),e_=t(88532),eN=e=>{let{accessToken:s,teams:t,possibleUIRoles:l,onUsersCreated:a}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)([]),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(null),[y,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)(null),[w,S]=(0,d.useState)("http://localhost:4000");(0,d.useEffect)(()=>{(async()=>{try{let e=await (0,j.getProxyUISettings)(s);Z(e)}catch(e){console.error("Error fetching UI settings:",e)}})(),S(new URL("/",window.location.href).toString())},[s]);let I=async()=>{u(!0);let e=n.map(e=>({...e,status:"pending"}));o(e);let t=!1;for(let a=0;ae.trim()).filter(Boolean),0===e.teams.length&&delete e.teams),n.models&&"string"==typeof n.models&&""!==n.models.trim()&&(e.models=n.models.split(",").map(e=>e.trim()).filter(Boolean),0===e.models.length&&delete e.models),n.max_budget&&""!==n.max_budget.toString().trim()){let s=parseFloat(n.max_budget.toString());!isNaN(s)&&s>0&&(e.max_budget=s)}n.budget_duration&&""!==n.budget_duration.trim()&&(e.budget_duration=n.budget_duration.trim()),n.metadata&&"string"==typeof n.metadata&&""!==n.metadata.trim()&&(e.metadata=n.metadata.trim()),console.log("Sending user data:",e);let r=await (0,j.userCreateCall)(s,null,e);if(console.log("Full response:",r),r&&(r.key||r.user_id)){t=!0,console.log("Success case triggered");let e=(null===(l=r.data)||void 0===l?void 0:l.user_id)||r.user_id;try{if(null==N?void 0:N.SSO_ENABLED){let e=new URL("/ui",w).toString();o(s=>s.map((s,t)=>t===a?{...s,status:"success",key:r.key||r.user_id,invitation_link:e}:s))}else{let t=await (0,j.invitationCreateCall)(s,e),l=new URL("/ui?invitation_id=".concat(t.id),w).toString();o(e=>e.map((e,s)=>s===a?{...e,status:"success",key:r.key||r.user_id,invitation_link:l}:e))}}catch(e){console.error("Error creating invitation:",e),o(e=>e.map((e,s)=>s===a?{...e,status:"success",key:r.key||r.user_id,error:"User created but failed to generate invitation link"}:e))}}else{console.log("Error case triggered");let e=(null==r?void 0:r.error)||"Failed to create user";console.log("Error message:",e),o(s=>s.map((s,t)=>t===a?{...s,status:"failed",error:e}:s))}}catch(s){console.error("Caught error:",s);let e=(null==s?void 0:null===(i=s.response)||void 0===i?void 0:null===(r=i.data)||void 0===r?void 0:r.error)||(null==s?void 0:s.message)||String(s);o(s=>s.map((s,t)=>t===a?{...s,status:"failed",error:e}:s))}}u(!1),t&&a&&a()};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(b.Z,{className:"mb-0",onClick:()=>i(!0),children:"+ Bulk Invite Users"}),(0,c.jsx)(T.Z,{title:"Bulk Invite Users",visible:r,width:800,onCancel:()=>i(!1),bodyStyle:{maxHeight:"70vh",overflow:"auto"},footer:null,children:(0,c.jsx)("div",{className:"flex flex-col",children:0===n.length?(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsxs)("div",{className:"flex items-center mb-4",children:[(0,c.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center mr-3",children:"1"}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Download and fill the template"})]}),(0,c.jsxs)("div",{className:"ml-11 mb-6",children:[(0,c.jsx)("p",{className:"mb-4",children:"Add multiple users at once by following these steps:"}),(0,c.jsxs)("ol",{className:"list-decimal list-inside space-y-2 ml-2 mb-4",children:[(0,c.jsx)("li",{children:"Download our CSV template"}),(0,c.jsx)("li",{children:"Add your users' information to the spreadsheet"}),(0,c.jsx)("li",{children:"Save the file and upload it here"}),(0,c.jsx)("li",{children:"After creation, download the results file containing the API keys for each user"})]}),(0,c.jsxs)("div",{className:"bg-gray-50 p-4 rounded-md border border-gray-200 mb-4",children:[(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Template Column Names"}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-red-500 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"user_email"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:"User's email address (required)"})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-red-500 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"user_role"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'User\'s role (one of: "proxy_admin", "proxy_admin_view_only", "internal_user", "internal_user_view_only")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"teams"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Comma-separated team IDs (e.g., "team-1,team-2")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"max_budget"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Maximum budget as a number (e.g., "100")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"budget_duration"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Budget reset period (e.g., "30d", "1mo")'})]})]}),(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"w-3 h-3 rounded-full bg-gray-300 mt-1.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"font-medium",children:"models"}),(0,c.jsx)("p",{className:"text-sm text-gray-600",children:'Comma-separated allowed models (e.g., "gpt-3.5-turbo,gpt-4")'})]})]})]})]}),(0,c.jsxs)(b.Z,{onClick:()=>{let e=new Blob([ev().unparse([["user_email","user_role","teams","max_budget","budget_duration","models"],["user@example.com","internal_user","team-id-1,team-id-2","100","30d","gpt-3.5-turbo,gpt-4"]])],{type:"text/csv"}),s=window.URL.createObjectURL(e),t=document.createElement("a");t.href=s,t.download="bulk_users_template.csv",document.body.appendChild(t),t.click(),document.body.removeChild(t),window.URL.revokeObjectURL(s)},size:"lg",className:"w-full md:w-auto",children:[(0,c.jsx)(eu.Z,{className:"mr-2"})," Download CSV Template"]})]}),(0,c.jsxs)("div",{className:"flex items-center mb-4",children:[(0,c.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center mr-3",children:"2"}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Upload your completed CSV"})]}),(0,c.jsxs)("div",{className:"ml-11",children:[y?(0,c.jsxs)("div",{className:"mb-4 p-4 rounded-md border ".concat(f?"bg-red-50 border-red-200":"bg-blue-50 border-blue-200"),children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center",children:[f?(0,c.jsx)(ex.Z,{className:"text-red-500 text-xl mr-3"}):(0,c.jsx)(eh.Z,{className:"text-blue-500 text-xl mr-3"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(en.default.Text,{strong:!0,className:f?"text-red-800":"text-blue-800",children:y.name}),(0,c.jsxs)(en.default.Text,{className:"block text-xs ".concat(f?"text-red-600":"text-blue-600"),children:[(y.size/1024).toFixed(1)," KB • ",new Date().toLocaleDateString()]})]})]}),(0,c.jsxs)(b.Z,{size:"xs",variant:"secondary",onClick:()=>{_(null),o([]),h(null),g(null),v(null)},className:"flex items-center",children:[(0,c.jsx)(ep.Z,{className:"mr-1"})," Remove"]})]}),f?(0,c.jsxs)("div",{className:"mt-3 text-red-600 text-sm flex items-start",children:[(0,c.jsx)(eg.Z,{className:"mr-2 mt-0.5"}),(0,c.jsx)("span",{children:f})]}):!p&&(0,c.jsxs)("div",{className:"mt-3 flex items-center",children:[(0,c.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-1.5",children:(0,c.jsx)("div",{className:"bg-blue-500 h-1.5 rounded-full w-full animate-pulse"})}),(0,c.jsx)("span",{className:"ml-2 text-xs text-blue-600",children:"Processing..."})]})]}):(0,c.jsx)(ed.default,{beforeUpload:e=>((h(null),g(null),v(null),_(e),"text/csv"===e.type||e.name.endsWith(".csv"))?e.size>5242880?v("File is too large (".concat((e.size/1048576).toFixed(1)," MB). Please upload a CSV file smaller than 5MB.")):ev().parse(e,{complete:e=>{if(!e.data||0===e.data.length){g("The CSV file appears to be empty. Please upload a file with data."),o([]);return}if(1===e.data.length){g("The CSV file only contains headers but no user data. Please add user data to your CSV."),o([]);return}let s=e.data[0];if(0===s.length||1===s.length&&""===s[0]){g("The CSV file doesn't contain any column headers. Please make sure your CSV has headers."),o([]);return}let l=["user_email","user_role"].filter(e=>!s.includes(e));if(l.length>0){g("Your CSV is missing these required columns: ".concat(l.join(", "),". Please add these columns to your CSV file.")),o([]);return}try{let l=e.data.slice(1).map((e,l)=>{var a,r,i,n,o,c;if(0===e.length||1===e.length&&""===e[0])return null;if(e.length=parseFloat(d.max_budget.toString())&&m.push("Max budget must be greater than 0")),d.budget_duration&&!d.budget_duration.match(/^\d+[dhmwy]$|^\d+mo$/)&&m.push('Invalid budget duration format "'.concat(d.budget_duration,'". Use format like "30d", "1mo", "2w", "6h"')),d.teams&&"string"==typeof d.teams&&t&&t.length>0){let e=t.map(e=>e.team_id),s=d.teams.split(",").map(e=>e.trim()).filter(s=>!e.includes(s));s.length>0&&m.push("Unknown team(s): ".concat(s.join(", ")))}return m.length>0&&(d.isValid=!1,d.error=m.join(", ")),d}).filter(Boolean),a=l.filter(e=>e.isValid);o(l),0===l.length?g("No valid data rows found in the CSV file. Please check your file format."):0===a.length?h("No valid users found in the CSV. Please check the errors below and fix your CSV file."):a.length{h("Failed to parse CSV file: ".concat(e.message)),o([])},header:!1}):(v("Invalid file type: ".concat(e.name,". Please upload a CSV file (.csv extension).")),eo.Z.fromBackend("Invalid file type. Please upload a CSV file.")),!1),accept:".csv",maxCount:1,showUploadList:!1,children:(0,c.jsxs)("div",{className:"border-2 border-dashed border-gray-300 rounded-lg p-8 text-center hover:border-blue-500 transition-colors cursor-pointer",children:[(0,c.jsx)(ej.Z,{className:"text-3xl text-gray-400 mb-2"}),(0,c.jsx)("p",{className:"mb-1",children:"Drag and drop your CSV file here"}),(0,c.jsx)("p",{className:"text-sm text-gray-500 mb-3",children:"or"}),(0,c.jsx)(b.Z,{size:"sm",children:"Browse files"}),(0,c.jsx)("p",{className:"text-xs text-gray-500 mt-4",children:"Only CSV files (.csv) are supported"})]})}),p&&(0,c.jsx)("div",{className:"mb-4 p-4 bg-yellow-50 border border-yellow-200 rounded-md",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)(e_.Z,{className:"h-5 w-5 text-yellow-500 mr-2 mt-0.5"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(en.default.Text,{strong:!0,className:"text-yellow-800",children:"CSV Structure Error"}),(0,c.jsx)(en.default.Paragraph,{className:"text-yellow-700 mt-1 mb-0",children:p}),(0,c.jsx)(en.default.Paragraph,{className:"text-yellow-700 mt-2 mb-0",children:"Please download our template and ensure your CSV follows the required format."})]})]})})]})]}):(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsxs)("div",{className:"flex items-center mb-4",children:[(0,c.jsx)("div",{className:"w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center mr-3",children:"3"}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:n.some(e=>"success"===e.status||"failed"===e.status)?"User Creation Results":"Review and create users"})]}),x&&(0,c.jsx)("div",{className:"ml-11 mb-4 p-4 bg-red-50 border border-red-200 rounded-md",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)(eg.Z,{className:"text-red-500 mr-2 mt-1"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:x}),n.some(e=>!e.isValid)&&(0,c.jsxs)("ul",{className:"mt-2 list-disc list-inside text-red-600 text-sm",children:[(0,c.jsx)("li",{children:"Check the table below for specific errors in each row"}),(0,c.jsx)("li",{children:"Common issues include invalid email formats, missing required fields, or incorrect role values"}),(0,c.jsx)("li",{children:"Fix these issues in your CSV file and upload again"})]})]})]})}),(0,c.jsxs)("div",{className:"ml-11",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-3",children:[(0,c.jsx)("div",{className:"flex items-center",children:n.some(e=>"success"===e.status||"failed"===e.status)?(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(k.Z,{className:"text-lg font-medium mr-3",children:"Creation Summary"}),(0,c.jsxs)(k.Z,{className:"text-sm bg-green-100 text-green-800 px-2 py-1 rounded mr-2",children:[n.filter(e=>"success"===e.status).length," Successful"]}),n.some(e=>"failed"===e.status)&&(0,c.jsxs)(k.Z,{className:"text-sm bg-red-100 text-red-800 px-2 py-1 rounded",children:[n.filter(e=>"failed"===e.status).length," Failed"]})]}):(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(k.Z,{className:"text-lg font-medium mr-3",children:"User Preview"}),(0,c.jsxs)(k.Z,{className:"text-sm bg-blue-100 text-blue-800 px-2 py-1 rounded",children:[n.filter(e=>e.isValid).length," of ",n.length," users valid"]})]})}),!n.some(e=>"success"===e.status||"failed"===e.status)&&(0,c.jsxs)("div",{className:"flex space-x-3",children:[(0,c.jsx)(b.Z,{onClick:()=>{o([]),h(null)},variant:"secondary",children:"Back"}),(0,c.jsx)(b.Z,{onClick:I,disabled:0===n.filter(e=>e.isValid).length||m,children:m?"Creating...":"Create ".concat(n.filter(e=>e.isValid).length," Users")})]})]}),n.some(e=>"success"===e.status)&&(0,c.jsx)("div",{className:"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-md",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)("div",{className:"mr-3 mt-1",children:(0,c.jsx)(eb.Z,{className:"h-5 w-5 text-blue-500"})}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium text-blue-800",children:"User creation complete"}),(0,c.jsxs)(k.Z,{className:"block text-sm text-blue-700 mt-1",children:[(0,c.jsx)("span",{className:"font-medium",children:"Next step:"})," Download the credentials file containing API keys and invitation links. Users will need these API keys to make LLM requests through LiteLLM."]})]})]})}),(0,c.jsx)(em.Z,{dataSource:n,columns:[{title:"Row",dataIndex:"rowNumber",key:"rowNumber",width:80},{title:"Email",dataIndex:"user_email",key:"user_email"},{title:"Role",dataIndex:"user_role",key:"user_role"},{title:"Teams",dataIndex:"teams",key:"teams"},{title:"Budget",dataIndex:"max_budget",key:"max_budget"},{title:"Status",key:"status",render:(e,s)=>s.isValid?s.status&&"pending"!==s.status?"success"===s.status?(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(eb.Z,{className:"h-5 w-5 text-green-500 mr-2"}),(0,c.jsx)("span",{className:"text-green-500",children:"Success"})]}),s.invitation_link&&(0,c.jsx)("div",{className:"mt-1",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("span",{className:"text-xs text-gray-500 truncate max-w-[150px]",children:s.invitation_link}),(0,c.jsx)(C.CopyToClipboard,{text:s.invitation_link,onCopy:()=>eo.Z.success("Invitation link copied!"),children:(0,c.jsx)("button",{className:"ml-1 text-blue-500 text-xs hover:text-blue-700",children:"Copy"})})]})})]}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(ey.Z,{className:"h-5 w-5 text-red-500 mr-2"}),(0,c.jsx)("span",{className:"text-red-500",children:"Failed"})]}),s.error&&(0,c.jsx)("span",{className:"text-sm text-red-500 ml-7",children:JSON.stringify(s.error)})]}):(0,c.jsx)("span",{className:"text-gray-500",children:"Pending"}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(ey.Z,{className:"h-5 w-5 text-red-500 mr-2"}),(0,c.jsx)("span",{className:"text-red-500",children:"Invalid"})]}),s.error&&(0,c.jsx)("span",{className:"text-sm text-red-500 ml-7",children:s.error})]})}],size:"small",pagination:{pageSize:5},scroll:{y:300},rowClassName:e=>e.isValid?"":"bg-red-50"}),!n.some(e=>"success"===e.status||"failed"===e.status)&&(0,c.jsxs)("div",{className:"flex justify-end mt-4",children:[(0,c.jsx)(b.Z,{onClick:()=>{o([]),h(null)},variant:"secondary",className:"mr-3",children:"Back"}),(0,c.jsx)(b.Z,{onClick:I,disabled:0===n.filter(e=>e.isValid).length||m,children:m?"Creating...":"Create ".concat(n.filter(e=>e.isValid).length," Users")})]}),n.some(e=>"success"===e.status||"failed"===e.status)&&(0,c.jsxs)("div",{className:"flex justify-end mt-4",children:[(0,c.jsx)(b.Z,{onClick:()=>{o([]),h(null)},variant:"secondary",className:"mr-3",children:"Start New Bulk Import"}),(0,c.jsxs)(b.Z,{onClick:()=>{let e=n.map(e=>({user_email:e.user_email,user_role:e.user_role,status:e.status,key:e.key||"",invitation_link:e.invitation_link||"",error:e.error||""})),s=new Blob([ev().unparse(e)],{type:"text/csv"}),t=window.URL.createObjectURL(s),l=document.createElement("a");l.href=t,l.download="bulk_users_results.csv",document.body.appendChild(l),l.click(),document.body.removeChild(l),window.URL.revokeObjectURL(t)},variant:"primary",className:"flex items-center",children:[(0,c.jsx)(eu.Z,{className:"mr-2"})," Download User Credentials"]})]})]})]})})})]})};let{Option:eZ}=I.default,ew=()=>"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let s=16*Math.random()|0;return("x"==e?s:3&s|8).toString(16)});var ek=e=>{let{userID:s,accessToken:t,teams:l,possibleUIRoles:a,onUserCreated:r,isEmbedded:i=!1}=e,n=(0,h.NL)(),[o,m]=(0,d.useState)(null),[u]=A.Z.useForm(),[x,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)([]),[C,E]=(0,d.useState)(!1),[M,O]=(0,d.useState)(null),[D,R]=(0,d.useState)(null);(0,d.useEffect)(()=>{let e=async()=>{try{let e=await (0,j.modelAvailableCall)(t,s,"any"),l=[];for(let s=0;s{var l,a,c;try{eo.Z.info("Making API Call"),i||p(!0),e.models&&0!==e.models.length||"proxy_admin"===e.user_role||(console.log("formValues.user_role",e.user_role),e.models=["no-default-models"]),console.log("formValues in create user:",e);let a=await (0,j.userCreateCall)(t,null,e);await n.invalidateQueries({queryKey:["userList"]}),console.log("user create Response:",a),f(!0);let c=(null===(l=a.data)||void 0===l?void 0:l.user_id)||a.user_id;if(r&&i){r(c),u.resetFields();return}if(null==o?void 0:o.SSO_ENABLED){let e={id:ew(),user_id:c,is_accepted:!1,accepted_at:null,expires_at:new Date(Date.now()+6048e5),created_at:new Date,created_by:s,updated_at:new Date,updated_by:s,has_user_setup_sso:!0};O(e),E(!0)}else(0,j.invitationCreateCall)(t,c).then(e=>{e.has_user_setup_sso=!1,O(e),E(!0)});eo.Z.success("API user Created"),u.resetFields(),localStorage.removeItem("userData"+s)}catch(s){let e=(null===(c=s.response)||void 0===c?void 0:null===(a=c.data)||void 0===a?void 0:a.detail)||(null==s?void 0:s.message)||"Error creating the user";eo.Z.fromBackend(e),console.error("Error creating the user:",s)}};return i?(0,c.jsxs)(A.Z,{form:u,onFinish:z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"User Email",name:"user_email",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"User Role",name:"user_role",children:(0,c.jsx)(I.default,{children:a&&Object.entries(a).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:"Team ID",name:"team_id",children:(0,c.jsx)(I.default,{placeholder:"Select Team ID",style:{width:"100%"},children:l?l.map(e=>(0,c.jsx)(eZ,{value:e.team_id,children:e.team_alias},e.team_id)):(0,c.jsx)(eZ,{value:null,children:"Default Team"},"default")})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Create User"})})]}):(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{className:"mb-0",onClick:()=>p(!0),children:"+ Invite User"}),(0,c.jsx)(eN,{accessToken:t,teams:l,possibleUIRoles:a}),(0,c.jsxs)(T.Z,{title:"Invite User",visible:x,width:800,footer:null,onOk:()=>{p(!1),u.resetFields()},onCancel:()=>{p(!1),f(!1),u.resetFields()},children:[(0,c.jsx)(k.Z,{className:"mb-1",children:"Create a User who can own keys"}),(0,c.jsxs)(A.Z,{form:u,onFinish:z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"User Email",name:"user_email",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Global Proxy Role"," ",(0,c.jsx)(B.Z,{title:"This is the role that the user will globally on the proxy. This role is independent of any team/org specific roles.",children:(0,c.jsx)(V.Z,{})})]}),name:"user_role",children:(0,c.jsx)(I.default,{children:a&&Object.entries(a).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:"Team ID",className:"gap-2",name:"team_id",help:"If selected, user will be added as a 'user' role to the team.",children:(0,c.jsx)(I.default,{placeholder:"Select Team ID",style:{width:"100%"},children:l?l.map(e=>(0,c.jsx)(eZ,{value:e.team_id,children:e.team_alias},e.team_id)):(0,c.jsx)(eZ,{value:null,children:"Default Team"},"default")})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsxs)(N.Z,{children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)(S.Z,{children:"Personal Key Creation"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)(A.Z.Item,{className:"gap-2",label:(0,c.jsxs)("span",{children:["Models"," ",(0,c.jsx)(B.Z,{title:"Models user has access to, outside of team scope.",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",help:"Models user has access to, outside of team scope.",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),v.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})})})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Create User"})})]})]}),g&&(0,c.jsx)(ec,{isInvitationLinkModalVisible:C,setIsInvitationLinkModalVisible:E,baseUrl:D||"",invitationLinkData:M})]})},eS=t(7310),eC=t.n(eS),eI=t(20347);let{Option:eA}=I.default,eT=e=>e?({"24h":"daily","7d":"weekly","30d":"monthly"})[e]||e:"Not set";var eE=e=>{let{value:s,onChange:t,className:l="",style:a={}}=e;return(0,c.jsxs)(I.default,{style:{width:"100%",...a},value:s||void 0,onChange:t,className:l,placeholder:"n/a",children:[(0,c.jsx)(eA,{value:"24h",children:"daily"}),(0,c.jsx)(eA,{value:"7d",children:"weekly"}),(0,c.jsx)(eA,{value:"30d",children:"monthly"})]})};function eL(e,s){let t=structuredClone(e);for(let[e,l]of Object.entries(s))e in t&&(t[e]=l);return t}let eP=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return null==e?"-":e.toLocaleString("en-US",{minimumFractionDigits:s,maximumFractionDigits:s})},eM=async function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Copied to clipboard";if(!e)return!1;if(!navigator||!navigator.clipboard||!navigator.clipboard.writeText)return eO(e,s);try{return await navigator.clipboard.writeText(e),eo.Z.success(s),!0}catch(t){return console.error("Clipboard API failed: ",t),eO(e,s)}},eO=(e,s)=>{try{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.left="-999999px",t.style.top="-999999px",t.setAttribute("readonly",""),document.body.appendChild(t),t.focus(),t.select();let l=document.execCommand("copy");if(document.body.removeChild(t),l)return eo.Z.success(s),!0;throw Error("execCommand failed")}catch(e){return eo.Z.fromBackend("Failed to copy to clipboard"),console.error("Failed to copy: ",e),!1}};var eD=e=>{let{onChange:s,value:t,className:l,accessToken:a,placeholder:r="Select MCP servers",disabled:i=!1}=e,[n,o]=(0,d.useState)([]),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1);(0,d.useEffect)(()=>{(async()=>{if(a){h(!0);try{let[e,s]=await Promise.all([(0,j.fetchMCPServers)(a),(0,j.fetchMCPAccessGroups)(a)]),t=Array.isArray(e)?e:e.data||[],l=Array.isArray(s)?s:s.data||[];o(t),u(l)}catch(e){console.error("Error fetching MCP servers or access groups:",e)}finally{h(!1)}}})()},[a]);let p=[...m.map(e=>({label:e,value:e,isAccessGroup:!0,searchText:"".concat(e," Access Group")})),...n.map(e=>({label:"".concat(e.server_name||e.server_id," (").concat(e.server_id,")"),value:e.server_id,isAccessGroup:!1,searchText:"".concat(e.server_name||e.server_id," ").concat(e.server_id," MCP Server")}))],g=[...(null==t?void 0:t.servers)||[],...(null==t?void 0:t.accessGroups)||[]];return(0,c.jsx)("div",{children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:r,onChange:e=>{s({servers:e.filter(e=>!m.includes(e)),accessGroups:e.filter(e=>m.includes(e))})},value:g,loading:x,className:l,showSearch:!0,style:{width:"100%"},disabled:i,filterOption:(e,s)=>{var t;return((null===(t=p.find(e=>e.value===(null==s?void 0:s.value)))||void 0===t?void 0:t.searchText)||"").toLowerCase().includes(e.toLowerCase())},children:p.map(e=>(0,c.jsx)(I.default.Option,{value:e.value,label:e.label,children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,c.jsx)("span",{style:{display:"inline-block",width:8,height:8,borderRadius:"50%",background:e.isAccessGroup?"#52c41a":"#1890ff",flexShrink:0}}),(0,c.jsx)("span",{style:{flex:1},children:e.label}),(0,c.jsx)("span",{style:{color:e.isAccessGroup?"#52c41a":"#1890ff",fontSize:"12px",fontWeight:500,opacity:.8},children:e.isAccessGroup?"Access Group":"MCP Server"})]})},e.value))})})},eF=t(87908),eR=t(61994),ez=t(32489),eU=e=>{let{accessToken:s,selectedServers:t,toolPermissions:l,onChange:a,disabled:r=!1}=e,[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)({}),[u,x]=(0,d.useState)({}),[h,p]=(0,d.useState)({});(0,d.useEffect)(()=>{(async()=>{if(0===t.length){n([]);return}try{let e=await (0,j.fetchMCPServers)(s),l=(Array.isArray(e)?e:e.data||[]).filter(e=>t.includes(e.server_id));n(l)}catch(e){console.error("Error fetching MCP servers:",e),n([])}})()},[t,s]);let g=async e=>{x(s=>({...s,[e]:!0})),p(s=>({...s,[e]:""}));try{let t=await (0,j.listMCPTools)(s,e);t.error?(p(s=>({...s,[e]:t.message||"Failed to fetch tools"})),m(s=>({...s,[e]:[]}))):m(s=>({...s,[e]:t.tools||[]}))}catch(s){console.error("Error fetching tools for server ".concat(e,":"),s),p(s=>({...s,[e]:"Failed to fetch tools"})),m(s=>({...s,[e]:[]}))}finally{x(s=>({...s,[e]:!1}))}};(0,d.useEffect)(()=>{i.forEach(e=>{o[e.server_id]||u[e.server_id]||g(e.server_id)})},[i]);let f=(e,s)=>{let t=l[e]||[],r=t.includes(s)?t.filter(e=>e!==s):[...t,s];a({...l,[e]:r})},v=e=>{let s=o[e]||[];a({...l,[e]:s.map(e=>e.name)})},y=e=>{a({...l,[e]:[]})};return 0===t.length?null:(0,c.jsx)("div",{className:"space-y-4",children:i.map(e=>{let s=e.server_name||e.alias||e.server_id,t=o[e.server_id]||[],a=l[e.server_id]||[],i=u[e.server_id],n=h[e.server_id];return(0,c.jsxs)("div",{className:"border rounded-lg bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between p-4 border-b bg-white rounded-t-lg",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:s}),e.description&&(0,c.jsx)(k.Z,{className:"text-sm text-gray-500",children:e.description})]}),(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[(0,c.jsx)("button",{className:"text-sm text-blue-600 hover:text-blue-700 font-medium",onClick:()=>v(e.server_id),disabled:r||i,children:"Select All"}),(0,c.jsx)("button",{className:"text-sm text-blue-600 hover:text-blue-700 font-medium",onClick:()=>y(e.server_id),disabled:r||i,children:"Deselect All"}),(0,c.jsx)("button",{className:"text-gray-400 hover:text-gray-600",onClick:()=>{},children:(0,c.jsx)(ez.Z,{className:"w-4 h-4"})})]})]}),(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium text-gray-700 mb-3",children:"Available Tools"}),i&&(0,c.jsxs)("div",{className:"flex items-center justify-center py-8",children:[(0,c.jsx)(eF.Z,{size:"large"}),(0,c.jsx)(k.Z,{className:"ml-3 text-gray-500",children:"Loading tools..."})]}),n&&!i&&(0,c.jsxs)("div",{className:"p-4 bg-red-50 border border-red-200 rounded-lg text-center",children:[(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:"Unable to load tools"}),(0,c.jsx)(k.Z,{className:"text-sm text-red-500 mt-1",children:n})]}),!i&&!n&&t.length>0&&(0,c.jsx)("div",{className:"space-y-2",children:t.map(s=>{let t=a.includes(s.name);return(0,c.jsxs)("div",{className:"flex items-start gap-2",children:[(0,c.jsx)(eR.Z,{checked:t,onChange:()=>f(e.server_id,s.name),disabled:r}),(0,c.jsx)("div",{className:"flex-1 min-w-0",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900",children:s.name}),(0,c.jsxs)(k.Z,{className:"text-sm text-gray-500",children:["- ",s.description||"No description"]})]})})]},s.name)})}),!i&&!n&&0===t.length&&(0,c.jsx)("div",{className:"text-center py-6",children:(0,c.jsx)(k.Z,{className:"text-gray-500",children:"No tools available"})})]})]},e.server_id)})})},eq=t(77355),eV=t(93416),eB=t(95704),eK=t(69993);let eG=async e=>{try{let s=await (0,j.modelHubCall)(e);if(console.log("model_info:",s),(null==s?void 0:s.data.length)>0){let e=s.data.map(e=>({model_group:e.model_group,mode:null==e?void 0:e.mode}));return e.sort((e,s)=>e.model_group.localeCompare(s.model_group)),e}return[]}catch(e){throw console.error("Error fetching model info:",e),e}};var eH=e=>{let{accessToken:s,value:t,placeholder:l="Select a Model",onChange:a,disabled:r=!1,style:i,className:n,showLabel:o=!0,labelText:m="Select Model"}=e,[u,x]=(0,d.useState)(t),[h,p]=(0,d.useState)(!1),[g,j]=(0,d.useState)([]),f=(0,d.useRef)(null);return(0,d.useEffect)(()=>{x(t)},[t]),(0,d.useEffect)(()=>{s&&(async()=>{try{let e=await eG(s);console.log("Fetched models for selector:",e),e.length>0&&j(e)}catch(e){console.error("Error fetching model info:",e)}})()},[s]),(0,c.jsxs)("div",{children:[o&&(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(eK.Z,{className:"mr-2"})," ",m]}),(0,c.jsx)(I.default,{value:u,placeholder:l,onChange:e=>{"custom"===e?(p(!0),x(void 0)):(p(!1),x(e),a&&a(e))},options:[...Array.from(new Set(g.map(e=>e.model_group))).map((e,s)=>({value:e,label:e,key:s})),{value:"custom",label:"Enter custom model",key:"custom"}],style:{width:"100%",...i},showSearch:!0,className:"rounded-md ".concat(n||""),disabled:r}),h&&(0,c.jsx)(_.Z,{className:"mt-2",placeholder:"Enter custom model name",onValueChange:e=>{f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{x(e),a&&a(e)},500)},disabled:r})]})},eY=e=>{let{accessToken:s,initialModelAliases:t={},onAliasUpdate:l,showExampleConfig:a=!0}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)({aliasName:"",targetModel:""}),[m,u]=(0,d.useState)(null);(0,d.useEffect)(()=>{i(Object.entries(t).map((e,s)=>{let[t,l]=e;return{id:"".concat(s,"-").concat(t),aliasName:t,targetModel:l}}))},[t]);let x=e=>{u({...e})},h=()=>{if(!m)return;if(!m.aliasName||!m.targetModel){eo.Z.fromBackend("Please provide both alias name and target model");return}if(r.some(e=>e.id!==m.id&&e.aliasName===m.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=r.map(e=>e.id===m.id?m:e);i(e),u(null);let s={};e.forEach(e=>{s[e.aliasName]=e.targetModel}),l&&l(s),eo.Z.success("Alias updated successfully")},p=()=>{u(null)},g=e=>{let s=r.filter(s=>s.id!==e);i(s);let t={};s.forEach(e=>{t[e.aliasName]=e.targetModel}),l&&l(t),eo.Z.success("Alias deleted successfully")},j=r.reduce((e,s)=>(e[s.aliasName]=s.targetModel,e),{});return(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(eB.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Add New Alias"}),(0,c.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Alias Name"}),(0,c.jsx)("input",{type:"text",value:n.aliasName,onChange:e=>o({...n,aliasName:e.target.value}),placeholder:"e.g., gpt-4o",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Target Model"}),(0,c.jsx)(eH,{accessToken:s,value:n.targetModel,placeholder:"Select target model",onChange:e=>o({...n,targetModel:e}),showLabel:!1})]}),(0,c.jsx)("div",{className:"flex items-end",children:(0,c.jsxs)("button",{onClick:()=>{if(!n.aliasName||!n.targetModel){eo.Z.fromBackend("Please provide both alias name and target model");return}if(r.some(e=>e.aliasName===n.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=[...r,{id:"".concat(Date.now(),"-").concat(n.aliasName),aliasName:n.aliasName,targetModel:n.targetModel}];i(e),o({aliasName:"",targetModel:""});let s={};e.forEach(e=>{s[e.aliasName]=e.targetModel}),l&&l(s),eo.Z.success("Alias added successfully")},disabled:!n.aliasName||!n.targetModel,className:"flex items-center px-4 py-2 rounded-md text-sm ".concat(n.aliasName&&n.targetModel?"bg-green-600 text-white hover:bg-green-700":"bg-gray-300 text-gray-500 cursor-not-allowed"),children:[(0,c.jsx)(eq.Z,{className:"w-4 h-4 mr-1"}),"Add Alias"]})})]})]}),(0,c.jsx)(eB.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Manage Existing Aliases"}),(0,c.jsx)("div",{className:"rounded-lg custom-border relative mb-6",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(eB.iA,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(eB.ss,{children:(0,c.jsxs)(eB.SC,{children:[(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Alias Name"}),(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Target Model"}),(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Actions"})]})}),(0,c.jsxs)(eB.RM,{children:[r.map(e=>(0,c.jsx)(eB.SC,{className:"h-8",children:m&&m.id===e.id?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eB.pj,{className:"py-0.5",children:(0,c.jsx)("input",{type:"text",value:m.aliasName,onChange:e=>u({...m,aliasName:e.target.value}),className:"w-full px-2 py-1 border border-gray-300 rounded-md text-sm"})}),(0,c.jsx)(eB.pj,{className:"py-0.5",children:(0,c.jsx)(eH,{accessToken:s,value:m.targetModel,onChange:e=>u({...m,targetModel:e}),showLabel:!1,style:{height:"32px"}})}),(0,c.jsx)(eB.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:h,className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:"Save"}),(0,c.jsx)("button",{onClick:p,className:"text-xs bg-gray-50 text-gray-600 px-2 py-1 rounded hover:bg-gray-100",children:"Cancel"})]})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eB.pj,{className:"py-0.5 text-sm text-gray-900",children:e.aliasName}),(0,c.jsx)(eB.pj,{className:"py-0.5 text-sm text-gray-500",children:e.targetModel}),(0,c.jsx)(eB.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>x(e),className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:(0,c.jsx)(eV.Z,{className:"w-3 h-3"})}),(0,c.jsx)("button",{onClick:()=>g(e.id),className:"text-xs bg-red-50 text-red-600 px-2 py-1 rounded hover:bg-red-100",children:(0,c.jsx)(W.Z,{className:"w-3 h-3"})})]})})]})},e.id)),0===r.length&&(0,c.jsx)(eB.SC,{children:(0,c.jsx)(eB.pj,{colSpan:3,className:"py-0.5 text-sm text-gray-500 text-center",children:"No aliases added yet. Add a new alias above."})})]})]})})}),a&&(0,c.jsxs)(eB.Zb,{children:[(0,c.jsx)(eB.Dx,{className:"mb-4",children:"Configuration Example"}),(0,c.jsx)(eB.xv,{className:"text-gray-600 mb-4",children:"Here's how your current aliases would look in the config:"}),(0,c.jsx)("div",{className:"bg-gray-100 rounded-lg p-4 font-mono text-sm",children:(0,c.jsxs)("div",{className:"text-gray-700",children:["model_aliases:",0===Object.keys(j).length?(0,c.jsxs)("span",{className:"text-gray-500",children:[(0,c.jsx)("br",{}),"\xa0\xa0# No aliases configured yet"]}):Object.entries(j).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{children:[(0,c.jsx)("br",{}),'\xa0\xa0"',s,'": "',t,'"']},s)})]})})]})]})},eJ=t(63709),eW=t(31283);let{Option:e$}=I.default;var eQ=e=>{let{form:s,autoRotationEnabled:t,onAutoRotationChange:l,rotationInterval:a,onRotationIntervalChange:r}=e,i=a&&!["7d","30d","90d","180d","365d"].includes(a),[n,o]=(0,d.useState)(i),[m,u]=(0,d.useState)(i?a:"");return(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Key Expiry Settings"}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 flex items-center space-x-1",children:[(0,c.jsx)("span",{children:"Expire Key"}),(0,c.jsx)(B.Z,{title:"Set when this key should expire. Format: 30s (seconds), 30m (minutes), 30h (hours), 30d (days)",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})})]}),(0,c.jsx)(eW.o,{name:"duration",placeholder:"e.g., 30d",className:"w-full"})]})]}),(0,c.jsx)(K.Z,{}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Auto-Rotation Settings"}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 flex items-center space-x-1",children:[(0,c.jsx)("span",{children:"Enable Auto-Rotation"}),(0,c.jsx)(B.Z,{title:"Key will automatically regenerate at the specified interval for enhanced security.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})})]}),(0,c.jsx)(eJ.Z,{checked:t,onChange:l,size:"default",className:t?"":"bg-gray-400"})]}),t&&(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("label",{className:"text-sm font-medium text-gray-700 flex items-center space-x-1",children:[(0,c.jsx)("span",{children:"Rotation Interval"}),(0,c.jsx)(B.Z,{title:"How often the key should be automatically rotated. Choose the interval that best fits your security requirements.",children:(0,c.jsx)(V.Z,{className:"text-gray-400 cursor-help text-xs"})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)(I.default,{value:n?"custom":a,onChange:e=>{"custom"===e?o(!0):(o(!1),u(""),r(e))},className:"w-full",placeholder:"Select interval",children:[(0,c.jsx)(e$,{value:"7d",children:"7 days"}),(0,c.jsx)(e$,{value:"30d",children:"30 days"}),(0,c.jsx)(e$,{value:"90d",children:"90 days"}),(0,c.jsx)(e$,{value:"180d",children:"180 days"}),(0,c.jsx)(e$,{value:"365d",children:"365 days"}),(0,c.jsx)(e$,{value:"custom",children:"Custom interval"})]}),n&&(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsx)(eW.o,{value:m,onChange:e=>{let s=e.target.value;u(s),r(s)},placeholder:"e.g., 1s, 5m, 2h, 14d"}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"Supported formats: seconds (s), minutes (m), hours (h), days (d)"})]})]})]})]}),t&&(0,c.jsx)("div",{className:"bg-blue-50 p-3 rounded-md text-sm text-blue-700",children:"When rotation occurs, you'll receive a notification with the new key. The old key will be deactivated after a brief grace period."})]})]})};let{Option:eX}=I.default;var e0=e=>{let{type:s,name:t,showDetailedDescriptions:l=!0,className:a="",initialValue:r=null,form:i,onChange:n}=e,o=s.toUpperCase(),d=s.toLowerCase(),m="Select 'guaranteed_throughput' to prevent overallocating ".concat(o," limit when the key belongs to a Team with specific ").concat(o," limits.");return(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:[o," Rate Limit Type"," ",(0,c.jsx)(B.Z,{title:m,children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:t,initialValue:r,className:a,children:(0,c.jsx)(I.default,{defaultValue:l?"default":void 0,placeholder:"Select rate limit type",style:{width:"100%"},optionLabelProp:l?"label":void 0,onChange:e=>{i&&i.setFieldValue(t,e),n&&n(e)},children:l?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eX,{value:"best_effort_throughput",label:"Default",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Default"}),(0,c.jsxs)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:["Best effort throughput - no error if we're overallocating ",d," (Team/Key Limits checked at runtime)."]})]})}),(0,c.jsx)(eX,{value:"guaranteed_throughput",label:"Guaranteed throughput",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Guaranteed throughput"}),(0,c.jsxs)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:["Guaranteed throughput - raise an error if we're overallocating ",d," (also checks model-specific limits)"]})]})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eX,{value:"best_effort_throughput",children:"Best effort throughput"}),(0,c.jsx)(eX,{value:"guaranteed_throughput",children:"Guaranteed throughput"})]})})})};let{Option:e1}=I.default,e2=e=>{let s=[];if(console.log("data:",JSON.stringify(e)),e)for(let t of e)t.metadata&&t.metadata.tags&&s.push(...t.metadata.tags);let t=Array.from(new Set(s)).map(e=>({value:e,label:e}));return console.log("uniqueTags:",t),t},e4=async(e,s,t,l)=>{try{if(null===e||null===s)return[];if(null!==t){let a=(await (0,j.modelAvailableCall)(t,e,s,!0,l,!0)).data.map(e=>e.id);return console.log("available_model_names:",a),a}return[]}catch(e){return console.error("Error fetching user models:",e),[]}},e5=async(e,s,t,l)=>{try{if(null===e||null===s)return;if(null!==t){let a=(await (0,j.modelAvailableCall)(t,e,s)).data.map(e=>e.id);console.log("available_model_names:",a),l(a)}}catch(e){console.error("Error fetching user models:",e)}};var e3=e=>{let{userID:s,team:t,teams:l,userRole:a,accessToken:r,data:i,addKey:n,premiumUser:o=!1}=e,[m]=A.Z.useForm(),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(null),[g,f]=(0,d.useState)(null),[M,D]=(0,d.useState)([]),[R,K]=(0,d.useState)([]),[G,H]=(0,d.useState)("you"),[Y,J]=(0,d.useState)(e2(i)),[W,$]=(0,d.useState)([]),[Q,X]=(0,d.useState)([]),[es,et]=(0,d.useState)([]),[el,ea]=(0,d.useState)(t),[ei,en]=(0,d.useState)(!1),[ec,ed]=(0,d.useState)(null),[em,eu]=(0,d.useState)({}),[ex,eh]=(0,d.useState)([]),[ep,eg]=(0,d.useState)(!1),[ej,ef]=(0,d.useState)([]),[ev,ey]=(0,d.useState)(!1),[eb,e_]=(0,d.useState)([]),[eN,eZ]=(0,d.useState)("default"),[ew,eS]=(0,d.useState)({}),[eA,eT]=(0,d.useState)(!1),[eL,eM]=(0,d.useState)("30d"),eO=()=>{x(!1),m.resetFields(),et([]),e_([]),eZ("default"),eS({}),eT(!1),eM("30d")},eF=()=>{x(!1),p(null),ea(null),m.resetFields(),et([]),e_([]),eZ("default"),eS({}),eT(!1),eM("30d")};(0,d.useEffect)(()=>{s&&a&&r&&e5(s,a,r,D)},[r,s,a]);let eR=async()=>{try{if(null==r)return;let e=await (0,j.fetchMCPAccessGroups)(r);ef(e)}catch(e){console.error("Failed to fetch MCP access groups:",e)}};(0,d.useEffect)(()=>{eR()},[r]),(0,d.useEffect)(()=>{let e=async()=>{try{let e=await (0,j.getPromptsList)(r);X(e.prompts.map(e=>e.prompt_id))}catch(e){console.error("Failed to fetch prompts:",e)}};(async()=>{try{let e=(await (0,j.getGuardrailsList)(r)).guardrails.map(e=>e.guardrail_name);$(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})(),e()},[r]),(0,d.useEffect)(()=>{(async()=>{try{if(r){let e=sessionStorage.getItem("possibleUserRoles");if(e)eu(JSON.parse(e));else{let e=await (0,j.getPossibleUserRoles)(r);sessionStorage.setItem("possibleUserRoles",JSON.stringify(e)),eu(e)}}}catch(e){console.error("Error fetching possible user roles:",e)}})()},[r]);let ez=R.includes("no-default-models")&&!el,eq=async e=>{try{var t,l,a,o,c;let d;let u=null!==(a=null==e?void 0:e.key_alias)&&void 0!==a?a:"",h=null!==(o=null==e?void 0:e.team_id)&&void 0!==o?o:null;if((null!==(c=null==i?void 0:i.filter(e=>e.team_id===h).map(e=>e.key_alias))&&void 0!==c?c:[]).includes(u))throw Error("Key alias ".concat(u," already exists for team with ID ").concat(h,", please provide another key alias"));eo.Z.info("Making API Call"),x(!0),"you"===G&&(e.user_id=s);let g={};try{g=JSON.parse(e.metadata||"{}")}catch(e){console.error("Error parsing metadata:",e)}if("service_account"===G&&(g.service_account_id=e.key_alias),es.length>0&&(g={...g,logging:es.filter(e=>e.callback_name)}),eb.length>0){let e=ee(eb);g={...g,litellm_disabled_callbacks:e}}if(eA&&(e.auto_rotate=!0,e.rotation_interval=eL),e.duration&&(e.duration=e.duration),e.metadata=JSON.stringify(g),e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0&&(e.object_permission={vector_stores:e.allowed_vector_store_ids},delete e.allowed_vector_store_ids),e.allowed_mcp_servers_and_groups&&((null===(t=e.allowed_mcp_servers_and_groups.servers)||void 0===t?void 0:t.length)>0||(null===(l=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===l?void 0:l.length)>0)){e.object_permission||(e.object_permission={});let{servers:s,accessGroups:t}=e.allowed_mcp_servers_and_groups;s&&s.length>0&&(e.object_permission.mcp_servers=s),t&&t.length>0&&(e.object_permission.mcp_access_groups=t),delete e.allowed_mcp_servers_and_groups}let v=e.mcp_tool_permissions||{};Object.keys(v).length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_tool_permissions=v),delete e.mcp_tool_permissions,e.allowed_mcp_access_groups&&e.allowed_mcp_access_groups.length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_access_groups=e.allowed_mcp_access_groups,delete e.allowed_mcp_access_groups),Object.keys(ew).length>0&&(e.aliases=JSON.stringify(ew)),d="service_account"===G?await (0,j.keyCreateServiceAccountCall)(r,e):await (0,j.keyCreateCall)(r,s,e),console.log("key create Response:",d),n(d),p(d.key),f(d.soft_budget),eo.Z.success("API Key Created"),m.resetFields(),localStorage.removeItem("userData"+s)}catch(e){console.log("error in create key:",e),eo.Z.fromBackend("Error creating the key: ".concat(e))}};(0,d.useEffect)(()=>{if(s&&a&&r){var e;e4(s,a,r,null!==(e=null==el?void 0:el.team_id)&&void 0!==e?e:null).then(e=>{var s;K(Array.from(new Set([...null!==(s=null==el?void 0:el.models)&&void 0!==s?s:[],...e])))})}m.setFieldValue("models",[])},[el,r,s,a]);let eV=async e=>{if(!e){eh([]);return}eg(!0);try{let s=new URLSearchParams;if(s.append("user_email",e),null==r)return;let t=(await (0,j.userFilterUICall)(r,s)).map(e=>({label:"".concat(e.user_email," (").concat(e.user_id,")"),value:e.user_id,user:e}));eh(t)}catch(e){console.error("Error fetching users:",e),eo.Z.fromBackend("Failed to search for users")}finally{eg(!1)}},eB=(0,d.useCallback)(eC()(e=>eV(e),300),[r]),eK=(e,s)=>{let t=s.user;m.setFieldsValue({user_id:t.user_id})};return(0,c.jsxs)("div",{children:[a&&eI.LQ.includes(a)&&(0,c.jsx)(b.Z,{className:"mx-auto",onClick:()=>x(!0),children:"+ Create New Key"}),(0,c.jsx)(T.Z,{visible:u,width:1e3,footer:null,onOk:eO,onCancel:eF,children:(0,c.jsxs)(A.Z,{form:m,onFinish:eq,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(S.Z,{className:"mb-4",children:"Key Ownership"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Owned By"," ",(0,c.jsx)(B.Z,{title:"Select who will own this API key",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),className:"mb-4",children:(0,c.jsxs)(E.ZP.Group,{onChange:e=>H(e.target.value),value:G,children:[(0,c.jsx)(E.ZP,{value:"you",children:"You"}),(0,c.jsx)(E.ZP,{value:"service_account",children:"Service Account"}),"Admin"===a&&(0,c.jsx)(E.ZP,{value:"another_user",children:"Another User"})]})}),"another_user"===G&&(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["User ID"," ",(0,c.jsx)(B.Z,{title:"The user who will own this key and be responsible for its usage",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"user_id",className:"mt-4",rules:[{required:"another_user"===G,message:"Please input the user ID of the user you are assigning the key to"}],children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{style:{display:"flex",marginBottom:"8px"},children:[(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Type email to search for users",filterOption:!1,onSearch:e=>{eB(e)},onSelect:(e,s)=>eK(e,s),options:ex,loading:ep,allowClear:!0,style:{width:"100%"},notFoundContent:ep?"Searching...":"No users found"}),(0,c.jsx)(L.ZP,{onClick:()=>en(!0),style:{marginLeft:"8px"},children:"Create User"})]}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"Search by email to find users"})]})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Team"," ",(0,c.jsx)(B.Z,{title:"The team this key belongs to, which determines available models and budget limits",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"team_id",initialValue:t?t.team_id:null,className:"mt-4",rules:[{required:"service_account"===G,message:"Please select a team for the service account"}],help:"service_account"===G?"required":"",children:(0,c.jsx)(q,{teams:l,onChange:e=>{ea((null==l?void 0:l.find(s=>s.team_id===e))||null)}})})]}),ez&&(0,c.jsx)("div",{className:"mb-8 p-4 bg-blue-50 border border-blue-200 rounded-md",children:(0,c.jsx)(k.Z,{className:"text-blue-800 text-sm",children:"Please select a team to continue configuring your API key. If you do not see any teams, please contact your Proxy Admin to either provide you with access to models or to add you to a team."})}),!ez&&(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(S.Z,{className:"mb-4",children:"Key Details"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["you"===G||"another_user"===G?"Key Name":"Service Account ID"," ",(0,c.jsx)(B.Z,{title:"you"===G||"another_user"===G?"A descriptive name to identify this key":"Unique identifier for this service account",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"key_alias",rules:[{required:!0,message:"Please input a ".concat("you"===G?"key name":"service account ID")}],help:"required",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Models"," ",(0,c.jsx)(B.Z,{title:"Select which models this key can access. Choose 'All Team Models' to grant access to all models available to the team",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",rules:"management"===eN||"read_only"===eN?[]:[{required:!0,message:"Please select a model"}],help:"management"===eN||"read_only"===eN?"Models field is disabled for this key type":"required",className:"mt-4",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},disabled:"management"===eN||"read_only"===eN,onChange:e=>{e.includes("all-team-models")&&m.setFieldsValue({models:["all-team-models"]})},children:[(0,c.jsx)(e1,{value:"all-team-models",children:"All Team Models"},"all-team-models"),R.map(e=>(0,c.jsx)(e1,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Key Type"," ",(0,c.jsx)(B.Z,{title:"Select the type of key to determine what routes and operations this key can access",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"key_type",initialValue:"default",className:"mt-4",children:(0,c.jsxs)(I.default,{defaultValue:"default",placeholder:"Select key type",style:{width:"100%"},optionLabelProp:"label",onChange:e=>{eZ(e),("management"===e||"read_only"===e)&&m.setFieldsValue({models:[]})},children:[(0,c.jsx)(e1,{value:"default",label:"Default",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Default"}),(0,c.jsx)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:"Can call LLM API + Management routes"})]})}),(0,c.jsx)(e1,{value:"llm_api",label:"LLM API",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"LLM API"}),(0,c.jsx)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:"Can call only LLM API routes (chat/completions, embeddings, etc.)"})]})}),(0,c.jsx)(e1,{value:"management",label:"Management",children:(0,c.jsxs)("div",{style:{padding:"4px 0"},children:[(0,c.jsx)("div",{style:{fontWeight:500},children:"Management"}),(0,c.jsx)("div",{style:{fontSize:"11px",color:"#6b7280",marginTop:"2px"},children:"Can call only management routes (user/team/key management)"})]})})]})})]}),!ez&&(0,c.jsx)("div",{className:"mb-8",children:(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)(S.Z,{className:"m-0",children:"Optional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Max Budget (USD)"," ",(0,c.jsx)(B.Z,{title:"Maximum amount in USD this key can spend. When reached, the key will be blocked from making further requests",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"max_budget",help:"Budget cannot exceed team max budget: $".concat((null==t?void 0:t.max_budget)!==null&&(null==t?void 0:t.max_budget)!==void 0?null==t?void 0:t.max_budget:"unlimited"),rules:[{validator:async(e,s)=>{if(s&&t&&null!==t.max_budget&&s>t.max_budget)throw Error("Budget cannot exceed team max budget: $".concat(eP(t.max_budget,4)))}}],children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Reset Budget"," ",(0,c.jsx)(B.Z,{title:"How often the budget should reset. For example, setting 'daily' will reset the budget every 24 hours",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"budget_duration",help:"Team Reset Budget: ".concat((null==t?void 0:t.budget_duration)!==null&&(null==t?void 0:t.budget_duration)!==void 0?null==t?void 0:t.budget_duration:"None"),children:(0,c.jsx)(eE,{onChange:e=>m.setFieldValue("budget_duration",e)})}),(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Tokens per minute Limit (TPM)"," ",(0,c.jsx)(B.Z,{title:"Maximum number of tokens this key can process per minute. Helps control usage and costs",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"tpm_limit",help:"TPM cannot exceed team TPM limit: ".concat((null==t?void 0:t.tpm_limit)!==null&&(null==t?void 0:t.tpm_limit)!==void 0?null==t?void 0:t.tpm_limit:"unlimited"),rules:[{validator:async(e,s)=>{if(s&&t&&null!==t.tpm_limit&&s>t.tpm_limit)throw Error("TPM limit cannot exceed team TPM limit: ".concat(t.tpm_limit))}}],children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(e0,{type:"tpm",name:"tpm_limit_type",className:"mt-4",initialValue:null,form:m,showDetailedDescriptions:!0}),(0,c.jsx)(A.Z.Item,{className:"mt-4",label:(0,c.jsxs)("span",{children:["Requests per minute Limit (RPM)"," ",(0,c.jsx)(B.Z,{title:"Maximum number of API requests this key can make per minute. Helps prevent abuse and manage load",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"rpm_limit",help:"RPM cannot exceed team RPM limit: ".concat((null==t?void 0:t.rpm_limit)!==null&&(null==t?void 0:t.rpm_limit)!==void 0?null==t?void 0:t.rpm_limit:"unlimited"),rules:[{validator:async(e,s)=>{if(s&&t&&null!==t.rpm_limit&&s>t.rpm_limit)throw Error("RPM limit cannot exceed team RPM limit: ".concat(t.rpm_limit))}}],children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(e0,{type:"rpm",name:"rpm_limit_type",className:"mt-4",initialValue:null,form:m,showDetailedDescriptions:!0}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Apply safety guardrails to this key to filter content or enforce policies",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",className:"mt-4",help:o?"Select existing guardrails or enter new ones":"Premium feature - Upgrade to set guardrails by key",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},disabled:!o,placeholder:o?"Select or enter guardrails":"Premium feature - Upgrade to set guardrails by key",options:W.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Prompts"," ",(0,c.jsx)(B.Z,{title:"Allow this key to use specific prompt templates",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/prompt_management",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"prompts",className:"mt-4",help:o?"Select existing prompts or enter new ones":"Premium feature - Upgrade to set prompts by key",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},disabled:!o,placeholder:o?"Select or enter prompts":"Premium feature - Upgrade to set prompts by key",options:Q.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Vector Stores"," ",(0,c.jsx)(B.Z,{title:"Select which vector stores this key can access. If none selected, the key will have access to all available vector stores",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_vector_store_ids",className:"mt-4",help:"Select vector stores this key can access. Leave empty for access to all vector stores",children:(0,c.jsx)(U,{onChange:e=>m.setFieldValue("allowed_vector_store_ids",e),value:m.getFieldValue("allowed_vector_store_ids"),accessToken:r,placeholder:"Select vector stores (optional)"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Metadata"," ",(0,c.jsx)(B.Z,{title:"JSON object with additional information about this key. Used for tracking or custom logic",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"metadata",className:"mt-4",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Tags"," ",(0,c.jsx)(B.Z,{title:"Tags for tracking spend and/or doing tag-based routing. Used for analytics and filtering",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"tags",className:"mt-4",help:"Tags for tracking spend and/or doing tag-based routing.",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},placeholder:"Enter tags",tokenSeparators:[","],options:Y})}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",onClick:()=>{ev||(eR(),ey(!0))},children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"MCP Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed MCP Servers"," ",(0,c.jsx)(B.Z,{title:"Select which MCP servers or access groups this key can access",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_mcp_servers_and_groups",help:"Select MCP servers or access groups this key can access",children:(0,c.jsx)(eD,{onChange:e=>m.setFieldValue("allowed_mcp_servers_and_groups",e),value:m.getFieldValue("allowed_mcp_servers_and_groups"),accessToken:r,placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{name:"mcp_tool_permissions",initialValue:{},hidden:!0,children:(0,c.jsx)(P.default,{type:"hidden"})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.allowed_mcp_servers_and_groups!==s.allowed_mcp_servers_and_groups||e.mcp_tool_permissions!==s.mcp_tool_permissions,children:()=>{var e;return(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(eU,{accessToken:r,selectedServers:(null===(e=m.getFieldValue("allowed_mcp_servers_and_groups"))||void 0===e?void 0:e.servers)||[],toolPermissions:m.getFieldValue("mcp_tool_permissions")||{},onChange:e=>m.setFieldsValue({mcp_tool_permissions:e})})})}})]})]}),o?(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Logging Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(er,{value:es,onChange:et,premiumUser:!0,disabledCallbacks:eb,onDisabledCallbacksChange:e_})})})]}):(0,c.jsx)(B.Z,{title:(0,c.jsxs)("span",{children:["Key-level logging settings is an enterprise feature, get in touch -",(0,c.jsx)("a",{href:"https://www.litellm.ai/enterprise",target:"_blank",children:"https://www.litellm.ai/enterprise"})]}),placement:"top",children:(0,c.jsxs)("div",{style:{position:"relative"},children:[(0,c.jsx)("div",{style:{opacity:.5},children:(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Logging Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(er,{value:es,onChange:et,premiumUser:!1,disabledCallbacks:eb,onDisabledCallbacksChange:e_})})})]})}),(0,c.jsx)("div",{style:{position:"absolute",inset:0,cursor:"not-allowed"}})]})}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Model Aliases"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600 mb-4",children:"Create custom aliases for models that can be used in API calls. This allows you to create shortcuts for specific models."}),(0,c.jsx)(eY,{accessToken:r,initialModelAliases:ew,onAliasUpdate:eS,showExampleConfig:!1})]})})]}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Key Lifecycle"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(eQ,{form:m,autoRotationEnabled:eA,onAutoRotationChange:eT,rotationInterval:eL,onRotationIntervalChange:eM})})})]}),(0,c.jsxs)(N.Z,{className:"mt-4 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("b",{children:"Advanced Settings"}),(0,c.jsx)(B.Z,{title:(0,c.jsxs)("span",{children:["Learn more about advanced settings in our"," ",(0,c.jsx)("a",{href:j.proxyBaseUrl?"".concat(j.proxyBaseUrl,"/#/key%20management/generate_key_fn_key_generate_post"):"/#/key%20management/generate_key_fn_key_generate_post",target:"_blank",rel:"noopener noreferrer",className:"text-blue-400 hover:text-blue-300",children:"documentation"})]}),children:(0,c.jsx)(V.Z,{className:"text-gray-400 hover:text-gray-300 cursor-help"})})]})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)(z.Z,{schemaComponent:"GenerateKeyRequest",form:m,excludedFields:["key_alias","team_id","models","duration","metadata","tags","guardrails","max_budget","budget_duration","tpm_limit","rpm_limit"]})})]})]})]})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",disabled:ez,style:{opacity:ez?.5:1},children:"Create Key"})})]})}),ei&&(0,c.jsx)(T.Z,{title:"Create New User",visible:ei,onCancel:()=>en(!1),footer:null,width:800,children:(0,c.jsx)(ek,{userID:s,accessToken:r,teams:l,possibleUIRoles:em,onUserCreated:e=>{ed(e),m.setFieldsValue({user_id:e}),en(!1)},isEmbedded:!0})}),h&&(0,c.jsx)(T.Z,{visible:u,onOk:eO,onCancel:eF,footer:null,children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:"Save your Key"}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)("p",{children:["Please save this secret key somewhere safe and accessible. For security reasons,"," ",(0,c.jsx)("b",{children:"you will not be able to view it again"})," through your LiteLLM account. If you lose this secret key, you will need to generate a new one."]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:null!=h?(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mt-3",children:"API Key:"}),(0,c.jsx)("div",{style:{background:"#f8f8f8",padding:"10px",borderRadius:"5px",marginBottom:"10px"},children:(0,c.jsx)("pre",{style:{wordWrap:"break-word",whiteSpace:"normal"},children:h})}),(0,c.jsx)(C.CopyToClipboard,{text:h,onCopy:()=>{eo.Z.success("API Key copied to clipboard")},children:(0,c.jsx)(b.Z,{className:"mt-3",children:"Copy API Key"})})]}):(0,c.jsx)(k.Z,{children:"Key being created, this might take 30s"})})]})})]})},e6=t(7366),e8=t(20577),e7=e=>{let{selectedTeam:s,currentOrg:t,selectedKeyAlias:l,accessToken:a,createClicked:r}=e,[i,n]=(0,d.useState)({keys:[],total_count:0,current_page:1,total_pages:0}),[o,c]=(0,d.useState)(!0),[m,u]=(0,d.useState)(null),x=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{if(console.log("calling fetchKeys"),!a){console.log("accessToken",a);return}c(!0);let s="number"==typeof e.page?e.page:1,t="number"==typeof e.pageSize?e.pageSize:100,l=await (0,j.keyListCall)(a,null,null,null,null,null,s,t);console.log("data",l),n(l),u(null)}catch(e){u(e instanceof Error?e:Error("An error occurred"))}finally{c(!1)}};return(0,d.useEffect)(()=>{x(),console.log("selectedTeam",s,"currentOrg",t,"accessToken",a,"selectedKeyAlias",l)},[s,t,a,l,r]),{keys:i.keys,isLoading:o,error:m,pagination:{currentPage:i.current_page,totalPages:i.total_pages,totalCount:i.total_count},refresh:x,setKeys:e=>{n(s=>{let t="function"==typeof e?e(s.keys):e;return{...s,keys:t}})}}},e9=t(27281),se=t(41649),ss=t(12485),st=t(18135),sl=t(35242),sa=t(29706),sr=t(77991),si=t(10900),sn=t(23628),so=e=>{let{value:s,onChange:t,disabledCallbacks:l=[],onDisabledCallbacksChange:a}=e;return(0,c.jsx)(ea,{value:s,onChange:t,disabledCallbacks:l,onDisabledCallbacksChange:a})};let sc=["logging"],sd=e=>e&&"object"==typeof e?Object.fromEntries(Object.entries(e).filter(e=>{let[s]=e;return!sc.includes(s)})):{},sm=e=>e&&"object"==typeof e&&Array.isArray(e.logging)?e.logging:[],su=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return JSON.stringify(sd(e),null,s)};var sx=e=>{let{onChange:s,value:t,className:l,accessToken:a,disabled:r}=e,[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{(async()=>{if(a){m(!0);try{let e=await (0,j.getGuardrailsList)(a);console.log("Guardrails response:",e),e.guardrails&&(console.log("Guardrails data:",e.guardrails),n(e.guardrails))}catch(e){console.error("Error fetching guardrails:",e)}finally{m(!1)}}})()},[a]),(0,c.jsx)("div",{children:(0,c.jsx)(I.default,{mode:"multiple",disabled:r,placeholder:r?"Setting guardrails is a premium feature.":"Select guardrails",onChange:e=>{console.log("Selected guardrails:",e),s(e)},value:t,loading:o,className:l,options:i.map(e=>(console.log("Mapping guardrail:",e),{label:"".concat(e.guardrail_name),value:e.guardrail_name})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"}})})};function sh(e){var s,t,l,a,r,i,n,o,m;let{keyData:u,onCancel:x,onSubmit:h,teams:p,accessToken:g,userID:f,userRole:v,premiumUser:y=!1}=e,[N]=A.Z.useForm(),[Z,w]=(0,d.useState)([]),[k,S]=(0,d.useState)([]),C=null==p?void 0:p.find(e=>e.team_id===u.team_id),[T,E]=(0,d.useState)([]),[M,D]=(0,d.useState)([]),[F,R]=(0,d.useState)(!1),[z,q]=(0,d.useState)(Array.isArray(null===(s=u.metadata)||void 0===s?void 0:s.litellm_disabled_callbacks)?X(u.metadata.litellm_disabled_callbacks):[]),[V,K]=(0,d.useState)(u.auto_rotate||!1),[G,H]=(0,d.useState)(u.rotation_interval||"");(0,d.useEffect)(()=>{let e=async()=>{if(f&&v&&g)try{if(null===u.team_id){let e=(await (0,j.modelAvailableCall)(g,f,v)).data.map(e=>e.id);E(e)}else if(null==C?void 0:C.team_id){let e=await e4(f,v,g,C.team_id);E(Array.from(new Set([...C.models,...e])))}}catch(e){console.error("Error fetching models:",e)}};(async()=>{if(g)try{let e=await (0,j.getPromptsList)(g);S(e.prompts.map(e=>e.prompt_id))}catch(e){console.error("Failed to fetch prompts:",e)}})(),e()},[f,v,g,C,u.team_id]),(0,d.useEffect)(()=>{N.setFieldValue("disabled_callbacks",z)},[N,z]);let Y=e=>e&&({"24h":"daily","7d":"weekly","30d":"monthly"})[e]||null,J={...u,token:u.token||u.token_id,budget_duration:Y(u.budget_duration),metadata:su(u.metadata),guardrails:null===(t=u.metadata)||void 0===t?void 0:t.guardrails,prompts:null===(l=u.metadata)||void 0===l?void 0:l.prompts,vector_stores:(null===(a=u.object_permission)||void 0===a?void 0:a.vector_stores)||[],mcp_servers_and_groups:{servers:(null===(r=u.object_permission)||void 0===r?void 0:r.mcp_servers)||[],accessGroups:(null===(i=u.object_permission)||void 0===i?void 0:i.mcp_access_groups)||[]},mcp_tool_permissions:(null===(n=u.object_permission)||void 0===n?void 0:n.mcp_tool_permissions)||{},logging_settings:sm(u.metadata),disabled_callbacks:Array.isArray(null===(o=u.metadata)||void 0===o?void 0:o.litellm_disabled_callbacks)?X(u.metadata.litellm_disabled_callbacks):[],auto_rotate:u.auto_rotate||!1,...u.rotation_interval&&{rotation_interval:u.rotation_interval}};return(0,d.useEffect)(()=>{var e,s,t,l,a,r,i;N.setFieldsValue({...u,token:u.token||u.token_id,budget_duration:Y(u.budget_duration),metadata:su(u.metadata),guardrails:null===(e=u.metadata)||void 0===e?void 0:e.guardrails,prompts:null===(s=u.metadata)||void 0===s?void 0:s.prompts,vector_stores:(null===(t=u.object_permission)||void 0===t?void 0:t.vector_stores)||[],mcp_servers_and_groups:{servers:(null===(l=u.object_permission)||void 0===l?void 0:l.mcp_servers)||[],accessGroups:(null===(a=u.object_permission)||void 0===a?void 0:a.mcp_access_groups)||[]},mcp_tool_permissions:(null===(r=u.object_permission)||void 0===r?void 0:r.mcp_tool_permissions)||{},logging_settings:sm(u.metadata),disabled_callbacks:Array.isArray(null===(i=u.metadata)||void 0===i?void 0:i.litellm_disabled_callbacks)?X(u.metadata.litellm_disabled_callbacks):[],auto_rotate:u.auto_rotate||!1,...u.rotation_interval&&{rotation_interval:u.rotation_interval}})},[u,N]),(0,d.useEffect)(()=>{N.setFieldValue("auto_rotate",V)},[V,N]),(0,d.useEffect)(()=>{G&&N.setFieldValue("rotation_interval",G)},[G,N]),console.log("premiumUser:",y),(0,c.jsxs)(A.Z,{form:N,onFinish:h,initialValues:J,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Key Alias",name:"key_alias",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[T.length>0&&(0,c.jsx)(I.default.Option,{value:"all-team-models",children:"All Team Models"}),T.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,style:{width:"100%"},placeholder:"Enter a numerical value"})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"daily",children:"Daily"}),(0,c.jsx)(I.default.Option,{value:"weekly",children:"Weekly"}),(0,c.jsx)(I.default.Option,{value:"monthly",children:"Monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"TPM Limit",name:"tpm_limit",children:(0,c.jsx)(O,{min:0})}),(0,c.jsx)(e0,{type:"tpm",name:"tpm_limit_type",showDetailedDescriptions:!1}),(0,c.jsx)(A.Z.Item,{label:"RPM Limit",name:"rpm_limit",children:(0,c.jsx)(O,{min:0})}),(0,c.jsx)(e0,{type:"rpm",name:"rpm_limit_type",showDetailedDescriptions:!1}),(0,c.jsx)(A.Z.Item,{label:"Max Parallel Requests",name:"max_parallel_requests",children:(0,c.jsx)(O,{min:0})}),(0,c.jsx)(A.Z.Item,{label:"Model TPM Limit",name:"model_tpm_limit",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{"gpt-4": 100, "claude-v1": 200}'})}),(0,c.jsx)(A.Z.Item,{label:"Model RPM Limit",name:"model_rpm_limit",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{"gpt-4": 100, "claude-v1": 200}'})}),(0,c.jsx)(A.Z.Item,{label:"Guardrails",name:"guardrails",children:g&&(0,c.jsx)(sx,{onChange:e=>{N.setFieldValue("guardrails",e)},accessToken:g,disabled:!y})}),(0,c.jsx)(A.Z.Item,{label:"Prompts",name:"prompts",children:(0,c.jsx)(B.Z,{title:y?"":"Setting prompts by key is a premium feature",placement:"top",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},disabled:!y,placeholder:y?Array.isArray(null===(m=u.metadata)||void 0===m?void 0:m.prompts)&&u.metadata.prompts.length>0?"Current: ".concat(u.metadata.prompts.join(", ")):"Select or enter prompts":"Premium feature - Upgrade to set prompts by key",options:k.map(e=>({value:e,label:e}))})})}),(0,c.jsx)(A.Z.Item,{label:"Vector Stores",name:"vector_stores",children:(0,c.jsx)(U,{onChange:e=>N.setFieldValue("vector_stores",e),value:N.getFieldValue("vector_stores"),accessToken:g||"",placeholder:"Select vector stores"})}),(0,c.jsx)(A.Z.Item,{label:"MCP Servers / Access Groups",name:"mcp_servers_and_groups",children:(0,c.jsx)(eD,{onChange:e=>N.setFieldValue("mcp_servers_and_groups",e),value:N.getFieldValue("mcp_servers_and_groups"),accessToken:g||"",placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{name:"mcp_tool_permissions",initialValue:{},hidden:!0,children:(0,c.jsx)(P.default,{type:"hidden"})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.mcp_servers_and_groups!==s.mcp_servers_and_groups||e.mcp_tool_permissions!==s.mcp_tool_permissions,children:()=>{var e;return(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsx)(eU,{accessToken:g||"",selectedServers:(null===(e=N.getFieldValue("mcp_servers_and_groups"))||void 0===e?void 0:e.servers)||[],toolPermissions:N.getFieldValue("mcp_tool_permissions")||{},onChange:e=>N.setFieldsValue({mcp_tool_permissions:e})})})}}),(0,c.jsx)(A.Z.Item,{label:"Team ID",name:"team_id",children:(0,c.jsx)(I.default,{placeholder:"Select team",style:{width:"100%"},children:null==p?void 0:p.map(e=>(0,c.jsx)(I.default.Option,{value:e.team_id,children:"".concat(e.team_alias," (").concat(e.team_id,")")},e.team_id))})}),(0,c.jsx)(A.Z.Item,{label:"Logging Settings",name:"logging_settings",children:(0,c.jsx)(so,{value:N.getFieldValue("logging_settings"),onChange:e=>N.setFieldValue("logging_settings",e),disabledCallbacks:z,onDisabledCallbacksChange:e=>{q(X(e)),N.setFieldValue("disabled_callbacks",e)}})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:10})}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(eQ,{form:N,autoRotationEnabled:V,onAutoRotationChange:K,rotationInterval:G,onRotationIntervalChange:H})}),(0,c.jsx)(A.Z.Item,{name:"token",hidden:!0,children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{name:"disabled_callbacks",hidden:!0,children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{name:"auto_rotate",hidden:!0,children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{name:"rotation_interval",hidden:!0,children:(0,c.jsx)(P.default,{})}),(0,c.jsx)("div",{className:"sticky z-10 bg-white p-4 border-t border-gray-200 bottom-[-1.5rem] inset-x-[-1.5rem]",children:(0,c.jsxs)("div",{className:"flex justify-end items-center gap-2",children:[(0,c.jsx)(L.ZP,{onClick:x,children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})})]})}function sp(e){let{selectedToken:s,visible:t,onClose:l,accessToken:a,premiumUser:r,setAccessToken:i,onKeyUpdate:n}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[f,N]=(0,d.useState)(!1),[Z,w]=(0,d.useState)(!1),[I,E]=(0,d.useState)(null);(0,d.useEffect)(()=>{t&&s&&a&&(o.setFieldsValue({key_alias:s.key_alias,max_budget:s.max_budget,tpm_limit:s.tpm_limit,rpm_limit:s.rpm_limit,duration:s.duration||""}),E(a),w(s.key_name===a))},[t,s,o,a]),(0,d.useEffect)(()=>{t||(u(null),N(!1),w(!1),E(null),o.resetFields())},[t,o]);let L=e=>{if(!e)return null;try{let s;let t=new Date;if(e.endsWith("s"))s=(0,e6.Z)(t,{seconds:parseInt(e)});else if(e.endsWith("h"))s=(0,e6.Z)(t,{hours:parseInt(e)});else if(e.endsWith("d"))s=(0,e6.Z)(t,{days:parseInt(e)});else throw Error("Invalid duration format");return s.toLocaleString()}catch(e){return null}};(0,d.useEffect)(()=>{(null==x?void 0:x.duration)?g(L(x.duration)):g(null)},[null==x?void 0:x.duration]);let P=async()=>{if(s&&I){N(!0);try{let e=await o.validateFields(),t=await (0,j.regenerateKeyCall)(I,s.token||s.token_id,e);u(t.key),eo.Z.success("API Key regenerated successfully"),console.log("Full regenerate response:",t);let l={token:t.token||t.key_id||s.token,key_name:t.key,max_budget:e.max_budget,tpm_limit:e.tpm_limit,rpm_limit:e.rpm_limit,expires:e.duration?L(e.duration):s.expires,...t};console.log("Updated key data with new token:",l),Z&&(E(t.key),i&&i(t.key)),n&&n(l),N(!1)}catch(e){console.error("Error regenerating key:",e),eo.Z.fromBackend(e),N(!1)}}},M=()=>{u(null),N(!1),w(!1),E(null),o.resetFields(),l()};return(0,c.jsx)(T.Z,{title:"Regenerate API Key",open:t,onCancel:M,footer:m?[(0,c.jsx)(b.Z,{onClick:M,children:"Close"},"close")]:[(0,c.jsx)(b.Z,{onClick:M,className:"mr-2",children:"Cancel"},"cancel"),(0,c.jsx)(b.Z,{onClick:P,disabled:f,children:f?"Regenerating...":"Regenerate"},"regenerate")],children:m?(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:"Regenerated Key"}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)("p",{children:["Please replace your old key with the new key generated. For security reasons,"," ",(0,c.jsx)("b",{children:"you will not be able to view it again"})," through your LiteLLM account. If you lose this secret key, you will need to generate a new one."]})}),(0,c.jsxs)(v.Z,{numColSpan:1,children:[(0,c.jsx)(k.Z,{className:"mt-3",children:"Key Alias:"}),(0,c.jsx)("div",{className:"bg-gray-100 p-2 rounded mb-2",children:(0,c.jsx)("pre",{className:"break-words whitespace-normal",children:(null==s?void 0:s.key_alias)||"No alias set"})}),(0,c.jsx)(k.Z,{className:"mt-3",children:"New API Key:"}),(0,c.jsx)("div",{className:"bg-gray-100 p-2 rounded mb-2",children:(0,c.jsx)("pre",{className:"break-words whitespace-normal",children:m})}),(0,c.jsx)(C.CopyToClipboard,{text:m,onCopy:()=>eo.Z.success("API Key copied to clipboard"),children:(0,c.jsx)(b.Z,{className:"mt-3",children:"Copy API Key"})})]})]}):(0,c.jsxs)(A.Z,{form:o,layout:"vertical",onValuesChange:e=>{"duration"in e&&h(s=>({...s,duration:e.duration}))},children:[(0,c.jsx)(A.Z.Item,{name:"key_alias",label:"Key Alias",children:(0,c.jsx)(_.Z,{disabled:!0})}),(0,c.jsx)(A.Z.Item,{name:"max_budget",label:"Max Budget (USD)",children:(0,c.jsx)(e8.Z,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"tpm_limit",label:"TPM Limit",children:(0,c.jsx)(e8.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"rpm_limit",label:"RPM Limit",children:(0,c.jsx)(e8.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"duration",label:"Expire Key (eg: 30s, 30h, 30d)",className:"mt-8",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsxs)("div",{className:"mt-2 text-sm text-gray-500",children:["Current expiry: ",(null==s?void 0:s.expires)?new Date(s.expires).toLocaleString():"Never"]}),p&&(0,c.jsxs)("div",{className:"mt-2 text-sm text-green-600",children:["New expiry: ",p]})]})})}var sg=t(79814),sj=function(e){let{vectorStores:s,accessToken:t}=e,[l,a]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{if(t&&0!==s.length)try{let e=await (0,j.vectorStoreListCall)(t);e.data&&a(e.data.map(e=>({vector_store_id:e.vector_store_id,vector_store_name:e.vector_store_name})))}catch(e){console.error("Error fetching vector stores:",e)}})()},[t,s.length]);let r=e=>{let s=l.find(s=>s.vector_store_id===e);return s?"".concat(s.vector_store_name||s.vector_store_id," (").concat(s.vector_store_id,")"):e};return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sg.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Vector Stores"}),(0,c.jsx)(se.Z,{color:"blue",size:"xs",children:s.length})]}),s.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:s.map((e,s)=>(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-blue-50 border border-blue-200 text-blue-800 text-sm font-medium",children:r(e)},s))}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(sg.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No vector stores configured"})]})]})},sf=t(25327),sv=function(e){let{mcpServers:s,mcpAccessGroups:l=[],accessToken:a}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{if(a&&s.length>0)try{let e=await (0,j.fetchMCPServers)(a);e&&Array.isArray(e)?i(e):e.data&&Array.isArray(e.data)&&i(e.data)}catch(e){console.error("Error fetching MCP servers:",e)}})()},[a,s.length]),(0,d.useEffect)(()=>{(async()=>{if(a&&l.length>0)try{let e=await Promise.resolve().then(t.bind(t,19250)).then(e=>e.fetchMCPAccessGroups(a));o(Array.isArray(e)?e:e.data||[])}catch(e){console.error("Error fetching MCP access groups:",e)}})()},[a,l.length]);let m=e=>{let s=r.find(s=>s.server_id===e);if(s){let t=e.length>7?"".concat(e.slice(0,3),"...").concat(e.slice(-4)):e;return"".concat(s.alias," (").concat(t,")")}return e},u=e=>e,x=[...s.map(e=>({type:"server",value:e})),...l.map(e=>({type:"accessGroup",value:e}))],h=x.length;return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sf.Z,{className:"h-4 w-4 text-gray-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"MCP Servers"}),(0,c.jsx)(se.Z,{color:"gray",size:"xs",children:h})]}),h>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:x.map((e,s)=>"server"===e.type?(0,c.jsx)(B.Z,{title:"Full ID: ".concat(e.value),placement:"top",children:(0,c.jsx)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-blue-50 border border-blue-200 text-blue-800 text-sm font-medium cursor-help",children:m(e.value)})},s):(0,c.jsxs)("div",{className:"inline-flex items-center px-3 py-1.5 rounded-lg bg-green-50 border border-green-200 text-green-800 text-sm font-medium",children:[(0,c.jsx)("span",{className:"inline-block w-2 h-2 bg-green-500 rounded-full mr-2"}),u(e.value)," ",(0,c.jsx)("span",{className:"ml-1 text-xs text-green-500",children:"(Access Group)"})]},s))}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(sf.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No MCP servers or access groups configured"})]})]})},sy=function(e){let{objectPermission:s,variant:t="card",className:l="",accessToken:a}=e,r=(null==s?void 0:s.vector_stores)||[],i=(null==s?void 0:s.mcp_servers)||[],n=(null==s?void 0:s.mcp_access_groups)||[],o=(0,c.jsxs)("div",{className:"card"===t?"grid grid-cols-1 md:grid-cols-2 gap-6":"space-y-4",children:[(0,c.jsx)(sj,{vectorStores:r,accessToken:a}),(0,c.jsx)(sv,{mcpServers:i,mcpAccessGroups:n,accessToken:a})]});return"card"===t?(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-6 ".concat(l),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Object Permissions"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500",children:"Access control for Vector Stores and MCP Servers"})]})}),o]}):(0,c.jsxs)("div",{className:"".concat(l),children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900 mb-3",children:"Object Permissions"}),o]})},sb=function(e){let{loggingConfigs:s=[],disabledCallbacks:t=[],variant:l="card",className:a=""}=e,r=e=>{var s;return(null===(s=Object.entries($).find(s=>{let[t,l]=s;return l===e}))||void 0===s?void 0:s[0])||e},i=e=>{switch(e){case"success":return"green";case"failure":return"red";case"success_and_failure":return"blue";default:return"gray"}},n=e=>{switch(e){case"success":return"Success Only";case"failure":return"Failure Only";case"success_and_failure":return"Success & Failure";default:return e}},o=(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(Y.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Logging Integrations"}),(0,c.jsx)(se.Z,{color:"blue",size:"xs",children:s.length})]}),s.length>0?(0,c.jsx)("div",{className:"space-y-3",children:s.map((e,s)=>{var t;let l=r(e.callback_name),a=null===(t=et[l])||void 0===t?void 0:t.logo;return(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 rounded-lg bg-blue-50 border border-blue-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[a?(0,c.jsx)("img",{src:a,alt:l,className:"w-5 h-5 object-contain"}):(0,c.jsx)(Y.Z,{className:"h-5 w-5 text-gray-400"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium text-blue-800",children:l}),(0,c.jsxs)(k.Z,{className:"text-xs text-blue-600",children:[Object.keys(e.callback_vars).length," parameters configured"]})]})]}),(0,c.jsx)(se.Z,{color:i(e.callback_type),size:"sm",children:n(e.callback_type)})]},s)})}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(Y.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No logging integrations configured"})]})]}),(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(H.Z,{className:"h-4 w-4 text-red-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Disabled Callbacks"}),(0,c.jsx)(se.Z,{color:"red",size:"xs",children:t.length})]}),t.length>0?(0,c.jsx)("div",{className:"space-y-3",children:t.map((e,s)=>{var t;let l=Q[e]||e,a=null===(t=et[l])||void 0===t?void 0:t.logo;return(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 rounded-lg bg-red-50 border border-red-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[a?(0,c.jsx)("img",{src:a,alt:l,className:"w-5 h-5 object-contain"}):(0,c.jsx)(H.Z,{className:"h-5 w-5 text-gray-400"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium text-red-800",children:l}),(0,c.jsx)(k.Z,{className:"text-xs text-red-600",children:"Disabled for this key"})]})]}),(0,c.jsx)(se.Z,{color:"red",size:"sm",children:"Disabled"})]},s)})}):(0,c.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-50 border border-gray-200",children:[(0,c.jsx)(H.Z,{className:"h-4 w-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"No callbacks disabled"})]})]})]});return"card"===l?(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-6 ".concat(a),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Logging Settings"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500",children:"Active logging integrations and disabled callbacks for this key"})]})}),o]}):(0,c.jsxs)("div",{className:"".concat(a),children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900 mb-3",children:"Logging Settings"}),o]})},s_=t(30401),sN=t(78867),sZ=t(85968),sw=t(58710),sk=e=>{let{autoRotate:s=!1,rotationInterval:t,lastRotationAt:l,keyRotationAt:a,nextRotationAt:r,variant:i="card",className:n=""}=e,o=e=>{let s=new Date(e),t=s.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),l=s.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return"".concat(t," at ").concat(l)},d=(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsx)("div",{className:"space-y-3",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sn.Z,{className:"h-4 w-4 text-blue-600"}),(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Auto-Rotation"}),(0,c.jsx)(se.Z,{color:s?"green":"gray",size:"xs",children:s?"Enabled":"Disabled"}),s&&t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(k.Z,{className:"text-gray-400",children:"•"}),(0,c.jsxs)(k.Z,{className:"text-sm text-gray-600",children:["Every ",t]})]})]})}),(s||l||a||r)&&(0,c.jsxs)("div",{className:"space-y-3",children:[l&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-200 rounded-md",children:[(0,c.jsx)(sw.Z,{className:"w-4 h-4 text-gray-500"}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-700",children:"Last Rotation"}),(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:o(l)})]})]}),(a||r)&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-200 rounded-md",children:[(0,c.jsx)(sw.Z,{className:"w-4 h-4 text-gray-500"}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-700",children:"Next Scheduled Rotation"}),(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:o(r||a||"")})]})]}),s&&!l&&!a&&!r&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-100 rounded-md",children:[(0,c.jsx)(sw.Z,{className:"w-4 h-4 text-gray-500"}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"No rotation history available"})]})]}),!s&&!l&&!a&&!r&&(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 border border-gray-100 rounded-md",children:[(0,c.jsx)(sn.Z,{className:"w-4 h-4 text-gray-400"}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"Auto-rotation is not enabled for this key"})]})]});return"card"===i?(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-6 ".concat(n),children:[(0,c.jsx)("div",{className:"flex items-center gap-2 mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Auto-Rotation"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500",children:"Automatic key rotation settings and status for this key"})]})}),d]}):(0,c.jsxs)("div",{className:"".concat(n),children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900 mb-3",children:"Auto-Rotation"}),d]})};function sS(e){var s,t,l,a,r;let{keyId:i,onClose:n,keyData:o,accessToken:m,userID:u,userRole:x,teams:h,onKeyDataUpdate:p,onDelete:g,premiumUser:f,setAccessToken:v,backButtonText:_="Back to Keys"}=e,[N,Z]=(0,d.useState)(!1),[w]=A.Z.useForm(),[C,I]=(0,d.useState)(!1),[T,E]=(0,d.useState)(""),[P,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)({}),[F,R]=(0,d.useState)(o),[z,U]=(0,d.useState)(null),[q,V]=(0,d.useState)(!1);if((0,d.useEffect)(()=>{o&&R(o)},[o]),(0,d.useEffect)(()=>{if(q){let e=setTimeout(()=>{V(!1)},5e3);return()=>clearTimeout(e)}},[q]),!F)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:n,className:"mb-4",children:_}),(0,c.jsx)(k.Z,{children:"Key not found"})]});let K=async e=>{try{var s,t,l,a;if(!m)return;let r=e.token;if(e.key=r,f||(delete e.guardrails,delete e.prompts),void 0!==e.vector_stores&&(e.object_permission={...F.object_permission,vector_stores:e.vector_stores||[]},delete e.vector_stores),void 0!==e.mcp_servers_and_groups){let{servers:s,accessGroups:t}=e.mcp_servers_and_groups||{servers:[],accessGroups:[]};e.object_permission={...F.object_permission,mcp_servers:s||[],mcp_access_groups:t||[]},delete e.mcp_servers_and_groups}if(void 0!==e.mcp_tool_permissions){let s=e.mcp_tool_permissions||{};Object.keys(s).length>0&&(e.object_permission={...e.object_permission,mcp_tool_permissions:s}),delete e.mcp_tool_permissions}if(e.metadata&&"string"==typeof e.metadata)try{let l=JSON.parse(e.metadata);e.metadata={...l,...(null===(s=e.guardrails)||void 0===s?void 0:s.length)>0?{guardrails:e.guardrails}:{},...e.logging_settings?{logging:e.logging_settings}:{},...(null===(t=e.disabled_callbacks)||void 0===t?void 0:t.length)>0?{litellm_disabled_callbacks:ee(e.disabled_callbacks)}:{}}}catch(e){console.error("Error parsing metadata JSON:",e),eo.Z.error("Invalid metadata JSON");return}else e.metadata={...e.metadata||{},...(null===(l=e.guardrails)||void 0===l?void 0:l.length)>0?{guardrails:e.guardrails}:{},...e.logging_settings?{logging:e.logging_settings}:{},...(null===(a=e.disabled_callbacks)||void 0===a?void 0:a.length)>0?{litellm_disabled_callbacks:ee(e.disabled_callbacks)}:{}};delete e.logging_settings,e.budget_duration&&(e.budget_duration=({daily:"24h",weekly:"7d",monthly:"30d"})[e.budget_duration]);let i=await (0,j.keyUpdateCall)(m,e);R(e=>e?{...e,...i}:void 0),p&&p(i),eo.Z.success("Key updated successfully"),Z(!1)}catch(e){eo.Z.fromBackend((0,sZ.O)(e)),console.error("Error updating key:",e)}},H=async()=>{try{if(!m)return;await (0,j.keyDeleteCall)(m,F.token||F.token_id),eo.Z.success("Key deleted successfully"),g&&g(),n()}catch(e){console.error("Error deleting the key:",e),eo.Z.fromBackend(e)}E("")},Y=async(e,s)=>{await eM(e)&&(D(e=>({...e,[s]:!0})),setTimeout(()=>{D(e=>({...e,[s]:!1}))},2e3))},J=e=>{let s=new Date(e),t=s.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),l=s.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return"".concat(t," at ").concat(l)};return(0,c.jsxs)("div",{className:"w-full h-screen p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:n,className:"mb-4",children:_}),(0,c.jsx)(S.Z,{children:F.key_alias||"API Key"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer mb-2 space-y-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-xs text-gray-400 uppercase tracking-wide mt-2",children:"Key ID"}),(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono text-sm",children:F.token_id||F.token})]}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:O["key-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>Y(F.token_id||F.token,"key-id"),className:"ml-2 transition-all duration-200".concat(O["key-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-500",children:F.updated_at&&F.updated_at!==F.created_at?"Updated: ".concat(J(F.updated_at)):"Created: ".concat(J(F.created_at))}),q&&(0,c.jsx)(se.Z,{color:"green",size:"xs",className:"animate-pulse",children:"Recently Regenerated"}),z&&(0,c.jsx)(se.Z,{color:"blue",size:"xs",children:"Regenerated"})]})]}),x&&eI.LQ.includes(x)&&(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(B.Z,{title:f?"":"This is a LiteLLM Enterprise feature, and requires a valid key to use.",children:(0,c.jsx)("span",{className:"inline-block",children:(0,c.jsx)(b.Z,{icon:sn.Z,variant:"secondary",onClick:()=>M(!0),className:"flex items-center",disabled:!f,children:"Regenerate Key"})})}),(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>I(!0),className:"flex items-center",children:"Delete Key"})]})]}),(0,c.jsx)(sp,{selectedToken:F,visible:P,onClose:()=>M(!1),accessToken:m,premiumUser:f,setAccessToken:v,onKeyUpdate:e=>{R(s=>{if(s)return{...s,...e,created_at:new Date().toLocaleString()}}),U(new Date),V(!0),p&&p({...e,created_at:new Date().toLocaleString()})}}),C&&(()=>{let e=(null==F?void 0:F.key_alias)||(null==F?void 0:F.token_id)||"API Key",s=T===e;return(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl w-full max-w-2xl min-h-[380px] py-6 overflow-hidden transform transition-all flex flex-col justify-between",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Delete Key"}),(0,c.jsx)("button",{onClick:()=>{I(!1),E("")},className:"text-gray-400 hover:text-gray-500 focus:outline-none",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,c.jsxs)("div",{className:"px-6 py-4",children:[(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.082 16.5c-.77.833.192 2.5 1.732 2.5z"})})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-base font-medium text-red-600",children:"Warning: You are about to delete this API key."}),(0,c.jsx)("p",{className:"text-base text-red-600 mt-2",children:"This action is irreversible and will immediately revoke access for any applications using this key."})]})]}),(0,c.jsx)("p",{className:"text-base text-gray-600 mb-5",children:"Are you sure you want to delete this API key?"}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsx)("span",{className:"underline",children:e})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:T,onChange:e=>E(e.target.value),placeholder:"Enter key name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]})]})]}),(0,c.jsxs)("div",{className:"px-6 py-4 bg-gray-50 flex justify-end gap-4",children:[(0,c.jsx)("button",{onClick:()=>{I(!1),E("")},className:"px-5 py-3 bg-white border border-gray-300 rounded-md text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:"Cancel"}),(0,c.jsx)("button",{onClick:H,disabled:!s,className:"px-5 py-3 rounded-md text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 ".concat(s?"bg-red-600 hover:bg-red-700":"bg-red-300 cursor-not-allowed"),children:"Delete Key"})]})]})})})(),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"}),(0,c.jsx)(ss.Z,{children:"Settings"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Spend"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eP(F.spend,4)]}),(0,c.jsxs)(k.Z,{children:["of"," ",null!==F.max_budget?"$".concat(eP(F.max_budget)):"Unlimited"]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Rate Limits"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["TPM: ",null!==F.tpm_limit?F.tpm_limit:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",null!==F.rpm_limit?F.rpm_limit:"Unlimited"]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Models"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:F.models&&F.models.length>0?F.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s)):(0,c.jsx)(k.Z,{children:"No models specified"})})]}),(0,c.jsx)(G.Z,{children:(0,c.jsx)(sy,{objectPermission:F.object_permission,variant:"inline",accessToken:m})}),(0,c.jsx)(sb,{loggingConfigs:sm(F.metadata),disabledCallbacks:Array.isArray(null===(s=F.metadata)||void 0===s?void 0:s.litellm_disabled_callbacks)?X(F.metadata.litellm_disabled_callbacks):[],variant:"card"}),(0,c.jsx)(sk,{autoRotate:F.auto_rotate,rotationInterval:F.rotation_interval,lastRotationAt:F.last_rotation_at,keyRotationAt:F.key_rotation_at,nextRotationAt:F.next_rotation_at,variant:"card"})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{className:"overflow-y-auto max-h-[65vh]",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Key Settings"}),!N&&x&&eI.LQ.includes(x)&&(0,c.jsx)(b.Z,{variant:"light",onClick:()=>Z(!0),children:"Edit Settings"})]}),N?(0,c.jsx)(sh,{keyData:F,onCancel:()=>Z(!1),onSubmit:K,teams:h,accessToken:m,userID:u,userRole:x,premiumUser:f}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Key ID"}),(0,c.jsx)(k.Z,{className:"font-mono",children:F.token_id||F.token})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Key Alias"}),(0,c.jsx)(k.Z,{children:F.key_alias||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Secret Key"}),(0,c.jsx)(k.Z,{className:"font-mono",children:F.key_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team ID"}),(0,c.jsx)(k.Z,{children:F.team_id||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization"}),(0,c.jsx)(k.Z,{children:F.organization_id||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created"}),(0,c.jsx)(k.Z,{children:J(F.created_at)})]}),z&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Regenerated"}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{children:J(z)}),(0,c.jsx)(se.Z,{color:"green",size:"xs",children:"Recent"})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Expires"}),(0,c.jsx)(k.Z,{children:F.expires?J(F.expires):"Never"})]}),(0,c.jsx)(sk,{autoRotate:F.auto_rotate,rotationInterval:F.rotation_interval,lastRotationAt:F.last_rotation_at,keyRotationAt:F.key_rotation_at,nextRotationAt:F.next_rotation_at,variant:"inline",className:"pt-4 border-t border-gray-200"}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Spend"}),(0,c.jsxs)(k.Z,{children:["$",eP(F.spend,4)," USD"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Budget"}),(0,c.jsx)(k.Z,{children:null!==F.max_budget?"$".concat(eP(F.max_budget,2)):"Unlimited"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompts"}),(0,c.jsx)(k.Z,{children:Array.isArray(null===(t=F.metadata)||void 0===t?void 0:t.prompts)&&F.metadata.prompts.length>0?F.metadata.prompts.map((e,s)=>(0,c.jsx)("span",{className:"px-2 mr-2 py-1 bg-blue-100 rounded text-xs",children:e},s)):"No prompts specified"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:F.models&&F.models.length>0?F.models.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:e},s)):(0,c.jsx)(k.Z,{children:"No models specified"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Rate Limits"}),(0,c.jsxs)(k.Z,{children:["TPM: ",null!==F.tpm_limit?F.tpm_limit:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",null!==F.rpm_limit?F.rpm_limit:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["Max Parallel Requests:"," ",null!==F.max_parallel_requests?F.max_parallel_requests:"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["Model TPM Limits:"," ",(null===(l=F.metadata)||void 0===l?void 0:l.model_tpm_limit)?JSON.stringify(F.metadata.model_tpm_limit):"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["Model RPM Limits:"," ",(null===(a=F.metadata)||void 0===a?void 0:a.model_rpm_limit)?JSON.stringify(F.metadata.model_rpm_limit):"Unlimited"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Metadata"}),(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:su(F.metadata)})]}),(0,c.jsx)(sy,{objectPermission:F.object_permission,variant:"inline",className:"pt-4 border-t border-gray-200",accessToken:m}),(0,c.jsx)(sb,{loggingConfigs:sm(F.metadata),disabledCallbacks:Array.isArray(null===(r=F.metadata)||void 0===r?void 0:r.litellm_disabled_callbacks)?X(F.metadata.litellm_disabled_callbacks):[],variant:"inline",className:"pt-4 border-t border-gray-200"})]})]})})]})]})]})}var sC=t(2356),sI=e=>{let{options:s,onApplyFilters:t,onResetFilters:l,initialValues:a={},buttonLabel:r="Filters"}=e,[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(a),[u,x]=(0,d.useState)({}),[h,p]=(0,d.useState)({}),[g,j]=(0,d.useState)({}),[f,v]=(0,d.useState)({}),y=(0,d.useCallback)(eC()(async(e,s)=>{if(s.isSearchable&&s.searchFn){p(e=>({...e,[s.name]:!0}));try{let t=await s.searchFn(e);x(e=>({...e,[s.name]:t}))}catch(e){console.error("Error searching:",e),x(e=>({...e,[s.name]:[]}))}finally{p(e=>({...e,[s.name]:!1}))}}},300),[]),b=(0,d.useCallback)(async e=>{if(e.isSearchable&&e.searchFn&&!f[e.name]){p(s=>({...s,[e.name]:!0})),v(s=>({...s,[e.name]:!0}));try{let s=await e.searchFn("");x(t=>({...t,[e.name]:s}))}catch(s){console.error("Error loading initial options:",s),x(s=>({...s,[e.name]:[]}))}finally{p(s=>({...s,[e.name]:!1}))}}},[f]);(0,d.useEffect)(()=>{i&&s.forEach(e=>{e.isSearchable&&!f[e.name]&&b(e)})},[i,s,b,f]);let _=(e,s)=>{let l={...o,[e]:s};m(l),t(l)},N=(e,s)=>{e&&s.isSearchable&&!f[s.name]&&b(s)};return(0,c.jsxs)("div",{className:"w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-6",children:[(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(sC.Z,{className:"h-4 w-4"}),onClick:()=>n(!i),className:"flex items-center gap-2",children:r}),(0,c.jsx)(L.ZP,{onClick:()=>{let e={};s.forEach(s=>{e[s.name]=""}),m(e),l()},children:"Reset Filters"})]}),i&&(0,c.jsx)("div",{className:"grid grid-cols-3 gap-x-6 gap-y-4 mb-6",children:["Team ID","Status","Organization ID","Key Alias","User ID","End User","Key Hash","Model"].map(e=>{let t=s.find(s=>s.label===e||s.name===e);return t?(0,c.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,c.jsx)("label",{className:"text-sm text-gray-600",children:t.label||t.name}),t.isSearchable?(0,c.jsx)(I.default,{showSearch:!0,className:"w-full",placeholder:"Search ".concat(t.label||t.name,"..."),value:o[t.name]||void 0,onChange:e=>_(t.name,e),onDropdownVisibleChange:e=>N(e,t),onSearch:e=>{j(s=>({...s,[t.name]:e})),t.searchFn&&y(e,t)},filterOption:!1,loading:h[t.name],options:u[t.name]||[],allowClear:!0,notFoundContent:h[t.name]?"Loading...":"No results found"}):t.options?(0,c.jsx)(I.default,{className:"w-full",placeholder:"Select ".concat(t.label||t.name,"..."),value:o[t.name]||void 0,onChange:e=>_(t.name,e),allowClear:!0,children:t.options.map(e=>(0,c.jsx)(I.default.Option,{value:e.value,children:e.label},e.value))}):(0,c.jsx)(P.default,{className:"w-full",placeholder:"Enter ".concat(t.label||t.name,"..."),value:o[t.name]||"",onChange:e=>_(t.name,e.target.value),allowClear:!0})]},t.name):null})})]})},sA=t(16593);let sT=async e=>{if(!e)return[];try{let{aliases:s}=await (0,j.keyAliasesCall)(e);return Array.from(new Set((s||[]).filter(Boolean)))}catch(e){return console.error("Error fetching all key aliases:",e),[]}},sE=async(e,s)=>{if(!e)return[];try{let t=[],l=1,a=!0;for(;a;){let r=await (0,j.teamListCall)(e,s||null,null);t=[...t,...r],l{if(!e)return[];try{let s=[],t=1,l=!0;for(;l;){let a=await (0,j.organizationListCall)(e);s=[...s,...a],t{let[e,s]=(0,d.useState)("http://localhost:4000");return(0,d.useEffect)(()=>{{let{protocol:e,host:t}=window.location;s("".concat(e,"//").concat(t))}},[]),e};var sM=t(71594),sO=t(24525),sD=t(47323),sF=t(21626),sR=t(97214),sz=t(28241),sU=t(58834),sq=t(69552),sV=t(71876),sB=t(86462),sK=t(47686),sG=t(44633),sH=t(49084);function sY(e){let{keys:s,setKeys:t,isLoading:l=!1,pagination:a,onPageChange:r,pageSize:i=50,teams:n,selectedTeam:o,setSelectedTeam:m,selectedKeyAlias:u,setSelectedKeyAlias:x,accessToken:h,userID:p,userRole:g,organizations:f,setCurrentOrg:v,refresh:y,onSortChange:_,currentSort:N,premiumUser:Z,setAccessToken:w}=e,[S,C]=(0,d.useState)(null),[I,A]=(0,d.useState)([]),[T,E]=d.useState(()=>N?[{id:N.sortBy,desc:"desc"===N.sortOrder}]:[{id:"created_at",desc:!0}]),[L,P]=(0,d.useState)({}),{filters:M,filteredKeys:O,allKeyAliases:D,allTeams:R,allOrganizations:z,handleFilterChange:U,handleFilterReset:q}=function(e){let{keys:s,teams:t,organizations:l,accessToken:a}=e,r={"Team ID":"","Organization ID":"","Key Alias":"","User ID":"","Sort By":"created_at","Sort Order":"desc"},[i,n]=(0,d.useState)(r),[o,c]=(0,d.useState)(t||[]),[m,u]=(0,d.useState)(l||[]),[x,h]=(0,d.useState)(s),p=(0,d.useRef)(0),g=(0,d.useCallback)(eC()(async e=>{if(!a)return;let s=Date.now();p.current=s;try{let t=await (0,j.keyListCall)(a,e["Organization ID"]||null,e["Team ID"]||null,e["Key Alias"]||null,e["User ID"]||null,e["Key Hash"]||null,1,25,e["Sort By"]||null,e["Sort Order"]||null);s===p.current&&t&&(h(t.keys),console.log("called from debouncedSearch filters:",JSON.stringify(e)),console.log("called from debouncedSearch data:",JSON.stringify(t)))}catch(e){console.error("Error searching users:",e)}},300),[a]);(0,d.useEffect)(()=>{if(!s){h([]);return}let e=[...s];i["Team ID"]&&(e=e.filter(e=>e.team_id===i["Team ID"])),i["Organization ID"]&&(e=e.filter(e=>e.organization_id===i["Organization ID"])),h(e)},[s,i]),(0,d.useEffect)(()=>{let e=async()=>{let e=await sE(a);e.length>0&&c(e);let s=await sL(a);s.length>0&&u(s)};a&&e()},[a]);let f=(0,sA.a)({queryKey:["allKeys"],queryFn:async()=>{if(!a)throw Error("Access token required");return await sT(a)},enabled:!!a}).data||[];return(0,d.useEffect)(()=>{t&&t.length>0&&c(e=>e.length{l&&l.length>0&&u(e=>e.length{n({"Team ID":e["Team ID"]||"","Organization ID":e["Organization ID"]||"","Key Alias":e["Key Alias"]||"","User ID":e["User ID"]||"","Sort By":e["Sort By"]||"created_at","Sort Order":e["Sort Order"]||"desc"}),g({...i,...e})},handleFilterReset:()=>{n(r),g(r)}}}({keys:s,teams:n,organizations:f,accessToken:h});(0,d.useEffect)(()=>{if(h){let e=s.map(e=>e.user_id).filter(e=>null!==e);(async()=>{A((await (0,j.userListCall)(h,e,1,100)).users)})()}},[h,s]),(0,d.useEffect)(()=>{if(y){let e=()=>{y()};return window.addEventListener("storage",e),()=>{window.removeEventListener("storage",e)}}},[y]);let V=[{id:"expander",header:()=>null,cell:e=>{let{row:s}=e;return s.getCanExpand()?(0,c.jsx)("button",{onClick:s.getToggleExpandedHandler(),style:{cursor:"pointer"},children:s.getIsExpanded()?"▼":"▶"}):null}},{id:"token",accessorKey:"token",header:"Key ID",cell:e=>(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.getValue(),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>C(e.getValue()),children:e.getValue()?"".concat(e.getValue().slice(0,7),"..."):"-"})})})},{id:"key_alias",accessorKey:"key_alias",header:"Key Alias",cell:e=>{let s=e.getValue();return(0,c.jsx)(B.Z,{title:s,children:s?s.length>20?"".concat(s.slice(0,20),"..."):s:"-"})}},{id:"key_name",accessorKey:"key_name",header:"Secret Key",cell:e=>(0,c.jsx)("span",{className:"font-mono text-xs",children:e.getValue()})},{id:"team_alias",accessorKey:"team_id",header:"Team Alias",cell:e=>{let{row:s,getValue:t}=e,l=t(),a=null==n?void 0:n.find(e=>e.team_id===l);return(null==a?void 0:a.team_alias)||"Unknown"}},{id:"team_id",accessorKey:"team_id",header:"Team ID",cell:e=>(0,c.jsx)(B.Z,{title:e.getValue(),children:e.getValue()?"".concat(e.getValue().slice(0,7),"..."):"-"})},{id:"organization_id",accessorKey:"organization_id",header:"Organization ID",cell:e=>e.getValue()?e.renderValue():"-"},{id:"user_email",accessorKey:"user_id",header:"User Email",cell:e=>{let s=e.getValue(),t=I.find(e=>e.user_id===s);return(null==t?void 0:t.user_email)?(0,c.jsx)(B.Z,{title:null==t?void 0:t.user_email,children:(0,c.jsxs)("span",{children:[null==t?void 0:t.user_email.slice(0,20),"..."]})}):"-"}},{id:"user_id",accessorKey:"user_id",header:"User ID",cell:e=>{let s=e.getValue();return s&&s.length>15?(0,c.jsx)(B.Z,{title:s,children:(0,c.jsxs)("span",{children:[s.slice(0,7),"..."]})}):s||"-"}},{id:"created_at",accessorKey:"created_at",header:"Created At",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleDateString():"-"}},{id:"created_by",accessorKey:"created_by",header:"Created By",cell:e=>{let s=e.getValue();return s&&s.length>15?(0,c.jsx)(B.Z,{title:s,children:(0,c.jsxs)("span",{children:[s.slice(0,7),"..."]})}):s}},{id:"updated_at",accessorKey:"updated_at",header:"Updated At",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleDateString():"Never"}},{id:"expires",accessorKey:"expires",header:"Expires",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleDateString():"Never"}},{id:"spend",accessorKey:"spend",header:"Spend (USD)",cell:e=>eP(e.getValue(),4)},{id:"max_budget",accessorKey:"max_budget",header:"Budget (USD)",cell:e=>{let s=e.getValue();return null===s?"Unlimited":"$".concat(eP(s))}},{id:"budget_reset_at",accessorKey:"budget_reset_at",header:"Budget Reset",cell:e=>{let s=e.getValue();return s?new Date(s).toLocaleString():"Never"}},{id:"models",accessorKey:"models",header:"Models",cell:e=>{let s=e.getValue();return(0,c.jsx)("div",{className:"flex flex-col py-2",children:Array.isArray(s)?(0,c.jsx)("div",{className:"flex flex-col",children:0===s.length?(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"flex items-start",children:[s.length>3&&(0,c.jsx)("div",{children:(0,c.jsx)(sD.Z,{icon:L[e.row.id]?sB.Z:sK.Z,className:"cursor-pointer",size:"xs",onClick:()=>{P(s=>({...s,[e.row.id]:!s[e.row.id]}))}})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[s.slice(0,3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s)),s.length>3&&!L[e.row.id]&&(0,c.jsx)(se.Z,{size:"xs",color:"gray",className:"cursor-pointer",children:(0,c.jsxs)(k.Z,{children:["+",s.length-3," ",s.length-3==1?"more model":"more models"]})}),L[e.row.id]&&(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:s.slice(3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s+3):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s+3))})]})]})})}):null})}},{id:"rate_limits",header:"Rate Limits",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:["TPM: ",null!==t.tpm_limit?t.tpm_limit:"Unlimited"]}),(0,c.jsxs)("div",{children:["RPM: ",null!==t.rpm_limit?t.rpm_limit:"Unlimited"]})]})}}];console.log("keys: ".concat(JSON.stringify(s)));let K=(0,sM.b7)({data:O,columns:V.filter(e=>"expander"!==e.id),state:{sorting:T},onSortingChange:e=>{let s="function"==typeof e?e(T):e;if(console.log("newSorting: ".concat(JSON.stringify(s))),E(s),s&&s.length>0){let e=s[0],t=e.id,l=e.desc?"desc":"asc";console.log("sortBy: ".concat(t,", sortOrder: ").concat(l)),U({...M,"Sort By":t,"Sort Order":l}),null==_||_(t,l)}},getCoreRowModel:(0,sO.sC)(),getSortedRowModel:(0,sO.tj)(),enableSorting:!0,manualSorting:!1});return d.useEffect(()=>{N&&E([{id:N.sortBy,desc:"desc"===N.sortOrder}])},[N]),(0,c.jsx)("div",{className:"w-full h-full overflow-hidden",children:S?(0,c.jsx)(sS,{keyId:S,onClose:()=>C(null),keyData:O.find(e=>e.token===S),onKeyDataUpdate:e=>{t(s=>s.map(s=>s.token===e.token?eL(s,e):s)),y&&y()},onDelete:()=>{t(e=>e.filter(e=>e.token!==S)),y&&y()},accessToken:h,userID:p,userRole:g,teams:R,premiumUser:Z,setAccessToken:w}):(0,c.jsxs)("div",{className:"border-b py-4 flex-1 overflow-hidden",children:[(0,c.jsx)("div",{className:"w-full mb-6",children:(0,c.jsx)(sI,{options:[{name:"Team ID",label:"Team ID",isSearchable:!0,searchFn:async e=>R&&0!==R.length?R.filter(s=>s.team_id.toLowerCase().includes(e.toLowerCase())||s.team_alias&&s.team_alias.toLowerCase().includes(e.toLowerCase())).map(e=>({label:"".concat(e.team_alias||e.team_id," (").concat(e.team_id,")"),value:e.team_id})):[]},{name:"Organization ID",label:"Organization ID",isSearchable:!0,searchFn:async e=>z&&0!==z.length?z.filter(s=>{var t,l;return null!==(l=null===(t=s.organization_id)||void 0===t?void 0:t.toLowerCase().includes(e.toLowerCase()))&&void 0!==l&&l}).filter(e=>null!==e.organization_id&&void 0!==e.organization_id).map(e=>({label:"".concat(e.organization_id||"Unknown"," (").concat(e.organization_id,")"),value:e.organization_id})):[]},{name:"Key Alias",label:"Key Alias",isSearchable:!0,searchFn:async e=>D.filter(s=>s.toLowerCase().includes(e.toLowerCase())).map(e=>({label:e,value:e}))},{name:"User ID",label:"User ID",isSearchable:!1},{name:"Key Hash",label:"Key Hash",isSearchable:!1}],onApplyFilters:U,initialValues:M,onResetFilters:q})}),(0,c.jsxs)("div",{className:"flex items-center justify-between w-full mb-4",children:[(0,c.jsxs)("span",{className:"inline-flex text-sm text-gray-700",children:["Showing"," ",l?"...":"".concat((a.currentPage-1)*i+1," - ").concat(Math.min(a.currentPage*i,a.totalCount))," ","of ",l?"...":a.totalCount," results"]}),(0,c.jsxs)("div",{className:"inline-flex items-center gap-2",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Page ",l?"...":a.currentPage," of ",l?"...":a.totalPages]}),(0,c.jsx)("button",{onClick:()=>r(a.currentPage-1),disabled:l||1===a.currentPage,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Previous"}),(0,c.jsx)("button",{onClick:()=>r(a.currentPage+1),disabled:l||a.currentPage===a.totalPages,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Next"})]})]}),(0,c.jsx)("div",{className:"h-[75vh] overflow-auto",children:(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sU.Z,{children:K.getHeaderGroups().map(e=>(0,c.jsx)(sV.Z,{children:e.headers.map(e=>(0,c.jsx)(sq.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sB.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sR.Z,{children:l?(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:V.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"\uD83D\uDE85 Loading keys..."})})})}):O.length>0?K.getRowModel().rows.map(e=>(0,c.jsx)(sV.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sz.Z,{style:{maxWidth:"8-x",whiteSpace:"pre-wrap",overflow:"hidden"},className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("models"===e.column.id&&e.getValue().length>3?"px-0":""),children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:V.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No keys found"})})})})})]})})})})]})})}var sJ=e=>{let{userID:s,userRole:t,accessToken:l,selectedTeam:a,setSelectedTeam:r,data:i,setData:n,teams:o,premiumUser:m,currentOrg:u,organizations:x,setCurrentOrg:h,selectedKeyAlias:p,setSelectedKeyAlias:g,createClicked:f,setAccessToken:N}=e,[Z,w]=(0,d.useState)(!1),[I,E]=(0,d.useState)(!1),[L,P]=(0,d.useState)(null),[M,O]=(0,d.useState)(""),[F,R]=(0,d.useState)(null),[z,U]=(0,d.useState)(null),[q,V]=(0,d.useState)((null==a?void 0:a.team_id)||"");(0,d.useEffect)(()=>{V((null==a?void 0:a.team_id)||"")},[a]);let{keys:B,isLoading:K,error:G,pagination:H,refresh:Y,setKeys:J}=e7({selectedTeam:a||void 0,currentOrg:u,selectedKeyAlias:p,accessToken:l||"",createClicked:f}),[W,$]=(0,d.useState)(!1),[Q,X]=(0,d.useState)(!1),[ee,es]=(0,d.useState)(null),[et,el]=(0,d.useState)([]),ea=new Set,[er,ei]=(0,d.useState)(!1),[en,ec]=(0,d.useState)(!1),[ed,em]=(0,d.useState)(null),[eu,ex]=(0,d.useState)(null),[eh]=A.Z.useForm(),[ep,eg]=(0,d.useState)(null),[ej,ef]=(0,d.useState)(ea),[ev,ey]=(0,d.useState)([]);(0,d.useEffect)(()=>{console.log("in calculateNewExpiryTime for selectedToken",ee),(null==eu?void 0:eu.duration)?eg((e=>{if(!e)return null;try{let s;let t=new Date;if(e.endsWith("s"))s=(0,e6.Z)(t,{seconds:parseInt(e)});else if(e.endsWith("h"))s=(0,e6.Z)(t,{hours:parseInt(e)});else if(e.endsWith("d"))s=(0,e6.Z)(t,{days:parseInt(e)});else throw Error("Invalid duration format");return s.toLocaleString("en-US",{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0})}catch(e){return null}})(eu.duration)):eg(null),console.log("calculateNewExpiryTime:",ep)},[ee,null==eu?void 0:eu.duration]),(0,d.useEffect)(()=>{(async()=>{try{if(null===s||null===t||null===l)return;let e=await D(s,t,l);e&&el(e)}catch(e){eo.Z.error({description:"Error fetching user models"})}})()},[l,s,t]),(0,d.useEffect)(()=>{if(o){let e=new Set;o.forEach((s,t)=>{let l=s.team_id;e.add(l)}),ef(e)}},[o]);let eb=async()=>{if(null!=L&&null!=B){try{if(!l)return;await (0,j.keyDeleteCall)(l,L);let e=B.filter(e=>e.token!==L);J(e)}catch(e){eo.Z.error({description:"Error deleting the key"})}E(!1),P(null),O("")}},e_=()=>{E(!1),P(null),O("")},eN=(e,s)=>{ex(t=>({...t,[e]:s}))},eZ=async()=>{if(!m){eo.Z.warning({description:"Regenerate API Key is an Enterprise feature. Please upgrade to use this feature."});return}if(null!=ee)try{let e=await eh.validateFields();if(!l)return;let s=await (0,j.regenerateKeyCall)(l,ee.token||ee.token_id,e);if(em(s.key),i){let t=i.map(t=>t.token===(null==ee?void 0:ee.token)?{...t,key_name:s.key_name,...e}:t);n(t)}ec(!1),eh.resetFields(),eo.Z.success({description:"API Key regenerated successfully"})}catch(e){console.error("Error regenerating key:",e),eo.Z.error({description:"Failed to regenerate API Key"})}};return(0,c.jsxs)("div",{children:[(0,c.jsx)(sY,{keys:B,setKeys:J,isLoading:K,pagination:H,onPageChange:e=>{Y({page:e})},pageSize:100,teams:o,selectedTeam:a,setSelectedTeam:r,accessToken:l,userID:s,userRole:t,organizations:x,setCurrentOrg:h,refresh:Y,selectedKeyAlias:p,setSelectedKeyAlias:g,premiumUser:m,setAccessToken:N}),I&&(()=>{let e=null==B?void 0:B.find(e=>e.token===L),s=(null==e?void 0:e.key_alias)||(null==e?void 0:e.token_id)||L,t=M===s;return(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl w-full max-w-2xl min-h-[380px] py-6 overflow-hidden transform transition-all flex flex-col justify-between",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Delete Key"}),(0,c.jsx)("button",{onClick:()=>{e_(),O("")},className:"text-gray-400 hover:text-gray-500 focus:outline-none",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,c.jsxs)("div",{className:"px-6 py-4",children:[(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.082 16.5c-.77.833.192 2.5 1.732 2.5z"})})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-base font-medium text-red-600",children:"Warning: You are about to delete this API key."}),(0,c.jsx)("p",{className:"text-base text-red-600 mt-2",children:"This action is irreversible and will immediately revoke access for any applications using this key."})]})]}),(0,c.jsx)("p",{className:"text-base text-gray-600 mb-5",children:"Are you sure you want to delete this API key?"}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsx)("span",{className:"underline",children:s})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:M,onChange:e=>O(e.target.value),placeholder:"Enter key name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]})]})]}),(0,c.jsxs)("div",{className:"px-6 py-4 bg-gray-50 flex justify-end gap-4",children:[(0,c.jsx)("button",{onClick:()=>{e_(),O("")},className:"px-5 py-3 bg-white border border-gray-300 rounded-md text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:"Cancel"}),(0,c.jsx)("button",{onClick:eb,disabled:!t,className:"px-5 py-3 rounded-md text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 ".concat(t?"bg-red-600 hover:bg-red-700":"bg-red-300 cursor-not-allowed"),children:"Delete Key"})]})]})})})(),(0,c.jsx)(T.Z,{title:"Regenerate API Key",visible:en,onCancel:()=>{ec(!1),eh.resetFields()},footer:[(0,c.jsx)(b.Z,{onClick:()=>{ec(!1),eh.resetFields()},className:"mr-2",children:"Cancel"},"cancel"),(0,c.jsx)(b.Z,{onClick:eZ,disabled:!m,children:m?"Regenerate":"Upgrade to Regenerate"},"regenerate")],children:m?(0,c.jsxs)(A.Z,{form:eh,layout:"vertical",onValuesChange:(e,s)=>{"duration"in e&&eN("duration",e.duration)},children:[(0,c.jsx)(A.Z.Item,{name:"key_alias",label:"Key Alias",children:(0,c.jsx)(_.Z,{disabled:!0})}),(0,c.jsx)(A.Z.Item,{name:"max_budget",label:"Max Budget (USD)",children:(0,c.jsx)(e8.Z,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"tpm_limit",label:"TPM Limit",children:(0,c.jsx)(e8.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"rpm_limit",label:"RPM Limit",children:(0,c.jsx)(e8.Z,{style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{name:"duration",label:"Expire Key (eg: 30s, 30h, 30d)",className:"mt-8",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsxs)("div",{className:"mt-2 text-sm text-gray-500",children:["Current expiry:"," ",(null==ee?void 0:ee.expires)!=null?new Date(ee.expires).toLocaleString():"Never"]}),ep&&(0,c.jsxs)("div",{className:"mt-2 text-sm text-green-600",children:["New expiry: ",ep]})]}):(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"mb-2 text-gray-500 italic text-[12px]",children:"Upgrade to use this feature"}),(0,c.jsx)(b.Z,{variant:"primary",className:"mb-2",children:(0,c.jsx)("a",{href:"https://calendly.com/d/4mp-gd3-k5k/litellm-1-1-onboarding-chat",target:"_blank",children:"Get Free Trial"})})]})}),ed&&(0,c.jsx)(T.Z,{visible:!!ed,onCancel:()=>em(null),footer:[(0,c.jsx)(b.Z,{onClick:()=>em(null),children:"Close"},"close")],children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:"Regenerated Key"}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)("p",{children:["Please replace your old key with the new key generated. For security reasons,"," ",(0,c.jsx)("b",{children:"you will not be able to view it again"})," through your LiteLLM account. If you lose this secret key, you will need to generate a new one."]})}),(0,c.jsxs)(v.Z,{numColSpan:1,children:[(0,c.jsx)(k.Z,{className:"mt-3",children:"Key Alias:"}),(0,c.jsx)("div",{style:{background:"#f8f8f8",padding:"10px",borderRadius:"5px",marginBottom:"10px"},children:(0,c.jsx)("pre",{style:{wordWrap:"break-word",whiteSpace:"normal"},children:(null==ee?void 0:ee.key_alias)||"No alias set"})}),(0,c.jsx)(k.Z,{className:"mt-3",children:"New API Key:"}),(0,c.jsx)("div",{style:{background:"#f8f8f8",padding:"10px",borderRadius:"5px",marginBottom:"10px"},children:(0,c.jsx)("pre",{style:{wordWrap:"break-word",whiteSpace:"normal"},children:ed})}),(0,c.jsx)(C.CopyToClipboard,{text:ed,onCopy:()=>eo.Z.success({description:"API Key copied to clipboard"}),children:(0,c.jsx)(b.Z,{className:"mt-3",children:"Copy API Key"})})]})]})})]})},sW=t(12011),s$=t(3914),sQ=e=>{let{userID:s,userRole:t,teams:l,keys:a,setUserRole:r,userEmail:i,setUserEmail:n,setTeams:o,setKeys:x,premiumUser:h,organizations:p,addKey:g,createClicked:b}=e,[_,N]=(0,d.useState)(null),[Z,w]=(0,d.useState)(null),k=(0,m.useSearchParams)(),S=function(e){console.log("COOKIES",document.cookie);let s=document.cookie.split("; ").find(s=>s.startsWith(e+"="));return s?s.split("=")[1]:null}("token"),C=k.get("invitation_id"),[I,A]=(0,d.useState)(null),[T,E]=(0,d.useState)(null),[L,P]=(0,d.useState)([]),[M,O]=(0,d.useState)(null),[D,F]=(0,d.useState)(null),[R,z]=(0,d.useState)(null);if(window.addEventListener("beforeunload",function(){sessionStorage.clear()}),(0,d.useEffect)(()=>{if(S){let e=(0,u.o)(S);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),A(e.key),e.user_role){let s=function(e){if(!e)return"Undefined Role";switch(console.log("Received user role: ".concat(e)),e.toLowerCase()){case"app_owner":case"demo_app_owner":return"App Owner";case"app_admin":case"proxy_admin":return"Admin";case"proxy_admin_viewer":return"Admin Viewer";case"app_user":return"App User";case"internal_user":return"Internal User";case"internal_user_viewer":return"Internal Viewer";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",s),r(s)}else console.log("User role not defined");e.user_email?n(e.user_email):console.log("User Email is not set ".concat(e))}}if(s&&I&&t&&!a&&!_){let e=sessionStorage.getItem("userModels"+s);e?P(JSON.parse(e)):(console.log("currentOrg: ".concat(JSON.stringify(Z))),(async()=>{try{let e=await (0,j.getProxyUISettings)(I);O(e);let l=await (0,j.userInfoCall)(I,s,t,!1,null,null);N(l.user_info),console.log("userSpendData: ".concat(JSON.stringify(_))),(null==l?void 0:l.teams[0].keys)?x(l.keys.concat(l.teams.filter(e=>"Admin"===t||e.user_id===s).flatMap(e=>e.keys))):x(l.keys),sessionStorage.setItem("userData"+s,JSON.stringify(l.keys)),sessionStorage.setItem("userSpendData"+s,JSON.stringify(l.user_info));let a=(await (0,j.modelAvailableCall)(I,s,t)).data.map(e=>e.id);console.log("available_model_names:",a),P(a),console.log("userModels:",L),sessionStorage.setItem("userModels"+s,JSON.stringify(a))}catch(e){console.error("There was an error fetching the data",e),e.message.includes("Invalid proxy server token passed")&&U()}})(),f(I,s,t,Z,o))}},[s,S,I,a,t]),(0,d.useEffect)(()=>{I&&(async()=>{try{let e=await (0,j.keyInfoCall)(I,[I]);console.log("keyInfo: ",e)}catch(e){e.message.includes("Invalid proxy server token passed")&&U()}})()},[I]),(0,d.useEffect)(()=>{console.log("currentOrg: ".concat(JSON.stringify(Z),", accessToken: ").concat(I,", userID: ").concat(s,", userRole: ").concat(t)),I&&(console.log("fetching teams"),f(I,s,t,Z,o))},[Z]),(0,d.useEffect)(()=>{if(null!==a&&null!=D&&null!==D.team_id){let e=0;for(let s of(console.log("keys: ".concat(JSON.stringify(a))),a))D.hasOwnProperty("team_id")&&null!==s.team_id&&s.team_id===D.team_id&&(e+=s.spend);console.log("sum: ".concat(e)),E(e)}else if(null!==a){let e=0;for(let s of a)e+=s.spend;E(e)}},[D]),null!=C)return(0,c.jsx)(sW.default,{});function U(){(0,s$.b)();let e=(0,j.getProxyBaseUrl)();console.log("proxyBaseUrl:",e);let s=e?"".concat(e,"/sso/key/generate"):"/sso/key/generate";return console.log("Full URL:",s),window.location.href=s,null}if(null==S)return console.log("All cookies before redirect:",document.cookie),U(),null;try{let e=(0,u.o)(S);console.log("Decoded token:",e);let s=e.exp,t=Math.floor(Date.now()/1e3);if(s&&t>=s)return console.log("Token expired, redirecting to login"),U(),null}catch(e){return console.error("Error decoding token:",e),(0,s$.b)(),U(),null}if(null==I)return null;if(null==s)return(0,c.jsx)("h1",{children:"User ID is not set"});if(null==t&&r("App Owner"),t&&"Admin Viewer"==t){let{Title:e,Paragraph:s}=en.default;return(0,c.jsxs)("div",{children:[(0,c.jsx)(e,{level:1,children:"Access Denied"}),(0,c.jsx)(s,{children:"Ask your proxy admin for access to create keys"})]})}return console.log("inside user dashboard, selected team",D),console.log("All cookies after redirect:",document.cookie),(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[(0,c.jsx)(e3,{userID:s,team:D,teams:l,userRole:t,accessToken:I,data:a,addKey:g,premiumUser:h},D?D.team_id:null),(0,c.jsx)(sJ,{userID:s,userRole:t,accessToken:I,selectedTeam:D||null,setSelectedTeam:F,selectedKeyAlias:R,setSelectedKeyAlias:z,data:a,setData:x,premiumUser:h,teams:l,currentOrg:Z,setCurrentOrg:w,organizations:p,createClicked:b,setAccessToken:A})]})})})},sX=t(97765),s0=t(42673);let s1=async(e,s,t)=>{try{console.log("handling submit for formValues:",e);let s=e.model_mappings||[];if("model_mappings"in e&&delete e.model_mappings,e.model&&e.model.includes("all-wildcard")){let t=e.custom_llm_provider,l=s0.fK[t]+"/*";e.model_name=l,s.push({public_name:l,litellm_model:l}),e.model=l}let t=[];for(let l of s){let s={},a={},r=l.public_name;for(let[t,r]of(s.model=l.litellm_model,e.input_cost_per_token&&(e.input_cost_per_token=Number(e.input_cost_per_token)/1e6),e.output_cost_per_token&&(e.output_cost_per_token=Number(e.output_cost_per_token)/1e6),s.model=l.litellm_model,console.log("formValues add deployment:",e),Object.entries(e)))if(""!==r&&"custom_pricing"!==t&&"pricing_model"!==t&&"cache_control"!==t){if("model_name"==t)s.model=r;else if("custom_llm_provider"==t){console.log("custom_llm_provider:",r);let e=s0.fK[r];s.custom_llm_provider=e,console.log("custom_llm_provider mappingResult:",e)}else if("model"==t)continue;else if("base_model"===t)a[t]=r;else if("team_id"===t)a.team_id=r;else if("model_access_group"===t)a.access_groups=r;else if("mode"==t)console.log("placing mode in modelInfo"),a.mode=r,delete s.mode;else if("custom_model_name"===t)s.model=r;else if("litellm_extra_params"==t){console.log("litellm_extra_params:",r);let e={};if(r&&void 0!=r){try{e=JSON.parse(r)}catch(e){throw eo.Z.fromBackend("Failed to parse LiteLLM Extra Params: "+e),Error("Failed to parse litellm_extra_params: "+e)}for(let[t,l]of Object.entries(e))s[t]=l}}else if("model_info_params"==t){console.log("model_info_params:",r);let e={};if(r&&void 0!=r){try{e=JSON.parse(r)}catch(e){throw eo.Z.fromBackend("Failed to parse LiteLLM Extra Params: "+e),Error("Failed to parse litellm_extra_params: "+e)}for(let[s,t]of Object.entries(e))a[s]=t}}else if("input_cost_per_token"===t||"output_cost_per_token"===t||"input_cost_per_second"===t){r&&(s[t]=Number(r));continue}else s[t]=r}t.push({litellmParamsObj:s,modelInfoObj:a,modelName:r})}return t}catch(e){eo.Z.fromBackend("Failed to create model: "+e)}},s2=async(e,s,t,l)=>{try{let a=await s1(e,s,t);if(!a||0===a.length)return;for(let e of a){let{litellmParamsObj:t,modelInfoObj:l,modelName:a}=e,r={model_name:a,litellm_params:t,model_info:l},i=await (0,j.modelCreateCall)(s,r);console.log("response for model create call: ".concat(i.data))}l&&l(),t.resetFields()}catch(e){eo.Z.fromBackend("Failed to add model: "+e)}};var s4=t(53410),s5=t(47451),s3=t(69410);let{Link:s6}=en.default,s8={[s0.Cl.OpenAI]:[{key:"api_base",label:"API Base",type:"select",options:["https://api.openai.com/v1","https://eu.api.openai.com"],defaultValue:"https://api.openai.com/v1"},{key:"organization",label:"OpenAI Organization ID",placeholder:"[OPTIONAL] my-unique-org"},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.OpenAI_Text]:[{key:"api_base",label:"API Base",type:"select",options:["https://api.openai.com/v1","https://eu.api.openai.com"],defaultValue:"https://api.openai.com/v1"},{key:"organization",label:"OpenAI Organization ID",placeholder:"[OPTIONAL] my-unique-org"},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.Vertex_AI]:[{key:"vertex_project",label:"Vertex Project",placeholder:"adroit-cadet-1234..",required:!0},{key:"vertex_location",label:"Vertex Location",placeholder:"us-east-1",required:!0},{key:"vertex_credentials",label:"Vertex Credentials",required:!0,type:"upload"}],[s0.Cl.AssemblyAI]:[{key:"api_base",label:"API Base",type:"select",required:!0,options:["https://api.assemblyai.com","https://api.eu.assemblyai.com"]},{key:"api_key",label:"AssemblyAI API Key",type:"password",required:!0}],[s0.Cl.Azure]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_version",label:"API Version",placeholder:"2023-07-01-preview",tooltip:"By default litellm will use the latest version. If you want to use a different version, you can specify it here"},{key:"base_model",label:"Base Model",placeholder:"azure/gpt-3.5-turbo"},{key:"api_key",label:"Azure API Key",type:"password",required:!0}],[s0.Cl.Azure_AI_Studio]:[{key:"api_base",label:"API Base",placeholder:"https://.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-10-21",tooltip:"Enter your full Target URI from Azure Foundry here. Example: https://litellm8397336933.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-10-21",required:!0},{key:"api_key",label:"Azure API Key",type:"password",required:!0}],[s0.Cl.OpenAI_Compatible]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.Dashscope]:[{key:"api_key",label:"Dashscope API Key",type:"password",required:!0},{key:"api_base",label:"API Base",placeholder:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",defaultValue:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",required:!0,tooltip:"The base URL for your Dashscope server. Defaults to https://dashscope-intl.aliyuncs.com/compatible-mode/v1 if not specified."}],[s0.Cl.OpenAI_Text_Compatible]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.Bedrock]:[{key:"aws_access_key_id",label:"AWS Access Key ID",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_secret_access_key",label:"AWS Secret Access Key",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_session_token",label:"AWS Session Token",type:"password",required:!1,tooltip:"Temporary credentials session token. You can provide the raw token or the environment variable (e.g. `os.environ/MY_SESSION_TOKEN`)."},{key:"aws_region_name",label:"AWS Region Name",placeholder:"us-east-1",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_session_name",label:"AWS Session Name",placeholder:"my-session",required:!1,tooltip:"Name for the AWS session. You can provide the raw value or the environment variable (e.g. `os.environ/MY_SESSION_NAME`)."},{key:"aws_profile_name",label:"AWS Profile Name",placeholder:"default",required:!1,tooltip:"AWS profile name to use for authentication. You can provide the raw value or the environment variable (e.g. `os.environ/MY_PROFILE_NAME`)."},{key:"aws_role_name",label:"AWS Role Name",placeholder:"MyRole",required:!1,tooltip:"AWS IAM role name to assume. You can provide the raw value or the environment variable (e.g. `os.environ/MY_ROLE_NAME`)."},{key:"aws_web_identity_token",label:"AWS Web Identity Token",type:"password",required:!1,tooltip:"Web identity token for OIDC authentication. You can provide the raw token or the environment variable (e.g. `os.environ/MY_WEB_IDENTITY_TOKEN`)."},{key:"aws_bedrock_runtime_endpoint",label:"AWS Bedrock Runtime Endpoint",placeholder:"https://bedrock-runtime.us-east-1.amazonaws.com",required:!1,tooltip:"Custom Bedrock runtime endpoint URL. You can provide the raw value or the environment variable (e.g. `os.environ/MY_BEDROCK_ENDPOINT`)."}],[s0.Cl.SageMaker]:[{key:"aws_access_key_id",label:"AWS Access Key ID",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_secret_access_key",label:"AWS Secret Access Key",type:"password",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."},{key:"aws_region_name",label:"AWS Region Name",placeholder:"us-east-1",required:!1,tooltip:"You can provide the raw key or the environment variable (e.g. `os.environ/MY_SECRET_KEY`)."}],[s0.Cl.Ollama]:[{key:"api_base",label:"API Base",placeholder:"http://localhost:11434",defaultValue:"http://localhost:11434",required:!1,tooltip:"The base URL for your Ollama server. Defaults to http://localhost:11434 if not specified."}],[s0.Cl.Anthropic]:[{key:"api_key",label:"API Key",placeholder:"sk-",type:"password",required:!0}],[s0.Cl.Deepgram]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.ElevenLabs]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Google_AI_Studio]:[{key:"api_key",label:"API Key",placeholder:"aig-",type:"password",required:!0}],[s0.Cl.Groq]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.MistralAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Deepseek]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Cohere]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Databricks]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.xAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.AIML]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Cerebras]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Sambanova]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Perplexity]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.TogetherAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Openrouter]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.FireworksAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.GradientAI]:[{key:"api_base",label:"GradientAI Endpoint",placeholder:"https://...",required:!1},{key:"api_key",label:"GradientAI API Key",type:"password",required:!0}],[s0.Cl.Triton]:[{key:"api_key",label:"API Key",type:"password",required:!1},{key:"api_base",label:"API Base",placeholder:"http://localhost:8000/generate",required:!1}],[s0.Cl.Hosted_Vllm]:[{key:"api_base",label:"API Base",placeholder:"https://...",required:!0},{key:"api_key",label:"OpenAI API Key",type:"password",required:!0}],[s0.Cl.Voyage]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.JinaAI]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.VolcEngine]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.DeepInfra]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Oracle]:[{key:"api_key",label:"API Key",type:"password",required:!0}],[s0.Cl.Snowflake]:[{key:"api_key",label:"Snowflake API Key / JWT Key for Authentication",type:"password",required:!0},{key:"api_base",label:"Snowflake API Endpoint",placeholder:"https://1234567890.snowflakecomputing.com/api/v2/cortex/inference:complete",tooltip:"Enter the full endpoint with path here. Example: https://1234567890.snowflakecomputing.com/api/v2/cortex/inference:complete",required:!0}],[s0.Cl.Infinity]:[{key:"api_base",label:"API Base",placeholder:"http://localhost:7997"}]};var s7=e=>{let{selectedProvider:s,uploadProps:t}=e,l=s0.Cl[s],a=A.Z.useFormInstance(),r=d.useMemo(()=>s8[l]||[],[l]),i={name:"file",accept:".json",beforeUpload:e=>{if("application/json"===e.type){let s=new FileReader;s.onload=e=>{if(e.target){let s=e.target.result;console.log("Setting field value from JSON, length: ".concat(s.length)),a.setFieldsValue({vertex_credentials:s}),console.log("Form values after setting:",a.getFieldsValue())}},s.readAsText(e)}return!1},onChange(e){console.log("Upload onChange triggered in ProviderSpecificFields"),console.log("Current form values:",a.getFieldsValue()),"uploading"!==e.file.status&&console.log(e.file,e.fileList)}};return(0,c.jsx)(c.Fragment,{children:r.map(e=>{var s;return(0,c.jsxs)(d.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:e.label,name:e.key,rules:e.required?[{required:!0,message:"Required"}]:void 0,tooltip:e.tooltip,className:"vertex_credentials"===e.key?"mb-0":void 0,children:"select"===e.type?(0,c.jsx)(I.default,{placeholder:e.placeholder,defaultValue:e.defaultValue,children:null===(s=e.options)||void 0===s?void 0:s.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"upload"===e.type?(0,c.jsx)(ed.default,{...i,onChange:s=>{(null==t?void 0:t.onChange)&&t.onChange(s),setTimeout(()=>{let s=a.getFieldValue(e.key);console.log("".concat(e.key," value after upload:"),JSON.stringify(s))},500)},children:(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(ej.Z,{}),children:"Click to Upload"})}):(0,c.jsx)(_.Z,{placeholder:e.placeholder,type:"password"===e.type?"password":"text"})}),"vertex_credentials"===e.key&&(0,c.jsx)(s5.Z,{children:(0,c.jsx)(s3.Z,{children:(0,c.jsx)(k.Z,{className:"mb-3 mt-1",children:"Give a gcp service account(.json file)"})})}),"base_model"===e.key&&(0,c.jsxs)(s5.Z,{children:[(0,c.jsx)(s3.Z,{span:10}),(0,c.jsx)(s3.Z,{span:10,children:(0,c.jsxs)(k.Z,{className:"mb-2",children:["The actual model your azure deployment uses. Used for accurate cost tracking. Select name from"," ",(0,c.jsx)(s6,{href:"https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json",target:"_blank",children:"here"})]})})]})]},e.key)})})};let{Title:s9,Link:te}=en.default;var ts=e=>{let{isVisible:s,onCancel:t,onAddCredential:l,onUpdateCredential:a,uploadProps:r,addOrEdit:i,existingCredential:n}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)(s0.Cl.OpenAI),[x,h]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{n&&(o.setFieldsValue({credential_name:n.credential_name,custom_llm_provider:n.credential_info.custom_llm_provider,api_base:n.credential_values.api_base,api_version:n.credential_values.api_version,base_model:n.credential_values.base_model,api_key:n.credential_values.api_key}),u(n.credential_info.custom_llm_provider))},[n]),(0,c.jsx)(T.Z,{title:"add"===i?"Add New Credential":"Edit Credential",visible:s,onCancel:()=>{t(),o.resetFields()},footer:null,width:600,children:(0,c.jsxs)(A.Z,{form:o,onFinish:e=>{let s=Object.entries(e).reduce((e,s)=>{let[t,l]=s;return""!==l&&null!=l&&(e[t]=l),e},{});"add"===i?l(s):a(s),o.resetFields()},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Credential Name:",name:"credential_name",rules:[{required:!0,message:"Credential name is required"}],initialValue:null==n?void 0:n.credential_name,children:(0,c.jsx)(eW.o,{placeholder:"Enter a friendly name for these credentials",disabled:null!=n&&!!n.credential_name})}),(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Required"}],label:"Provider:",name:"custom_llm_provider",tooltip:"Helper to auto-populate provider specific fields",children:(0,c.jsx)(I.default,{showSearch:!0,onChange:e=>{u(e),o.setFieldValue("custom_llm_provider",e)},children:Object.entries(s0.Cl).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:s,children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:s0.cd[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(s7,{selectedProvider:m,uploadProps:r}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(te,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{children:[(0,c.jsx)(L.ZP,{onClick:()=>{t(),o.resetFields()},style:{marginRight:10},children:"Cancel"}),(0,c.jsx)(L.ZP,{htmlType:"submit",children:"add"===i?"Add Credential":"Update Credential"})]})]})]})})},tt=e=>{let{isVisible:s,onCancel:t,onConfirm:l,credentialName:a}=e,[r,i]=(0,d.useState)(""),n=r===a,o=()=>{i(""),t()};return(0,c.jsx)(T.Z,{title:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(e_.Z,{className:"h-6 w-6 text-red-600 mr-2"}),"Delete Credential"]}),open:s,footer:null,onCancel:o,closable:!0,destroyOnClose:!0,maskClosable:!1,children:(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)(e_.Z,{className:"h-5 w-5"})}),(0,c.jsx)("div",{children:(0,c.jsx)("p",{className:"text-base font-medium text-red-600",children:"This action cannot be undone and may break existing integrations."})})]}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsxs)("span",{className:"underline italic",children:["'",a,"'"]})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:r,onChange:e=>i(e.target.value),placeholder:"Enter credential name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(b.Z,{onClick:o,variant:"secondary",className:"mr-2",children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:()=>{n&&(i(""),l())},color:"red",className:"focus:ring-red-500",disabled:!n,children:"Delete Credential"})]})]})})},tl=e=>{let{accessToken:s,uploadProps:t,credentialList:l,fetchCredentials:a}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p]=A.Z.useForm(),g=["credential_name","custom_llm_provider"],f=async e=>{if(!s)return;let t=Object.entries(e).filter(e=>{let[s]=e;return!g.includes(s)}).reduce((e,s)=>{let[t,l]=s;return{...e,[t]:l}},{}),l={credential_name:e.credential_name,credential_values:t,credential_info:{custom_llm_provider:e.custom_llm_provider}};await (0,j.credentialUpdateCall)(s,e.credential_name,l),eo.Z.success("Credential updated successfully"),o(!1),a(s)},v=async e=>{if(!s)return;let t=Object.entries(e).filter(e=>{let[s]=e;return!g.includes(s)}).reduce((e,s)=>{let[t,l]=s;return{...e,[t]:l}},{}),l={credential_name:e.credential_name,credential_values:t,credential_info:{custom_llm_provider:e.custom_llm_provider}};await (0,j.credentialCreateCall)(s,l),eo.Z.success("Credential added successfully"),i(!1),a(s)};(0,d.useEffect)(()=>{s&&a(s)},[s]);let y=e=>{let s={openai:"blue",azure:"indigo",anthropic:"purple",default:"gray"},t=s[e.toLowerCase()]||s.default;return(0,c.jsx)(se.Z,{color:t,size:"xs",children:e})},_=async e=>{s&&(await (0,j.credentialDeleteCall)(s,e),eo.Z.success("Credential deleted successfully"),h(null),a(s))},N=e=>{h(e)};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(k.Z,{children:"Configured credentials for different AI providers. Add and manage your API credentials."})}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Credential Name"}),(0,c.jsx)(sq.Z,{children:"Provider"}),(0,c.jsx)(sq.Z,{children:"Description"})]})}),(0,c.jsx)(sR.Z,{children:l&&0!==l.length?l.map((e,s)=>{var t,l;return(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e.credential_name}),(0,c.jsx)(sz.Z,{children:y((null===(t=e.credential_info)||void 0===t?void 0:t.custom_llm_provider)||"-")}),(0,c.jsx)(sz.Z,{children:(null===(l=e.credential_info)||void 0===l?void 0:l.description)||"-"}),(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(b.Z,{icon:s4.Z,variant:"light",size:"sm",onClick:()=>{u(e),o(!0)}}),(0,c.jsx)(b.Z,{icon:W.Z,variant:"light",size:"sm",onClick:()=>N(e.credential_name)})]})]},s)}):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:4,className:"text-center py-4 text-gray-500",children:"No credentials configured"})})})]})}),(0,c.jsx)(b.Z,{onClick:()=>i(!0),className:"mt-4",children:"Add Credential"}),r&&(0,c.jsx)(ts,{onAddCredential:v,isVisible:r,onCancel:()=>i(!1),uploadProps:t,addOrEdit:"add",onUpdateCredential:f,existingCredential:null}),n&&(0,c.jsx)(ts,{onAddCredential:v,isVisible:n,existingCredential:m,onUpdateCredential:f,uploadProps:t,onCancel:()=>o(!1),addOrEdit:"edit"}),x&&(0,c.jsx)(tt,{isVisible:!0,onCancel:()=>{h(null)},onConfirm:()=>_(x),credentialName:x})]})};let ta=e=>{var s;return(null==e?void 0:null===(s=e.model_info)||void 0===s?void 0:s.team_public_model_name)?e.model_info.team_public_model_name:(null==e?void 0:e.model_name)||"-"};var tr=t(21487),ti=e=>{let{value:s,onValueChange:t,label:l="Select Time Range",className:a="",showTimeRange:r=!0}=e,[i,n]=(0,d.useState)(!1),o=(0,d.useRef)(null),m=(0,d.useCallback)(e=>{n(!0),setTimeout(()=>n(!1),1500),t(e),requestIdleCallback(()=>{if(e.from){let s;let l={...e},a=new Date(e.from);s=new Date(e.to?e.to:e.from),a.toDateString(),s.toDateString(),a.setHours(0,0,0,0),s.setHours(23,59,59,999),l.from=a,l.to=s,t(l)}},{timeout:100})},[t]),u=(0,d.useCallback)((e,s)=>{if(!e||!s)return"";let t=e=>e.toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0,timeZoneName:"short"});if(e.toDateString()!==s.toDateString())return"".concat(t(e)," - ").concat(t(s));{let t=e.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),l=e.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0}),a=s.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0,timeZoneName:"short"});return"".concat(t,": ").concat(l," - ").concat(a)}},[]);return(0,c.jsxs)("div",{className:a,children:[l&&(0,c.jsx)(k.Z,{className:"mb-2",children:l}),(0,c.jsxs)("div",{className:"relative w-fit",children:[(0,c.jsx)("div",{ref:o,children:(0,c.jsx)(tr.Z,{enableSelect:!0,value:s,onValueChange:m,placeholder:"Select date range",enableClear:!1,style:{zIndex:100}})}),i&&(0,c.jsx)("div",{className:"absolute top-1/2 animate-pulse",style:{left:"calc(100% + 8px)",transform:"translateY(-50%)",zIndex:110},children:(0,c.jsxs)("div",{className:"flex items-center gap-1 text-green-600 text-sm font-medium bg-white px-2 py-1 rounded-full border border-green-200 shadow-sm whitespace-nowrap",children:[(0,c.jsx)("div",{className:"w-3 h-3 bg-green-500 text-white rounded-full flex items-center justify-center text-xs",children:"✓"}),(0,c.jsx)("span",{className:"text-xs",children:"Selected"})]})})]}),r&&s.from&&s.to&&(0,c.jsx)(k.Z,{className:"mt-2 text-xs text-gray-500",children:u(s.from,s.to)})]})},tn=t(75105),to=t(40278),tc=t(79326),td=t(59664),tm=e=>{let{modelMetrics:s,modelMetricsCategories:t,customTooltip:l,premiumUser:a}=e;return(0,c.jsx)(td.Z,{title:"Time to First token (s)",className:"h-72",data:s,index:"date",showLegend:!1,categories:t,colors:["indigo","rose"],connectNulls:!0,customTooltip:l})},tu=e=>{let{teamData:s,canEditTeam:t,handleMemberDelete:l,setSelectedEditMember:a,setIsEditMemberModalVisible:r,setIsAddMemberModalVisible:i}=e,n=e=>{if(null==e)return"0";if("number"==typeof e){let s=Number(e);return s===Math.floor(s)?s.toString():eP(s,8).replace(/\.?0+$/,"")}return"0"},o=e=>{if(!e)return 0;let t=s.team_memberships.find(s=>s.user_id===e);return(null==t?void 0:t.spend)||0},d=e=>{var t;if(!e)return null;let l=s.team_memberships.find(s=>s.user_id===e);console.log("membership=".concat(l));let a=null==l?void 0:null===(t=l.litellm_budget_table)||void 0===t?void 0:t.max_budget;return null==a?null:n(a)},m=e=>{var t,l;if(!e)return"No Limits";let a=s.team_memberships.find(s=>s.user_id===e),r=null==a?void 0:null===(t=a.litellm_budget_table)||void 0===t?void 0:t.rpm_limit,i=null==a?void 0:null===(l=a.litellm_budget_table)||void 0===l?void 0:l.tpm_limit,o=[r?"".concat(n(r)," RPM"):null,i?"".concat(n(i)," TPM"):null].filter(Boolean);return o.length>0?o.join(" / "):"No Limits"};return(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-auto max-h-[50vh]",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"min-w-full",children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"User ID"}),(0,c.jsx)(sq.Z,{children:"User Email"}),(0,c.jsx)(sq.Z,{children:"Role"}),(0,c.jsxs)(sq.Z,{children:["Team Member Spend (USD)"," ",(0,c.jsx)(B.Z,{title:"This is the amount spent by a user in the team.",children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(sq.Z,{children:"Team Member Budget (USD)"}),(0,c.jsxs)(sq.Z,{children:["Team Member Rate Limits"," ",(0,c.jsx)(B.Z,{title:"Rate limits for this member's usage within this team.",children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(sq.Z,{className:"sticky right-0 bg-white z-10 border-l border-gray-200",children:"Actions"})]})}),(0,c.jsx)(sR.Z,{children:s.team_info.members_with_roles.map((e,i)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_id})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_email?e.user_email:"No Email"})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.role})}),(0,c.jsx)(sz.Z,{children:(0,c.jsxs)(k.Z,{className:"font-mono",children:["$",eP(o(e.user_id),4)]})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:d(e.user_id)?"$".concat(eP(Number(d(e.user_id)),4)):"No Limit"})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:m(e.user_id)})}),(0,c.jsx)(sz.Z,{className:"sticky right-0 bg-white z-10 border-l border-gray-200",children:t&&(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>{var t,l,i;let n=s.team_memberships.find(s=>s.user_id===e.user_id);a({...e,max_budget_in_team:(null==n?void 0:null===(t=n.litellm_budget_table)||void 0===t?void 0:t.max_budget)||null,tpm_limit:(null==n?void 0:null===(l=n.litellm_budget_table)||void 0===l?void 0:l.tpm_limit)||null,rpm_limit:(null==n?void 0:null===(i=n.litellm_budget_table)||void 0===i?void 0:i.rpm_limit)||null}),r(!0)},className:"cursor-pointer hover:text-blue-600"}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>l(e),className:"cursor-pointer hover:text-red-600"})]})})]},i))})]})})}),(0,c.jsx)(b.Z,{onClick:()=>i(!0),children:"Add Member"})]})},tx=t(85180),th=t(89245),tp=t(78355);let tg={"/key/generate":"Member can generate a virtual key for this team","/key/service-account/generate":"Member can generate a service account key (not belonging to any user) for this team","/key/update":"Member can update a virtual key belonging to this team","/key/delete":"Member can delete a virtual key belonging to this team","/key/info":"Member can get info about a virtual key belonging to this team","/key/regenerate":"Member can regenerate a virtual key belonging to this team","/key/{key_id}/regenerate":"Member can regenerate a virtual key belonging to this team","/key/list":"Member can list virtual keys belonging to this team","/key/block":"Member can block a virtual key belonging to this team","/key/unblock":"Member can unblock a virtual key belonging to this team"},tj=e=>e.includes("/info")||e.includes("/list")?"GET":"POST",tf=e=>{let s=tj(e),t=tg[e];if(!t){for(let[s,l]of Object.entries(tg))if(e.includes(s)){t=l;break}}return t||(t="Access ".concat(e)),{method:s,endpoint:e,description:t,route:e}};var tv=e=>{let{teamId:s,accessToken:t,canEditTeam:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)(!0),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),g=async()=>{try{if(m(!0),!t)return;let e=await (0,j.getTeamPermissionsCall)(t,s),l=e.all_available_permissions||[];r(l);let a=e.team_member_permissions||[];n(a),p(!1)}catch(e){eo.Z.fromBackend("Failed to load permissions"),console.error("Error fetching permissions:",e)}finally{m(!1)}};(0,d.useEffect)(()=>{g()},[s,t]);let f=(e,s)=>{n(s?[...i,e]:i.filter(s=>s!==e)),p(!0)},v=async()=>{try{if(!t)return;x(!0),await (0,j.teamPermissionsUpdateCall)(t,s,i),eo.Z.success("Permissions updated successfully"),p(!1)}catch(e){eo.Z.fromBackend("Failed to update permissions"),console.error("Error updating permissions:",e)}finally{x(!1)}};if(o)return(0,c.jsx)("div",{className:"p-6 text-center",children:"Loading permissions..."});let y=a.length>0;return(0,c.jsxs)(G.Z,{className:"bg-white shadow-md rounded-md p-6",children:[(0,c.jsxs)("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center border-b pb-4 mb-6",children:[(0,c.jsx)(S.Z,{className:"mb-2 sm:mb-0",children:"Member Permissions"}),l&&h&&(0,c.jsxs)("div",{className:"flex gap-3",children:[(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(th.Z,{}),onClick:()=>{g()},children:"Reset"}),(0,c.jsxs)(b.Z,{onClick:v,loading:u,className:"flex items-center gap-2",children:[(0,c.jsx)(tp.Z,{})," Save Changes"]})]})]}),(0,c.jsx)(k.Z,{className:"mb-6 text-gray-600",children:"Control what team members can do when they are not team admins."}),y?(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:" min-w-full",children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Method"}),(0,c.jsx)(sq.Z,{children:"Endpoint"}),(0,c.jsx)(sq.Z,{children:"Description"}),(0,c.jsx)(sq.Z,{className:"sticky right-0 bg-white shadow-[-4px_0_4px_-4px_rgba(0,0,0,0.1)] text-center",children:"Allow Access"})]})}),(0,c.jsx)(sR.Z,{children:a.map(e=>{let s=tf(e);return(0,c.jsxs)(sV.Z,{className:"hover:bg-gray-50 transition-colors",children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)("span",{className:"px-2 py-1 rounded text-xs font-medium ".concat("GET"===s.method?"bg-blue-100 text-blue-800":"bg-green-100 text-green-800"),children:s.method})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)("span",{className:"font-mono text-sm text-gray-800",children:s.endpoint})}),(0,c.jsx)(sz.Z,{className:"text-gray-700",children:s.description}),(0,c.jsx)(sz.Z,{className:"sticky right-0 bg-white shadow-[-4px_0_4px_-4px_rgba(0,0,0,0.1)] text-center",children:(0,c.jsx)(eR.Z,{checked:i.includes(e),onChange:s=>f(e,s.target.checked),disabled:!l})})]},e)})})]})}):(0,c.jsx)("div",{className:"py-12",children:(0,c.jsx)(tx.Z,{description:"No permissions available"})})]})},ty=t(42264),tb=e=>{var s,t,l;let{visible:a,onCancel:r,onSubmit:i,initialData:n,mode:o,config:m}=e,[u]=A.Z.useForm();console.log("Initial Data:",n),(0,d.useEffect)(()=>{if(a){if("edit"===o&&n){let e={...n,role:n.role||m.defaultRole,max_budget_in_team:n.max_budget_in_team||null,tpm_limit:n.tpm_limit||null,rpm_limit:n.rpm_limit||null};console.log("Setting form values:",e),u.setFieldsValue(e)}else{var e;u.resetFields(),u.setFieldsValue({role:m.defaultRole||(null===(e=m.roleOptions[0])||void 0===e?void 0:e.value)})}}},[a,n,o,u,m.defaultRole,m.roleOptions]);let x=async e=>{try{let s=Object.entries(e).reduce((e,s)=>{let[t,l]=s;if("string"==typeof l){let s=l.trim();return""===s&&("max_budget_in_team"===t||"tpm_limit"===t||"rpm_limit"===t)?{...e,[t]:null}:{...e,[t]:s}}return{...e,[t]:l}},{});console.log("Submitting form data:",s),i(s),u.resetFields()}catch(e){console.error("Form submission error:",e)}},h=e=>{switch(e.type){case"input":return(0,c.jsx)(_.Z,{placeholder:e.placeholder});case"numerical":return(0,c.jsx)(O,{step:e.step||1,min:e.min||0,style:{width:"100%"},placeholder:e.placeholder||"Enter a numerical value"});case"select":var s;return(0,c.jsx)(e9.Z,{children:null===(s=e.options)||void 0===s?void 0:s.map(e=>(0,c.jsx)(ei.Z,{value:e.value,children:e.label},e.value))});default:return null}};return(0,c.jsx)(T.Z,{title:m.title||("add"===o?"Add Member":"Edit Member"),open:a,width:1e3,footer:null,onCancel:r,children:(0,c.jsxs)(A.Z,{form:u,onFinish:x,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[m.showEmail&&(0,c.jsx)(A.Z.Item,{label:"Email",name:"user_email",className:"mb-4",rules:[{type:"email",message:"Please enter a valid email!"}],children:(0,c.jsx)(_.Z,{placeholder:"user@example.com"})}),m.showEmail&&m.showUserId&&(0,c.jsx)("div",{className:"text-center mb-4",children:(0,c.jsx)(k.Z,{children:"OR"})}),m.showUserId&&(0,c.jsx)(A.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,c.jsx)(_.Z,{placeholder:"user_123"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{children:"Role"}),"edit"===o&&n&&(0,c.jsxs)("span",{className:"text-gray-500 text-sm",children:["(Current: ",(t=n.role,(null===(l=m.roleOptions.find(e=>e.value===t))||void 0===l?void 0:l.label)||t),")"]})]}),name:"role",className:"mb-4",rules:[{required:!0,message:"Please select a role!"}],children:(0,c.jsx)(e9.Z,{children:"edit"===o&&n?[...m.roleOptions.filter(e=>e.value===n.role),...m.roleOptions.filter(e=>e.value!==n.role)].map(e=>(0,c.jsx)(ei.Z,{value:e.value,children:e.label},e.value)):m.roleOptions.map(e=>(0,c.jsx)(ei.Z,{value:e.value,children:e.label},e.value))})}),null===(s=m.additionalFields)||void 0===s?void 0:s.map(e=>(0,c.jsx)(A.Z.Item,{label:e.label,name:e.name,className:"mb-4",rules:e.rules,children:h(e)},e.name)),(0,c.jsxs)("div",{className:"text-right mt-6",children:[(0,c.jsx)(L.ZP,{onClick:r,className:"mr-2",children:"Cancel"}),(0,c.jsx)(L.ZP,{type:"default",htmlType:"submit",children:"add"===o?"Add Member":"Save Changes"})]})]})})},t_=e=>{let{isVisible:s,onCancel:t,onSubmit:l,accessToken:a,title:r="Add Team Member",roles:i=[{label:"admin",value:"admin",description:"Admin role. Can create team keys, add members, and manage settings."},{label:"user",value:"user",description:"User role. Can view team info, but not manage it."}],defaultRole:n="user"}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)("user_email"),f=async(e,s)=>{if(!e){u([]);return}h(!0);try{let t=new URLSearchParams;if(t.append(s,e),null==a)return;let l=(await (0,j.userFilterUICall)(a,t)).map(e=>({label:"user_email"===s?"".concat(e.user_email):"".concat(e.user_id),value:"user_email"===s?e.user_email:e.user_id,user:e}));u(l)}catch(e){console.error("Error fetching users:",e)}finally{h(!1)}},v=(0,d.useCallback)(eC()((e,s)=>f(e,s),300),[]),y=(e,s)=>{g(s),v(e,s)},b=(e,s)=>{let t=s.user;o.setFieldsValue({user_email:t.user_email,user_id:t.user_id,role:o.getFieldValue("role")})};return(0,c.jsx)(T.Z,{title:r,open:s,onCancel:()=>{o.resetFields(),u([]),t()},footer:null,width:800,children:(0,c.jsxs)(A.Z,{form:o,onFinish:l,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",initialValues:{role:n},children:[(0,c.jsx)(A.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,c.jsx)(I.default,{showSearch:!0,className:"w-full",placeholder:"Search by email",filterOption:!1,onSearch:e=>y(e,"user_email"),onSelect:(e,s)=>b(e,s),options:"user_email"===p?m:[],loading:x,allowClear:!0})}),(0,c.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,c.jsx)(A.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,c.jsx)(I.default,{showSearch:!0,className:"w-full",placeholder:"Search by user ID",filterOption:!1,onSearch:e=>y(e,"user_id"),onSelect:(e,s)=>b(e,s),options:"user_id"===p?m:[],loading:x,allowClear:!0})}),(0,c.jsx)(A.Z.Item,{label:"Member Role",name:"role",className:"mb-4",children:(0,c.jsx)(I.default,{defaultValue:n,children:i.map(e=>(0,c.jsx)(I.default.Option,{value:e.value,children:(0,c.jsxs)(B.Z,{title:e.description,children:[(0,c.jsx)("span",{className:"font-medium",children:e.label}),(0,c.jsxs)("span",{className:"ml-2 text-gray-500 text-sm",children:["- ",e.description]})]})},e.value))})}),(0,c.jsx)("div",{className:"text-right mt-4",children:(0,c.jsx)(L.ZP,{type:"default",htmlType:"submit",children:"Add Member"})})]})})},tN=e=>{var s,t,l,a,r,i,n,o,m,u,x,h,p,g,f,v;let{teamId:N,onClose:Z,accessToken:w,is_team_admin:C,is_proxy_admin:T,userModels:E,editTeam:M,premiumUser:D=!1,onUpdate:R}=e,[z,q]=(0,d.useState)(null),[K,H]=(0,d.useState)(!0),[Y,J]=(0,d.useState)(!1),[W]=A.Z.useForm(),[$,Q]=(0,d.useState)(!1),[X,ee]=(0,d.useState)(null),[es,et]=(0,d.useState)(!1),[el,ea]=(0,d.useState)([]),[er,ei]=(0,d.useState)(!1),[en,ec]=(0,d.useState)({}),[ed,em]=(0,d.useState)([]);console.log("userModels in team info",E);let eu=C||T,ex=async()=>{try{if(H(!0),!w)return;let e=await (0,j.teamInfoCall)(w,N);q(e)}catch(e){eo.Z.fromBackend("Failed to load team information"),console.error("Error fetching team info:",e)}finally{H(!1)}};(0,d.useEffect)(()=>{ex()},[N,w]),(0,d.useEffect)(()=>{(async()=>{try{if(!w)return;let e=(await (0,j.getGuardrailsList)(w)).guardrails.map(e=>e.guardrail_name);em(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})()},[w]);let eh=async e=>{try{if(null==w)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role};await (0,j.teamMemberAddCall)(w,N,s),eo.Z.success("Team member added successfully"),J(!1),W.resetFields();let t=await (0,j.teamInfoCall)(w,N);q(t),R(t)}catch(a){var s,t,l;let e="Failed to add team member";(null==a?void 0:null===(l=a.raw)||void 0===l?void 0:null===(t=l.detail)||void 0===t?void 0:null===(s=t.error)||void 0===s?void 0:s.includes("Assigning team admins is a premium feature"))?e="Assigning admins is an enterprise-only feature. Please upgrade your LiteLLM plan to enable this.":(null==a?void 0:a.message)&&(e=a.message),eo.Z.fromBackend(e),console.error("Error adding team member:",a)}},ep=async e=>{try{if(null==w)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role,max_budget_in_team:e.max_budget_in_team,tpm_limit:e.tpm_limit,rpm_limit:e.rpm_limit};console.log("Updating member with values:",s),ty.ZP.destroy(),await (0,j.teamMemberUpdateCall)(w,N,s),eo.Z.success("Team member updated successfully"),Q(!1);let t=await (0,j.teamInfoCall)(w,N);q(t),R(t)}catch(l){var s,t;let e="Failed to update team member";(null==l?void 0:null===(t=l.raw)||void 0===t?void 0:null===(s=t.detail)||void 0===s?void 0:s.includes("Assigning team admins is a premium feature"))?e="Assigning admins is an enterprise-only feature. Please upgrade your LiteLLM plan to enable this.":(null==l?void 0:l.message)&&(e=l.message),Q(!1),ty.ZP.destroy(),eo.Z.fromBackend(e),console.error("Error updating team member:",l)}},eg=async e=>{try{if(null==w)return;await (0,j.teamMemberDeleteCall)(w,N,e),eo.Z.success("Team member removed successfully");let s=await (0,j.teamInfoCall)(w,N);q(s),R(s)}catch(e){eo.Z.fromBackend("Failed to remove team member"),console.error("Error removing team member:",e)}},ej=async e=>{try{if(!w)return;let s={};try{s=e.metadata?JSON.parse(e.metadata):{}}catch(e){eo.Z.fromBackend("Invalid JSON in metadata field");return}let t=e=>null==e||"string"==typeof e&&""===e.trim()||"number"==typeof e&&Number.isNaN(e)?null:e,l={team_id:N,team_alias:e.team_alias,models:e.models,tpm_limit:t(e.tpm_limit),rpm_limit:t(e.rpm_limit),max_budget:e.max_budget,budget_duration:e.budget_duration,metadata:{...s,guardrails:e.guardrails||[],logging:e.logging_settings||[]},organization_id:e.organization_id};void 0!==e.team_member_budget&&(l.team_member_budget=Number(e.team_member_budget)),void 0!==e.team_member_key_duration&&(l.team_member_key_duration=e.team_member_key_duration),(void 0!==e.team_member_tpm_limit||void 0!==e.team_member_rpm_limit)&&(l.team_member_tpm_limit=t(e.team_member_tpm_limit),l.team_member_rpm_limit=t(e.team_member_rpm_limit));let{servers:a,accessGroups:r}=e.mcp_servers_and_groups||{servers:[],accessGroups:[]},i=e.mcp_tool_permissions||{};(a&&a.length>0||r&&r.length>0||Object.keys(i).length>0)&&(l.object_permission={},a&&a.length>0&&(l.object_permission.mcp_servers=a),r&&r.length>0&&(l.object_permission.mcp_access_groups=r),Object.keys(i).length>0&&(l.object_permission.mcp_tool_permissions=i)),delete e.mcp_servers_and_groups,delete e.mcp_tool_permissions,await (0,j.teamUpdateCall)(w,l),eo.Z.success("Team settings updated successfully"),et(!1),ex()}catch(e){console.error("Error updating team:",e)}};if(K)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!(null==z?void 0:z.team_info))return(0,c.jsx)("div",{className:"p-4",children:"Team not found"});let{team_info:ef}=z,ev=async(e,s)=>{await eM(e)&&(ec(e=>({...e,[s]:!0})),setTimeout(()=>{ec(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:Z,className:"mb-4",children:"Back to Teams"}),(0,c.jsx)(S.Z,{children:ef.team_alias}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:ef.team_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:en["team-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>ev(ef.team_id,"team-id"),className:"left-2 z-10 transition-all duration-200 ".concat(en["team-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:M?3:0,children:[(0,c.jsx)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),...eu?[(0,c.jsx)(ss.Z,{children:"Members"},"members"),(0,c.jsx)(ss.Z,{children:"Member Permissions"},"member-permissions"),(0,c.jsx)(ss.Z,{children:"Settings"},"settings")]:[]]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Budget Status"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eP(ef.spend,4)]}),(0,c.jsxs)(k.Z,{children:["of ",null===ef.max_budget?"Unlimited":"$".concat(eP(ef.max_budget,4))]}),ef.budget_duration&&(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Reset: ",ef.budget_duration]}),(0,c.jsx)("br",{}),ef.team_member_budget_table&&(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Team Member Budget: $",eP(ef.team_member_budget_table.max_budget,4)]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Rate Limits"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["TPM: ",ef.tpm_limit||"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",ef.rpm_limit||"Unlimited"]}),ef.max_parallel_requests&&(0,c.jsxs)(k.Z,{children:["Max Parallel Requests: ",ef.max_parallel_requests]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Models"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:0===ef.models.length?(0,c.jsx)(se.Z,{color:"red",children:"All proxy models"}):ef.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{className:"font-semibold text-gray-900",children:"Virtual Keys"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["User Keys: ",z.keys.filter(e=>e.user_id).length]}),(0,c.jsxs)(k.Z,{children:["Service Account Keys: ",z.keys.filter(e=>!e.user_id).length]}),(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Total: ",z.keys.length]})]})]}),(0,c.jsx)(sy,{objectPermission:ef.object_permission,variant:"card",accessToken:w}),(0,c.jsx)(sb,{loggingConfigs:(null===(s=ef.metadata)||void 0===s?void 0:s.logging)||[],disabledCallbacks:[],variant:"card"})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(tu,{teamData:z,canEditTeam:eu,handleMemberDelete:eg,setSelectedEditMember:ee,setIsEditMemberModalVisible:Q,setIsAddMemberModalVisible:J})}),eu&&(0,c.jsx)(sa.Z,{children:(0,c.jsx)(tv,{teamId:N,accessToken:w,canEditTeam:eu})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{className:"overflow-y-auto max-h-[65vh]",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Team Settings"}),eu&&!es&&(0,c.jsx)(b.Z,{onClick:()=>et(!0),children:"Edit Settings"})]}),es?(0,c.jsxs)(A.Z,{form:W,onFinish:ej,initialValues:{...ef,team_alias:ef.team_alias,models:ef.models,tpm_limit:ef.tpm_limit,rpm_limit:ef.rpm_limit,max_budget:ef.max_budget,budget_duration:ef.budget_duration,team_member_tpm_limit:null===(t=ef.team_member_budget_table)||void 0===t?void 0:t.tpm_limit,team_member_rpm_limit:null===(l=ef.team_member_budget_table)||void 0===l?void 0:l.rpm_limit,guardrails:(null===(a=ef.metadata)||void 0===a?void 0:a.guardrails)||[],metadata:ef.metadata?JSON.stringify((e=>{let{logging:s,...t}=e;return t})(ef.metadata),null,2):"",logging_settings:(null===(r=ef.metadata)||void 0===r?void 0:r.logging)||[],organization_id:ef.organization_id,vector_stores:(null===(i=ef.object_permission)||void 0===i?void 0:i.vector_stores)||[],mcp_servers:(null===(n=ef.object_permission)||void 0===n?void 0:n.mcp_servers)||[],mcp_access_groups:(null===(o=ef.object_permission)||void 0===o?void 0:o.mcp_access_groups)||[],mcp_servers_and_groups:{servers:(null===(m=ef.object_permission)||void 0===m?void 0:m.mcp_servers)||[],accessGroups:(null===(u=ef.object_permission)||void 0===u?void 0:u.mcp_access_groups)||[]},mcp_tool_permissions:(null===(x=ef.object_permission)||void 0===x?void 0:x.mcp_tool_permissions)||{}},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Team Name",name:"team_alias",rules:[{required:!0,message:"Please input a team name"}],children:(0,c.jsx)(P.default,{type:""})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),Array.from(new Set(E)).map((e,s)=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},s))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Budget (USD)",name:"team_member_budget",tooltip:"This is the individual budget for a user in the team.",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Key Duration (eg: 1d, 1mo)",name:"team_member_key_duration",tooltip:"Set a limit to the duration of a team member's key. Format: 30s (seconds), 30m (minutes), 30h (hours), 30d (days), 1mo (month)",children:(0,c.jsx)(_.Z,{placeholder:"e.g., 30d"})}),(0,c.jsx)(A.Z.Item,{label:"Team Member TPM Limit",name:"team_member_tpm_limit",tooltip:"Default tokens per minute limit for an individual team member. This limit applies to all requests the user makes within this team. Can be overridden per member.",children:(0,c.jsx)(O,{step:1,style:{width:"100%"},placeholder:"e.g., 1000"})}),(0,c.jsx)(A.Z.Item,{label:"Team Member RPM Limit",name:"team_member_rpm_limit",tooltip:"Default requests per minute limit for an individual team member. This limit applies to all requests the user makes within this team. Can be overridden per member.",children:(0,c.jsx)(O,{step:1,style:{width:"100%"},placeholder:"e.g., 100"})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Setup your first guardrail",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",help:"Select existing guardrails or enter new ones",children:(0,c.jsx)(I.default,{mode:"tags",placeholder:"Select or enter guardrails",options:ed.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:"Vector Stores",name:"vector_stores",children:(0,c.jsx)(U,{onChange:e=>W.setFieldValue("vector_stores",e),value:W.getFieldValue("vector_stores"),accessToken:w||"",placeholder:"Select vector stores"})}),(0,c.jsx)(A.Z.Item,{label:"MCP Servers / Access Groups",name:"mcp_servers_and_groups",children:(0,c.jsx)(eD,{onChange:e=>W.setFieldValue("mcp_servers_and_groups",e),value:W.getFieldValue("mcp_servers_and_groups"),accessToken:w||"",placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{name:"mcp_tool_permissions",initialValue:{},hidden:!0,children:(0,c.jsx)(P.default,{type:"hidden"})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.mcp_servers_and_groups!==s.mcp_servers_and_groups||e.mcp_tool_permissions!==s.mcp_tool_permissions,children:()=>{var e;return(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsx)(eU,{accessToken:w||"",selectedServers:(null===(e=W.getFieldValue("mcp_servers_and_groups"))||void 0===e?void 0:e.servers)||[],toolPermissions:W.getFieldValue("mcp_tool_permissions")||{},onChange:e=>W.setFieldsValue({mcp_tool_permissions:e})})})}}),(0,c.jsx)(A.Z.Item,{label:"Organization ID",name:"organization_id",children:(0,c.jsx)(P.default,{type:""})}),(0,c.jsx)(A.Z.Item,{label:"Logging Settings",name:"logging_settings",children:(0,c.jsx)(so,{value:W.getFieldValue("logging_settings"),onChange:e=>W.setFieldValue("logging_settings",e)})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:10})}),(0,c.jsx)("div",{className:"sticky z-10 bg-white p-4 border-t border-gray-200 bottom-[-1.5rem] inset-x-[-1.5rem]",children:(0,c.jsxs)("div",{className:"flex justify-end items-center gap-2",children:[(0,c.jsx)(L.ZP,{htmlType:"button",onClick:()=>et(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team Name"}),(0,c.jsx)("div",{children:ef.team_alias})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team ID"}),(0,c.jsx)("div",{className:"font-mono",children:ef.team_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:new Date(ef.created_at).toLocaleString()})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:ef.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Rate Limits"}),(0,c.jsxs)("div",{children:["TPM: ",ef.tpm_limit||"Unlimited"]}),(0,c.jsxs)("div",{children:["RPM: ",ef.rpm_limit||"Unlimited"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team Budget"}),(0,c.jsxs)("div",{children:["Max Budget:"," ",null!==ef.max_budget?"$".concat(eP(ef.max_budget,4)):"No Limit"]}),(0,c.jsxs)("div",{children:["Budget Reset: ",ef.budget_duration||"Never"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["Team Member Settings"," ",(0,c.jsx)(B.Z,{title:"These are limits on individual team members",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),(0,c.jsxs)("div",{children:["Max Budget: ",(null===(h=ef.team_member_budget_table)||void 0===h?void 0:h.max_budget)||"No Limit"]}),(0,c.jsxs)("div",{children:["Key Duration: ",(null===(p=ef.metadata)||void 0===p?void 0:p.team_member_key_duration)||"No Limit"]}),(0,c.jsxs)("div",{children:["TPM Limit: ",(null===(g=ef.team_member_budget_table)||void 0===g?void 0:g.tpm_limit)||"No Limit"]}),(0,c.jsxs)("div",{children:["RPM Limit: ",(null===(f=ef.team_member_budget_table)||void 0===f?void 0:f.rpm_limit)||"No Limit"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization ID"}),(0,c.jsx)("div",{children:ef.organization_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Status"}),(0,c.jsx)(se.Z,{color:ef.blocked?"red":"green",children:ef.blocked?"Blocked":"Active"})]}),(0,c.jsx)(sy,{objectPermission:ef.object_permission,variant:"inline",className:"pt-4 border-t border-gray-200",accessToken:w}),(0,c.jsx)(sb,{loggingConfigs:(null===(v=ef.metadata)||void 0===v?void 0:v.logging)||[],disabledCallbacks:[],variant:"inline",className:"pt-4 border-t border-gray-200"})]})]})})]})]}),(0,c.jsx)(tb,{visible:$,onCancel:()=>Q(!1),onSubmit:ep,initialData:X,mode:"edit",config:{title:"Edit Member",showEmail:!0,showUserId:!0,roleOptions:[{label:"Admin",value:"admin"},{label:"User",value:"user"}],additionalFields:[{name:"max_budget_in_team",label:(0,c.jsxs)("span",{children:["Team Member Budget (USD)"," ",(0,c.jsx)(B.Z,{title:"Maximum amount in USD this member can spend within this team. This is separate from any global user budget limits",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),type:"numerical",step:.01,min:0,placeholder:"Budget limit for this member within this team"},{name:"tpm_limit",label:(0,c.jsxs)("span",{children:["Team Member TPM Limit"," ",(0,c.jsx)(B.Z,{title:"Maximum tokens per minute this member can use within this team. This is separate from any global user TPM limit",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),type:"numerical",step:1,min:0,placeholder:"Tokens per minute limit for this member in this team"},{name:"rpm_limit",label:(0,c.jsxs)("span",{children:["Team Member RPM Limit"," ",(0,c.jsx)(B.Z,{title:"Maximum requests per minute this member can make within this team. This is separate from any global user RPM limit",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),type:"numerical",step:1,min:0,placeholder:"Requests per minute limit for this member in this team"}]}}),(0,c.jsx)(t_,{isVisible:Y,onCancel:()=>J(!1),onSubmit:eh,accessToken:w})]})},tZ=t(45589);let{Title:tw,Link:tk}=en.default;var tS=e=>{let{isVisible:s,onCancel:t,onAddCredential:l,existingCredential:a,setIsCredentialModalOpen:r}=e,[i]=A.Z.useForm();return console.log("existingCredential in add credentials tab: ".concat(JSON.stringify(a))),(0,c.jsx)(T.Z,{title:"Reuse Credentials",visible:s,onCancel:()=>{t(),i.resetFields()},footer:null,width:600,children:(0,c.jsxs)(A.Z,{form:i,onFinish:e=>{l(e),i.resetFields(),r(!1)},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Credential Name:",name:"credential_name",rules:[{required:!0,message:"Credential name is required"}],initialValue:null==a?void 0:a.credential_name,children:(0,c.jsx)(eW.o,{placeholder:"Enter a friendly name for these credentials"})}),Object.entries((null==a?void 0:a.credential_values)||{}).map(e=>{let[s,t]=e;return(0,c.jsx)(A.Z.Item,{label:s,name:s,initialValue:t,children:(0,c.jsx)(eW.o,{placeholder:"Enter ".concat(s),disabled:!0})},s)}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(tk,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{children:[(0,c.jsx)(L.ZP,{onClick:()=>{t(),i.resetFields()},style:{marginRight:10},children:"Cancel"}),(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Reuse Credentials"})]})]})]})})},tC=t(45246),tI=t(96473);let{Text:tA}=en.default;var tT=e=>{let{form:s,showCacheControl:t,onCacheControlChange:l}=e,a=e=>{let t=s.getFieldValue("litellm_extra_params");try{let l=t?JSON.parse(t):{};e.length>0?l.cache_control_injection_points=e:delete l.cache_control_injection_points,Object.keys(l).length>0?s.setFieldValue("litellm_extra_params",JSON.stringify(l,null,2)):s.setFieldValue("litellm_extra_params","")}catch(e){console.error("Error updating cache control points:",e)}};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Cache Control Injection Points",name:"cache_control",valuePropName:"checked",className:"mb-4",tooltip:"Tell litellm where to inject cache control checkpoints. You can specify either by role (to apply to all messages of that role) or by specific message index.",children:(0,c.jsx)(eJ.Z,{onChange:l,className:"bg-gray-600"})}),t&&(0,c.jsxs)("div",{className:"ml-6 pl-4 border-l-2 border-gray-200",children:[(0,c.jsx)(tA,{className:"text-sm text-gray-500 block mb-4",children:"Providers like Anthropic, Bedrock API require users to specify where to inject cache control checkpoints, litellm can automatically add them for you as a cost saving feature."}),(0,c.jsx)(A.Z.List,{name:"cache_control_injection_points",initialValue:[{location:"message"}],children:(e,t)=>{let{add:l,remove:r}=t;return(0,c.jsxs)(c.Fragment,{children:[e.map((t,l)=>(0,c.jsxs)("div",{className:"flex items-center mb-4 gap-4",children:[(0,c.jsx)(A.Z.Item,{...t,label:"Type",name:[t.name,"location"],initialValue:"message",className:"mb-0",style:{width:"180px"},children:(0,c.jsx)(I.default,{disabled:!0,options:[{value:"message",label:"Message"}]})}),(0,c.jsx)(A.Z.Item,{...t,label:"Role",name:[t.name,"role"],className:"mb-0",style:{width:"180px"},tooltip:"LiteLLM will mark all messages of this role as cacheable",children:(0,c.jsx)(I.default,{placeholder:"Select a role",allowClear:!0,options:[{value:"user",label:"User"},{value:"system",label:"System"},{value:"assistant",label:"Assistant"}],onChange:()=>{a(s.getFieldValue("cache_control_points"))}})}),(0,c.jsx)(A.Z.Item,{...t,label:"Index",name:[t.name,"index"],className:"mb-0",style:{width:"180px"},tooltip:"(Optional) If set litellm will mark the message at this index as cacheable",children:(0,c.jsx)(O,{type:"number",placeholder:"Optional",step:1,min:0,onChange:()=>{a(s.getFieldValue("cache_control_points"))}})}),e.length>1&&(0,c.jsx)(tC.Z,{className:"text-red-500 cursor-pointer text-lg ml-12",onClick:()=>{r(t.name),setTimeout(()=>{a(s.getFieldValue("cache_control_points"))},0)}})]},t.key)),(0,c.jsx)(A.Z.Item,{children:(0,c.jsxs)("button",{type:"button",className:"flex items-center justify-center w-full border border-dashed border-gray-300 py-2 px-4 text-gray-600 hover:text-blue-600 hover:border-blue-300 transition-all rounded",onClick:()=>l(),children:[(0,c.jsx)(tI.Z,{className:"mr-2"}),"Add Injection Point"]})})]})}})]})]})},tE=t(44851),tL=t(67960),tP=t(70464);let{TextArea:tM}=P.default,{Panel:tO}=tE.default;var tD=e=>{let{modelInfo:s,value:t,onChange:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]);(0,d.useEffect)(()=>{if(null==t?void 0:t.routes){let e=t.routes.map((e,s)=>({id:e.id||"route-".concat(s,"-").concat(Date.now()),model:e.name||e.model||"",utterances:e.utterances||[],description:e.description||"",score_threshold:e.score_threshold||.5}));r(e),m(e.map(e=>e.id))}else r([]),m([])},[t]);let u=e=>{let s=a.filter(s=>s.id!==e);r(s),h(s),m(s=>s.filter(s=>s!==e))},x=(e,s,t)=>{let l=a.map(l=>l.id===e?{...l,[s]:t}:l);r(l),h(l)},h=e=>{let s={routes:e.map(e=>({name:e.model,utterances:e.utterances,description:e.description,score_threshold:e.score_threshold}))};null==l||l(s)},p=s.map(e=>({value:e.model_group,label:e.model_group}));return(0,c.jsxs)("div",{className:"w-full max-w-none",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6 w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold",children:"Routes Configuration"}),(0,c.jsx)(B.Z,{title:"Configure routing logic to automatically select the best model based on user input patterns",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsx)(L.ZP,{type:"primary",icon:(0,c.jsx)(tI.Z,{}),onClick:()=>{let e="route-".concat(Date.now()),s=[...a,{id:e,model:"",utterances:[],description:"",score_threshold:.5}];r(s),h(s),m(s=>[...s,e])},className:"bg-blue-600 hover:bg-blue-700",children:"Add Route"})]}),0===a.length?(0,c.jsx)("div",{className:"text-center py-12 text-gray-500 bg-gray-50 rounded-lg border-2 border-dashed border-gray-200 mb-6",children:(0,c.jsx)(k.Z,{children:"No routes configured. Click “Add Route” to get started."})}):(0,c.jsx)("div",{className:"space-y-3 mb-6 w-full",children:a.map((e,s)=>(0,c.jsx)(tL.Z,{className:"border border-gray-200 shadow-sm w-full",bodyStyle:{padding:0},children:(0,c.jsx)(tE.default,{ghost:!0,expandIcon:e=>{let{isActive:s}=e;return(0,c.jsx)(tP.Z,{rotate:s?180:0})},activeKey:o,onChange:e=>m(Array.isArray(e)?e:[e].filter(Boolean)),items:[{key:e.id,label:(0,c.jsxs)("div",{className:"flex justify-between items-center py-2",children:[(0,c.jsxs)(k.Z,{className:"font-medium text-base",children:["Route ",s+1,": ",e.model||"Unnamed"]}),(0,c.jsx)(L.ZP,{type:"text",danger:!0,icon:(0,c.jsx)(ep.Z,{}),onClick:s=>{s.stopPropagation(),u(e.id)},className:"mr-2"})]}),children:(0,c.jsxs)("div",{className:"px-6 pb-6 w-full",children:[(0,c.jsxs)("div",{className:"mb-4 w-full",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-2 block",children:"Model"}),(0,c.jsx)(I.default,{value:e.model,onChange:s=>x(e.id,"model",s),placeholder:"Select model",showSearch:!0,style:{width:"100%"},options:p})]}),(0,c.jsxs)("div",{className:"mb-4 w-full",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-2 block",children:"Description"}),(0,c.jsx)(tM,{value:e.description,onChange:s=>x(e.id,"description",s.target.value),placeholder:"Describe when this route should be used...",rows:2,style:{width:"100%"}})]}),(0,c.jsxs)("div",{className:"mb-4 w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium",children:"Score Threshold"}),(0,c.jsx)(B.Z,{title:"Minimum similarity score to route to this model (0-1)",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsx)(e8.Z,{value:e.score_threshold,onChange:s=>x(e.id,"score_threshold",s||0),min:0,max:1,step:.1,style:{width:"100%"},placeholder:"0.5"})]}),(0,c.jsxs)("div",{className:"w-full",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium",children:"Example Utterances"}),(0,c.jsx)(B.Z,{title:"Training examples for this route. Type an utterance and press Enter to add it.",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500 mb-2",children:"Type an utterance and press Enter to add it. You can also paste multiple lines."}),(0,c.jsx)(I.default,{mode:"tags",value:e.utterances,onChange:s=>x(e.id,"utterances",s),placeholder:"Type an utterance and press Enter...",style:{width:"100%"},tokenSeparators:["\n"],maxTagCount:"responsive",allowClear:!0})]})]})}]})},e.id))}),(0,c.jsxs)("div",{className:"border-t pt-6 w-full",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4 w-full",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold",children:"JSON Preview"}),(0,c.jsx)(L.ZP,{type:"link",onClick:()=>n(!i),className:"text-blue-600 p-0",children:i?"Hide":"Show"})]}),i&&(0,c.jsx)(tL.Z,{className:"bg-gray-50 w-full",children:(0,c.jsx)("pre",{className:"text-sm overflow-auto max-h-64 w-full",children:JSON.stringify({routes:a.map(e=>({name:e.model,utterances:e.utterances,description:e.description,score_threshold:e.score_threshold}))},null,2)})})]})]})},tF=e=>{let{isVisible:s,onCancel:t,onSuccess:l,modelData:a,accessToken:r,userRole:i}=e,[n]=A.Z.useForm(),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)(!1),[b,N]=(0,d.useState)(null);(0,d.useEffect)(()=>{s&&a&&Z()},[s,a]),(0,d.useEffect)(()=>{let e=async()=>{if(r)try{let e=await (0,j.modelAvailableCall)(r,"","",!1,null,!0,!0);x(e.data.map(e=>e.id))}catch(e){console.error("Error fetching model access groups:",e)}},t=async()=>{if(r)try{let e=await eG(r);p(e)}catch(e){console.error("Error fetching model info:",e)}};s&&(e(),t())},[s,r]);let Z=()=>{try{var e,s,t,l,r,i;let o=null;(null===(e=a.litellm_params)||void 0===e?void 0:e.auto_router_config)&&(o="string"==typeof a.litellm_params.auto_router_config?JSON.parse(a.litellm_params.auto_router_config):a.litellm_params.auto_router_config),N(o),n.setFieldsValue({auto_router_name:a.model_name,auto_router_default_model:(null===(s=a.litellm_params)||void 0===s?void 0:s.auto_router_default_model)||"",auto_router_embedding_model:(null===(t=a.litellm_params)||void 0===t?void 0:t.auto_router_embedding_model)||"",model_access_group:(null===(l=a.model_info)||void 0===l?void 0:l.access_groups)||[]});let c=new Set(h.map(e=>e.model_group));f(!c.has(null===(r=a.litellm_params)||void 0===r?void 0:r.auto_router_default_model)),y(!c.has(null===(i=a.litellm_params)||void 0===i?void 0:i.auto_router_embedding_model))}catch(e){console.error("Error parsing auto router config:",e),eo.Z.fromBackend("Error loading auto router configuration")}},w=async()=>{try{m(!0);let e=await n.validateFields(),s={...a.litellm_params,auto_router_config:JSON.stringify(b),auto_router_default_model:e.auto_router_default_model,auto_router_embedding_model:e.auto_router_embedding_model||void 0},i={...a.model_info,access_groups:e.model_access_group||[]},o={model_name:e.auto_router_name,litellm_params:s,model_info:i};await (0,j.modelPatchUpdateCall)(r,o,a.model_info.id);let c={...a,model_name:e.auto_router_name,litellm_params:s,model_info:i};eo.Z.success("Auto router configuration updated successfully"),l(c),t()}catch(e){console.error("Error updating auto router:",e),eo.Z.fromBackend("Failed to update auto router configuration")}finally{m(!1)}},S=h.map(e=>({value:e.model_group,label:e.model_group}));return(0,c.jsx)(T.Z,{title:"Edit Auto Router Configuration",open:s,onCancel:t,footer:[(0,c.jsx)(L.ZP,{onClick:t,children:"Cancel"},"cancel"),(0,c.jsx)(L.ZP,{loading:o,onClick:w,children:"Save Changes"},"submit")],width:1e3,destroyOnClose:!0,children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsx)(k.Z,{className:"text-gray-600",children:"Edit the auto router configuration including routing logic, default models, and access settings."}),(0,c.jsxs)(A.Z,{form:n,layout:"vertical",className:"space-y-4",children:[(0,c.jsx)(A.Z.Item,{label:"Auto Router Name",name:"auto_router_name",rules:[{required:!0,message:"Auto router name is required"}],children:(0,c.jsx)(_.Z,{placeholder:"e.g., auto_router_1, smart_routing"})}),(0,c.jsx)("div",{className:"w-full",children:(0,c.jsx)(tD,{modelInfo:h,value:b,onChange:e=>{N(e)}})}),(0,c.jsx)(A.Z.Item,{label:"Default Model",name:"auto_router_default_model",rules:[{required:!0,message:"Default model is required"}],children:(0,c.jsx)(I.default,{placeholder:"Select a default model",onChange:e=>{f("custom"===e)},options:[...S,{value:"custom",label:"Enter custom model name"}],showSearch:!0})}),(0,c.jsx)(A.Z.Item,{label:"Embedding Model",name:"auto_router_embedding_model",children:(0,c.jsx)(I.default,{placeholder:"Select an embedding model (optional)",onChange:e=>{y("custom"===e)},options:[...S,{value:"custom",label:"Enter custom model name"}],showSearch:!0,allowClear:!0})}),"Admin"===i&&(0,c.jsx)(A.Z.Item,{label:"Model Access Groups",name:"model_access_group",tooltip:"Control who can access this auto router",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],options:u.map(e=>({value:e,label:e})),maxTagCount:"responsive",allowClear:!0})})]})]})})};function tR(e){var s,t,l,a,r,i,n,o,m,u,x,h,p,g,f,v,N,Z,w,C,E,M,D,F,R,z,U,q;let{modelId:K,onClose:H,modelData:Y,accessToken:J,userID:$,userRole:Q,editModel:X,setEditModalVisible:ee,setSelectedModel:es,onModelUpdate:et,modelAccessGroups:el}=e,[ea]=A.Z.useForm(),[er,ei]=(0,d.useState)(null),[en,ec]=(0,d.useState)(!1),[ed,em]=(0,d.useState)(!1),[eu,ex]=(0,d.useState)(!1),[eh,ep]=(0,d.useState)(!1),[eg,ej]=(0,d.useState)(!1),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)(!1),[e_,eN]=(0,d.useState)({}),[eZ,ew]=(0,d.useState)(!1),[ek,eS]=(0,d.useState)([]),eC="Admin"===Q||(null==Y?void 0:null===(s=Y.model_info)||void 0===s?void 0:s.created_by)===$,eI=(null==Y?void 0:null===(t=Y.litellm_params)||void 0===t?void 0:t.auto_router_config)!=null,eA=(null==Y?void 0:null===(l=Y.litellm_params)||void 0===l?void 0:l.litellm_credential_name)!=null&&(null==Y?void 0:null===(a=Y.litellm_params)||void 0===a?void 0:a.litellm_credential_name)!=void 0;console.log("usingExistingCredential, ",eA),console.log("modelData.litellm_params.litellm_credential_name, ",null==Y?void 0:null===(r=Y.litellm_params)||void 0===r?void 0:r.litellm_credential_name),(0,d.useEffect)(()=>{let e=async()=>{var e,s,t,l,a,r,i;if(!J)return;let n=await (0,j.modelInfoV1Call)(J,K);console.log("modelInfoResponse, ",n);let o=n.data[0];o&&!o.litellm_model_name&&(o={...o,litellm_model_name:null!==(i=null!==(r=null!==(a=null==o?void 0:null===(s=o.litellm_params)||void 0===s?void 0:s.litellm_model_name)&&void 0!==a?a:null==o?void 0:null===(t=o.litellm_params)||void 0===t?void 0:t.model)&&void 0!==r?r:null==o?void 0:null===(l=o.model_info)||void 0===l?void 0:l.key)&&void 0!==i?i:null}),ei(o),(null==o?void 0:null===(e=o.litellm_params)||void 0===e?void 0:e.cache_control_injection_points)&&eb(!0)},s=async()=>{if(J)try{let e=(await (0,j.getGuardrailsList)(J)).guardrails.map(e=>e.guardrail_name);eS(e)}catch(e){console.error("Failed to fetch guardrails:",e)}};(async()=>{if(console.log("accessToken, ",J),!J||eA)return;let e=await (0,j.credentialGetCall)(J,null,K);console.log("existingCredentialResponse, ",e),ev({credential_name:e.credential_name,credential_values:e.credential_values,credential_info:e.credential_info})})(),e(),s()},[J,K]);let eT=async e=>{var s;if(console.log("values, ",e),!J)return;let t={credential_name:e.credential_name,model_id:K,credential_info:{custom_llm_provider:null===(s=er.litellm_params)||void 0===s?void 0:s.custom_llm_provider}};eo.Z.info("Storing credential.."),console.log("credentialResponse, ",await (0,j.credentialCreateCall)(J,t)),eo.Z.success("Credential stored successfully")},eE=async e=>{try{var s;let t;if(!J)return;ep(!0),console.log("values.model_name, ",e.model_name);let l={...er.litellm_params,model:e.litellm_model_name,api_base:e.api_base,custom_llm_provider:e.custom_llm_provider,organization:e.organization,tpm:e.tpm,rpm:e.rpm,max_retries:e.max_retries,timeout:e.timeout,stream_timeout:e.stream_timeout,input_cost_per_token:e.input_cost/1e6,output_cost_per_token:e.output_cost/1e6};e.guardrails&&(l.guardrails=e.guardrails),e.cache_control&&(null===(s=e.cache_control_injection_points)||void 0===s?void 0:s.length)>0?l.cache_control_injection_points=e.cache_control_injection_points:delete l.cache_control_injection_points;try{t=e.model_info?JSON.parse(e.model_info):Y.model_info,e.model_access_group&&(t={...t,access_groups:e.model_access_group})}catch(e){eo.Z.fromBackend("Invalid JSON in Model Info");return}let a={model_name:e.model_name,litellm_params:l,model_info:t};await (0,j.modelPatchUpdateCall)(J,a,K);let r={...er,model_name:e.model_name,litellm_model_name:e.litellm_model_name,litellm_params:l,model_info:t};ei(r),et&&et(r),eo.Z.success("Model settings updated successfully"),ex(!1),ej(!1)}catch(e){console.error("Error updating model:",e),eo.Z.fromBackend("Failed to update model settings")}finally{ep(!1)}};if(!Y)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:H,className:"mb-4",children:"Back to Models"}),(0,c.jsx)(k.Z,{children:"Model not found"})]});let eL=async()=>{try{if(!J)return;await (0,j.modelDeleteCall)(J,K),eo.Z.success("Model deleted successfully"),et&&et({deleted:!0,model_info:{id:K}}),H()}catch(e){console.error("Error deleting the model:",e),eo.Z.fromBackend("Failed to delete model")}},eP=async(e,s)=>{await eM(e)&&(eN(e=>({...e,[s]:!0})),setTimeout(()=>{eN(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:H,className:"mb-4",children:"Back to Models"}),(0,c.jsxs)(S.Z,{children:["Public Model Name: ",ta(Y)]}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:Y.model_info.id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:e_["model-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>eP(Y.model_info.id,"model-id"),className:"left-2 z-10 transition-all duration-200 ".concat(e_["model-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)("div",{className:"flex gap-2",children:["Admin"===Q&&(0,c.jsx)(b.Z,{icon:tZ.Z,variant:"secondary",onClick:()=>em(!0),className:"flex items-center",children:"Re-use Credentials"}),eC&&(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>ec(!0),className:"flex items-center",children:"Delete Model"})]})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"Overview"}),(0,c.jsx)(ss.Z,{children:"Raw JSON"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6 mb-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Provider"}),(0,c.jsxs)("div",{className:"mt-2 flex items-center space-x-2",children:[Y.provider&&(0,c.jsx)("img",{src:(0,s0.dr)(Y.provider).logo,alt:"".concat(Y.provider," logo"),className:"w-4 h-4",onError:e=>{let s=e.target,t=s.parentElement;if(t){var l;let e=document.createElement("div");e.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=(null===(l=Y.provider)||void 0===l?void 0:l.charAt(0))||"-",t.replaceChild(e,s)}}}),(0,c.jsx)(S.Z,{children:Y.provider||"Not Set"})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"LiteLLM Model"}),(0,c.jsx)("div",{className:"mt-2 overflow-hidden",children:(0,c.jsx)(B.Z,{title:Y.litellm_model_name||"Not Set",children:(0,c.jsx)("div",{className:"break-all text-sm font-medium leading-relaxed cursor-pointer",children:Y.litellm_model_name||"Not Set"})})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Pricing"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["Input: $",Y.input_cost,"/1M tokens"]}),(0,c.jsxs)(k.Z,{children:["Output: $",Y.output_cost,"/1M tokens"]})]})]})]}),(0,c.jsxs)("div",{className:"mb-6 text-sm text-gray-500 flex items-center gap-x-6",children:[(0,c.jsxs)("div",{className:"flex items-center gap-x-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})}),"Created At"," ",Y.model_info.created_at?new Date(Y.model_info.created_at).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"Not Set"]}),(0,c.jsxs)("div",{className:"flex items-center gap-x-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})}),"Created By ",Y.model_info.created_by||"Not Set"]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Model Settings"}),(0,c.jsxs)("div",{className:"flex gap-2",children:[eI&&eC&&!eg&&(0,c.jsx)(b.Z,{variant:"primary",onClick:()=>ew(!0),className:"flex items-center",children:"Edit Auto Router"}),eC&&!eg&&(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>ej(!0),className:"flex items-center",children:"Edit Model"})]})]}),er?(0,c.jsx)(A.Z,{form:ea,onFinish:eE,initialValues:{model_name:er.model_name,litellm_model_name:er.litellm_model_name,api_base:er.litellm_params.api_base,custom_llm_provider:er.litellm_params.custom_llm_provider,organization:er.litellm_params.organization,tpm:er.litellm_params.tpm,rpm:er.litellm_params.rpm,max_retries:er.litellm_params.max_retries,timeout:er.litellm_params.timeout,stream_timeout:er.litellm_params.stream_timeout,input_cost:er.litellm_params.input_cost_per_token?1e6*er.litellm_params.input_cost_per_token:(null===(i=er.model_info)||void 0===i?void 0:i.input_cost_per_token)*1e6||null,output_cost:(null===(n=er.litellm_params)||void 0===n?void 0:n.output_cost_per_token)?1e6*er.litellm_params.output_cost_per_token:(null===(o=er.model_info)||void 0===o?void 0:o.output_cost_per_token)*1e6||null,cache_control:null!==(m=er.litellm_params)&&void 0!==m&&!!m.cache_control_injection_points,cache_control_injection_points:(null===(u=er.litellm_params)||void 0===u?void 0:u.cache_control_injection_points)||[],model_access_group:Array.isArray(null===(x=er.model_info)||void 0===x?void 0:x.access_groups)?er.model_info.access_groups:[],guardrails:Array.isArray(null===(h=er.litellm_params)||void 0===h?void 0:h.guardrails)?er.litellm_params.guardrails:[]},layout:"vertical",onValuesChange:()=>ex(!0),children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Model Name"}),eg?(0,c.jsx)(A.Z.Item,{name:"model_name",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter model name"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:er.model_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"LiteLLM Model Name"}),eg?(0,c.jsx)(A.Z.Item,{name:"litellm_model_name",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter LiteLLM model name"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:er.litellm_model_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Input Cost (per 1M tokens)"}),eg?(0,c.jsx)(A.Z.Item,{name:"input_cost",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter input cost"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null==er?void 0:null===(p=er.litellm_params)||void 0===p?void 0:p.input_cost_per_token)?((null===(g=er.litellm_params)||void 0===g?void 0:g.input_cost_per_token)*1e6).toFixed(4):(null==er?void 0:null===(f=er.model_info)||void 0===f?void 0:f.input_cost_per_token)?(1e6*er.model_info.input_cost_per_token).toFixed(4):null})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Output Cost (per 1M tokens)"}),eg?(0,c.jsx)(A.Z.Item,{name:"output_cost",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter output cost"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null==er?void 0:null===(v=er.litellm_params)||void 0===v?void 0:v.output_cost_per_token)?(1e6*er.litellm_params.output_cost_per_token).toFixed(4):(null==er?void 0:null===(N=er.model_info)||void 0===N?void 0:N.output_cost_per_token)?(1e6*er.model_info.output_cost_per_token).toFixed(4):null})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"API Base"}),eg?(0,c.jsx)(A.Z.Item,{name:"api_base",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter API base"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(Z=er.litellm_params)||void 0===Z?void 0:Z.api_base)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Custom LLM Provider"}),eg?(0,c.jsx)(A.Z.Item,{name:"custom_llm_provider",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter custom LLM provider"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(w=er.litellm_params)||void 0===w?void 0:w.custom_llm_provider)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization"}),eg?(0,c.jsx)(A.Z.Item,{name:"organization",className:"mb-0",children:(0,c.jsx)(_.Z,{placeholder:"Enter organization"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(C=er.litellm_params)||void 0===C?void 0:C.organization)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"TPM (Tokens per Minute)"}),eg?(0,c.jsx)(A.Z.Item,{name:"tpm",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter TPM"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(E=er.litellm_params)||void 0===E?void 0:E.tpm)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"RPM (Requests per Minute)"}),eg?(0,c.jsx)(A.Z.Item,{name:"rpm",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter RPM"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(M=er.litellm_params)||void 0===M?void 0:M.rpm)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Max Retries"}),eg?(0,c.jsx)(A.Z.Item,{name:"max_retries",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter max retries"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(D=er.litellm_params)||void 0===D?void 0:D.max_retries)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Timeout (seconds)"}),eg?(0,c.jsx)(A.Z.Item,{name:"timeout",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter timeout"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(F=er.litellm_params)||void 0===F?void 0:F.timeout)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Stream Timeout (seconds)"}),eg?(0,c.jsx)(A.Z.Item,{name:"stream_timeout",className:"mb-0",children:(0,c.jsx)(O,{placeholder:"Enter stream timeout"})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(R=er.litellm_params)||void 0===R?void 0:R.stream_timeout)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Model Access Groups"}),eg?(0,c.jsx)(A.Z.Item,{name:"model_access_group",className:"mb-0",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],maxTagCount:"responsive",allowClear:!0,style:{width:"100%"},options:null==el?void 0:el.map(e=>({value:e,label:e}))})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(z=er.model_info)||void 0===z?void 0:z.access_groups)?Array.isArray(er.model_info.access_groups)?er.model_info.access_groups.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:er.model_info.access_groups.map((e,s)=>(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-blue-100 text-blue-800",children:e},s))}):"No groups assigned":er.model_info.access_groups:"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Apply safety guardrails to this model to filter content or enforce policies",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),eg?(0,c.jsx)(A.Z.Item,{name:"guardrails",className:"mb-0",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing guardrails or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],maxTagCount:"responsive",allowClear:!0,style:{width:"100%"},options:ek.map(e=>({value:e,label:e}))})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(U=er.litellm_params)||void 0===U?void 0:U.guardrails)?Array.isArray(er.litellm_params.guardrails)?er.litellm_params.guardrails.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:er.litellm_params.guardrails.map((e,s)=>(0,c.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-green-100 text-green-800",children:e},s))}):"No guardrails assigned":er.litellm_params.guardrails:"Not Set"})]}),eg?(0,c.jsx)(tT,{form:ea,showCacheControl:ey,onCacheControlChange:e=>eb(e)}):(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Cache Control"}),(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(null===(q=er.litellm_params)||void 0===q?void 0:q.cache_control_injection_points)?(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{children:"Enabled"}),(0,c.jsx)("div",{className:"mt-2",children:er.litellm_params.cache_control_injection_points.map((e,s)=>(0,c.jsxs)("div",{className:"text-sm text-gray-600 mb-1",children:["Location: ",e.location,",",e.role&&(0,c.jsxs)("span",{children:[" Role: ",e.role]}),void 0!==e.index&&(0,c.jsxs)("span",{children:[" Index: ",e.index]})]},s))})]}):"Disabled"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Model Info"}),eg?(0,c.jsx)(A.Z.Item,{name:"model_info",className:"mb-0",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{"gpt-4": 100, "claude-v1": 200}',defaultValue:JSON.stringify(Y.model_info,null,2)})}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify(er.model_info,null,2)})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Team ID"}),(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:Y.model_info.team_id||"Not Set"})]})]}),eg&&(0,c.jsxs)("div",{className:"mt-6 flex justify-end gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{ea.resetFields(),ex(!1),ej(!1)},children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",onClick:()=>ea.submit(),loading:eh,children:"Save Changes"})]})]})}):(0,c.jsx)(k.Z,{children:"Loading..."})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(G.Z,{children:(0,c.jsx)("pre",{className:"bg-gray-100 p-4 rounded text-xs overflow-auto",children:JSON.stringify(Y,null,2)})})})]})]}),en&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Model"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this model?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(L.ZP,{onClick:eL,className:"ml-2",danger:!0,children:"Delete"}),(0,c.jsx)(L.ZP,{onClick:()=>ec(!1),children:"Cancel"})]})]})]})}),ed&&!eA?(0,c.jsx)(tS,{isVisible:ed,onCancel:()=>em(!1),onAddCredential:eT,existingCredential:ef,setIsCredentialModalOpen:em}):(0,c.jsx)(T.Z,{open:ed,onCancel:()=>em(!1),title:"Using Existing Credential",children:(0,c.jsx)(k.Z,{children:Y.litellm_params.litellm_credential_name})}),(0,c.jsx)(tF,{isVisible:eZ,onCancel:()=>ew(!1),onSuccess:e=>{ei(e),et&&et(e)},modelData:er||Y,accessToken:J||"",userRole:Q||""})]})}var tz=e=>{let{selectedProvider:s,providerModels:t,getPlaceholder:l}=e,a=A.Z.useFormInstance(),r=e=>{let t=e.target.value,l=(a.getFieldValue("model_mappings")||[]).map(e=>"custom"===e.public_name||"custom"===e.litellm_model?s===s0.Cl.Azure?{public_name:t,litellm_model:"azure/".concat(t)}:{public_name:t,litellm_model:t}:e);a.setFieldsValue({model_mappings:l})};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(A.Z.Item,{label:"LiteLLM Model Name(s)",tooltip:"The model name LiteLLM will send to the LLM API",className:"mb-0",children:[(0,c.jsx)(A.Z.Item,{name:"model",rules:[{required:!0,message:"Please enter ".concat(s===s0.Cl.Azure?"a deployment name":"at least one model",".")}],noStyle:!0,children:s===s0.Cl.Azure||s===s0.Cl.OpenAI_Compatible||s===s0.Cl.Ollama?(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(_.Z,{placeholder:l(s),onChange:s===s0.Cl.Azure?e=>{let s=e.target.value,t=s?[{public_name:s,litellm_model:"azure/".concat(s)}]:[];a.setFieldsValue({model:s,model_mappings:t})}:void 0})}):t.length>0?(0,c.jsx)(I.default,{mode:"multiple",allowClear:!0,showSearch:!0,placeholder:"Select models",onChange:e=>{let t=Array.isArray(e)?e:[e];if(t.includes("all-wildcard"))a.setFieldsValue({model_name:void 0,model_mappings:[]});else if(JSON.stringify(a.getFieldValue("model"))!==JSON.stringify(t)){let e=t.map(e=>s===s0.Cl.Azure?{public_name:e,litellm_model:"azure/".concat(e)}:{public_name:e,litellm_model:e});a.setFieldsValue({model:t,model_mappings:e})}},optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{label:"Custom Model Name (Enter below)",value:"custom"},{label:"All ".concat(s," Models (Wildcard)"),value:"all-wildcard"},...t.map(e=>({label:e,value:e}))],style:{width:"100%"}}):(0,c.jsx)(_.Z,{placeholder:l(s)})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.model!==s.model,children:e=>{let{getFieldValue:t}=e,l=t("model")||[];return(Array.isArray(l)?l:[l]).includes("custom")&&(0,c.jsx)(A.Z.Item,{name:"custom_model_name",rules:[{required:!0,message:"Please enter a custom model name."}],className:"mt-2",children:(0,c.jsx)(_.Z,{placeholder:s===s0.Cl.Azure?"Enter Azure deployment name":"Enter custom model name",onChange:r})})}})]}),(0,c.jsxs)(s5.Z,{children:[(0,c.jsx)(s3.Z,{span:10}),(0,c.jsx)(s3.Z,{span:14,children:(0,c.jsx)(k.Z,{className:"mb-3 mt-1",children:s===s0.Cl.Azure?"Your deployment name will be saved as the public model name, and LiteLLM will use 'azure/deployment-name' internally":"The model name LiteLLM will send to the LLM API"})})]})]})},tU=t(67187);let tq=e=>{let{content:s,children:t,width:l="auto",className:a=""}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)("top"),m=(0,d.useRef)(null),u=()=>{if(m.current){let e=m.current.getBoundingClientRect(),s=e.top,t=window.innerHeight-e.bottom;s<300&&t>300?o("bottom"):o("top")}};return(0,c.jsxs)("div",{className:"relative inline-block",ref:m,children:[t||(0,c.jsx)(tU.Z,{className:"ml-1 text-gray-500 cursor-help",onMouseEnter:()=>{u(),i(!0)},onMouseLeave:()=>i(!1)}),r&&(0,c.jsxs)("div",{className:"absolute left-1/2 -translate-x-1/2 z-50 bg-black/90 text-white p-2 rounded-md text-sm font-normal shadow-lg ".concat(a),style:{["top"===n?"bottom":"top"]:"100%",width:l,marginBottom:"top"===n?"8px":"0",marginTop:"bottom"===n?"8px":"0"},children:[s,(0,c.jsx)("div",{className:"absolute left-1/2 -translate-x-1/2 w-0 h-0",style:{top:"top"===n?"100%":"auto",bottom:"bottom"===n?"100%":"auto",borderTop:"top"===n?"6px solid rgba(0, 0, 0, 0.9)":"6px solid transparent",borderBottom:"bottom"===n?"6px solid rgba(0, 0, 0, 0.9)":"6px solid transparent",borderLeft:"6px solid transparent",borderRight:"6px solid transparent"}})]})]})};var tV=()=>{let e=A.Z.useFormInstance(),[s,t]=(0,d.useState)(0),l=A.Z.useWatch("model",e)||[],a=Array.isArray(l)?l:[l],r=A.Z.useWatch("custom_model_name",e),i=!a.includes("all-wildcard"),n=A.Z.useWatch("custom_llm_provider",e);if((0,d.useEffect)(()=>{if(r&&a.includes("custom")){let s=(e.getFieldValue("model_mappings")||[]).map(e=>"custom"===e.public_name||"custom"===e.litellm_model?n===s0.Cl.Azure?{public_name:r,litellm_model:"azure/".concat(r)}:{public_name:r,litellm_model:r}:e);e.setFieldValue("model_mappings",s),t(e=>e+1)}},[r,a,n,e]),(0,d.useEffect)(()=>{if(a.length>0&&!a.includes("all-wildcard")){let s=e.getFieldValue("model_mappings")||[];if(s.length!==a.length||!a.every(e=>s.some(s=>"custom"===e?"custom"===s.litellm_model||s.litellm_model===r:n===s0.Cl.Azure?s.litellm_model==="azure/".concat(e):s.litellm_model===e))){let s=a.map(e=>"custom"===e&&r?n===s0.Cl.Azure?{public_name:r,litellm_model:"azure/".concat(r)}:{public_name:r,litellm_model:r}:n===s0.Cl.Azure?{public_name:e,litellm_model:"azure/".concat(e)}:{public_name:e,litellm_model:e});e.setFieldValue("model_mappings",s),t(e=>e+1)}}},[a,r,n,e]),!i)return null;let o=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"mb-2 font-normal",children:"The name you specify in your API calls to LiteLLM Proxy"}),(0,c.jsxs)("div",{className:"mb-2 font-normal",children:[(0,c.jsx)("strong",{children:"Example:"})," If you name your public model"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:"example-name"}),", and choose"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:"openai/qwen-plus-latest"})," as the LiteLLM model"]}),(0,c.jsxs)("div",{className:"mb-2 font-normal",children:[(0,c.jsx)("strong",{children:"Usage:"})," You make an API call to the LiteLLM proxy with"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:'model = "example-name"'})]}),(0,c.jsxs)("div",{className:"font-normal",children:[(0,c.jsx)("strong",{children:"Result:"})," LiteLLM sends"," ",(0,c.jsx)("code",{className:"bg-gray-700 px-1 py-0.5 rounded text-xs",children:"qwen-plus-latest"})," to the provider"]})]}),m=(0,c.jsx)("div",{children:"The model name LiteLLM will send to the LLM API"}),u=[{title:(0,c.jsxs)("span",{className:"flex items-center",children:["Public Model Name",(0,c.jsx)(tq,{content:o,width:"500px"})]}),dataIndex:"public_name",key:"public_name",render:(s,t,l)=>(0,c.jsx)(eW.o,{value:s,onChange:s=>{let t=[...e.getFieldValue("model_mappings")];t[l].public_name=s.target.value,e.setFieldValue("model_mappings",t)}})},{title:(0,c.jsxs)("span",{className:"flex items-center",children:["LiteLLM Model Name",(0,c.jsx)(tq,{content:m,width:"360px"})]}),dataIndex:"litellm_model",key:"litellm_model"}];return(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(A.Z.Item,{label:"Model Mappings",name:"model_mappings",tooltip:"Map public model names to LiteLLM model names for load balancing",labelCol:{span:10},wrapperCol:{span:16},labelAlign:"left",rules:[{required:!0,validator:async(e,s)=>{if(!s||0===s.length)throw Error("At least one model mapping is required");if(s.filter(e=>!e.public_name||""===e.public_name.trim()).length>0)throw Error("All model mappings must have valid public names")}}],children:(0,c.jsx)(em.Z,{dataSource:e.getFieldValue("model_mappings"),columns:u,pagination:!1,size:"small"},s)})})},tB=t(90464);let{Link:tK}=en.default;var tG=e=>{let{showAdvancedSettings:s,setShowAdvancedSettings:t,teams:l,guardrailsList:a}=e,[r]=A.Z.useForm(),[i,n]=d.useState(!1),[o,m]=d.useState("per_token"),[u,x]=d.useState(!1),h=(e,s)=>s&&(isNaN(Number(s))||0>Number(s))?Promise.reject("Please enter a valid positive number"):Promise.resolve(),p=(e,s)=>{if(!s)return Promise.resolve();try{return JSON.parse(s),Promise.resolve()}catch(e){return Promise.reject("Please enter valid JSON")}};return(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)(N.Z,{className:"mt-2 mb-4",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Advanced Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsxs)("div",{className:"bg-white rounded-lg",children:[(0,c.jsx)(A.Z.Item,{label:"Custom Pricing",name:"custom_pricing",valuePropName:"checked",className:"mb-4",children:(0,c.jsx)(eJ.Z,{onChange:e=>{n(e),e||r.setFieldsValue({input_cost_per_token:void 0,output_cost_per_token:void 0,input_cost_per_second:void 0})},className:"bg-gray-600"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Apply safety guardrails to this key to filter content or enforce policies",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",className:"mt-4",help:"Select existing guardrails. Go to 'Guardrails' tab to create new guardrails.",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},placeholder:"Select or enter guardrails",options:a.map(e=>({value:e,label:e}))})}),i&&(0,c.jsxs)("div",{className:"ml-6 pl-4 border-l-2 border-gray-200",children:[(0,c.jsx)(A.Z.Item,{label:"Pricing Model",name:"pricing_model",className:"mb-4",children:(0,c.jsx)(I.default,{defaultValue:"per_token",onChange:e=>m(e),options:[{value:"per_token",label:"Per Million Tokens"},{value:"per_second",label:"Per Second"}]})}),"per_token"===o?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Input Cost (per 1M tokens)",name:"input_cost_per_token",rules:[{validator:h}],className:"mb-4",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Output Cost (per 1M tokens)",name:"output_cost_per_token",rules:[{validator:h}],className:"mb-4",children:(0,c.jsx)(_.Z,{})})]}):(0,c.jsx)(A.Z.Item,{label:"Cost Per Second",name:"input_cost_per_second",rules:[{validator:h}],className:"mb-4",children:(0,c.jsx)(_.Z,{})})]}),(0,c.jsx)(A.Z.Item,{label:"Use in pass through routes",name:"use_in_pass_through",valuePropName:"checked",className:"mb-4 mt-4",tooltip:(0,c.jsxs)("span",{children:["Allow using these credentials in pass through routes."," ",(0,c.jsx)(tK,{href:"https://docs.litellm.ai/docs/pass_through/vertex_ai",target:"_blank",children:"Learn more"})]}),children:(0,c.jsx)(eJ.Z,{onChange:e=>{let s=r.getFieldValue("litellm_extra_params");try{let t=s?JSON.parse(s):{};e?t.use_in_pass_through=!0:delete t.use_in_pass_through,Object.keys(t).length>0?r.setFieldValue("litellm_extra_params",JSON.stringify(t,null,2)):r.setFieldValue("litellm_extra_params","")}catch(s){e?r.setFieldValue("litellm_extra_params",JSON.stringify({use_in_pass_through:!0},null,2)):r.setFieldValue("litellm_extra_params","")}},className:"bg-gray-600"})}),(0,c.jsx)(tT,{form:r,showCacheControl:u,onCacheControlChange:e=>{if(x(e),!e){let e=r.getFieldValue("litellm_extra_params");try{let s=e?JSON.parse(e):{};delete s.cache_control_injection_points,Object.keys(s).length>0?r.setFieldValue("litellm_extra_params",JSON.stringify(s,null,2)):r.setFieldValue("litellm_extra_params","")}catch(e){r.setFieldValue("litellm_extra_params","")}}}}),(0,c.jsx)(A.Z.Item,{label:"LiteLLM Params",name:"litellm_extra_params",tooltip:"Optional litellm params used for making a litellm.completion() call.",className:"mb-4 mt-4",rules:[{validator:p}],children:(0,c.jsx)(tB.Z,{rows:4,placeholder:'{ "rpm": 100, "timeout": 0, "stream_timeout": 0 }'})}),(0,c.jsxs)(s5.Z,{className:"mb-4",children:[(0,c.jsx)(s3.Z,{span:10}),(0,c.jsx)(s3.Z,{span:10,children:(0,c.jsxs)(k.Z,{className:"text-gray-600 text-sm",children:["Pass JSON of litellm supported params"," ",(0,c.jsx)(tK,{href:"https://docs.litellm.ai/docs/completion/input",target:"_blank",children:"litellm.completion() call"})]})})]}),(0,c.jsx)(A.Z.Item,{label:"Model Info",name:"model_info_params",tooltip:"Optional model info params. Returned when calling `/model/info` endpoint.",className:"mb-0",rules:[{validator:p}],children:(0,c.jsx)(tB.Z,{rows:4,placeholder:'{ "mode": "chat" }'})})]})})]})})},tH=t(29),tY=t.n(tH),tJ=t(23639);let{Text:tW}=en.default;var t$=e=>{let{formValues:s,accessToken:t,testMode:l,modelName:a="this model",onClose:r,onTestComplete:i}=e,[n,o]=d.useState(null),[m,u]=d.useState(null),[x,h]=d.useState(null),[p,g]=d.useState(!0),[f,v]=d.useState(!1),[y,b]=d.useState(!1),_=async()=>{g(!0),b(!1),o(null),u(null),h(null),v(!1),await new Promise(e=>setTimeout(e,100));try{console.log("Testing connection with form values:",s);let a=await s1(s,t,null);if(!a){console.log("No result from prepareModelAddRequest"),o("Failed to prepare model data. Please check your form inputs."),v(!1),g(!1);return}console.log("Result from prepareModelAddRequest:",a);let{litellmParamsObj:r,modelInfoObj:i,modelName:n}=a[0],c=await (0,j.testConnectionRequest)(t,r,i,null==i?void 0:i.mode);if("success"===c.status)eo.Z.success("Connection test successful!"),o(null),v(!0);else{var e,l;let s=(null===(e=c.result)||void 0===e?void 0:e.error)||c.message||"Unknown error";o(s),u(r),h(null===(l=c.result)||void 0===l?void 0:l.raw_request_typed_dict),v(!1)}}catch(e){console.error("Test connection error:",e),o(e instanceof Error?e.message:String(e)),v(!1)}finally{g(!1),i&&i()}};d.useEffect(()=>{let e=setTimeout(()=>{_()},200);return()=>clearTimeout(e)},[]);let N=e=>e?e.split("stack trace:")[0].trim().replace(/^litellm\.(.*?)Error: /,""):"Unknown error",Z="string"==typeof n?N(n):(null==n?void 0:n.message)?N(n.message):"Unknown error",w=x?((e,s,t)=>{let l=JSON.stringify(s,null,2).split("\n").map(e=>" ".concat(e)).join("\n"),a=Object.entries(t).map(e=>{let[s,t]=e;return"-H '".concat(s,": ").concat(t,"'")}).join(" \\\n ");return"curl -X POST \\\n ".concat(e," \\\n ").concat(a?"".concat(a," \\\n "):"","-H 'Content-Type: application/json' \\\n -d '{\n").concat(l,"\n }'")})(x.raw_request_api_base,x.raw_request_body,x.raw_request_headers||{}):"";return(0,c.jsxs)("div",{style:{padding:"24px",borderRadius:"8px",backgroundColor:"#fff"},children:[p?(0,c.jsxs)("div",{style:{textAlign:"center",padding:"32px 20px"},className:"jsx-dc9a0e2d897fe63b",children:[(0,c.jsx)("div",{style:{marginBottom:"16px"},className:"jsx-dc9a0e2d897fe63b loading-spinner",children:(0,c.jsx)("div",{style:{border:"3px solid #f3f3f3",borderTop:"3px solid #1890ff",borderRadius:"50%",width:"30px",height:"30px",animation:"spin 1s linear infinite",margin:"0 auto"},className:"jsx-dc9a0e2d897fe63b"})}),(0,c.jsxs)(tW,{style:{fontSize:"16px"},children:["Testing connection to ",a,"..."]}),(0,c.jsx)(tY(),{id:"dc9a0e2d897fe63b",children:"@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}"})]}):f?(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"32px 20px"},children:[(0,c.jsx)("div",{style:{color:"#52c41a",fontSize:"24px",display:"flex",alignItems:"center"},children:(0,c.jsx)("svg",{viewBox:"64 64 896 896",focusable:"false","data-icon":"check-circle",width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true",children:(0,c.jsx)("path",{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z"})})}),(0,c.jsxs)(tW,{type:"success",style:{fontSize:"18px",fontWeight:500,marginLeft:"10px"},children:["Connection to ",a," successful!"]})]}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",marginBottom:"20px"},children:[(0,c.jsx)(eg.Z,{style:{color:"#ff4d4f",fontSize:"24px",marginRight:"12px"}}),(0,c.jsxs)(tW,{type:"danger",style:{fontSize:"18px",fontWeight:500},children:["Connection to ",a," failed"]})]}),(0,c.jsxs)("div",{style:{backgroundColor:"#fff2f0",border:"1px solid #ffccc7",borderRadius:"8px",padding:"16px",marginBottom:"20px",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.03)"},children:[(0,c.jsxs)(tW,{strong:!0,style:{display:"block",marginBottom:"8px"},children:["Error:"," "]}),(0,c.jsx)(tW,{type:"danger",style:{fontSize:"14px",lineHeight:"1.5"},children:Z}),n&&(0,c.jsx)("div",{style:{marginTop:"12px"},children:(0,c.jsx)(L.ZP,{type:"link",onClick:()=>b(!y),style:{paddingLeft:0,height:"auto"},children:y?"Hide Details":"Show Details"})})]}),y&&(0,c.jsxs)("div",{style:{marginBottom:"20px"},children:[(0,c.jsx)(tW,{strong:!0,style:{display:"block",marginBottom:"8px",fontSize:"15px"},children:"Troubleshooting Details"}),(0,c.jsx)("pre",{style:{backgroundColor:"#f5f5f5",padding:"16px",borderRadius:"8px",fontSize:"13px",maxHeight:"200px",overflow:"auto",border:"1px solid #e8e8e8",lineHeight:"1.5"},children:"string"==typeof n?n:JSON.stringify(n,null,2)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(tW,{strong:!0,style:{display:"block",marginBottom:"8px",fontSize:"15px"},children:"API Request"}),(0,c.jsx)("pre",{style:{backgroundColor:"#f5f5f5",padding:"16px",borderRadius:"8px",fontSize:"13px",maxHeight:"250px",overflow:"auto",border:"1px solid #e8e8e8",lineHeight:"1.5"},children:w||"No request data available"}),(0,c.jsx)(L.ZP,{style:{marginTop:"8px"},icon:(0,c.jsx)(tJ.Z,{}),onClick:()=>{navigator.clipboard.writeText(w||""),eo.Z.success("Copied to clipboard")},children:"Copy to Clipboard"})]})]})}),(0,c.jsx)(K.Z,{style:{margin:"24px 0 16px"}}),(0,c.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:(0,c.jsx)(L.ZP,{type:"link",href:"https://docs.litellm.ai/docs/providers",target:"_blank",icon:(0,c.jsx)(V.Z,{}),children:"View Documentation"})})]})};let tQ=[{value:"chat",label:"Chat - /chat/completions"},{value:"completion",label:"Completion - /completions"},{value:"embedding",label:"Embedding - /embeddings"},{value:"audio_speech",label:"Audio Speech - /audio/speech"},{value:"audio_transcription",label:"Audio Transcription - /audio/transcriptions"},{value:"image_generation",label:"Image Generation - /images/generations"},{value:"rerank",label:"Rerank - /rerank"},{value:"realtime",label:"Realtime - /realtime"},{value:"batch",label:"Batch - /batch"}];var tX=t(92858);let t0=async(e,s,t,l)=>{try{console.log("=== AUTO ROUTER SUBMIT HANDLER CALLED ==="),console.log("handling auto router submit for formValues:",e),console.log("Access token:",s?"Present":"Missing"),console.log("Form:",t?"Present":"Missing"),console.log("Callback:",l?"Present":"Missing");let a={model_name:e.auto_router_name,litellm_params:{model:"auto_router/".concat(e.auto_router_name),auto_router_config:JSON.stringify(e.auto_router_config),auto_router_default_model:e.auto_router_default_model},model_info:{}};e.auto_router_embedding_model&&"custom"!==e.auto_router_embedding_model?a.litellm_params.auto_router_embedding_model=e.auto_router_embedding_model:e.custom_embedding_model&&(a.litellm_params.auto_router_embedding_model=e.custom_embedding_model),e.team_id&&(a.model_info.team_id=e.team_id),e.model_access_group&&e.model_access_group.length>0&&(a.model_info.access_groups=e.model_access_group),console.log("Auto router configuration to be created:",a),console.log("Auto router config (stringified):",a.litellm_params.auto_router_config),console.log("Calling modelCreateCall with:",{accessToken:s?"Present":"Missing",config:a});let r=await (0,j.modelCreateCall)(s,a);console.log("response for auto router create call:",r),t.resetFields()}catch(e){console.error("Failed to add auto router:",e),eo.Z.fromBackend("Failed to add auto router: "+e)}},{Title:t1,Link:t2}=en.default;var t4=e=>{let{form:s,handleOk:t,accessToken:l,userRole:a}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(""),[x,h]=(0,d.useState)([]),[p,g]=(0,d.useState)([]),[f,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(!1),[N,Z]=(0,d.useState)(null);(0,d.useEffect)(()=>{(async()=>{h((await (0,j.modelAvailableCall)(l,"","",!1,null,!0,!0)).data.map(e=>e.id))})()},[l]),(0,d.useEffect)(()=>{(async()=>{try{let e=await eG(l);console.log("Fetched models for auto router:",e),g(e)}catch(e){console.error("Error fetching model info for auto router:",e)}})()},[l]);let w=eI.ZL.includes(a),S=async()=>{o(!0),u("test-".concat(Date.now())),i(!0)},C=()=>{console.log("Auto router submit triggered!"),console.log("Router config:",N);let e=s.getFieldsValue();if(console.log("Form values:",e),!e.auto_router_name){eo.Z.fromBackend("Please enter an Auto Router Name");return}if(!e.auto_router_default_model){eo.Z.fromBackend("Please select a Default Model");return}if(s.setFieldsValue({custom_llm_provider:"auto_router",model:e.auto_router_name,api_key:"not_required_for_auto_router"}),!N||!N.routes||0===N.routes.length){eo.Z.fromBackend("Please configure at least one route for the auto router");return}if(N.routes.filter(e=>!e.name||!e.description||0===e.utterances.length).length>0){eo.Z.fromBackend("Please ensure all routes have a target model, description, and at least one utterance");return}s.validateFields().then(e=>{console.log("Form validation passed, submitting with values:",e);let a={...e,auto_router_config:N};console.log("Final submit values:",a),t0(a,l,s,t)}).catch(e=>{console.error("Validation failed:",e);let s=e.errorFields||[];if(s.length>0){let e=s.map(e=>{let s=e.name[0];return({auto_router_name:"Auto Router Name",auto_router_default_model:"Default Model",auto_router_embedding_model:"Embedding Model"})[s]||s});eo.Z.fromBackend("Please fill in the following required fields: ".concat(e.join(", ")))}else eo.Z.fromBackend("Please fill in all required fields")})};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(t1,{level:2,children:"Add Auto Router"}),(0,c.jsx)(k.Z,{className:"text-gray-600 mb-6",children:"Create an auto router with intelligent routing logic that automatically selects the best model based on user input patterns and semantic matching."}),(0,c.jsx)(tL.Z,{children:(0,c.jsxs)(A.Z,{form:s,onFinish:C,labelCol:{span:10},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Auto router name is required"}],label:"Auto Router Name",name:"auto_router_name",tooltip:"Unique name for this auto router configuration",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(_.Z,{placeholder:"e.g., auto_router_1, smart_routing"})}),(0,c.jsx)("div",{className:"w-full mb-4",children:(0,c.jsx)(tD,{modelInfo:p,value:N,onChange:e=>{Z(e),s.setFieldValue("auto_router_config",e)}})}),(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Default model is required"}],label:"Default Model",name:"auto_router_default_model",tooltip:"Fallback model to use when auto routing logic cannot determine the best model",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(I.default,{placeholder:"Select a default model",onChange:e=>{v("custom"===e)},options:[...Array.from(new Set(p.map(e=>e.model_group))).map(e=>({value:e,label:e})),{value:"custom",label:"Enter custom model name"}],style:{width:"100%"},showSearch:!0})}),(0,c.jsx)(A.Z.Item,{label:"Embedding Model",name:"auto_router_embedding_model",tooltip:"Optional: Embedding model to use for semantic routing decisions",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(I.default,{value:s.getFieldValue("auto_router_embedding_model"),placeholder:"Select an embedding model (optional)",onChange:e=>{b("custom"===e),s.setFieldValue("auto_router_embedding_model",e)},options:[...Array.from(new Set(p.map(e=>e.model_group))).map(e=>({value:e,label:e})),{value:"custom",label:"Enter custom model name"}],style:{width:"100%"},showSearch:!0,allowClear:!0})}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"Additional Settings"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),w&&(0,c.jsx)(A.Z.Item,{label:"Model Access Group",name:"model_access_group",className:"mb-4",tooltip:"Use model access groups to control who can access this auto router",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],options:x.map(e=>({value:e,label:e})),maxTagCount:"responsive",allowClear:!0})}),(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(en.default.Link,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{className:"space-x-2",children:[(0,c.jsx)(L.ZP,{onClick:S,loading:n,children:"Test Connect"}),(0,c.jsx)(L.ZP,{onClick:()=>{console.log("Add Auto Router button clicked!"),console.log("Current router config:",N),console.log("Current form values:",s.getFieldsValue()),C()},children:"Add Auto Router"})]})]})]})}),(0,c.jsx)(T.Z,{title:"Connection Test Results",open:r,onCancel:()=>{i(!1),o(!1)},footer:[(0,c.jsx)(L.ZP,{onClick:()=>{i(!1),o(!1)},children:"Close"},"close")],width:700,children:r&&(0,c.jsx)(t$,{formValues:s.getFieldsValue(),accessToken:l,testMode:"chat",modelName:s.getFieldValue("auto_router_name"),onClose:()=>{i(!1),o(!1)},onTestComplete:()=>o(!1)},m)})]})};let{Title:t5,Link:t3}=en.default;var t6=e=>{let{form:s,handleOk:t,selectedProvider:l,setSelectedProvider:a,providerModels:r,setProviderModelsFn:i,getPlaceholder:n,uploadProps:o,showAdvancedSettings:m,setShowAdvancedSettings:u,teams:x,credentials:h,accessToken:p,userRole:g,premiumUser:f}=e,[v]=A.Z.useForm(),[y,b]=(0,d.useState)("chat"),[_,N]=(0,d.useState)(!1),[Z,w]=(0,d.useState)(!1),[S,C]=(0,d.useState)([]),[E,P]=(0,d.useState)("");(0,d.useEffect)(()=>{(async()=>{try{let e=(await (0,j.getGuardrailsList)(p)).guardrails.map(e=>e.guardrail_name);C(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})()},[p]);let M=async()=>{w(!0),P("test-".concat(Date.now())),N(!0)},[O,D]=(0,d.useState)(!1),[F,R]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{R((await (0,j.modelAvailableCall)(p,"","",!1,null,!0,!0)).data.map(e=>e.id))})()},[p]);let z=eI.ZL.includes(g);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(st.Z,{className:"w-full",children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Add Model"}),(0,c.jsx)(ss.Z,{children:"Add Auto Router"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)(t5,{level:2,children:"Add Model"}),(0,c.jsx)(tL.Z,{children:(0,c.jsx)(A.Z,{form:s,onFinish:e=>{console.log("\uD83D\uDD25 Form onFinish triggered with values:",e),t()},onFinishFailed:e=>{console.log("\uD83D\uDCA5 Form onFinishFailed triggered:",e)},labelCol:{span:10},wrapperCol:{span:16},labelAlign:"left",children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{rules:[{required:!0,message:"Required"}],label:"Provider:",name:"custom_llm_provider",tooltip:"E.g. OpenAI, Azure OpenAI, Anthropic, Bedrock, etc.",labelCol:{span:10},labelAlign:"left",children:(0,c.jsx)(I.default,{showSearch:!0,value:l,onChange:e=>{a(e),i(e),s.setFieldsValue({model:[],model_name:void 0})},children:Object.entries(s0.Cl).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:s,children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:s0.cd[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(tz,{selectedProvider:l,providerModels:r,getPlaceholder:n}),(0,c.jsx)(tV,{}),(0,c.jsx)(A.Z.Item,{label:"Mode",name:"mode",className:"mb-1",children:(0,c.jsx)(I.default,{style:{width:"100%"},value:y,onChange:e=>b(e),options:tQ})}),(0,c.jsxs)(s5.Z,{children:[(0,c.jsx)(s3.Z,{span:10}),(0,c.jsx)(s3.Z,{span:10,children:(0,c.jsxs)(k.Z,{className:"mb-5 mt-1",children:[(0,c.jsx)("strong",{children:"Optional"})," - LiteLLM endpoint to use when health checking this model"," ",(0,c.jsx)(t3,{href:"https://docs.litellm.ai/docs/proxy/health#health",target:"_blank",children:"Learn more"})]})})]}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(en.default.Text,{className:"text-sm text-gray-500 mb-2",children:"Either select existing credentials OR enter new provider credentials below"})}),(0,c.jsx)(A.Z.Item,{label:"Existing Credentials",name:"litellm_credential_name",children:(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Select or search for existing credentials",optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{value:null,label:"None"},...h.map(e=>({value:e.credential_name,label:e.credential_name}))],allowClear:!0})}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"OR"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.litellm_credential_name!==s.litellm_credential_name||e.provider!==s.provider,children:e=>{let{getFieldValue:s}=e,t=s("litellm_credential_name");return(console.log("\uD83D\uDD11 Credential Name Changed:",t),t)?(0,c.jsx)("div",{className:"text-gray-500 text-sm text-center",children:"Using existing credentials - no additional provider fields needed"}):(0,c.jsx)(s7,{selectedProvider:l,uploadProps:o})}}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"Additional Model Info Settings"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),(0,c.jsx)(A.Z.Item,{label:"Team-BYOK Model",tooltip:"Only use this model + credential combination for this team. Useful when teams want to onboard their own OpenAI keys.",className:"mb-4",children:(0,c.jsx)(B.Z,{title:f?"":"This is an enterprise-only feature. Upgrade to premium to restrict model+credential combinations to a specific team.",placement:"top",children:(0,c.jsx)(tX.Z,{checked:O,onChange:e=>{D(e),e||s.setFieldValue("team_id",void 0)},disabled:!f})})}),O&&(0,c.jsx)(A.Z.Item,{label:"Select Team",name:"team_id",className:"mb-4",tooltip:"Only keys for this team will be able to call this model.",rules:[{required:O&&!z,message:"Please select a team."}],children:(0,c.jsx)(q,{teams:x,disabled:!f})}),z&&(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(A.Z.Item,{label:"Model Access Group",name:"model_access_group",className:"mb-4",tooltip:"Use model access groups to give users access to select models, and add new ones to the group over time.",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"children",tokenSeparators:[","],options:F.map(e=>({value:e,label:e})),maxTagCount:"responsive",allowClear:!0})})}),(0,c.jsx)(tG,{showAdvancedSettings:m,setShowAdvancedSettings:u,teams:x,guardrailsList:S}),(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(B.Z,{title:"Get help on our github",children:(0,c.jsx)(en.default.Link,{href:"https://github.com/BerriAI/litellm/issues",children:"Need Help?"})}),(0,c.jsxs)("div",{className:"space-x-2",children:[(0,c.jsx)(L.ZP,{onClick:M,loading:Z,children:"Test Connect"}),(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Add Model"})]})]})]})})})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(t4,{form:v,handleOk:()=>{v.validateFields().then(e=>{t0(e,p,v,t)}).catch(e=>{console.error("Validation failed:",e)})},accessToken:p,userRole:g})})]})]}),(0,c.jsx)(T.Z,{title:"Connection Test Results",open:_,onCancel:()=>{N(!1),w(!1)},footer:[(0,c.jsx)(L.ZP,{onClick:()=>{N(!1),w(!1)},children:"Close"},"close")],width:700,children:_&&(0,c.jsx)(t$,{formValues:s.getFieldsValue(),accessToken:p,testMode:y,modelName:s.getFieldValue("model_name")||s.getFieldValue("model"),onClose:()=>{N(!1),w(!1)},onTestComplete:()=>w(!1)},E)})]})},t8=t(8048);let t7=(e,s,t,l,a,r,i,n,o,d,m)=>[{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Model ID"}),accessorKey:"model_info.id",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.model_info.id,children:(0,c.jsx)("div",{className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",onClick:()=>l(t.model_info.id),children:t.model_info.id})})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Model Information"}),accessorKey:"model_name",size:250,cell:e=>{let{row:s}=e,t=s.original,l=r(s.original)||"-",a=(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"Provider:"})," ",t.provider||"-"]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"Public Model Name:"})," ",l]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"LiteLLM Model Name:"})," ",t.litellm_model_name||"-"]})]});return(0,c.jsx)(B.Z,{title:a,children:(0,c.jsxs)("div",{className:"flex items-start space-x-2 min-w-0 w-full max-w-[250px]",children:[(0,c.jsx)("div",{className:"flex-shrink-0 mt-0.5",children:t.provider?(0,c.jsx)("img",{src:(0,s0.dr)(t.provider).logo,alt:"".concat(t.provider," logo"),className:"w-4 h-4",onError:e=>{let s=e.target,l=s.parentElement;if(l){var a;let e=document.createElement("div");e.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=(null===(a=t.provider)||void 0===a?void 0:a.charAt(0))||"-",l.replaceChild(e,s)}}}):(0,c.jsx)("div",{className:"w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",children:"-"})}),(0,c.jsxs)("div",{className:"flex flex-col min-w-0 flex-1",children:[(0,c.jsx)("div",{className:"text-xs font-medium text-gray-900 truncate max-w-[210px]",children:l}),(0,c.jsx)("div",{className:"text-xs text-gray-500 truncate mt-0.5 max-w-[210px]",children:t.litellm_model_name||"-"})]})]})})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Credentials"}),accessorKey:"litellm_credential_name",size:180,cell:e=>{var s;let{row:t}=e,l=null===(s=t.original.litellm_params)||void 0===s?void 0:s.litellm_credential_name;return l?(0,c.jsx)(B.Z,{title:"Credential: ".concat(l),children:(0,c.jsxs)("div",{className:"flex items-center space-x-2 max-w-[180px]",children:[(0,c.jsx)(tZ.Z,{className:"w-4 h-4 text-blue-500 flex-shrink-0"}),(0,c.jsx)("span",{className:"text-xs truncate",title:l,children:l})]})}):(0,c.jsxs)("div",{className:"flex items-center space-x-2 max-w-[180px]",children:[(0,c.jsx)(tZ.Z,{className:"w-4 h-4 text-gray-300 flex-shrink-0"}),(0,c.jsx)("span",{className:"text-xs text-gray-400",children:"No credentials"})]})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Created By"}),accessorKey:"model_info.created_by",sortingFn:"datetime",size:160,cell:e=>{let{row:s}=e,t=s.original,l=t.model_info.created_by,a=t.model_info.created_at?new Date(t.model_info.created_at).toLocaleDateString():null;return(0,c.jsxs)("div",{className:"flex flex-col min-w-0 max-w-[160px]",children:[(0,c.jsx)("div",{className:"text-xs font-medium text-gray-900 truncate",title:l||"Unknown",children:l||"Unknown"}),(0,c.jsx)("div",{className:"text-xs text-gray-500 truncate mt-0.5",title:a||"Unknown date",children:a||"Unknown date"})]})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Updated At"}),accessorKey:"model_info.updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.model_info.updated_at?new Date(t.model_info.updated_at).toLocaleDateString():"-"})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Costs"}),accessorKey:"input_cost",size:120,cell:e=>{let{row:s}=e,t=s.original,l=t.input_cost,a=t.output_cost;return l||a?(0,c.jsx)(B.Z,{title:"Cost per 1M tokens",children:(0,c.jsxs)("div",{className:"flex flex-col min-w-0 max-w-[120px]",children:[l&&(0,c.jsxs)("div",{className:"text-xs font-medium text-gray-900 truncate",children:["In: $",l]}),a&&(0,c.jsxs)("div",{className:"text-xs text-gray-500 truncate mt-0.5",children:["Out: $",a]})]})}):(0,c.jsx)("div",{className:"max-w-[120px]",children:(0,c.jsx)("span",{className:"text-xs text-gray-400",children:"-"})})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Team ID"}),accessorKey:"model_info.team_id",cell:e=>{let{row:s}=e,t=s.original;return t.model_info.team_id?(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:t.model_info.team_id,children:(0,c.jsxs)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>a(t.model_info.team_id),children:[t.model_info.team_id.slice(0,7),"..."]})})}):"-"}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Model Access Group"}),accessorKey:"model_info.model_access_group",enableSorting:!1,cell:e=>{let{row:s}=e,t=s.original,l=t.model_info.access_groups;if(!l||0===l.length)return"-";let a=t.model_info.id,r=d.has(a),i=l.length>1,n=()=>{let e=new Set(d);r?e.delete(a):e.add(a),m(e)};return(0,c.jsxs)("div",{className:"flex items-center gap-1 overflow-hidden",children:[(0,c.jsx)(se.Z,{size:"xs",color:"blue",className:"text-xs px-1.5 py-0.5 h-5 leading-tight flex-shrink-0",children:l[0]}),(r||!i&&2===l.length)&&l.slice(1).map((e,s)=>(0,c.jsx)(se.Z,{size:"xs",color:"blue",className:"text-xs px-1.5 py-0.5 h-5 leading-tight flex-shrink-0",children:e},s+1)),i&&(0,c.jsx)("button",{onClick:e=>{e.stopPropagation(),n()},className:"text-xs text-blue-600 hover:text-blue-800 px-1 py-0.5 rounded hover:bg-blue-50 h-5 leading-tight flex-shrink-0 whitespace-nowrap",children:r?"−":"+".concat(l.length-1)})]})}},{header:()=>(0,c.jsx)("span",{className:"text-sm font-semibold",children:"Status"}),accessorKey:"model_info.db_model",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("div",{className:"\n inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium\n ".concat(t.model_info.db_model?"bg-blue-50 text-blue-600":"bg-gray-100 text-gray-600","\n "),children:t.model_info.db_model?"DB Model":"Config Model"})}},{id:"actions",header:"",cell:t=>{var a;let{row:r}=t,i=r.original,n="Admin"===e||(null===(a=i.model_info)||void 0===a?void 0:a.created_by)===s;return(0,c.jsx)("div",{className:"flex items-center justify-end gap-2 pr-4",children:(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>{n&&(l(i.model_info.id),o(!1))},className:n?"cursor-pointer":"opacity-50 cursor-not-allowed"})})}}];var t9=t(93142),le=t(867),ls=t(3810),lt=t(5540),ll=t(8881);let{Text:la}=en.default;var lr=e=>{let{accessToken:s,onReloadSuccess:t,buttonText:l="Reload Price Data",showIcon:a=!0,size:r="middle",type:i="primary",className:n=""}=e,[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)(6),[b,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)(!1);(0,d.useEffect)(()=>{w();let e=setInterval(()=>{w()},3e4);return()=>clearInterval(e)},[s]);let w=async()=>{if(s){Z(!0);try{console.log("Fetching reload status...");let e=await (0,j.getModelCostMapReloadStatus)(s);console.log("Received status:",e),_(e)}catch(e){console.error("Failed to fetch reload status:",e),_({scheduled:!1,interval_hours:null,last_run:null,next_run:null})}finally{Z(!1)}}},k=async()=>{if(!s){eo.Z.fromBackend("No access token available");return}m(!0);try{let e=await (0,j.reloadModelCostMap)(s);"success"===e.status?(eo.Z.success("Price data reloaded successfully! ".concat(e.models_count||0," models updated.")),null==t||t(),await w()):eo.Z.fromBackend("Failed to reload price data")}catch(e){console.error("Error reloading price data:",e),eo.Z.fromBackend("Failed to reload price data. Please try again.")}finally{m(!1)}},S=async()=>{if(!s){eo.Z.fromBackend("No access token available");return}if(v<=0){eo.Z.fromBackend("Hours must be greater than 0");return}x(!0);try{let e=await (0,j.scheduleModelCostMapReload)(s,v);"success"===e.status?(eo.Z.success("Periodic reload scheduled for every ".concat(v," hours")),f(!1),await w()):eo.Z.fromBackend("Failed to schedule periodic reload")}catch(e){console.error("Error scheduling reload:",e),eo.Z.fromBackend("Failed to schedule periodic reload. Please try again.")}finally{x(!1)}},C=async()=>{if(!s){eo.Z.fromBackend("No access token available");return}p(!0);try{let e=await (0,j.cancelModelCostMapReload)(s);"success"===e.status?(eo.Z.success("Periodic reload cancelled successfully"),await w()):eo.Z.fromBackend("Failed to cancel periodic reload")}catch(e){console.error("Error cancelling reload:",e),eo.Z.fromBackend("Failed to cancel periodic reload. Please try again.")}finally{p(!1)}},I=e=>{if(!e)return"Never";try{return new Date(e).toLocaleString()}catch(s){return e}};return(0,c.jsxs)("div",{className:n,children:[(0,c.jsxs)(t9.Z,{direction:"horizontal",size:"middle",style:{marginBottom:16},children:[(0,c.jsx)(le.Z,{title:"Hard Refresh Price Data",description:"This will immediately fetch the latest pricing information from the remote source. Continue?",onConfirm:k,okText:"Yes",cancelText:"No",okButtonProps:{style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem",transition:"all 0.2s ease-in-out"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#4f46e5"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#6366f1"}},children:(0,c.jsx)(L.ZP,{type:i,size:r,loading:o,icon:a?(0,c.jsx)(th.Z,{}):void 0,style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem",transition:"all 0.2s ease-in-out"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#4f46e5"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#6366f1"},children:l})}),(null==b?void 0:b.scheduled)?(0,c.jsx)(L.ZP,{type:"default",size:r,danger:!0,icon:(0,c.jsx)(ll.Z,{}),loading:h,onClick:C,style:{borderColor:"#ff4d4f",color:"#ff4d4f",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem"},children:"Cancel Periodic Reload"}):(0,c.jsx)(L.ZP,{type:"default",size:r,icon:(0,c.jsx)(lt.Z,{}),onClick:()=>f(!0),style:{borderColor:"#d9d9d9",color:"#6366f1",fontWeight:"500",borderRadius:"0.375rem",padding:"0.375rem 0.75rem",height:"auto",fontSize:"0.875rem",lineHeight:"1.25rem"},children:"Set Up Periodic Reload"})]}),b&&(0,c.jsx)(tL.Z,{size:"small",style:{backgroundColor:"#f8f9fa",border:"1px solid #e9ecef",borderRadius:8},children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"small",style:{width:"100%"},children:[b.scheduled?(0,c.jsx)("div",{children:(0,c.jsxs)(ls.Z,{color:"green",icon:(0,c.jsx)(lt.Z,{}),children:["Scheduled every ",b.interval_hours," hours"]})}):(0,c.jsx)(la,{type:"secondary",children:"No periodic reload scheduled"}),(0,c.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,c.jsx)(la,{type:"secondary",style:{fontSize:"12px"},children:"Last run:"}),(0,c.jsx)(la,{style:{fontSize:"12px"},children:I(b.last_run)})]}),b.scheduled&&(0,c.jsxs)(c.Fragment,{children:[b.next_run&&(0,c.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,c.jsx)(la,{type:"secondary",style:{fontSize:"12px"},children:"Next run:"}),(0,c.jsx)(la,{style:{fontSize:"12px"},children:I(b.next_run)})]}),(0,c.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,c.jsx)(la,{type:"secondary",style:{fontSize:"12px"},children:"Status:"}),(0,c.jsx)(ls.Z,{color:(null==b?void 0:b.scheduled)?b.last_run?"success":"processing":"default",children:(null==b?void 0:b.scheduled)?b.last_run?"Active":"Ready":"Not scheduled"})]})]})]})}),(0,c.jsxs)(T.Z,{title:"Set Up Periodic Reload",open:g,onOk:S,onCancel:()=>f(!1),confirmLoading:u,okText:"Schedule",cancelText:"Cancel",okButtonProps:{style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white"}},children:[(0,c.jsx)("div",{style:{marginBottom:16},children:(0,c.jsx)(la,{children:"Set up automatic reload of price data every:"})}),(0,c.jsx)("div",{style:{marginBottom:16},children:(0,c.jsx)(e8.Z,{min:1,max:168,value:v,onChange:e=>y(e||6),addonAfter:"hours",style:{width:"100%"}})}),(0,c.jsx)("div",{children:(0,c.jsxs)(la,{type:"secondary",children:["This will automatically fetch the latest pricing data from the remote source every ",v," hours."]})})]})]})},li=t(15731),ln=t(91126);let lo=(e,s,t,l,a,r,i,n,o,d,m)=>[{header:()=>(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(eR.Z,{checked:t,indeterminate:s.length>0&&!t,onChange:e=>a(e.target.checked),onClick:e=>e.stopPropagation()}),(0,c.jsx)("span",{children:"Model ID"})]}),accessorKey:"model_info.id",enableSorting:!0,sortingFn:"alphanumeric",cell:e=>{let{row:t}=e,a=t.original,r=a.model_name,i=s.includes(r);return(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(eR.Z,{checked:i,onChange:e=>l(r,e.target.checked),onClick:e=>e.stopPropagation()}),(0,c.jsx)(B.Z,{title:a.model_info.id,children:(0,c.jsx)("div",{className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",onClick:()=>m&&m(a.model_info.id),children:a.model_info.id})})]})}},{header:"Model Name",accessorKey:"model_name",enableSorting:!0,sortingFn:"alphanumeric",cell:e=>{let{row:s}=e,t=s.original,l=n(t)||t.model_name;return(0,c.jsx)("div",{className:"font-medium text-sm",children:(0,c.jsx)(B.Z,{title:l,children:(0,c.jsx)("div",{className:"truncate max-w-[200px]",children:l})})})}},{header:"Health Status",accessorKey:"health_status",enableSorting:!0,sortingFn:(e,s,t)=>{var l,a;let r=e.getValue("health_status")||"unknown",i=s.getValue("health_status")||"unknown",n={healthy:0,checking:1,unknown:2,unhealthy:3};return(null!==(l=n[r])&&void 0!==l?l:4)-(null!==(a=n[i])&&void 0!==a?a:4)},cell:s=>{var t;let{row:l}=s,a=l.original,r={status:a.health_status,loading:a.health_loading,error:a.health_error};if(r.loading)return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsxs)("div",{className:"flex space-x-1",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-indigo-500 rounded-full animate-pulse"}),(0,c.jsx)("div",{className:"w-2 h-2 bg-indigo-500 rounded-full animate-pulse",style:{animationDelay:"0.2s"}}),(0,c.jsx)("div",{className:"w-2 h-2 bg-indigo-500 rounded-full animate-pulse",style:{animationDelay:"0.4s"}})]}),(0,c.jsx)(k.Z,{className:"text-gray-600 text-sm",children:"Checking..."})]});let n=a.model_name,o="healthy"===r.status&&(null===(t=e[n])||void 0===t?void 0:t.successResponse);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[i(r.status),o&&d&&(0,c.jsx)(B.Z,{title:"View response details",placement:"top",children:(0,c.jsx)("button",{onClick:()=>{var s;return d(n,null===(s=e[n])||void 0===s?void 0:s.successResponse)},className:"p-1 text-green-600 hover:text-green-800 hover:bg-green-50 rounded cursor-pointer transition-colors",children:(0,c.jsx)(li.Z,{className:"h-4 w-4"})})})]})}},{header:"Error Details",accessorKey:"health_error",enableSorting:!1,cell:s=>{let{row:t}=s,l=t.original.model_name,a=e[l];if(!(null==a?void 0:a.error))return(0,c.jsx)(k.Z,{className:"text-gray-400 text-sm",children:"No errors"});let r=a.error,i=a.fullError||a.error;return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"max-w-[200px]",children:(0,c.jsx)(B.Z,{title:r,placement:"top",children:(0,c.jsx)(k.Z,{className:"text-red-600 text-sm truncate",children:r})})}),o&&i!==r&&(0,c.jsx)(B.Z,{title:"View full error details",placement:"top",children:(0,c.jsx)("button",{onClick:()=>o(l,r,i),className:"p-1 text-red-600 hover:text-red-800 hover:bg-red-50 rounded cursor-pointer transition-colors",children:(0,c.jsx)(li.Z,{className:"h-4 w-4"})})})]})}},{header:"Last Check",accessorKey:"last_check",enableSorting:!0,sortingFn:(e,s,t)=>{let l=e.getValue("last_check")||"Never checked",a=s.getValue("last_check")||"Never checked";if("Never checked"===l&&"Never checked"===a)return 0;if("Never checked"===l)return 1;if("Never checked"===a)return -1;if("Check in progress..."===l&&"Check in progress..."===a)return 0;if("Check in progress..."===l)return -1;if("Check in progress..."===a)return 1;let r=new Date(l),i=new Date(a);return isNaN(r.getTime())&&isNaN(i.getTime())?0:isNaN(r.getTime())?1:isNaN(i.getTime())?-1:i.getTime()-r.getTime()},cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(k.Z,{className:"text-gray-600 text-sm",children:t.health_loading?"Check in progress...":t.last_check})}},{header:"Last Success",accessorKey:"last_success",enableSorting:!0,sortingFn:(e,s,t)=>{let l=e.getValue("last_success")||"Never succeeded",a=s.getValue("last_success")||"Never succeeded";if("Never succeeded"===l&&"Never succeeded"===a)return 0;if("Never succeeded"===l)return 1;if("Never succeeded"===a)return -1;if("None"===l&&"None"===a)return 0;if("None"===l)return 1;if("None"===a)return -1;let r=new Date(l),i=new Date(a);return isNaN(r.getTime())&&isNaN(i.getTime())?0:isNaN(r.getTime())?1:isNaN(i.getTime())?-1:i.getTime()-r.getTime()},cell:s=>{let{row:t}=s,l=e[t.original.model_name],a=(null==l?void 0:l.lastSuccess)||"None";return(0,c.jsx)(k.Z,{className:"text-gray-600 text-sm",children:a})}},{header:"Actions",id:"actions",cell:e=>{let{row:s}=e,t=s.original,l=t.model_name,a=t.health_status&&"none"!==t.health_status,i=t.health_loading?"Checking...":a?"Re-run Health Check":"Run Health Check";return(0,c.jsx)(B.Z,{title:i,placement:"top",children:(0,c.jsx)("button",{className:"p-2 rounded-md transition-colors ".concat(t.health_loading?"text-gray-400 cursor-not-allowed bg-gray-100":"text-indigo-600 hover:text-indigo-700 hover:bg-indigo-50"),onClick:()=>{t.health_loading||r(l)},disabled:t.health_loading,children:t.health_loading?(0,c.jsxs)("div",{className:"flex space-x-1",children:[(0,c.jsx)("div",{className:"w-1 h-1 bg-gray-400 rounded-full animate-pulse"}),(0,c.jsx)("div",{className:"w-1 h-1 bg-gray-400 rounded-full animate-pulse",style:{animationDelay:"0.2s"}}),(0,c.jsx)("div",{className:"w-1 h-1 bg-gray-400 rounded-full animate-pulse",style:{animationDelay:"0.4s"}})]}):a?(0,c.jsx)(sn.Z,{className:"h-4 w-4"}):(0,c.jsx)(ln.Z,{className:"h-4 w-4"})})})},enableSorting:!1}],lc=[{pattern:/Missing .* API Key/i,replacement:"Missing API Key"},{pattern:/Connection timeout/i,replacement:"Connection timeout"},{pattern:/Network.*not.*ok/i,replacement:"Network connection failed"},{pattern:/403.*Forbidden/i,replacement:"Access forbidden - check API key permissions"},{pattern:/401.*Unauthorized/i,replacement:"Unauthorized - invalid API key"},{pattern:/429.*rate limit/i,replacement:"Rate limit exceeded"},{pattern:/500.*Internal Server Error/i,replacement:"Provider internal server error"},{pattern:/litellm\.AuthenticationError/i,replacement:"Authentication failed"},{pattern:/litellm\.RateLimitError/i,replacement:"Rate limit exceeded"},{pattern:/litellm\.APIError/i,replacement:"API error"}];var ld=e=>{let{accessToken:s,modelData:t,all_models_on_proxy:l,getDisplayModelName:a,setSelectedModelId:r}=e,[i,n]=(0,d.useState)({}),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(null),[v,y]=(0,d.useState)(!1),[_,N]=(0,d.useState)(null),Z=(0,d.useRef)(null);(0,d.useEffect)(()=>{s&&(null==t?void 0:t.data)&&(async()=>{let e={};t.data.forEach(s=>{e[s.model_name]={status:"none",lastCheck:"None",lastSuccess:"None",loading:!1,error:void 0,fullError:void 0,successResponse:void 0}});try{let l=await (0,j.latestHealthChecksCall)(s);l&&l.latest_health_checks&&"object"==typeof l.latest_health_checks&&Object.entries(l.latest_health_checks).forEach(s=>{let[l,a]=s;if(!a)return;let r=null,i=t.data.find(e=>e.model_name===l);if(i)r=i.model_name;else{let e=t.data.find(e=>e.model_info&&e.model_info.id===l);if(e)r=e.model_name;else if(a.model_name){let e=t.data.find(e=>e.model_name===a.model_name);e&&(r=e.model_name)}}if(r){let s=a.error_message||void 0;e[r]={status:a.status||"unknown",lastCheck:a.checked_at?new Date(a.checked_at).toLocaleString():"None",lastSuccess:"healthy"===a.status&&a.checked_at?new Date(a.checked_at).toLocaleString():"None",loading:!1,error:s?w(s):void 0,fullError:s,successResponse:"healthy"===a.status?a:void 0}}})}catch(e){console.warn("Failed to load health check history (using default states):",e)}n(e)})()},[s,t]);let w=e=>{var s;if(!e)return"Health check failed";let t="string"==typeof e?e:JSON.stringify(e),l=t.match(/(\w+Error):\s*(\d{3})/i);if(l)return"".concat(l[1],": ").concat(l[2]);let a=t.match(/(AuthenticationError|RateLimitError|BadRequestError|InternalServerError|TimeoutError|NotFoundError|ForbiddenError|ServiceUnavailableError|BadGatewayError|ContentPolicyViolationError|\w+Error)/i),r=t.match(/\b(400|401|403|404|408|429|500|502|503|504)\b/);if(a&&r)return"".concat(a[1],": ").concat(r[1]);if(r){let e=r[1];return"".concat({400:"BadRequestError",401:"AuthenticationError",403:"ForbiddenError",404:"NotFoundError",408:"TimeoutError",429:"RateLimitError",500:"InternalServerError",502:"BadGatewayError",503:"ServiceUnavailableError",504:"GatewayTimeoutError"}[e],": ").concat(e)}if(a){let e=a[1],s={AuthenticationError:"401",RateLimitError:"429",BadRequestError:"400",InternalServerError:"500",TimeoutError:"408",NotFoundError:"404",ForbiddenError:"403",ServiceUnavailableError:"503",BadGatewayError:"502",GatewayTimeoutError:"504",ContentPolicyViolationError:"400"}[e];return s?"".concat(e,": ").concat(s):e}for(let{pattern:e,replacement:s}of lc)if(e.test(t))return s;if(/missing.*api.*key|invalid.*key|unauthorized/i.test(t))return"AuthenticationError: 401";if(/rate.*limit|too.*many.*requests/i.test(t))return"RateLimitError: 429";if(/timeout|timed.*out/i.test(t))return"TimeoutError: 408";if(/not.*found/i.test(t))return"NotFoundError: 404";if(/forbidden|access.*denied/i.test(t))return"ForbiddenError: 403";if(/internal.*server.*error/i.test(t))return"InternalServerError: 500";let i=t.replace(/[\n\r]+/g," ").replace(/\s+/g," ").trim(),n=null===(s=i.split(/[.!?]/)[0])||void 0===s?void 0:s.trim();return n&&n.length>0?n.length>100?n.substring(0,97)+"...":n:i.length>100?i.substring(0,97)+"...":i},C=async e=>{if(s){n(s=>({...s,[e]:{...s[e],loading:!0,status:"checking"}}));try{var l,a;let r=await (0,j.individualModelHealthCheckCall)(s,e),i=new Date().toLocaleString();if(r.unhealthy_count>0&&r.unhealthy_endpoints&&r.unhealthy_endpoints.length>0){let s=(null===(l=r.unhealthy_endpoints[0])||void 0===l?void 0:l.error)||"Health check failed",t=w(s);n(l=>{var a;return{...l,[e]:{status:"unhealthy",lastCheck:i,lastSuccess:(null===(a=l[e])||void 0===a?void 0:a.lastSuccess)||"None",loading:!1,error:t,fullError:s}}})}else n(s=>({...s,[e]:{status:"healthy",lastCheck:i,lastSuccess:i,loading:!1,successResponse:r}}));try{let l=await (0,j.latestHealthChecksCall)(s),r=t.data.find(s=>s.model_name===e);if(r){let s=r.model_info.id,t=null===(a=l.latest_health_checks)||void 0===a?void 0:a[s];if(t){let s=t.error_message||void 0;n(l=>{var a,r,i,n,o,c,d;return{...l,[e]:{status:t.status||(null===(a=l[e])||void 0===a?void 0:a.status)||"unknown",lastCheck:t.checked_at?new Date(t.checked_at).toLocaleString():(null===(r=l[e])||void 0===r?void 0:r.lastCheck)||"None",lastSuccess:"healthy"===t.status?t.checked_at?new Date(t.checked_at).toLocaleString():(null===(i=l[e])||void 0===i?void 0:i.lastSuccess)||"None":(null===(n=l[e])||void 0===n?void 0:n.lastSuccess)||"None",loading:!1,error:s?w(s):null===(o=l[e])||void 0===o?void 0:o.error,fullError:s||(null===(c=l[e])||void 0===c?void 0:c.fullError),successResponse:"healthy"===t.status?t:null===(d=l[e])||void 0===d?void 0:d.successResponse}}})}}}catch(e){console.debug("Could not fetch updated status from database (non-critical):",e)}}catch(a){let s=new Date().toLocaleString(),t=a instanceof Error?a.message:String(a),l=w(t);n(a=>{var r;return{...a,[e]:{status:"unhealthy",lastCheck:s,lastSuccess:(null===(r=a[e])||void 0===r?void 0:r.lastSuccess)||"None",loading:!1,error:l,fullError:t}}})}}},I=async()=>{let e=o.length>0?o:l,a=e.reduce((e,s)=>(e[s]={...i[s],loading:!0,status:"checking"},e),{});n(e=>({...e,...a}));let r={},c=e.map(async e=>{if(s)try{let l=await (0,j.individualModelHealthCheckCall)(s,e);r[e]=l;let a=new Date().toLocaleString();if(l.unhealthy_count>0&&l.unhealthy_endpoints&&l.unhealthy_endpoints.length>0){var t;let s=(null===(t=l.unhealthy_endpoints[0])||void 0===t?void 0:t.error)||"Health check failed",r=w(s);n(t=>{var l;return{...t,[e]:{status:"unhealthy",lastCheck:a,lastSuccess:(null===(l=t[e])||void 0===l?void 0:l.lastSuccess)||"None",loading:!1,error:r,fullError:s}}})}else n(s=>({...s,[e]:{status:"healthy",lastCheck:a,lastSuccess:a,loading:!1,successResponse:l}}))}catch(a){console.error("Health check failed for ".concat(e,":"),a);let s=new Date().toLocaleString(),t=a instanceof Error?a.message:String(a),l=w(t);n(a=>{var r;return{...a,[e]:{status:"unhealthy",lastCheck:s,lastSuccess:(null===(r=a[e])||void 0===r?void 0:r.lastSuccess)||"None",loading:!1,error:l,fullError:t}}})}});await Promise.allSettled(c);try{if(!s)return;let l=await (0,j.latestHealthChecksCall)(s);l.latest_health_checks&&Object.entries(l.latest_health_checks).forEach(s=>{let[l,a]=s,r=t.data.find(e=>e.model_info.id===l);if(r&&e.includes(r.model_name)&&a){let e=r.model_name,s=a.error_message||void 0;n(t=>{let l=t[e];return{...t,[e]:{status:a.status||(null==l?void 0:l.status)||"unknown",lastCheck:a.checked_at?new Date(a.checked_at).toLocaleString():(null==l?void 0:l.lastCheck)||"None",lastSuccess:"healthy"===a.status&&a.checked_at?new Date(a.checked_at).toLocaleString():(null==l?void 0:l.lastSuccess)||"None",loading:!1,error:s?w(s):null==l?void 0:l.error,fullError:s||(null==l?void 0:l.fullError),successResponse:"healthy"===a.status?a:null==l?void 0:l.successResponse}}})}})}catch(e){console.warn("Failed to fetch updated health statuses from database (non-critical):",e)}},A=e=>{x(e),e?m(l):m([])},E=()=>{p(!1),f(null)},P=()=>{y(!1),N(null)};return(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Model Health Status"}),(0,c.jsx)(k.Z,{className:"text-gray-600 mt-1",children:"Run health checks on individual models to verify they are working correctly"})]}),(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[o.length>0&&(0,c.jsx)(b.Z,{size:"sm",variant:"light",onClick:()=>A(!1),className:"px-3 py-1 text-sm",children:"Clear Selection"}),(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",onClick:I,disabled:Object.values(i).some(e=>e.loading),className:"px-3 py-1 text-sm",children:o.length>0&&o.length{s?m(s=>[...s,e]):(m(s=>s.filter(s=>s!==e)),x(!1))},A,C,e=>{switch(e){case"healthy":return(0,c.jsx)(se.Z,{color:"emerald",children:"healthy"});case"unhealthy":return(0,c.jsx)(se.Z,{color:"red",children:"unhealthy"});case"checking":return(0,c.jsx)(se.Z,{color:"blue",children:"checking"});case"none":return(0,c.jsx)(se.Z,{color:"gray",children:"none"});default:return(0,c.jsx)(se.Z,{color:"gray",children:"unknown"})}},a,(e,s,t)=>{f({modelName:e,cleanedError:s,fullError:t}),p(!0)},(e,s)=>{N({modelName:e,response:s}),y(!0)},r),data:t.data.map(e=>{let s=i[e.model_name]||{status:"none",lastCheck:"None",loading:!1};return{model_name:e.model_name,model_info:e.model_info,provider:e.provider,litellm_model_name:e.litellm_model_name,health_status:s.status,last_check:s.lastCheck,last_success:s.lastSuccess||"None",health_loading:s.loading,health_error:s.error,health_full_error:s.fullError}}),isLoading:!1,table:Z})}),(0,c.jsx)(T.Z,{title:g?"Health Check Error - ".concat(g.modelName):"Error Details",open:h,onCancel:E,footer:[(0,c.jsx)(L.ZP,{onClick:E,children:"Close"},"close")],width:800,children:g&&(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Error:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-red-50 border border-red-200 rounded-md",children:(0,c.jsx)(k.Z,{className:"text-red-800",children:g.cleanedError})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Full Error Details:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md max-h-96 overflow-y-auto",children:(0,c.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:g.fullError})})]})]})}),(0,c.jsx)(T.Z,{title:_?"Health Check Response - ".concat(_.modelName):"Response Details",open:v,onCancel:P,footer:[(0,c.jsx)(L.ZP,{onClick:P,children:"Close"},"close")],width:800,children:_&&(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Status:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-green-50 border border-green-200 rounded-md",children:(0,c.jsx)(k.Z,{className:"text-green-800",children:"Health check passed successfully"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Response Details:"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md max-h-96 overflow-y-auto",children:(0,c.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:JSON.stringify(_.response,null,2)})})]})]})})]})},lm=t(61778),lu=t(12660),lx=e=>{let{value:s={},onChange:t}=e,[l,a]=(0,d.useState)(Object.entries(s)),r=e=>{let s=l.filter((s,t)=>t!==e);a(s),null==t||t(Object.fromEntries(s))},i=(e,s,r)=>{let i=[...l];i[e]=[s,r],a(i),null==t||t(Object.fromEntries(i))};return(0,c.jsxs)("div",{children:[l.map((e,s)=>{let[t,l]=e;return(0,c.jsxs)(t9.Z,{style:{display:"flex",marginBottom:8},align:"center",children:[(0,c.jsx)(eW.o,{placeholder:"Header Name",value:t,onChange:e=>i(s,e.target.value,l)}),(0,c.jsx)(eW.o,{placeholder:"Header Value",value:l,onChange:e=>i(s,t,e.target.value)}),(0,c.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:(0,c.jsx)(tC.Z,{onClick:()=>r(s),style:{cursor:"pointer"}})})]},s)}),(0,c.jsx)(L.ZP,{type:"dashed",onClick:()=>{a([...l,["",""]])},icon:(0,c.jsx)(tI.Z,{}),children:"Add Header"})]})},lh=t(77565),lp=e=>{let{pathValue:s,targetValue:t,includeSubpath:l}=e,a=(0,j.getProxyBaseUrl)();return s&&t?(0,c.jsxs)(G.Z,{className:"p-5",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Route Preview"}),(0,c.jsx)(sX.Z,{className:"text-gray-600 mb-5",children:"How your requests will be routed"}),(0,c.jsxs)("div",{className:"space-y-5",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-base font-semibold text-gray-900 mb-3",children:"Basic routing:"}),(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Your endpoint"}),(0,c.jsx)("code",{className:"font-mono text-sm text-gray-900",children:s?"".concat(a).concat(s):""})]}),(0,c.jsx)("div",{className:"text-gray-400",children:(0,c.jsx)(lh.Z,{className:"text-lg"})}),(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Forwards to"}),(0,c.jsx)("code",{className:"font-mono text-sm text-gray-900",children:t})]})]})]}),l&&(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-base font-semibold text-gray-900 mb-3",children:"With subpaths:"}),(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Your endpoint + subpath"}),(0,c.jsxs)("code",{className:"font-mono text-sm text-gray-900",children:[s&&"".concat(a).concat(s),(0,c.jsx)("span",{className:"text-blue-600",children:"/v1/text-to-image/base/model"})]})]}),(0,c.jsx)("div",{className:"text-gray-400",children:(0,c.jsx)(lh.Z,{className:"text-lg"})}),(0,c.jsxs)("div",{className:"flex-1 bg-gray-50 border border-gray-200 rounded-lg p-3",children:[(0,c.jsx)("div",{className:"text-sm text-gray-600 mb-2",children:"Forwards to"}),(0,c.jsxs)("code",{className:"font-mono text-sm text-gray-900",children:[t,(0,c.jsx)("span",{className:"text-blue-600",children:"/v1/text-to-image/base/model"})]})]})]}),(0,c.jsxs)("div",{className:"mt-3 text-sm text-gray-600",children:["Any path after ",s," will be appended to the target URL"]})]})}),!l&&(0,c.jsx)("div",{className:"mt-4 p-3 bg-blue-50 rounded-md border border-blue-200",children:(0,c.jsxs)("div",{className:"flex items-start",children:[(0,c.jsx)(V.Z,{className:"text-blue-500 mt-0.5 mr-2 flex-shrink-0"}),(0,c.jsxs)("div",{className:"text-sm text-blue-700",children:[(0,c.jsx)("span",{className:"font-medium",children:"Not seeing the routing you wanted?"})," Try enabling - Include Subpaths - above - this allows subroutes like"," ",(0,c.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded font-mono text-xs",children:"/api/v1/models"})," to be forwarded automatically."]})]})})]})]}):null};let{Option:lg}=I.default;var lj=e=>{let{accessToken:s,setPassThroughItems:t,passThroughItems:l}=e,[a]=A.Z.useForm(),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(""),[x,h]=(0,d.useState)(""),[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)(!0),y=()=>{a.resetFields(),h(""),g(""),v(!0),i(!1)},N=e=>{let s=e;e&&!e.startsWith("/")&&(s="/"+e),h(s),a.setFieldsValue({path:s})},Z=async e=>{console.log("addPassThrough called with:",e),o(!0);try{console.log("formValues: ".concat(JSON.stringify(e)));let r=(await (0,j.createPassThroughEndpoint)(s,e)).endpoints[0],n=[...l,r];t(n),eo.Z.success("Pass-through endpoint created successfully"),a.resetFields(),h(""),g(""),v(!0),i(!1)}catch(e){eo.Z.fromBackend("Error creating pass-through endpoint: "+e)}finally{o(!1)}};return(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{className:"mx-auto mb-4 mt-4",onClick:()=>i(!0),children:"+ Add Pass-Through Endpoint"}),(0,c.jsx)(T.Z,{title:(0,c.jsxs)("div",{className:"flex items-center space-x-3 pb-4 border-b border-gray-100",children:[(0,c.jsx)(lu.Z,{className:"text-xl text-blue-500"}),(0,c.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add Pass-Through Endpoint"})]}),open:r,width:1e3,onCancel:y,footer:null,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,c.jsxs)("div",{className:"mt-6",children:[(0,c.jsx)(lm.Z,{message:"What is a Pass-Through Endpoint?",description:"Route requests from your LiteLLM proxy to any external API. Perfect for custom models, image generation APIs, or any service you want to proxy through LiteLLM.",type:"info",showIcon:!0,className:"mb-6"}),(0,c.jsxs)(A.Z,{form:a,onFinish:Z,layout:"vertical",className:"space-y-6",initialValues:{include_subpath:!0,path:x,target:p},children:[(0,c.jsxs)(G.Z,{className:"p-5",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Route Configuration"}),(0,c.jsx)(sX.Z,{className:"text-gray-600 mb-5",children:"Configure how requests to your domain will be forwarded to the target API"}),(0,c.jsxs)("div",{className:"space-y-5",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Path Prefix"}),name:"path",rules:[{required:!0,message:"Path is required",pattern:/^\//}],extra:(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-1",children:"Example: /bria, /adobe-photoshop, /elasticsearch"}),className:"mb-4",children:(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsx)(_.Z,{placeholder:"bria",value:x,onChange:e=>N(e.target.value),className:"flex-1"})})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Target URL"}),name:"target",rules:[{required:!0,message:"Target URL is required"},{type:"url",message:"Please enter a valid URL"}],extra:(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-1",children:"Example:https://engine.prod.bria-api.com"}),className:"mb-4",children:(0,c.jsx)(_.Z,{placeholder:"https://engine.prod.bria-api.com",value:p,onChange:e=>{g(e.target.value),a.setFieldsValue({target:e.target.value})}})}),(0,c.jsxs)("div",{className:"flex items-center justify-between py-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-sm font-medium text-gray-700",children:"Include Subpaths"}),(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-0.5",children:"Forward all subpaths to the target API (recommended for REST APIs)"})]}),(0,c.jsx)(A.Z.Item,{name:"include_subpath",valuePropName:"checked",className:"mb-0",children:(0,c.jsx)(tX.Z,{checked:f,onChange:v})})]})]})]}),(0,c.jsx)(lp,{pathValue:x,targetValue:p,includeSubpath:f}),(0,c.jsxs)(G.Z,{className:"p-6",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Headers"}),(0,c.jsx)(sX.Z,{className:"text-gray-600 mb-6",children:"Add headers that will be sent with every request to the target API"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Authentication Headers",(0,c.jsx)(B.Z,{title:"Authentication and other headers to forward with requests",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"headers",rules:[{required:!0,message:"Please configure the headers"}],extra:(0,c.jsxs)("div",{className:"text-xs text-gray-500 mt-2",children:[(0,c.jsx)("div",{className:"font-medium mb-1",children:"Add authentication tokens and other required headers"}),(0,c.jsx)("div",{children:"Common examples: auth_token, Authorization, x-api-key"})]}),children:(0,c.jsx)(lx,{})})]}),(0,c.jsxs)(G.Z,{className:"p-6",children:[(0,c.jsx)(S.Z,{className:"text-lg font-semibold text-gray-900 mb-2",children:"Billing"}),(0,c.jsx)(sX.Z,{className:"text-gray-600 mb-6",children:"Optional cost tracking for this endpoint"}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Cost Per Request (USD)",(0,c.jsx)(B.Z,{title:"Optional: Track costs for requests to this endpoint",children:(0,c.jsx)(V.Z,{className:"ml-2 text-gray-400 hover:text-gray-600"})})]}),name:"cost_per_request",extra:(0,c.jsx)("div",{className:"text-xs text-gray-500 mt-2",children:"The cost charged for each request through this endpoint"}),children:(0,c.jsx)(O,{min:0,step:.001,precision:4,placeholder:"2.0000",size:"large"})})]}),(0,c.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:y,children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",loading:n,onClick:()=>{console.log("Submit button clicked"),a.submit()},children:n?"Creating...":"Add Pass-Through Endpoint"})]})]})]})})]})},lf=t(87769),lv=t(42208);let ly=e=>{let{value:s}=e,[t,l]=(0,d.useState)(!1),a=JSON.stringify(s,null,2);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("pre",{className:"font-mono text-xs bg-gray-50 p-2 rounded max-w-md overflow-auto",children:t?a:"••••••••"}),(0,c.jsx)("button",{onClick:()=>l(!t),className:"p-1 hover:bg-gray-100 rounded",type:"button",children:t?(0,c.jsx)(lf.Z,{className:"w-4 h-4 text-gray-500"}):(0,c.jsx)(lv.Z,{className:"w-4 h-4 text-gray-500"})})]})};var lb=e=>{let{endpointData:s,onClose:t,accessToken:l,isAdmin:a,onEndpointUpdated:r}=e,[i,n]=(0,d.useState)(s),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(!1),[h]=A.Z.useForm(),p=async e=>{try{if(!l||!(null==i?void 0:i.id))return;let s={};if(e.headers)try{s="string"==typeof e.headers?JSON.parse(e.headers):e.headers}catch(e){eo.Z.fromBackend("Invalid JSON format for headers");return}let t={path:i.path,target:e.target,headers:s,include_subpath:e.include_subpath,cost_per_request:e.cost_per_request};await (0,j.updatePassThroughEndpoint)(l,i.id,t),n({...i,...t}),x(!1),r&&r()}catch(e){console.error("Error updating endpoint:",e),eo.Z.fromBackend("Failed to update pass through endpoint")}},g=async()=>{try{if(!l||!(null==i?void 0:i.id))return;await (0,j.deletePassThroughEndpointsCall)(l,i.id),eo.Z.success("Pass through endpoint deleted successfully"),t(),r&&r()}catch(e){console.error("Error deleting endpoint:",e),eo.Z.fromBackend("Failed to delete pass through endpoint")}};return o?(0,c.jsx)("div",{className:"p-4",children:"Loading..."}):i?(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(L.ZP,{onClick:t,className:"mb-4",children:"← Back"}),(0,c.jsxs)(S.Z,{children:["Pass Through Endpoint: ",i.path]}),(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:i.id})]})}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),a?(0,c.jsx)(ss.Z,{children:"Settings"},"settings"):(0,c.jsx)(c.Fragment,{})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Path"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{className:"font-mono",children:i.path})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Target"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{children:i.target})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Configuration"}),(0,c.jsxs)("div",{className:"mt-2 space-y-2",children:[(0,c.jsx)("div",{children:(0,c.jsx)(se.Z,{color:i.include_subpath?"green":"gray",children:i.include_subpath?"Include Subpath":"Exact Path"})}),void 0!==i.cost_per_request&&(0,c.jsx)("div",{children:(0,c.jsxs)(k.Z,{children:["Cost per request: $",i.cost_per_request]})})]})]})]}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(lp,{pathValue:i.path,targetValue:i.target,includeSubpath:i.include_subpath||!1})}),i.headers&&Object.keys(i.headers).length>0&&(0,c.jsxs)(G.Z,{className:"mt-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Headers"}),(0,c.jsxs)(se.Z,{color:"blue",children:[Object.keys(i.headers).length," headers configured"]})]}),(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(ly,{value:i.headers})})]})]}),a&&(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Pass Through Endpoint Settings"}),(0,c.jsx)("div",{className:"space-x-2",children:!u&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(b.Z,{onClick:()=>x(!0),children:"Edit Settings"}),(0,c.jsx)(b.Z,{onClick:g,variant:"secondary",color:"red",children:"Delete Endpoint"})]})})]}),u?(0,c.jsxs)(A.Z,{form:h,onFinish:p,initialValues:{target:i.target,headers:i.headers?JSON.stringify(i.headers,null,2):"",include_subpath:i.include_subpath||!1,cost_per_request:i.cost_per_request},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Target URL",name:"target",rules:[{required:!0,message:"Please input a target URL"}],children:(0,c.jsx)(_.Z,{placeholder:"https://api.example.com"})}),(0,c.jsx)(A.Z.Item,{label:"Headers (JSON)",name:"headers",children:(0,c.jsx)(P.default.TextArea,{rows:5,placeholder:'{"Authorization": "Bearer your-token", "Content-Type": "application/json"}'})}),(0,c.jsx)(A.Z.Item,{label:"Include Subpath",name:"include_subpath",valuePropName:"checked",children:(0,c.jsx)(eJ.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Cost per Request",name:"cost_per_request",children:(0,c.jsx)(e8.Z,{min:0,step:.01,precision:2,placeholder:"0.00",addonBefore:"$"})}),(0,c.jsxs)("div",{className:"flex justify-end gap-2 mt-6",children:[(0,c.jsx)(L.ZP,{onClick:()=>x(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{children:"Save Changes"})]})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Path"}),(0,c.jsx)("div",{className:"font-mono",children:i.path})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Target URL"}),(0,c.jsx)("div",{children:i.target})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Include Subpath"}),(0,c.jsx)(se.Z,{color:i.include_subpath?"green":"gray",children:i.include_subpath?"Yes":"No"})]}),void 0!==i.cost_per_request&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Cost per Request"}),(0,c.jsxs)("div",{children:["$",i.cost_per_request]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Headers"}),i.headers&&Object.keys(i.headers).length>0?(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(ly,{value:i.headers})}):(0,c.jsx)("div",{className:"text-gray-500",children:"No headers configured"})]})]})]})})]})]})]}):(0,c.jsx)("div",{className:"p-4",children:"Pass through endpoint not found"})},l_=t(19130);function lN(e){let{data:s=[],columns:t,getRowCanExpand:l,renderSubComponent:a,isLoading:r=!1,loadingMessage:i="\uD83D\uDE85 Loading logs...",noDataMessage:n="No logs found"}=e,o=(0,sM.b7)({data:s,columns:t,getRowCanExpand:l,getRowId:(e,s)=>{var t;return null!==(t=null==e?void 0:e.request_id)&&void 0!==t?t:String(s)},getCoreRowModel:(0,sO.sC)(),getExpandedRowModel:(0,sO.rV)()});return(0,c.jsx)("div",{className:"rounded-lg custom-border overflow-x-auto w-full max-w-full box-border",children:(0,c.jsxs)(l_.iA,{className:"[&_td]:py-0.5 [&_th]:py-1 table-fixed w-full box-border",style:{minWidth:"400px"},children:[(0,c.jsx)(l_.ss,{children:o.getHeaderGroups().map(e=>(0,c.jsx)(l_.SC,{children:e.headers.map(e=>(0,c.jsx)(l_.xs,{className:"py-1 h-8",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,c.jsx)(l_.RM,{children:r?(0,c.jsx)(l_.SC,{children:(0,c.jsx)(l_.pj,{colSpan:t.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:i})})})}):o.getRowModel().rows.length>0?o.getRowModel().rows.map(e=>(0,c.jsxs)(d.Fragment,{children:[(0,c.jsx)(l_.SC,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(l_.pj,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap",children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))}),e.getIsExpanded()&&(0,c.jsx)(l_.SC,{children:(0,c.jsx)(l_.pj,{colSpan:e.getVisibleCells().length,className:"p-0",children:(0,c.jsx)("div",{className:"w-full max-w-full overflow-hidden box-border",children:a({row:e})})})})]},e.id)):(0,c.jsx)(l_.SC,{children:(0,c.jsx)(l_.pj,{colSpan:t.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:n})})})})})]})})}let lZ=e=>{let{value:s}=e,[t,l]=(0,d.useState)(!1),a=JSON.stringify(s);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("span",{className:"font-mono text-xs",children:t?a:"••••••••"}),(0,c.jsx)("button",{onClick:()=>l(!t),className:"p-1 hover:bg-gray-100 rounded",type:"button",children:t?(0,c.jsx)(lf.Z,{className:"w-4 h-4 text-gray-500"}):(0,c.jsx)(lv.Z,{className:"w-4 h-4 text-gray-500"})})]})};var lw=e=>{let{accessToken:s,userRole:t,userID:l,modelData:a}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(null);(0,d.useEffect)(()=>{s&&t&&l&&(0,j.getPassThroughEndpointsCall)(s).then(e=>{i(e.endpoints)})},[s,t,l]);let p=async e=>{h(e),u(!0)},g=async()=>{if(null!=x&&s){try{await (0,j.deletePassThroughEndpointsCall)(s,x);let e=r.filter(e=>e.id!==x);i(e),eo.Z.success("Endpoint deleted successfully.")}catch(e){console.error("Error deleting the endpoint:",e),eo.Z.fromBackend("Error deleting the endpoint: "+e)}u(!1),h(null)}},f=(e,s)=>{p(e)},v=[{header:"ID",accessorKey:"id",cell:e=>(0,c.jsx)(B.Z,{title:e.row.original.id,children:(0,c.jsx)("div",{className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",onClick:()=>e.row.original.id&&o(e.row.original.id),children:e.row.original.id})})},{header:"Path",accessorKey:"path"},{header:"Target",accessorKey:"target",cell:e=>(0,c.jsx)(k.Z,{children:e.getValue()})},{header:"Headers",accessorKey:"headers",cell:e=>(0,c.jsx)(lZ,{value:e.getValue()||{}})},{header:"Actions",id:"actions",cell:e=>{let{row:s}=e;return(0,c.jsxs)("div",{className:"flex space-x-1",children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>s.original.id&&o(s.original.id),title:"Edit"}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>f(s.original.id,s.index),title:"Delete"})]})}}];if(!s)return null;if(n){console.log("selectedEndpointId",n),console.log("generalSettings",r);let e=r.find(e=>e.id===n);return e?(0,c.jsx)(lb,{endpointData:e,onClose:()=>o(null),accessToken:s,isAdmin:"Admin"===t||"admin"===t,onEndpointUpdated:()=>{s&&(0,j.getPassThroughEndpointsCall)(s).then(e=>{i(e.endpoints)})}}):(0,c.jsx)("div",{children:"Endpoint not found"})}return(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Pass Through Endpoints"}),(0,c.jsx)(k.Z,{className:"text-tremor-content",children:"Configure and manage your pass-through endpoints"})]}),(0,c.jsx)(lj,{accessToken:s,setPassThroughItems:i,passThroughItems:r}),(0,c.jsx)(lN,{data:r,columns:v,renderSubComponent:()=>(0,c.jsx)("div",{}),getRowCanExpand:()=>!1,isLoading:!1,noDataMessage:"No pass-through endpoints configured"}),m&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Pass-Through Endpoint"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this pass-through endpoint? This action cannot be undone."})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:g,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{u(!1),h(null)},children:"Cancel"})]})]})]})})]})},lk=e=>{let{accessToken:s,initialModelGroupAlias:t={},onAliasUpdate:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)({aliasName:"",targetModelGroup:""}),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!0);(0,d.useEffect)(()=>{r(Object.entries(t).map((e,s)=>{let[t,l]=e;return{id:"".concat(s,"-").concat(t),aliasName:t,targetModelGroup:l}}))},[t]);let h=async e=>{if(!s)return console.error("Access token is missing"),!1;try{let t={};return e.forEach(e=>{t[e.aliasName]=e.targetModelGroup}),console.log("Saving model group alias:",t),await (0,j.setCallbacksCall)(s,{router_settings:{model_group_alias:t}}),l&&l(t),!0}catch(e){return console.error("Failed to save model group alias settings:",e),eo.Z.fromBackend("Failed to save model group alias settings"),!1}},p=async()=>{if(!i.aliasName||!i.targetModelGroup){eo.Z.fromBackend("Please provide both alias name and target model group");return}if(a.some(e=>e.aliasName===i.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=[...a,{id:"".concat(Date.now(),"-").concat(i.aliasName),aliasName:i.aliasName,targetModelGroup:i.targetModelGroup}];await h(e)&&(r(e),n({aliasName:"",targetModelGroup:""}),eo.Z.success("Alias added successfully"))},g=e=>{m({...e})},f=async()=>{if(!o)return;if(!o.aliasName||!o.targetModelGroup){eo.Z.fromBackend("Please provide both alias name and target model group");return}if(a.some(e=>e.id!==o.id&&e.aliasName===o.aliasName)){eo.Z.fromBackend("An alias with this name already exists");return}let e=a.map(e=>e.id===o.id?o:e);await h(e)&&(r(e),m(null),eo.Z.success("Alias updated successfully"))},v=()=>{m(null)},y=async e=>{let s=a.filter(s=>s.id!==e);await h(s)&&(r(s),eo.Z.success("Alias deleted successfully"))},b=a.reduce((e,s)=>(e[s.aliasName]=s.targetModelGroup,e),{});return(0,c.jsxs)(eB.Zb,{className:"mb-6",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between cursor-pointer",onClick:()=>x(!u),children:[(0,c.jsxs)("div",{className:"flex flex-col",children:[(0,c.jsx)(eB.Dx,{className:"mb-0",children:"Model Group Alias Settings"}),(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Create aliases for your model groups to simplify API calls. For example, you can create an alias 'gpt-4o' that points to 'gpt-4o-mini-openai' model group."})]}),(0,c.jsx)("div",{className:"flex items-center",children:u?(0,c.jsx)(sB.Z,{className:"w-5 h-5 text-gray-500"}):(0,c.jsx)(sK.Z,{className:"w-5 h-5 text-gray-500"})})]}),u&&(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(eB.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Add New Alias"}),(0,c.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Alias Name"}),(0,c.jsx)("input",{type:"text",value:i.aliasName,onChange:e=>n({...i,aliasName:e.target.value}),placeholder:"e.g., gpt-4o",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"block text-xs text-gray-500 mb-1",children:"Target Model Group"}),(0,c.jsx)("input",{type:"text",value:i.targetModelGroup,onChange:e=>n({...i,targetModelGroup:e.target.value}),placeholder:"e.g., gpt-4o-mini-openai",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),(0,c.jsx)("div",{className:"flex items-end",children:(0,c.jsxs)("button",{onClick:p,disabled:!i.aliasName||!i.targetModelGroup,className:"flex items-center px-4 py-2 rounded-md text-sm ".concat(i.aliasName&&i.targetModelGroup?"bg-green-600 text-white hover:bg-green-700":"bg-gray-300 text-gray-500 cursor-not-allowed"),children:[(0,c.jsx)(eq.Z,{className:"w-4 h-4 mr-1"}),"Add Alias"]})})]})]}),(0,c.jsx)(eB.xv,{className:"text-sm font-medium text-gray-700 mb-2",children:"Manage Existing Aliases"}),(0,c.jsx)("div",{className:"rounded-lg custom-border relative mb-6",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(eB.iA,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(eB.ss,{children:(0,c.jsxs)(eB.SC,{children:[(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Alias Name"}),(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Target Model Group"}),(0,c.jsx)(eB.xs,{className:"py-1 h-8",children:"Actions"})]})}),(0,c.jsxs)(eB.RM,{children:[a.map(e=>(0,c.jsx)(eB.SC,{className:"h-8",children:o&&o.id===e.id?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eB.pj,{className:"py-0.5",children:(0,c.jsx)("input",{type:"text",value:o.aliasName,onChange:e=>m({...o,aliasName:e.target.value}),className:"w-full px-2 py-1 border border-gray-300 rounded-md text-sm"})}),(0,c.jsx)(eB.pj,{className:"py-0.5",children:(0,c.jsx)("input",{type:"text",value:o.targetModelGroup,onChange:e=>m({...o,targetModelGroup:e.target.value}),className:"w-full px-2 py-1 border border-gray-300 rounded-md text-sm"})}),(0,c.jsx)(eB.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:f,className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:"Save"}),(0,c.jsx)("button",{onClick:v,className:"text-xs bg-gray-50 text-gray-600 px-2 py-1 rounded hover:bg-gray-100",children:"Cancel"})]})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(eB.pj,{className:"py-0.5 text-sm text-gray-900",children:e.aliasName}),(0,c.jsx)(eB.pj,{className:"py-0.5 text-sm text-gray-500",children:e.targetModelGroup}),(0,c.jsx)(eB.pj,{className:"py-0.5 whitespace-nowrap",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>g(e),className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded hover:bg-blue-100",children:(0,c.jsx)(eV.Z,{className:"w-3 h-3"})}),(0,c.jsx)("button",{onClick:()=>y(e.id),className:"text-xs bg-red-50 text-red-600 px-2 py-1 rounded hover:bg-red-100",children:(0,c.jsx)(W.Z,{className:"w-3 h-3"})})]})})]})},e.id)),0===a.length&&(0,c.jsx)(eB.SC,{children:(0,c.jsx)(eB.pj,{colSpan:3,className:"py-0.5 text-sm text-gray-500 text-center",children:"No aliases added yet. Add a new alias above."})})]})]})})}),(0,c.jsxs)(eB.Zb,{children:[(0,c.jsx)(eB.Dx,{className:"mb-4",children:"Configuration Example"}),(0,c.jsx)(eB.xv,{className:"text-gray-600 mb-4",children:"Here's how your current aliases would look in the config.yaml:"}),(0,c.jsx)("div",{className:"bg-gray-100 rounded-lg p-4 font-mono text-sm",children:(0,c.jsxs)("div",{className:"text-gray-700",children:["router_settings:",(0,c.jsx)("br",{}),"\xa0\xa0model_group_alias:",0===Object.keys(b).length?(0,c.jsxs)("span",{className:"text-gray-500",children:[(0,c.jsx)("br",{}),"\xa0\xa0\xa0\xa0# No aliases configured yet"]}):Object.entries(b).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{children:[(0,c.jsx)("br",{}),'\xa0\xa0\xa0\xa0"',s,'": "',t,'"']},s)})]})})]})]})]})};let lS={"BadRequestError (400)":"BadRequestErrorRetries","AuthenticationError (401)":"AuthenticationErrorRetries","TimeoutError (408)":"TimeoutErrorRetries","RateLimitError (429)":"RateLimitErrorRetries","ContentPolicyViolationError (400)":"ContentPolicyViolationErrorRetries","InternalServerError (500)":"InternalServerErrorRetries"};var lC=e=>{let{accessToken:s,token:t,userRole:l,userID:a,modelData:r={data:[]},keys:i,setModelData:n,premiumUser:o,teams:m}=e,[u]=A.Z.useForm(),[x]=A.Z.useForm(),[h,p]=(0,d.useState)(null),[g,f]=(0,d.useState)(""),[_,N]=(0,d.useState)([]),[Z,w]=(0,d.useState)([]),[C,I]=(0,d.useState)(s0.Cl.OpenAI),[T,E]=(0,d.useState)(null),[L,P]=(0,d.useState)(!1),[M,O]=(0,d.useState)(!1),[D,F]=(0,d.useState)(null),[R,z]=(0,d.useState)([]),[U,q]=(0,d.useState)([]),[B,K]=(0,d.useState)(null),[H,Y]=(0,d.useState)([]),[J,W]=(0,d.useState)([]),[$,Q]=(0,d.useState)([]),[X,ee]=(0,d.useState)([]),[es,et]=(0,d.useState)([]),[el,ea]=(0,d.useState)([]),[er,ec]=(0,d.useState)([]),[ed,em]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[eu,ex]=(0,d.useState)(null),[eh,ep]=(0,d.useState)(null),[eg,ej]=(0,d.useState)(0),[ef,ev]=(0,d.useState)({}),[ey,eb]=(0,d.useState)([]),[e_,eN]=(0,d.useState)(!1),[eZ,ew]=(0,d.useState)(null),[ek,eS]=(0,d.useState)(null),[eC,eA]=(0,d.useState)([]),[eT,eE]=(0,d.useState)([]),[eL,eP]=(0,d.useState)({}),[eM,eO]=(0,d.useState)(!1),[eD,eF]=(0,d.useState)(null),[eR,ez]=(0,d.useState)(!1),[eU,eq]=(0,d.useState)(null),[eV,eB]=(0,d.useState)(null),[eK,eG]=(0,d.useState)(null),[eH,eY]=(0,d.useState)(null),[eJ,eW]=(0,d.useState)(""),[e$,eQ]=(0,d.useState)("personal"),[eX,e0]=(0,d.useState)("current_team"),[e1,e2]=(0,d.useState)(!1),[e4,e5]=(0,d.useState)(!1),[e3,e6]=(0,d.useState)(!1),[e7,se]=(0,d.useState)(new Set),si=(0,d.useRef)(null),so=(0,d.useRef)(null),[sc,sd]=(0,d.useState)({pageIndex:0,pageSize:50}),[sm,su]=(0,d.useState)(0),sx=(0,d.useMemo)(()=>r&&r.data&&0!==r.data.length?r.data.filter(e=>{var s,t,l,a,r;let i=""===eJ||e.model_name.toLowerCase().includes(eJ.toLowerCase()),n="all"===B||e.model_name===B||!B||"wildcard"===B&&(null===(s=e.model_name)||void 0===s?void 0:s.includes("*")),o="all"===eH||(null===(t=e.model_info.access_groups)||void 0===t?void 0:t.includes(eH))||!eH,c=!0;return"current_team"===eX&&(c="personal"===e$?(null===(l=e.model_info)||void 0===l?void 0:l.direct_access)===!0:(null===(r=e.model_info)||void 0===r?void 0:null===(a=r.access_via_team_ids)||void 0===a?void 0:a.includes(e$))===!0),i&&n&&o&&c}):[],[r,eJ,B,eH,e$,eX]),sh=(0,d.useMemo)(()=>{let e=sc.pageIndex*sc.pageSize,s=e+sc.pageSize;return sx.slice(e,s)},[sx,sc.pageIndex,sc.pageSize]);(0,d.useEffect)(()=>{sd(e=>({...e,pageIndex:0}))},[eJ,B,eH,e$,eX]);let sp=async(e,t,r)=>{if(console.log("Updating model metrics for group:",e),!s||!a||!l||!t||!r)return;console.log("inside updateModelMetrics - startTime:",t,"endTime:",r),K(e);let i=null==eZ?void 0:eZ.token;void 0===i&&(i=null);let n=ek;void 0===n&&(n=null);try{let o=await (0,j.modelMetricsCall)(s,a,l,e,t.toISOString(),r.toISOString(),i,n);console.log("Model metrics response:",o),Y(o.data),W(o.all_api_bases);let c=await (0,j.streamingModelMetricsCall)(s,e,t.toISOString(),r.toISOString());Q(c.data),ee(c.all_api_bases);let d=await (0,j.modelExceptionsCall)(s,a,l,e,t.toISOString(),r.toISOString(),i,n);console.log("Model exceptions response:",d),et(d.data),ea(d.exception_types);let m=await (0,j.modelMetricsSlowResponsesCall)(s,a,l,e,t.toISOString(),r.toISOString(),i,n);if(console.log("slowResponses:",m),ec(m),e){let l=await (0,j.adminGlobalActivityExceptions)(s,null==t?void 0:t.toISOString().split("T")[0],null==r?void 0:r.toISOString().split("T")[0],e);ev(l);let a=await (0,j.adminGlobalActivityExceptionsPerDeployment)(s,null==t?void 0:t.toISOString().split("T")[0],null==r?void 0:r.toISOString().split("T")[0],e);eb(a)}}catch(e){console.error("Failed to fetch model metrics",e)}},sg=async e=>{try{let s=await (0,j.credentialListCall)(e);console.log("credentials: ".concat(JSON.stringify(s))),eE(s.credentials)}catch(e){console.error("Error fetching credentials:",e)}};(0,d.useEffect)(()=>{sp(B,ed.from,ed.to)},[eZ,ek,eV]),(0,d.useEffect)(()=>{let e=e=>{si.current&&!si.current.contains(e.target)&&e6(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let sj={name:"file",accept:".json",beforeUpload:e=>{if("application/json"===e.type){let s=new FileReader;s.onload=e=>{if(e.target){let s=e.target.result;console.log("Resetting vertex_credentials to JSON; jsonStr: ".concat(s)),u.setFieldsValue({vertex_credentials:s}),console.log("Form values right after setting:",u.getFieldsValue())}},s.readAsText(e)}return!1},onChange(e){console.log("Upload onChange triggered with values:",e),console.log("Current form values:",u.getFieldsValue()),"uploading"!==e.file.status&&console.log(e.file,e.fileList),"done"===e.file.status?eo.Z.success("".concat(e.file.name," file uploaded successfully")):"error"===e.file.status&&eo.Z.fromBackend("".concat(e.file.name," file upload failed."))}},sf=()=>{f(new Date().toLocaleString())},sv=async()=>{if(!s){console.error("Access token is missing");return}try{let e={router_settings:{}};"global"===B?(console.log("Saving global retry policy:",eh),eh&&(e.router_settings.retry_policy=eh),eo.Z.success("Global retry settings saved successfully")):(console.log("Saving model group retry policy for",B,":",eu),eu&&(e.router_settings.model_group_retry_policy=eu),eo.Z.success("Retry settings saved successfully for ".concat(B))),await (0,j.setCallbacksCall)(s,e)}catch(e){console.error("Failed to save retry settings:",e),eo.Z.fromBackend("Failed to save retry settings")}};if((0,d.useEffect)(()=>{if(!s||!t||!l||!a)return;let e=async()=>{try{var e,t,r,i,o,c,d,m,u,x,h,p;let g=await (0,j.modelInfoCall)(s,a,l);console.log("Model data response:",g.data),n(g);let f=await (0,j.modelSettingsCall)(s);f&&w(f);let v=new Set;for(let e=0;e0&&(_=y[y.length-1],console.log("_initial_model_group:",_)),console.log("selectedModelGroup:",B);let N=await (0,j.modelMetricsCall)(s,a,l,_,null===(e=ed.from)||void 0===e?void 0:e.toISOString(),null===(t=ed.to)||void 0===t?void 0:t.toISOString(),null==eZ?void 0:eZ.token,ek);console.log("Model metrics response:",N),Y(N.data),W(N.all_api_bases);let Z=await (0,j.streamingModelMetricsCall)(s,_,null===(r=ed.from)||void 0===r?void 0:r.toISOString(),null===(i=ed.to)||void 0===i?void 0:i.toISOString());Q(Z.data),ee(Z.all_api_bases);let k=await (0,j.modelExceptionsCall)(s,a,l,_,null===(o=ed.from)||void 0===o?void 0:o.toISOString(),null===(c=ed.to)||void 0===c?void 0:c.toISOString(),null==eZ?void 0:eZ.token,ek);console.log("Model exceptions response:",k),et(k.data),ea(k.exception_types);let S=await (0,j.modelMetricsSlowResponsesCall)(s,a,l,_,null===(d=ed.from)||void 0===d?void 0:d.toISOString(),null===(m=ed.to)||void 0===m?void 0:m.toISOString(),null==eZ?void 0:eZ.token,ek),C=await (0,j.adminGlobalActivityExceptions)(s,null===(u=ed.from)||void 0===u?void 0:u.toISOString().split("T")[0],null===(x=ed.to)||void 0===x?void 0:x.toISOString().split("T")[0],_);ev(C);let I=await (0,j.adminGlobalActivityExceptionsPerDeployment)(s,null===(h=ed.from)||void 0===h?void 0:h.toISOString().split("T")[0],null===(p=ed.to)||void 0===p?void 0:p.toISOString().split("T")[0],_);eb(I),console.log("dailyExceptions:",C),console.log("dailyExceptionsPerDeplyment:",I),console.log("slowResponses:",S),ec(S);let A=await (0,j.allEndUsersCall)(s);eA(null==A?void 0:A.map(e=>e.user_id));let T=(await (0,j.getCallbacksCall)(s,a,l)).router_settings;console.log("routerSettingsInfo:",T);let E=T.model_group_retry_policy,L=T.num_retries;console.log("model_group_retry_policy:",E),console.log("default_retries:",L),ex(E),ep(T.retry_policy),ej(L);let P=T.model_group_alias||{};eP(P)}catch(e){console.error("There was an error fetching the model data",e)}};s&&t&&l&&a&&e();let r=async()=>{let e=await (0,j.modelCostMap)(s);console.log("received model cost map data: ".concat(Object.keys(e))),p(e)};null==h&&r(),sf()},[s,t,l,a,h,g,eV]),!r||!s||!t||!l||!a)return(0,c.jsx)("div",{children:"Loading..."});let sy=[],sb=[];for(let e=0;e(console.log("GET PROVIDER CALLED! - ".concat(h)),null!=h&&"object"==typeof h&&e in h)?h[e].litellm_provider:"openai";if(t){let e=t.split("/"),s=e[0];(i=l)||(i=1===e.length?u(t):s)}else i="-";a&&(n=null==a?void 0:a.input_cost_per_token,o=null==a?void 0:a.output_cost_per_token,c=null==a?void 0:a.max_tokens,d=null==a?void 0:a.max_input_tokens),(null==s?void 0:s.litellm_params)&&(m=Object.fromEntries(Object.entries(null==s?void 0:s.litellm_params).filter(e=>{let[s]=e;return"model"!==s&&"api_base"!==s}))),r.data[e].provider=i,r.data[e].input_cost=n,r.data[e].output_cost=o,r.data[e].litellm_model_name=t,sb.push(i),r.data[e].input_cost&&(r.data[e].input_cost=(1e6*Number(r.data[e].input_cost)).toFixed(2)),r.data[e].output_cost&&(r.data[e].output_cost=(1e6*Number(r.data[e].output_cost)).toFixed(2)),r.data[e].max_tokens=c,r.data[e].max_input_tokens=d,r.data[e].api_base=null==s?void 0:null===(sZ=s.litellm_params)||void 0===sZ?void 0:sZ.api_base,r.data[e].cleanedLitellmParams=m,sy.push(s.model_name),console.log(r.data[e])}if(l&&"Admin Viewer"==l){let{Title:e,Paragraph:s}=en.default;return(0,c.jsxs)("div",{children:[(0,c.jsx)(e,{level:1,children:"Access Denied"}),(0,c.jsx)(s,{children:"Ask your proxy admin for access to view all models"})]})}let sw=(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mb-1",children:"Select API Key Name"}),o?(0,c.jsxs)("div",{children:[(0,c.jsxs)(e9.Z,{defaultValue:"all-keys",children:[(0,c.jsx)(ei.Z,{value:"all-keys",onClick:()=>{ew(null)},children:"All Keys"},"all-keys"),null==i?void 0:i.map((e,s)=>e&&null!==e.key_alias&&e.key_alias.length>0?(0,c.jsx)(ei.Z,{value:String(s),onClick:()=>{ew(e)},children:e.key_alias},s):null)]}),(0,c.jsx)(k.Z,{className:"mt-1",children:"Select Customer Name"}),(0,c.jsxs)(e9.Z,{defaultValue:"all-customers",children:[(0,c.jsx)(ei.Z,{value:"all-customers",onClick:()=>{eS(null)},children:"All Customers"},"all-customers"),null==eC?void 0:eC.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,onClick:()=>{eS(e)},children:e},s))]}),(0,c.jsx)(k.Z,{className:"mt-1",children:"Select Team"}),(0,c.jsxs)(e9.Z,{className:"w-64 relative z-50",defaultValue:"all",value:null!=eK?eK:"all",onValueChange:e=>eG("all"===e?null:e),children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Teams"}),null==m?void 0:m.filter(e=>e.team_id).map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:e.team_alias?"".concat(e.team_alias," (").concat(e.team_id.slice(0,8),"...)"):"Team ".concat(e.team_id.slice(0,8),"...")},e.team_id))]})]}):(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mt-1",children:"Select Team"}),(0,c.jsxs)(e9.Z,{className:"w-64 relative z-50",defaultValue:"all",value:null!=eK?eK:"all",onValueChange:e=>eG("all"===e?null:e),children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Teams"}),null==m?void 0:m.filter(e=>e.team_id).map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:e.team_alias?"".concat(e.team_alias," (").concat(e.team_id.slice(0,8),"...)"):"Team ".concat(e.team_id.slice(0,8),"...")},e.team_id))]})]})]}),sk=e=>{var s,t;let{payload:l,active:a}=e;if(!a||!l)return null;let r=null===(t=l[0])||void 0===t?void 0:null===(s=t.payload)||void 0===s?void 0:s.date,i=l.sort((e,s)=>s.value-e.value);if(i.length>5){let e=i.length-5;(i=i.slice(0,5)).push({dataKey:"".concat(e," other deployments"),value:l.slice(5).reduce((e,s)=>e+s.value,0),color:"gray"})}return(0,c.jsxs)("div",{className:"w-150 rounded-tremor-default border border-tremor-border bg-tremor-background p-2 text-tremor-default shadow-tremor-dropdown",children:[r&&(0,c.jsxs)("p",{className:"text-tremor-content-emphasis mb-2",children:["Date: ",r]}),i.map((e,s)=>{let t=parseFloat(e.value.toFixed(5)),l=0===t&&e.value>0?"<0.00001":t.toFixed(5);return(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 mt-1 rounded-full bg-".concat(e.color,"-500")}),(0,c.jsx)("p",{className:"text-tremor-content",children:e.dataKey})]}),(0,c.jsx)("p",{className:"font-medium text-tremor-content-emphasis text-righ ml-2",children:l})]},s)})]})};console.log("selectedProvider: ".concat(C)),console.log("providerModels.length: ".concat(_.length));let sS=Object.keys(s0.Cl).find(e=>s0.Cl[e]===C);return(sS&&Z&&Z.find(e=>e.name===s0.fK[sS]),eU)?(0,c.jsx)("div",{className:"w-full h-full",children:(0,c.jsx)(tN,{teamId:eU,onClose:()=>eq(null),accessToken:s,is_team_admin:"Admin"===l,is_proxy_admin:"Proxy Admin"===l,userModels:sy,editTeam:!1,onUpdate:sf})}):(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("h2",{className:"text-lg font-semibold",children:"Model Management"}),eI.ZL.includes(l)?(0,c.jsx)("p",{className:"text-sm text-gray-600",children:"Add and manage models for the proxy"}):(0,c.jsx)("p",{className:"text-sm text-gray-600",children:"Add models for teams you are an admin for."})]})}),eD?(0,c.jsx)(tR,{modelId:eD,editModel:!0,onClose:()=>{eF(null),ez(!1)},modelData:r.data.find(e=>e.model_info.id===eD),accessToken:s,userID:a,userRole:l,setEditModalVisible:O,setSelectedModel:F,onModelUpdate:e=>{n({...r,data:r.data.map(s=>s.model_info.id===e.model_info.id?e:s)}),sf()},modelAccessGroups:U}):(0,c.jsxs)(st.Z,{index:sm,onIndexChange:su,className:"gap-2 h-[75vh] w-full ",children:[(0,c.jsxs)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsxs)("div",{className:"flex",children:[eI.ZL.includes(l)?(0,c.jsx)(ss.Z,{children:"All Models"}):(0,c.jsx)(ss.Z,{children:"Your Models"}),(0,c.jsx)(ss.Z,{children:"Add Model"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"LLM Credentials"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Pass-Through Endpoints"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Health Status"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Model Analytics"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Model Retry Settings"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Model Group Alias"}),eI.ZL.includes(l)&&(0,c.jsx)(ss.Z,{children:"Price Data Reload"})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[g&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",g]}),(0,c.jsx)(sD.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center",onClick:sf})]})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(y.Z,{children:(0,c.jsx)("div",{className:"flex flex-col space-y-4",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsxs)("div",{className:"border-b px-6 py-4 bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold text-gray-900",children:"Current Team:"}),(0,c.jsxs)(e9.Z,{className:"w-80",defaultValue:"personal",value:e$,onValueChange:e=>eQ(e),children:[(0,c.jsx)(ei.Z,{value:"personal",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"Personal"})]})}),null==m?void 0:m.filter(e=>e.team_id).map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e.team_alias?"".concat(e.team_alias.slice(0,30),"..."):"Team ".concat(e.team_id.slice(0,30),"...")})]})},e.team_id))]})]}),(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold text-gray-900",children:"View:"}),(0,c.jsxs)(e9.Z,{className:"w-64",defaultValue:"current_team",value:eX,onValueChange:e=>e0(e),children:[(0,c.jsx)(ei.Z,{value:"current_team",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-purple-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"Current Team Models"})]})}),(0,c.jsx)(ei.Z,{value:"all",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-gray-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"All Available Models"})]})})]})]})]}),"current_team"===eX&&(0,c.jsxs)("div",{className:"flex items-start gap-2 mt-3",children:[(0,c.jsx)(V.Z,{className:"text-gray-400 mt-0.5 flex-shrink-0 text-xs"}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:"personal"===e$?(0,c.jsxs)("span",{children:["To access these models: Create a Virtual Key without selecting a team on the"," ",(0,c.jsx)("a",{href:"/?login=success&page=api-keys",className:"text-gray-600 hover:text-gray-800 underline",children:"Virtual Keys page"})]}):(0,c.jsxs)("span",{children:['To access these models: Create a Virtual Key and select Team as "',e$,'" on the'," ",(0,c.jsx)("a",{href:"/?login=success&page=api-keys",className:"text-gray-600 hover:text-gray-800 underline",children:"Virtual Keys page"})]})})]})]}),(0,c.jsx)("div",{className:"border-b px-6 py-4",children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search model names...",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:eJ,onChange:e=>eW(e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 ".concat(e1?"bg-gray-100":""),onClick:()=>e2(!e1),children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filters"]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",onClick:()=>{eW(""),K("all"),eY(null),eQ("personal"),e0("current_team"),sd({pageIndex:0,pageSize:50})},children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Reset Filters"]})]}),e1&&(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-3",children:[(0,c.jsx)("div",{className:"w-64",children:(0,c.jsxs)(e9.Z,{value:null!=B?B:"all",onValueChange:e=>K("all"===e?"all":e),placeholder:"Filter by Public Model Name",children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Models"}),(0,c.jsx)(ei.Z,{value:"wildcard",children:"Wildcard Models (*)"}),R.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,children:e},s))]})}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsxs)(e9.Z,{value:null!=eH?eH:"all",onValueChange:e=>eY("all"===e?null:e),placeholder:"Filter by Model Access Group",children:[(0,c.jsx)(ei.Z,{value:"all",children:"All Model Access Groups"}),U.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,children:e},s))]})})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-sm text-gray-700",children:sx.length>0?"Showing ".concat(sc.pageIndex*sc.pageSize+1," - ").concat(Math.min((sc.pageIndex+1)*sc.pageSize,sx.length)," of ").concat(sx.length," results"):"Showing 0 results"}),sx.length>sc.pageSize&&(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("button",{onClick:()=>sd(e=>({...e,pageIndex:e.pageIndex-1})),disabled:0===sc.pageIndex,className:"px-3 py-1 text-sm border rounded-md ".concat(0===sc.pageIndex?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Previous"}),(0,c.jsx)("button",{onClick:()=>sd(e=>({...e,pageIndex:e.pageIndex+1})),disabled:sc.pageIndex>=Math.ceil(sx.length/sc.pageSize)-1,className:"px-3 py-1 text-sm border rounded-md ".concat(sc.pageIndex>=Math.ceil(sx.length/sc.pageSize)-1?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Next"})]})]})]})}),(0,c.jsx)(t8.C,{columns:t7(l,a,o,eF,eq,ta,e=>{F(e),O(!0)},sf,ez,e7,se),data:sh,isLoading:!1,table:so})]})})})}),(0,c.jsx)(sa.Z,{className:"h-full",children:(0,c.jsx)(t6,{form:u,handleOk:()=>{console.log("\uD83D\uDE80 handleOk called from model dashboard!"),console.log("Current form values:",u.getFieldsValue()),u.validateFields().then(e=>{console.log("✅ Validation passed, submitting:",e),s2(e,s,u,sf)}).catch(e=>{var s;console.error("❌ Validation failed:",e),console.error("Form errors:",e.errorFields);let t=(null===(s=e.errorFields)||void 0===s?void 0:s.map(e=>"".concat(e.name.join("."),": ").concat(e.errors.join(", "))).join(" | "))||"Unknown validation error";eo.Z.fromBackend("Please fill in the following required fields: ".concat(t))})},selectedProvider:C,setSelectedProvider:I,providerModels:_,setProviderModelsFn:e=>{let s=(0,s0.bK)(e,h);N(s),console.log("providerModels: ".concat(s))},getPlaceholder:s0.ph,uploadProps:sj,showAdvancedSettings:eM,setShowAdvancedSettings:eO,teams:m,credentials:eT,accessToken:s,userRole:l,premiumUser:o})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(tl,{accessToken:s,uploadProps:sj,credentialList:eT,fetchCredentials:sg})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lw,{accessToken:s,userRole:l,userID:a,modelData:r})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(ld,{accessToken:s,modelData:r,all_models_on_proxy:sy,getDisplayModelName:ta,setSelectedModelId:eF})}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:4,className:"mt-2 mb-2",children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(ti,{value:ed,className:"mr-2",onValueChange:e=>{em(e),sp(B,e.from,e.to)}})}),(0,c.jsxs)(v.Z,{className:"ml-2",children:[(0,c.jsx)(k.Z,{children:"Select Model Group"}),(0,c.jsx)(e9.Z,{defaultValue:B||R[0],value:B||R[0],children:R.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,onClick:()=>sp(e,ed.from,ed.to),children:e},s))})]}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(tc.Z,{trigger:"click",content:sw,overlayStyle:{width:"20vw"},children:(0,c.jsx)(b.Z,{icon:sC.Z,size:"md",variant:"secondary",className:"mt-4 ml-2",style:{border:"none"},onClick:()=>eN(!0)})})})]}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(G.Z,{className:"mr-2 max-h-[400px] min-h-[400px]",children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"line",defaultValue:"1",children:[(0,c.jsx)(ss.Z,{value:"1",children:"Avg. Latency per Token"}),(0,c.jsx)(ss.Z,{value:"2",children:"Time to first token"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("p",{className:"text-gray-500 italic",children:" (seconds/token)"}),(0,c.jsx)(k.Z,{className:"text-gray-500 italic mt-1 mb-1",children:"average Latency for successfull requests divided by the total tokens"}),H&&J&&(0,c.jsx)(tn.Z,{title:"Model Latency",className:"h-72",data:H,showLegend:!1,index:"date",categories:J,connectNulls:!0,customTooltip:sk})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(tm,{modelMetrics:$,modelMetricsCategories:X,customTooltip:sk,premiumUser:o})})]})]})})}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(G.Z,{className:"ml-2 max-h-[400px] min-h-[400px] overflow-y-auto",children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Deployment"}),(0,c.jsx)(sq.Z,{children:"Success Responses"}),(0,c.jsxs)(sq.Z,{children:["Slow Responses ",(0,c.jsx)("p",{children:"Success Responses taking 600+s"})]})]})}),(0,c.jsx)(sR.Z,{children:er.map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e.api_base}),(0,c.jsx)(sz.Z,{children:e.total_count}),(0,c.jsx)(sz.Z,{children:e.slow_count})]},s))})]})})})]}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 w-full mt-2",children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(S.Z,{children:["All Exceptions for ",B]}),(0,c.jsx)(to.Z,{className:"h-60",data:es,index:"model",categories:el,stack:!0,yAxisWidth:30})]})}),(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full mt-2",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(S.Z,{children:["All Up Rate Limit Errors (429) for ",B]}),(0,c.jsxs)(y.Z,{numItems:1,children:[(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Num Rate Limit Errors ",ef.sum_num_rate_limit_exceptions]}),(0,c.jsx)(to.Z,{className:"h-40",data:ef.daily_data,index:"date",colors:["rose"],categories:["num_rate_limit_exceptions"],onValueChange:e=>console.log(e)})]}),(0,c.jsx)(v.Z,{})]})]}),o?(0,c.jsx)(c.Fragment,{children:ey.map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:e.api_base?e.api_base:"Unknown API Base"}),(0,c.jsx)(y.Z,{numItems:1,children:(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Num Rate Limit Errors (429) ",e.sum_num_rate_limit_exceptions]}),(0,c.jsx)(to.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["rose"],categories:["num_rate_limit_exceptions"],onValueChange:e=>console.log(e)})]})})]},s))}):(0,c.jsx)(c.Fragment,{children:ey&&ey.length>0&&ey.slice(0,1).map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"✨ Rate Limit Errors by Deployment"}),(0,c.jsx)("p",{className:"mb-2 text-gray-500 italic text-[12px]",children:"Upgrade to see exceptions for all deployments"}),(0,c.jsx)(b.Z,{variant:"primary",className:"mb-2",children:(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"Get Free Trial"})}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:e.api_base}),(0,c.jsx)(y.Z,{numItems:1,children:(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Num Rate Limit Errors ",e.sum_num_rate_limit_exceptions]}),(0,c.jsx)(to.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["rose"],categories:["num_rate_limit_exceptions"],onValueChange:e=>console.log(e)})]})})]})]},s))})]})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"flex items-center gap-4 mb-6",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(k.Z,{children:"Retry Policy Scope:"}),(0,c.jsxs)(e9.Z,{className:"ml-2 w-48",defaultValue:"global",value:"global"===B?"global":B||R[0],onValueChange:e=>K(e),children:[(0,c.jsx)(ei.Z,{value:"global",children:"Global Default"}),R.map((e,s)=>(0,c.jsx)(ei.Z,{value:e,onClick:()=>K(e),children:e},s))]})]})}),"global"===B?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(S.Z,{children:"Global Retry Policy"}),(0,c.jsx)(k.Z,{className:"mb-6",children:"Default retry settings applied to all model groups unless overridden"})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(S.Z,{children:["Retry Policy for ",B]}),(0,c.jsx)(k.Z,{className:"mb-6",children:"Model-specific retry settings. Falls back to global defaults if not set."})]}),lS&&(0,c.jsx)("table",{children:(0,c.jsx)("tbody",{children:Object.entries(lS).map((e,s)=>{var t,l,a,r;let i,[n,o]=e;if("global"===B)i=null!==(t=null==eh?void 0:eh[o])&&void 0!==t?t:eg;else{let e=null==eu?void 0:null===(l=eu[B])||void 0===l?void 0:l[o];i=null!=e?e:null!==(a=null==eh?void 0:eh[o])&&void 0!==a?a:eg}return(0,c.jsxs)("tr",{className:"flex justify-between items-center mt-2",children:[(0,c.jsxs)("td",{children:[(0,c.jsx)(k.Z,{children:n}),"global"!==B&&(0,c.jsxs)(k.Z,{className:"text-xs text-gray-500 ml-2",children:["(Global: ",null!==(r=null==eh?void 0:eh[o])&&void 0!==r?r:eg,")"]})]}),(0,c.jsx)("td",{children:(0,c.jsx)(e8.Z,{className:"ml-5",value:i,min:0,step:1,onChange:e=>{"global"===B?ep(s=>null==e?s:{...null!=s?s:{},[o]:e}):ex(s=>{var t;let l=null!==(t=null==s?void 0:s[B])&&void 0!==t?t:{};return{...null!=s?s:{},[B]:{...l,[o]:e}}})}})})]},s)})})}),(0,c.jsx)(b.Z,{className:"mt-6 mr-8",onClick:sv,children:"Save"})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lk,{accessToken:s,initialModelGroupAlias:eL,onAliasUpdate:eP})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)("div",{className:"p-6",children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(S.Z,{children:"Price Data Management"}),(0,c.jsx)(k.Z,{className:"text-tremor-content",children:"Manage model pricing data and configure automatic reload schedules"})]}),(0,c.jsx)(lr,{accessToken:s,onReloadSuccess:()=>{(async()=>{p(await (0,j.modelCostMap)(s))})()},buttonText:"Reload Price Data",size:"middle",type:"primary",className:"w-full"})]})})]})]})]})})})},lI=e=>{let{visible:s,possibleUIRoles:t,onCancel:l,user:a,onSubmit:r}=e,[i,n]=(0,d.useState)(a),[o]=A.Z.useForm();(0,d.useEffect)(()=>{o.resetFields()},[a]);let m=async()=>{o.resetFields(),l()},u=async e=>{r(e),o.resetFields(),l()};return a?(0,c.jsx)(T.Z,{visible:s,onCancel:m,footer:null,title:"Edit User "+a.user_id,width:1e3,children:(0,c.jsx)(A.Z,{form:o,onFinish:u,initialValues:a,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"User Email",tooltip:"Email of the User",name:"user_email",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"user_id",name:"user_id",hidden:!0,children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"User Role",name:"user_role",children:(0,c.jsx)(I.default,{children:t&&Object.entries(t).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:"Spend (USD)",name:"spend",tooltip:"(float) - Spend of all LLM calls completed by this user",help:"Across all keys (including keys with team_id).",children:(0,c.jsx)(e8.Z,{min:0,step:.01})}),(0,c.jsx)(A.Z.Item,{label:"User Budget (USD)",name:"max_budget",tooltip:"(float) - Maximum budget of this user",help:"Maximum budget of this user.",children:(0,c.jsx)(O,{min:0,step:.01})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsx)(eE,{})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})})]})})}):null},lA=t(16853);function lT(e){let{userData:s,onCancel:t,onSubmit:l,teams:a,accessToken:r,userID:i,userRole:n,userModels:o,possibleUIRoles:m,isBulkEdit:u=!1}=e,[x]=A.Z.useForm();return d.useEffect(()=>{var e,t,l,a,r,i;x.setFieldsValue({user_id:s.user_id,user_email:null===(e=s.user_info)||void 0===e?void 0:e.user_email,user_role:null===(t=s.user_info)||void 0===t?void 0:t.user_role,models:(null===(l=s.user_info)||void 0===l?void 0:l.models)||[],max_budget:null===(a=s.user_info)||void 0===a?void 0:a.max_budget,budget_duration:null===(r=s.user_info)||void 0===r?void 0:r.budget_duration,metadata:(null===(i=s.user_info)||void 0===i?void 0:i.metadata)?JSON.stringify(s.user_info.metadata,null,2):void 0})},[s,x]),(0,c.jsxs)(A.Z,{form:x,onFinish:e=>{if(e.metadata&&"string"==typeof e.metadata)try{e.metadata=JSON.parse(e.metadata)}catch(e){console.error("Error parsing metadata JSON:",e);return}l(e)},layout:"vertical",children:[!u&&(0,c.jsx)(A.Z.Item,{label:"User ID",name:"user_id",children:(0,c.jsx)(_.Z,{disabled:!0})}),!u&&(0,c.jsx)(A.Z.Item,{label:"Email",name:"user_email",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Global Proxy Role"," ",(0,c.jsx)(B.Z,{title:"This is the role that the user will globally on the proxy. This role is independent of any team/org specific roles.",children:(0,c.jsx)(V.Z,{})})]}),name:"user_role",children:(0,c.jsx)(I.default,{children:m&&Object.entries(m).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(ei.Z,{value:s,title:t,children:(0,c.jsxs)("div",{className:"flex",children:[t," ",(0,c.jsx)("p",{className:"ml-2",style:{color:"gray",fontSize:"12px"},children:l})]})},s)})})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Personal Models"," ",(0,c.jsx)(B.Z,{title:"Select which models this user can access outside of team-scope. Choose 'All Proxy Models' to grant access to all models available on the proxy.",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},disabled:!eI.ZL.includes(n||""),children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),(0,c.jsx)(I.default.Option,{value:"no-default-models",children:"No Default Models"},"no-default-models"),o.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsx)(eE,{})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(lA.Z,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",type:"button",onClick:t,children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})]})}let{Text:lE,Title:lL}=en.default;var lP=e=>{let{visible:s,onCancel:t,selectedUsers:l,possibleUIRoles:a,accessToken:r,onSuccess:i,teams:n,userRole:o,userModels:m,allowAllUsers:u=!1}=e,[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)([]),[f,v]=(0,d.useState)(null),[y,b]=(0,d.useState)(!1),[_,N]=(0,d.useState)(!1),Z=()=>{g([]),v(null),b(!1),N(!1),t()},w=d.useMemo(()=>({user_id:"bulk_edit",user_info:{user_email:"",user_role:"",teams:[],models:[],max_budget:null,spend:0,metadata:{},created_at:null,updated_at:null},keys:[],teams:n||[]}),[n,s]),k=async e=>{if(console.log("formValues",e),!r){eo.Z.fromBackend("Access token not found");return}h(!0);try{let s=l.map(e=>e.user_id),a={};e.user_role&&""!==e.user_role&&(a.user_role=e.user_role),null!==e.max_budget&&void 0!==e.max_budget&&(a.max_budget=e.max_budget),e.models&&e.models.length>0&&(a.models=e.models),e.budget_duration&&""!==e.budget_duration&&(a.budget_duration=e.budget_duration),e.metadata&&Object.keys(e.metadata).length>0&&(a.metadata=e.metadata);let n=Object.keys(a).length>0,o=y&&p.length>0;if(!n&&!o){eo.Z.fromBackend("Please modify at least one field or select teams to add users to");return}let c=[];if(n){if(_){let e=await (0,j.userBulkUpdateUserCall)(r,a,void 0,!0);c.push("Updated all users (".concat(e.total_requested," total)"))}else await (0,j.userBulkUpdateUserCall)(r,a,s),c.push("Updated ".concat(s.length," user(s)"))}if(o){let e=[];for(let s of p)try{let t=null;_?t=null:l.map(e=>({user_id:e.user_id,role:"user",user_email:e.user_email||null}));let a=await (0,j.teamBulkMemberAddCall)(r,s,t||null,f||void 0,_);console.log("result",a),e.push({teamId:s,success:!0,successfulAdditions:a.successful_additions,failedAdditions:a.failed_additions})}catch(t){console.error("Failed to add users to team ".concat(s,":"),t),e.push({teamId:s,success:!1,error:t})}let s=e.filter(e=>e.success),t=e.filter(e=>!e.success);if(s.length>0){let e=s.reduce((e,s)=>e+s.successfulAdditions,0);c.push("Added users to ".concat(s.length," team(s) (").concat(e," total additions)"))}t.length>0&&ty.ZP.warning("Failed to add users to ".concat(t.length," team(s)"))}c.length>0&&eo.Z.success(c.join(". ")),g([]),v(null),b(!1),N(!1),i(),t()}catch(e){console.error("Bulk operation failed:",e),eo.Z.fromBackend("Failed to perform bulk operations")}finally{h(!1)}};return(0,c.jsxs)(T.Z,{visible:s,onCancel:Z,footer:null,title:_?"Bulk Edit All Users":"Bulk Edit ".concat(l.length," User(s)"),width:800,children:[u&&(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsx)(eR.Z,{checked:_,onChange:e=>N(e.target.checked),children:(0,c.jsx)(lE,{strong:!0,children:"Update ALL users in the system"})}),_&&(0,c.jsx)("div",{style:{marginTop:8},children:(0,c.jsx)(lE,{type:"warning",style:{fontSize:"12px"},children:"⚠️ This will apply changes to ALL users in the system, not just the selected ones."})})]}),!_&&(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsxs)(lL,{level:5,children:["Selected Users (",l.length,"):"]}),(0,c.jsx)(em.Z,{size:"small",bordered:!0,dataSource:l,pagination:!1,scroll:{y:200},rowKey:"user_id",columns:[{title:"User ID",dataIndex:"user_id",key:"user_id",width:"30%",render:e=>(0,c.jsx)(lE,{strong:!0,style:{fontSize:"12px"},children:e.length>20?"".concat(e.slice(0,20),"..."):e})},{title:"Email",dataIndex:"user_email",key:"user_email",width:"25%",render:e=>(0,c.jsx)(lE,{type:"secondary",style:{fontSize:"12px"},children:e||"No email"})},{title:"Current Role",dataIndex:"user_role",key:"user_role",width:"25%",render:e=>{var s;return(0,c.jsx)(lE,{style:{fontSize:"12px"},children:(null==a?void 0:null===(s=a[e])||void 0===s?void 0:s.ui_label)||e})}},{title:"Budget",dataIndex:"max_budget",key:"max_budget",width:"20%",render:e=>(0,c.jsx)(lE,{style:{fontSize:"12px"},children:null!==e?"$".concat(e):"Unlimited"})}]})]}),(0,c.jsx)(K.Z,{}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsxs)(lE,{children:[(0,c.jsx)("strong",{children:"Instructions:"})," Fill in the fields below with the values you want to apply to all selected users. You can bulk edit: role, budget, models, and metadata. You can also add users to teams."]})}),(0,c.jsx)(tL.Z,{title:"Team Management",size:"small",className:"mb-4",style:{backgroundColor:"#fafafa"},children:(0,c.jsxs)(t9.Z,{direction:"vertical",style:{width:"100%"},children:[(0,c.jsx)(eR.Z,{checked:y,onChange:e=>b(e.target.checked),children:"Add selected users to teams"}),y&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(lE,{strong:!0,children:"Select Teams:"}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select teams to add users to",value:p,onChange:g,style:{width:"100%",marginTop:8},options:(null==n?void 0:n.map(e=>({label:e.team_alias||e.team_id,value:e.team_id})))||[]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(lE,{strong:!0,children:"Team Budget (Optional):"}),(0,c.jsx)(e8.Z,{placeholder:"Max budget per user in team",value:f,onChange:e=>v(e),style:{width:"100%",marginTop:8},min:0,step:.01,precision:2}),(0,c.jsx)(lE,{type:"secondary",style:{fontSize:"12px"},children:"Leave empty for unlimited budget within team limits"})]}),(0,c.jsx)(lE,{type:"secondary",style:{fontSize:"12px"},children:'Users will be added with "user" role by default. All users will be added to each selected team.'})]})]})}),(0,c.jsx)(lT,{userData:w,onCancel:Z,onSubmit:k,teams:n,accessToken:r,userID:"bulk_edit",userRole:o,userModels:m,possibleUIRoles:a,isBulkEdit:!0}),x&&(0,c.jsx)("div",{style:{textAlign:"center",marginTop:"10px"},children:(0,c.jsxs)(lE,{children:["Updating ",_?"all users":l.length," user(s)..."]})})]})};let lM=(e,s,t,l,a,r)=>{let i=[{header:"User ID",accessorKey:"user_id",cell:e=>{let{row:s}=e;return(0,c.jsx)(B.Z,{title:s.original.user_id,children:(0,c.jsx)("span",{className:"text-xs",children:s.original.user_id?"".concat(s.original.user_id.slice(0,7),"..."):"-"})})}},{header:"Email",accessorKey:"user_email",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.user_email||"-"})}},{header:"Global Proxy Role",accessorKey:"user_role",cell:s=>{var t;let{row:l}=s;return(0,c.jsx)("span",{className:"text-xs",children:(null==e?void 0:null===(t=e[l.original.user_role])||void 0===t?void 0:t.ui_label)||"-"})}},{header:"Spend (USD)",accessorKey:"spend",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.spend?eP(s.original.spend,4):"-"})}},{header:"Budget (USD)",accessorKey:"max_budget",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:null!==s.original.max_budget?s.original.max_budget:"Unlimited"})}},{header:()=>(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{children:"SSO ID"}),(0,c.jsx)(B.Z,{title:"SSO ID is the ID of the user in the SSO provider. If the user is not using SSO, this will be null.",children:(0,c.jsx)(li.Z,{className:"w-4 h-4"})})]}),accessorKey:"sso_user_id",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:null!==s.original.sso_user_id?s.original.sso_user_id:"-"})}},{header:"API Keys",accessorKey:"key_count",cell:e=>{let{row:s}=e;return(0,c.jsx)(y.Z,{numItems:2,children:s.original.key_count>0?(0,c.jsxs)(se.Z,{size:"xs",color:"indigo",children:[s.original.key_count," Keys"]}):(0,c.jsx)(se.Z,{size:"xs",color:"gray",children:"No Keys"})})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.created_at?new Date(s.original.created_at).toLocaleDateString():"-"})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e;return(0,c.jsx)("span",{className:"text-xs",children:s.original.updated_at?new Date(s.original.updated_at).toLocaleDateString():"-"})}},{id:"actions",header:"",cell:e=>{let{row:s}=e;return(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(B.Z,{title:"Edit user details",zIndex:9999,children:(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>a(s.original.user_id,!0)})}),(0,c.jsx)(B.Z,{title:"Delete user",zIndex:9999,children:(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>t(s.original.user_id)})}),(0,c.jsx)(B.Z,{title:"Reset Password",zIndex:9999,children:(0,c.jsx)(sD.Z,{icon:sn.Z,size:"sm",onClick:()=>l(s.original.user_id)})})]})}}];if(r){let{onSelectUser:e,onSelectAll:s,isUserSelected:t,isAllSelected:l,isIndeterminate:a}=r;return[{id:"select",header:()=>(0,c.jsx)(eR.Z,{indeterminate:a,checked:l,onChange:e=>s(e.target.checked),onClick:e=>e.stopPropagation()}),cell:s=>{let{row:l}=s;return(0,c.jsx)(eR.Z,{checked:t(l.original),onChange:s=>e(l.original,s.target.checked),onClick:e=>e.stopPropagation()})}},...i]}return i};function lO(e){var s,t,l,a,r,i,n,o,m,u,x,h,p,g,f,v,_,N,Z,w,C,I,A,T,E,P,M,O,D,F,R,z,U,q,V,B,K;let{userId:H,onClose:Y,accessToken:J,userRole:$,onDelete:Q,possibleUIRoles:X,initialTab:ee=0,startInEditMode:es=!1}=e,[et,el]=(0,d.useState)(null),[ea,er]=(0,d.useState)(!1),[ei,en]=(0,d.useState)(!0),[ed,em]=(0,d.useState)(es),[eu,ex]=(0,d.useState)([]),[eh,ep]=(0,d.useState)(!1),[eg,ej]=(0,d.useState)(null),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)(ee),[e_,eN]=(0,d.useState)({}),[eZ,ew]=(0,d.useState)(!1);d.useEffect(()=>{ev((0,j.getProxyBaseUrl)())},[]),d.useEffect(()=>{console.log("userId: ".concat(H,", userRole: ").concat($,", accessToken: ").concat(J)),(async()=>{try{if(!J)return;let e=await (0,j.userInfoCall)(J,H,$||"",!1,null,null,!0);el(e);let s=(await (0,j.modelAvailableCall)(J,H,$||"")).data.map(e=>e.id);ex(s)}catch(e){console.error("Error fetching user data:",e),eo.Z.fromBackend("Failed to fetch user data")}finally{en(!1)}})()},[J,H,$]);let ek=async()=>{if(!J){eo.Z.fromBackend("Access token not found");return}try{eo.Z.success("Generating password reset link...");let e=await (0,j.invitationCreateCall)(J,H);ej(e),ep(!0)}catch(e){eo.Z.fromBackend("Failed to generate password reset link")}},eS=async()=>{try{if(!J)return;await (0,j.userDeleteCall)(J,[H]),eo.Z.success("User deleted successfully"),Q&&Q(),Y()}catch(e){console.error("Error deleting user:",e),eo.Z.fromBackend("Failed to delete user")}},eC=async e=>{try{if(!J||!et)return;await (0,j.userUpdateUserCall)(J,e,null),el({...et,user_info:{...et.user_info,user_email:e.user_email,models:e.models,max_budget:e.max_budget,budget_duration:e.budget_duration,metadata:e.metadata}}),eo.Z.success("User updated successfully"),em(!1)}catch(e){console.error("Error updating user:",e),eo.Z.fromBackend("Failed to update user")}};if(ei)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:Y,className:"mb-4",children:"Back to Users"}),(0,c.jsx)(k.Z,{children:"Loading user data..."})]});if(!et)return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:Y,className:"mb-4",children:"Back to Users"}),(0,c.jsx)(k.Z,{children:"User not found"})]});let eA=async(e,s)=>{await eM(e)&&(eN(e=>({...e,[s]:!0})),setTimeout(()=>{eN(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:Y,className:"mb-4",children:"Back to Users"}),(0,c.jsx)(S.Z,{children:(null===(s=et.user_info)||void 0===s?void 0:s.user_email)||"User"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:et.user_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:e_["user-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>eA(et.user_id,"user-id"),className:"left-2 z-10 transition-all duration-200 ".concat(e_["user-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),$&&eI.LQ.includes($)&&(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)(b.Z,{icon:sn.Z,variant:"secondary",onClick:ek,className:"flex items-center",children:"Reset Password"}),(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>er(!0),className:"flex items-center",children:"Delete User"})]})]}),ea&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete User"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this user?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:eS,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>er(!1),children:"Cancel"})]})]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:ey,onIndexChange:eb,children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"}),(0,c.jsx)(ss.Z,{children:"Details"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Spend"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eP((null===(t=et.user_info)||void 0===t?void 0:t.spend)||0,4)]}),(0,c.jsxs)(k.Z,{children:["of"," ",(null===(l=et.user_info)||void 0===l?void 0:l.max_budget)!==null?"$".concat(eP(et.user_info.max_budget,4)):"Unlimited"]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Teams"}),(0,c.jsx)("div",{className:"mt-2",children:(null===(a=et.teams)||void 0===a?void 0:a.length)&&(null===(r=et.teams)||void 0===r?void 0:r.length)>0?(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[null===(i=et.teams)||void 0===i?void 0:i.slice(0,eZ?et.teams.length:20).map((e,s)=>(0,c.jsx)(se.Z,{color:"blue",title:e.team_alias,children:e.team_alias},s)),!eZ&&(null===(n=et.teams)||void 0===n?void 0:n.length)>20&&(0,c.jsxs)(se.Z,{color:"gray",className:"cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!0),children:["+",et.teams.length-20," more"]}),eZ&&(null===(o=et.teams)||void 0===o?void 0:o.length)>20&&(0,c.jsx)(se.Z,{color:"gray",className:"cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!1),children:"Show Less"})]}):(0,c.jsx)(k.Z,{children:"No teams"})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"API Keys"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsxs)(k.Z,{children:[(null===(m=et.keys)||void 0===m?void 0:m.length)||0," keys"]})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Personal Models"}),(0,c.jsx)("div",{className:"mt-2",children:(null===(x=et.user_info)||void 0===x?void 0:null===(u=x.models)||void 0===u?void 0:u.length)&&(null===(p=et.user_info)||void 0===p?void 0:null===(h=p.models)||void 0===h?void 0:h.length)>0?null===(f=et.user_info)||void 0===f?void 0:null===(g=f.models)||void 0===g?void 0:g.map((e,s)=>(0,c.jsx)(k.Z,{children:e},s)):(0,c.jsx)(k.Z,{children:"All proxy models"})})]})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"User Settings"}),!ed&&$&&eI.LQ.includes($)&&(0,c.jsx)(b.Z,{variant:"light",onClick:()=>em(!0),children:"Edit Settings"})]}),ed&&et?(0,c.jsx)(lT,{userData:et,onCancel:()=>em(!1),onSubmit:eC,teams:et.teams,accessToken:J,userID:H,userRole:$,userModels:eu,possibleUIRoles:X}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"User ID"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"font-mono",children:et.user_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:e_["user-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>eA(et.user_id,"user-id"),className:"left-2 z-10 transition-all duration-200 ".concat(e_["user-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Email"}),(0,c.jsx)(k.Z,{children:(null===(v=et.user_info)||void 0===v?void 0:v.user_email)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Global Proxy Role"}),(0,c.jsx)(k.Z,{children:(null===(_=et.user_info)||void 0===_?void 0:_.user_role)||"Not Set"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created"}),(0,c.jsx)(k.Z,{children:(null===(N=et.user_info)||void 0===N?void 0:N.created_at)?new Date(et.user_info.created_at).toLocaleString():"Unknown"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)(k.Z,{children:(null===(Z=et.user_info)||void 0===Z?void 0:Z.updated_at)?new Date(et.user_info.updated_at).toLocaleString():"Unknown"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Teams"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:(null===(w=et.teams)||void 0===w?void 0:w.length)&&(null===(C=et.teams)||void 0===C?void 0:C.length)>0?(0,c.jsxs)(c.Fragment,{children:[null===(I=et.teams)||void 0===I?void 0:I.slice(0,eZ?et.teams.length:20).map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",title:e.team_alias||e.team_id,children:e.team_alias||e.team_id},s)),!eZ&&(null===(A=et.teams)||void 0===A?void 0:A.length)>20&&(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded text-xs cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!0),children:["+",et.teams.length-20," more"]}),eZ&&(null===(T=et.teams)||void 0===T?void 0:T.length)>20&&(0,c.jsx)("span",{className:"px-2 py-1 bg-gray-100 rounded text-xs cursor-pointer hover:bg-gray-200 transition-colors",onClick:()=>ew(!1),children:"Show Less"})]}):(0,c.jsx)(k.Z,{children:"No teams"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Personal Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:(null===(P=et.user_info)||void 0===P?void 0:null===(E=P.models)||void 0===E?void 0:E.length)&&(null===(O=et.user_info)||void 0===O?void 0:null===(M=O.models)||void 0===M?void 0:M.length)>0?null===(F=et.user_info)||void 0===F?void 0:null===(D=F.models)||void 0===D?void 0:D.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:e},s)):(0,c.jsx)(k.Z,{children:"All proxy models"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"API Keys"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:(null===(R=et.keys)||void 0===R?void 0:R.length)&&(null===(z=et.keys)||void 0===z?void 0:z.length)>0?et.keys.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-green-100 rounded text-xs",children:e.key_alias||e.token},s)):(0,c.jsx)(k.Z,{children:"No API keys"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Max Budget"}),(0,c.jsx)(k.Z,{children:(null===(U=et.user_info)||void 0===U?void 0:U.max_budget)!==null&&(null===(q=et.user_info)||void 0===q?void 0:q.max_budget)!==void 0?"$".concat(eP(et.user_info.max_budget,4)):"Unlimited"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Budget Reset"}),(0,c.jsx)(k.Z,{children:eT(null!==(K=null===(V=et.user_info)||void 0===V?void 0:V.budget_duration)&&void 0!==K?K:null)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Metadata"}),(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify((null===(B=et.user_info)||void 0===B?void 0:B.metadata)||{},null,2)})]})]})]})})]})]}),(0,c.jsx)(ec,{isInvitationLinkModalVisible:eh,setIsInvitationLinkModalVisible:ep,baseUrl:ef||"",invitationLinkData:eg,modalType:"resetPassword"})]})}function lD(e){let{data:s=[],columns:t,isLoading:l=!1,onSortChange:a,currentSort:r,accessToken:i,userRole:n,possibleUIRoles:o,handleEdit:m,handleDelete:u,handleResetPassword:x,selectedUsers:h=[],onSelectionChange:p,enableSelection:g=!1,filters:j,updateFilters:f,initialFilters:v,teams:y,userListResponse:b,currentPage:_,handlePageChange:N}=e,[Z,w]=d.useState([{id:(null==r?void 0:r.sortBy)||"created_at",desc:(null==r?void 0:r.sortOrder)==="desc"}]),[k,S]=d.useState(null),[C,I]=d.useState(!1),[A,T]=d.useState(!1),E=function(e){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];S(e),I(s)},L=(e,s)=>{p&&(s?p([...h,e]):p(h.filter(s=>s.user_id!==e.user_id)))},P=e=>{p&&(e?p(s):p([]))},M=e=>h.some(s=>s.user_id===e.user_id),O=s.length>0&&h.length===s.length,D=h.length>0&&h.lengtho?lM(o,m,u,x,E,g?{selectedUsers:h,onSelectUser:L,onSelectAll:P,isUserSelected:M,isAllSelected:O,isIndeterminate:D}:void 0):t,[o,m,u,x,E,t,g,h,O,D]),R=(0,sM.b7)({data:s,columns:F,state:{sorting:Z},onSortingChange:e=>{if(w(e),e.length>0){let s=e[0],t=s.id,l=s.desc?"desc":"asc";null==a||a(t,l)}},getCoreRowModel:(0,sO.sC)(),getSortedRowModel:(0,sO.tj)(),enableSorting:!0});return(d.useEffect(()=>{r&&w([{id:r.sortBy,desc:"desc"===r.sortOrder}])},[r]),k)?(0,c.jsx)(lO,{userId:k,onClose:()=>{S(null),I(!1)},accessToken:i,userRole:n,possibleUIRoles:o,initialTab:C?1:0,startInEditMode:C}):(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsx)("div",{className:"border-b px-6 py-4",children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search by email...",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:j.email,onChange:e=>f({email:e.target.value})}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 ".concat(A?"bg-gray-100":""),onClick:()=>T(!A),children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filters",(j.user_id||j.user_role||j.team)&&(0,c.jsx)("span",{className:"w-2 h-2 rounded-full bg-blue-500"})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",onClick:()=>{f(v)},children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Reset Filters"]})]}),A&&(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Filter by User ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:j.user_id,onChange:e=>f({user_id:e.target.value})}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})]}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsx)(e9.Z,{value:j.user_role,onValueChange:e=>f({user_role:e}),placeholder:"Select Role",children:o&&Object.entries(o).map(e=>{let[s,t]=e;return(0,c.jsx)(ei.Z,{value:s,children:t.ui_label},s)})})}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsx)(e9.Z,{value:j.team,onValueChange:e=>f({team:e}),placeholder:"Select Team",children:null==y?void 0:y.map(e=>(0,c.jsx)(ei.Z,{value:e.team_id,children:e.team_alias||e.team_id},e.team_id))})}),(0,c.jsx)("div",{className:"relative w-64",children:(0,c.jsx)("input",{type:"text",placeholder:"Filter by SSO ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:j.sso_user_id,onChange:e=>f({sso_user_id:e.target.value})})})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Showing"," ",b&&b.users&&b.users.length>0?(b.page-1)*b.page_size+1:0," ","-"," ",b&&b.users?Math.min(b.page*b.page_size,b.total):0," ","of ",b?b.total:0," results"]}),(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>N(_-1),disabled:1===_,className:"px-3 py-1 text-sm border rounded-md ".concat(1===_?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Previous"}),(0,c.jsx)("button",{onClick:()=>N(_+1),disabled:!b||_>=b.total_pages,className:"px-3 py-1 text-sm border rounded-md ".concat(!b||_>=b.total_pages?"bg-gray-100 text-gray-400 cursor-not-allowed":"hover:bg-gray-50"),children:"Next"})]})]})]})}),(0,c.jsx)("div",{className:"overflow-auto",children:(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sU.Z,{children:R.getHeaderGroups().map(e=>(0,c.jsx)(sV.Z,{children:e.headers.map(e=>(0,c.jsx)(sq.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sB.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sR.Z,{children:l?(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:F.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"\uD83D\uDE85 Loading users..."})})})}):s.length>0?R.getRowModel().rows.map(e=>(0,c.jsx)(sV.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sz.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:()=>{"user_id"===e.column.id&&E(e.getValue(),!1)},style:{cursor:"user_id"===e.column.id?"pointer":"default",color:"user_id"===e.column.id?"#3b82f6":"inherit"},children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:F.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No users found"})})})})})]})})})})]})}var lF=t(67982),lR=e=>{var s;let{accessToken:t,possibleUIRoles:l,userID:a,userRole:r}=e,[i,n]=(0,d.useState)(!0),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)({}),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)([]),{Paragraph:N}=en.default,{Option:Z}=I.default;(0,d.useEffect)(()=>{(async()=>{if(!t){n(!1);return}try{let e=await (0,j.getInternalUserSettings)(t);if(m(e),p(e.values||{}),t)try{let e=await (0,j.modelAvailableCall)(t,a,r);if(e&&e.data){let s=e.data.map(e=>e.id);y(s)}}catch(e){console.error("Error fetching available models:",e)}}catch(e){console.error("Error fetching SSO settings:",e),eo.Z.fromBackend("Failed to fetch SSO settings")}finally{n(!1)}})()},[t]);let w=async()=>{if(t){f(!0);try{let e=Object.entries(h).reduce((e,s)=>{let[t,l]=s;return e[t]=""===l?null:l,e},{}),s=await (0,j.updateInternalUserSettings)(t,e);m({...o,values:s.settings}),x(!1)}catch(e){console.error("Error updating SSO settings:",e),eo.Z.fromBackend("Failed to update settings: "+e)}finally{f(!1)}}},C=(e,s)=>{p(t=>({...t,[e]:s}))},A=e=>e&&Array.isArray(e)?e.map(e=>"string"==typeof e?{team_id:e,user_role:"user"}:"object"==typeof e&&e.team_id?{team_id:e.team_id,max_budget_in_team:e.max_budget_in_team,user_role:e.user_role||"user"}:{team_id:"",user_role:"user"}):[],T=e=>{let s=A(e),t=(e,t,l)=>{let a=[...s];a[e]={...a[e],[t]:l},C("teams",a)},l=e=>{C("teams",s.filter((s,t)=>t!==e))};return(0,c.jsxs)("div",{className:"space-y-3",children:[s.map((e,s)=>(0,c.jsxs)("div",{className:"border rounded-lg p-4 bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["Team ",s+1]}),(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",icon:ep.Z,onClick:()=>l(s),className:"text-red-500 hover:text-red-700",children:"Remove"})]}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-1",children:"Team ID"}),(0,c.jsx)(_.Z,{value:e.team_id,onChange:e=>t(s,"team_id",e.target.value),placeholder:"Enter team ID"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-1",children:"Max Budget in Team"}),(0,c.jsx)(e8.Z,{style:{width:"100%"},value:e.max_budget_in_team,onChange:e=>t(s,"max_budget_in_team",e),placeholder:"Optional",min:0,step:.01,precision:2})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium mb-1",children:"User Role"}),(0,c.jsxs)(I.default,{style:{width:"100%"},value:e.user_role,onChange:e=>t(s,"user_role",e),children:[(0,c.jsx)(Z,{value:"user",children:"User"}),(0,c.jsx)(Z,{value:"admin",children:"Admin"})]})]})]})]},s)),(0,c.jsx)(b.Z,{variant:"secondary",icon:tI.Z,onClick:()=>{C("teams",[...s,{team_id:"",user_role:"user"}])},className:"w-full",children:"Add Team"})]})},E=(e,s,t)=>{var a;let r=s.type;if("teams"===e)return(0,c.jsx)("div",{className:"mt-2",children:T(h[e]||[])});if("user_role"===e&&l)return(0,c.jsx)(I.default,{style:{width:"100%"},value:h[e]||"",onChange:s=>C(e,s),className:"mt-2",children:Object.entries(l).filter(e=>{let[s]=e;return s.includes("internal_user")}).map(e=>{let[s,{ui_label:t,description:l}]=e;return(0,c.jsx)(Z,{value:s,children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("span",{children:t}),(0,c.jsx)("span",{className:"ml-2 text-xs text-gray-500",children:l})]})},s)})});if("budget_duration"===e)return(0,c.jsx)(eE,{value:h[e]||null,onChange:s=>C(e,s),className:"mt-2"});if("boolean"===r)return(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(eJ.Z,{checked:!!h[e],onChange:s=>C(e,s)})});if("array"===r&&(null===(a=s.items)||void 0===a?void 0:a.enum))return(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},value:h[e]||[],onChange:s=>C(e,s),className:"mt-2",children:s.items.enum.map(e=>(0,c.jsx)(Z,{value:e,children:e},e))});if("models"===e)return(0,c.jsxs)(I.default,{mode:"multiple",style:{width:"100%"},value:h[e]||[],onChange:s=>C(e,s),className:"mt-2",children:[(0,c.jsx)(Z,{value:"no-default-models",children:"No Default Models"}),v.map(e=>(0,c.jsx)(Z,{value:e,children:F(e)},e))]});if("string"===r&&s.enum)return(0,c.jsx)(I.default,{style:{width:"100%"},value:h[e]||"",onChange:s=>C(e,s),className:"mt-2",children:s.enum.map(e=>(0,c.jsx)(Z,{value:e,children:e},e))});else return(0,c.jsx)(_.Z,{value:void 0!==h[e]?String(h[e]):"",onChange:s=>C(e,s.target.value),placeholder:s.description||"",className:"mt-2"})},L=(e,s)=>{if(null==s)return(0,c.jsx)("span",{className:"text-gray-400",children:"Not set"});if("teams"===e&&Array.isArray(s)){if(0===s.length)return(0,c.jsx)("span",{className:"text-gray-400",children:"No teams assigned"});let e=A(s);return(0,c.jsx)("div",{className:"space-y-2 mt-1",children:e.map((e,s)=>(0,c.jsx)("div",{className:"border rounded-lg p-3 bg-white",children:(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-2 text-sm",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium text-gray-600",children:"Team ID:"}),(0,c.jsx)("p",{className:"text-gray-900",children:e.team_id||"Not specified"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium text-gray-600",children:"Max Budget:"}),(0,c.jsx)("p",{className:"text-gray-900",children:void 0!==e.max_budget_in_team?"$".concat(eP(e.max_budget_in_team,4)):"No limit"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium text-gray-600",children:"Role:"}),(0,c.jsx)("p",{className:"text-gray-900 capitalize",children:e.user_role})]})]})},s))})}if("user_role"===e&&l&&l[s]){let{ui_label:e,description:t}=l[s];return(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-medium",children:e}),t&&(0,c.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:t})]})}return"budget_duration"===e?(0,c.jsx)("span",{children:eT(s)}):"boolean"==typeof s?(0,c.jsx)("span",{children:s?"Enabled":"Disabled"}):"models"===e&&Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:F(e)},s))}):"object"==typeof s?Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:"object"==typeof e?JSON.stringify(e):String(e)},s))}):(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify(s,null,2)}):(0,c.jsx)("span",{children:String(s)})};return i?(0,c.jsx)("div",{className:"flex justify-center items-center h-64",children:(0,c.jsx)(eF.Z,{size:"large"})}):o?(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Default User Settings"}),!i&&o&&(u?(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{x(!1),p(o.values||{})},disabled:g,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:w,loading:g,children:"Save Changes"})]}):(0,c.jsx)(b.Z,{onClick:()=>x(!0),children:"Edit Settings"}))]}),(null==o?void 0:null===(s=o.field_schema)||void 0===s?void 0:s.description)&&(0,c.jsx)(N,{className:"mb-4",children:o.field_schema.description}),(0,c.jsx)(lF.Z,{}),(0,c.jsx)("div",{className:"mt-4 space-y-4",children:(()=>{let{values:e,field_schema:s}=o;return s&&s.properties?Object.entries(s.properties).map(s=>{let[t,l]=s,a=e[t],r=t.replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase());return(0,c.jsxs)("div",{className:"mb-6 pb-6 border-b border-gray-200 last:border-0",children:[(0,c.jsx)(k.Z,{className:"font-medium text-lg",children:r}),(0,c.jsx)(N,{className:"text-sm text-gray-500 mt-1",children:l.description||"No description available"}),u?(0,c.jsx)("div",{className:"mt-2",children:E(t,l,a)}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:L(t,a)})]},t)}):(0,c.jsx)(k.Z,{children:"No schema information available"})})()})]}):(0,c.jsx)(G.Z,{children:(0,c.jsx)(k.Z,{children:"No settings available or you do not have permission to view them."})})},lz=t(19616);let lU={email:"",user_id:"",user_role:"",sso_user_id:"",team:"",model:"",min_spend:null,max_spend:null,sort_by:"created_at",sort_order:"desc"};var lq=e=>{var s;let{accessToken:t,token:l,userRole:a,userID:r,teams:i}=e,n=(0,h.NL)(),[o,m]=(0,d.useState)(1),[u,x]=(0,d.useState)(!1),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(!1),[y,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)("users"),[w,k]=(0,d.useState)(lU),[S,C,I]=(0,lz.G)(w,{wait:300}),[A,T]=(0,d.useState)(!1),[E,L]=(0,d.useState)(null),[P,M]=(0,d.useState)(null),[O,D]=(0,d.useState)([]),[F,R]=(0,d.useState)(!1),[z,U]=(0,d.useState)(!1),[q,V]=(0,d.useState)([]),B=e=>{_(e),v(!0)};(0,d.useEffect)(()=>()=>{I.cancel()},[I]),(0,d.useEffect)(()=>{M((0,j.getProxyBaseUrl)())},[]),(0,d.useEffect)(()=>{(async()=>{try{if(!r||!a||!t)return;let e=(await (0,j.modelAvailableCall)(t,r,a)).data.map(e=>e.id);console.log("available_model_names:",e),V(e)}catch(e){console.error("Error fetching user models:",e)}})()},[t,r,a]);let K=e=>{k(s=>{let t={...s,...e};return C(t),t})},G=async e=>{if(!t){eo.Z.fromBackend("Access token not found");return}try{eo.Z.success("Generating password reset link...");let s=await (0,j.invitationCreateCall)(t,e);L(s),T(!0)}catch(e){eo.Z.fromBackend("Failed to generate password reset link")}},H=async()=>{if(y&&t)try{await (0,j.userDeleteCall)(t,[y]),n.setQueriesData({queryKey:["userList"]},e=>{if(void 0===e)return e;let s=e.users.filter(e=>e.user_id!==y);return{...e,users:s}}),eo.Z.success("User deleted successfully")}catch(e){console.error("Error deleting user:",e),eo.Z.fromBackend("Failed to delete user")}v(!1),_(null)},Y=async()=>{g(null),x(!1)},J=async e=>{if(console.log("inside handleEditSubmit:",e),t&&l&&a&&r){try{let s=await (0,j.userUpdateUserCall)(t,e,null);n.setQueriesData({queryKey:["userList"]},e=>{if(void 0===e)return e;let t=e.users.map(e=>e.user_id===s.data.user_id?eL(e,s.data):e);return{...e,users:t}}),eo.Z.success("User ".concat(e.user_id," updated successfully"))}catch(e){console.error("There was an error updating the user",e)}g(null),x(!1)}},W=async e=>{m(e)},$=(0,sA.a)({queryKey:["userList",{debouncedFilter:S,currentPage:o}],queryFn:async()=>{if(!t)throw Error("Access token required");return await (0,j.userListCall)(t,S.user_id?[S.user_id]:null,o,25,S.email||null,S.user_role||null,S.team||null,S.sso_user_id||null,S.sort_by,S.sort_order)},enabled:!!(t&&l&&a&&r),placeholderData:e=>e}),Q=$.data,X=(0,sA.a)({queryKey:["userRoles"],initialData:()=>({}),queryFn:async()=>{if(!t)throw Error("Access token required");return await (0,j.getPossibleUserRoles)(t)},enabled:!!(t&&l&&a&&r)}).data;if($.isLoading||!t||!l||!a||!r)return(0,c.jsx)("div",{children:"Loading..."});let ee=lM(X,e=>{g(e),x(!0)},B,G,()=>{});return(0,c.jsxs)("div",{className:"w-full p-8 overflow-hidden",children:[(0,c.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,c.jsxs)("div",{className:"flex space-x-3",children:[(0,c.jsx)(ek,{userID:r,accessToken:t,teams:i,possibleUIRoles:X}),(0,c.jsx)(b.Z,{onClick:()=>{U(!z),D([])},variant:z?"primary":"secondary",className:"flex items-center",children:z?"Cancel Selection":"Select Users"}),z&&(0,c.jsxs)(b.Z,{onClick:()=>{if(0===O.length){eo.Z.fromBackend("Please select users to edit");return}R(!0)},disabled:0===O.length,className:"flex items-center",children:["Bulk Edit (",O.length," selected)"]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:0,onIndexChange:e=>Z(0===e?"users":"settings"),children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Users"}),(0,c.jsx)(ss.Z,{children:"Default User Settings"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lD,{data:(null===(s=$.data)||void 0===s?void 0:s.users)||[],columns:ee,isLoading:$.isLoading,accessToken:t,userRole:a,onSortChange:(e,s)=>{K({sort_by:e,sort_order:s})},currentSort:{sortBy:w.sort_by,sortOrder:w.sort_order},possibleUIRoles:X,handleEdit:e=>{g(e),x(!0)},handleDelete:B,handleResetPassword:G,enableSelection:z,selectedUsers:O,onSelectionChange:e=>{D(e)},filters:w,updateFilters:K,initialFilters:lU,teams:i,userListResponse:Q,currentPage:o,handlePageChange:W})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lR,{accessToken:t,possibleUIRoles:X,userID:r,userRole:a})})]})]}),(0,c.jsx)(lI,{visible:u,possibleUIRoles:X,onCancel:Y,user:p,onSubmit:J}),f&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete User"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this user?"}),(0,c.jsxs)("p",{className:"text-sm font-medium text-gray-900 mt-2",children:["User ID: ",y]})]})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:H,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{v(!1),_(null)},children:"Cancel"})]})]})]})}),(0,c.jsx)(ec,{isInvitationLinkModalVisible:A,setIsInvitationLinkModalVisible:T,baseUrl:P||"",invitationLinkData:E,modalType:"resetPassword"}),(0,c.jsx)(lP,{visible:F,onCancel:()=>R(!1),selectedUsers:O,possibleUIRoles:X,accessToken:t,onSuccess:()=>{n.invalidateQueries({queryKey:["userList"]}),D([]),U(!1)},teams:i,userRole:a,userModels:q,allowAllUsers:!!a&&(0,eI.tY)(a)})]})},lV=e=>{var s;let{accessToken:t,userID:l,userRole:a}=e,[r,i]=(0,d.useState)(!0),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)({}),[p,g]=(0,d.useState)(!1),[f,v]=(0,d.useState)([]),{Paragraph:y}=en.default,{Option:N}=I.default;(0,d.useEffect)(()=>{(async()=>{if(!t){i(!1);return}try{let e=await (0,j.getDefaultTeamSettings)(t);if(o(e),h(e.values||{}),t)try{let e=await (0,j.modelAvailableCall)(t,l,a);if(e&&e.data){let s=e.data.map(e=>e.id);v(s)}}catch(e){console.error("Error fetching available models:",e)}}catch(e){console.error("Error fetching team SSO settings:",e),eo.Z.fromBackend("Failed to fetch team settings")}finally{i(!1)}})()},[t]);let Z=async()=>{if(t){g(!0);try{let e=await (0,j.updateDefaultTeamSettings)(t,x);o({...n,values:e.settings}),u(!1),eo.Z.success("Default team settings updated successfully")}catch(e){console.error("Error updating team settings:",e),eo.Z.fromBackend("Failed to update team settings")}finally{g(!1)}}},w=(e,s)=>{h(t=>({...t,[e]:s}))},C=(e,s,t)=>{var l;let a=s.type;return"budget_duration"===e?(0,c.jsx)(eE,{value:x[e]||null,onChange:s=>w(e,s),className:"mt-2"}):"boolean"===a?(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(eJ.Z,{checked:!!x[e],onChange:s=>w(e,s)})}):"array"===a&&(null===(l=s.items)||void 0===l?void 0:l.enum)?(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},value:x[e]||[],onChange:s=>w(e,s),className:"mt-2",children:s.items.enum.map(e=>(0,c.jsx)(N,{value:e,children:e},e))}):"models"===e?(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},value:x[e]||[],onChange:s=>w(e,s),className:"mt-2",children:f.map(e=>(0,c.jsx)(N,{value:e,children:F(e)},e))}):"string"===a&&s.enum?(0,c.jsx)(I.default,{style:{width:"100%"},value:x[e]||"",onChange:s=>w(e,s),className:"mt-2",children:s.enum.map(e=>(0,c.jsx)(N,{value:e,children:e},e))}):(0,c.jsx)(_.Z,{value:void 0!==x[e]?String(x[e]):"",onChange:s=>w(e,s.target.value),placeholder:s.description||"",className:"mt-2"})},A=(e,s)=>null==s?(0,c.jsx)("span",{className:"text-gray-400",children:"Not set"}):"budget_duration"===e?(0,c.jsx)("span",{children:eT(s)}):"boolean"==typeof s?(0,c.jsx)("span",{children:s?"Enabled":"Disabled"}):"models"===e&&Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:F(e)},s))}):"object"==typeof s?Array.isArray(s)?0===s.length?(0,c.jsx)("span",{className:"text-gray-400",children:"None"}):(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:s.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-100 rounded text-xs",children:"object"==typeof e?JSON.stringify(e):String(e)},s))}):(0,c.jsx)("pre",{className:"bg-gray-100 p-2 rounded text-xs overflow-auto mt-1",children:JSON.stringify(s,null,2)}):(0,c.jsx)("span",{children:String(s)});return r?(0,c.jsx)("div",{className:"flex justify-center items-center h-64",children:(0,c.jsx)(eF.Z,{size:"large"})}):n?(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{className:"text-xl",children:"Default Team Settings"}),!r&&n&&(m?(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{u(!1),h(n.values||{})},disabled:p,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:Z,loading:p,children:"Save Changes"})]}):(0,c.jsx)(b.Z,{onClick:()=>u(!0),children:"Edit Settings"}))]}),(0,c.jsx)(k.Z,{children:"These settings will be applied by default when creating new teams."}),(null==n?void 0:null===(s=n.field_schema)||void 0===s?void 0:s.description)&&(0,c.jsx)(y,{className:"mb-4 mt-2",children:n.field_schema.description}),(0,c.jsx)(lF.Z,{}),(0,c.jsx)("div",{className:"mt-4 space-y-4",children:(()=>{let{values:e,field_schema:s}=n;return s&&s.properties?Object.entries(s.properties).map(s=>{let[t,l]=s,a=e[t],r=t.replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase());return(0,c.jsxs)("div",{className:"mb-6 pb-6 border-b border-gray-200 last:border-0",children:[(0,c.jsx)(k.Z,{className:"font-medium text-lg",children:r}),(0,c.jsx)(y,{className:"text-sm text-gray-500 mt-1",children:l.description||"No description available"}),m?(0,c.jsx)("div",{className:"mt-2",children:C(t,l,a)}):(0,c.jsx)("div",{className:"mt-1 p-2 bg-gray-50 rounded",children:A(t,a)})]},t)}):(0,c.jsx)(k.Z,{children:"No schema information available"})})()})]}):(0,c.jsx)(G.Z,{children:(0,c.jsx)(k.Z,{children:"No team settings available or you do not have permission to view them."})})},lB=e=>{let{accessToken:s,userID:t}=e,[l,a]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{if(s&&t)try{let e=await (0,j.availableTeamListCall)(s);a(e)}catch(e){console.error("Error fetching available teams:",e)}})()},[s,t]);let r=async e=>{if(s&&t)try{await (0,j.teamMemberAddCall)(s,e,{user_id:t,role:"user"}),eo.Z.success("Successfully joined team"),a(s=>s.filter(s=>s.team_id!==e))}catch(e){console.error("Error joining team:",e),eo.Z.fromBackend("Failed to join team")}};return(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Team Name"}),(0,c.jsx)(sq.Z,{children:"Description"}),(0,c.jsx)(sq.Z,{children:"Members"}),(0,c.jsx)(sq.Z,{children:"Models"}),(0,c.jsx)(sq.Z,{children:"Actions"})]})}),(0,c.jsxs)(sR.Z,{children:[l.map(e=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:e.team_alias})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:e.description||"No description available"})}),(0,c.jsx)(sz.Z,{children:(0,c.jsxs)(k.Z,{children:[e.members_with_roles.length," members"]})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)("div",{className:"flex flex-col",children:e.models&&0!==e.models.length?e.models.map((e,s)=>(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(e.slice(0,30),"..."):e})},s)):(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})})})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(b.Z,{size:"xs",variant:"secondary",onClick:()=>r(e.team_id),children:"Join Team"})})]},e.team_id)),0===l.length&&(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:5,className:"text-center",children:(0,c.jsx)(k.Z,{children:"No available teams to join"})})})]})]})})},lK=t(76865);let lG=(e,s)=>{let t=[];return e&&e.models.length>0?(console.log("organization.models: ".concat(e.models)),t=e.models):t=s,R(t,s)};var lH=e=>{let{teams:s,searchParams:t,accessToken:l,setTeams:a,userID:r,userRole:i,organizations:n,premiumUser:o=!1}=e,[m,u]=(0,d.useState)(""),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[S,C]=(0,d.useState)(!1),[E,M]=(0,d.useState)({team_id:"",team_alias:"",organization_id:"",sort_by:"created_at",sort_order:"desc"});(0,d.useEffect)(()=>{console.log("inside useeffect - ".concat(m)),l&&f(l,r,i,x,a),eW()},[m]);let[R]=A.Z.useForm(),[z]=A.Z.useForm(),{Title:q,Paragraph:K}=en.default,[H,Y]=(0,d.useState)(""),[J,$]=(0,d.useState)(!1),[Q,X]=(0,d.useState)(null),[ee,es]=(0,d.useState)(null),[et,el]=(0,d.useState)(!1),[ea,ec]=(0,d.useState)(!1),[ed,em]=(0,d.useState)(!1),[eu,ex]=(0,d.useState)(!1),[eh,ep]=(0,d.useState)([]),[eg,ej]=(0,d.useState)(!1),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)([]),[e_,eN]=(0,d.useState)({}),[eZ,ew]=(0,d.useState)([]),[ek,eS]=(0,d.useState)({}),[eC,eA]=(0,d.useState)([]),[eT,eE]=(0,d.useState)([]),[eM,eO]=(0,d.useState)(!1),[eF,eR]=(0,d.useState)(""),[eq,eV]=(0,d.useState)({});(0,d.useEffect)(()=>{console.log("currentOrgForCreateTeam: ".concat(p));let e=lG(p,eh);console.log("models: ".concat(e)),eb(e),R.setFieldValue("models",[])},[p,eh]),(0,d.useEffect)(()=>{(async()=>{try{if(null==l)return;let e=(await (0,j.getGuardrailsList)(l)).guardrails.map(e=>e.guardrail_name);ew(e)}catch(e){console.error("Failed to fetch guardrails:",e)}})()},[l]);let eB=async()=>{try{if(null==l)return;let e=await (0,j.fetchMCPAccessGroups)(l);eE(e)}catch(e){console.error("Failed to fetch MCP access groups:",e)}};(0,d.useEffect)(()=>{eB()},[l]),(0,d.useEffect)(()=>{s&&eN(s.reduce((e,s)=>(e[s.team_id]={keys:s.keys||[],team_info:{members_with_roles:s.members_with_roles||[]}},e),{}))},[s]);let eK=async e=>{ev(e),ej(!0)},eG=async()=>{if(null!=ef&&null!=s&&null!=l){try{await (0,j.teamDeleteCall)(l,ef),f(l,r,i,x,a)}catch(e){console.error("Error deleting the team:",e)}ej(!1),ev(null)}},eH=()=>{ej(!1),ev(null)};(0,d.useEffect)(()=>{(async()=>{try{if(null===r||null===i||null===l)return;let e=await D(r,i,l);e&&ep(e)}catch(e){console.error("Error fetching user models:",e)}})()},[l,r,i,s]);let eJ=async e=>{try{if(console.log("formValues: ".concat(JSON.stringify(e))),null!=l){var t,r,i;let n=null==e?void 0:e.team_alias,o=null!==(i=null==s?void 0:s.map(e=>e.team_alias))&&void 0!==i?i:[],c=(null==e?void 0:e.organization_id)||(null==x?void 0:x.organization_id);if(""===c||"string"!=typeof c?e.organization_id=null:e.organization_id=c.trim(),o.includes(n))throw Error("Team alias ".concat(n," already exists, please pick another alias"));if(eo.Z.info("Creating Team"),eC.length>0){let s={};if(e.metadata)try{s=JSON.parse(e.metadata)}catch(e){console.warn("Invalid JSON in metadata field, starting with empty object")}s={...s,logging:eC.filter(e=>e.callback_name)},e.metadata=JSON.stringify(s)}if(e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0||e.allowed_mcp_servers_and_groups&&((null===(t=e.allowed_mcp_servers_and_groups.servers)||void 0===t?void 0:t.length)>0||(null===(r=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===r?void 0:r.length)>0||e.allowed_mcp_servers_and_groups.toolPermissions)){if(e.object_permission={},e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0&&(e.object_permission.vector_stores=e.allowed_vector_store_ids,delete e.allowed_vector_store_ids),e.allowed_mcp_servers_and_groups){let{servers:s,accessGroups:t}=e.allowed_mcp_servers_and_groups;s&&s.length>0&&(e.object_permission.mcp_servers=s),t&&t.length>0&&(e.object_permission.mcp_access_groups=t),delete e.allowed_mcp_servers_and_groups}e.mcp_tool_permissions&&Object.keys(e.mcp_tool_permissions).length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_tool_permissions=e.mcp_tool_permissions,delete e.mcp_tool_permissions)}e.allowed_mcp_access_groups&&e.allowed_mcp_access_groups.length>0&&(e.object_permission||(e.object_permission={}),e.object_permission.mcp_access_groups=e.allowed_mcp_access_groups,delete e.allowed_mcp_access_groups),Object.keys(eq).length>0&&(e.model_aliases=eq);let d=await (0,j.teamCreateCall)(l,e);null!==s?a([...s,d]):a([d]),console.log("response for team create call: ".concat(d)),eo.Z.success("Team created"),R.resetFields(),eA([]),eV({}),ec(!1)}}catch(e){console.error("Error creating the team:",e),eo.Z.fromBackend("Error creating the team: "+e)}},eW=()=>{u(new Date().toLocaleString())},e$=(e,s)=>{let t={...E,[e]:s};M(t),l&&(0,j.v2TeamListCall)(l,t.organization_id||null,null,t.team_id||null,t.team_alias||null).then(e=>{e&&e.teams&&a(e.teams)}).catch(e=>{console.error("Error fetching teams:",e)})};return(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[("Admin"==i||"Org Admin"==i)&&(0,c.jsx)(b.Z,{className:"w-fit",onClick:()=>ec(!0),children:"+ Create New Team"}),ee?(0,c.jsx)(tN,{teamId:ee,onUpdate:e=>{a(s=>{if(null==s)return s;let t=s.map(s=>e.team_id===s.team_id?eL(s,e):s);return l&&f(l,r,i,x,a),t})},onClose:()=>{es(null),el(!1)},accessToken:l,is_team_admin:(e=>{if(null==e||null==e.members_with_roles)return!1;for(let s=0;se.team_id===ee)),is_proxy_admin:"Admin"==i,userModels:eh,editTeam:et}):(0,c.jsxs)(st.Z,{className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(ss.Z,{children:"Your Teams"}),(0,c.jsx)(ss.Z,{children:"Available Teams"}),(0,eI.tY)(i||"")&&(0,c.jsx)(ss.Z,{children:"Default Team Settings"})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[m&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",m]}),(0,c.jsx)(sD.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center",onClick:eW})]})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(k.Z,{children:["Click on “Team ID” to view team details ",(0,c.jsx)("b",{children:"and"})," manage team members."]}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"w-full mx-auto flex-auto overflow-hidden overflow-y-auto max-h-[50vh]",children:[(0,c.jsx)("div",{className:"border-b px-6 py-4",children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search by Team Name...",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:E.team_alias,onChange:e=>e$("team_alias",e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 ".concat(S?"bg-gray-100":""),onClick:()=>C(!S),children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filters",(E.team_id||E.team_alias||E.organization_id)&&(0,c.jsx)("span",{className:"w-2 h-2 rounded-full bg-blue-500"})]}),(0,c.jsxs)("button",{className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",onClick:()=>{M({team_id:"",team_alias:"",organization_id:"",sort_by:"created_at",sort_order:"desc"}),l&&(0,j.v2TeamListCall)(l,null,r||null,null,null).then(e=>{e&&e.teams&&a(e.teams)}).catch(e=>{console.error("Error fetching teams:",e)})},children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"Reset Filters"]})]}),S&&(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-3",children:[(0,c.jsxs)("div",{className:"relative w-64",children:[(0,c.jsx)("input",{type:"text",placeholder:"Enter Team ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:E.team_id,onChange:e=>e$("team_id",e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})]}),(0,c.jsx)("div",{className:"w-64",children:(0,c.jsx)(e9.Z,{value:E.organization_id||"",onValueChange:e=>e$("organization_id",e),placeholder:"Select Organization",children:null==n?void 0:n.map(e=>(0,c.jsx)(ei.Z,{value:e.organization_id||"",children:e.organization_alias||e.organization_id},e.organization_id))})})]})]})}),(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Team Name"}),(0,c.jsx)(sq.Z,{children:"Team ID"}),(0,c.jsx)(sq.Z,{children:"Created"}),(0,c.jsx)(sq.Z,{children:"Spend (USD)"}),(0,c.jsx)(sq.Z,{children:"Budget (USD)"}),(0,c.jsx)(sq.Z,{children:"Models"}),(0,c.jsx)(sq.Z,{children:"Organization"}),(0,c.jsx)(sq.Z,{children:"Info"})]})}),(0,c.jsx)(sR.Z,{children:s&&s.length>0?s.filter(e=>!x||e.organization_id===x.organization_id).sort((e,s)=>new Date(s.created_at).getTime()-new Date(e.created_at).getTime()).map(e=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:e.team_alias}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.team_id,children:(0,c.jsxs)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>{es(e.team_id)},children:[e.team_id.slice(0,7),"..."]})})})}),(0,c.jsx)(sz.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:e.created_at?new Date(e.created_at).toLocaleDateString():"N/A"}),(0,c.jsx)(sz.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:eP(e.spend,4)}),(0,c.jsx)(sz.Z,{style:{maxWidth:"4px",whiteSpace:"pre-wrap",overflow:"hidden"},children:null!==e.max_budget&&void 0!==e.max_budget?e.max_budget:"No limit"}),(0,c.jsx)(sz.Z,{style:{maxWidth:"8-x",whiteSpace:"pre-wrap",overflow:"hidden"},className:e.models.length>3?"px-0":"",children:(0,c.jsx)("div",{className:"flex flex-col",children:Array.isArray(e.models)?(0,c.jsx)("div",{className:"flex flex-col",children:0===e.models.length?(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"flex items-start",children:[e.models.length>3&&(0,c.jsx)("div",{children:(0,c.jsx)(sD.Z,{icon:ek[e.team_id]?sB.Z:sK.Z,className:"cursor-pointer",size:"xs",onClick:()=>{eS(s=>({...s,[e.team_id]:!s[e.team_id]}))}})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[e.models.slice(0,3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s)),e.models.length>3&&!ek[e.team_id]&&(0,c.jsx)(se.Z,{size:"xs",color:"gray",className:"cursor-pointer",children:(0,c.jsxs)(k.Z,{children:["+",e.models.length-3," ",e.models.length-3==1?"more model":"more models"]})}),ek[e.team_id]&&(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:e.models.slice(3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s+3):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s+3))})]})]})})}):null})}),(0,c.jsx)(sz.Z,{children:e.organization_id}),(0,c.jsxs)(sz.Z,{children:[(0,c.jsxs)(k.Z,{children:[e_&&e.team_id&&e_[e.team_id]&&e_[e.team_id].keys&&e_[e.team_id].keys.length," ","Keys"]}),(0,c.jsxs)(k.Z,{children:[e_&&e.team_id&&e_[e.team_id]&&e_[e.team_id].team_info&&e_[e.team_id].team_info.members_with_roles&&e_[e.team_id].team_info.members_with_roles.length," ","Members"]})]}),(0,c.jsx)(sz.Z,{children:"Admin"==i?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>{es(e.team_id),el(!0)}}),(0,c.jsx)(sD.Z,{onClick:()=>eK(e.team_id),icon:W.Z,size:"sm"})]}):null})]},e.team_id)):null})]}),eg&&(()=>{var e;let t=null==s?void 0:s.find(e=>e.team_id===ef),l=(null==t?void 0:t.team_alias)||"",a=(null==t?void 0:null===(e=t.keys)||void 0===e?void 0:e.length)||0,r=eF===l;return(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl w-full max-w-2xl min-h-[380px] py-6 overflow-hidden transform transition-all flex flex-col justify-between",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Delete Team"}),(0,c.jsx)("button",{onClick:()=>{eH(),eR("")},className:"text-gray-400 hover:text-gray-500 focus:outline-none",children:(0,c.jsx)(ez.Z,{size:20})})]}),(0,c.jsxs)("div",{className:"px-6 py-4",children:[a>0&&(0,c.jsxs)("div",{className:"flex items-start gap-3 p-4 bg-red-50 border border-red-100 rounded-md mb-5",children:[(0,c.jsx)("div",{className:"text-red-500 mt-0.5",children:(0,c.jsx)(lK.Z,{size:20})}),(0,c.jsxs)("div",{children:[(0,c.jsxs)("p",{className:"text-base font-medium text-red-600",children:["Warning: This team has ",a," associated key",a>1?"s":"","."]}),(0,c.jsx)("p",{className:"text-base text-red-600 mt-2",children:"Deleting the team will also delete all associated keys. This action is irreversible."})]})]}),(0,c.jsx)("p",{className:"text-base text-gray-600 mb-5",children:"Are you sure you want to force delete this team and all its keys?"}),(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsxs)("label",{className:"block text-base font-medium text-gray-700 mb-2",children:["Type ",(0,c.jsx)("span",{className:"underline",children:l})," to confirm deletion:"]}),(0,c.jsx)("input",{type:"text",value:eF,onChange:e=>eR(e.target.value),placeholder:"Enter team name exactly",className:"w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base",autoFocus:!0})]})]})]}),(0,c.jsxs)("div",{className:"px-6 py-4 bg-gray-50 flex justify-end gap-4",children:[(0,c.jsx)("button",{onClick:()=>{eH(),eR("")},className:"px-5 py-3 bg-white border border-gray-300 rounded-md text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:"Cancel"}),(0,c.jsx)("button",{onClick:eG,disabled:!r,className:"px-5 py-3 rounded-md text-base font-medium text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 ".concat(r?"bg-red-600 hover:bg-red-700":"bg-red-300 cursor-not-allowed"),children:"Force Delete"})]})]})})})()]})})})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lB,{accessToken:l,userID:r})}),(0,eI.tY)(i||"")&&(0,c.jsx)(sa.Z,{children:(0,c.jsx)(lV,{accessToken:l,userID:r||"",userRole:i||""})})]})]}),("Admin"==i||"Org Admin"==i)&&(0,c.jsx)(T.Z,{title:"Create Team",visible:ea,width:1e3,footer:null,onOk:()=>{ec(!1),R.resetFields(),eA([]),eV({})},onCancel:()=>{ec(!1),R.resetFields(),eA([]),eV({})},children:(0,c.jsxs)(A.Z,{form:R,onFinish:eJ,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Team Name",name:"team_alias",rules:[{required:!0,message:"Please input a team name"}],children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Organization"," ",(0,c.jsx)(B.Z,{title:(0,c.jsxs)("span",{children:["Organizations can have multiple teams. Learn more about"," ",(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/user_management_heirarchy",target:"_blank",rel:"noopener noreferrer",style:{color:"#1890ff",textDecoration:"underline"},onClick:e=>e.stopPropagation(),children:"user management hierarchy"})]}),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"organization_id",initialValue:x?x.organization_id:null,className:"mt-8",children:(0,c.jsx)(I.default,{showSearch:!0,allowClear:!0,placeholder:"Search or select an Organization",onChange:e=>{R.setFieldValue("organization_id",e),g((null==n?void 0:n.find(s=>s.organization_id===e))||null)},filterOption:(e,s)=>{var t;return!!s&&((null===(t=s.children)||void 0===t?void 0:t.toString())||"").toLowerCase().includes(e.toLowerCase())},optionFilterProp:"children",children:null==n?void 0:n.map(e=>(0,c.jsxs)(I.default.Option,{value:e.organization_id,children:[(0,c.jsx)("span",{className:"font-medium",children:e.organization_alias})," ",(0,c.jsxs)("span",{className:"text-gray-500",children:["(",e.organization_id,")"]})]},e.organization_id))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Models"," ",(0,c.jsx)(B.Z,{title:"These are the models that your selected team has access to",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),ey.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsxs)(N.Z,{className:"mt-20 mb-8",onClick:()=>{eM||(eB(),eO(!0))},children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Additional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:"Team ID",name:"team_id",help:"ID of the team you want to create. If not provided, it will be generated automatically.",children:(0,c.jsx)(_.Z,{onChange:e=>{e.target.value=e.target.value.trim()}})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Budget (USD)",name:"team_member_budget",normalize:e=>e?Number(e):void 0,tooltip:"This is the individual budget for a user in the team.",children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Team Member Key Duration (eg: 1d, 1mo)",name:"team_member_key_duration",tooltip:"Set a limit to the duration of a team member's key. Format: 30s (seconds), 30m (minutes), 30h (hours), 30d (days), 1mo (month)",children:(0,c.jsx)(_.Z,{placeholder:"e.g., 30d"})}),(0,c.jsx)(A.Z.Item,{label:"Team Member RPM Limit",name:"team_member_rpm_limit",tooltip:"The RPM (Requests Per Minute) limit for individual team members",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Team Member TPM Limit",name:"team_member_tpm_limit",tooltip:"The TPM (Tokens Per Minute) limit for individual team members",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",help:"Additional team metadata. Enter metadata as JSON object.",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Guardrails"," ",(0,c.jsx)(B.Z,{title:"Setup your first guardrail",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/guardrails/quick_start",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})})]}),name:"guardrails",className:"mt-8",help:"Select existing guardrails or enter new ones",children:(0,c.jsx)(I.default,{mode:"tags",style:{width:"100%"},placeholder:"Select or enter guardrails",options:eZ.map(e=>({value:e,label:e}))})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Vector Stores"," ",(0,c.jsx)(B.Z,{title:"Select which vector stores this team can access by default. Leave empty for access to all vector stores",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_vector_store_ids",className:"mt-8",help:"Select vector stores this team can access. Leave empty for access to all vector stores",children:(0,c.jsx)(U,{onChange:e=>R.setFieldValue("allowed_vector_store_ids",e),value:R.getFieldValue("allowed_vector_store_ids"),accessToken:l||"",placeholder:"Select vector stores (optional)"})})]})]}),(0,c.jsxs)(N.Z,{className:"mt-8 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"MCP Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed MCP Servers"," ",(0,c.jsx)(B.Z,{title:"Select which MCP servers or access groups this team can access",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_mcp_servers_and_groups",className:"mt-4",help:"Select MCP servers or access groups this team can access",children:(0,c.jsx)(eD,{onChange:e=>R.setFieldValue("allowed_mcp_servers_and_groups",e),value:R.getFieldValue("allowed_mcp_servers_and_groups"),accessToken:l||"",placeholder:"Select MCP servers or access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{name:"mcp_tool_permissions",initialValue:{},hidden:!0,children:(0,c.jsx)(P.default,{type:"hidden"})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.allowed_mcp_servers_and_groups!==s.allowed_mcp_servers_and_groups||e.mcp_tool_permissions!==s.mcp_tool_permissions,children:()=>{var e;return(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(eU,{accessToken:l||"",selectedServers:(null===(e=R.getFieldValue("allowed_mcp_servers_and_groups"))||void 0===e?void 0:e.servers)||[],toolPermissions:R.getFieldValue("mcp_tool_permissions")||{},onChange:e=>R.setFieldsValue({mcp_tool_permissions:e})})})}})]})]}),(0,c.jsxs)(N.Z,{className:"mt-8 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Logging Settings"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(er,{value:eC,onChange:eA,premiumUser:o})})})]}),(0,c.jsxs)(N.Z,{className:"mt-8 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Model Aliases"})}),(0,c.jsx)(Z.Z,{children:(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600 mb-4",children:"Create custom aliases for models that can be used by team members in API calls. This allows you to create shortcuts for specific models."}),(0,c.jsx)(eY,{accessToken:l||"",initialModelAliases:eq,onAliasUpdate:eV,showExampleConfig:!1})]})})]})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Create Team"})})]})})]})})})},lY=e=>{var s,t,l,a,r;let{organizationId:i,onClose:n,accessToken:o,is_org_admin:m,is_proxy_admin:u,userModels:x,editOrg:h}=e,[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(!0),[N]=A.Z.useForm(),[Z,w]=(0,d.useState)(!1),[C,T]=(0,d.useState)(!1),[E,M]=(0,d.useState)(!1),[D,R]=(0,d.useState)(null),[z,q]=(0,d.useState)({}),V=m||u,B=async()=>{try{if(v(!0),!o)return;let e=await (0,j.organizationInfoCall)(o,i);g(e)}catch(e){eo.Z.fromBackend("Failed to load organization information"),console.error("Error fetching organization info:",e)}finally{v(!1)}};(0,d.useEffect)(()=>{B()},[i,o]);let K=async e=>{try{if(null==o)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role};await (0,j.organizationMemberAddCall)(o,i,s),eo.Z.success("Organization member added successfully"),T(!1),N.resetFields(),B()}catch(e){eo.Z.fromBackend("Failed to add organization member"),console.error("Error adding organization member:",e)}},H=async e=>{try{if(!o)return;let s={user_email:e.user_email,user_id:e.user_id,role:e.role};await (0,j.organizationMemberUpdateCall)(o,i,s),eo.Z.success("Organization member updated successfully"),M(!1),N.resetFields(),B()}catch(e){eo.Z.fromBackend("Failed to update organization member"),console.error("Error updating organization member:",e)}},Y=async e=>{try{if(!o)return;await (0,j.organizationMemberDeleteCall)(o,i,e.user_id),eo.Z.success("Organization member deleted successfully"),M(!1),N.resetFields(),B()}catch(e){eo.Z.fromBackend("Failed to delete organization member"),console.error("Error deleting organization member:",e)}},J=async e=>{try{if(!o)return;let s={organization_id:i,organization_alias:e.organization_alias,models:e.models,litellm_budget_table:{tpm_limit:e.tpm_limit,rpm_limit:e.rpm_limit,max_budget:e.max_budget,budget_duration:e.budget_duration},metadata:e.metadata?JSON.parse(e.metadata):null};if((void 0!==e.vector_stores||void 0!==e.mcp_servers_and_groups)&&(s.object_permission={...null==p?void 0:p.object_permission,vector_stores:e.vector_stores||[]},void 0!==e.mcp_servers_and_groups)){let{servers:t,accessGroups:l}=e.mcp_servers_and_groups||{servers:[],accessGroups:[]};t&&t.length>0&&(s.object_permission.mcp_servers=t),l&&l.length>0&&(s.object_permission.mcp_access_groups=l)}await (0,j.organizationUpdateCall)(o,s),eo.Z.success("Organization settings updated successfully"),w(!1),B()}catch(e){eo.Z.fromBackend("Failed to update organization settings"),console.error("Error updating organization:",e)}};if(f)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!p)return(0,c.jsx)("div",{className:"p-4",children:"Organization not found"});let $=async(e,s)=>{await eM(e)&&(q(e=>({...e,[s]:!0})),setTimeout(()=>{q(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"w-full h-screen p-4 bg-white",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,onClick:n,variant:"light",className:"mb-4",children:"Back to Organizations"}),(0,c.jsx)(S.Z,{children:p.organization_alias}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:p.organization_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:z["org-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>$(p.organization_id,"org-id"),className:"left-2 z-10 transition-all duration-200 ".concat(z["org-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:h?2:0,children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"}),(0,c.jsx)(ss.Z,{children:"Members"}),(0,c.jsx)(ss.Z,{children:"Settings"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Organization Details"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["Created: ",new Date(p.created_at).toLocaleDateString()]}),(0,c.jsxs)(k.Z,{children:["Updated: ",new Date(p.updated_at).toLocaleDateString()]}),(0,c.jsxs)(k.Z,{children:["Created By: ",p.created_by]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Budget Status"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(S.Z,{children:["$",eP(p.spend,4)]}),(0,c.jsxs)(k.Z,{children:["of"," ",null===p.litellm_budget_table.max_budget?"Unlimited":"$".concat(eP(p.litellm_budget_table.max_budget,4))]}),p.litellm_budget_table.budget_duration&&(0,c.jsxs)(k.Z,{className:"text-gray-500",children:["Reset: ",p.litellm_budget_table.budget_duration]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Rate Limits"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsxs)(k.Z,{children:["TPM: ",p.litellm_budget_table.tpm_limit||"Unlimited"]}),(0,c.jsxs)(k.Z,{children:["RPM: ",p.litellm_budget_table.rpm_limit||"Unlimited"]}),p.litellm_budget_table.max_parallel_requests&&(0,c.jsxs)(k.Z,{children:["Max Parallel Requests: ",p.litellm_budget_table.max_parallel_requests]})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Models"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:0===p.models.length?(0,c.jsx)(se.Z,{color:"red",children:"All proxy models"}):p.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Teams"}),(0,c.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:null===(s=p.teams)||void 0===s?void 0:s.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e.team_id},s))})]}),(0,c.jsx)(sy,{objectPermission:p.object_permission,variant:"card",accessToken:o})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[75vh]",children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"User ID"}),(0,c.jsx)(sq.Z,{children:"Role"}),(0,c.jsx)(sq.Z,{children:"Spend"}),(0,c.jsx)(sq.Z,{children:"Created At"}),(0,c.jsx)(sq.Z,{})]})}),(0,c.jsx)(sR.Z,{children:null===(t=p.members)||void 0===t?void 0:t.map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_id})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-mono",children:e.user_role})}),(0,c.jsx)(sz.Z,{children:(0,c.jsxs)(k.Z,{children:["$",eP(e.spend,4)]})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:new Date(e.created_at).toLocaleString()})}),(0,c.jsx)(sz.Z,{children:V&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>{R({role:e.user_role,user_email:e.user_email,user_id:e.user_id}),M(!0)}}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>{Y(e)}})]})})]},s))})]})}),V&&(0,c.jsx)(b.Z,{onClick:()=>{T(!0)},children:"Add Member"})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{className:"overflow-y-auto max-h-[65vh]",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Organization Settings"}),V&&!Z&&(0,c.jsx)(b.Z,{onClick:()=>w(!0),children:"Edit Settings"})]}),Z?(0,c.jsxs)(A.Z,{form:N,onFinish:J,initialValues:{organization_alias:p.organization_alias,models:p.models,tpm_limit:p.litellm_budget_table.tpm_limit,rpm_limit:p.litellm_budget_table.rpm_limit,max_budget:p.litellm_budget_table.max_budget,budget_duration:p.litellm_budget_table.budget_duration,metadata:p.metadata?JSON.stringify(p.metadata,null,2):"",vector_stores:(null===(l=p.object_permission)||void 0===l?void 0:l.vector_stores)||[],mcp_servers_and_groups:{servers:(null===(a=p.object_permission)||void 0===a?void 0:a.mcp_servers)||[],accessGroups:(null===(r=p.object_permission)||void 0===r?void 0:r.mcp_access_groups)||[]}},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Organization Name",name:"organization_alias",rules:[{required:!0,message:"Please input an organization name"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),x.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,style:{width:"100%"}})}),(0,c.jsx)(A.Z.Item,{label:"Vector Stores",name:"vector_stores",children:(0,c.jsx)(U,{onChange:e=>N.setFieldValue("vector_stores",e),value:N.getFieldValue("vector_stores"),accessToken:o||"",placeholder:"Select vector stores"})}),(0,c.jsx)(A.Z.Item,{label:"MCP Servers & Access Groups",name:"mcp_servers_and_groups",children:(0,c.jsx)(eD,{onChange:e=>N.setFieldValue("mcp_servers_and_groups",e),value:N.getFieldValue("mcp_servers_and_groups"),accessToken:o||"",placeholder:"Select MCP servers and access groups"})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)("div",{className:"sticky z-10 bg-white p-4 border-t border-gray-200 bottom-[-1.5rem] inset-x-[-1.5rem]",children:(0,c.jsxs)("div",{className:"flex justify-end items-center gap-2",children:[(0,c.jsx)(L.ZP,{onClick:()=>w(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization Name"}),(0,c.jsx)("div",{children:p.organization_alias})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Organization ID"}),(0,c.jsx)("div",{className:"font-mono",children:p.organization_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:new Date(p.created_at).toLocaleString()})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Models"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-1",children:p.models.map((e,s)=>(0,c.jsx)(se.Z,{color:"red",children:e},s))})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Rate Limits"}),(0,c.jsxs)("div",{children:["TPM: ",p.litellm_budget_table.tpm_limit||"Unlimited"]}),(0,c.jsxs)("div",{children:["RPM: ",p.litellm_budget_table.rpm_limit||"Unlimited"]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Budget"}),(0,c.jsxs)("div",{children:["Max:"," ",null!==p.litellm_budget_table.max_budget?"$".concat(eP(p.litellm_budget_table.max_budget,4)):"No Limit"]}),(0,c.jsxs)("div",{children:["Reset: ",p.litellm_budget_table.budget_duration||"Never"]})]}),(0,c.jsx)(sy,{objectPermission:p.object_permission,variant:"inline",className:"pt-4 border-t border-gray-200",accessToken:o})]})]})})]})]}),(0,c.jsx)(t_,{isVisible:C,onCancel:()=>T(!1),onSubmit:K,accessToken:o,title:"Add Organization Member",roles:[{label:"org_admin",value:"org_admin",description:"Can add and remove members, and change their roles."},{label:"internal_user",value:"internal_user",description:"Can view/create keys for themselves within organization."},{label:"internal_user_viewer",value:"internal_user_viewer",description:"Can only view their keys within organization."}],defaultRole:"internal_user"}),(0,c.jsx)(tb,{visible:E,onCancel:()=>M(!1),onSubmit:H,initialData:D,mode:"edit",config:{title:"Edit Member",showEmail:!0,showUserId:!0,roleOptions:[{label:"Org Admin",value:"org_admin"},{label:"Internal User",value:"internal_user"},{label:"Internal User Viewer",value:"internal_user_viewer"}]}})]})};let lJ=async(e,s)=>{s(await (0,j.organizationListCall)(e))};var lW=e=>{let{organizations:s,userRole:t,userModels:l,accessToken:a,lastRefreshed:r,handleRefreshClick:i,currentOrg:n,guardrailsList:o=[],setOrganizations:m,premiumUser:u}=e,[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(!1),[f,_]=(0,d.useState)(!1),[N,Z]=(0,d.useState)(null),[w,S]=(0,d.useState)(!1),[C]=A.Z.useForm(),[E,L]=(0,d.useState)({});(0,d.useEffect)(()=>{a&&lJ(a,m)},[a]);let M=e=>{e&&(Z(e),_(!0))},D=async()=>{if(N&&a)try{await (0,j.organizationDeleteCall)(a,N),eo.Z.success("Organization deleted successfully"),_(!1),Z(null),lJ(a,m)}catch(e){console.error("Error deleting organization:",e)}},R=async e=>{try{var s,t,l,r;if(!a)return;console.log("values in organizations new create call: ".concat(JSON.stringify(e))),(e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0||e.allowed_mcp_servers_and_groups&&((null===(s=e.allowed_mcp_servers_and_groups.servers)||void 0===s?void 0:s.length)>0||(null===(t=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===t?void 0:t.length)>0))&&(e.object_permission={},e.allowed_vector_store_ids&&e.allowed_vector_store_ids.length>0&&(e.object_permission.vector_stores=e.allowed_vector_store_ids,delete e.allowed_vector_store_ids),e.allowed_mcp_servers_and_groups&&((null===(l=e.allowed_mcp_servers_and_groups.servers)||void 0===l?void 0:l.length)>0&&(e.object_permission.mcp_servers=e.allowed_mcp_servers_and_groups.servers),(null===(r=e.allowed_mcp_servers_and_groups.accessGroups)||void 0===r?void 0:r.length)>0&&(e.object_permission.mcp_access_groups=e.allowed_mcp_servers_and_groups.accessGroups),delete e.allowed_mcp_servers_and_groups)),await (0,j.organizationCreateCall)(a,e),eo.Z.success("Organization created successfully"),S(!1),C.resetFields(),lJ(a,m)}catch(e){console.error("Error creating organization:",e)}};return u?(0,c.jsxs)("div",{className:"w-full mx-4 h-[75vh]",children:[(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(v.Z,{numColSpan:1,className:"flex flex-col gap-2",children:[("Admin"===t||"Org Admin"===t)&&(0,c.jsx)(b.Z,{className:"w-fit",onClick:()=>S(!0),children:"+ Create New Organization"}),x?(0,c.jsx)(lY,{organizationId:x,onClose:()=>{h(null),g(!1)},accessToken:a,is_org_admin:!0,is_proxy_admin:"Admin"===t,userModels:l,editOrg:p}):(0,c.jsxs)(st.Z,{className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsx)("div",{className:"flex",children:(0,c.jsx)(ss.Z,{children:"Your Organizations"})}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[r&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",r]}),(0,c.jsx)(sD.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center",onClick:i})]})]}),(0,c.jsx)(sr.Z,{children:(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)(k.Z,{children:"Click on “Organization ID” to view organization details."}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(G.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Organization ID"}),(0,c.jsx)(sq.Z,{children:"Organization Name"}),(0,c.jsx)(sq.Z,{children:"Created"}),(0,c.jsx)(sq.Z,{children:"Spend (USD)"}),(0,c.jsx)(sq.Z,{children:"Budget (USD)"}),(0,c.jsx)(sq.Z,{children:"Models"}),(0,c.jsx)(sq.Z,{children:"TPM / RPM Limits"}),(0,c.jsx)(sq.Z,{children:"Info"}),(0,c.jsx)(sq.Z,{children:"Actions"})]})}),(0,c.jsx)(sR.Z,{children:s&&s.length>0?s.sort((e,s)=>new Date(s.created_at).getTime()-new Date(e.created_at).getTime()).map(e=>{var s,l,a,r,i,n,o,d,m;return(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.organization_id,children:(0,c.jsxs)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>h(e.organization_id),children:[null===(s=e.organization_id)||void 0===s?void 0:s.slice(0,7),"..."]})})})}),(0,c.jsx)(sz.Z,{children:e.organization_alias}),(0,c.jsx)(sz.Z,{children:e.created_at?new Date(e.created_at).toLocaleDateString():"N/A"}),(0,c.jsx)(sz.Z,{children:eP(e.spend,4)}),(0,c.jsx)(sz.Z,{children:(null===(l=e.litellm_budget_table)||void 0===l?void 0:l.max_budget)!==null&&(null===(a=e.litellm_budget_table)||void 0===a?void 0:a.max_budget)!==void 0?null===(r=e.litellm_budget_table)||void 0===r?void 0:r.max_budget:"No limit"}),(0,c.jsx)(sz.Z,{style:{maxWidth:"8-x",whiteSpace:"pre-wrap",overflow:"hidden"},className:e.models.length>3?"px-0":"",children:(0,c.jsx)("div",{className:"flex flex-col",children:Array.isArray(e.models)?(0,c.jsx)("div",{className:"flex flex-col",children:0===e.models.length?(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})}):(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"flex items-start",children:[e.models.length>3&&(0,c.jsx)("div",{children:(0,c.jsx)(sD.Z,{icon:E[e.organization_id||""]?sB.Z:sK.Z,className:"cursor-pointer",size:"xs",onClick:()=>{L(s=>({...s,[e.organization_id||""]:!s[e.organization_id||""]}))}})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[e.models.slice(0,3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s)),e.models.length>3&&!E[e.organization_id||""]&&(0,c.jsx)(se.Z,{size:"xs",color:"gray",className:"cursor-pointer",children:(0,c.jsxs)(k.Z,{children:["+",e.models.length-3," ",e.models.length-3==1?"more model":"more models"]})}),E[e.organization_id||""]&&(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:e.models.slice(3).map((e,s)=>"all-proxy-models"===e?(0,c.jsx)(se.Z,{size:"xs",color:"red",children:(0,c.jsx)(k.Z,{children:"All Proxy Models"})},s+3):(0,c.jsx)(se.Z,{size:"xs",color:"blue",children:(0,c.jsx)(k.Z,{children:e.length>30?"".concat(F(e).slice(0,30),"..."):F(e)})},s+3))})]})]})})}):null})}),(0,c.jsx)(sz.Z,{children:(0,c.jsxs)(k.Z,{children:["TPM:"," ",(null===(i=e.litellm_budget_table)||void 0===i?void 0:i.tpm_limit)?null===(n=e.litellm_budget_table)||void 0===n?void 0:n.tpm_limit:"Unlimited",(0,c.jsx)("br",{}),"RPM:"," ",(null===(o=e.litellm_budget_table)||void 0===o?void 0:o.rpm_limit)?null===(d=e.litellm_budget_table)||void 0===d?void 0:d.rpm_limit:"Unlimited"]})}),(0,c.jsx)(sz.Z,{children:(0,c.jsxs)(k.Z,{children:[(null===(m=e.members)||void 0===m?void 0:m.length)||0," Members"]})}),(0,c.jsx)(sz.Z,{children:"Admin"===t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>{h(e.organization_id),g(!0)}}),(0,c.jsx)(sD.Z,{onClick:()=>M(e.organization_id),icon:W.Z,size:"sm"})]})})]},e.organization_id)}):null})]})})})})]})})]})]})}),(0,c.jsx)(T.Z,{title:"Create Organization",visible:w,width:800,footer:null,onCancel:()=>{S(!1),C.resetFields()},children:(0,c.jsxs)(A.Z,{form:C,onFinish:R,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"Organization Name",name:"organization_alias",rules:[{required:!0,message:"Please input an organization name"}],children:(0,c.jsx)(eW.o,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"Models",name:"models",children:(0,c.jsxs)(I.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:[(0,c.jsx)(I.default.Option,{value:"all-proxy-models",children:"All Proxy Models"},"all-proxy-models"),l&&l.length>0&&l.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))]})}),(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(O,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})}),(0,c.jsx)(A.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,c.jsx)(O,{step:1,width:400})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Vector Stores"," ",(0,c.jsx)(B.Z,{title:"Select which vector stores this organization can access by default. Leave empty for access to all vector stores",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_vector_store_ids",className:"mt-4",help:"Select vector stores this organization can access. Leave empty for access to all vector stores",children:(0,c.jsx)(U,{onChange:e=>C.setFieldValue("allowed_vector_store_ids",e),value:C.getFieldValue("allowed_vector_store_ids"),accessToken:a||"",placeholder:"Select vector stores (optional)"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed MCP Servers"," ",(0,c.jsx)(B.Z,{title:"Select which MCP servers and access groups this organization can access by default.",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_mcp_servers_and_groups",className:"mt-4",help:"Select MCP servers and access groups this organization can access.",children:(0,c.jsx)(eD,{onChange:e=>C.setFieldValue("allowed_mcp_servers_and_groups",e),value:C.getFieldValue("allowed_mcp_servers_and_groups"),accessToken:a||"",placeholder:"Select MCP servers and access groups (optional)"})}),(0,c.jsx)(A.Z.Item,{label:"Metadata",name:"metadata",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(b.Z,{type:"submit",children:"Create Organization"})})]})}),f?(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Organization"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this organization?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:D,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{_(!1),Z(null)},children:"Cancel"})]})]})]})}):(0,c.jsx)(c.Fragment,{})]}):(0,c.jsx)("div",{children:(0,c.jsxs)(k.Z,{children:["This is a LiteLLM Enterprise feature, and requires a valid key to use. Get a trial key"," ",(0,c.jsx)("a",{href:"https://www.litellm.ai/#pricing",target:"_blank",rel:"noopener noreferrer",children:"here"}),"."]})})},l$=t(94789);let lQ={google:"https://artificialanalysis.ai/img/logos/google_small.svg",microsoft:"https://upload.wikimedia.org/wikipedia/commons/a/a8/Microsoft_Azure_Logo.svg",okta:"https://www.okta.com/sites/default/files/Okta_Logo_BrightBlue_Medium.png",generic:""},lX={google:{envVarMap:{google_client_id:"GOOGLE_CLIENT_ID",google_client_secret:"GOOGLE_CLIENT_SECRET"},fields:[{label:"GOOGLE CLIENT ID",name:"google_client_id"},{label:"GOOGLE CLIENT SECRET",name:"google_client_secret"}]},microsoft:{envVarMap:{microsoft_client_id:"MICROSOFT_CLIENT_ID",microsoft_client_secret:"MICROSOFT_CLIENT_SECRET",microsoft_tenant:"MICROSOFT_TENANT"},fields:[{label:"MICROSOFT CLIENT ID",name:"microsoft_client_id"},{label:"MICROSOFT CLIENT SECRET",name:"microsoft_client_secret"},{label:"MICROSOFT TENANT",name:"microsoft_tenant"}]},okta:{envVarMap:{generic_client_id:"GENERIC_CLIENT_ID",generic_client_secret:"GENERIC_CLIENT_SECRET",generic_authorization_endpoint:"GENERIC_AUTHORIZATION_ENDPOINT",generic_token_endpoint:"GENERIC_TOKEN_ENDPOINT",generic_userinfo_endpoint:"GENERIC_USERINFO_ENDPOINT"},fields:[{label:"GENERIC CLIENT ID",name:"generic_client_id"},{label:"GENERIC CLIENT SECRET",name:"generic_client_secret"},{label:"AUTHORIZATION ENDPOINT",name:"generic_authorization_endpoint",placeholder:"https://your-okta-domain/authorize"},{label:"TOKEN ENDPOINT",name:"generic_token_endpoint",placeholder:"https://your-okta-domain/token"},{label:"USERINFO ENDPOINT",name:"generic_userinfo_endpoint",placeholder:"https://your-okta-domain/userinfo"}]},generic:{envVarMap:{generic_client_id:"GENERIC_CLIENT_ID",generic_client_secret:"GENERIC_CLIENT_SECRET",generic_authorization_endpoint:"GENERIC_AUTHORIZATION_ENDPOINT",generic_token_endpoint:"GENERIC_TOKEN_ENDPOINT",generic_userinfo_endpoint:"GENERIC_USERINFO_ENDPOINT"},fields:[{label:"GENERIC CLIENT ID",name:"generic_client_id"},{label:"GENERIC CLIENT SECRET",name:"generic_client_secret"},{label:"AUTHORIZATION ENDPOINT",name:"generic_authorization_endpoint"},{label:"TOKEN ENDPOINT",name:"generic_token_endpoint"},{label:"USERINFO ENDPOINT",name:"generic_userinfo_endpoint"}]}};var l0=e=>{let{isAddSSOModalVisible:s,isInstructionsModalVisible:t,handleAddSSOOk:l,handleAddSSOCancel:a,handleShowInstructions:r,handleInstructionsOk:i,handleInstructionsCancel:n,form:o,accessToken:m,ssoConfigured:u=!1}=e,[x,h]=(0,d.useState)(!1);(0,d.useEffect)(()=>{(async()=>{if(s&&m)try{let s=await (0,j.getSSOSettings)(m);if(console.log("Raw SSO data received:",s),s&&s.values){console.log("SSO values:",s.values),console.log("user_email from API:",s.values.user_email);let l=null;if(s.values.google_client_id)l="google";else if(s.values.microsoft_client_id)l="microsoft";else if(s.values.generic_client_id){var e,t;l=(null===(e=s.values.generic_authorization_endpoint)||void 0===e?void 0:e.includes("okta"))||(null===(t=s.values.generic_authorization_endpoint)||void 0===t?void 0:t.includes("auth0"))?"okta":"generic"}let a={sso_provider:l,proxy_base_url:s.values.proxy_base_url,user_email:s.values.user_email,...s.values};console.log("Setting form values:",a),o.resetFields(),setTimeout(()=>{o.setFieldsValue(a),console.log("Form values set, current form values:",o.getFieldsValue())},100)}}catch(e){console.error("Failed to load SSO settings:",e)}})()},[s,m,o]);let p=async e=>{if(!m){eo.Z.fromBackend("No access token available");return}try{await (0,j.updateSSOSettings)(m,e),r(e)}catch(e){console.error("Failed to save SSO settings:",e),eo.Z.fromBackend("Failed to save SSO settings")}},g=async()=>{if(!m){eo.Z.fromBackend("No access token available");return}try{await (0,j.updateSSOSettings)(m,{google_client_id:null,google_client_secret:null,microsoft_client_id:null,microsoft_client_secret:null,microsoft_tenant:null,generic_client_id:null,generic_client_secret:null,generic_authorization_endpoint:null,generic_token_endpoint:null,generic_userinfo_endpoint:null,proxy_base_url:null,user_email:null,sso_provider:null}),o.resetFields(),h(!1),l(),eo.Z.success("SSO settings cleared successfully")}catch(e){console.error("Failed to clear SSO settings:",e),eo.Z.fromBackend("Failed to clear SSO settings")}},f=e=>{let s=lX[e];return s?s.fields.map(e=>(0,c.jsx)(A.Z.Item,{label:e.label,name:e.name,rules:[{required:!0,message:"Please enter the ".concat(e.label.toLowerCase())}],children:e.name.includes("client")?(0,c.jsx)(P.default.Password,{}):(0,c.jsx)(_.Z,{placeholder:e.placeholder})},e.name)):null};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(T.Z,{title:u?"Edit SSO Settings":"Add SSO",visible:s,width:800,footer:null,onOk:l,onCancel:a,children:(0,c.jsxs)(A.Z,{form:o,onFinish:p,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"SSO Provider",name:"sso_provider",rules:[{required:!0,message:"Please select an SSO provider"}],children:(0,c.jsx)(I.default,{children:Object.entries(lQ).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:s,children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"4px 0"},children:[t&&(0,c.jsx)("img",{src:t,alt:s,style:{height:24,width:24,marginRight:12,objectFit:"contain"}}),(0,c.jsxs)("span",{children:[s.charAt(0).toUpperCase()+s.slice(1)," SSO"]})]})},s)})})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.sso_provider!==s.sso_provider,children:e=>{let{getFieldValue:s}=e,t=s("sso_provider");return t?f(t):null}}),(0,c.jsx)(A.Z.Item,{label:"Proxy Admin Email",name:"user_email",rules:[{required:!0,message:"Please enter the email of the proxy admin"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"PROXY BASE URL",name:"proxy_base_url",rules:[{required:!0,message:"Please enter the proxy base url"}],children:(0,c.jsx)(_.Z,{})})]}),(0,c.jsxs)("div",{style:{textAlign:"right",marginTop:"10px",display:"flex",justifyContent:"flex-end",alignItems:"center",gap:"8px"},children:[u&&(0,c.jsx)(L.ZP,{onClick:()=>h(!0),style:{backgroundColor:"#6366f1",borderColor:"#6366f1",color:"white"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#5558eb",e.currentTarget.style.borderColor="#5558eb"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="#6366f1",e.currentTarget.style.borderColor="#6366f1"},children:"Clear"}),(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})]})]})}),(0,c.jsxs)(T.Z,{title:"Confirm Clear SSO Settings",visible:x,onOk:g,onCancel:()=>h(!1),okText:"Yes, Clear",cancelText:"Cancel",okButtonProps:{danger:!0,style:{backgroundColor:"#dc2626",borderColor:"#dc2626"}},children:[(0,c.jsx)("p",{children:"Are you sure you want to clear all SSO settings? This action cannot be undone."}),(0,c.jsx)("p",{children:"Users will no longer be able to login using SSO after this change."})]}),(0,c.jsxs)(T.Z,{title:"SSO Setup Instructions",visible:t,width:800,footer:null,onOk:i,onCancel:n,children:[(0,c.jsx)("p",{children:"Follow these steps to complete the SSO setup:"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"1. DO NOT Exit this TAB"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"2. Open a new tab, visit your proxy base url"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"3. Confirm your SSO is configured correctly and you can login on the new Tab"}),(0,c.jsx)(k.Z,{className:"mt-2",children:"4. If Step 3 is successful, you can close this tab"}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{onClick:i,children:"Done"})})]})]})},l1=t(62272),l2=t(92403),l4=t(29271),l5=t(34419),l3=e=>{let{accessToken:s,userID:t,proxySettings:l}=e,[a]=A.Z.useForm(),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)("");(0,d.useEffect)(()=>{let e="";u(l&&l.PROXY_BASE_URL&&void 0!==l.PROXY_BASE_URL?l.PROXY_BASE_URL:window.location.origin)},[l]);let x="".concat(m,"/scim/v2"),h=async e=>{if(!s||!t){eo.Z.fromBackend("You need to be logged in to create a SCIM token");return}try{i(!0);let l={key_alias:e.key_alias||"SCIM Access Token",team_id:null,models:[],allowed_routes:["/scim/*"]},a=await (0,j.keyCreateCall)(s,t,l);o(a),eo.Z.success("SCIM token created successfully")}catch(e){console.error("Error creating SCIM token:",e),eo.Z.fromBackend("Failed to create SCIM token: "+(0,sZ.O)(e))}finally{i(!1)}};return(0,c.jsx)(y.Z,{numItems:1,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("div",{className:"flex items-center mb-4",children:(0,c.jsx)(S.Z,{children:"SCIM Configuration"})}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"System for Cross-domain Identity Management (SCIM) allows you to automatically provision and manage users and groups in LiteLLM."}),(0,c.jsx)(lF.Z,{}),(0,c.jsxs)("div",{className:"space-y-8",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-2",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full bg-blue-100 text-blue-700 mr-2",children:"1"}),(0,c.jsxs)(S.Z,{className:"text-lg flex items-center",children:[(0,c.jsx)(l1.Z,{className:"h-5 w-5 mr-2"}),"SCIM Tenant URL"]})]}),(0,c.jsx)(k.Z,{className:"text-gray-600 mb-3",children:"Use this URL in your identity provider SCIM integration settings."}),(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(_.Z,{value:x,disabled:!0,className:"flex-grow"}),(0,c.jsx)(C.CopyToClipboard,{text:x,onCopy:()=>eo.Z.success("URL copied to clipboard"),children:(0,c.jsxs)(b.Z,{variant:"primary",className:"ml-2 flex items-center",children:[(0,c.jsx)(tJ.Z,{className:"h-4 w-4 mr-1"}),"Copy"]})})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-2",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full bg-blue-100 text-blue-700 mr-2",children:"2"}),(0,c.jsxs)(S.Z,{className:"text-lg flex items-center",children:[(0,c.jsx)(l2.Z,{className:"h-5 w-5 mr-2"}),"Authentication Token"]})]}),(0,c.jsx)(l$.Z,{title:"Using SCIM",color:"blue",className:"mb-4",children:"You need a SCIM token to authenticate with the SCIM API. Create one below and use it in your SCIM provider configuration."}),n?(0,c.jsxs)(G.Z,{className:"border border-yellow-300 bg-yellow-50",children:[(0,c.jsxs)("div",{className:"flex items-center mb-2 text-yellow-800",children:[(0,c.jsx)(l4.Z,{className:"h-5 w-5 mr-2"}),(0,c.jsx)(S.Z,{className:"text-lg text-yellow-800",children:"Your SCIM Token"})]}),(0,c.jsx)(k.Z,{className:"text-yellow-800 mb-4 font-medium",children:"Make sure to copy this token now. You will not be able to see it again."}),(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(_.Z,{value:n.key,className:"flex-grow mr-2 bg-white",type:"password",disabled:!0}),(0,c.jsx)(C.CopyToClipboard,{text:n.key,onCopy:()=>eo.Z.success("Token copied to clipboard"),children:(0,c.jsxs)(b.Z,{variant:"primary",className:"flex items-center",children:[(0,c.jsx)(tJ.Z,{className:"h-4 w-4 mr-1"}),"Copy"]})})]}),(0,c.jsxs)(b.Z,{className:"mt-4 flex items-center",variant:"secondary",onClick:()=>o(null),children:[(0,c.jsx)(l5.Z,{className:"h-4 w-4 mr-1"}),"Create Another Token"]})]}):(0,c.jsx)("div",{className:"bg-gray-50 p-4 rounded-lg",children:(0,c.jsxs)(A.Z,{form:a,onFinish:h,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{name:"key_alias",label:"Token Name",rules:[{required:!0,message:"Please enter a name for your token"}],children:(0,c.jsx)(_.Z,{placeholder:"SCIM Access Token"})}),(0,c.jsx)(A.Z.Item,{children:(0,c.jsxs)(b.Z,{variant:"primary",type:"submit",loading:r,className:"flex items-center",children:[(0,c.jsx)(l2.Z,{className:"h-4 w-4 mr-1"}),"Create SCIM Token"]})})]})})]})]})]})})},l6=e=>{let{accessToken:s,onSuccess:t}=e,[l]=A.Z.useForm(),[a,r]=(0,d.useState)(!1);(0,d.useEffect)(()=>{(async()=>{if(s)try{let e=await (0,j.getSSOSettings)(s);if(e&&e.values){let s=e.values.ui_access_mode,t={};s&&"object"==typeof s?t={ui_access_mode_type:s.type,restricted_sso_group:s.restricted_sso_group,sso_group_jwt_field:s.sso_group_jwt_field}:"string"==typeof s&&(t={ui_access_mode_type:s,restricted_sso_group:e.values.restricted_sso_group,sso_group_jwt_field:e.values.team_ids_jwt_field||e.values.sso_group_jwt_field}),l.setFieldsValue(t)}}catch(e){console.error("Failed to load UI access settings:",e)}})()},[s,l]);let i=async e=>{if(!s){eo.Z.fromBackend("No access token available");return}r(!0);try{let l;l="all_authenticated_users"===e.ui_access_mode_type?{ui_access_mode:"none"}:{ui_access_mode:{type:e.ui_access_mode_type,restricted_sso_group:e.restricted_sso_group,sso_group_jwt_field:e.sso_group_jwt_field}},await (0,j.updateSSOSettings)(s,l),t()}catch(e){console.error("Failed to save UI access settings:",e),eo.Z.fromBackend("Failed to save UI access settings")}finally{r(!1)}};return(0,c.jsxs)("div",{style:{padding:"16px"},children:[(0,c.jsx)("div",{style:{marginBottom:"16px"},children:(0,c.jsx)(k.Z,{style:{fontSize:"14px",color:"#6b7280"},children:"Configure who can access the UI interface and how group information is extracted from JWT tokens."})}),(0,c.jsxs)(A.Z,{form:l,onFinish:i,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"UI Access Mode",name:"ui_access_mode_type",tooltip:"Controls who can access the UI interface",children:(0,c.jsxs)(I.default,{placeholder:"Select access mode",children:[(0,c.jsx)(I.default.Option,{value:"all_authenticated_users",children:"All Authenticated Users"}),(0,c.jsx)(I.default.Option,{value:"restricted_sso_group",children:"Restricted SSO Group"})]})}),(0,c.jsx)(A.Z.Item,{noStyle:!0,shouldUpdate:(e,s)=>e.ui_access_mode_type!==s.ui_access_mode_type,children:e=>{let{getFieldValue:s}=e;return"restricted_sso_group"===s("ui_access_mode_type")?(0,c.jsx)(A.Z.Item,{label:"Restricted SSO Group",name:"restricted_sso_group",rules:[{required:!0,message:"Please enter the restricted SSO group"}],children:(0,c.jsx)(_.Z,{placeholder:"ui-access-group"})}):null}}),(0,c.jsx)(A.Z.Item,{label:"SSO Group JWT Field",name:"sso_group_jwt_field",tooltip:"JWT field name that contains team/group information. Use dot notation to access nested fields.",children:(0,c.jsx)(_.Z,{placeholder:"groups"})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"16px"},children:(0,c.jsx)(L.ZP,{type:"primary",htmlType:"submit",loading:a,style:{backgroundColor:"#6366f1",borderColor:"#6366f1"},children:"Update UI Access Control"})})]})]})},l8=e=>{let{searchParams:s,accessToken:t,userID:l,showSSOBanner:a,premiumUser:r,proxySettings:i,userRole:n}=e,[o]=A.Z.useForm(),[u]=A.Z.useForm(),{Title:x,Paragraph:h}=en.default,[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)(null),[y,_]=(0,d.useState)(null),[N,Z]=(0,d.useState)(!1),[w,k]=(0,d.useState)(!1),[S,C]=(0,d.useState)(!1),[I,E]=(0,d.useState)(!1),[M,O]=(0,d.useState)(!1),[D,F]=(0,d.useState)(!1),[R,z]=(0,d.useState)(!1),[U,q]=(0,d.useState)(!1),[V,B]=(0,d.useState)(!1),[K,H]=(0,d.useState)(!1),[Y,J]=(0,d.useState)([]),[W,$]=(0,d.useState)(null),[Q,X]=(0,d.useState)(!1);(0,m.useRouter)();let[ee,es]=(0,d.useState)(null);console.log=function(){};let et=sP(),el="All IP Addresses Allowed",ea=et;ea+="/fallback/login";let er=async()=>{if(t&&r)try{let e=await (0,j.getSSOSettings)(t);if(console.log("SSO data:",e),e&&e.values){let s=e.values.google_client_id&&e.values.google_client_secret,t=e.values.microsoft_client_id&&e.values.microsoft_client_secret,l=e.values.generic_client_id&&e.values.generic_client_secret;X(s||t||l)}else X(!1)}catch(e){console.error("Error checking SSO configuration:",e),X(!1)}},ei=async()=>{try{if(!0!==r){eo.Z.fromBackend("This feature is only available for premium users. Please upgrade your account.");return}if(t){let e=await (0,j.getAllowedIPs)(t);J(e&&e.length>0?e:[el])}else J([el])}catch(e){console.error("Error fetching allowed IPs:",e),eo.Z.fromBackend("Failed to fetch allowed IPs ".concat(e)),J([el])}finally{!0===r&&z(!0)}},ec=async e=>{try{if(t){await (0,j.addAllowedIP)(t,e.ip);let s=await (0,j.getAllowedIPs)(t);J(s),eo.Z.success("IP address added successfully")}}catch(e){console.error("Error adding IP:",e),eo.Z.fromBackend("Failed to add IP address ".concat(e))}finally{q(!1)}},ed=async e=>{$(e),B(!0)},em=async()=>{if(W&&t)try{await (0,j.deleteAllowedIP)(t,W);let e=await (0,j.getAllowedIPs)(t);J(e.length>0?e:[el]),eo.Z.success("IP address deleted successfully")}catch(e){console.error("Error deleting IP:",e),eo.Z.fromBackend("Failed to delete IP address ".concat(e))}finally{B(!1),$(null)}};(0,d.useEffect)(()=>{(async()=>{if(null!=t){let e=[],s=await (0,j.userGetAllUsersCall)(t,"proxy_admin_viewer");console.log("proxy admin viewer response: ",s);let l=s.users;console.log("proxy viewers response: ".concat(l)),l.forEach(s=>{e.push({user_role:s.user_role,user_id:s.user_id,user_email:s.user_email})}),console.log("proxy viewers: ".concat(l));let a=(await (0,j.userGetAllUsersCall)(t,"proxy_admin")).users;a.forEach(s=>{e.push({user_role:s.user_role,user_id:s.user_id,user_email:s.user_email})}),console.log("proxy admins: ".concat(a)),console.log("combinedList: ".concat(e)),v(e),es(await (0,j.getPossibleUserRoles)(t))}})()},[t]),(0,d.useEffect)(()=>{er()},[t,r]);let eu=()=>{H(!1)};return console.log("admins: ".concat(null==f?void 0:f.length)),(0,c.jsxs)("div",{className:"w-full m-2 mt-2 p-8",children:[(0,c.jsx)(x,{level:4,children:"Admin Access "}),(0,c.jsx)(h,{children:"Go to 'Internal Users' page to add other admins."}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{children:[(0,c.jsx)(ss.Z,{children:"Security Settings"}),(0,c.jsx)(ss.Z,{children:"SCIM"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(x,{level:4,children:" ✨ Security Settings"}),(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"1rem",marginTop:"1rem",marginLeft:"0.5rem"},children:[(0,c.jsx)("div",{children:(0,c.jsx)(b.Z,{style:{width:"150px"},onClick:()=>!0===r?O(!0):eo.Z.fromBackend("Only premium users can add SSO"),children:Q?"Edit SSO Settings":"Add SSO"})}),(0,c.jsx)("div",{children:(0,c.jsx)(b.Z,{style:{width:"150px"},onClick:ei,children:"Allowed IPs"})}),(0,c.jsx)("div",{children:(0,c.jsx)(b.Z,{style:{width:"150px"},onClick:()=>!0===r?H(!0):eo.Z.fromBackend("Only premium users can configure UI access control"),children:"UI Access Control"})})]})]}),(0,c.jsxs)("div",{className:"flex justify-start mb-4",children:[(0,c.jsx)(l0,{isAddSSOModalVisible:M,isInstructionsModalVisible:D,handleAddSSOOk:()=>{O(!1),o.resetFields(),t&&r&&er()},handleAddSSOCancel:()=>{O(!1),o.resetFields()},handleShowInstructions:e=>{O(!1),F(!0)},handleInstructionsOk:()=>{F(!1),t&&r&&er()},handleInstructionsCancel:()=>{F(!1),t&&r&&er()},form:o,accessToken:t,ssoConfigured:Q}),(0,c.jsx)(T.Z,{title:"Manage Allowed IP Addresses",width:800,visible:R,onCancel:()=>z(!1),footer:[(0,c.jsx)(b.Z,{className:"mx-1",onClick:()=>q(!0),children:"Add IP Address"},"add"),(0,c.jsx)(b.Z,{onClick:()=>z(!1),children:"Close"},"close")],children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"IP Address"}),(0,c.jsx)(sq.Z,{className:"text-right",children:"Action"})]})}),(0,c.jsx)(sR.Z,{children:Y.map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e}),(0,c.jsx)(sz.Z,{className:"text-right",children:e!==el&&(0,c.jsx)(b.Z,{onClick:()=>ed(e),color:"red",size:"xs",children:"Delete"})})]},s))})]})}),(0,c.jsx)(T.Z,{title:"Add Allowed IP Address",visible:U,onCancel:()=>q(!1),footer:null,children:(0,c.jsxs)(A.Z,{onFinish:ec,children:[(0,c.jsx)(A.Z.Item,{name:"ip",rules:[{required:!0,message:"Please enter an IP address"}],children:(0,c.jsx)(P.default,{placeholder:"Enter IP address"})}),(0,c.jsx)(A.Z.Item,{children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Add IP Address"})})]})}),(0,c.jsx)(T.Z,{title:"Confirm Delete",visible:V,onCancel:()=>B(!1),onOk:em,footer:[(0,c.jsx)(b.Z,{className:"mx-1",onClick:()=>em(),children:"Yes"},"delete"),(0,c.jsx)(b.Z,{onClick:()=>B(!1),children:"Close"},"close")],children:(0,c.jsxs)("p",{children:["Are you sure you want to delete the IP address: ",W,"?"]})}),(0,c.jsx)(T.Z,{title:"UI Access Control Settings",visible:K,width:600,footer:null,onOk:eu,onCancel:()=>{H(!1)},children:(0,c.jsx)(l6,{accessToken:t,onSuccess:()=>{eu(),eo.Z.success("UI Access Control settings updated successfully")}})})]}),(0,c.jsxs)(l$.Z,{title:"Login without SSO",color:"teal",children:["If you need to login without sso, you can access"," ",(0,c.jsxs)("a",{href:ea,target:"_blank",children:[(0,c.jsx)("b",{children:ea})," "]})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(l3,{accessToken:t,userID:l,proxySettings:i})})]})]})]})};let{Title:l7}=en.default;var l9=e=>{let{accessToken:s}=e,[t,l]=(0,d.useState)(!0),[a,r]=(0,d.useState)([]);(0,d.useEffect)(()=>{i()},[s]);let i=async()=>{if(s){l(!0);try{let e=await (0,j.getEmailEventSettings)(s);r(e.settings)}catch(e){console.error("Failed to fetch email event settings:",e),eo.Z.fromBackend(e)}finally{l(!1)}}},n=(e,s)=>{r(a.map(t=>t.event===e?{...t,enabled:s}:t))},o=async()=>{if(s)try{await (0,j.updateEmailEventSettings)(s,{settings:a}),eo.Z.success("Email event settings updated successfully")}catch(e){console.error("Failed to update email event settings:",e),eo.Z.fromBackend(e)}},m=async()=>{if(s)try{await (0,j.resetEmailEventSettings)(s),eo.Z.success("Email event settings reset to defaults"),i()}catch(e){console.error("Failed to reset email event settings:",e),eo.Z.fromBackend(e)}},u=e=>{if(e.includes("Virtual Key Created"))return"An email will be sent to the user when a new virtual key is created with their user ID";if(e.includes("New User Invitation"))return"An email will be sent to the email address of the user when a new user is created";{let s=e.split(/(?=[A-Z])/).join(" ").toLowerCase();return"Receive an email notification when ".concat(s)}};return(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(l7,{level:4,children:"Email Notifications"}),(0,c.jsx)(k.Z,{children:"Select which events should trigger email notifications."}),(0,c.jsx)(K.Z,{}),t?(0,c.jsx)("div",{style:{textAlign:"center",padding:"20px"},children:(0,c.jsx)(eF.Z,{size:"large"})}):(0,c.jsx)("div",{className:"space-y-4",children:a.map(e=>(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(eR.Z,{checked:e.enabled,onChange:s=>n(e.event,s.target.checked)}),(0,c.jsxs)("div",{className:"ml-3",children:[(0,c.jsx)(k.Z,{children:e.event}),(0,c.jsx)("div",{className:"text-sm text-gray-500 block",children:u(e.event)})]})]},e.event))}),(0,c.jsxs)("div",{className:"mt-6 flex space-x-4",children:[(0,c.jsx)(b.Z,{onClick:o,disabled:t,children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:m,variant:"secondary",disabled:t,children:"Reset to Defaults"})]})]})};let{Title:ae}=en.default;var as=e=>{let{accessToken:s,premiumUser:t,alerts:l}=e,a=async()=>{if(!s)return;let e={};l.filter(e=>"email"===e.name).forEach(s=>{var t;Object.entries(null!==(t=s.variables)&&void 0!==t?t:{}).forEach(s=>{let[t,l]=s,a=document.querySelector('input[name="'.concat(t,'"]'));a&&a.value&&(e[t]=null==a?void 0:a.value)})}),console.log("updatedVariables",e);try{await (0,j.setCallbacksCall)(s,{general_settings:{alerting:["email"]},environment_variables:e}),eo.Z.success("Email settings updated successfully")}catch(e){eo.Z.fromBackend(e)}};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"mt-6 mb-6",children:(0,c.jsx)(l9,{accessToken:s})}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(ae,{level:4,children:"Email Server Settings"}),(0,c.jsxs)(k.Z,{children:[(0,c.jsxs)("a",{href:"https://docs.litellm.ai/docs/proxy/email",target:"_blank",style:{color:"blue"},children:[" ","LiteLLM Docs: email alerts"]})," ",(0,c.jsx)("br",{})]}),(0,c.jsx)("div",{className:"flex w-full",children:l.filter(e=>"email"===e.name).map((e,s)=>{var l;return(0,c.jsx)(sz.Z,{children:(0,c.jsx)("ul",{children:(0,c.jsx)(y.Z,{numItems:2,children:Object.entries(null!==(l=e.variables)&&void 0!==l?l:{}).map(e=>{let[s,l]=e;return(0,c.jsxs)("li",{className:"mx-2 my-2",children:[!0!=t&&("EMAIL_LOGO_URL"===s||"EMAIL_SUPPORT_CONTACT"===s)?(0,c.jsxs)("div",{children:[(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:(0,c.jsxs)(k.Z,{className:"mt-2",children:[" ✨ ",s]})}),(0,c.jsx)(_.Z,{name:s,defaultValue:l,type:"password",disabled:!0,style:{width:"400px"}})]}):(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"mt-2",children:s}),(0,c.jsx)(_.Z,{name:s,defaultValue:l,type:"password",style:{width:"400px"}})]}),(0,c.jsxs)("p",{style:{fontSize:"small",fontStyle:"italic"},children:["SMTP_HOST"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the SMTP host address, e.g. `smtp.resend.com`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"SMTP_PORT"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the SMTP port number, e.g. `587`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"SMTP_USERNAME"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the SMTP username, e.g. `username`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"SMTP_PASSWORD"===s&&(0,c.jsx)("span",{style:{color:"red"},children:" Required * "}),"SMTP_SENDER_EMAIL"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Enter the sender email address, e.g. `sender@berri.ai`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"TEST_EMAIL_ADDRESS"===s&&(0,c.jsxs)("div",{style:{color:"gray"},children:["Email Address to send `Test Email Alert` to. example: `info@berri.ai`",(0,c.jsx)("span",{style:{color:"red"},children:" Required * "})]}),"EMAIL_LOGO_URL"===s&&(0,c.jsx)("div",{style:{color:"gray"},children:"(Optional) Customize the Logo that appears in the email, pass a url to your logo"}),"EMAIL_SUPPORT_CONTACT"===s&&(0,c.jsx)("div",{style:{color:"gray"},children:"(Optional) Customize the support email address that appears in the email. Default is support@berri.ai"})]})]},s)})})})},s)})}),(0,c.jsx)(b.Z,{className:"mt-2",onClick:()=>a(),children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:async()=>{if(s)try{await (0,j.serviceHealthCheck)(s,"email"),eo.Z.success("Email test triggered. Check your configured email inbox/logs.")}catch(e){eo.Z.fromBackend(e)}},className:"mx-2",children:"Test Email Alerts"})]})]})},at=e=>{let{alertingSettings:s,handleInputChange:t,handleResetField:l,handleSubmit:a,premiumUser:r}=e,[i]=A.Z.useForm();return(0,c.jsxs)(A.Z,{form:i,onFinish:()=>{console.log("INSIDE ONFINISH");let e=i.getFieldsValue(),s=Object.entries(e).every(e=>{let[s,t]=e;return"boolean"!=typeof t&&(""===t||null==t)});console.log("formData: ".concat(JSON.stringify(e),", isEmpty: ").concat(s)),s?console.log("Some form fields are empty."):a(e)},labelAlign:"left",children:[s.map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsxs)(sz.Z,{align:"center",children:[(0,c.jsx)(k.Z,{children:e.field_name}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:e.field_description})]}),e.premium_field?r?(0,c.jsx)(A.Z.Item,{name:e.field_name,children:(0,c.jsx)(sz.Z,{children:"Integer"===e.field_type?(0,c.jsx)(e8.Z,{step:1,value:e.field_value,onChange:s=>t(e.field_name,s)}):"Boolean"===e.field_type?(0,c.jsx)(tX.Z,{checked:e.field_value,onChange:s=>t(e.field_name,s)}):(0,c.jsx)(P.default,{value:e.field_value,onChange:s=>t(e.field_name,s)})})}):(0,c.jsx)(sz.Z,{children:(0,c.jsx)(b.Z,{className:"flex items-center justify-center",children:(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"✨ Enterprise Feature"})})}):(0,c.jsx)(A.Z.Item,{name:e.field_name,className:"mb-0",valuePropName:"Boolean"===e.field_type?"checked":"value",children:(0,c.jsx)(sz.Z,{children:"Integer"===e.field_type?(0,c.jsx)(e8.Z,{step:1,value:e.field_value,onChange:s=>t(e.field_name,s),className:"p-0"}):"Boolean"===e.field_type?(0,c.jsx)(tX.Z,{checked:e.field_value,onChange:s=>{t(e.field_name,s),i.setFieldsValue({[e.field_name]:s})}}):(0,c.jsx)(P.default,{value:e.field_value,onChange:s=>t(e.field_name,s)})})}),(0,c.jsx)(sz.Z,{children:!0==e.stored_in_db?(0,c.jsx)(se.Z,{icon:eb.Z,className:"text-white",children:"In DB"}):!1==e.stored_in_db?(0,c.jsx)(se.Z,{className:"text-gray bg-white outline",children:"In Config"}):(0,c.jsx)(se.Z,{className:"text-gray bg-white outline",children:"Not Set"})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(sD.Z,{icon:W.Z,color:"red",onClick:()=>l(e.field_name,s),children:"Reset"})})]},s)),(0,c.jsx)("div",{children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Update Settings"})})]})},al=e=>{let{accessToken:s,premiumUser:t}=e,[l,a]=(0,d.useState)([]);return(0,d.useEffect)(()=>{s&&(0,j.alertingSettingsCall)(s).then(e=>{a(e)})},[s]),(0,c.jsx)(at,{alertingSettings:l,handleInputChange:(e,s)=>{let t=l.map(t=>t.field_name===e?{...t,field_value:s}:t);console.log("updatedSettings: ".concat(JSON.stringify(t))),a(t)},handleResetField:(e,t)=>{if(s)try{let s=l.map(s=>s.field_name===e?{...s,stored_in_db:null,field_value:s.field_default_value}:s);a(s)}catch(e){console.log("ERROR OCCURRED!")}},handleSubmit:e=>{if(!s||(console.log("formValues: ".concat(e)),null==e||void 0==e))return;let t={};l.forEach(e=>{t[e.field_name]=e.field_value});let a={...e,...t};console.log("mergedFormValues: ".concat(JSON.stringify(a)));let{slack_alerting:r,...i}=a;console.log("slack_alerting: ".concat(r,", alertingArgs: ").concat(JSON.stringify(i)));try{(0,j.updateConfigFieldSetting)(s,"alerting_args",i),"boolean"==typeof r&&(!0==r?(0,j.updateConfigFieldSetting)(s,"alerting",["slack"]):(0,j.updateConfigFieldSetting)(s,"alerting",[])),eo.Z.success("Wait 10s for proxy to update.")}catch(e){}},premiumUser:t})},aa=t(38994);let{Title:ar,Paragraph:ai}=en.default;var an=e=>{let{accessToken:s,userRole:t,userID:l,premiumUser:a}=e,[r,n]=(0,d.useState)([]),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(!1),[h]=A.Z.useForm(),[p]=A.Z.useForm(),[g,f]=(0,d.useState)(null),[v,N]=(0,d.useState)(""),[Z,w]=(0,d.useState)({}),[S,C]=(0,d.useState)([]),[E,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)([]),[F,R]=(0,d.useState)([]),[z,U]=(0,d.useState)(!1),[q,V]=(0,d.useState)(null),[B,K]=(0,d.useState)(!1),[H,Y]=(0,d.useState)(null);(0,d.useEffect)(()=>{if(z&&q){let e=Object.fromEntries(Object.entries(q.variables||{}).map(e=>{let[s,t]=e;return[s,null!=t?t:""]}));p.setFieldsValue(e)}},[z,q,p]);let J=e=>{S.includes(e)?C(S.filter(s=>s!==e)):C([...S,e])},Q={llm_exceptions:"LLM Exceptions",llm_too_slow:"LLM Responses Too Slow",llm_requests_hanging:"LLM Requests Hanging",budget_alerts:"Budget Alerts (API Keys, Users)",db_exceptions:"Database Exceptions (Read/Write)",daily_reports:"Weekly/Monthly Spend Reports",outage_alerts:"Outage Alerts",region_outage_alerts:"Region Outage Alerts"};(0,d.useEffect)(()=>{s&&t&&l&&(0,j.getCallbacksCall)(s,l,t).then(e=>{n(e.callbacks),D(e.available_callbacks);let s=e.alerts;if(s&&s.length>0){let e=s[0],t=e.variables.SLACK_WEBHOOK_URL;C(e.active_alerts),N(t),w(e.alerts_to_webhook)}m(s)})},[s,t,l]);let X=e=>S&&S.includes(e),ee=async e=>{if(!s||!q)return;let a={};Object.entries(e).forEach(e=>{let[s,t]=e;"callback"!==s&&(a[s]=t)});let r={environment_variables:e,litellm_settings:{success_callback:[q.name]}};try{if(await (0,j.setCallbacksCall)(s,r),eo.Z.success("Callback updated successfully"),U(!1),p.resetFields(),V(null),l&&t){let e=await (0,j.getCallbacksCall)(s,l,t);n(e.callbacks)}}catch(e){eo.Z.fromBackend(e)}},es=async e=>{if(!s)return;let a=null==e?void 0:e.callback,r={};Object.entries(e).forEach(e=>{let[s,t]=e;"callback"!==s&&(r[s]=t)});try{await (0,j.setCallbacksCall)(s,{environment_variables:e,litellm_settings:{success_callback:[a]}}),eo.Z.success("Callback ".concat(a," added successfully")),M(!1),h.resetFields(),f(null),R([]);let r=await (0,j.getCallbacksCall)(s,l||"",t||"");n(r.callbacks)}catch(e){eo.Z.fromBackend(e)}},el=e=>{f(e.litellm_callback_name),e&&e.litellm_callback_params?R(e.litellm_callback_params):R([])},ea=async()=>{if(!s)return;let e={};Object.entries(Q).forEach(s=>{let[t,l]=s,a=document.querySelector('input[name="'.concat(t,'"]')),r=(null==a?void 0:a.value)||"";e[t]=r});try{await (0,j.setCallbacksCall)(s,{general_settings:{alert_to_webhook_url:e,alert_types:S}})}catch(e){eo.Z.fromBackend(e)}eo.Z.success("Alerts updated successfully")},er=e=>{Y(e),K(!0)},en=async()=>{if(H&&s)try{if(await (0,j.deleteCallback)(s,H),eo.Z.success("Callback ".concat(H," deleted successfully")),l&&t){let e=await (0,j.getCallbacksCall)(s,l,t);n(e.callbacks)}K(!1),Y(null)}catch(e){console.error("Failed to delete callback:",e),eo.Z.fromBackend(e)}};return s?(0,c.jsxs)("div",{className:"w-full mx-4",children:[(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"line",defaultValue:"1",children:[(0,c.jsx)(ss.Z,{value:"1",children:"Logging Callbacks"}),(0,c.jsx)(ss.Z,{value:"2",children:"Alerting Types"}),(0,c.jsx)(ss.Z,{value:"3",children:"Alerting Settings"}),(0,c.jsx)(ss.Z,{value:"4",children:"Email Alerts"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)(ar,{level:4,children:"Active Logging Callbacks"}),(0,c.jsx)(y.Z,{numItems:2,children:(0,c.jsx)(G.Z,{className:"max-h-[50vh]",children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sq.Z,{children:"Callback Name"})})}),(0,c.jsx)(sR.Z,{children:r.map((e,t)=>(0,c.jsxs)(sV.Z,{className:"flex justify-between",children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:e.name})}),(0,c.jsx)(sz.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"flex justify-between",children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>{V(e),U(!0)}}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>er(e.name),className:"text-red-500 hover:text-red-700 cursor-pointer"}),(0,c.jsx)(b.Z,{onClick:async()=>{try{await (0,j.serviceHealthCheck)(s,e.name),eo.Z.success("Health check triggered")}catch(e){eo.Z.fromBackend((0,sZ.O)(e))}},className:"ml-2",variant:"secondary",children:"Test Callback"})]})})]},t))})]})})}),(0,c.jsx)(b.Z,{className:"mt-2",onClick:()=>M(!0),children:"Add Callback"})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(k.Z,{className:"my-2",children:["Alerts are only supported for Slack Webhook URLs. Get your webhook urls from"," ",(0,c.jsx)("a",{href:"https://api.slack.com/messaging/webhooks",target:"_blank",style:{color:"blue"},children:"here"})]}),(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{}),(0,c.jsx)(sq.Z,{}),(0,c.jsx)(sq.Z,{children:"Slack Webhook URL"})]})}),(0,c.jsx)(sR.Z,{children:Object.entries(Q).map((e,s)=>{let[t,l]=e;return(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:"region_outage_alerts"==t?a?(0,c.jsx)(tX.Z,{id:"switch",name:"switch",checked:X(t),onChange:()=>J(t)}):(0,c.jsx)(b.Z,{className:"flex items-center justify-center",children:(0,c.jsx)("a",{href:"https://forms.gle/W3U4PZpJGFHWtHyA9",target:"_blank",children:"✨ Enterprise Feature"})}):(0,c.jsx)(tX.Z,{id:"switch",name:"switch",checked:X(t),onChange:()=>J(t)})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:l})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(_.Z,{name:t,type:"password",defaultValue:Z&&Z[t]?Z[t]:v})})]},s)})})]}),(0,c.jsx)(b.Z,{size:"xs",className:"mt-2",onClick:ea,children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:async()=>{try{await (0,j.serviceHealthCheck)(s,"slack"),eo.Z.success("Alert test triggered. Test request to slack made - check logs/alerts on slack to verify")}catch(e){eo.Z.fromBackend((0,sZ.O)(e))}},className:"mx-2",children:"Test Alerts"})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(al,{accessToken:s,premiumUser:a})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(as,{accessToken:s,premiumUser:a,alerts:o})})]})]})}),(0,c.jsxs)(T.Z,{title:"Add Logging Callback",visible:E,width:800,onCancel:()=>{M(!1),f(null),R([])},footer:null,children:[(0,c.jsxs)("a",{href:"https://docs.litellm.ai/docs/proxy/logging",className:"mb-8 mt-4",target:"_blank",style:{color:"blue"},children:[" ","LiteLLM Docs: Logging"]}),(0,c.jsx)(A.Z,{form:h,onFinish:es,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(aa.Z,{label:"Callback",name:"callback",rules:[{required:!0,message:"Please select a callback"}],children:(0,c.jsx)(I.default,{onChange:e=>{let s=O[e];s&&el(s)},children:Object.entries(i).map(e=>{var s;let[t,l]=e;return(0,c.jsx)(ei.Z,{value:$[t],children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(null===(s=et[l])||void 0===s?void 0:s.logo)?(0,c.jsx)("div",{className:"w-5 h-5 flex items-center justify-center",children:(0,c.jsx)("img",{src:et[l].logo,alt:"".concat(t," logo"),className:"w-5 h-5",onError:e=>{e.currentTarget.style.display="none"}})}):(0,c.jsx)("div",{className:"w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",children:l.charAt(0).toUpperCase()}),(0,c.jsx)("span",{children:l})]})},l)})})}),F&&F.map(e=>(0,c.jsx)(aa.Z,{label:e,name:e,rules:[{required:!0,message:"Please enter the value for "+e}],children:(0,c.jsx)(P.default.Password,{})},e)),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})})]})})]}),(0,c.jsx)(T.Z,{visible:z,width:800,title:"Edit ".concat(null==q?void 0:q.name," Settings"),onCancel:()=>{U(!1),V(null)},footer:null,children:(0,c.jsxs)(A.Z,{form:p,onFinish:ee,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(c.Fragment,{children:q&&q.variables&&Object.entries(q.variables).map(e=>{let[s]=e;return(0,c.jsx)(aa.Z,{label:s,name:s,rules:[{required:!0,message:"Please enter the value for ".concat(s)}],children:(0,c.jsx)(P.default.Password,{})},s)})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})})]})}),(0,c.jsx)(T.Z,{title:"Confirm Delete",visible:B,onOk:en,onCancel:()=>{K(!1),Y(null)},okText:"Delete",cancelText:"Cancel",okButtonProps:{danger:!0},children:(0,c.jsxs)("p",{children:["Are you sure you want to delete the callback - ",H,"? This action cannot be undone."]})})]}):null},ao=t(54250),ac=t(70450),ad=e=>{let{models:s,accessToken:t,routerSettings:l,setRouterSettings:a}=e,[r]=A.Z.useForm(),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(""),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]);(0,d.useEffect)(()=>{(async()=>{try{let e=await eG(t);console.log("Fetched models for fallbacks:",e),x(e)}catch(e){console.error("Error fetching model info for fallbacks:",e)}})()},[t]);let g=()=>{n(!1),r.resetFields(),p([]),m("")};return(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{className:"mx-auto",onClick:()=>n(!0),icon:()=>(0,c.jsx)("span",{className:"mr-1",children:"+"}),children:"Add Fallbacks"}),(0,c.jsx)(T.Z,{title:(0,c.jsx)("div",{className:"pb-4 border-b border-gray-100",children:(0,c.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add Fallbacks"})}),open:i,width:900,footer:null,onOk:()=>{n(!1),r.resetFields(),p([]),m("")},onCancel:g,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,c.jsxs)("div",{className:"mt-6",children:[(0,c.jsx)("div",{className:"mb-6",children:(0,c.jsx)("p",{className:"text-gray-600",children:"Configure fallback models to improve reliability. When the primary model fails or is unavailable, requests will automatically route to the specified fallback models in order."})}),(0,c.jsxs)(A.Z,{form:r,onFinish:e=>{console.log(e);let{model_name:s,models:i}=e,o=[...l.fallbacks||[],{[s]:i}],c={...l,fallbacks:o};console.log(c);try{(0,j.setCallbacksCall)(t,{router_settings:c}),a(c)}catch(e){eo.Z.fromBackend("Failed to update router settings: "+e)}eo.Z.success("router settings updated successfully"),n(!1),r.resetFields(),p([]),m("")},layout:"vertical",className:"space-y-6",children:[(0,c.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,c.jsxs)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Primary Model ",(0,c.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"model_name",rules:[{required:!0,message:"Please select the primary model that needs fallbacks"}],className:"!mb-0",children:[(0,c.jsx)(ao.Z,{placeholder:"Select the model that needs fallback protection",value:o,onValueChange:e=>{m(e);let s=h.filter(s=>s!==e);p(s),r.setFieldValue("models",s),r.setFieldValue("model_name",e)},children:Array.from(new Set(u.map(e=>e.model_group))).map((e,s)=>(0,c.jsx)(ac.Z,{value:e,children:e},s))}),(0,c.jsx)("p",{className:"text-sm text-gray-500 mt-1",children:"This is the primary model that users will request"})]}),(0,c.jsx)("div",{className:"border-t border-gray-200 my-6"}),(0,c.jsxs)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Fallback Models (select multiple) ",(0,c.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"models",rules:[{required:!0,message:"Please select at least one fallback model"}],className:"!mb-0",children:[(0,c.jsxs)("div",{className:"space-y-3",children:[h.length>0&&(0,c.jsxs)("div",{className:"border border-gray-200 rounded-lg p-3 bg-gray-50",children:[(0,c.jsx)("p",{className:"text-sm font-medium text-gray-700 mb-2",children:"Fallback Order:"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:h.map((e,s)=>(0,c.jsxs)("div",{className:"flex items-center bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm",children:[(0,c.jsxs)("span",{className:"font-medium mr-2",children:[s+1,"."]}),(0,c.jsx)("span",{children:e}),(0,c.jsx)("button",{type:"button",onClick:()=>{let s=h.filter(s=>s!==e);p(s),r.setFieldValue("models",s)},className:"ml-2 text-blue-600 hover:text-blue-800",children:"\xd7"})]},e))})]}),(0,c.jsx)(ao.Z,{placeholder:"Add a fallback model",value:"",onValueChange:e=>{if(e&&!h.includes(e)){let s=[...h,e];p(s),r.setFieldValue("models",s)}},children:Array.from(new Set(u.map(e=>e.model_group))).filter(e=>e!==o&&!h.includes(e)).sort().map(e=>(0,c.jsx)(ac.Z,{value:e,children:e},e))})]}),(0,c.jsxs)("p",{className:"text-sm text-gray-500 mt-1",children:[(0,c.jsx)("strong",{children:"Order matters:"})," Models will be tried in the order shown above (1st, 2nd, 3rd, etc.)"]})]})]}),(0,c.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:g,children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",type:"submit",children:"Add Fallbacks"})]})]})]})})]})},am=t(26433);async function au(e,s){console.log=function(){},console.log("isLocal:",!1);let t=window.location.origin,l=new am.ZP.OpenAI({apiKey:s,baseURL:t,dangerouslyAllowBrowser:!0});try{let s=await l.chat.completions.create({model:e,messages:[{role:"user",content:"Hi, this is a test message"}],mock_testing_fallbacks:!0});eo.Z.success((0,c.jsxs)("span",{children:["Test model=",(0,c.jsx)("strong",{children:e}),", received model=",(0,c.jsx)("strong",{children:s.model}),". See"," ",(0,c.jsx)("a",{href:"#",onClick:()=>window.open("https://docs.litellm.ai/docs/proxy/reliability","_blank"),style:{textDecoration:"underline",color:"blue"},children:"curl"})]}))}catch(e){eo.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e))}}let ax={ttl:3600,lowest_latency_buffer:0},ah=e=>{let{selectedStrategy:s,strategyArgs:t,paramExplanation:l}=e;return(0,c.jsxs)(N.Z,{children:[(0,c.jsx)(w.Z,{className:"text-sm font-medium text-tremor-content-strong dark:text-dark-tremor-content-strong",children:"Routing Strategy Specific Args"}),(0,c.jsx)(Z.Z,{children:"latency-based-routing"==s?(0,c.jsx)(G.Z,{children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Setting"}),(0,c.jsx)(sq.Z,{children:"Value"})]})}),(0,c.jsx)(sR.Z,{children:Object.entries(t).map(e=>{let[s,t]=e;return(0,c.jsxs)(sV.Z,{children:[(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(k.Z,{children:s}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:l[s]})]}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(_.Z,{name:s,defaultValue:"object"==typeof t?JSON.stringify(t,null,2):t.toString()})})]},s)})})]})}):(0,c.jsx)(k.Z,{children:"No specific settings"})})]})};var ap=e=>{let{accessToken:s,userRole:t,userID:l,modelData:a}=e,[r,i]=(0,d.useState)({}),[n,o]=(0,d.useState)({}),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1),[p]=A.Z.useForm(),[g,f]=(0,d.useState)(null),[N,Z]=(0,d.useState)(null),[w,C]=(0,d.useState)(null),I={routing_strategy_args:"(dict) Arguments to pass to the routing strategy",routing_strategy:"(string) Routing strategy to use",allowed_fails:"(int) Number of times a deployment can fail before being added to cooldown",cooldown_time:"(int) time in seconds to cooldown a deployment after failure",num_retries:"(int) Number of retries for failed requests. Defaults to 0.",timeout:"(float) Timeout for requests. Defaults to None.",retry_after:"(int) Minimum time to wait before retrying a failed request",ttl:"(int) Sliding window to look back over when calculating the average latency of a deployment. Default - 1 hour (in seconds).",lowest_latency_buffer:"(float) Shuffle between deployments within this % of the lowest latency. Default - 0 (i.e. always pick lowest latency)."};(0,d.useEffect)(()=>{s&&t&&l&&((0,j.getCallbacksCall)(s,l,t).then(e=>{console.log("callbacks",e);let s=e.router_settings;"model_group_retry_policy"in s&&delete s.model_group_retry_policy,i(s)}),(0,j.getGeneralSettingsCall)(s).then(e=>{u(e)}))},[s,t,l]);let T=async e=>{if(!s)return;console.log("received key: ".concat(e)),console.log("routerSettings['fallbacks']: ".concat(r.fallbacks));let t=r.fallbacks.map(s=>(e in s&&delete s[e],s)).filter(e=>Object.keys(e).length>0),l={...r,fallbacks:t};try{await (0,j.setCallbacksCall)(s,{router_settings:l}),i(l),eo.Z.success("Router settings updated successfully")}catch(e){eo.Z.fromBackend("Failed to update router settings: "+e)}},E=(e,s)=>{u(m.map(t=>t.field_name===e?{...t,field_value:s}:t))},L=(e,t)=>{if(!s)return;let l=m[t].field_value;if(null!=l&&void 0!=l)try{(0,j.updateConfigFieldSetting)(s,e,l);let t=m.map(s=>s.field_name===e?{...s,stored_in_db:!0}:s);u(t)}catch(e){}},P=(e,t)=>{if(s)try{(0,j.deleteConfigFieldSetting)(s,e);let t=m.map(s=>s.field_name===e?{...s,stored_in_db:null,field_value:null}:s);u(t)}catch(e){}},M=e=>{if(!s)return;console.log("router_settings",e);let t=new Set(["allowed_fails","cooldown_time","num_retries","timeout","retry_after"]),l=new Set(["model_group_alias","retry_policy"]),a=(e,s,a)=>{if(void 0===s)return a;let r=s.trim();if("null"===r.toLowerCase())return null;if(t.has(e)){let e=Number(r);return Number.isNaN(e)?a:e}if(l.has(e)){if(""===r)return null;try{return JSON.parse(r)}catch(e){return a}}return"true"===r.toLowerCase()||"false"!==r.toLowerCase()&&r},r=Object.fromEntries(Object.entries(e).map(e=>{let[s,t]=e;if("routing_strategy_args"!==s&&"routing_strategy"!==s){let e=document.querySelector('input[name="'.concat(s,'"]')),l=a(s,null==e?void 0:e.value,t);return[s,l]}if("routing_strategy"===s)return[s,N];if("routing_strategy_args"===s&&"latency-based-routing"===N){let e={},s=document.querySelector('input[name="lowest_latency_buffer"]'),t=document.querySelector('input[name="ttl"]');return(null==s?void 0:s.value)&&(e.lowest_latency_buffer=Number(s.value)),(null==t?void 0:t.value)&&(e.ttl=Number(t.value)),console.log("setRoutingStrategyArgs: ".concat(e)),["routing_strategy_args",e]}return null}).filter(e=>null!=e));console.log("updatedVariables",r);try{(0,j.setCallbacksCall)(s,{router_settings:r})}catch(e){eo.Z.fromBackend("Failed to update router settings: "+e)}eo.Z.success("router settings updated successfully")};return s?(0,c.jsx)("div",{className:"w-full mx-4",children:(0,c.jsxs)(st.Z,{className:"gap-2 p-8 h-[75vh] w-full mt-2",children:[(0,c.jsxs)(sl.Z,{variant:"line",defaultValue:"1",children:[(0,c.jsx)(ss.Z,{value:"1",children:"Loadbalancing"}),(0,c.jsx)(ss.Z,{value:"2",children:"Fallbacks"}),(0,c.jsx)(ss.Z,{value:"3",children:"General"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 p-8 w-full mt-2",children:[(0,c.jsx)(S.Z,{children:"Router Settings"}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Setting"}),(0,c.jsx)(sq.Z,{children:"Value"})]})}),(0,c.jsx)(sR.Z,{children:Object.entries(r).filter(e=>{let[s,t]=e;return"fallbacks"!=s&&"context_window_fallbacks"!=s&&"routing_strategy_args"!=s}).map(e=>{let[s,t]=e;return(0,c.jsxs)(sV.Z,{children:[(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(k.Z,{children:s}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:I[s]})]}),(0,c.jsx)(sz.Z,{children:"routing_strategy"==s?(0,c.jsxs)(e9.Z,{defaultValue:t,className:"w-full max-w-md",onValueChange:Z,children:[(0,c.jsx)(ei.Z,{value:"usage-based-routing",children:"usage-based-routing"}),(0,c.jsx)(ei.Z,{value:"latency-based-routing",children:"latency-based-routing"}),(0,c.jsx)(ei.Z,{value:"simple-shuffle",children:"simple-shuffle"})]}):(0,c.jsx)(_.Z,{name:s,defaultValue:"object"==typeof t?JSON.stringify(t,null,2):t.toString()})})]},s)})})]}),(0,c.jsx)(ah,{selectedStrategy:N,strategyArgs:r&&r.routing_strategy_args&&Object.keys(r.routing_strategy_args).length>0?r.routing_strategy_args:ax,paramExplanation:I})]}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(b.Z,{className:"mt-2",onClick:()=>M(r),children:"Save Changes"})})]})}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Model Name"}),(0,c.jsx)(sq.Z,{children:"Fallbacks"})]})}),(0,c.jsx)(sR.Z,{children:r.fallbacks&&r.fallbacks.map((e,t)=>Object.entries(e).map(e=>{let[l,a]=e;return(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:l}),(0,c.jsx)(sz.Z,{children:Array.isArray(a)?a.join(", "):a}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(b.Z,{onClick:()=>au(l,s),children:"Test Fallback"})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>T(l)})})]},t.toString()+l)}))})]}),(0,c.jsx)(ad,{models:(null==a?void 0:a.data)?a.data.map(e=>e.model_name):[],accessToken:s,routerSettings:r,setRouterSettings:i})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(G.Z,{children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Setting"}),(0,c.jsx)(sq.Z,{children:"Value"}),(0,c.jsx)(sq.Z,{children:"Status"}),(0,c.jsx)(sq.Z,{children:"Action"})]})}),(0,c.jsx)(sR.Z,{children:m.filter(e=>"TypedDictionary"!==e.field_type).map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(k.Z,{children:e.field_name}),(0,c.jsx)("p",{style:{fontSize:"0.65rem",color:"#808080",fontStyle:"italic"},className:"mt-1",children:e.field_description})]}),(0,c.jsx)(sz.Z,{children:"Integer"==e.field_type?(0,c.jsx)(e8.Z,{step:1,value:e.field_value,onChange:s=>E(e.field_name,s)}):null}),(0,c.jsx)(sz.Z,{children:!0==e.stored_in_db?(0,c.jsx)(se.Z,{icon:eb.Z,className:"text-white",children:"In DB"}):!1==e.stored_in_db?(0,c.jsx)(se.Z,{className:"text-gray bg-white outline",children:"In Config"}):(0,c.jsx)(se.Z,{className:"text-gray bg-white outline",children:"Not Set"})}),(0,c.jsxs)(sz.Z,{children:[(0,c.jsx)(b.Z,{onClick:()=>L(e.field_name,s),children:"Update"}),(0,c.jsx)(sD.Z,{icon:W.Z,color:"red",onClick:()=>P(e.field_name,s),children:"Reset"})]})]},s))})]})})})]})]})}):null},ag=e=>{let{isModalVisible:s,accessToken:t,setIsModalVisible:l,setBudgetList:a}=e,[r]=A.Z.useForm(),i=async e=>{if(null!=t&&void 0!=t)try{eo.Z.info("Making API Call");let s=await (0,j.budgetCreateCall)(t,e);console.log("key create Response:",s),a(e=>e?[...e,s]:[s]),eo.Z.success("Budget Created"),r.resetFields()}catch(e){console.error("Error creating the key:",e),eo.Z.fromBackend("Error creating the key: ".concat(e))}};return(0,c.jsx)(T.Z,{title:"Create Budget",visible:s,width:800,footer:null,onOk:()=>{l(!1),r.resetFields()},onCancel:()=>{l(!1),r.resetFields()},children:(0,c.jsxs)(A.Z,{form:r,onFinish:i,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Budget ID",name:"budget_id",rules:[{required:!0,message:"Please input a human-friendly name for the budget"}],help:"A human-friendly name for the budget",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"Max Tokens per minute",name:"tpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e8.Z,{step:1,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Max Requests per minute",name:"rpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e8.Z,{step:1,precision:2,width:200})}),(0,c.jsxs)(N.Z,{className:"mt-20 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Optional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(e8.Z,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})})]})]})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Create Budget"})})]})})},aj=e=>{let{isModalVisible:s,accessToken:t,setIsModalVisible:l,setBudgetList:a,existingBudget:r,handleUpdateCall:i}=e;console.log("existingBudget",r);let[n]=A.Z.useForm();(0,d.useEffect)(()=>{n.setFieldsValue(r)},[r,n]);let o=async e=>{if(null!=t&&void 0!=t)try{eo.Z.info("Making API Call"),l(!0);let s=await (0,j.budgetUpdateCall)(t,e);a(e=>e?[...e,s]:[s]),eo.Z.success("Budget Updated"),n.resetFields(),i()}catch(e){console.error("Error creating the key:",e),eo.Z.fromBackend("Error creating the key: ".concat(e))}};return(0,c.jsx)(T.Z,{title:"Edit Budget",visible:s,width:800,footer:null,onOk:()=>{l(!1),n.resetFields()},onCancel:()=>{l(!1),n.resetFields()},children:(0,c.jsxs)(A.Z,{form:n,onFinish:o,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",initialValues:r,children:[(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{label:"Budget ID",name:"budget_id",rules:[{required:!0,message:"Please input a human-friendly name for the budget"}],help:"A human-friendly name for the budget",children:(0,c.jsx)(_.Z,{placeholder:""})}),(0,c.jsx)(A.Z.Item,{label:"Max Tokens per minute",name:"tpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e8.Z,{step:1,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{label:"Max Requests per minute",name:"rpm_limit",help:"Default is model limit.",children:(0,c.jsx)(e8.Z,{step:1,precision:2,width:200})}),(0,c.jsxs)(N.Z,{className:"mt-20 mb-8",children:[(0,c.jsx)(w.Z,{children:(0,c.jsx)("b",{children:"Optional Settings"})}),(0,c.jsxs)(Z.Z,{children:[(0,c.jsx)(A.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,c.jsx)(e8.Z,{step:.01,precision:2,width:200})}),(0,c.jsx)(A.Z.Item,{className:"mt-8",label:"Reset Budget",name:"budget_duration",children:(0,c.jsxs)(I.default,{defaultValue:null,placeholder:"n/a",children:[(0,c.jsx)(I.default.Option,{value:"24h",children:"daily"}),(0,c.jsx)(I.default.Option,{value:"7d",children:"weekly"}),(0,c.jsx)(I.default.Option,{value:"30d",children:"monthly"})]})})]})]})]}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(L.ZP,{htmlType:"submit",children:"Save"})})]})})},af=t(17906),av=e=>{let{accessToken:s}=e,[t,l]=(0,d.useState)(!1),[a,r]=(0,d.useState)(!1),[i,n]=(0,d.useState)(null),[o,m]=(0,d.useState)([]);(0,d.useEffect)(()=>{s&&(0,j.getBudgetList)(s).then(e=>{m(e)})},[s]);let u=async(e,t)=>{console.log("budget_id",e),null!=s&&(n(o.find(s=>s.budget_id===e)||null),r(!0))},x=async(e,t)=>{if(null==s)return;eo.Z.info("Request made"),await (0,j.budgetDeleteCall)(s,e);let l=[...o];l.splice(t,1),m(l),eo.Z.success("Budget Deleted.")},h=async()=>{null!=s&&(0,j.getBudgetList)(s).then(e=>{m(e)})};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[(0,c.jsx)(b.Z,{size:"sm",variant:"primary",className:"mb-2",onClick:()=>l(!0),children:"+ Create Budget"}),(0,c.jsx)(ag,{accessToken:s,isModalVisible:t,setIsModalVisible:l,setBudgetList:m}),i&&(0,c.jsx)(aj,{accessToken:s,isModalVisible:a,setIsModalVisible:r,setBudgetList:m,existingBudget:i,handleUpdateCall:h}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Create a budget to assign to customers."}),(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Budget ID"}),(0,c.jsx)(sq.Z,{children:"Max Budget"}),(0,c.jsx)(sq.Z,{children:"TPM"}),(0,c.jsx)(sq.Z,{children:"RPM"})]})}),(0,c.jsx)(sR.Z,{children:o.slice().sort((e,s)=>new Date(s.updated_at).getTime()-new Date(e.updated_at).getTime()).map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e.budget_id}),(0,c.jsx)(sz.Z,{children:e.max_budget?e.max_budget:"n/a"}),(0,c.jsx)(sz.Z,{children:e.tpm_limit?e.tpm_limit:"n/a"}),(0,c.jsx)(sz.Z,{children:e.rpm_limit?e.rpm_limit:"n/a"}),(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>u(e.budget_id,s)}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>x(e.budget_id,s)})]},s))})]})]}),(0,c.jsxs)("div",{className:"mt-5",children:[(0,c.jsx)(k.Z,{className:"text-base",children:"How to use budget id"}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{children:[(0,c.jsx)(ss.Z,{children:"Assign Budget to Customer"}),(0,c.jsx)(ss.Z,{children:"Test it (Curl)"}),(0,c.jsx)(ss.Z,{children:"Test it (OpenAI SDK)"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"bash",children:"\ncurl -X POST --location '/end_user/new' \n-H 'Authorization: Bearer ' \n-H 'Content-Type: application/json' \n-d '{\"user_id\": \"my-customer-id', \"budget_id\": \"\"}' # \uD83D\uDC48 KEY CHANGE\n\n "})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"bash",children:'\ncurl -X POST --location \'/chat/completions\' \n-H \'Authorization: Bearer \' \n-H \'Content-Type: application/json\' \n-d \'{\n "model": "gpt-3.5-turbo\', \n "messages":[{"role": "user", "content": "Hey, how\'s it going?"}],\n "user": "my-customer-id"\n}\' # \uD83D\uDC48 KEY CHANGE\n\n '})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"python",children:'from openai import OpenAI\nclient = OpenAI(\n base_url="",\n api_key=""\n)\n\ncompletion = client.chat.completions.create(\n model="gpt-3.5-turbo",\n messages=[\n {"role": "system", "content": "You are a helpful assistant."},\n {"role": "user", "content": "Hello!"}\n ],\n user="my-customer-id"\n)\n\nprint(completion.choices[0].message)'})})]})]})]})]})},ay=t(77398),ab=t.n(ay);let a_=e=>{try{return new Date(e).toLocaleString("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0}).replace(",","")}catch(e){return"Error converting time"}},aN=e=>{let{utcTime:s}=e;return(0,c.jsx)("span",{style:{fontFamily:"monospace",width:"180px",display:"inline-block"},children:a_(s)})},aZ=(e,s)=>{var t,l;return(null===(l=e.metadata)||void 0===l?void 0:null===(t=l.mcp_tool_call_metadata)||void 0===t?void 0:t.mcp_server_logo_url)?e.metadata.mcp_tool_call_metadata.mcp_server_logo_url:s?(0,s0.dr)(s).logo:""},aw=[{id:"expander",header:()=>null,cell:e=>{let{row:s}=e;return(0,c.jsx)(()=>{let[e,t]=d.useState(s.getIsExpanded()),l=d.useCallback(()=>{t(e=>!e),s.getToggleExpandedHandler()()},[s]);return s.getCanExpand()?(0,c.jsx)("button",{onClick:l,style:{cursor:"pointer"},"aria-label":e?"Collapse row":"Expand row",className:"w-6 h-6 flex items-center justify-center focus:outline-none",children:(0,c.jsx)("svg",{className:"w-4 h-4 transform transition-transform duration-75 ".concat(e?"rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})}):(0,c.jsx)("span",{className:"w-6 h-6 flex items-center justify-center",children:"●"})},{})}},{header:"Time",accessorKey:"startTime",cell:e=>(0,c.jsx)(aN,{utcTime:e.getValue()})},{header:"Status",accessorKey:"metadata.status",cell:e=>{let s="failure"!==(e.getValue()||"Success").toLowerCase();return(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block text-center w-16 ".concat(s?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:s?"Success":"Failure"})}},{header:"Session ID",accessorKey:"session_id",cell:e=>{let s=String(e.getValue()||""),t=e.row.original.onSessionClick;return(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal text-xs max-w-[15ch] truncate block",onClick:()=>null==t?void 0:t(s),children:String(e.getValue()||"")})})}},{header:"Request ID",accessorKey:"request_id",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)("span",{className:"font-mono text-xs max-w-[15ch] truncate block",children:String(e.getValue()||"")})})},{header:"Cost",accessorKey:"spend",cell:e=>(0,c.jsxs)("span",{children:["$",eP(e.getValue()||0,6)]})},{header:"Duration (s)",accessorKey:"duration",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Team Name",accessorKey:"metadata.user_api_key_team_alias",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Key Hash",accessorKey:"metadata.user_api_key",cell:e=>{let s=String(e.getValue()||"-"),t=e.row.original.onKeyHashClick;return(0,c.jsx)(B.Z,{title:s,children:(0,c.jsx)("span",{className:"font-mono max-w-[15ch] truncate block cursor-pointer hover:text-blue-600",onClick:()=>null==t?void 0:t(s),children:s})})}},{header:"Key Name",accessorKey:"metadata.user_api_key_alias",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Model",accessorKey:"model",cell:e=>{let s=e.row.original,t=s.custom_llm_provider,l=String(e.getValue()||"");return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[t&&(0,c.jsx)("img",{src:aZ(s,t),alt:"",className:"w-4 h-4",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)(B.Z,{title:l,children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:l})})]})}},{header:"Tokens",accessorKey:"total_tokens",cell:e=>{let s=e.row.original;return(0,c.jsxs)("span",{className:"text-sm",children:[String(s.total_tokens||"0"),(0,c.jsxs)("span",{className:"text-gray-400 text-xs ml-1",children:["(",String(s.prompt_tokens||"0"),"+",String(s.completion_tokens||"0"),")"]})]})}},{header:"Internal User",accessorKey:"user",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"End User",accessorKey:"end_user",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||"-"),children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:String(e.getValue()||"-")})})},{header:"Tags",accessorKey:"request_tags",cell:e=>{let s=e.getValue();if(!s||0===Object.keys(s).length)return"-";let t=Object.entries(s),l=t[0],a=t.slice(1);return(0,c.jsx)("div",{className:"flex flex-wrap gap-1",children:(0,c.jsx)(B.Z,{title:(0,c.jsx)("div",{className:"flex flex-col gap-1",children:t.map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{children:[s,": ",String(t)]},s)})}),children:(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded-full text-xs",children:[l[0],": ",String(l[1]),a.length>0&&" +".concat(a.length)]})})})}}],ak=e=>(0,c.jsx)(se.Z,{color:"gray",className:"flex items-center gap-1",children:(0,c.jsx)("span",{className:"whitespace-nowrap text-xs",children:e})}),aS=[{id:"expander",header:()=>null,cell:e=>{let{row:s}=e;return(0,c.jsx)(()=>{let[e,t]=d.useState(s.getIsExpanded()),l=d.useCallback(()=>{t(e=>!e),s.getToggleExpandedHandler()()},[s]);return s.getCanExpand()?(0,c.jsx)("button",{onClick:l,style:{cursor:"pointer"},"aria-label":e?"Collapse row":"Expand row",className:"w-6 h-6 flex items-center justify-center focus:outline-none",children:(0,c.jsx)("svg",{className:"w-4 h-4 transform transition-transform ".concat(e?"rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})}):(0,c.jsx)("span",{className:"w-6 h-6 flex items-center justify-center",children:"●"})},{})}},{header:"Timestamp",accessorKey:"updated_at",cell:e=>(0,c.jsx)(aN,{utcTime:e.getValue()})},{header:"Table Name",accessorKey:"table_name",cell:e=>{let s=e.getValue(),t=s;switch(s){case"LiteLLM_VerificationToken":t="Keys";break;case"LiteLLM_TeamTable":t="Teams";break;case"LiteLLM_OrganizationTable":t="Organizations";break;case"LiteLLM_UserTable":t="Users";break;case"LiteLLM_ProxyModelTable":t="Models";break;default:t=s}return(0,c.jsx)("span",{children:t})}},{header:"Action",accessorKey:"action",cell:e=>(0,c.jsx)("span",{children:ak(e.getValue())})},{header:"Changed By",accessorKey:"changed_by",cell:e=>{let s=e.row.original.changed_by,t=e.row.original.changed_by_api_key;return(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsx)("div",{className:"font-medium",children:s}),t&&(0,c.jsx)(B.Z,{title:t,children:(0,c.jsxs)("div",{className:"text-xs text-muted-foreground max-w-[15ch] truncate",children:[" ",t]})})]})}},{header:"Affected Item ID",accessorKey:"object_id",cell:e=>(0,c.jsx)(()=>{let s=e.getValue(),[t,l]=(0,d.useState)(!1);if(!s)return(0,c.jsx)(c.Fragment,{children:"-"});let a=async()=>{try{await navigator.clipboard.writeText(String(s)),l(!0),setTimeout(()=>l(!1),1500)}catch(e){console.error("Failed to copy object ID: ",e)}};return(0,c.jsx)(B.Z,{title:t?"Copied!":String(s),children:(0,c.jsx)("span",{className:"max-w-[20ch] truncate block cursor-pointer hover:text-blue-600",onClick:a,children:String(s)})})},{})}],aC=async(e,s,t,l)=>{console.log("prefetchLogDetails called with",e.length,"logs");let a=e.map(e=>{if(e.request_id)return console.log("Prefetching details for request_id:",e.request_id),l.prefetchQuery({queryKey:["logDetails",e.request_id,s],queryFn:async()=>{console.log("Fetching details for",e.request_id);let l=await (0,j.uiSpendLogDetailsCall)(t,e.request_id,s);return console.log("Received details for",e.request_id,":",l?"success":"failed"),l},staleTime:6e5,gcTime:6e5})});try{let e=await Promise.all(a);return console.log("All prefetch promises completed:",e.length),e}catch(e){throw console.error("Error in prefetchLogDetails:",e),e}};function aI(e){let{row:s,hasMessages:t,hasResponse:l,hasError:a,errorInfo:r,getRawRequest:i,formattedResponse:n}=e,o=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let s=document.createElement("textarea");s.value=e,s.style.position="fixed",s.style.opacity="0",document.body.appendChild(s),s.focus(),s.select();let t=document.execCommand("copy");if(document.body.removeChild(s),!t)throw Error("execCommand failed");return!0}}catch(e){return console.error("Copy failed:",e),!1}},d=async()=>{await o(JSON.stringify(i(),null,2))?eo.Z.success("Request copied to clipboard"):eo.Z.fromBackend("Failed to copy request")},m=async()=>{await o(JSON.stringify(n(),null,2))?eo.Z.success("Response copied to clipboard"):eo.Z.fromBackend("Failed to copy response")};return(0,c.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4 w-full max-w-full overflow-hidden box-border",children:[(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b",children:[(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Request"}),(0,c.jsx)("button",{onClick:d,className:"p-1 hover:bg-gray-200 rounded",title:"Copy request",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,c.jsx)("div",{className:"p-4 overflow-auto max-h-96 w-full max-w-full box-border",children:(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all w-full max-w-full overflow-hidden break-words",children:JSON.stringify(i(),null,2)})})]}),(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b",children:[(0,c.jsxs)("h3",{className:"text-lg font-medium",children:["Response",a&&(0,c.jsxs)("span",{className:"ml-2 text-sm text-red-600",children:["• HTTP code ",(null==r?void 0:r.error_code)||400]})]}),(0,c.jsx)("button",{onClick:m,className:"p-1 hover:bg-gray-200 rounded",title:"Copy response",disabled:!l,children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,c.jsx)("div",{className:"p-4 overflow-auto max-h-96 bg-gray-50 w-full max-w-full box-border",children:l?(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all w-full max-w-full overflow-hidden break-words",children:JSON.stringify(n(),null,2)}):(0,c.jsx)("div",{className:"text-gray-500 text-sm italic text-center py-4",children:"Response data not available"})})]})]})}let aA=e=>{var s;let{errorInfo:t}=e,[l,a]=d.useState({}),[r,i]=d.useState(!1),n=e=>{a(s=>({...s,[e]:!s[e]}))},o=t.traceback&&(s=t.traceback)?Array.from(s.matchAll(/File "([^"]+)", line (\d+)/g)).map(e=>{let t=e[1],l=e[2],a=t.split("/").pop()||t,r=e.index||0,i=s.indexOf('File "',r+1),n=i>-1?s.substring(r,i).trim():s.substring(r).trim(),o=n.split("\n"),c="";return o.length>1&&(c=o[o.length-1].trim()),{filePath:t,fileName:a,lineNumber:l,code:c,inFunction:n.includes(" in ")?n.split(" in ")[1].split("\n")[0]:""}}):[];return(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsx)("div",{className:"p-4 border-b",children:(0,c.jsxs)("h3",{className:"text-lg font-medium flex items-center text-red-600",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})}),"Error Details"]})}),(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"bg-red-50 rounded-md p-4 mb-4",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"text-red-800 font-medium w-20",children:"Type:"}),(0,c.jsx)("span",{className:"text-red-700",children:t.error_class||"Unknown Error"})]}),(0,c.jsxs)("div",{className:"flex mt-2",children:[(0,c.jsx)("span",{className:"text-red-800 font-medium w-20 flex-shrink-0",children:"Message:"}),(0,c.jsx)("span",{className:"text-red-700 break-words whitespace-pre-wrap",children:t.error_message||"Unknown error occurred"})]})]}),t.traceback&&(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,c.jsx)("h4",{className:"font-medium",children:"Traceback"}),(0,c.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,c.jsx)("button",{onClick:()=>{let e=!r;if(i(e),o.length>0){let s={};o.forEach((t,l)=>{s[l]=e}),a(s)}},className:"text-gray-500 hover:text-gray-700 flex items-center text-sm",children:r?"Collapse All":"Expand All"}),(0,c.jsxs)("button",{onClick:()=>navigator.clipboard.writeText(t.traceback||""),className:"text-gray-500 hover:text-gray-700 flex items-center",title:"Copy traceback",children:[(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),(0,c.jsx)("span",{className:"ml-1",children:"Copy"})]})]})]}),(0,c.jsx)("div",{className:"bg-white rounded-md border border-gray-200 overflow-hidden shadow-sm",children:o.map((e,s)=>(0,c.jsxs)("div",{className:"border-b border-gray-200 last:border-b-0",children:[(0,c.jsxs)("div",{className:"px-4 py-2 flex items-center justify-between cursor-pointer hover:bg-gray-50",onClick:()=>n(s),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("span",{className:"text-gray-400 mr-2 w-12 text-right",children:e.lineNumber}),(0,c.jsx)("span",{className:"text-gray-600 font-medium",children:e.fileName}),(0,c.jsx)("span",{className:"text-gray-500 mx-1",children:"in"}),(0,c.jsx)("span",{className:"text-indigo-600 font-medium",children:e.inFunction||e.fileName})]}),(0,c.jsx)("svg",{className:"w-5 h-5 text-gray-500 transition-transform ".concat(l[s]?"transform rotate-180":""),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),(l[s]||!1)&&e.code&&(0,c.jsx)("div",{className:"px-12 py-2 font-mono text-sm text-gray-800 bg-gray-50 overflow-x-auto border-t border-gray-100",children:e.code})]},s))})]})]})]})},aT=e=>{let{show:s}=e;return s?(0,c.jsxs)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-4 flex items-start",children:[(0,c.jsx)("div",{className:"text-blue-500 mr-3 flex-shrink-0 mt-0.5",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,c.jsx)("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),(0,c.jsx)("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"text-sm font-medium text-blue-800",children:"Request/Response Data Not Available"}),(0,c.jsxs)("p",{className:"text-sm text-blue-700 mt-1",children:["To view request and response details, enable prompt storage in your LiteLLM configuration by adding the following to your ",(0,c.jsx)("code",{className:"bg-blue-100 px-1 py-0.5 rounded",children:"proxy_config.yaml"})," file:"]}),(0,c.jsx)("pre",{className:"mt-2 bg-white p-3 rounded border border-blue-200 text-xs font-mono overflow-auto",children:"general_settings:\n store_model_in_db: true\n store_prompts_in_spend_logs: true"}),(0,c.jsx)("p",{className:"text-xs text-blue-700 mt-2",children:"Note: This will only affect new requests after the configuration change."})]})]}):null};var aE=t(35829);let aL=e=>{let{sessionId:s,logs:t,onBack:l}=e,[a,r]=(0,d.useState)(null),[i,n]=(0,d.useState)({}),o=t.reduce((e,s)=>e+(s.spend||0),0),m=t.reduce((e,s)=>e+(s.total_tokens||0),0),u=t.reduce((e,s)=>{var t,l;return e+((null===(l=s.metadata)||void 0===l?void 0:null===(t=l.additional_usage_values)||void 0===t?void 0:t.cache_read_input_tokens)||0)},0),x=t.reduce((e,s)=>{var t,l;return e+((null===(l=s.metadata)||void 0===l?void 0:null===(t=l.additional_usage_values)||void 0===t?void 0:t.cache_creation_input_tokens)||0)},0),h=m+u+x,p=t.length>0?new Date(t[0].startTime):new Date;(((t.length>0?new Date(t[t.length-1].endTime):new Date).getTime()-p.getTime())/1e3).toFixed(2),t.map(e=>({time:new Date(e.startTime).toISOString(),tokens:e.total_tokens||0,cost:e.spend||0}));let g=async(e,s)=>{await eM(e)&&(n(e=>({...e,[s]:!0})),setTimeout(()=>{n(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:l,className:"mb-4",children:"Back to All Logs"}),(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsx)("h1",{className:"text-2xl font-semibold text-gray-900",children:"Session Details"}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)("p",{className:"text-sm text-gray-500 font-mono",children:s}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:i["session-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>g(s,"session-id"),className:"left-2 z-10 transition-all duration-200 ".concat(i["session-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]}),(0,c.jsxs)("a",{href:"https://docs.litellm.ai/docs/proxy/ui_logs_sessions",target:"_blank",rel:"noopener noreferrer",className:"text-sm text-blue-600 hover:text-blue-800 flex items-center gap-1",children:["Get started with session management here",(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})]}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Requests"}),(0,c.jsx)(aE.Z,{children:t.length})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Cost"}),(0,c.jsxs)(aE.Z,{children:["$",eP(o,6)]})]}),(0,c.jsx)(B.Z,{title:(0,c.jsxs)("div",{className:"text-white min-w-[200px]",children:[(0,c.jsx)("div",{className:"text-lg font-medium mb-3",children:"Usage breakdown"}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-base font-medium mb-2",children:"Input usage:"}),(0,c.jsxs)("div",{className:"space-y-2 text-sm text-gray-300",children:[(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"input:"}),(0,c.jsx)("span",{className:"ml-8",children:eP(t.reduce((e,s)=>e+(s.prompt_tokens||0),0))})]}),u>0&&(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"input_cached_tokens:"}),(0,c.jsx)("span",{className:"ml-8",children:eP(u)})]}),x>0&&(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"input_cache_creation_tokens:"}),(0,c.jsx)("span",{className:"ml-8",children:eP(x)})]})]})]}),(0,c.jsxs)("div",{className:"border-t border-gray-600 pt-3",children:[(0,c.jsx)("div",{className:"text-base font-medium mb-2",children:"Output usage:"}),(0,c.jsx)("div",{className:"space-y-2 text-sm text-gray-300",children:(0,c.jsxs)("div",{className:"flex justify-between",children:[(0,c.jsx)("span",{children:"output:"}),(0,c.jsx)("span",{className:"ml-8",children:eP(t.reduce((e,s)=>e+(s.completion_tokens||0),0))})]})})]}),(0,c.jsx)("div",{className:"border-t border-gray-600 pt-3",children:(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-base font-medium",children:"Total usage:"}),(0,c.jsx)("span",{className:"text-sm text-gray-300",children:eP(h)})]})})]})]}),placement:"top",overlayStyle:{minWidth:"300px"},children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)(k.Z,{children:"Total Tokens"}),(0,c.jsx)("span",{className:"text-gray-400 text-sm",children:"ⓘ"})]}),(0,c.jsx)(aE.Z,{children:eP(h)})]})})]}),(0,c.jsx)(S.Z,{children:"Session Logs"}),(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(lN,{columns:aw,data:t,renderSubComponent:aJ,getRowCanExpand:()=>!0,loadingMessage:"Loading logs...",noDataMessage:"No logs found"})})]})};function aP(e){let{data:s}=e,[t,l]=(0,d.useState)(!0),[a,r]=(0,d.useState)({});if(!s||0===s.length)return null;let i=e=>new Date(1e3*e).toLocaleString(),n=(e,s)=>"".concat(((s-e)*1e3).toFixed(2),"ms"),o=(e,s)=>{let t="".concat(e,"-").concat(s);r(e=>({...e,[t]:!e[t]}))};return(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow mb-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b cursor-pointer hover:bg-gray-50",onClick:()=>l(!t),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 text-gray-600 transition-transform ".concat(t?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Vector Store Requests"})]}),(0,c.jsx)("span",{className:"text-sm text-gray-500",children:t?"Click to collapse":"Click to expand"})]}),t&&(0,c.jsx)("div",{className:"p-4",children:s.map((e,s)=>(0,c.jsxs)("div",{className:"mb-6 last:mb-0",children:[(0,c.jsx)("div",{className:"bg-white rounded-lg border p-4 mb-4",children:(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Query:"}),(0,c.jsx)("span",{className:"font-mono",children:e.query})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Vector Store ID:"}),(0,c.jsx)("span",{className:"font-mono",children:e.vector_store_id})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Provider:"}),(0,c.jsx)("span",{className:"flex items-center",children:(()=>{let{logo:s,displayName:t}=(0,s0.dr)(e.custom_llm_provider);return(0,c.jsxs)(c.Fragment,{children:[s&&(0,c.jsx)("img",{src:s,alt:"".concat(t," logo"),className:"h-5 w-5 mr-2"}),t]})})()})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Start Time:"}),(0,c.jsx)("span",{children:i(e.start_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"End Time:"}),(0,c.jsx)("span",{children:i(e.end_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Duration:"}),(0,c.jsx)("span",{children:n(e.start_time,e.end_time)})]})]})]})}),(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Search Results"}),(0,c.jsx)("div",{className:"space-y-2",children:e.vector_store_search_response.data.map((e,t)=>{let l=a["".concat(s,"-").concat(t)]||!1;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex items-center p-3 bg-gray-50 cursor-pointer",onClick:()=>o(s,t),children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(l?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsxs)("span",{className:"font-medium mr-2",children:["Result ",t+1]}),(0,c.jsxs)("span",{className:"text-gray-500 text-sm",children:["Score: ",(0,c.jsx)("span",{className:"font-mono",children:e.score.toFixed(4)})]})]})]}),l&&(0,c.jsx)("div",{className:"p-3 border-t bg-white",children:e.content.map((e,s)=>(0,c.jsxs)("div",{className:"mb-2 last:mb-0",children:[(0,c.jsx)("div",{className:"text-xs text-gray-500 mb-1",children:e.type}),(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all bg-gray-50 p-2 rounded",children:e.text})]},s))})]},t)})})]},s))})]})}let aM=e=>e>=.8?"text-green-600":"text-yellow-600";var aO=e=>{let{entities:s}=e,[t,l]=(0,d.useState)(!0),[a,r]=(0,d.useState)({}),i=e=>{r(s=>({...s,[e]:!s[e]}))};return s&&0!==s.length?(0,c.jsxs)("div",{className:"mt-4",children:[(0,c.jsxs)("div",{className:"flex items-center mb-2 cursor-pointer",onClick:()=>l(!t),children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(t?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsxs)("h4",{className:"font-medium",children:["Detected Entities (",s.length,")"]})]}),t&&(0,c.jsx)("div",{className:"space-y-2",children:s.map((e,s)=>{let t=a[s]||!1;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 cursor-pointer hover:bg-gray-100",onClick:()=>i(s),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(t?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsx)("span",{className:"font-medium mr-2",children:e.entity_type}),(0,c.jsxs)("span",{className:"font-mono ".concat(aM(e.score)),children:["Score: ",e.score.toFixed(2)]})]}),(0,c.jsxs)("span",{className:"text-xs text-gray-500",children:["Position: ",e.start,"-",e.end]})]}),t&&(0,c.jsx)("div",{className:"p-3 border-t bg-white",children:(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4 mb-2",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Entity Type:"}),(0,c.jsx)("span",{children:e.entity_type})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Position:"}),(0,c.jsxs)("span",{children:["Characters ",e.start,"-",e.end]})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Confidence:"}),(0,c.jsx)("span",{className:aM(e.score),children:e.score.toFixed(2)})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[e.recognition_metadata&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Recognizer:"}),(0,c.jsx)("span",{children:e.recognition_metadata.recognizer_name})]}),(0,c.jsxs)("div",{className:"flex overflow-hidden",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Identifier:"}),(0,c.jsx)("span",{className:"truncate text-xs font-mono",children:e.recognition_metadata.recognizer_identifier})]})]}),e.analysis_explanation&&(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Explanation:"}),(0,c.jsx)("span",{children:e.analysis_explanation})]})]})]})})]},s)})})]}):null};let aD=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"slate";return(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block ".concat({green:"bg-green-100 text-green-800",red:"bg-red-100 text-red-800",blue:"bg-blue-50 text-blue-700",slate:"bg-slate-100 text-slate-800",amber:"bg-amber-100 text-amber-800"}[s]),children:e})},aF=e=>e?aD("detected","red"):aD("not detected","slate"),aR=e=>{let{title:s,count:t,defaultOpen:l=!0,right:a,children:r}=e,[i,n]=(0,d.useState)(l);return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 cursor-pointer hover:bg-gray-100",onClick:()=>n(e=>!e),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 transition-transform ".concat(i?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsxs)("h5",{className:"font-medium",children:[s," ","number"==typeof t&&(0,c.jsxs)("span",{className:"text-gray-500 font-normal",children:["(",t,")"]})]})]}),(0,c.jsx)("div",{children:a})]}),i&&(0,c.jsx)("div",{className:"p-3 border-t bg-white",children:r})]})},az=e=>{let{label:s,children:t,mono:l}=e;return(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:s}),(0,c.jsx)("span",{className:l?"font-mono text-sm break-all":"",children:t})]})},aU=()=>(0,c.jsx)("div",{className:"my-3 border-t"});var aq=e=>{var s,t,l,a,r,i,n,o,d,m;let{response:u}=e;if(!u)return null;let x=null!==(r=null!==(a=u.outputs)&&void 0!==a?a:u.output)&&void 0!==r?r:[],h="GUARDRAIL_INTERVENED"===u.action?"red":"green",p=(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(null===(s=u.guardrailCoverage)||void 0===s?void 0:s.textCharacters)&&aD("text guarded ".concat(null!==(i=u.guardrailCoverage.textCharacters.guarded)&&void 0!==i?i:0,"/").concat(null!==(n=u.guardrailCoverage.textCharacters.total)&&void 0!==n?n:0),"blue"),(null===(t=u.guardrailCoverage)||void 0===t?void 0:t.images)&&aD("images guarded ".concat(null!==(o=u.guardrailCoverage.images.guarded)&&void 0!==o?o:0,"/").concat(null!==(d=u.guardrailCoverage.images.total)&&void 0!==d?d:0),"blue")]}),g=u.usage&&(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(u.usage).map(e=>{let[s,t]=e;return"number"==typeof t?(0,c.jsxs)("span",{className:"px-2 py-1 bg-slate-100 text-slate-800 rounded-md text-xs font-medium",children:[s,": ",t]},s):null})});return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"border rounded-lg p-4",children:[(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(az,{label:"Action:",children:aD(null!==(m=u.action)&&void 0!==m?m:"N/A",h)}),u.actionReason&&(0,c.jsx)(az,{label:"Action Reason:",children:u.actionReason}),u.blockedResponse&&(0,c.jsx)(az,{label:"Blocked Response:",children:(0,c.jsx)("span",{className:"italic",children:u.blockedResponse})})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(az,{label:"Coverage:",children:p}),(0,c.jsx)(az,{label:"Usage:",children:g})]})]}),x.length>0&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(aU,{}),(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Outputs"}),(0,c.jsx)("div",{className:"space-y-2",children:x.map((e,s)=>{var t;return(0,c.jsx)("div",{className:"p-3 bg-gray-50 rounded-md",children:(0,c.jsx)("div",{className:"text-sm whitespace-pre-wrap",children:null!==(t=e.text)&&void 0!==t?t:(0,c.jsx)("em",{children:"(non-text output)"})})},s)})})]})]}),(null===(l=u.assessments)||void 0===l?void 0:l.length)?(0,c.jsx)("div",{className:"space-y-3",children:u.assessments.map((e,s)=>{var t,l,a,r,i,n,o,d,m,u,x,h,p,g,j,f,v,y,b,_,N,Z,w,k;let S=(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[e.wordPolicy&&aD("word","slate"),e.contentPolicy&&aD("content","slate"),e.topicPolicy&&aD("topic","slate"),e.sensitiveInformationPolicy&&aD("sensitive-info","slate"),e.contextualGroundingPolicy&&aD("contextual-grounding","slate"),e.automatedReasoningPolicy&&aD("automated-reasoning","slate")]});return(0,c.jsxs)(aR,{title:"Assessment #".concat(s+1),defaultOpen:!0,right:(0,c.jsxs)("div",{className:"flex items-center gap-3",children:[(null===(t=e.invocationMetrics)||void 0===t?void 0:t.guardrailProcessingLatency)!=null&&aD("".concat(e.invocationMetrics.guardrailProcessingLatency," ms"),"amber"),S]}),children:[e.wordPolicy&&(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Word Policy"}),(null!==(f=null===(l=e.wordPolicy.customWords)||void 0===l?void 0:l.length)&&void 0!==f?f:0)>0&&(0,c.jsx)(aR,{title:"Custom Words",defaultOpen:!0,children:(0,c.jsx)("div",{className:"space-y-2",children:e.wordPolicy.customWords.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-mono text-sm break-all",children:e.match})]}),aF(e.detected)]},s)})})}),(null!==(v=null===(a=e.wordPolicy.managedWordLists)||void 0===a?void 0:a.length)&&void 0!==v?v:0)>0&&(0,c.jsx)(aR,{title:"Managed Word Lists",defaultOpen:!1,children:(0,c.jsx)("div",{className:"space-y-2",children:e.wordPolicy.managedWordLists.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-mono text-sm break-all",children:e.match}),e.type&&aD(e.type,"slate")]}),aF(e.detected)]},s)})})})]}),(null===(i=e.contentPolicy)||void 0===i?void 0:null===(r=i.filters)||void 0===r?void 0:r.length)?(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Content Policy"}),(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)("table",{className:"min-w-full text-sm",children:[(0,c.jsx)("thead",{children:(0,c.jsxs)("tr",{className:"text-left text-gray-600",children:[(0,c.jsx)("th",{className:"py-1 pr-4",children:"Type"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Action"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Detected"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Strength"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Confidence"})]})}),(0,c.jsx)("tbody",{children:e.contentPolicy.filters.map((e,s)=>{var t,l,a,r;return(0,c.jsxs)("tr",{className:"border-t",children:[(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(t=e.type)&&void 0!==t?t:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aD(null!==(l=e.action)&&void 0!==l?l:"—",e.detected?"red":"slate")}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aF(e.detected)}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(a=e.filterStrength)&&void 0!==a?a:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(r=e.confidence)&&void 0!==r?r:"—"})]},s)})})]})})]}):null,(null===(o=e.contextualGroundingPolicy)||void 0===o?void 0:null===(n=o.filters)||void 0===n?void 0:n.length)?(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Contextual Grounding"}),(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)("table",{className:"min-w-full text-sm",children:[(0,c.jsx)("thead",{children:(0,c.jsxs)("tr",{className:"text-left text-gray-600",children:[(0,c.jsx)("th",{className:"py-1 pr-4",children:"Type"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Action"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Detected"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Score"}),(0,c.jsx)("th",{className:"py-1 pr-4",children:"Threshold"})]})}),(0,c.jsx)("tbody",{children:e.contextualGroundingPolicy.filters.map((e,s)=>{var t,l,a,r;return(0,c.jsxs)("tr",{className:"border-t",children:[(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(t=e.type)&&void 0!==t?t:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aD(null!==(l=e.action)&&void 0!==l?l:"—",e.detected?"red":"slate")}),(0,c.jsx)("td",{className:"py-1 pr-4",children:aF(e.detected)}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(a=e.score)&&void 0!==a?a:"—"}),(0,c.jsx)("td",{className:"py-1 pr-4",children:null!==(r=e.threshold)&&void 0!==r?r:"—"})]},s)})})]})})]}):null,e.sensitiveInformationPolicy&&(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Sensitive Information"}),(null!==(y=null===(d=e.sensitiveInformationPolicy.piiEntities)||void 0===d?void 0:d.length)&&void 0!==y?y:0)>0&&(0,c.jsx)(aR,{title:"PII Entities",defaultOpen:!0,children:(0,c.jsx)("div",{className:"space-y-2",children:e.sensitiveInformationPolicy.piiEntities.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"flex justify-between items-center p-2 bg-gray-50 rounded",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),e.type&&aD(e.type,"slate"),(0,c.jsx)("span",{className:"font-mono text-xs break-all",children:e.match})]}),aF(e.detected)]},s)})})}),(null!==(b=null===(m=e.sensitiveInformationPolicy.regexes)||void 0===m?void 0:m.length)&&void 0!==b?b:0)>0&&(0,c.jsx)(aR,{title:"Custom Regexes",defaultOpen:!1,children:(0,c.jsx)("div",{className:"space-y-2",children:e.sensitiveInformationPolicy.regexes.map((e,s)=>{var t,l;return(0,c.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between p-2 bg-gray-50 rounded gap-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-medium",children:null!==(l=e.name)&&void 0!==l?l:"regex"}),(0,c.jsx)("span",{className:"font-mono text-xs break-all",children:e.regex})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aF(e.detected),e.match&&(0,c.jsx)("span",{className:"font-mono text-xs break-all",children:e.match})]})]},s)})})})]}),(null===(x=e.topicPolicy)||void 0===x?void 0:null===(u=x.topics)||void 0===u?void 0:u.length)?(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsx)("h6",{className:"font-medium mb-2",children:"Topic Policy"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:e.topicPolicy.topics.map((e,s)=>{var t,l;return(0,c.jsx)("div",{className:"px-3 py-1.5 bg-gray-50 rounded-md text-xs",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[aD(null!==(t=e.action)&&void 0!==t?t:"N/A",e.detected?"red":"slate"),(0,c.jsx)("span",{className:"font-medium",children:null!==(l=e.name)&&void 0!==l?l:"topic"}),e.type&&aD(e.type,"slate"),aF(e.detected)]})},s)})})]}):null,e.invocationMetrics&&(0,c.jsx)(aR,{title:"Invocation Metrics",defaultOpen:!1,children:(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(az,{label:"Latency (ms)",children:null!==(_=e.invocationMetrics.guardrailProcessingLatency)&&void 0!==_?_:"—"}),(0,c.jsx)(az,{label:"Coverage:",children:(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(null===(h=e.invocationMetrics.guardrailCoverage)||void 0===h?void 0:h.textCharacters)&&aD("text ".concat(null!==(N=e.invocationMetrics.guardrailCoverage.textCharacters.guarded)&&void 0!==N?N:0,"/").concat(null!==(Z=e.invocationMetrics.guardrailCoverage.textCharacters.total)&&void 0!==Z?Z:0),"blue"),(null===(p=e.invocationMetrics.guardrailCoverage)||void 0===p?void 0:p.images)&&aD("images ".concat(null!==(w=e.invocationMetrics.guardrailCoverage.images.guarded)&&void 0!==w?w:0,"/").concat(null!==(k=e.invocationMetrics.guardrailCoverage.images.total)&&void 0!==k?k:0),"blue")]})})]}),(0,c.jsx)("div",{className:"space-y-2",children:(0,c.jsx)(az,{label:"Usage:",children:(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:e.invocationMetrics.usage&&Object.entries(e.invocationMetrics.usage).map(e=>{let[s,t]=e;return"number"==typeof t?(0,c.jsxs)("span",{className:"px-2 py-1 bg-slate-100 text-slate-800 rounded-md text-xs font-medium",children:[s,": ",t]},s):null})})})})]})}),(null===(j=e.automatedReasoningPolicy)||void 0===j?void 0:null===(g=j.findings)||void 0===g?void 0:g.length)?(0,c.jsx)(aR,{title:"Automated Reasoning Findings",defaultOpen:!1,children:(0,c.jsx)("div",{className:"space-y-2",children:e.automatedReasoningPolicy.findings.map((e,s)=>(0,c.jsx)("pre",{className:"bg-gray-50 rounded p-2 text-xs overflow-x-auto",children:JSON.stringify(e,null,2)},s))})}):null]},s)})}):null,(0,c.jsx)(aR,{title:"Raw Bedrock Guardrail Response",defaultOpen:!1,children:(0,c.jsx)("pre",{className:"bg-gray-50 rounded p-3 text-xs overflow-x-auto",children:JSON.stringify(u,null,2)})})]})},aV=e=>{var s,t;let{data:l}=e,[a,r]=(0,d.useState)(!0),i=null!==(t=l.guardrail_provider)&&void 0!==t?t:"presidio";if(!l)return null;let n="string"==typeof l.guardrail_status&&"success"===l.guardrail_status.toLowerCase(),o=n?null:"Guardrail failed to run.",m=l.masked_entity_count?Object.values(l.masked_entity_count).reduce((e,s)=>e+s,0):0,u=e=>new Date(1e3*e).toLocaleString();return(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow mb-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b cursor-pointer hover:bg-gray-50",onClick:()=>r(!a),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)("svg",{className:"w-5 h-5 mr-2 text-gray-600 transition-transform ".concat(a?"transform rotate-90":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Guardrail Information"}),(0,c.jsx)(B.Z,{title:o,placement:"top",arrow:!0,destroyTooltipOnHide:!0,children:(0,c.jsx)("span",{className:"ml-3 px-2 py-1 rounded-md text-xs font-medium inline-block ".concat(n?"bg-green-100 text-green-800":"bg-red-100 text-red-800 cursor-help"),children:l.guardrail_status})}),m>0&&(0,c.jsxs)("span",{className:"ml-3 px-2 py-1 bg-blue-50 text-blue-700 rounded-md text-xs font-medium",children:[m," masked ",1===m?"entity":"entities"]})]}),(0,c.jsx)("span",{className:"text-sm text-gray-500",children:a?"Click to collapse":"Click to expand"})]}),a&&(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"bg-white rounded-lg border p-4 mb-4",children:[(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Guardrail Name:"}),(0,c.jsx)("span",{className:"font-mono",children:l.guardrail_name})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Mode:"}),(0,c.jsx)("span",{className:"font-mono",children:l.guardrail_mode})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Status:"}),(0,c.jsx)(B.Z,{title:o,placement:"top",arrow:!0,destroyTooltipOnHide:!0,children:(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block ".concat(n?"bg-green-100 text-green-800":"bg-red-100 text-red-800 cursor-help"),children:l.guardrail_status})})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Start Time:"}),(0,c.jsx)("span",{children:u(l.start_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"End Time:"}),(0,c.jsx)("span",{children:u(l.end_time)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Duration:"}),(0,c.jsxs)("span",{children:[l.duration.toFixed(4),"s"]})]})]})]}),l.masked_entity_count&&Object.keys(l.masked_entity_count).length>0&&(0,c.jsxs)("div",{className:"mt-4 pt-4 border-t",children:[(0,c.jsx)("h4",{className:"font-medium mb-2",children:"Masked Entity Summary"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(l.masked_entity_count).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{className:"px-3 py-1.5 bg-blue-50 text-blue-700 rounded-md text-xs font-medium",children:[s,": ",t]},s)})})]})]}),"presidio"===i&&(null===(s=l.guardrail_response)||void 0===s?void 0:s.length)>0&&(0,c.jsx)(aO,{entities:l.guardrail_response}),"bedrock"===i&&l.guardrail_response&&(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(aq,{response:l.guardrail_response})})]})]})};let aB={TEAM_ID:"Team ID",KEY_HASH:"Key Hash",REQUEST_ID:"Request ID",MODEL:"Model",USER_ID:"User ID",END_USER:"End User",STATUS:"Status",KEY_ALIAS:"Key Alias"},aK="".concat("../ui/assets/","audit-logs-preview.png");function aG(e){let{userID:s,userRole:t,token:l,accessToken:a,isActive:r,premiumUser:i,allTeams:n}=e,[o,m]=(0,d.useState)(ab()().subtract(24,"hours").format("YYYY-MM-DDTHH:mm")),u=(0,d.useRef)(null),x=(0,d.useRef)(null),[h,p]=(0,d.useState)(1),[g]=(0,d.useState)(50),[f,v]=(0,d.useState)({}),[y,b]=(0,d.useState)(""),[_,N]=(0,d.useState)(""),[Z,w]=(0,d.useState)(""),[S,C]=(0,d.useState)("all"),[I,A]=(0,d.useState)("all"),[T,E]=(0,d.useState)(!1),[L,P]=(0,d.useState)(!1),M=(0,sA.a)({queryKey:["all_audit_logs",a,l,t,s,o],queryFn:async()=>{if(!a||!l||!t||!s)return[];let e=ab()(o).utc().format("YYYY-MM-DD HH:mm:ss"),r=ab()().utc().format("YYYY-MM-DD HH:mm:ss"),i=[],n=1,c=1;do{let s=await (0,j.uiAuditLogsCall)(a,e,r,n,50);i=i.concat(s.audit_logs),c=s.total_pages,n++}while(n<=c);return i},enabled:!!a&&!!l&&!!t&&!!s&&r,refetchInterval:5e3,refetchIntervalInBackground:!0}),O=(0,d.useCallback)(async e=>{if(a)try{let s=(await (0,j.keyListCall)(a,null,null,e,null,null,1,10)).keys.find(s=>s.key_alias===e);s?N(s.token):N("")}catch(e){console.error("Error fetching key hash for alias:",e),N("")}},[a]);(0,d.useEffect)(()=>{if(!a)return;let e=!1,s=!1;f["Team ID"]?y!==f["Team ID"]&&(b(f["Team ID"]),e=!0):""!==y&&(b(""),e=!0),f["Key Hash"]?_!==f["Key Hash"]&&(N(f["Key Hash"]),s=!0):f["Key Alias"]?O(f["Key Alias"]):""!==_&&(N(""),s=!0),(e||s)&&p(1)},[f,a,O,y,_]),(0,d.useEffect)(()=>{p(1)},[y,_,o,Z,S,I]),(0,d.useEffect)(()=>{function e(e){u.current&&!u.current.contains(e.target)&&E(!1),x.current&&!x.current.contains(e.target)&&P(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let D=(0,d.useMemo)(()=>M.data?M.data.filter(e=>{var s,t,l,a,r,i,n;let o=!0,c=!0,d=!0,m=!0,u=!0;if(y){let r="string"==typeof e.before_value?null===(s=JSON.parse(e.before_value))||void 0===s?void 0:s.team_id:null===(t=e.before_value)||void 0===t?void 0:t.team_id,i="string"==typeof e.updated_values?null===(l=JSON.parse(e.updated_values))||void 0===l?void 0:l.team_id:null===(a=e.updated_values)||void 0===a?void 0:a.team_id;o=r===y||i===y}if(_)try{let s="string"==typeof e.before_value?JSON.parse(e.before_value):e.before_value,t="string"==typeof e.updated_values?JSON.parse(e.updated_values):e.updated_values,l=null==s?void 0:s.token,a=null==t?void 0:t.token;c="string"==typeof l&&l.includes(_)||"string"==typeof a&&a.includes(_)}catch(e){c=!1}if(Z&&(d=null===(r=e.object_id)||void 0===r?void 0:r.toLowerCase().includes(Z.toLowerCase())),"all"!==S&&(m=(null===(i=e.action)||void 0===i?void 0:i.toLowerCase())===S.toLowerCase()),"all"!==I){let s="";switch(I){case"keys":s="litellm_verificationtoken";break;case"teams":s="litellm_teamtable";break;case"users":s="litellm_usertable";break;default:s=I}u=(null===(n=e.table_name)||void 0===n?void 0:n.toLowerCase())===s}return o&&c&&d&&m&&u}):[],[M.data,y,_,Z,S,I]),F=D.length,R=Math.ceil(F/g)||1,z=(0,d.useMemo)(()=>{let e=(h-1)*g,s=e+g;return D.slice(e,s)},[D,h,g]),U=!M.data||0===M.data.length,q=(0,d.useCallback)(e=>{let{row:s}=e;return(0,c.jsx)(e=>{let{rowData:s}=e,{before_value:t,updated_values:l,table_name:a,action:r}=s,i=(e,s)=>{if(!e||0===Object.keys(e).length)return(0,c.jsx)(k.Z,{children:"N/A"});if(s){let s=Object.keys(e),t=["token","spend","max_budget"];if(s.every(e=>t.includes(e))&&s.length>0)return(0,c.jsxs)("div",{children:[s.includes("token")&&(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Token:"})," ",e.token||"N/A"]}),s.includes("spend")&&(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Spend:"})," ",void 0!==e.spend?"$".concat(eP(e.spend,6)):"N/A"]}),s.includes("max_budget")&&(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Max Budget:"})," ",void 0!==e.max_budget?"$".concat(eP(e.max_budget,6)):"N/A"]})]});if(e["No differing fields detected in 'before' state"]||e["No differing fields detected in 'updated' state"]||e["No fields changed"])return(0,c.jsx)(k.Z,{children:e[Object.keys(e)[0]]})}return(0,c.jsx)("pre",{className:"p-2 bg-gray-50 border rounded text-xs overflow-auto max-h-60",children:JSON.stringify(e,null,2)})},n=t,o=l;if(("updated"===r||"rotated"===r)&&t&&l&&("LiteLLM_TeamTable"===a||"LiteLLM_UserTable"===a||"LiteLLM_VerificationToken"===a)){let e={},s={};new Set([...Object.keys(t),...Object.keys(l)]).forEach(a=>{JSON.stringify(t[a])!==JSON.stringify(l[a])&&(t.hasOwnProperty(a)&&(e[a]=t[a]),l.hasOwnProperty(a)&&(s[a]=l[a]))}),Object.keys(t).forEach(a=>{l.hasOwnProperty(a)||e.hasOwnProperty(a)||(e[a]=t[a],s[a]=void 0)}),Object.keys(l).forEach(a=>{t.hasOwnProperty(a)||s.hasOwnProperty(a)||(s[a]=l[a],e[a]=void 0)}),n=Object.keys(e).length>0?e:{"No differing fields detected in 'before' state":"N/A"},o=Object.keys(s).length>0?s:{"No differing fields detected in 'updated' state":"N/A"},0===Object.keys(e).length&&0===Object.keys(s).length&&(n={"No fields changed":"N/A"},o={"No fields changed":"N/A"})}return(0,c.jsxs)("div",{className:"-mx-4 p-4 bg-slate-100 border-y border-slate-300 grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"font-semibold mb-2 text-sm text-slate-700",children:"Before Value:"}),i(n,"LiteLLM_VerificationToken"===a)]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"font-semibold mb-2 text-sm text-slate-700",children:"Updated Value:"}),i(o,"LiteLLM_VerificationToken"===a)]})]})},{rowData:s.original})},[]);if(!i)return(0,c.jsxs)("div",{style:{textAlign:"center",marginTop:"20px"},children:[(0,c.jsx)("h1",{style:{display:"block",marginBottom:"10px"},children:"✨ Enterprise Feature."}),(0,c.jsx)(k.Z,{style:{display:"block",marginBottom:"10px"},children:"This is a LiteLLM Enterprise feature, and requires a valid key to use."}),(0,c.jsx)(k.Z,{style:{display:"block",marginBottom:"20px",fontStyle:"italic"},children:"Here's a preview of what Audit Logs offer:"}),(0,c.jsx)("img",{src:aK,alt:"Audit Logs Preview",style:{maxWidth:"100%",maxHeight:"700px",borderRadius:"8px",boxShadow:"0 4px 8px rgba(0,0,0,0.1)",margin:"0 auto"},onError:e=>{console.error("Failed to load audit logs preview image"),e.target.style.display="none"}})]});let V=F>0?(h-1)*g+1:0,B=Math.min(h*g,F);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"flex items-center justify-between mb-4"}),(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsxs)("div",{className:"border-b px-6 py-4",children:[(0,c.jsx)("h1",{className:"text-xl font-semibold py-4",children:"Audit Logs"}),(0,c.jsx)(e=>{let{show:s}=e;return s?(0,c.jsxs)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-4 flex items-start mb-6",children:[(0,c.jsx)("div",{className:"text-blue-500 mr-3 flex-shrink-0 mt-0.5",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,c.jsx)("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),(0,c.jsx)("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]})}),(0,c.jsxs)("div",{children:[(0,c.jsx)("h4",{className:"text-sm font-medium text-blue-800",children:"Audit Logs Not Available"}),(0,c.jsx)("p",{className:"text-sm text-blue-700 mt-1",children:"To enable audit logging, add the following configuration to your LiteLLM proxy configuration file:"}),(0,c.jsx)("pre",{className:"mt-2 bg-white p-3 rounded border border-blue-200 text-xs font-mono overflow-auto",children:"litellm_settings:\n store_audit_logs: true"}),(0,c.jsx)("p",{className:"text-xs text-blue-700 mt-2",children:"Note: This will only affect new requests after the configuration change and proxy restart."})]})]}):null},{show:U}),(0,c.jsxs)("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between space-y-4 md:space-y-0",children:[(0,c.jsx)("div",{className:"flex flex-wrap items-center gap-3",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsx)("input",{type:"text",placeholder:"Search by Object ID...",value:Z,onChange:e=>w(e.target.value),className:"px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})}),(0,c.jsxs)("button",{onClick:()=>{M.refetch()},className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",title:"Refresh data",children:[(0,c.jsx)("svg",{className:"w-4 h-4 ".concat(M.isFetching?"animate-spin":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),(0,c.jsx)("span",{children:"Refresh"})]})]})}),(0,c.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,c.jsxs)("div",{className:"relative",ref:u,children:[(0,c.jsx)("label",{htmlFor:"actionFilterDisplay",className:"mr-2 text-sm font-medium text-gray-700 sr-only",children:"Action:"}),(0,c.jsxs)("button",{id:"actionFilterDisplay",onClick:()=>E(!T),className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 bg-white w-40 text-left justify-between",children:[(0,c.jsxs)("span",{children:["all"===S&&"All Actions","created"===S&&"Created","updated"===S&&"Updated","deleted"===S&&"Deleted","rotated"===S&&"Rotated"]}),(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M19 9l-7 7-7-7"})})]}),T&&(0,c.jsx)("div",{className:"absolute left-0 mt-2 w-40 bg-white rounded-lg shadow-lg border p-1 z-50",children:(0,c.jsx)("div",{className:"space-y-1",children:[{label:"All Actions",value:"all"},{label:"Created",value:"created"},{label:"Updated",value:"updated"},{label:"Deleted",value:"deleted"},{label:"Rotated",value:"rotated"}].map(e=>(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(S===e.value?"bg-blue-50 text-blue-600 font-medium":"font-normal"),onClick:()=>{C(e.value),E(!1)},children:e.label},e.value))})})]}),(0,c.jsxs)("div",{className:"relative",ref:x,children:[(0,c.jsx)("label",{htmlFor:"tableFilterDisplay",className:"mr-2 text-sm font-medium text-gray-700 sr-only",children:"Table:"}),(0,c.jsxs)("button",{id:"tableFilterDisplay",onClick:()=>P(!L),className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2 bg-white w-40 text-left justify-between",children:[(0,c.jsxs)("span",{children:["all"===I&&"All Tables","keys"===I&&"Keys","teams"===I&&"Teams","users"===I&&"Users"]}),(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M19 9l-7 7-7-7"})})]}),L&&(0,c.jsx)("div",{className:"absolute left-0 mt-2 w-40 bg-white rounded-lg shadow-lg border p-1 z-50",children:(0,c.jsx)("div",{className:"space-y-1",children:[{label:"All Tables",value:"all"},{label:"Keys",value:"keys"},{label:"Teams",value:"teams"},{label:"Users",value:"users"}].map(e=>(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(I===e.value?"bg-blue-50 text-blue-600 font-medium":"font-normal"),onClick:()=>{A(e.value),P(!1)},children:e.label},e.value))})})]}),(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Showing ",M.isLoading?"...":V," -"," ",M.isLoading?"...":B," of"," ",M.isLoading?"...":F," results"]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700",children:["Page ",M.isLoading?"...":h," of"," ",M.isLoading?"...":R]}),(0,c.jsx)("button",{onClick:()=>p(e=>Math.max(1,e-1)),disabled:M.isLoading||1===h,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Previous"}),(0,c.jsx)("button",{onClick:()=>p(e=>Math.min(R,e+1)),disabled:M.isLoading||h===R,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Next"})]})]})]})]}),(0,c.jsx)(lN,{columns:aS,data:z,renderSubComponent:q,getRowCanExpand:()=>!0})]})]})}let aH=(e,s,t)=>{if(e)return"".concat(ab()(s).format("MMM D, h:mm A")," - ").concat(ab()(t).format("MMM D, h:mm A"));let l=ab()(),a=ab()(s),r=l.diff(a,"minutes");if(r>=0&&r<2)return"Last 1 Minute";if(r>=2&&r<16)return"Last 15 Minutes";if(r>=16&&r<61)return"Last Hour";let i=l.diff(a,"hours");return i>=1&&i<5?"Last 4 Hours":i>=5&&i<25?"Last 24 Hours":i>=25&&i<169?"Last 7 Days":"".concat(a.format("MMM D")," - ").concat(l.format("MMM D"))};function aY(e){var s,t,l;let{accessToken:a,token:r,userRole:i,userID:n,allTeams:o,premiumUser:m}=e,[u,x]=(0,d.useState)(""),[p,g]=(0,d.useState)(!1),[f,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(1),[_]=(0,d.useState)(50),N=(0,d.useRef)(null),Z=(0,d.useRef)(null),w=(0,d.useRef)(null),[k,S]=(0,d.useState)(ab()().subtract(24,"hours").format("YYYY-MM-DDTHH:mm")),[C,I]=(0,d.useState)(ab()().format("YYYY-MM-DDTHH:mm")),[A,T]=(0,d.useState)(!1),[E,L]=(0,d.useState)(!1),[P,M]=(0,d.useState)(""),[O,D]=(0,d.useState)(""),[F,R]=(0,d.useState)(""),[z,U]=(0,d.useState)(""),[q,V]=(0,d.useState)(""),[B,K]=(0,d.useState)(null),[G,H]=(0,d.useState)(null),[Y,J]=(0,d.useState)(""),[W,$]=(0,d.useState)(""),[Q,X]=(0,d.useState)(i&&eI.lo.includes(i)),[ee,es]=(0,d.useState)("request logs"),[et,el]=(0,d.useState)(null),[ea,er]=(0,d.useState)(null),ei=(0,h.NL)(),[en,eo]=(0,d.useState)(()=>{let e=sessionStorage.getItem("isLiveTail");return null===e||JSON.parse(e)});(0,d.useEffect)(()=>{sessionStorage.setItem("isLiveTail",JSON.stringify(en))},[en]);let[ec,ed]=(0,d.useState)({value:24,unit:"hours"});(0,d.useEffect)(()=>{(async()=>{G&&a&&K({...(await (0,j.keyInfoV1Call)(a,G)).info,token:G,api_key:G})})()},[G,a]),(0,d.useEffect)(()=>{function e(e){N.current&&!N.current.contains(e.target)&&v(!1),Z.current&&!Z.current.contains(e.target)&&g(!1),w.current&&!w.current.contains(e.target)&&L(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,d.useEffect)(()=>{i&&eI.lo.includes(i)&&X(!0)},[i]);let em=(0,sA.a)({queryKey:["logs","table",y,_,k,C,F,z,Q?n:null,Y,q],queryFn:async()=>{if(!a||!r||!i||!n)return{data:[],total:0,page:1,page_size:_,total_pages:0};let e=ab()(k).utc().format("YYYY-MM-DD HH:mm:ss"),s=A?ab()(C).utc().format("YYYY-MM-DD HH:mm:ss"):ab()().utc().format("YYYY-MM-DD HH:mm:ss"),t=await (0,j.uiSpendLogsCall)(a,z||void 0,F||void 0,void 0,e,s,y,_,Q?n:void 0,W,Y,q);return await aC(t.data,e,a,ei),t.data=t.data.map(s=>{let t=ei.getQueryData(["logDetails",s.request_id,e]);return(null==t?void 0:t.messages)&&(null==t?void 0:t.response)&&(s.messages=t.messages,s.response=t.response),s}),t},enabled:!!a&&!!r&&!!i&&!!n&&"request logs"===ee,refetchInterval:!!en&&1===y&&15e3,refetchIntervalInBackground:!0}),{filters:eu,filteredLogs:ex,allTeams:eh,allKeyAliases:ep,handleFilterChange:eg,handleFilterReset:ej}=function(e){let{logs:s,accessToken:t,startTime:l,endTime:a,pageSize:r=25,isCustomDate:i,setCurrentPage:n,userID:o,userRole:c}=e,m=(0,d.useMemo)(()=>({[aB.TEAM_ID]:"",[aB.KEY_HASH]:"",[aB.REQUEST_ID]:"",[aB.MODEL]:"",[aB.USER_ID]:"",[aB.END_USER]:"",[aB.STATUS]:"",[aB.KEY_ALIAS]:""}),[]),[u,x]=(0,d.useState)(m),[h,p]=(0,d.useState)({data:[],total:0,page:1,page_size:50,total_pages:0}),g=(0,d.useRef)(0),f=(0,d.useCallback)(async function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!t)return;console.log("Filters being sent to API:",e);let n=Date.now();g.current=n;let o=ab()(l).utc().format("YYYY-MM-DD HH:mm:ss"),c=i?ab()(a).utc().format("YYYY-MM-DD HH:mm:ss"):ab()().utc().format("YYYY-MM-DD HH:mm:ss");try{let l=await (0,j.uiSpendLogsCall)(t,e[aB.KEY_HASH]||void 0,e[aB.TEAM_ID]||void 0,e[aB.REQUEST_ID]||void 0,o,c,s,r,e[aB.USER_ID]||void 0,e[aB.END_USER]||void 0,e[aB.STATUS]||void 0,e[aB.MODEL]||void 0,e[aB.KEY_ALIAS]||void 0);n===g.current&&l.data&&p(l)}catch(e){console.error("Error searching users:",e)}},[t,l,a,i,r]),v=(0,d.useMemo)(()=>eC()((e,s)=>f(e,s),300),[f]);(0,d.useEffect)(()=>()=>v.cancel(),[v]);let y=(0,sA.a)({queryKey:["allKeys"],queryFn:async()=>{if(!t)throw Error("Access token required");return await sT(t)},enabled:!!t}).data||[],b=(0,d.useMemo)(()=>!!(u[aB.KEY_ALIAS]||u[aB.KEY_HASH]||u[aB.REQUEST_ID]||u[aB.USER_ID]||u[aB.END_USER]),[u]),_=(0,d.useMemo)(()=>{if(!s||!s.data)return{data:[],total:0,page:1,page_size:50,total_pages:0};if(b)return s;let e=[...s.data];return u[aB.TEAM_ID]&&(e=e.filter(e=>e.team_id===u[aB.TEAM_ID])),u[aB.STATUS]&&(e=e.filter(e=>"success"===u[aB.STATUS]?!e.status||"success"===e.status:e.status===u[aB.STATUS])),u[aB.MODEL]&&(e=e.filter(e=>e.model===u[aB.MODEL])),u[aB.KEY_HASH]&&(e=e.filter(e=>e.api_key===u[aB.KEY_HASH])),u[aB.END_USER]&&(e=e.filter(e=>e.end_user===u[aB.END_USER])),{data:e,total:s.total,page:s.page,page_size:s.page_size,total_pages:s.total_pages}},[s,u,b]),N=(0,d.useMemo)(()=>b?h&&h.data&&h.data.length>0?h:s||{data:[],total:0,page:1,page_size:50,total_pages:0}:_,[b,h,_,s]),{data:Z}=(0,sA.a)({queryKey:["allTeamsForLogFilters",t],queryFn:async()=>t&&await sE(t)||[],enabled:!!t});return{filters:u,filteredLogs:N,allKeyAliases:y,allTeams:Z,handleFilterChange:e=>{x(s=>{let t={...s,...e};for(let e of Object.keys(m))e in t||(t[e]=m[e]);return JSON.stringify(t)!==JSON.stringify(s)&&(n(1),v(t,1)),t})},handleFilterReset:()=>{x(m),p({data:[],total:0,page:1,page_size:50,total_pages:0}),v(m,1)}}}({logs:em.data||{data:[],total:0,page:1,page_size:_||10,total_pages:1},accessToken:a,startTime:k,endTime:C,pageSize:_,isCustomDate:A,setCurrentPage:b,userID:n,userRole:i}),ef=(0,d.useCallback)(async e=>{if(a)try{let s=(await (0,j.keyListCall)(a,null,null,e,null,null,y,_)).keys.find(s=>s.key_alias===e);s&&U(s.token)}catch(e){console.error("Error fetching key hash for alias:",e)}},[a,y,_]);(0,d.useEffect)(()=>{a&&(eu["Team ID"]?R(eu["Team ID"]):R(""),J(eu.Status||""),V(eu.Model||""),$(eu["End User"]||""),eu["Key Hash"]?U(eu["Key Hash"]):eu["Key Alias"]?ef(eu["Key Alias"]):U(""))},[eu,a,ef]);let ev=(0,sA.a)({queryKey:["sessionLogs",ea],queryFn:async()=>{if(!a||!ea)return{data:[],total:0,page:1,page_size:50,total_pages:1};let e=await (0,j.sessionSpendLogsCall)(a,ea);return{data:e.data||e||[],total:(e.data||e||[]).length,page:1,page_size:1e3,total_pages:1}},enabled:!!a&&!!ea});if((0,d.useEffect)(()=>{var e;(null===(e=em.data)||void 0===e?void 0:e.data)&&et&&!em.data.data.some(e=>e.request_id===et)&&el(null)},[null===(s=em.data)||void 0===s?void 0:s.data,et]),!a||!r||!i||!n)return null;let ey=ex.data.filter(e=>!u||e.request_id.includes(u)||e.model.includes(u)||e.user&&e.user.includes(u)).map(e=>({...e,duration:(Date.parse(e.endTime)-Date.parse(e.startTime))/1e3,onKeyHashClick:e=>H(e),onSessionClick:e=>{e&&er(e)}}))||[],eb=(null===(l=ev.data)||void 0===l?void 0:null===(t=l.data)||void 0===t?void 0:t.map(e=>({...e,onKeyHashClick:e=>H(e),onSessionClick:e=>{}})))||[],e_=[{name:"Team ID",label:"Team ID",isSearchable:!0,searchFn:async e=>o&&0!==o.length?o.filter(s=>s.team_id.toLowerCase().includes(e.toLowerCase())||s.team_alias&&s.team_alias.toLowerCase().includes(e.toLowerCase())).map(e=>({label:"".concat(e.team_alias||e.team_id," (").concat(e.team_id,")"),value:e.team_id})):[]},{name:"Status",label:"Status",isSearchable:!1,options:[{label:"Success",value:"success"},{label:"Failure",value:"failure"}]},{name:"Model",label:"Model",isSearchable:!1},{name:"Key Alias",label:"Key Alias",isSearchable:!0,searchFn:async e=>a?(await sT(a)).filter(s=>s.toLowerCase().includes(e.toLowerCase())).map(e=>({label:e,value:e})):[]},{name:"End User",label:"End User",isSearchable:!0,searchFn:async e=>{if(!a)return[];let s=await (0,j.allEndUsersCall)(a);return((null==s?void 0:s.map(e=>e.user_id))||[]).filter(s=>s.toLowerCase().includes(e.toLowerCase())).map(e=>({label:e,value:e}))}},{name:"Key Hash",label:"Key Hash",isSearchable:!1}];if(ea&&ev.data)return(0,c.jsx)("div",{className:"w-full p-6",children:(0,c.jsx)(aL,{sessionId:ea,logs:ev.data.data,onBack:()=>er(null)})});let eN=[{label:"Last 15 Minutes",value:15,unit:"minutes"},{label:"Last Hour",value:1,unit:"hours"},{label:"Last 4 Hours",value:4,unit:"hours"},{label:"Last 24 Hours",value:24,unit:"hours"},{label:"Last 7 Days",value:7,unit:"days"}],eZ=eN.find(e=>e.value===ec.value&&e.unit===ec.unit),ew=A?aH(A,k,C):null==eZ?void 0:eZ.label;return(0,c.jsx)("div",{className:"w-full max-w-screen p-6 overflow-x-hidden box-border",children:(0,c.jsxs)(st.Z,{defaultIndex:0,onIndexChange:e=>es(0===e?"request logs":"audit logs"),children:[(0,c.jsxs)(sl.Z,{children:[(0,c.jsx)(ss.Z,{children:"Request Logs"}),(0,c.jsx)(ss.Z,{children:"Audit Logs"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,c.jsx)("h1",{className:"text-xl font-semibold",children:ea?(0,c.jsxs)(c.Fragment,{children:["Session: ",(0,c.jsx)("span",{className:"font-mono",children:ea}),(0,c.jsx)("button",{className:"ml-4 px-3 py-1 text-sm border rounded hover:bg-gray-50",onClick:()=>er(null),children:"← Back to All Logs"})]}):"Request Logs"})}),B&&G&&B.api_key===G?(0,c.jsx)(sS,{keyId:G,keyData:B,accessToken:a,userID:n,userRole:i,teams:o,onClose:()=>H(null),premiumUser:m,backButtonText:"Back to Logs"}):ea?(0,c.jsx)("div",{className:"bg-white rounded-lg shadow",children:(0,c.jsx)(lN,{columns:aw,data:eb,renderSubComponent:aJ,getRowCanExpand:()=>!0})}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(sI,{options:e_,onApplyFilters:eg,onResetFilters:ej}),(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full box-border",children:[(0,c.jsx)("div",{className:"border-b px-6 py-4 w-full max-w-full box-border",children:(0,c.jsxs)("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between space-y-4 md:space-y-0 w-full max-w-full box-border",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-3 w-full max-w-full box-border",children:[(0,c.jsxs)("div",{className:"relative w-64 min-w-0 flex-shrink-0",children:[(0,c.jsx)("input",{type:"text",placeholder:"Search by Request ID",className:"w-full px-3 py-2 pl-8 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",value:u,onChange:e=>x(e.target.value)}),(0,c.jsx)("svg",{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-shrink",children:[(0,c.jsxs)("div",{className:"relative z-50",ref:w,children:[(0,c.jsxs)("button",{onClick:()=>L(!E),className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})}),ew]}),E&&(0,c.jsx)("div",{className:"absolute right-0 mt-2 w-64 bg-white rounded-lg shadow-lg border p-2 z-50",children:(0,c.jsxs)("div",{className:"space-y-1",children:[eN.map(e=>(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(ew===e.label?"bg-blue-50 text-blue-600":""),onClick:()=>{I(ab()().format("YYYY-MM-DDTHH:mm")),S(ab()().subtract(e.value,e.unit).format("YYYY-MM-DDTHH:mm")),ed({value:e.value,unit:e.unit}),T(!1),L(!1)},children:e.label},e.label)),(0,c.jsx)("div",{className:"border-t my-2"}),(0,c.jsx)("button",{className:"w-full px-3 py-2 text-left text-sm hover:bg-gray-50 rounded-md ".concat(A?"bg-blue-50 text-blue-600":""),onClick:()=>T(!A),children:"Custom Range"})]})})]}),(0,c.jsx)(()=>(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-900",children:"Live Tail"}),(0,c.jsx)(tX.Z,{color:"green",checked:en,defaultChecked:!0,onChange:eo})]}),{}),(0,c.jsxs)("button",{onClick:()=>{em.refetch()},className:"px-3 py-2 text-sm border rounded-md hover:bg-gray-50 flex items-center gap-2",title:"Refresh data",children:[(0,c.jsx)("svg",{className:"w-4 h-4 ".concat(em.isFetching?"animate-spin":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),(0,c.jsx)("span",{children:"Refresh"})]})]}),A&&(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{children:(0,c.jsx)("input",{type:"datetime-local",value:k,onChange:e=>{S(e.target.value),b(1)},className:"px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})}),(0,c.jsx)("span",{className:"text-gray-500",children:"to"}),(0,c.jsx)("div",{children:(0,c.jsx)("input",{type:"datetime-local",value:C,onChange:e=>{I(e.target.value),b(1)},className:"px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})})]})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700 whitespace-nowrap",children:["Showing ",em.isLoading?"...":ex?(y-1)*_+1:0," -"," ",em.isLoading?"...":ex?Math.min(y*_,ex.total):0," ","of ",em.isLoading?"...":ex?ex.total:0," results"]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsxs)("span",{className:"text-sm text-gray-700 min-w-[90px]",children:["Page ",em.isLoading?"...":y," of"," ",em.isLoading?"...":ex?ex.total_pages:1]}),(0,c.jsx)("button",{onClick:()=>b(e=>Math.max(1,e-1)),disabled:em.isLoading||1===y,className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Previous"}),(0,c.jsx)("button",{onClick:()=>b(e=>Math.min(ex.total_pages||1,e+1)),disabled:em.isLoading||y===(ex.total_pages||1),className:"px-3 py-1 text-sm border rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Next"})]})]})]})}),en&&1===y&&(0,c.jsxs)("div",{className:"mb-4 px-4 py-2 bg-green-50 border border-greem-200 rounded-md flex items-center justify-between",children:[(0,c.jsx)("div",{className:"flex items-center gap-2",children:(0,c.jsx)("span",{className:"text-sm text-green-700",children:"Auto-refreshing every 15 seconds"})}),(0,c.jsx)("button",{onClick:()=>eo(!1),className:"text-sm text-green-600 hover:text-green-800",children:"Stop"})]}),(0,c.jsx)(lN,{columns:aw,data:ey,renderSubComponent:aJ,getRowCanExpand:()=>!0})]})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(aG,{userID:n,userRole:i,token:r,accessToken:a,isActive:"audit logs"===ee,premiumUser:m,allTeams:o})})]})]})})}function aJ(e){var s,t,l,a,r,i,n,o;let{row:d}=e,m=e=>{if("string"==typeof e)try{return JSON.parse(e)}catch(e){}return e},u=d.original.metadata||{},x="failure"===u.status,h=x?u.error_information:null,p=d.original.messages&&(Array.isArray(d.original.messages)?d.original.messages.length>0:Object.keys(d.original.messages).length>0),g=d.original.response&&Object.keys(m(d.original.response)).length>0,j=u.vector_store_request_metadata&&Array.isArray(u.vector_store_request_metadata)&&u.vector_store_request_metadata.length>0,f=d.original.metadata&&d.original.metadata.guardrail_information,v=f&&(null===(o=d.original.metadata)||void 0===o?void 0:o.guardrail_information.masked_entity_count)?Object.values(d.original.metadata.guardrail_information.masked_entity_count).reduce((e,s)=>e+("number"==typeof s?s:0),0):0;return(0,c.jsxs)("div",{className:"p-6 bg-gray-50 space-y-6 w-full max-w-full overflow-hidden box-border",children:[(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow w-full max-w-full overflow-hidden",children:[(0,c.jsx)("div",{className:"p-4 border-b",children:(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Request Details"})}),(0,c.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 p-4 w-full max-w-full overflow-hidden",children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Request ID:"}),(0,c.jsx)("span",{className:"font-mono text-sm",children:d.original.request_id})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Model:"}),(0,c.jsx)("span",{children:d.original.model})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Model ID:"}),(0,c.jsx)("span",{children:d.original.model_id})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Call Type:"}),(0,c.jsx)("span",{children:d.original.call_type})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Provider:"}),(0,c.jsx)("span",{children:d.original.custom_llm_provider||"-"})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"API Base:"}),(0,c.jsx)(B.Z,{title:d.original.api_base||"-",children:(0,c.jsx)("span",{className:"max-w-[15ch] truncate block",children:d.original.api_base||"-"})})]}),(null==d?void 0:null===(s=d.original)||void 0===s?void 0:s.requester_ip_address)&&(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"IP Address:"}),(0,c.jsx)("span",{children:null==d?void 0:null===(t=d.original)||void 0===t?void 0:t.requester_ip_address})]}),f&&(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Guardrail:"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"font-mono",children:d.original.metadata.guardrail_information.guardrail_name}),v>0&&(0,c.jsxs)("span",{className:"ml-2 px-2 py-0.5 bg-blue-50 text-blue-700 rounded-md text-xs font-medium",children:[v," masked"]})]})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Tokens:"}),(0,c.jsxs)("span",{children:[d.original.total_tokens," (",d.original.prompt_tokens," prompt tokens +"," ",d.original.completion_tokens," completion tokens)"]})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cache Read Tokens:"}),(0,c.jsx)("span",{children:eP((null===(a=d.original.metadata)||void 0===a?void 0:null===(l=a.additional_usage_values)||void 0===l?void 0:l.cache_read_input_tokens)||0)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cache Creation Tokens:"}),(0,c.jsx)("span",{children:eP(null===(r=d.original.metadata)||void 0===r?void 0:r.additional_usage_values.cache_creation_input_tokens)})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cost:"}),(0,c.jsxs)("span",{children:["$",eP(d.original.spend||0,6)]})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Cache Hit:"}),(0,c.jsx)("span",{children:d.original.cache_hit})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Status:"}),(0,c.jsx)("span",{className:"px-2 py-1 rounded-md text-xs font-medium inline-block text-center w-16 ".concat("failure"!==((null===(i=d.original.metadata)||void 0===i?void 0:i.status)||"Success").toLowerCase()?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:"failure"!==((null===(n=d.original.metadata)||void 0===n?void 0:n.status)||"Success").toLowerCase()?"Success":"Failure"})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Start Time:"}),(0,c.jsx)("span",{children:d.original.startTime})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"End Time:"}),(0,c.jsx)("span",{children:d.original.endTime})]}),(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)("span",{className:"font-medium w-1/3",children:"Duration:"}),(0,c.jsxs)("span",{children:[d.original.duration," s."]})]})]})]})]}),(0,c.jsx)(aT,{show:!p&&!g}),(0,c.jsx)("div",{className:"w-full max-w-full overflow-hidden",children:(0,c.jsx)(aI,{row:d,hasMessages:p,hasResponse:g,hasError:x,errorInfo:h,getRawRequest:()=>{var e;return(null===(e=d.original)||void 0===e?void 0:e.proxy_server_request)?m(d.original.proxy_server_request):m(d.original.messages)},formattedResponse:()=>x&&h?{error:{message:h.error_message||"An error occurred",type:h.error_class||"error",code:h.error_code||"unknown",param:null}}:m(d.original.response)})}),f&&(0,c.jsx)(aV,{data:d.original.metadata.guardrail_information}),j&&(0,c.jsx)(aP,{data:u.vector_store_request_metadata}),x&&h&&(0,c.jsx)(aA,{errorInfo:h}),d.original.request_tags&&Object.keys(d.original.request_tags).length>0&&(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsx)("div",{className:"flex justify-between items-center p-4 border-b",children:(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Request Tags"})}),(0,c.jsx)("div",{className:"p-4",children:(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(d.original.request_tags).map(e=>{let[s,t]=e;return(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded-full text-xs",children:[s,": ",String(t)]},s)})})})]}),d.original.metadata&&Object.keys(d.original.metadata).length>0&&(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-4 border-b",children:[(0,c.jsx)("h3",{className:"text-lg font-medium",children:"Metadata"}),(0,c.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(JSON.stringify(d.original.metadata,null,2))},className:"p-1 hover:bg-gray-200 rounded",title:"Copy metadata",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,c.jsx)("div",{className:"p-4 overflow-auto max-h-64",children:(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all",children:JSON.stringify(d.original.metadata,null,2)})})]})]})}var aW=t(97851),a$=t(14042),aQ=t(49634);let aX=[{label:"Today",shortLabel:"today",getValue:()=>({from:ab()().startOf("day").toDate(),to:ab()().endOf("day").toDate()})},{label:"Last 7 days",shortLabel:"7d",getValue:()=>({from:ab()().subtract(7,"days").startOf("day").toDate(),to:ab()().endOf("day").toDate()})},{label:"Last 30 days",shortLabel:"30d",getValue:()=>({from:ab()().subtract(30,"days").startOf("day").toDate(),to:ab()().endOf("day").toDate()})},{label:"Month to date",shortLabel:"MTD",getValue:()=>({from:ab()().startOf("month").toDate(),to:ab()().endOf("day").toDate()})},{label:"Year to date",shortLabel:"YTD",getValue:()=>({from:ab()().startOf("year").toDate(),to:ab()().endOf("day").toDate()})}];var a0=e=>{let{value:s,onValueChange:t,label:l="Select Time Range",showTimeRange:a=!0}=e,[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(s),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(""),[p,g]=(0,d.useState)(""),j=(0,d.useRef)(null),f=(0,d.useCallback)(e=>{if(!e.from||!e.to)return null;for(let s of aX){let t=s.getValue(),l=ab()(e.from).isSame(ab()(t.from),"day"),a=ab()(e.to).isSame(ab()(t.to),"day");if(l&&a)return s.shortLabel}return null},[]);(0,d.useEffect)(()=>{u(f(s))},[s,f]);let v=(0,d.useCallback)(()=>{if(!x||!p)return{isValid:!0,error:""};let e=ab()(x,"YYYY-MM-DD"),s=ab()(p,"YYYY-MM-DD");return e.isValid()&&s.isValid()?s.isBefore(e)?{isValid:!1,error:"End date cannot be before start date"}:{isValid:!0,error:""}:{isValid:!1,error:"Invalid date format"}},[x,p])();(0,d.useEffect)(()=>{s.from&&h(ab()(s.from).format("YYYY-MM-DD")),s.to&&g(ab()(s.to).format("YYYY-MM-DD")),o(s)},[s]),(0,d.useEffect)(()=>{let e=e=>{j.current&&!j.current.contains(e.target)&&i(!1)};return r&&document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[r]);let y=(0,d.useCallback)((e,s)=>{if(!e||!s)return"Select date range";let t=e=>ab()(e).format("D MMM, HH:mm");return"".concat(t(e)," - ").concat(t(s))},[]),_=(0,d.useCallback)(e=>{let s;if(!e.from)return e;let t={...e},l=new Date(e.from);return s=new Date(e.to?e.to:e.from),l.toDateString(),s.toDateString(),l.setHours(0,0,0,0),s.setHours(23,59,59,999),t.from=l,t.to=s,t},[]),N=e=>{let{from:s,to:t}=e.getValue();o({from:s,to:t}),u(e.shortLabel),h(ab()(s).format("YYYY-MM-DD")),g(ab()(t).format("YYYY-MM-DD"))},Z=(0,d.useCallback)(()=>{try{if(x&&p&&v.isValid){let e=ab()(x,"YYYY-MM-DD").startOf("day"),s=ab()(p,"YYYY-MM-DD").endOf("day");if(e.isValid()&&s.isValid()){let t={from:e.toDate(),to:s.toDate()};o(t);let l=f(t);u(l)}}}catch(e){console.warn("Invalid date format:",e)}},[x,p,v.isValid,f]);return(0,d.useEffect)(()=>{Z()},[Z]),(0,c.jsxs)("div",{children:[l&&(0,c.jsx)(k.Z,{className:"mb-2",children:l}),(0,c.jsxs)("div",{className:"relative",ref:j,children:[(0,c.jsx)("div",{className:"w-[300px] px-3 py-2 text-sm border border-gray-300 rounded-md bg-white cursor-pointer hover:border-gray-400 focus:border-blue-500 focus:ring-1 focus:ring-blue-500",onClick:()=>i(!r),children:(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(lt.Z,{className:"text-gray-600"}),(0,c.jsx)("span",{className:"text-gray-900",children:y(s.from,s.to)})]}),(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-400 transition-transform ".concat(r?"rotate-180":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})}),r&&(0,c.jsx)("div",{className:"absolute top-full left-0 z-[9999] min-w-[600px] mt-1 bg-white border border-gray-200 rounded-lg shadow-xl",children:(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsxs)("div",{className:"w-1/2 border-r border-gray-200",children:[(0,c.jsx)("div",{className:"p-3 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-sm font-semibold text-gray-900",children:"Relative time (today, 7d, 30d, MTD, YTD)"})}),(0,c.jsx)("div",{className:"h-[350px] overflow-y-auto",children:aX.map(e=>{let s=m===e.shortLabel;return(0,c.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 cursor-pointer border-b border-gray-100 transition-colors ".concat(s?"bg-blue-50 hover:bg-blue-100 border-blue-200":"hover:bg-gray-50"),onClick:()=>N(e),children:[(0,c.jsx)("span",{className:"text-sm ".concat(s?"text-blue-700 font-medium":"text-gray-700"),children:e.label}),(0,c.jsx)("span",{className:"text-xs px-2 py-1 rounded ".concat(s?"text-blue-700 bg-blue-100":"text-gray-500 bg-gray-100"),children:e.shortLabel})]},e.label)})})]}),(0,c.jsxs)("div",{className:"w-1/2 relative",children:[(0,c.jsx)("div",{className:"p-3.5 border-b border-gray-200",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(aQ.Z,{className:"text-gray-600"}),(0,c.jsx)("span",{className:"text-sm font-semibold text-gray-900",children:"Start and end dates"})]})}),(0,c.jsxs)("div",{className:"p-6 space-y-6 pb-20",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"text-sm text-gray-700 mb-1 block",children:"Start date"}),(0,c.jsx)("input",{type:"date",value:x,onChange:e=>h(e.target.value),className:"w-65 px-3 py-2 text-sm border rounded-md cursor-pointer hover:border-gray-400 focus:border-blue-500 focus:ring-1 focus:ring-blue-500 ".concat(v.isValid?"border-gray-300":"border-red-300 focus:border-red-500 focus:ring-red-200")})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("label",{className:"text-sm text-gray-700 mb-1 block",children:"End date"}),(0,c.jsx)("input",{type:"date",value:p,onChange:e=>g(e.target.value),className:"w-65 px-3 py-2 text-sm border rounded-md cursor-pointer hover:border-gray-400 focus:border-blue-500 focus:ring-1 focus:ring-blue-500 ".concat(v.isValid?"border-gray-300":"border-red-300 focus:border-red-500 focus:ring-red-200")})]}),!v.isValid&&v.error&&(0,c.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-md p-3",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("svg",{className:"w-4 h-4 text-red-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})}),(0,c.jsx)("span",{className:"text-sm text-red-700 font-medium",children:v.error})]})}),n.from&&n.to&&v.isValid&&(0,c.jsxs)("div",{className:"bg-blue-50 p-3 rounded-md",children:[(0,c.jsx)("div",{className:"text-xs text-blue-700 font-medium",children:"Preview:"}),(0,c.jsx)("div",{className:"text-sm text-blue-800",children:y(n.from,n.to)})]})]}),(0,c.jsx)("div",{className:"absolute bottom-4 right-4",children:(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{o(s),s.from&&h(ab()(s.from).format("YYYY-MM-DD")),s.to&&g(ab()(s.to).format("YYYY-MM-DD")),u(f(s)),i(!1)},children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:()=>{n.from&&n.to&&v.isValid&&(t(n),requestIdleCallback(()=>{t(_(n))},{timeout:100}),i(!1))},disabled:!n.from||!n.to||!v.isValid,children:"Apply"})]})})]})]})})]}),a&&s.from&&s.to&&(0,c.jsxs)(k.Z,{className:"mt-2 text-xs text-gray-500",children:[ab()(s.from).format("MMM D, YYYY [at] HH:mm:ss")," -"," ",ab()(s.to).format("MMM D, YYYY [at] HH:mm:ss")]})]})},a1=e=>{let{userID:s,userRole:t,accessToken:l,userSpend:a,userMaxBudget:r,selectedTeam:i}=e;console.log("userSpend: ".concat(a));let[n,o]=(0,d.useState)(null!==a?a:0),[m,u]=(0,d.useState)(i?Number(eP(i.max_budget,4)):null);(0,d.useEffect)(()=>{if(i){if("Default Team"===i.team_alias)u(r);else{let e=!1;if(i.team_memberships)for(let t of i.team_memberships)t.user_id===s&&"max_budget"in t.litellm_budget_table&&null!==t.litellm_budget_table.max_budget&&(u(t.litellm_budget_table.max_budget),e=!0);e||u(i.max_budget)}}},[i,r]);let[x,h]=(0,d.useState)([]);(0,d.useEffect)(()=>{let e=async()=>{if(!l||!s||!t)return};(async()=>{try{if(null===s||null===t)return;if(null!==l){let e=(await (0,j.modelAvailableCall)(l,s,t)).data.map(e=>e.id);console.log("available_model_names:",e),h(e)}}catch(e){console.error("Error fetching user models:",e)}})(),e()},[t,l,s]),(0,d.useEffect)(()=>{null!==a&&o(a)},[a]);let p=[];i&&i.models&&(p=i.models),p&&p.includes("all-proxy-models")?(console.log("user models:",x),p=x):p&&p.includes("all-team-models")?p=i.models:p&&0===p.length&&(p=x);let g=null!==m?"$".concat(eP(Number(m),4)," limit"):"No limit",f=void 0!==n?eP(n,4):null;return console.log("spend in view user spend: ".concat(n)),(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsxs)("div",{className:"flex justify-between gap-x-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content",children:"Total Spend"}),(0,c.jsxs)("p",{className:"text-2xl text-tremor-content-strong dark:text-dark-tremor-content-strong font-semibold",children:["$",f]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content",children:"Max Budget"}),(0,c.jsx)("p",{className:"text-2xl text-tremor-content-strong dark:text-dark-tremor-content-strong font-semibold",children:g})]})]})})};let a2=e=>{let{key:s,info:t}=e;return{token:s,...t}};var a4=e=>{let{topKeys:s,accessToken:t,userID:l,userRole:a,teams:r,premiumUser:i,showTags:n=!1}=e,[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(null),[h,p]=(0,d.useState)(void 0),[g,f]=(0,d.useState)("table"),[v,y]=(0,d.useState)(new Set),_=e=>{y(s=>{let t=new Set(s);return t.has(e)?t.delete(e):t.add(e),t})},N=async e=>{if(t)try{let s=await (0,j.keyInfoV1Call)(t,e.api_key),l=a2(s);p(l),x(e.api_key),m(!0)}catch(e){console.error("Error fetching key info:",e)}},Z=()=>{m(!1),x(null),p(void 0)};d.useEffect(()=>{let e=e=>{"Escape"===e.key&&o&&Z()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[o]);let w=[{header:"Key ID",accessorKey:"api_key",cell:e=>(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:e.getValue(),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>N(e.row.original),children:e.getValue()?"".concat(e.getValue().slice(0,7),"..."):"-"})})})},{header:"Key Alias",accessorKey:"key_alias",cell:e=>e.getValue()||"-"}],k={header:"Spend (USD)",accessorKey:"spend",cell:e=>{let s=e.getValue();return s>0&&s<.01?"<$0.01":"$".concat(eP(s,2))}},S=n?[...w,{header:"Tags",accessorKey:"tags",cell:e=>{let s=e.getValue(),t=e.row.original.api_key,l=v.has(t);if(!s||0===s.length)return"-";let a=s.sort((e,s)=>s.usage-e.usage),r=l?a:a.slice(0,2),i=s.length>2;return(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[r.map((e,s)=>(0,c.jsx)(B.Z,{title:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Tag Name:"})," ",e.tag]}),(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Spend:"})," ",e.usage>0&&e.usage<.01?"<$0.01":"$".concat(eP(e.usage,2))]})]}),children:(0,c.jsxs)("span",{className:"px-2 py-1 bg-gray-100 rounded-full text-xs",children:[e.tag.slice(0,7),"..."]})},s)),i&&(0,c.jsx)("button",{onClick:()=>_(t),className:"ml-1 p-1 hover:bg-gray-200 rounded-full transition-colors",title:l?"Show fewer tags":"Show all tags",children:l?(0,c.jsx)(sG.Z,{className:"h-3 w-3 text-gray-500"}):(0,c.jsx)(sB.Z,{className:"h-3 w-3 text-gray-500"})})]})})}},k]:[...w,k],C=s.map(e=>({...e,display_key_alias:e.key_alias&&e.key_alias.length>10?"".concat(e.key_alias.slice(0,10),"..."):e.key_alias||"-"}));return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"mb-4 flex justify-end items-center",children:(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)("button",{onClick:()=>f("table"),className:"px-3 py-1 text-sm rounded-md ".concat("table"===g?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"),children:"Table View"}),(0,c.jsx)("button",{onClick:()=>f("chart"),className:"px-3 py-1 text-sm rounded-md ".concat("chart"===g?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"),children:"Chart View"})]})}),"chart"===g?(0,c.jsx)("div",{className:"relative",children:(0,c.jsx)(to.Z,{className:"mt-4 h-40 cursor-pointer hover:opacity-90",data:C,index:"display_key_alias",categories:["spend"],colors:["cyan"],yAxisWidth:120,tickGap:5,layout:"vertical",showXAxis:!1,showLegend:!1,valueFormatter:e=>e?"$".concat(eP(e,2)):"No Key Alias",onValueChange:e=>N(e),showTooltip:!0,customTooltip:e=>{var s,t;let l=null===(t=e.payload)||void 0===t?void 0:null===(s=t[0])||void 0===s?void 0:s.payload;return(0,c.jsx)("div",{className:"relative z-50 p-3 bg-black/90 shadow-lg rounded-lg text-white max-w-xs",children:(0,c.jsxs)("div",{className:"space-y-1.5",children:[(0,c.jsxs)("div",{className:"text-sm",children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Key Alias: "}),(0,c.jsx)("span",{className:"font-mono text-gray-100 break-all",children:null==l?void 0:l.key_alias})]}),(0,c.jsxs)("div",{className:"text-sm",children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Key ID: "}),(0,c.jsx)("span",{className:"font-mono text-gray-100 break-all",children:null==l?void 0:l.api_key})]}),(0,c.jsxs)("div",{className:"text-sm",children:[(0,c.jsx)("span",{className:"text-gray-300",children:"Spend: "}),(0,c.jsxs)("span",{className:"text-white font-medium",children:["$",eP(null==l?void 0:l.spend,2)]})]})]})})}})}):(0,c.jsx)("div",{className:"border rounded-lg overflow-hidden",children:(0,c.jsx)(lN,{columns:S,data:s,renderSubComponent:()=>(0,c.jsx)(c.Fragment,{}),getRowCanExpand:()=>!1,isLoading:!1})}),o&&u&&h&&(console.log("Rendering modal with:",{isModalOpen:o,selectedKey:u,keyData:h}),(0,c.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",onClick:e=>{e.target===e.currentTarget&&Z()},children:(0,c.jsxs)("div",{className:"bg-white rounded-lg shadow-xl relative w-11/12 max-w-6xl max-h-[90vh] overflow-y-auto min-h-[750px]",children:[(0,c.jsx)("button",{onClick:Z,className:"absolute top-4 right-4 text-gray-500 hover:text-gray-700 focus:outline-none","aria-label":"Close",children:(0,c.jsx)("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M6 18L18 6M6 6l12 12"})})}),(0,c.jsx)("div",{className:"p-6 h-full",children:(0,c.jsx)(sS,{keyId:u,onClose:Z,keyData:h,accessToken:t,userID:l,userRole:a,teams:r,premiumUser:i})})]})}))]})};function a5(e){return e>=1e6?(e/1e6).toFixed(2)+"M":e>=1e3?e/1e3+"k":e.toString()}function a3(e){return 0===e?"$0":e>=1e6?"$"+e/1e6+"M":e>=1e3?"$"+e/1e3+"k":"$"+e}let a6={blue:"#3b82f6",cyan:"#06b6d4",indigo:"#6366f1",green:"#22c55e",red:"#ef4444",purple:"#8b5cf6"},a8=e=>{let{active:s,payload:t,label:l}=e;if(s&&t&&t.length){let e=e=>e.replace("metrics.","").replace(/_/g," ").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),s=(e,s)=>{let t=s.substring(s.indexOf(".")+1);if(e.metrics&&t in e.metrics)return e.metrics[t]};return(0,c.jsxs)("div",{className:"w-56 rounded-tremor-default border border-tremor-border bg-tremor-background p-2 text-tremor-default shadow-tremor-dropdown",children:[(0,c.jsx)("p",{className:"text-tremor-content-strong",children:l}),t.map(t=>{var l;let a=null===(l=t.dataKey)||void 0===l?void 0:l.toString();if(!a||!t.payload)return null;let r=s(t.payload,a),i=a.includes("spend"),n=void 0!==r?i?"$".concat(r.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})):r.toLocaleString():"N/A",o=a6[t.color]||t.color;return(0,c.jsxs)("div",{className:"flex items-center justify-between space-x-4",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full ring-2 ring-white drop-shadow-md",style:{backgroundColor:o}}),(0,c.jsx)("p",{className:"font-medium text-tremor-content dark:text-dark-tremor-content",children:e(a)})]}),(0,c.jsx)("p",{className:"font-medium text-tremor-content-emphasis dark:text-dark-tremor-content-emphasis",children:n})]},a)})]})}return null},a7=e=>{let{categories:s,colors:t}=e,l=e=>e.replace("metrics.","").replace(/_/g," ").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ");return(0,c.jsx)("div",{className:"flex items-center justify-end space-x-4",children:s.map((e,s)=>{let a=a6[t[s]]||t[s];return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full ring-4 ring-white",style:{backgroundColor:a}}),(0,c.jsx)("p",{className:"text-sm text-tremor-content dark:text-dark-tremor-content",children:l(e)})]},e)})})},a9=e=>{var s,t;let{modelName:l,metrics:a}=e;return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsxs)(y.Z,{numItems:4,className:"gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Requests"}),(0,c.jsx)(S.Z,{children:a.total_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Successful Requests"}),(0,c.jsx)(S.Z,{children:a.total_successful_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Tokens"}),(0,c.jsx)(S.Z,{children:a.total_tokens.toLocaleString()}),(0,c.jsxs)(k.Z,{children:[Math.round(a.total_tokens/a.total_successful_requests)," avg per successful request"]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Spend"}),(0,c.jsxs)(S.Z,{children:["$",eP(a.total_spend,2)]}),(0,c.jsxs)(k.Z,{children:["$",eP(a.total_spend/a.total_successful_requests,3)," per successful request"]})]})]}),a.top_api_keys&&a.top_api_keys.length>0&&(0,c.jsxs)(G.Z,{className:"mt-4",children:[(0,c.jsx)(S.Z,{children:"Top API Keys by Spend"}),(0,c.jsx)("div",{className:"mt-3",children:(0,c.jsx)("div",{className:"grid grid-cols-1 gap-2",children:a.top_api_keys.map((e,s)=>(0,c.jsxs)("div",{className:"flex justify-between items-center p-3 bg-gray-50 rounded-lg",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:e.key_alias||"".concat(e.api_key.substring(0,10),"...")}),e.team_id&&(0,c.jsxs)(k.Z,{className:"text-xs text-gray-500",children:["Team: ",e.team_id]})]}),(0,c.jsxs)("div",{className:"text-right",children:[(0,c.jsxs)(k.Z,{className:"font-medium",children:["$",eP(e.spend,2)]}),(0,c.jsxs)(k.Z,{className:"text-xs text-gray-500",children:[e.requests.toLocaleString()," requests | ",e.tokens.toLocaleString()," tokens"]})]})]},e.api_key))})})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Total Tokens"}),(0,c.jsx)(a7,{categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"]})]}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"],valueFormatter:a5,customTooltip:a8,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Requests per day"}),(0,c.jsx)(a7,{categories:["metrics.api_requests"],colors:["blue"]})]}),(0,c.jsx)(to.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.api_requests"],colors:["blue"],valueFormatter:a5,customTooltip:a8,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Spend per day"}),(0,c.jsx)(a7,{categories:["metrics.spend"],colors:["green"]})]}),(0,c.jsx)(to.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.spend"],colors:["green"],valueFormatter:e=>"$".concat(eP(e,2))})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Success vs Failed Requests"}),(0,c.jsx)(a7,{categories:["metrics.successful_requests","metrics.failed_requests"],colors:["green","red"]})]}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.successful_requests","metrics.failed_requests"],colors:["green","red"],valueFormatter:a5,stack:!0,customTooltip:a8,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Prompt Caching Metrics"}),(0,c.jsx)(a7,{categories:["metrics.cache_read_input_tokens","metrics.cache_creation_input_tokens"],colors:["cyan","purple"]})]}),(0,c.jsxs)("div",{className:"mb-2",children:[(0,c.jsxs)(k.Z,{children:["Cache Read: ",(null===(s=a.total_cache_read_input_tokens)||void 0===s?void 0:s.toLocaleString())||0," tokens"]}),(0,c.jsxs)(k.Z,{children:["Cache Creation: ",(null===(t=a.total_cache_creation_input_tokens)||void 0===t?void 0:t.toLocaleString())||0," tokens"]})]}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a.daily_data,index:"date",categories:["metrics.cache_read_input_tokens","metrics.cache_creation_input_tokens"],colors:["cyan","purple"],valueFormatter:a5,customTooltip:a8,showLegend:!1})]})]})]})},re=e=>{let{modelMetrics:s}=e,t=Object.keys(s).sort((e,t)=>""===e?1:""===t?-1:s[t].total_spend-s[e].total_spend),l={total_requests:0,total_successful_requests:0,total_tokens:0,total_spend:0,total_cache_read_input_tokens:0,total_cache_creation_input_tokens:0,daily_data:{}};Object.values(s).forEach(e=>{l.total_requests+=e.total_requests,l.total_successful_requests+=e.total_successful_requests,l.total_tokens+=e.total_tokens,l.total_spend+=e.total_spend,l.total_cache_read_input_tokens+=e.total_cache_read_input_tokens||0,l.total_cache_creation_input_tokens+=e.total_cache_creation_input_tokens||0,e.daily_data.forEach(e=>{l.daily_data[e.date]||(l.daily_data[e.date]={prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,spend:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0}),l.daily_data[e.date].prompt_tokens+=e.metrics.prompt_tokens,l.daily_data[e.date].completion_tokens+=e.metrics.completion_tokens,l.daily_data[e.date].total_tokens+=e.metrics.total_tokens,l.daily_data[e.date].api_requests+=e.metrics.api_requests,l.daily_data[e.date].spend+=e.metrics.spend,l.daily_data[e.date].successful_requests+=e.metrics.successful_requests,l.daily_data[e.date].failed_requests+=e.metrics.failed_requests,l.daily_data[e.date].cache_read_input_tokens+=e.metrics.cache_read_input_tokens||0,l.daily_data[e.date].cache_creation_input_tokens+=e.metrics.cache_creation_input_tokens||0})});let a=Object.entries(l.daily_data).map(e=>{let[s,t]=e;return{date:s,metrics:t}}).sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime());return(0,c.jsxs)("div",{className:"space-y-8",children:[(0,c.jsxs)("div",{className:"border rounded-lg p-4",children:[(0,c.jsx)(S.Z,{children:"Overall Usage"}),(0,c.jsxs)(y.Z,{numItems:4,className:"gap-4 mb-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Requests"}),(0,c.jsx)(S.Z,{children:l.total_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Successful Requests"}),(0,c.jsx)(S.Z,{children:l.total_successful_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Tokens"}),(0,c.jsx)(S.Z,{children:l.total_tokens.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Total Spend"}),(0,c.jsxs)(S.Z,{children:["$",eP(l.total_spend,2)]})]})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(S.Z,{children:"Total Tokens Over Time"}),(0,c.jsx)(a7,{categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"]})]}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a,index:"date",categories:["metrics.prompt_tokens","metrics.completion_tokens","metrics.total_tokens"],colors:["blue","cyan","indigo"],valueFormatter:a5,customTooltip:a8,showLegend:!1})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Requests Over Time"}),(0,c.jsx)(tn.Z,{className:"mt-4",data:a,index:"date",categories:["metrics.successful_requests","metrics.failed_requests"],colors:["emerald","red"],valueFormatter:e=>e.toLocaleString(),stack:!0,customTooltip:a8,showLegend:!1})]})]})]}),(0,c.jsx)(tE.default,{defaultActiveKey:t[0],children:t.map(e=>(0,c.jsx)(tE.default.Panel,{header:(0,c.jsxs)("div",{className:"flex justify-between items-center w-full",children:[(0,c.jsx)(S.Z,{children:s[e].label||"Unknown Item"}),(0,c.jsxs)("div",{className:"flex space-x-4 text-sm text-gray-500",children:[(0,c.jsxs)("span",{children:["$",eP(s[e].total_spend,2)]}),(0,c.jsxs)("span",{children:[s[e].total_requests.toLocaleString()," requests"]})]})]}),children:(0,c.jsx)(a9,{modelName:e||"Unknown Model",metrics:s[e]})},e))})]})},rs=(e,s)=>{let t=e.metadata.key_alias||"key-hash-".concat(s),l=e.metadata.team_id;return l?"".concat(t," (team_id: ").concat(l,")"):t},rt=(e,s)=>{let t={};return e.results.forEach(e=>{Object.entries(e.breakdown[s]||{}).forEach(l=>{let[a,r]=l;t[a]||(t[a]={label:"api_keys"===s?rs(r,a):a,total_requests:0,total_successful_requests:0,total_failed_requests:0,total_tokens:0,prompt_tokens:0,completion_tokens:0,total_spend:0,total_cache_read_input_tokens:0,total_cache_creation_input_tokens:0,top_api_keys:[],daily_data:[]}),t[a].total_requests+=r.metrics.api_requests,t[a].prompt_tokens+=r.metrics.prompt_tokens,t[a].completion_tokens+=r.metrics.completion_tokens,t[a].total_tokens+=r.metrics.total_tokens,t[a].total_spend+=r.metrics.spend,t[a].total_successful_requests+=r.metrics.successful_requests,t[a].total_failed_requests+=r.metrics.failed_requests,t[a].total_cache_read_input_tokens+=r.metrics.cache_read_input_tokens||0,t[a].total_cache_creation_input_tokens+=r.metrics.cache_creation_input_tokens||0,t[a].daily_data.push({date:e.date,metrics:{prompt_tokens:r.metrics.prompt_tokens,completion_tokens:r.metrics.completion_tokens,total_tokens:r.metrics.total_tokens,api_requests:r.metrics.api_requests,spend:r.metrics.spend,successful_requests:r.metrics.successful_requests,failed_requests:r.metrics.failed_requests,cache_read_input_tokens:r.metrics.cache_read_input_tokens||0,cache_creation_input_tokens:r.metrics.cache_creation_input_tokens||0}})})}),"api_keys"!==s&&Object.entries(t).forEach(l=>{let[a,r]=l,i={};e.results.forEach(e=>{var t;let l=null===(t=e.breakdown[s])||void 0===t?void 0:t[a];l&&"api_key_breakdown"in l&&Object.entries(l.api_key_breakdown||{}).forEach(e=>{let[s,t]=e;i[s]||(i[s]={api_key:s,key_alias:t.metadata.key_alias,team_id:t.metadata.team_id,spend:0,requests:0,tokens:0}),i[s].spend+=t.metrics.spend,i[s].requests+=t.metrics.api_requests,i[s].tokens+=t.metrics.total_tokens})}),t[a].top_api_keys=Object.values(i).sort((e,s)=>s.spend-e.spend).slice(0,5)}),Object.values(t).forEach(e=>{e.daily_data.sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime())}),t};var rl=e=>{let{accessToken:s,selectedTags:t,formatAbbreviatedNumber:l}=e,[a,r]=(0,d.useState)({results:[],total_count:0,page:1,page_size:50,total_pages:0}),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(1),u=async()=>{if(s){n(!0);try{let e=await (0,j.perUserAnalyticsCall)(s,o,50,t.length>0?t:void 0);r(e)}catch(e){console.error("Failed to fetch per-user data:",e)}finally{n(!1)}}};return(0,d.useEffect)(()=>{u()},[s,t,o]),(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(S.Z,{children:"Per User Usage"}),(0,c.jsx)(sX.Z,{children:"Individual developer usage metrics"}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"User Details"}),(0,c.jsx)(ss.Z,{children:"Usage Distribution"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"User ID"}),(0,c.jsx)(sq.Z,{children:"User Email"}),(0,c.jsx)(sq.Z,{children:"User Agent"}),(0,c.jsx)(sq.Z,{className:"text-right",children:"Success Generations"}),(0,c.jsx)(sq.Z,{className:"text-right",children:"Total Tokens"}),(0,c.jsx)(sq.Z,{className:"text-right",children:"Failed Requests"}),(0,c.jsx)(sq.Z,{className:"text-right",children:"Total Cost"})]})}),(0,c.jsx)(sR.Z,{children:a.results.slice(0,10).map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{className:"font-medium",children:e.user_id})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:e.user_email||"N/A"})}),(0,c.jsx)(sz.Z,{children:(0,c.jsx)(k.Z,{children:e.user_agent||"Unknown"})}),(0,c.jsx)(sz.Z,{className:"text-right",children:(0,c.jsx)(k.Z,{children:l(e.successful_requests)})}),(0,c.jsx)(sz.Z,{className:"text-right",children:(0,c.jsx)(k.Z,{children:l(e.total_tokens)})}),(0,c.jsx)(sz.Z,{className:"text-right",children:(0,c.jsx)(k.Z,{children:l(e.failed_requests)})}),(0,c.jsx)(sz.Z,{className:"text-right",children:(0,c.jsxs)(k.Z,{children:["$",l(e.spend,4)]})})]},s))})]}),a.results.length>10&&(0,c.jsxs)("div",{className:"mt-4 flex justify-between items-center",children:[(0,c.jsxs)(k.Z,{className:"text-sm text-gray-500",children:["Showing 10 of ",a.total_count," results"]}),(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",onClick:()=>{o>1&&m(o-1)},disabled:1===o,children:"Previous"}),(0,c.jsx)(b.Z,{size:"sm",variant:"secondary",onClick:()=>{o=a.total_pages,children:"Next"})]})]})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsx)(S.Z,{className:"text-lg",children:"User Usage Distribution"}),(0,c.jsx)(sX.Z,{children:"Number of users by successful request frequency"})]}),(0,c.jsx)(to.Z,{data:(()=>{let e=new Map;a.results.forEach(s=>{let t=s.user_agent||"Unknown";e.set(t,(e.get(t)||0)+1)});let s=Array.from(e.entries()).sort((e,s)=>{let[,t]=e,[,l]=s;return l-t}).slice(0,8).map(e=>{let[s]=e;return s}),t={"1-9 requests":{range:[1,9],agents:{}},"10-99 requests":{range:[10,99],agents:{}},"100-999 requests":{range:[100,999],agents:{}},"1K-9.9K requests":{range:[1e3,9999],agents:{}},"10K-99.9K requests":{range:[1e4,99999],agents:{}},"100K+ requests":{range:[1e5,1/0],agents:{}}};return a.results.forEach(e=>{let l=e.successful_requests,a=e.user_agent||"Unknown";s.includes(a)&&Object.entries(t).forEach(e=>{let[s,t]=e;l>=t.range[0]&&l<=t.range[1]&&(t.agents[a]||(t.agents[a]=0),t.agents[a]++)})}),Object.entries(t).map(e=>{let[t,l]=e,a={category:t};return s.forEach(e=>{a[e]=l.agents[e]||0}),a})})(),index:"category",categories:(()=>{let e=new Map;return a.results.forEach(s=>{let t=s.user_agent||"Unknown";e.set(t,(e.get(t)||0)+1)}),Array.from(e.entries()).sort((e,s)=>{let[,t]=e,[,l]=s;return l-t}).slice(0,8).map(e=>{let[s]=e;return s})})(),colors:["blue","green","orange","red","purple","yellow","pink","indigo"],valueFormatter:e=>"".concat(e," users"),yAxisWidth:80,showLegend:!0,stack:!0})]})]})]})]})},ra=t(49096),rr=t(53335);let{cva:ri,cx:rn,compose:ro}=(0,ra.ZD)({hooks:{onComplete:e=>(0,rr.m6)(e)}});function rc(e){var s,t;let{className:l="",...a}=e,r=(0,d.useId)();return s=()=>{let e=document.getAnimations().filter(e=>e instanceof CSSAnimation&&"spin"===e.animationName),s=e.find(e=>{var s;return(null===(s=e.effect.target)||void 0===s?void 0:s.getAttribute("data-spinner-id"))===r}),t=e.find(e=>{var s;return e.effect instanceof KeyframeEffect&&(null===(s=e.effect.target)||void 0===s?void 0:s.getAttribute("data-spinner-id"))!==r});s&&t&&(s.currentTime=t.currentTime)},t=[r],(0,d.useLayoutEffect)(s,t),(0,c.jsxs)("svg",{"data-spinner-id":r,className:rn("pointer-events-none size-12 animate-spin text-current",l),fill:"none",viewBox:"0 0 24 24",...a,children:[(0,c.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,c.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}let rd=e=>{let{isDateChanging:s=!1}=e;return(0,c.jsx)("div",{className:"flex items-center justify-center h-40",children:(0,c.jsxs)("div",{className:"flex items-center justify-center gap-3",children:[(0,c.jsx)(rc,{className:"size-5"}),(0,c.jsxs)("div",{className:"flex flex-col",children:[(0,c.jsx)("span",{className:"text-gray-600 text-sm font-medium",children:s?"Processing date selection...":"Loading chart data..."}),(0,c.jsx)("span",{className:"text-gray-400 text-xs mt-1",children:s?"This will only take a moment":"Fetching your data"})]})]})})};var rm=e=>{let{accessToken:s,userRole:t}=e,[l,a]=(0,d.useState)({results:[]}),[r,i]=(0,d.useState)({results:[]}),[n,o]=(0,d.useState)({results:[]}),[m,u]=(0,d.useState)({results:[]}),[x,h]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)([]),[b,_]=(0,d.useState)([]),[N,Z]=(0,d.useState)(!1),[w,C]=(0,d.useState)(!1),[A,T]=(0,d.useState)(!1),[E,L]=(0,d.useState)(!1),[P,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)(!1),F=new Date,R=async()=>{if(s){Z(!0);try{let e=await (0,j.tagDistinctCall)(s);v(e.results.map(e=>e.tag))}catch(e){console.error("Failed to fetch available tags:",e)}finally{Z(!1)}}},z=async()=>{if(s){C(!0);try{let e=await (0,j.tagDauCall)(s,F,p||void 0,b.length>0?b:void 0);a(e)}catch(e){console.error("Failed to fetch DAU data:",e)}finally{C(!1)}}},U=async()=>{if(s){T(!0);try{let e=await (0,j.tagWauCall)(s,F,p||void 0,b.length>0?b:void 0);i(e)}catch(e){console.error("Failed to fetch WAU data:",e)}finally{T(!1)}}},q=async()=>{if(s){L(!0);try{let e=await (0,j.tagMauCall)(s,F,p||void 0,b.length>0?b:void 0);o(e)}catch(e){console.error("Failed to fetch MAU data:",e)}finally{L(!1)}}},V=async()=>{if(s&&x.from&&x.to){M(!0);try{let e=await (0,j.userAgentSummaryCall)(s,x.from,x.to,b.length>0?b:void 0);u(e)}catch(e){console.error("Failed to fetch user agent summary data:",e)}finally{M(!1),D(!1)}}};(0,d.useEffect)(()=>{R()},[s]),(0,d.useEffect)(()=>{if(!s)return;let e=setTimeout(()=>{z(),U(),q()},50);return()=>clearTimeout(e)},[s,p,b]),(0,d.useEffect)(()=>{if(!x.from||!x.to)return;let e=setTimeout(()=>{V()},50);return()=>clearTimeout(e)},[s,x,b]);let K=e=>e.startsWith("User-Agent: ")?e.replace("User-Agent: ",""):e,H=e=>e.length>15?e.substring(0,15)+"...":e,Y=e=>Object.entries(e.reduce((e,s)=>(e[s.tag]=(e[s.tag]||0)+s.active_users,e),{})).sort((e,s)=>{let[,t]=e,[,l]=s;return l-t}).map(e=>{let[s]=e;return s}),J=Y(l.results).slice(0,10),W=Y(r.results).slice(0,10),$=Y(n.results).slice(0,10),Q=(()=>{let e=[],s=new Date;for(let t=6;t>=0;t--){let l=new Date(s);l.setDate(l.getDate()-t);let a={date:l.toISOString().split("T")[0]};J.forEach(e=>{a[K(e)]=0}),e.push(a)}return l.results.forEach(s=>{let t=K(s.tag),l=e.find(e=>e.date===s.date);l&&(l[t]=s.active_users)}),e})(),X=(()=>{let e=[];for(let s=1;s<=7;s++){let t={week:"Week ".concat(s)};W.forEach(e=>{t[K(e)]=0}),e.push(t)}return r.results.forEach(s=>{let t=K(s.tag),l=s.date.match(/Week (\d+)/);if(l){let a="Week ".concat(l[1]),r=e.find(e=>e.week===a);r&&(r[t]=s.active_users)}}),e})(),ee=(()=>{let e=[];for(let s=1;s<=7;s++){let t={month:"Month ".concat(s)};$.forEach(e=>{t[K(e)]=0}),e.push(t)}return n.results.forEach(s=>{let t=K(s.tag),l=s.date.match(/Month (\d+)/);if(l){let a="Month ".concat(l[1]),r=e.find(e=>e.month===a);r&&(r[t]=s.active_users)}}),e})(),es=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e>=1e8||e>=1e7||e>=1e6?(e/1e6).toFixed(s)+"M":e>=1e4?(e/1e3).toFixed(s)+"K":e>=1e3?(e/1e3).toFixed(s)+"K":e.toFixed(s)};return(0,c.jsxs)("div",{className:"space-y-6 mt-6",children:[(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"flex justify-between items-start",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Summary by User Agent"}),(0,c.jsx)(sX.Z,{children:"Performance metrics for different user agents"})]}),(0,c.jsxs)("div",{className:"w-96",children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium block mb-2",children:"Filter by User Agents"}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"All User Agents",value:b,onChange:_,style:{width:"100%"},showSearch:!0,allowClear:!0,loading:N,optionFilterProp:"label",className:"rounded-md",maxTagCount:"responsive",children:f.map(e=>{let s=K(e),t=s.length>50?"".concat(s.substring(0,50),"..."):s;return(0,c.jsx)(I.default.Option,{value:e,label:t,title:s,children:t},e)})})]})]}),(0,c.jsx)(a0,{value:x,onValueChange:e=>{D(!0),M(!0),h(e)}}),P?(0,c.jsx)(rd,{isDateChanging:O}):(0,c.jsxs)(y.Z,{numItems:4,className:"gap-4",children:[(m.results||[]).slice(0,4).map((e,s)=>{let t=K(e.tag),l=H(t);return(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(B.Z,{title:t,placement:"top",children:(0,c.jsx)(S.Z,{className:"truncate",children:l})}),(0,c.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Success Requests"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:es(e.successful_requests)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Tokens"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:es(e.total_tokens)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Cost"}),(0,c.jsxs)(aE.Z,{className:"text-lg",children:["$",es(e.total_spend,4)]})]})]})]},s)}),Array.from({length:Math.max(0,4-(m.results||[]).length)}).map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"No Data"}),(0,c.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Success Requests"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Tokens"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm text-gray-600",children:"Total Cost"}),(0,c.jsx)(aE.Z,{className:"text-lg",children:"-"})]})]})]},"empty-".concat(s)))]})]})}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"DAU/WAU/MAU"}),(0,c.jsx)(ss.Z,{children:"Per User Usage (Last 30 Days)"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(S.Z,{children:"DAU, WAU & MAU per Agent"}),(0,c.jsx)(sX.Z,{children:"Active users across different time periods"})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"DAU"}),(0,c.jsx)(ss.Z,{children:"WAU"}),(0,c.jsx)(ss.Z,{children:"MAU"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(S.Z,{className:"text-lg",children:"Daily Active Users - Last 7 Days"})}),w?(0,c.jsx)(rd,{isDateChanging:!1}):(0,c.jsx)(to.Z,{data:Q,index:"date",categories:J.map(K),valueFormatter:e=>es(e),yAxisWidth:60,showLegend:!0,stack:!0})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(S.Z,{className:"text-lg",children:"Weekly Active Users - Last 7 Weeks"})}),A?(0,c.jsx)(rd,{isDateChanging:!1}):(0,c.jsx)(to.Z,{data:X,index:"week",categories:W.map(K),valueFormatter:e=>es(e),yAxisWidth:60,showLegend:!0,stack:!0})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(S.Z,{className:"text-lg",children:"Monthly Active Users - Last 7 Months"})}),E?(0,c.jsx)(rd,{isDateChanging:!1}):(0,c.jsx)(to.Z,{data:ee,index:"month",categories:$.map(K),valueFormatter:e=>es(e),yAxisWidth:60,showLegend:!0,stack:!0})]})]})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(rl,{accessToken:s,selectedTags:b,formatAbbreviatedNumber:es})})]})]})})]})},ru=e=>{let{accessToken:s,entityType:t,entityId:l,userID:a,userRole:r,entityList:i,premiumUser:n}=e,[o,m]=(0,d.useState)({results:[],metadata:{total_spend:0,total_api_requests:0,total_successful_requests:0,total_failed_requests:0,total_tokens:0}}),u=rt(o,"models"),x=rt(o,"api_keys"),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)({from:new Date(Date.now()-24192e5),to:new Date}),b=async()=>{if(!s||!g.from||!g.to)return;let e=new Date(g.from),l=new Date(g.to);if("tag"===t)m(await (0,j.tagDailyActivityCall)(s,e,l,1,h.length>0?h:null));else if("team"===t)m(await (0,j.teamDailyActivityCall)(s,e,l,1,h.length>0?h:null));else throw Error("Invalid entity type")};(0,d.useEffect)(()=>{b()},[s,g,l,h]);let _=()=>{let e={};return o.results.forEach(s=>{Object.entries(s.breakdown.providers||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={provider:t,spend:0,requests:0,successful_requests:0,failed_requests:0,tokens:0});try{e[t].spend+=l.metrics.spend,e[t].requests+=l.metrics.api_requests,e[t].successful_requests+=l.metrics.successful_requests,e[t].failed_requests+=l.metrics.failed_requests,e[t].tokens+=l.metrics.total_tokens}catch(e){console.error("Error processing provider ".concat(t,": ").concat(e))}})}),Object.values(e).filter(e=>e.spend>0).sort((e,s)=>s.spend-e.spend)},N=e=>0===h.length?e:e.filter(e=>h.includes(e.metadata.id)),Z=()=>{let e={};return o.results.forEach(s=>{Object.entries(s.breakdown.entities||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{alias:l.metadata.team_alias||t,id:t}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests,e[t].metrics.failed_requests+=l.metrics.failed_requests,e[t].metrics.total_tokens+=l.metrics.total_tokens})}),N(Object.values(e).sort((e,s)=>s.metrics.spend-e.metrics.spend))};return(0,c.jsxs)("div",{style:{width:"100%"},children:[(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 w-full mb-4",children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(a0,{value:g,onValueChange:f})}),i&&i.length>0&&(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(k.Z,{children:["Filter by ","tag"===t?"Tags":"Teams"]}),(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select ".concat("tag"===t?"tags":"teams"," to filter..."),value:h,onChange:p,options:(()=>{if(i)return i})(),className:"mt-2",allowClear:!0})]})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"solid",className:"mt-1",children:[(0,c.jsx)(ss.Z,{children:"Cost"}),(0,c.jsx)(ss.Z,{children:"Model Activity"}),(0,c.jsx)(ss.Z,{children:"Key Activity"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 w-full",children:[(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(S.Z,{children:["tag"===t?"Tag":"Team"," Spend Overview"]}),(0,c.jsxs)(y.Z,{numItems:5,className:"gap-4 mt-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Spend"}),(0,c.jsxs)(k.Z,{className:"text-2xl font-bold mt-2",children:["$",eP(o.metadata.total_spend,2)]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:o.metadata.total_api_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Successful Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-green-600",children:o.metadata.total_successful_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Failed Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-red-600",children:o.metadata.total_failed_requests.toLocaleString()})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Tokens"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:o.metadata.total_tokens.toLocaleString()})]})]})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Daily Spend"}),(0,c.jsx)(to.Z,{data:[...o.results].sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime()),index:"date",categories:["metrics.spend"],colors:["cyan"],valueFormatter:a3,yAxisWidth:100,showLegend:!1,customTooltip:e=>{let{payload:s,active:l}=e;if(!l||!(null==s?void 0:s[0]))return null;let a=s[0].payload,r=Object.keys(a.breakdown.entities||{}).length;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:a.date}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Total Spend: $",eP(a.metrics.spend,2)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Total Requests: ",a.metrics.api_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Successful: ",a.metrics.successful_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Failed: ",a.metrics.failed_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Total Tokens: ",a.metrics.total_tokens]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["tag"===t?"Total Tags":"Total Teams",": ",r]}),(0,c.jsxs)("div",{className:"mt-2 border-t pt-2",children:[(0,c.jsxs)("p",{className:"font-semibold",children:["Spend by ","tag"===t?"Tag":"Team",":"]}),Object.entries(a.breakdown.entities||{}).sort((e,s)=>{let[,t]=e,[,l]=s,a=t.metrics.spend;return l.metrics.spend-a}).slice(0,5).map(e=>{let[s,t]=e;return(0,c.jsxs)("p",{className:"text-sm text-gray-600",children:[t.metadata.team_alias||s,": $",eP(t.metrics.spend,2)]},s)}),r>5&&(0,c.jsxs)("p",{className:"text-sm text-gray-500 italic",children:["...and ",r-5," more"]})]})]})}})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsxs)("div",{className:"flex flex-col space-y-2",children:[(0,c.jsxs)(S.Z,{children:["Spend Per ","tag"===t?"Tag":"Team"]}),(0,c.jsx)(sX.Z,{className:"text-xs",children:"Showing Top 5 by Spend"}),(0,c.jsxs)("div",{className:"flex items-center text-sm text-gray-500",children:[(0,c.jsxs)("span",{children:["Get Started by Tracking cost per ",t," "]}),(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/enterprise#spend-tracking",className:"text-blue-500 hover:text-blue-700 ml-1",children:"here"})]})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-6",children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(to.Z,{className:"mt-4 h-52",data:Z().slice(0,5).map(e=>({...e,metadata:{...e.metadata,alias_display:e.metadata.alias&&e.metadata.alias.length>15?"".concat(e.metadata.alias.slice(0,15),"..."):e.metadata.alias}})),index:"metadata.alias_display",categories:["metrics.spend"],colors:["cyan"],valueFormatter:a3,layout:"vertical",showLegend:!1,yAxisWidth:150,customTooltip:e=>{let{payload:s,active:t}=e;if(!t||!(null==s?void 0:s[0]))return null;let l=s[0].payload;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:l.metadata.alias}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Spend: $",eP(l.metrics.spend,4)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Requests: ",l.metrics.api_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-green-600",children:["Successful: ",l.metrics.successful_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-red-600",children:["Failed: ",l.metrics.failed_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Tokens: ",l.metrics.total_tokens.toLocaleString()]})]})}})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)("div",{className:"h-52 overflow-y-auto",children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"tag"===t?"Tag":"Team"}),(0,c.jsx)(sq.Z,{children:"Spend"}),(0,c.jsx)(sq.Z,{className:"text-green-600",children:"Successful"}),(0,c.jsx)(sq.Z,{className:"text-red-600",children:"Failed"}),(0,c.jsx)(sq.Z,{children:"Tokens"})]})}),(0,c.jsx)(sR.Z,{children:Z().filter(e=>e.metrics.spend>0).map(e=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e.metadata.alias}),(0,c.jsxs)(sz.Z,{children:["$",eP(e.metrics.spend,4)]}),(0,c.jsx)(sz.Z,{className:"text-green-600",children:e.metrics.successful_requests.toLocaleString()}),(0,c.jsx)(sz.Z,{className:"text-red-600",children:e.metrics.failed_requests.toLocaleString()}),(0,c.jsx)(sz.Z,{children:e.metrics.total_tokens.toLocaleString()})]},e.metadata.id))})]})})})]})]})})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Top API Keys"}),(0,c.jsx)(a4,{topKeys:(()=>{console.log("debugTags",{spendData:o});let e={};return o.results.forEach(s=>{let{breakdown:t}=s,{entities:l}=t;console.log("debugTags",{entities:l});let a=Object.keys(l).reduce((e,s)=>{let{api_key_breakdown:t}=l[s];return Object.keys(t).forEach(l=>{let a={tag:s,usage:t[l].metrics.spend};e[l]?e[l].push(a):e[l]=[a]}),e},{});console.log("debugTags",{tagDictionary:a}),Object.entries(s.breakdown.api_keys||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{key_alias:l.metadata.key_alias,team_id:l.metadata.team_id||null,tags:a[t]||[]}},console.log("debugTags",{keySpend:e})),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests,e[t].metrics.failed_requests+=l.metrics.failed_requests,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{api_key:s,key_alias:t.metadata.key_alias||"-",tags:t.metadata.tags||"-",spend:t.metrics.spend}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),accessToken:s,userID:a,userRole:r,teams:null,premiumUser:n,showTags:"tag"===t})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Top Models"}),(0,c.jsx)(to.Z,{className:"mt-4 h-40",data:(()=>{let e={};return o.results.forEach(s=>{Object.entries(s.breakdown.models||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={spend:0,requests:0,successful_requests:0,failed_requests:0,tokens:0});try{e[t].spend+=l.metrics.spend}catch(e){console.error("Error adding spend for ".concat(t,": ").concat(e,", got metrics: ").concat(JSON.stringify(l)))}e[t].requests+=l.metrics.api_requests,e[t].successful_requests+=l.metrics.successful_requests,e[t].failed_requests+=l.metrics.failed_requests,e[t].tokens+=l.metrics.total_tokens})}),Object.entries(e).map(e=>{let[s,t]=e;return{key:s,...t}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),index:"display_key",categories:["spend"],colors:["cyan"],valueFormatter:e=>"$".concat(eP(e,2)),layout:"vertical",yAxisWidth:200,showLegend:!1})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,c.jsx)(S.Z,{children:"Provider Usage"}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(a$.Z,{className:"mt-4 h-40",data:_(),index:"provider",category:"spend",valueFormatter:e=>"$".concat(eP(e,2)),colors:["cyan","blue","indigo","violet","purple"]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Provider"}),(0,c.jsx)(sq.Z,{children:"Spend"}),(0,c.jsx)(sq.Z,{className:"text-green-600",children:"Successful"}),(0,c.jsx)(sq.Z,{className:"text-red-600",children:"Failed"}),(0,c.jsx)(sq.Z,{children:"Tokens"})]})}),(0,c.jsx)(sR.Z,{children:_().map(e=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[e.provider&&(0,c.jsx)("img",{src:(0,s0.dr)(e.provider).logo,alt:"".concat(e.provider," logo"),className:"w-4 h-4",onError:s=>{let t=s.target,l=t.parentElement;if(l){var a;let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=(null===(a=e.provider)||void 0===a?void 0:a.charAt(0))||"-",l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e.provider})]})}),(0,c.jsxs)(sz.Z,{children:["$",eP(e.spend,2)]}),(0,c.jsx)(sz.Z,{className:"text-green-600",children:e.successful_requests.toLocaleString()}),(0,c.jsx)(sz.Z,{className:"text-red-600",children:e.failed_requests.toLocaleString()}),(0,c.jsx)(sz.Z,{children:e.tokens.toLocaleString()})]},e.provider))})]})})]})]})})})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:u})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:x})})]})]})]})},rx=e=>{let{isOpen:s,onClose:t,accessToken:l}=e,[a]=A.Z.useForm(),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)("cloudzero"),[p,g]=(0,d.useState)(!1);(0,d.useEffect)(()=>{s&&l&&j()},[s,l]);let j=async()=>{u(!0);try{let e=await fetch("/cloudzero/settings",{method:"GET",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"}});if(e.ok){let s=await e.json();o(s),a.setFieldsValue({connection_id:s.connection_id})}else if(404!==e.status){let s=await e.json();eo.Z.fromBackend("Failed to load existing settings: ".concat(s.error||"Unknown error"))}}catch(e){console.error("Error loading CloudZero settings:",e),eo.Z.fromBackend("Failed to load existing settings")}finally{u(!1)}},f=async e=>{if(!l){eo.Z.fromBackend("No access token available");return}i(!0);try{let s={...e,timezone:"UTC"},t=await fetch(n?"/cloudzero/settings":"/cloudzero/init",{method:n?"PUT":"POST",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify(s)}),a=await t.json();if(t.ok)return eo.Z.success(a.message||"CloudZero settings saved successfully"),o({api_key_masked:e.api_key.substring(0,4)+"****"+e.api_key.slice(-4),connection_id:e.connection_id,status:"configured"}),!0;return eo.Z.fromBackend(a.error||"Failed to save CloudZero settings"),!1}catch(e){return console.error("Error saving CloudZero settings:",e),eo.Z.fromBackend("Failed to save CloudZero settings"),!1}finally{i(!1)}},v=async()=>{if(!l){eo.Z.fromBackend("No access token available");return}g(!0);try{let e=await fetch("/cloudzero/export",{method:"POST",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify({limit:1e5,operation:"replace_hourly"})}),s=await e.json();e.ok?(eo.Z.success(s.message||"Export to CloudZero completed successfully"),t()):eo.Z.fromBackend(s.error||"Failed to export to CloudZero")}catch(e){console.error("Error exporting to CloudZero:",e),eo.Z.fromBackend("Failed to export to CloudZero")}finally{g(!1)}},y=async()=>{g(!0);try{eo.Z.info("CSV export functionality coming soon!"),t()}catch(e){console.error("Error exporting CSV:",e),eo.Z.fromBackend("Failed to export CSV")}finally{g(!1)}},N=async()=>{if("cloudzero"===x){if(!n){let e=await a.validateFields();if(!await f(e))return}await v()}else await y()},Z=()=>{a.resetFields(),h("cloudzero"),o(null),t()},w=[{value:"cloudzero",label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("img",{src:"/cloudzero.png",alt:"CloudZero",className:"w-5 h-5",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)("span",{children:"Export to CloudZero"})]})},{value:"csv",label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})}),(0,c.jsx)("span",{children:"Export to CSV"})]})}];return(0,c.jsx)(T.Z,{title:"Export Data",open:s,onCancel:Z,footer:null,width:600,destroyOnClose:!0,children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium mb-2 block",children:"Export Destination"}),(0,c.jsx)(I.default,{value:x,onChange:h,options:w,className:"w-full",size:"large"})]}),"cloudzero"===x&&(0,c.jsx)("div",{children:m?(0,c.jsx)("div",{className:"flex justify-center py-8",children:(0,c.jsx)(eF.Z,{size:"large"})}):(0,c.jsxs)(c.Fragment,{children:[n&&(0,c.jsx)(l$.Z,{title:"Existing CloudZero Configuration",icon:()=>(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}),color:"green",className:"mb-4",children:(0,c.jsxs)(k.Z,{children:["API Key: ",n.api_key_masked,(0,c.jsx)("br",{}),"Connection ID: ",n.connection_id]})}),!n&&(0,c.jsxs)(A.Z,{form:a,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"CloudZero API Key",name:"api_key",rules:[{required:!0,message:"Please enter your CloudZero API key"}],children:(0,c.jsx)(_.Z,{type:"password",placeholder:"Enter your CloudZero API key"})}),(0,c.jsx)(A.Z.Item,{label:"Connection ID",name:"connection_id",rules:[{required:!0,message:"Please enter the CloudZero connection ID"}],children:(0,c.jsx)(_.Z,{placeholder:"Enter CloudZero connection ID"})})]})]})}),"csv"===x&&(0,c.jsx)(l$.Z,{title:"CSV Export",icon:()=>(0,c.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})}),color:"blue",children:(0,c.jsx)(k.Z,{children:"Export your usage data as a CSV file for analysis in spreadsheet applications."})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2 pt-4",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:Z,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:N,loading:r||p,disabled:r||p,children:"cloudzero"===x?"Export to CloudZero":"Export CSV"})]})]})})},rh=e=>{var s,t,l,a,r,i,n,o,m,u;let{accessToken:x,userRole:h,userID:p,teams:g,premiumUser:f}=e,[b,_]=(0,d.useState)({results:[],metadata:{}}),[N,Z]=(0,d.useState)(!1),[w,C]=(0,d.useState)(!1),I=(0,d.useMemo)(()=>new Date(Date.now()-6048e5),[]),A=(0,d.useMemo)(()=>new Date,[]),[T,E]=(0,d.useState)({from:I,to:A}),[L,P]=(0,d.useState)([]),[M,O]=(0,d.useState)("groups"),[D,F]=(0,d.useState)(!1),R=async()=>{x&&P(Object.values(await (0,j.tagListCall)(x)).map(e=>({label:e.name,value:e.name})))};(0,d.useEffect)(()=>{R()},[x]);let z=(null===(s=b.metadata)||void 0===s?void 0:s.total_spend)||0,U=()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.providers||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{},api_key_breakdown:{}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests||0,e[t].metrics.failed_requests+=l.metrics.failed_requests||0,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{provider:s,spend:t.metrics.spend,requests:t.metrics.api_requests,successful_requests:t.metrics.successful_requests,failed_requests:t.metrics.failed_requests,tokens:t.metrics.total_tokens}})},q=(0,d.useCallback)(async()=>{if(!x||!T.from||!T.to)return;Z(!0);let e=new Date(T.from),s=new Date(T.to);try{try{let t=await (0,j.userDailyActivityAggregatedCall)(x,e,s);_(t);return}catch(e){}let t=await (0,j.userDailyActivityCall)(x,e,s);if(t.metadata.total_pages<=1){_(t);return}let l=[...t.results],a={...t.metadata};for(let r=2;r<=t.metadata.total_pages;r++){let t=await (0,j.userDailyActivityCall)(x,e,s,r);l.push(...t.results),t.metadata&&(a.total_spend+=t.metadata.total_spend||0,a.total_api_requests+=t.metadata.total_api_requests||0,a.total_successful_requests+=t.metadata.total_successful_requests||0,a.total_failed_requests+=t.metadata.total_failed_requests||0,a.total_tokens+=t.metadata.total_tokens||0)}_({results:l,metadata:a})}catch(e){console.error("Error fetching user spend data:",e)}finally{Z(!1),C(!1)}},[x,T.from,T.to]),V=(0,d.useCallback)(e=>{C(!0),Z(!0),E(e)},[]);(0,d.useEffect)(()=>{if(!T.from||!T.to)return;let e=setTimeout(()=>{q()},50);return()=>clearTimeout(e)},[q]);let B=rt(b,"models"),K=rt(b,"api_keys"),H=rt(b,"mcp_servers");return(0,c.jsxs)("div",{style:{width:"100%"},className:"p-8 relative",children:[(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"solid",className:"mt-1",children:[eI.ZL.includes(h||"")?(0,c.jsx)(ss.Z,{children:"Global Usage"}):(0,c.jsx)(ss.Z,{children:"Your Usage"}),(0,c.jsx)(ss.Z,{children:"Team Usage"}),eI.ZL.includes(h||"")?(0,c.jsx)(ss.Z,{children:"Tag Usage"}):(0,c.jsx)(c.Fragment,{}),eI.ZL.includes(h||"")?(0,c.jsx)(ss.Z,{children:"User Agent Activity"}):(0,c.jsx)(c.Fragment,{})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsx)(y.Z,{numItems:2,className:"gap-10 w-1/2 mb-4",children:(0,c.jsx)(v.Z,{children:(0,c.jsx)(a0,{value:T,onValueChange:V})})}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"solid",className:"mt-1",children:[(0,c.jsx)(ss.Z,{children:"Cost"}),(0,c.jsx)(ss.Z,{children:"Model Activity"}),(0,c.jsx)(ss.Z,{children:"Key Activity"}),(0,c.jsx)(ss.Z,{children:"MCP Server Activity"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 w-full",children:[(0,c.jsxs)(v.Z,{numColSpan:2,children:[(0,c.jsxs)(k.Z,{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content mb-2 mt-2 text-lg",children:["Project Spend"," ",new Date().toLocaleString("default",{month:"long"})," ","1 - ",new Date(new Date().getFullYear(),new Date().getMonth()+1,0).getDate()]}),(0,c.jsx)(a1,{userID:p,userRole:h,accessToken:x,userSpend:z,selectedTeam:null,userMaxBudget:null})]}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Usage Metrics"}),(0,c.jsxs)(y.Z,{numItems:5,className:"gap-4 mt-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:(null===(l=b.metadata)||void 0===l?void 0:null===(t=l.total_api_requests)||void 0===t?void 0:t.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Successful Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-green-600",children:(null===(r=b.metadata)||void 0===r?void 0:null===(a=r.total_successful_requests)||void 0===a?void 0:a.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Failed Requests"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2 text-red-600",children:(null===(n=b.metadata)||void 0===n?void 0:null===(i=n.total_failed_requests)||void 0===i?void 0:i.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Total Tokens"}),(0,c.jsx)(k.Z,{className:"text-2xl font-bold mt-2",children:(null===(m=b.metadata)||void 0===m?void 0:null===(o=m.total_tokens)||void 0===o?void 0:o.toLocaleString())||0})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Average Cost per Request"}),(0,c.jsxs)(k.Z,{className:"text-2xl font-bold mt-2",children:["$",eP((z||0)/((null===(u=b.metadata)||void 0===u?void 0:u.total_api_requests)||1),4)]})]})]})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Daily Spend"}),N?(0,c.jsx)(rd,{isDateChanging:w}):(0,c.jsx)(to.Z,{data:[...b.results].sort((e,s)=>new Date(e.date).getTime()-new Date(s.date).getTime()),index:"date",categories:["metrics.spend"],colors:["cyan"],valueFormatter:a3,yAxisWidth:100,showLegend:!1,customTooltip:e=>{let{payload:s,active:t}=e;if(!t||!(null==s?void 0:s[0]))return null;let l=s[0].payload;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:l.date}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Spend: $",eP(l.metrics.spend,2)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Requests: ",l.metrics.api_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Successful: ",l.metrics.successful_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Failed: ",l.metrics.failed_requests]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Tokens: ",l.metrics.total_tokens]})]})}})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)(S.Z,{children:"Top API Keys"}),(0,c.jsx)(a4,{topKeys:(()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.api_keys||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{key_alias:l.metadata.key_alias,team_id:null,tags:l.metadata.tags||[]}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests,e[t].metrics.failed_requests+=l.metrics.failed_requests,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),console.log("debugTags",{keySpend:e,userSpendData:b}),Object.entries(e).map(e=>{let[s,t]=e;return{api_key:s,key_alias:t.metadata.key_alias||"-",tags:t.metadata.tags||[],spend:t.metrics.spend}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),accessToken:x,userID:p,userRole:h,teams:null,premiumUser:f})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"groups"===M?"Top Public Model Names":"Top Litellm Models"}),(0,c.jsxs)("div",{className:"flex bg-gray-100 rounded-lg p-1",children:[(0,c.jsx)("button",{className:"px-3 py-1 text-sm rounded-md transition-colors ".concat("groups"===M?"bg-white shadow-sm text-gray-900":"text-gray-600 hover:text-gray-900"),onClick:()=>O("groups"),children:"Public Model Name"}),(0,c.jsx)("button",{className:"px-3 py-1 text-sm rounded-md transition-colors ".concat("individual"===M?"bg-white shadow-sm text-gray-900":"text-gray-600 hover:text-gray-900"),onClick:()=>O("individual"),children:"Litellm Model Name"})]})]}),N?(0,c.jsx)(rd,{isDateChanging:w}):(0,c.jsx)(to.Z,{className:"mt-4 h-40",data:"groups"===M?(()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.model_groups||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{},api_key_breakdown:{}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests||0,e[t].metrics.failed_requests+=l.metrics.failed_requests||0,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{key:s,spend:t.metrics.spend,requests:t.metrics.api_requests,successful_requests:t.metrics.successful_requests,failed_requests:t.metrics.failed_requests,tokens:t.metrics.total_tokens}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})():(()=>{let e={};return b.results.forEach(s=>{Object.entries(s.breakdown.models||{}).forEach(s=>{let[t,l]=s;e[t]||(e[t]={metrics:{spend:0,prompt_tokens:0,completion_tokens:0,total_tokens:0,api_requests:0,successful_requests:0,failed_requests:0,cache_read_input_tokens:0,cache_creation_input_tokens:0},metadata:{},api_key_breakdown:{}}),e[t].metrics.spend+=l.metrics.spend,e[t].metrics.prompt_tokens+=l.metrics.prompt_tokens,e[t].metrics.completion_tokens+=l.metrics.completion_tokens,e[t].metrics.total_tokens+=l.metrics.total_tokens,e[t].metrics.api_requests+=l.metrics.api_requests,e[t].metrics.successful_requests+=l.metrics.successful_requests||0,e[t].metrics.failed_requests+=l.metrics.failed_requests||0,e[t].metrics.cache_read_input_tokens+=l.metrics.cache_read_input_tokens||0,e[t].metrics.cache_creation_input_tokens+=l.metrics.cache_creation_input_tokens||0})}),Object.entries(e).map(e=>{let[s,t]=e;return{key:s,spend:t.metrics.spend,requests:t.metrics.api_requests,successful_requests:t.metrics.successful_requests,failed_requests:t.metrics.failed_requests,tokens:t.metrics.total_tokens}}).sort((e,s)=>s.spend-e.spend).slice(0,5)})(),index:"key",categories:["spend"],colors:["cyan"],valueFormatter:a3,layout:"vertical",yAxisWidth:200,showLegend:!1,customTooltip:e=>{let{payload:s,active:t}=e;if(!t||!(null==s?void 0:s[0]))return null;let l=s[0].payload;return(0,c.jsxs)("div",{className:"bg-white p-4 shadow-lg rounded-lg border",children:[(0,c.jsx)("p",{className:"font-bold",children:l.key}),(0,c.jsxs)("p",{className:"text-cyan-500",children:["Spend: $",eP(l.spend,2)]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Total Requests: ",l.requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-green-600",children:["Successful: ",l.successful_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-red-600",children:["Failed: ",l.failed_requests.toLocaleString()]}),(0,c.jsxs)("p",{className:"text-gray-600",children:["Tokens: ",l.tokens.toLocaleString()]})]})}})]})}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(S.Z,{children:"Spend by Provider"})}),N?(0,c.jsx)(rd,{isDateChanging:w}):(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(a$.Z,{className:"mt-4 h-40",data:U(),index:"provider",category:"spend",valueFormatter:e=>"$".concat(eP(e,2)),colors:["cyan"]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Provider"}),(0,c.jsx)(sq.Z,{children:"Spend"}),(0,c.jsx)(sq.Z,{className:"text-green-600",children:"Successful"}),(0,c.jsx)(sq.Z,{className:"text-red-600",children:"Failed"}),(0,c.jsx)(sq.Z,{children:"Tokens"})]})}),(0,c.jsx)(sR.Z,{children:U().filter(e=>e.spend>0).map(e=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[e.provider&&(0,c.jsx)("img",{src:(0,s0.dr)(e.provider).logo,alt:"".concat(e.provider," logo"),className:"w-4 h-4",onError:s=>{let t=s.target,l=t.parentElement;if(l){var a;let s=document.createElement("div");s.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",s.textContent=(null===(a=e.provider)||void 0===a?void 0:a.charAt(0))||"-",l.replaceChild(s,t)}}}),(0,c.jsx)("span",{children:e.provider})]})}),(0,c.jsxs)(sz.Z,{children:["$",eP(e.spend,2)]}),(0,c.jsx)(sz.Z,{className:"text-green-600",children:e.successful_requests.toLocaleString()}),(0,c.jsx)(sz.Z,{className:"text-red-600",children:e.failed_requests.toLocaleString()}),(0,c.jsx)(sz.Z,{children:e.tokens.toLocaleString()})]},e.provider))})]})})]})]})})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:B})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:K})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(re,{modelMetrics:H})})]})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(ru,{accessToken:x,entityType:"team",userID:p,userRole:h,entityList:(null==g?void 0:g.map(e=>({label:e.team_alias,value:e.team_id})))||null,premiumUser:f})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(ru,{accessToken:x,entityType:"tag",userID:p,userRole:h,entityList:L,premiumUser:f})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(rm,{accessToken:x,userRole:h})})]})]}),(0,c.jsx)(rx,{isOpen:D,onClose:()=>F(!1),accessToken:x})]})},rp=e=>{let{proxySettings:s}=e,t="";return s&&s.PROXY_BASE_URL&&void 0!==s.PROXY_BASE_URL&&(t=s.PROXY_BASE_URL),(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(y.Z,{className:"gap-2 p-8 h-[80vh] w-full mt-2",children:(0,c.jsxs)("div",{className:"mb-5",children:[(0,c.jsx)("p",{className:"text-2xl text-tremor-content-strong dark:text-dark-tremor-content-strong font-semibold",children:"OpenAI Compatible Proxy: API Reference"}),(0,c.jsxs)(k.Z,{className:"mt-2 mb-2",children:["LiteLLM is OpenAI Compatible. This means your API Key works with the OpenAI SDK. Just replace the base_url to point to your litellm proxy. Example Below"," "]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{children:[(0,c.jsx)(ss.Z,{children:"OpenAI Python SDK"}),(0,c.jsx)(ss.Z,{children:"LlamaIndex"}),(0,c.jsx)(ss.Z,{children:"Langchain Py"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"python",children:'\nimport openai\nclient = openai.OpenAI(\n api_key="your_api_key",\n base_url="'.concat(t,'" # LiteLLM Proxy is OpenAI compatible, Read More: https://docs.litellm.ai/docs/proxy/user_keys\n)\n\nresponse = client.chat.completions.create(\n model="gpt-3.5-turbo", # model to send to the proxy\n messages = [\n {\n "role": "user",\n "content": "this is a test request, write a short poem"\n }\n ]\n)\n\nprint(response)\n ')})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"python",children:'\nimport os, dotenv\n\nfrom llama_index.llms import AzureOpenAI\nfrom llama_index.embeddings import AzureOpenAIEmbedding\nfrom llama_index import VectorStoreIndex, SimpleDirectoryReader, ServiceContext\n\nllm = AzureOpenAI(\n engine="azure-gpt-3.5", # model_name on litellm proxy\n temperature=0.0,\n azure_endpoint="'.concat(t,'", # litellm proxy endpoint\n api_key="sk-1234", # litellm proxy API Key\n api_version="2023-07-01-preview",\n)\n\nembed_model = AzureOpenAIEmbedding(\n deployment_name="azure-embedding-model",\n azure_endpoint="').concat(t,'",\n api_key="sk-1234",\n api_version="2023-07-01-preview",\n)\n\n\ndocuments = SimpleDirectoryReader("llama_index_data").load_data()\nservice_context = ServiceContext.from_defaults(llm=llm, embed_model=embed_model)\nindex = VectorStoreIndex.from_documents(documents, service_context=service_context)\n\nquery_engine = index.as_query_engine()\nresponse = query_engine.query("What did the author do growing up?")\nprint(response)\n\n ')})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(af.Z,{language:"python",children:'\nfrom langchain.chat_models import ChatOpenAI\nfrom langchain.prompts.chat import (\n ChatPromptTemplate,\n HumanMessagePromptTemplate,\n SystemMessagePromptTemplate,\n)\nfrom langchain.schema import HumanMessage, SystemMessage\n\nchat = ChatOpenAI(\n openai_api_base="'.concat(t,'",\n model = "gpt-3.5-turbo",\n temperature=0.1\n)\n\nmessages = [\n SystemMessage(\n content="You are a helpful assistant that im using to make a test request to."\n ),\n HumanMessage(\n content="test from litellm. tell me why it\'s amazing in 1 sentence"\n ),\n]\nresponse = chat(messages)\n\nprint(response)\n\n ')})})]})]})]})})})},rg=t(243),rj=t(93837);async function rf(e,s,t,l,a,r,i,n,o,c,d,m,u,x){console.log=function(){},console.log("isLocal:",!1);let h=(0,j.getProxyBaseUrl)(),p={};a&&a.length>0&&(p["x-litellm-tags"]=a.join(","));let g=new am.ZP.OpenAI({apiKey:l,baseURL:h,dangerouslyAllowBrowser:!0,defaultHeaders:p});try{let a;let p=Date.now(),j=!1,k=u&&u.length>0?[{type:"mcp",server_label:"litellm",server_url:"".concat(h,"/mcp"),require_approval:"never",allowed_tools:u,headers:{"x-litellm-api-key":"Bearer ".concat(l)}}]:void 0;for await(let l of(await g.chat.completions.create({model:t,stream:!0,stream_options:{include_usage:!0},litellm_trace_id:c,messages:e,...d?{vector_store_ids:d}:{},...m?{guardrails:m}:{},...k?{tools:k,tool_choice:"auto"}:{}},{signal:r}))){var f,v,y,b,_,N,Z,w;console.log("Stream chunk:",l);let e=null===(f=l.choices[0])||void 0===f?void 0:f.delta;if(console.log("Delta content:",null===(y=l.choices[0])||void 0===y?void 0:null===(v=y.delta)||void 0===v?void 0:v.content),console.log("Delta reasoning content:",null==e?void 0:e.reasoning_content),!j&&((null===(_=l.choices[0])||void 0===_?void 0:null===(b=_.delta)||void 0===b?void 0:b.content)||e&&e.reasoning_content)&&(j=!0,a=Date.now()-p,console.log("First token received! Time:",a,"ms"),n?(console.log("Calling onTimingData with:",a),n(a)):console.log("onTimingData callback is not defined!")),null===(Z=l.choices[0])||void 0===Z?void 0:null===(N=Z.delta)||void 0===N?void 0:N.content){let e=l.choices[0].delta.content;s(e,l.model)}if(e&&e.image&&x&&(console.log("Image generated:",e.image),x(e.image.url,l.model)),e&&e.reasoning_content){let s=e.reasoning_content;i&&i(s)}if(l.usage&&o){console.log("Usage data found:",l.usage);let e={completionTokens:l.usage.completion_tokens,promptTokens:l.usage.prompt_tokens,totalTokens:l.usage.total_tokens};(null===(w=l.usage.completion_tokens_details)||void 0===w?void 0:w.reasoning_tokens)&&(e.reasoningTokens=l.usage.completion_tokens_details.reasoning_tokens),o(e)}}}catch(e){throw(null==r?void 0:r.aborted)&&console.log("Chat completion request was cancelled"),e}}async function rv(e,s,t,l,a,r){console.log=function(){},console.log("isLocal:",!1);let i=(0,j.getProxyBaseUrl)(),n=new am.ZP.OpenAI({apiKey:l,baseURL:i,dangerouslyAllowBrowser:!0,defaultHeaders:a&&a.length>0?{"x-litellm-tags":a.join(",")}:void 0});try{let l=await n.images.generate({model:t,prompt:e},{signal:r});if(console.log(l.data),l.data&&l.data[0]){if(l.data[0].url)s(l.data[0].url,t);else if(l.data[0].b64_json){let e=l.data[0].b64_json;s("data:image/png;base64,".concat(e),t)}else throw Error("No image data found in response")}else throw Error("Invalid response format")}catch(e){throw(null==r?void 0:r.aborted)?console.log("Image generation request was cancelled"):eo.Z.fromBackend("Error occurred while generating image. Please try again. Error: ".concat(e)),e}}async function ry(e,s,t,l,a,r,i){console.log=function(){},console.log("isLocal:",!1);let n=(0,j.getProxyBaseUrl)(),o=new am.ZP.OpenAI({apiKey:a,baseURL:n,dangerouslyAllowBrowser:!0,defaultHeaders:r&&r.length>0?{"x-litellm-tags":r.join(",")}:void 0});try{let a=Array.isArray(e)?e:[e],r=[];for(let e=0;e1&&eo.Z.success("Successfully processed ".concat(r.length," images"))}catch(e){if(console.error("Error making image edit request:",e),null==i?void 0:i.aborted)console.log("Image edits request was cancelled");else{var c;let s="Failed to edit image(s)";(null==e?void 0:null===(c=e.error)||void 0===c?void 0:c.message)?s=e.error.message:(null==e?void 0:e.message)&&(s=e.message),eo.Z.fromBackend("Image edit failed: ".concat(s))}throw e}}async function rb(e,s,t,l){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5?arguments[5]:void 0,i=arguments.length>6?arguments[6]:void 0,n=arguments.length>7?arguments[7]:void 0,o=arguments.length>8?arguments[8]:void 0,c=arguments.length>9?arguments[9]:void 0,d=arguments.length>10?arguments[10]:void 0,m=arguments.length>11?arguments[11]:void 0,u=arguments.length>12?arguments[12]:void 0,x=arguments.length>13?arguments[13]:void 0,h=arguments.length>14?arguments[14]:void 0,p=arguments.length>15?arguments[15]:void 0;if(!l)throw Error("API key is required");console.log=function(){};let g=(0,j.getProxyBaseUrl)(),f={};a&&a.length>0&&(f["x-litellm-tags"]=a.join(","));let v=new am.ZP.OpenAI({apiKey:l,baseURL:g,dangerouslyAllowBrowser:!0,defaultHeaders:f});try{let l=Date.now(),a=!1,g=e.map(e=>(Array.isArray(e.content),{role:e.role,content:e.content,type:"message"})),j=u&&u.length>0?[{type:"mcp",server_label:"litellm",server_url:"litellm_proxy/mcp",require_approval:"never",allowed_tools:u}]:void 0,f=await v.responses.create({model:t,input:g,stream:!0,litellm_trace_id:c,...x?{previous_response_id:x}:{},...d?{vector_store_ids:d}:{},...m?{guardrails:m}:{},...j?{tools:j,tool_choice:"required"}:{}},{signal:r}),S="";for await(let e of f)if(console.log("Response event:",e),"object"==typeof e&&null!==e){var y,b,_,N,Z,w,k;if(((null===(y=e.type)||void 0===y?void 0:y.startsWith("response.mcp_"))||"response.output_item.done"===e.type&&((null===(b=e.item)||void 0===b?void 0:b.type)==="mcp_list_tools"||(null===(_=e.item)||void 0===_?void 0:_.type)==="mcp_call"))&&(console.log("MCP event received:",e),p)){let s={type:e.type,sequence_number:e.sequence_number,output_index:e.output_index,item_id:e.item_id||(null===(w=e.item)||void 0===w?void 0:w.id),item:e.item,delta:e.delta,arguments:e.arguments,timestamp:Date.now()};p(s)}if("response.output_item.done"===e.type&&(null===(N=e.item)||void 0===N?void 0:N.type)==="mcp_call"&&(null===(Z=e.item)||void 0===Z?void 0:Z.name)&&(S=e.item.name,console.log("MCP tool used:",S)),"response.role.delta"===e.type)continue;if("response.output_text.delta"===e.type&&"string"==typeof e.delta){let r=e.delta;if(console.log("Text delta",r),r.trim().length>0&&(s("assistant",r,t),!a)){a=!0;let e=Date.now()-l;console.log("First token received! Time:",e,"ms"),n&&n(e)}}if("response.reasoning.delta"===e.type&&"delta"in e){let s=e.delta;"string"==typeof s&&i&&i(s)}if("response.completed"===e.type&&"response"in e){let s=e.response,t=s.usage;if(console.log("Usage data:",t),console.log("Response completed event:",s),s.id&&h&&(console.log("Response ID for session management:",s.id),h(s.id)),t&&o){console.log("Usage data:",t);let e={completionTokens:t.output_tokens,promptTokens:t.input_tokens,totalTokens:t.total_tokens};(null===(k=t.completion_tokens_details)||void 0===k?void 0:k.reasoning_tokens)&&(e.reasoningTokens=t.completion_tokens_details.reasoning_tokens),o(e,S)}}}return f}catch(e){throw(null==r?void 0:r.aborted)?console.log("Responses API request was cancelled"):eo.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e)),e}}var r_=t(85498);async function rN(e,s,t,l){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5?arguments[5]:void 0,i=arguments.length>6?arguments[6]:void 0,n=arguments.length>7?arguments[7]:void 0,o=arguments.length>8?arguments[8]:void 0,c=arguments.length>9?arguments[9]:void 0,d=arguments.length>10?arguments[10]:void 0,m=arguments.length>11?arguments[11]:void 0,u=arguments.length>12?arguments[12]:void 0;if(!l)throw Error("API key is required");console.log=function(){};let x=(0,j.getProxyBaseUrl)(),h={};a&&a.length>0&&(h["x-litellm-tags"]=a.join(","));let p=new r_.ZP({apiKey:l,baseURL:x,dangerouslyAllowBrowser:!0,defaultHeaders:h});try{let a=Date.now(),h=!1,g=u&&u.length>0?[{type:"mcp",server_label:"litellm",server_url:"".concat(x,"/mcp"),require_approval:"never",allowed_tools:u,headers:{"x-litellm-api-key":"Bearer ".concat(l)}}]:void 0,j={model:t,messages:e.map(e=>({role:e.role,content:e.content})),stream:!0,max_tokens:1024,litellm_trace_id:c};for await(let e of(d&&(j.vector_store_ids=d),m&&(j.guardrails=m),g&&(j.tools=g,j.tool_choice="auto"),p.messages.stream(j,{signal:r}))){if(console.log("Stream event:",e),"content_block_delta"===e.type){let l=e.delta;if(!h){h=!0;let e=Date.now()-a;console.log("First token received! Time:",e,"ms"),n&&n(e)}"text_delta"===l.type?s("assistant",l.text,t):"reasoning_delta"===l.type&&i&&i(l.text)}if("message_delta"===e.type&&e.usage&&o){let s=e.usage;console.log("Usage data found:",s);let t={completionTokens:s.output_tokens,promptTokens:s.input_tokens,totalTokens:s.input_tokens+s.output_tokens};o(t)}}}catch(e){throw(null==r?void 0:r.aborted)?console.log("Anthropic messages request was cancelled"):eo.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e)),e}}async function rZ(e){try{return(await (0,j.mcpToolsCall)(e)).tools||[]}catch(e){return console.error("Error fetching MCP tools:",e),[]}}var rw=t(49817),rk=t(94263),rS=e=>{let{endpointType:s,onEndpointChange:t,className:l}=e,a=[{value:rw.KP.CHAT,label:"/v1/chat/completions"},{value:rw.KP.RESPONSES,label:"/v1/responses"},{value:rw.KP.ANTHROPIC_MESSAGES,label:"/v1/messages"},{value:rw.KP.IMAGE,label:"/v1/images/generations"},{value:rw.KP.IMAGE_EDITS,label:"/v1/images/edits"}];return(0,c.jsxs)("div",{className:l,children:[(0,c.jsx)(k.Z,{children:"Endpoint Type:"}),(0,c.jsx)(I.default,{showSearch:!0,value:s,style:{width:"100%"},onChange:t,options:a,className:"rounded-md"})]})},rC=e=>{let{onChange:s,value:t,className:l,accessToken:a}=e,[r,i]=(0,d.useState)([]),[n,o]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{(async()=>{if(a)try{let e=await (0,j.tagListCall)(a);console.log("List tags response:",e),i(Object.values(e))}catch(e){console.error("Error fetching tags:",e)}})()},[]),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select tags",onChange:s,value:t,loading:n,className:l,options:r.map(e=>({label:e.name,value:e.name,title:e.description||e.name})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"}})},rI=t(88658),rA=t(83322),rT=e=>{let{reasoningContent:s}=e,[t,l]=(0,d.useState)(!0);return s?(0,c.jsxs)("div",{className:"reasoning-content mt-1 mb-2",children:[(0,c.jsxs)(L.ZP,{type:"text",className:"flex items-center text-xs text-gray-500 hover:text-gray-700",onClick:()=>l(!t),icon:(0,c.jsx)(rA.Z,{}),children:[t?"Hide reasoning":"Show reasoning",t?(0,c.jsx)(tP.Z,{className:"ml-1"}):(0,c.jsx)(lh.Z,{className:"ml-1"})]}),t&&(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-700",children:(0,c.jsx)(rg.U,{components:{code(e){let{node:s,inline:t,className:l,children:a,...r}=e,i=/language-(\w+)/.exec(l||"");return!t&&i?(0,c.jsx)(af.Z,{style:rk.Z,language:i[1],PreTag:"div",className:"rounded-md my-2",...r,children:String(a).replace(/\n$/,"")}):(0,c.jsx)("code",{className:"".concat(l," px-1.5 py-0.5 rounded bg-gray-100 text-sm font-mono"),...r,children:a})}},children:s})})]}):null},rE=t(71282),rL=t(11741),rP=t(16601),rM=t(58630),rO=e=>{let{timeToFirstToken:s,usage:t,toolName:l}=e;return s||t?(0,c.jsxs)("div",{className:"response-metrics mt-2 pt-2 border-t border-gray-100 text-xs text-gray-500 flex flex-wrap gap-3",children:[void 0!==s&&(0,c.jsx)(B.Z,{title:"Time to first token",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(lt.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:[(s/1e3).toFixed(2),"s"]})]})}),(null==t?void 0:t.promptTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Prompt tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rE.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["In: ",t.promptTokens]})]})}),(null==t?void 0:t.completionTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Completion tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rL.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Out: ",t.completionTokens]})]})}),(null==t?void 0:t.reasoningTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Reasoning tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rA.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Reasoning: ",t.reasoningTokens]})]})}),(null==t?void 0:t.totalTokens)!==void 0&&(0,c.jsx)(B.Z,{title:"Total tokens",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rP.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Total: ",t.totalTokens]})]})}),l&&(0,c.jsx)(B.Z,{title:"Tool used",children:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rM.Z,{className:"mr-1"}),(0,c.jsxs)("span",{children:["Tool: ",l]})]})})]}):null},rD=t(53508);let{Dragger:rF}=ed.default;var rR=e=>{let{responsesUploadedImage:s,responsesImagePreviewUrl:t,onImageUpload:l,onRemoveImage:a}=e;return(0,c.jsx)(c.Fragment,{children:!s&&(0,c.jsx)(rF,{beforeUpload:l,accept:"image/*,.pdf",showUploadList:!1,className:"inline-block",style:{padding:0,border:"none",background:"none"},children:(0,c.jsx)(B.Z,{title:"Attach image or PDF",children:(0,c.jsx)("button",{type:"button",className:"flex items-center justify-center w-8 h-8 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-md transition-colors",children:(0,c.jsx)(rD.Z,{style:{fontSize:"16px"}})})})})})};let rz=e=>new Promise((s,t)=>{let l=new FileReader;l.onload=()=>{s(l.result.split(",")[1])},l.onerror=t,l.readAsDataURL(e)}),rU=async(e,s)=>{let t=await rz(s),l=s.type||(s.name.toLowerCase().endsWith(".pdf")?"application/pdf":"image/jpeg");return{role:"user",content:[{type:"input_text",text:e},{type:"input_image",image_url:"data:".concat(l,";base64,").concat(t)}]}},rq=(e,s,t,l)=>{let a="";s&&l&&(a=l.toLowerCase().endsWith(".pdf")?"[PDF attached]":"[Image attached]");let r={role:"user",content:s?"".concat(e," ").concat(a):e};return s&&t&&(r.imagePreviewUrl=t),r},rV=e=>"user"===e.role&&"string"==typeof e.content&&(e.content.includes("[Image attached]")||e.content.includes("[PDF attached]"))&&!!e.imagePreviewUrl;var rB=t(50010),rK=e=>{let{message:s}=e;if(!rV(s))return null;let t="string"==typeof s.content&&s.content.includes("[PDF attached]");return(0,c.jsx)("div",{className:"mb-2",children:t?(0,c.jsx)("div",{className:"w-64 h-32 rounded-md border border-gray-200 bg-red-50 flex items-center justify-center",children:(0,c.jsx)(rB.Z,{style:{fontSize:"48px",color:"#dc2626"}})}):(0,c.jsx)("img",{src:s.imagePreviewUrl,alt:"User uploaded image",className:"max-w-64 rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"200px"}})})};let{Dragger:rG}=ed.default;var rH=e=>{let{chatUploadedImage:s,chatImagePreviewUrl:t,onImageUpload:l,onRemoveImage:a}=e;return(0,c.jsx)(c.Fragment,{children:!s&&(0,c.jsx)(rG,{beforeUpload:l,accept:"image/*,.pdf",showUploadList:!1,className:"inline-block",style:{padding:0,border:"none",background:"none"},children:(0,c.jsx)(B.Z,{title:"Attach image or PDF",children:(0,c.jsx)("button",{type:"button",className:"flex items-center justify-center w-8 h-8 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-md transition-colors",children:(0,c.jsx)(rD.Z,{style:{fontSize:"16px"}})})})})})};let rY=e=>new Promise((s,t)=>{let l=new FileReader;l.onload=()=>{s(l.result)},l.onerror=t,l.readAsDataURL(e)}),rJ=async(e,s)=>({role:"user",content:[{type:"text",text:e},{type:"image_url",image_url:{url:await rY(s)}}]}),rW=(e,s,t,l)=>{let a="";s&&l&&(a=l.toLowerCase().endsWith(".pdf")?"[PDF attached]":"[Image attached]");let r={role:"user",content:s?"".concat(e," ").concat(a):e};return s&&t&&(r.imagePreviewUrl=t),r},r$=e=>"user"===e.role&&"string"==typeof e.content&&(e.content.includes("[Image attached]")||e.content.includes("[PDF attached]"))&&!!e.imagePreviewUrl;var rQ=e=>{let{message:s}=e;if(!r$(s))return null;let t="string"==typeof s.content&&s.content.includes("[PDF attached]");return(0,c.jsx)("div",{className:"mb-2",children:t?(0,c.jsx)("div",{className:"w-64 h-32 rounded-md border border-gray-200 bg-red-50 flex items-center justify-center",children:(0,c.jsx)(rB.Z,{style:{fontSize:"48px",color:"#dc2626"}})}):(0,c.jsx)("img",{src:s.imagePreviewUrl,alt:"User uploaded image",className:"max-w-64 rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"200px"}})})},rX=e=>{let{endpointType:s,responsesSessionId:t,useApiSessionManagement:l,onToggleSessionManagement:a}=e;return s!==rw.KP.RESPONSES?null:(0,c.jsxs)("div",{className:"mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Session Management"}),(0,c.jsx)(B.Z,{title:"Choose between LiteLLM API session management (using previous_response_id) or UI-based session management (using chat history)",children:(0,c.jsx)(V.Z,{className:"text-gray-400",style:{fontSize:"12px"}})})]}),(0,c.jsx)(eJ.Z,{checked:l,onChange:a,checkedChildren:"API",unCheckedChildren:"UI",size:"small"})]}),(0,c.jsxs)("div",{className:"text-xs p-2 rounded-md ".concat(t?"bg-green-50 text-green-700 border border-green-200":"bg-blue-50 text-blue-700 border border-blue-200"),children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-1",children:[(0,c.jsx)(V.Z,{style:{fontSize:"12px"}}),(()=>{if(!t)return l?"API Session: Ready":"UI Session: Ready";let e=l?"Response ID":"UI Session",s=t.slice(0,10);return"".concat(e,": ").concat(s,"...")})()]}),t&&(0,c.jsx)(B.Z,{title:(0,c.jsxs)("div",{className:"text-xs",children:[(0,c.jsx)("div",{className:"mb-1",children:"Copy response ID to continue session:"}),(0,c.jsx)("div",{className:"bg-gray-800 text-gray-100 p-2 rounded font-mono text-xs whitespace-pre-wrap",children:'curl -X POST "your-proxy-url/v1/responses" \\\n -H "Authorization: Bearer your-api-key" \\\n -H "Content-Type: application/json" \\\n -d \'{\n "model": "your-model",\n "input": [{"role": "user", "content": "your message", "type": "message"}],\n "previous_response_id": "'.concat(t,'",\n "stream": true\n }\'')})]}),overlayStyle:{maxWidth:"500px"},children:(0,c.jsx)("button",{onClick:()=>{t&&(navigator.clipboard.writeText(t),eo.Z.success("Response ID copied to clipboard!"))},className:"ml-2 p-1 hover:bg-green-100 rounded transition-colors",children:(0,c.jsx)(tJ.Z,{style:{fontSize:"12px"}})})})]}),(0,c.jsx)("div",{className:"text-xs opacity-75 mt-1",children:t?l?"LiteLLM API session active - context maintained server-side":"UI session active - context maintained client-side":l?"LiteLLM will manage session using previous_response_id":"UI will manage session using chat history"})]})]})};let{Text:r0}=en.default,{Panel:r1}=tE.default;var r2=e=>{var s,t;let{events:l,className:a}=e;if(console.log("MCPEventsDisplay: Received events:",l),!l||0===l.length)return console.log("MCPEventsDisplay: No events, returning null"),null;let r=l.find(e=>{var s;return"response.output_item.done"===e.type&&(null===(s=e.item)||void 0===s?void 0:s.type)==="mcp_list_tools"&&e.item.tools&&e.item.tools.length>0}),i=l.filter(e=>{var s;return"response.output_item.done"===e.type&&(null===(s=e.item)||void 0===s?void 0:s.type)==="mcp_call"});return(console.log("MCPEventsDisplay: toolsEvent:",r),console.log("MCPEventsDisplay: mcpCallEvents:",i),r||0!==i.length)?(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac "+"mcp-events-display ".concat(a||""),children:[(0,c.jsx)(tY(),{id:"32b14b04f420f3ac",children:'.openai-mcp-tools.jsx-32b14b04f420f3ac{position:relative;margin:0;padding:0}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse.jsx-32b14b04f420f3ac{background:transparent!important;border:none!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-item.jsx-32b14b04f420f3ac{border:none!important;background:transparent!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-header.jsx-32b14b04f420f3ac{padding:0 0 0 20px!important;background:transparent!important;border:none!important;font-size:14px!important;color:#9ca3af!important;font-weight:400!important;line-height:20px!important;min-height:20px!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-header.jsx-32b14b04f420f3ac:hover{background:transparent!important;color:#6b7280!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-content.jsx-32b14b04f420f3ac{border:none!important;background:transparent!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-content-box.jsx-32b14b04f420f3ac{padding:4px 0 0 20px!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-expand-icon.jsx-32b14b04f420f3ac{position:absolute!important;left:2px!important;top:2px!important;color:#9ca3af!important;font-size:10px!important;width:16px!important;height:16px!important;display:-webkit-box!important;display:-webkit-flex!important;display:-moz-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center!important;-webkit-align-items:center!important;-moz-box-align:center!important;-ms-flex-align:center!important;align-items:center!important;-webkit-box-pack:center!important;-webkit-justify-content:center!important;-moz-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-expand-icon.jsx-32b14b04f420f3ac:hover{color:#6b7280!important}.openai-vertical-line.jsx-32b14b04f420f3ac{position:absolute;left:9px;top:18px;bottom:0;width:.5px;background-color:#f3f4f6;opacity:.8}.tool-item.jsx-32b14b04f420f3ac{font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:13px;color:#4b5563;line-height:18px;padding:0;margin:0;background:white;position:relative;z-index:1}.mcp-section.jsx-32b14b04f420f3ac{margin-bottom:12px;background:white;position:relative;z-index:1}.mcp-section.jsx-32b14b04f420f3ac:last-child{margin-bottom:0}.mcp-section-header.jsx-32b14b04f420f3ac{font-size:13px;color:#6b7280;font-weight:500;margin-bottom:4px}.mcp-code-block.jsx-32b14b04f420f3ac{background:#f9fafb;border:1px solid#f3f4f6;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;padding:8px;font-size:12px}.mcp-json.jsx-32b14b04f420f3ac{font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:#374151;margin:0;white-space:pre-wrap;word-wrap:break-word}.mcp-approved.jsx-32b14b04f420f3ac{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;font-size:13px;color:#6b7280}.mcp-checkmark.jsx-32b14b04f420f3ac{color:#10b981;margin-right:6px;font-weight:bold}.mcp-response-content.jsx-32b14b04f420f3ac{font-size:13px;color:#374151;line-height:1.5;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace}'}),(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac openai-mcp-tools",children:[(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac openai-vertical-line"}),(0,c.jsxs)(tE.default,{ghost:!0,size:"small",expandIconPosition:"start",defaultActiveKey:r?["list-tools"]:i.map((e,s)=>"mcp-call-".concat(s)),children:[r&&(0,c.jsx)(r1,{header:"List tools",children:(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac",children:null===(t=r.item)||void 0===t?void 0:null===(s=t.tools)||void 0===s?void 0:s.map((e,s)=>(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac tool-item",children:e.name},s))})},"list-tools"),i.map((e,s)=>{var t,l,a;return(0,c.jsx)(r1,{header:(null===(t=e.item)||void 0===t?void 0:t.name)||"Tool call",children:(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac",children:[(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:[(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section-header",children:"Request"}),(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-code-block",children:(null===(l=e.item)||void 0===l?void 0:l.arguments)&&(0,c.jsx)("pre",{className:"jsx-32b14b04f420f3ac mcp-json",children:(()=>{try{return JSON.stringify(JSON.parse(e.item.arguments),null,2)}catch(s){return e.item.arguments}})()})})]}),(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-approved",children:[(0,c.jsx)("span",{className:"jsx-32b14b04f420f3ac mcp-checkmark",children:"✓"})," Approved"]})}),(null===(a=e.item)||void 0===a?void 0:a.output)&&(0,c.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:[(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section-header",children:"Response"}),(0,c.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-response-content",children:e.item.output})]})]})},"mcp-call-".concat(s))})]})]})]}):(console.log("MCPEventsDisplay: No valid events found, returning null"),null)},r4=t(61935),r5=t(71891),r3=t(44625),r6=t(57400),r8=t(26430),r7=t(11894),r9=t(15883),ie=t(99890),is=t(79276);let{TextArea:it}=P.default,{Dragger:il}=ed.default;var ia=e=>{let{accessToken:s,token:t,userRole:l,userID:a,disabledPersonalKeyCreation:r}=e,[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedMCPTools");try{let s=e?JSON.parse(e):[];return Array.isArray(s)?s:s?[s]:[]}catch(e){return console.error("Error parsing selectedMCPTools from sessionStorage",e),[]}}),[h,p]=(0,d.useState)(!1),[g,j]=(0,d.useState)(()=>{let e=sessionStorage.getItem("apiKeySource");if(e)try{return JSON.parse(e)}catch(e){console.error("Error parsing apiKeySource from sessionStorage",e)}return r?"custom":"session"}),[f,v]=(0,d.useState)(()=>sessionStorage.getItem("apiKey")||""),[y,N]=(0,d.useState)(""),[Z,w]=(0,d.useState)(()=>{try{let e=sessionStorage.getItem("chatHistory");return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing chatHistory from sessionStorage",e),[]}}),[C,A]=(0,d.useState)(()=>sessionStorage.getItem("selectedModel")||void 0),[E,P]=(0,d.useState)(!1),[M,O]=(0,d.useState)([]),D=(0,d.useRef)(null),[F,R]=(0,d.useState)(()=>sessionStorage.getItem("endpointType")||rw.KP.CHAT),[z,q]=(0,d.useState)(!1),K=(0,d.useRef)(null),[H,Y]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedTags");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedTags from sessionStorage",e),[]}}),[J,W]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedVectorStores");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedVectorStores from sessionStorage",e),[]}}),[$,Q]=(0,d.useState)(()=>{let e=sessionStorage.getItem("selectedGuardrails");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedGuardrails from sessionStorage",e),[]}}),[X,ee]=(0,d.useState)(()=>sessionStorage.getItem("messageTraceId")||null),[es,et]=(0,d.useState)(()=>sessionStorage.getItem("responsesSessionId")||null),[el,ea]=(0,d.useState)(()=>{let e=sessionStorage.getItem("useApiSessionManagement");return!e||JSON.parse(e)}),[er,ei]=(0,d.useState)([]),[ec,ed]=(0,d.useState)([]),[em,eu]=(0,d.useState)(null),[ex,eh]=(0,d.useState)(null),[eg,ej]=(0,d.useState)(null),[ef,ev]=(0,d.useState)(null),[ey,eb]=(0,d.useState)(!1),[e_,eN]=(0,d.useState)(""),[eZ,ew]=(0,d.useState)("openai"),[ek,eS]=(0,d.useState)([]),eC=(0,d.useRef)(null),eI=async()=>{let e="session"===g?s:f;if(e){p(!0);try{let s=await rZ(e);m(s)}catch(e){console.error("Error fetching MCP tools:",e)}finally{p(!1)}}};(0,d.useEffect)(()=>{i&&eI()},[i,s,f,g]),(0,d.useEffect)(()=>{ey&&eN((0,rI.L)({apiKeySource:g,accessToken:s,apiKey:f,inputMessage:y,chatHistory:Z,selectedTags:H,selectedVectorStores:J,selectedGuardrails:$,selectedMCPTools:u,endpointType:F,selectedModel:C,selectedSdk:eZ}))},[ey,eZ,g,s,f,y,Z,H,J,$,u,F,C]),(0,d.useEffect)(()=>{let e=setTimeout(()=>{sessionStorage.setItem("chatHistory",JSON.stringify(Z))},500);return()=>{clearTimeout(e)}},[Z]),(0,d.useEffect)(()=>{sessionStorage.setItem("apiKeySource",JSON.stringify(g)),sessionStorage.setItem("apiKey",f),sessionStorage.setItem("endpointType",F),sessionStorage.setItem("selectedTags",JSON.stringify(H)),sessionStorage.setItem("selectedVectorStores",JSON.stringify(J)),sessionStorage.setItem("selectedGuardrails",JSON.stringify($)),sessionStorage.setItem("selectedMCPTools",JSON.stringify(u)),C?sessionStorage.setItem("selectedModel",C):sessionStorage.removeItem("selectedModel"),X?sessionStorage.setItem("messageTraceId",X):sessionStorage.removeItem("messageTraceId"),es?sessionStorage.setItem("responsesSessionId",es):sessionStorage.removeItem("responsesSessionId"),sessionStorage.setItem("useApiSessionManagement",JSON.stringify(el))},[g,f,C,F,H,J,$,X,es,el,u]),(0,d.useEffect)(()=>{let e="session"===g?s:f;if(!e||!t||!l||!a){console.log("userApiKey or token or userRole or userID is missing = ",e,t,l,a);return}(async()=>{try{if(!e){console.log("userApiKey is missing");return}let s=await eG(e);console.log("Fetched models:",s),O(s);let t=s.some(e=>e.model_group===C);s.length?t||A(s[0].model_group):A(void 0)}catch(e){console.error("Error fetching model info:",e)}})(),eI()},[s,a,l,g,f,t]),(0,d.useEffect)(()=>{eC.current&&setTimeout(()=>{var e;null===(e=eC.current)||void 0===e||e.scrollIntoView({behavior:"smooth",block:"end"})},100)},[Z]);let eA=(e,s,t)=>{console.log("updateTextUI called with:",e,s,t),w(l=>{let a=l[l.length-1];if(!a||a.role!==e||a.isImage)return[...l,{role:e,content:s,model:t}];{var r;let e={...a,content:a.content+s,model:null!==(r=a.model)&&void 0!==r?r:t};return[...l.slice(0,-1),e]}})},eT=e=>{w(s=>{let t=s[s.length-1];return t&&"assistant"===t.role&&!t.isImage?[...s.slice(0,s.length-1),{...t,reasoningContent:(t.reasoningContent||"")+e}]:s.length>0&&"user"===s[s.length-1].role?[...s,{role:"assistant",content:"",reasoningContent:e}]:s})},eE=e=>{console.log("updateTimingData called with:",e),w(s=>{let t=s[s.length-1];if(console.log("Current last message:",t),t&&"assistant"===t.role){console.log("Updating assistant message with timeToFirstToken:",e);let l=[...s.slice(0,s.length-1),{...t,timeToFirstToken:e}];return console.log("Updated chat history:",l),l}return t&&"user"===t.role?(console.log("Creating new assistant message with timeToFirstToken:",e),[...s,{role:"assistant",content:"",timeToFirstToken:e}]):(console.log("No appropriate message found to update timing"),s)})},eL=(e,s)=>{console.log("Received usage data:",e),w(t=>{let l=t[t.length-1];if(l&&"assistant"===l.role){console.log("Updating message with usage data:",e);let a={...l,usage:e,toolName:s};return console.log("Updated message:",a),[...t.slice(0,t.length-1),a]}return t})},eP=e=>{console.log("Received response ID for session management:",e),el&&et(e)},eM=e=>{console.log("ChatUI: Received MCP event:",e),eS(s=>{if(s.some(s=>s.item_id===e.item_id&&s.type===e.type&&s.sequence_number===e.sequence_number))return console.log("ChatUI: Duplicate MCP event, skipping"),s;let t=[...s,e];return console.log("ChatUI: Updated MCP events:",t),t})},eO=(e,s)=>{w(t=>[...t,{role:"assistant",content:e,model:s,isImage:!0}])},eD=(e,s)=>{w(t=>{let l=t[t.length-1];if(!l||"assistant"!==l.role||l.isImage)return[...t,{role:"assistant",content:"",model:s,image:{url:e,detail:"auto"}}];{var a;let r={...l,image:{url:e,detail:"auto"},model:null!==(a=l.model)&&void 0!==a?a:s};return[...t.slice(0,-1),r]}})},eR=e=>{ei(s=>[...s,e]);let s=URL.createObjectURL(e);return ed(e=>[...e,s]),!1},ez=e=>{ec[e]&&URL.revokeObjectURL(ec[e]),ei(s=>s.filter((s,t)=>t!==e)),ed(s=>s.filter((s,t)=>t!==e))},eU=()=>{ec.forEach(e=>{URL.revokeObjectURL(e)}),ei([]),ed([])},eq=()=>{ex&&URL.revokeObjectURL(ex),eu(null),eh(null)},eV=()=>{ef&&URL.revokeObjectURL(ef),ej(null),ev(null)},eB=async()=>{let e;if(""===y.trim())return;if(F===rw.KP.IMAGE_EDITS&&0===er.length){eo.Z.fromBackend("Please upload at least one image for editing");return}if(!t||!l||!a)return;let r="session"===g?s:f;if(!r){eo.Z.fromBackend("Please provide an API key or select Current UI Session");return}K.current=new AbortController;let i=K.current.signal;if(F===rw.KP.RESPONSES&&em)try{e=await rU(y,em)}catch(e){eo.Z.fromBackend("Failed to process image. Please try again.");return}else if(F===rw.KP.CHAT&&eg)try{e=await rJ(y,eg)}catch(e){eo.Z.fromBackend("Failed to process image. Please try again.");return}else e={role:"user",content:y};let n=X||(0,rj.Z)();X||ee(n),w([...Z,F===rw.KP.RESPONSES&&em?rq(y,!0,ex||void 0,em.name):F===rw.KP.CHAT&&eg?rW(y,!0,ef||void 0,eg.name):rq(y,!1)]),eS([]),q(!0);try{if(C){if(F===rw.KP.CHAT){let s=[...Z.filter(e=>!e.isImage).map(e=>{let{role:s,content:t}=e;return{role:s,content:"string"==typeof t?t:""}}),e];await rf(s,(e,s)=>eA("assistant",e,s),C,r,H,i,eT,eE,eL,n,J.length>0?J:void 0,$.length>0?$:void 0,u,eD)}else if(F===rw.KP.IMAGE)await rv(y,(e,s)=>eO(e,s),C,r,H,i);else if(F===rw.KP.IMAGE_EDITS)er.length>0&&await ry(1===er.length?er[0]:er,y,(e,s)=>eO(e,s),C,r,H,i);else if(F===rw.KP.RESPONSES){let s;s=el&&es?[e]:[...Z.filter(e=>!e.isImage).map(e=>{let{role:s,content:t}=e;return{role:s,content:t}}),e],await rb(s,(e,s,t)=>eA(e,s,t),C,r,H,i,eT,eE,eL,n,J.length>0?J:void 0,$.length>0?$:void 0,u,el?es:null,eP,eM)}else if(F===rw.KP.ANTHROPIC_MESSAGES){let s=[...Z.filter(e=>!e.isImage).map(e=>{let{role:s,content:t}=e;return{role:s,content:t}}),e];await rN(s,(e,s,t)=>eA(e,s,t),C,r,H,i,eT,eE,eL,n,J.length>0?J:void 0,$.length>0?$:void 0,u)}}}catch(e){i.aborted?console.log("Request was cancelled"):(console.error("Error fetching response",e),eA("assistant","Error fetching response:"+e))}finally{q(!1),K.current=null,F===rw.KP.IMAGE_EDITS&&eU(),F===rw.KP.RESPONSES&&em&&eq(),F===rw.KP.CHAT&&eg&&eV()}N("")};if(l&&"Admin Viewer"===l){let{Title:e,Paragraph:s}=en.default;return(0,c.jsxs)("div",{children:[(0,c.jsx)(e,{level:1,children:"Access Denied"}),(0,c.jsx)(s,{children:"Ask your proxy admin for access to test models"})]})}let eH=(0,c.jsx)(r4.Z,{style:{fontSize:24},spin:!0});return(0,c.jsxs)("div",{className:"w-full h-screen p-4 bg-white",children:[(0,c.jsx)(G.Z,{className:"w-full rounded-xl shadow-md overflow-hidden",children:(0,c.jsxs)("div",{className:"flex h-[80vh] w-full gap-4",children:[(0,c.jsxs)("div",{className:"w-1/4 p-4 bg-gray-50 overflow-y-auto",children:[(0,c.jsx)(S.Z,{className:"text-xl font-semibold mb-6 mt-2",children:"Configurations"}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(l2.Z,{className:"mr-2"})," API Key Source"]}),(0,c.jsx)(I.default,{disabled:r,value:g,style:{width:"100%"},onChange:e=>{j(e)},options:[{value:"session",label:"Current UI Session"},{value:"custom",label:"Virtual Key"}],className:"rounded-md"}),"custom"===g&&(0,c.jsx)(_.Z,{className:"mt-2",placeholder:"Enter custom API key",type:"password",onValueChange:v,value:f,icon:l2.Z})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(eK.Z,{className:"mr-2"})," Select Model"]}),(0,c.jsx)(I.default,{value:C,placeholder:"Select a Model",onChange:e=>{console.log("selected ".concat(e)),A(e),P("custom"===e)},options:[...Array.from(new Set(M.map(e=>e.model_group))).map((e,s)=>({value:e,label:e,key:s})),{value:"custom",label:"Enter custom model",key:"custom"}],style:{width:"100%"},showSearch:!0,className:"rounded-md"}),E&&(0,c.jsx)(_.Z,{className:"mt-2",placeholder:"Enter custom model name",onValueChange:e=>{D.current&&clearTimeout(D.current),D.current=setTimeout(()=>{A(e)},500)}})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(lu.Z,{className:"mr-2"})," Endpoint Type"]}),(0,c.jsx)(rS,{endpointType:F,onEndpointChange:e=>{R(e)},className:"mb-4"}),(0,c.jsx)(rX,{endpointType:F,responsesSessionId:es,useApiSessionManagement:el,onToggleSessionManagement:e=>{ea(e),e||et(null)}})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(r5.Z,{className:"mr-2"})," Tags"]}),(0,c.jsx)(rC,{value:H,onChange:Y,className:"mb-4",accessToken:s||""})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(rM.Z,{className:"mr-2"})," MCP Tool",(0,c.jsx)(B.Z,{className:"ml-1",title:"Select MCP tools to use in your conversation, only available for /v1/responses endpoint",children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select MCP tools",value:u,onChange:e=>x(e),loading:h,className:"mb-4",allowClear:!0,optionLabelProp:"label",disabled:F!==rw.KP.RESPONSES,maxTagCount:"responsive",children:Array.isArray(o)&&o.map(e=>(0,c.jsx)(I.default.Option,{value:e.name,label:(0,c.jsx)("div",{className:"font-medium",children:e.name}),children:(0,c.jsxs)("div",{className:"flex flex-col py-1",children:[(0,c.jsx)("span",{className:"font-medium",children:e.name}),(0,c.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.description})]})},e.name))})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(r3.Z,{className:"mr-2"})," Vector Store",(0,c.jsx)(B.Z,{className:"ml-1",title:(0,c.jsxs)("span",{children:["Select vector store(s) to use for this LLM API call. You can set up your vector store"," ",(0,c.jsx)("a",{href:"?page=vector-stores",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(U,{value:J,onChange:W,className:"mb-4",accessToken:s||""})]}),(0,c.jsxs)("div",{children:[(0,c.jsxs)(k.Z,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,c.jsx)(r6.Z,{className:"mr-2"})," Guardrails",(0,c.jsx)(B.Z,{className:"ml-1",title:(0,c.jsxs)("span",{children:["Select guardrail(s) to use for this LLM API call. You can set up your guardrails"," ",(0,c.jsx)("a",{href:"?page=guardrails",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,c.jsx)(V.Z,{})})]}),(0,c.jsx)(sx,{value:$,onChange:Q,className:"mb-4",accessToken:s||""})]})]})]}),(0,c.jsxs)("div",{className:"w-3/4 flex flex-col bg-white",children:[(0,c.jsxs)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:[(0,c.jsx)(S.Z,{className:"text-xl font-semibold mb-0",children:"Test Key"}),(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(b.Z,{onClick:()=>{w([]),ee(null),et(null),eS([]),eU(),eq(),eV(),sessionStorage.removeItem("chatHistory"),sessionStorage.removeItem("messageTraceId"),sessionStorage.removeItem("responsesSessionId"),eo.Z.success("Chat history cleared.")},className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:r8.Z,children:"Clear Chat"}),(0,c.jsx)(b.Z,{onClick:()=>eb(!0),className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:r7.Z,children:"Get Code"})]})]}),(0,c.jsxs)("div",{className:"flex-1 overflow-auto p-4 pb-0",children:[0===Z.length&&(0,c.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,c.jsx)(eK.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,c.jsx)(k.Z,{children:"Start a conversation or generate an image"})]}),Z.map((e,s)=>(0,c.jsx)("div",{children:(0,c.jsx)("div",{className:"mb-4 ".concat("user"===e.role?"text-right":"text-left"),children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:"user"===e.role?"#f0f8ff":"#ffffff",border:"user"===e.role?"1px solid #e6f0fa":"1px solid #f0f0f0",textAlign:"left"},children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:"user"===e.role?"#e6f0fa":"#f5f5f5"},children:"user"===e.role?(0,c.jsx)(r9.Z,{style:{fontSize:"12px",color:"#2563eb"}}):(0,c.jsx)(eK.Z,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,c.jsx)("strong",{className:"text-sm capitalize",children:e.role}),"assistant"===e.role&&e.model&&(0,c.jsx)("span",{className:"text-xs px-2 py-0.5 rounded bg-gray-100 text-gray-600 font-normal",children:e.model})]}),e.reasoningContent&&(0,c.jsx)(rT,{reasoningContent:e.reasoningContent}),"assistant"===e.role&&s===Z.length-1&&ek.length>0&&F===rw.KP.RESPONSES&&(0,c.jsx)("div",{className:"mb-3",children:(0,c.jsx)(r2,{events:ek})}),(0,c.jsxs)("div",{className:"whitespace-pre-wrap break-words max-w-full message-content",style:{wordWrap:"break-word",overflowWrap:"break-word",wordBreak:"break-word",hyphens:"auto"},children:[e.isImage?(0,c.jsx)("img",{src:"string"==typeof e.content?e.content:"",alt:"Generated image",className:"max-w-full rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"500px"}}):(0,c.jsxs)(c.Fragment,{children:[F===rw.KP.RESPONSES&&(0,c.jsx)(rK,{message:e}),F===rw.KP.CHAT&&(0,c.jsx)(rQ,{message:e}),(0,c.jsx)(rg.U,{components:{code(e){let{node:s,inline:t,className:l,children:a,...r}=e,i=/language-(\w+)/.exec(l||"");return!t&&i?(0,c.jsx)(af.Z,{style:rk.Z,language:i[1],PreTag:"div",className:"rounded-md my-2",wrapLines:!0,wrapLongLines:!0,...r,children:String(a).replace(/\n$/,"")}):(0,c.jsx)("code",{className:"".concat(l," px-1.5 py-0.5 rounded bg-gray-100 text-sm font-mono"),style:{wordBreak:"break-word"},...r,children:a})},pre:e=>{let{node:s,...t}=e;return(0,c.jsx)("pre",{style:{overflowX:"auto",maxWidth:"100%"},...t})}},children:"string"==typeof e.content?e.content:""}),e.image&&(0,c.jsx)("div",{className:"mt-3",children:(0,c.jsx)("img",{src:e.image.url,alt:"Generated image",className:"max-w-full rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"500px"}})})]}),"assistant"===e.role&&(e.timeToFirstToken||e.usage)&&(0,c.jsx)(rO,{timeToFirstToken:e.timeToFirstToken,usage:e.usage,toolName:e.toolName})]})]})})},s)),z&&ek.length>0&&F===rw.KP.RESPONSES&&Z.length>0&&"user"===Z[Z.length-1].role&&(0,c.jsx)("div",{className:"text-left mb-4",children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:"#ffffff",border:"1px solid #f0f0f0",textAlign:"left"},children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,c.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:"#f5f5f5"},children:(0,c.jsx)(eK.Z,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,c.jsx)("strong",{className:"text-sm capitalize",children:"Assistant"})]}),(0,c.jsx)(r2,{events:ek})]})}),z&&(0,c.jsx)("div",{className:"flex justify-center items-center my-4",children:(0,c.jsx)(eF.Z,{indicator:eH})}),(0,c.jsx)("div",{ref:eC,style:{height:"1px"}})]}),(0,c.jsxs)("div",{className:"p-4 border-t border-gray-200 bg-white",children:[F===rw.KP.IMAGE_EDITS&&(0,c.jsx)("div",{className:"mb-4",children:0===er.length?(0,c.jsxs)(il,{beforeUpload:eR,accept:"image/*",showUploadList:!1,className:"border-dashed border-2 border-gray-300 rounded-lg p-4",children:[(0,c.jsx)("p",{className:"ant-upload-drag-icon",children:(0,c.jsx)(ie.Z,{style:{fontSize:"24px",color:"#666"}})}),(0,c.jsx)("p",{className:"ant-upload-text text-sm",children:"Click or drag images to upload"}),(0,c.jsx)("p",{className:"ant-upload-hint text-xs text-gray-500",children:"Support for PNG, JPG, JPEG formats. Multiple images supported."})]}):(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[er.map((e,s)=>(0,c.jsxs)("div",{className:"relative inline-block",children:[(0,c.jsx)("img",{src:ec[s]||"",alt:"Upload preview ".concat(s+1),className:"max-w-32 max-h-32 rounded-md border border-gray-200 object-cover"}),(0,c.jsx)("button",{className:"absolute top-1 right-1 bg-white shadow-sm border border-gray-200 rounded px-1 py-1 text-red-500 hover:bg-red-50 text-xs",onClick:()=>ez(s),children:(0,c.jsx)(ep.Z,{})})]},s)),(0,c.jsxs)("div",{className:"flex items-center justify-center w-32 h-32 border-2 border-dashed border-gray-300 rounded-md hover:border-gray-400 cursor-pointer",onClick:()=>{var e;return null===(e=document.getElementById("additional-image-upload"))||void 0===e?void 0:e.click()},children:[(0,c.jsxs)("div",{className:"text-center",children:[(0,c.jsx)(ie.Z,{style:{fontSize:"24px",color:"#666"}}),(0,c.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:"Add more"})]}),(0,c.jsx)("input",{id:"additional-image-upload",type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:e=>{Array.from(e.target.files||[]).forEach(e=>eR(e))}})]})]})}),F===rw.KP.RESPONSES&&em&&(0,c.jsx)("div",{className:"mb-2",children:(0,c.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[(0,c.jsx)("div",{className:"relative inline-block",children:em.name.toLowerCase().endsWith(".pdf")?(0,c.jsx)("div",{className:"w-10 h-10 rounded-md bg-red-500 flex items-center justify-center",children:(0,c.jsx)(rB.Z,{style:{fontSize:"16px",color:"white"}})}):(0,c.jsx)("img",{src:ex||"",alt:"Upload preview",className:"w-10 h-10 rounded-md border border-gray-200 object-cover"})}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsx)("div",{className:"text-sm font-medium text-gray-900 truncate",children:em.name}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:em.name.toLowerCase().endsWith(".pdf")?"PDF":"Image"})]}),(0,c.jsx)("button",{className:"flex items-center justify-center w-6 h-6 text-gray-400 hover:text-gray-600 hover:bg-gray-200 rounded-full transition-colors",onClick:eq,children:(0,c.jsx)(ep.Z,{style:{fontSize:"12px"}})})]})}),F===rw.KP.CHAT&&eg&&(0,c.jsx)("div",{className:"mb-2",children:(0,c.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[(0,c.jsx)("div",{className:"relative inline-block",children:eg.name.toLowerCase().endsWith(".pdf")?(0,c.jsx)("div",{className:"w-10 h-10 rounded-md bg-red-500 flex items-center justify-center",children:(0,c.jsx)(rB.Z,{style:{fontSize:"16px",color:"white"}})}):(0,c.jsx)("img",{src:ef||"",alt:"Upload preview",className:"w-10 h-10 rounded-md border border-gray-200 object-cover"})}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsx)("div",{className:"text-sm font-medium text-gray-900 truncate",children:eg.name}),(0,c.jsx)("div",{className:"text-xs text-gray-500",children:eg.name.toLowerCase().endsWith(".pdf")?"PDF":"Image"})]}),(0,c.jsx)("button",{className:"flex items-center justify-center w-6 h-6 text-gray-400 hover:text-gray-600 hover:bg-gray-200 rounded-full transition-colors",onClick:eV,children:(0,c.jsx)(ep.Z,{style:{fontSize:"12px"}})})]})}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsxs)("div",{className:"flex items-center flex-1 bg-white border border-gray-300 rounded-xl px-3 py-1 min-h-[44px]",children:[(0,c.jsxs)("div",{className:"flex-shrink-0 mr-2",children:[F===rw.KP.RESPONSES&&!em&&(0,c.jsx)(rR,{responsesUploadedImage:em,responsesImagePreviewUrl:ex,onImageUpload:e=>(eu(e),eh(URL.createObjectURL(e)),!1),onRemoveImage:eq}),F===rw.KP.CHAT&&!eg&&(0,c.jsx)(rH,{chatUploadedImage:eg,chatImagePreviewUrl:ef,onImageUpload:e=>(ej(e),ev(URL.createObjectURL(e)),!1),onRemoveImage:eV})]}),(0,c.jsx)(it,{value:y,onChange:e=>N(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),eB())},placeholder:F===rw.KP.CHAT||F===rw.KP.RESPONSES||F===rw.KP.ANTHROPIC_MESSAGES?"Type your message... (Shift+Enter for new line)":F===rw.KP.IMAGE_EDITS?"Describe how you want to edit the image...":"Describe the image you want to generate...",disabled:z,className:"flex-1",autoSize:{minRows:1,maxRows:4},style:{resize:"none",border:"none",boxShadow:"none",background:"transparent",padding:"4px 0",fontSize:"14px",lineHeight:"20px"}}),(0,c.jsx)(b.Z,{onClick:eB,disabled:z||!y.trim(),className:"flex-shrink-0 ml-2 !w-8 !h-8 !min-w-8 !p-0 !rounded-full !bg-blue-600 hover:!bg-blue-700 disabled:!bg-gray-300 !border-none !text-white disabled:!text-gray-500 !flex !items-center !justify-center",children:(0,c.jsx)(is.Z,{style:{fontSize:"14px"}})})]}),z&&(0,c.jsx)(b.Z,{onClick:()=>{K.current&&(K.current.abort(),K.current=null,q(!1),eo.Z.info("Request cancelled"))},className:"bg-red-50 hover:bg-red-100 text-red-600 border-red-200",icon:ep.Z,children:"Cancel"})]})]})]})]})}),(0,c.jsxs)(T.Z,{title:"Generated Code",visible:ey,onCancel:()=>eb(!1),footer:null,width:800,children:[(0,c.jsxs)("div",{className:"flex justify-between items-end my-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium block mb-1 text-gray-700",children:"SDK Type"}),(0,c.jsx)(I.default,{value:eZ,onChange:e=>ew(e),style:{width:150},options:[{value:"openai",label:"OpenAI SDK"},{value:"azure",label:"Azure SDK"}]})]}),(0,c.jsx)(L.ZP,{onClick:()=>{navigator.clipboard.writeText(e_),eo.Z.success("Copied to clipboard!")},children:"Copy to Clipboard"})]}),(0,c.jsx)(af.Z,{language:"python",style:rk.Z,wrapLines:!0,wrapLongLines:!0,className:"rounded-md",customStyle:{maxHeight:"60vh",overflowY:"auto"},children:e_})]}),"custom"===g&&(0,c.jsx)(T.Z,{title:"Select MCP Tool",visible:i,onCancel:()=>n(!1),onOk:()=>{n(!1),eo.Z.success("MCP tool selection updated")},width:800,children:h?(0,c.jsx)("div",{className:"flex justify-center items-center py-8",children:(0,c.jsx)(eF.Z,{indicator:(0,c.jsx)(r4.Z,{style:{fontSize:24},spin:!0})})}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)(k.Z,{className:"text-gray-600 block mb-4",children:"Select the MCP tools you want to use in your conversation."}),(0,c.jsx)(I.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select MCP tools",value:u,onChange:e=>x(e),optionLabelProp:"label",allowClear:!0,maxTagCount:"responsive",children:o.map(e=>(0,c.jsx)(I.default.Option,{value:e.name,label:(0,c.jsx)("div",{className:"font-medium",children:e.name}),children:(0,c.jsxs)("div",{className:"flex flex-col py-1",children:[(0,c.jsx)("span",{className:"font-medium",children:e.name}),(0,c.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.description})]})},e.name))})]})})]})},ir=t(19226),ii=t(45937),io=t(28595),ic=t(68208),id=t(9775),im=t(41361),iu=t(37527),ix=t(88009),ih=t(48231),ip=t(41169),ig=t(55322),ij=t(11429),iv=t(70525),iy=t(95805),ib=t(51817),i_=t(21047);t(22135),t(40875);var iN=t(49663);let iZ=function(){for(var e=arguments.length,s=Array(e),t=0;t{(async()=>{if(s){u(!0),h(null);try{let e=await (0,j.getRemainingUsers)(s);o(e)}catch(e){console.error("Failed to fetch usage data:",e),h("Failed to load usage data")}finally{u(!1)}}})()},[s]);let{isOverLimit:p,isNearLimit:g,usagePercentage:f,userMetrics:v,teamMetrics:y}=(e=>{if(!e)return{isOverLimit:!1,isNearLimit:!1,usagePercentage:0,userMetrics:{isOverLimit:!1,isNearLimit:!1,usagePercentage:0},teamMetrics:{isOverLimit:!1,isNearLimit:!1,usagePercentage:0}};let s=!!e.total_users_remaining&&e.total_users_remaining<=0,t=!!e.total_users_remaining&&e.total_users_remaining<=5&&e.total_users_remaining>0,l=e.total_users?e.total_users_used/e.total_users*100:0,a=!!e.total_teams_remaining&&e.total_teams_remaining<=0,r=!!e.total_teams_remaining&&e.total_teams_remaining<=5&&e.total_teams_remaining>0,i=e.total_teams?e.total_teams_used/e.total_teams*100:0,n=s||a;return{isOverLimit:n,isNearLimit:(t||r)&&!n,usagePercentage:Math.max(l,i),userMetrics:{isOverLimit:s,isNearLimit:t,usagePercentage:l},teamMetrics:{isOverLimit:a,isNearLimit:r,usagePercentage:i}}})(n),b=()=>p?"red":g?"yellow":"green",_=()=>p?"Over Limit":g?"Near Limit":"Active",N=()=>p?(0,c.jsx)(lK.Z,{className:"h-3 w-3"}):g?(0,c.jsx)(iv.Z,{className:"h-3 w-3"}):null;return s&&((null==n?void 0:n.total_users)!==null||(null==n?void 0:n.total_teams)!==null)?(0,c.jsx)("div",{className:"fixed bottom-4 left-4 z-50",style:{width:"".concat(Math.min(t,220),"px")},children:(0,c.jsx)(()=>{if(r){let e=p||g;return(0,c.jsx)("button",{onClick:()=>i(!1),className:iZ("bg-white border border-gray-200 rounded-lg shadow-sm p-3 hover:shadow-md transition-all w-full",e&&p&&"border-red-200 bg-red-50",e&&g&&"border-yellow-200 bg-yellow-50"),title:"Show usage details",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(iy.Z,{className:"h-4 w-4 flex-shrink-0"}),e&&(0,c.jsx)("span",{className:"flex-shrink-0",children:N()}),(0,c.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium truncate",children:[n&&null!==n.total_users&&(0,c.jsxs)("span",{className:"flex-shrink-0",children:["U: ",n.total_users_used,"/",n.total_users]}),n&&null!==n.total_teams&&(0,c.jsxs)("span",{className:"flex-shrink-0",children:["T: ",n.total_teams_used,"/",n.total_teams]}),!n||null===n.total_users&&null===n.total_teams&&(0,c.jsx)("span",{className:"truncate",children:"Usage"})]})]})})}return m?(0,c.jsx)("div",{className:"bg-white border border-gray-200 rounded-lg shadow-sm p-4 w-full",children:(0,c.jsxs)("div",{className:"flex items-center justify-center gap-2 py-2",children:[(0,c.jsx)(ib.Z,{className:"h-4 w-4 animate-spin"}),(0,c.jsx)("span",{className:"text-sm text-gray-500 truncate",children:"Loading..."})]})}):x||!n?(0,c.jsx)("div",{className:"bg-white border border-gray-200 rounded-lg shadow-sm p-4 group w-full",children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex-1 min-w-0",children:(0,c.jsx)("span",{className:"text-sm text-gray-500 truncate block",children:x||"No data"})}),(0,c.jsx)("button",{onClick:()=>i(!0),className:"opacity-0 group-hover:opacity-100 p-1 hover:bg-gray-100 rounded transition-all flex-shrink-0",title:"Minimize",children:(0,c.jsx)(i_.Z,{className:"h-3 w-3 text-gray-400"})})]})}):(0,c.jsxs)("div",{className:iZ("bg-white border rounded-lg shadow-sm p-3 transition-all duration-200 group w-full",p&&"border-red-200 bg-red-50",g&&"border-yellow-200 bg-yellow-50"),children:[(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2 mb-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[(0,c.jsx)(iy.Z,{className:"h-4 w-4 flex-shrink-0"}),(0,c.jsx)("span",{className:"font-medium text-sm truncate",children:"Usage"}),(p||g)&&(0,c.jsx)(se.Z,{color:b(),className:"text-xs px-1.5 py-0.5 flex-shrink-0",children:_()})]}),(0,c.jsx)("button",{onClick:()=>i(!0),className:"opacity-0 group-hover:opacity-100 p-1 hover:bg-gray-100 rounded transition-all flex-shrink-0",title:"Minimize",children:(0,c.jsx)(i_.Z,{className:"h-3 w-3 text-gray-400"})})]}),(0,c.jsxs)("div",{className:"space-y-3 text-sm",children:[null!==n.total_users&&(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-1 text-xs text-gray-600 mb-1",children:[(0,c.jsx)(iy.Z,{className:"h-3 w-3"}),(0,c.jsx)("span",{className:"font-medium",children:"Users"})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Used:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[n.total_users_used,"/",n.total_users]})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Remaining:"}),(0,c.jsx)("span",{className:iZ("font-medium text-right",v.isOverLimit&&"text-red-600",v.isNearLimit&&"text-yellow-600"),children:n.total_users_remaining})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Usage:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[Math.round(v.usagePercentage),"%"]})]}),(0,c.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,c.jsx)("div",{className:iZ("h-2 rounded-full transition-all duration-300",v.isOverLimit&&"bg-red-500",v.isNearLimit&&"bg-yellow-500",!v.isOverLimit&&!v.isNearLimit&&"bg-green-500"),style:{width:"".concat(Math.min(v.usagePercentage,100),"%")}})})]}),null!==n.total_teams&&(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-1 text-xs text-gray-600 mb-1",children:[(0,c.jsx)(iN.Z,{className:"h-3 w-3"}),(0,c.jsx)("span",{className:"font-medium",children:"Teams"})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Used:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[n.total_teams_used,"/",n.total_teams]})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Remaining:"}),(0,c.jsx)("span",{className:iZ("font-medium text-right",y.isOverLimit&&"text-red-600",y.isNearLimit&&"text-yellow-600"),children:n.total_teams_remaining})]}),(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)("span",{className:"text-gray-600 text-xs",children:"Usage:"}),(0,c.jsxs)("span",{className:"font-medium text-right",children:[Math.round(y.usagePercentage),"%"]})]}),(0,c.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,c.jsx)("div",{className:iZ("h-2 rounded-full transition-all duration-300",y.isOverLimit&&"bg-red-500",y.isNearLimit&&"bg-yellow-500",!y.isOverLimit&&!y.isNearLimit&&"bg-green-500"),style:{width:"".concat(Math.min(y.usagePercentage,100),"%")}})})]})]})]})},{})}):null}var ik=t(13959);let{Sider:iS}=ir.default;var iC=e=>{let{accessToken:s,setPage:t,userRole:l,defaultSelectedKey:a,collapsed:r=!1}=e,i=[{key:"1",page:"api-keys",label:"Virtual Keys",icon:(0,c.jsx)(l2.Z,{style:{fontSize:"18px"}})},{key:"3",page:"llm-playground",label:"Test Key",icon:(0,c.jsx)(io.Z,{style:{fontSize:"18px"}}),roles:eI.LQ},{key:"2",page:"models",label:"Models + Endpoints",icon:(0,c.jsx)(ic.Z,{style:{fontSize:"18px"}}),roles:eI.LQ},{key:"12",page:"new_usage",label:"Usage",icon:(0,c.jsx)(id.Z,{style:{fontSize:"18px"}}),roles:[...eI.ZL,...eI.lo]},{key:"6",page:"teams",label:"Teams",icon:(0,c.jsx)(im.Z,{style:{fontSize:"18px"}})},{key:"17",page:"organizations",label:"Organizations",icon:(0,c.jsx)(iu.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"5",page:"users",label:"Internal Users",icon:(0,c.jsx)(r9.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"14",page:"api_ref",label:"API Reference",icon:(0,c.jsx)(lu.Z,{style:{fontSize:"18px"}})},{key:"16",page:"model-hub-table",label:"Model Hub",icon:(0,c.jsx)(ix.Z,{style:{fontSize:"18px"}})},{key:"15",page:"logs",label:"Logs",icon:(0,c.jsx)(ih.Z,{style:{fontSize:"18px"}})},{key:"11",page:"guardrails",label:"Guardrails",icon:(0,c.jsx)(r6.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"26",page:"tools",label:"Tools",icon:(0,c.jsx)(rM.Z,{style:{fontSize:"18px"}}),children:[{key:"18",page:"mcp-servers",label:"MCP Servers",icon:(0,c.jsx)(rM.Z,{style:{fontSize:"18px"}})},{key:"21",page:"vector-stores",label:"Vector Stores",icon:(0,c.jsx)(r3.Z,{style:{fontSize:"18px"}}),roles:eI.ZL}]},{key:"experimental",page:"experimental",label:"Experimental",icon:(0,c.jsx)(ip.Z,{style:{fontSize:"18px"}}),children:[{key:"9",page:"caching",label:"Caching",icon:(0,c.jsx)(r3.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"25",page:"prompts",label:"Prompts",icon:(0,c.jsx)(eh.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"10",page:"budgets",label:"Budgets",icon:(0,c.jsx)(iu.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"20",page:"transform-request",label:"API Playground",icon:(0,c.jsx)(lu.Z,{style:{fontSize:"18px"}}),roles:[...eI.ZL,...eI.lo]},{key:"19",page:"tag-management",label:"Tag Management",icon:(0,c.jsx)(r5.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"4",page:"usage",label:"Old Usage",icon:(0,c.jsx)(id.Z,{style:{fontSize:"18px"}})}]},{key:"settings",page:"settings",label:"Settings",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL,children:[{key:"11",page:"general-settings",label:"Router Settings",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"8",page:"settings",label:"Logging & Alerts",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"13",page:"admin-panel",label:"Admin Settings",icon:(0,c.jsx)(ig.Z,{style:{fontSize:"18px"}}),roles:eI.ZL},{key:"14",page:"ui-theme",label:"UI Theme",icon:(0,c.jsx)(ij.Z,{style:{fontSize:"18px"}}),roles:eI.ZL}]}],n=(e=>{let s=i.find(s=>s.page===e);if(s)return s.key;for(let s of i)if(s.children){let t=s.children.find(s=>s.page===e);if(t)return t.key}return"1"})(a),o=i.filter(e=>{let s=!e.roles||e.roles.includes(l);return console.log("Menu item ".concat(e.label,": roles=").concat(e.roles,", userRole=").concat(l,", hasAccess=").concat(s)),!!s&&(e.children&&(e.children=e.children.filter(e=>!e.roles||e.roles.includes(l))),!0)});return(0,c.jsx)(ir.default,{style:{minHeight:"100vh"},children:(0,c.jsxs)(iS,{theme:"light",width:220,collapsed:r,collapsedWidth:80,collapsible:!0,trigger:null,style:{transition:"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",position:"relative"},children:[(0,c.jsx)(ik.ZP,{theme:{components:{Menu:{iconSize:18,fontSize:14}}},children:(0,c.jsx)(ii.Z,{mode:"inline",selectedKeys:[n],defaultOpenKeys:r?[]:["llm-tools"],inlineCollapsed:r,className:"custom-sidebar-menu",style:{borderRight:0,backgroundColor:"transparent",fontSize:"14px"},items:o.map(e=>{var s;return{key:e.key,icon:e.icon,label:e.label,children:null===(s=e.children)||void 0===s?void 0:s.map(e=>({key:e.key,icon:e.icon,label:e.label,onClick:()=>{let s=new URLSearchParams(window.location.search);s.set("page",e.page),window.history.pushState(null,"","?".concat(s.toString())),t(e.page)}})),onClick:e.children?void 0:()=>{let s=new URLSearchParams(window.location.search);s.set("page",e.page),window.history.pushState(null,"","?".concat(s.toString())),t(e.page)}}})})}),(0,eI.tY)(l)&&!r&&(0,c.jsx)(iw,{accessToken:s,width:220})]})})},iI=t(96889),iA=t(92414),iT=t(46030);console.log("process.env.NODE_ENV","production");let iE=e=>null!==e&&("Admin"===e||"Admin Viewer"===e);var iL=e=>{let{accessToken:s,token:t,userRole:l,userID:a,keys:r,premiumUser:i}=e,n=new Date,[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)([]),[_,N]=(0,d.useState)([]),[Z,w]=(0,d.useState)([]),[C,I]=(0,d.useState)([]),[A,T]=(0,d.useState)([]),[E,L]=(0,d.useState)([]),[P,M]=(0,d.useState)([]),[O,D]=(0,d.useState)({}),[F,R]=(0,d.useState)([]),[z,U]=(0,d.useState)(""),[q,V]=(0,d.useState)(["all-tags"]),[B,K]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[H,Y]=(0,d.useState)(null),[J,W]=(0,d.useState)(0),$=new Date(n.getFullYear(),n.getMonth(),1),Q=new Date(n.getFullYear(),n.getMonth()+1,0),X=er($),ee=er(Q);function es(e){return new Intl.NumberFormat("en-US",{maximumFractionDigits:0,notation:"compact",compactDisplay:"short"}).format(e)}console.log("keys in usage",r),console.log("premium user in usage",i);let et=async()=>{if(s)try{let e=await (0,j.getProxyUISettings)(s);return console.log("usage tab: proxy_settings",e),e}catch(e){console.error("Error fetching proxy settings:",e)}};(0,d.useEffect)(()=>{ea(B.from,B.to)},[B,q]);let el=async(e,t,l)=>{if(!e||!t||!s)return;console.log("uiSelectedKey",l);let a=await (0,j.adminTopEndUsersCall)(s,l,e.toISOString(),t.toISOString());console.log("End user data updated successfully",a),f(a)},ea=async(e,t)=>{if(!e||!t||!s)return;let l=await et();null!=l&&l.DISABLE_EXPENSIVE_DB_QUERIES||(w((await (0,j.tagsSpendLogsCall)(s,e.toISOString(),t.toISOString(),0===q.length?void 0:q)).spend_per_tag),console.log("Tag spend data updated successfully"))};function er(e){let s=e.getFullYear(),t=e.getMonth()+1,l=e.getDate();return"".concat(s,"-").concat(t<10?"0"+t:t,"-").concat(l<10?"0"+l:l)}console.log("Start date is ".concat(X)),console.log("End date is ".concat(ee));let en=async(e,s,t)=>{try{let t=await e();s(t)}catch(e){console.error(t,e)}},eo=(e,s,t,l)=>{let a=[],r=new Date(s),i=e=>{if(e.includes("-"))return e;{let[s,t]=e.split(" ");return new Date(new Date().getFullYear(),new Date("".concat(s," 01 2024")).getMonth(),parseInt(t)).toISOString().split("T")[0]}},n=new Map(e.map(e=>{let s=i(e.date);return[s,{...e,date:s}]}));for(;r<=t;){let e=r.toISOString().split("T")[0];if(n.has(e))a.push(n.get(e));else{let s={date:e,api_requests:0,total_tokens:0};l.forEach(e=>{s[e]||(s[e]=0)}),a.push(s)}r.setDate(r.getDate()+1)}return a},ec=async()=>{if(s)try{let e=await (0,j.adminSpendLogsCall)(s),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0),r=eo(e,l,a,[]),i=Number(r.reduce((e,s)=>e+(s.spend||0),0).toFixed(2));W(i),m(r)}catch(e){console.error("Error fetching overall spend:",e)}},ed=()=>en(()=>s&&t?(0,j.adminspendByProvider)(s,t,X,ee):Promise.reject("No access token or token"),M,"Error fetching provider spend"),em=async()=>{s&&await en(async()=>(await (0,j.adminTopKeysCall)(s)).map(e=>({key:e.api_key.substring(0,10),api_key:e.api_key,key_alias:e.key_alias,spend:Number(e.total_spend.toFixed(2))})),x,"Error fetching top keys")},eu=async()=>{s&&await en(async()=>(await (0,j.adminTopModelsCall)(s)).map(e=>({key:e.model,spend:eP(e.total_spend,2)})),p,"Error fetching top models")},ex=async()=>{s&&await en(async()=>{let e=await (0,j.teamSpendLogsCall)(s),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0);return N(eo(e.daily_spend,l,a,e.teams)),T(e.teams),e.total_spend_per_team.map(e=>({name:e.team_id||"",value:eP(e.total_spend||0,2)}))},L,"Error fetching team spend")},eh=()=>{s&&en(async()=>(await (0,j.allTagNamesCall)(s)).tag_names,I,"Error fetching tag names")},ep=()=>{s&&en(()=>{var e,t;return(0,j.tagsSpendLogsCall)(s,null===(e=B.from)||void 0===e?void 0:e.toISOString(),null===(t=B.to)||void 0===t?void 0:t.toISOString(),void 0)},e=>w(e.spend_per_tag),"Error fetching top tags")},eg=()=>{s&&en(()=>(0,j.adminTopEndUsersCall)(s,null,void 0,void 0),f,"Error fetching top end users")},ej=async()=>{if(s)try{let e=await (0,j.adminGlobalActivity)(s,X,ee),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0),r=eo(e.daily_data||[],l,a,["api_requests","total_tokens"]);D({...e,daily_data:r})}catch(e){console.error("Error fetching global activity:",e)}},ef=async()=>{if(s)try{let e=await (0,j.adminGlobalActivityPerModel)(s,X,ee),t=new Date,l=new Date(t.getFullYear(),t.getMonth(),1),a=new Date(t.getFullYear(),t.getMonth()+1,0),r=e.map(e=>({...e,daily_data:eo(e.daily_data||[],l,a,["api_requests","total_tokens"])}));R(r)}catch(e){console.error("Error fetching global activity per model:",e)}};return((0,d.useEffect)(()=>{(async()=>{if(s&&t&&l&&a){let e=await et();e&&(Y(e),null!=e&&e.DISABLE_EXPENSIVE_DB_QUERIES)||(console.log("fetching data - valiue of proxySettings",H),ec(),ed(),em(),eu(),ej(),ef(),iE(l)&&(ex(),eh(),ep(),eg()))}})()},[s,t,l,a,X,ee]),null==H?void 0:H.DISABLE_EXPENSIVE_DB_QUERIES)?(0,c.jsx)("div",{style:{width:"100%"},className:"p-8",children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Database Query Limit Reached"}),(0,c.jsxs)(k.Z,{className:"mt-4",children:["SpendLogs in DB has ",H.NUM_SPEND_LOGS_ROWS," rows.",(0,c.jsx)("br",{}),"Please follow our guide to view usage when SpendLogs has more than 1M rows."]}),(0,c.jsx)(b.Z,{className:"mt-4",children:(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/spending_monitoring",target:"_blank",children:"View Usage Guide"})})]})}):(0,c.jsx)("div",{style:{width:"100%"},className:"p-8",children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mt-2",children:[(0,c.jsx)(ss.Z,{children:"All Up"}),iE(l)?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ss.Z,{children:"Team Based Usage"}),(0,c.jsx)(ss.Z,{children:"Customer Usage"}),(0,c.jsx)(ss.Z,{children:"Tag Based Usage"})]}):(0,c.jsx)(c.Fragment,{children:(0,c.jsx)("div",{})})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{variant:"solid",className:"mt-1",children:[(0,c.jsx)(ss.Z,{children:"Cost"}),(0,c.jsx)(ss.Z,{children:"Activity"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 h-[100vh] w-full",children:[(0,c.jsxs)(v.Z,{numColSpan:2,children:[(0,c.jsxs)(k.Z,{className:"text-tremor-default text-tremor-content dark:text-dark-tremor-content mb-2 mt-2 text-lg",children:["Project Spend ",new Date().toLocaleString("default",{month:"long"})," 1 -"," ",new Date(new Date().getFullYear(),new Date().getMonth()+1,0).getDate()]}),(0,c.jsx)(a1,{userID:a,userRole:l,accessToken:s,userSpend:J,selectedTeam:null,userMaxBudget:null})]}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Monthly Spend"}),(0,c.jsx)(to.Z,{data:o,index:"date",categories:["spend"],colors:["cyan"],valueFormatter:e=>"$ ".concat(eP(e,2)),yAxisWidth:100,tickGap:5})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)(S.Z,{children:"Top API Keys"}),(0,c.jsx)(a4,{topKeys:u,accessToken:s,userID:a,userRole:l,teams:null,premiumUser:i})]})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(G.Z,{className:"h-full",children:[(0,c.jsx)(S.Z,{children:"Top Models"}),(0,c.jsx)(to.Z,{className:"mt-4 h-40",data:h,index:"key",categories:["spend"],colors:["cyan"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1,valueFormatter:e=>"$".concat(eP(e,2))})]})}),(0,c.jsx)(v.Z,{numColSpan:1}),(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{className:"mb-2",children:[(0,c.jsx)(S.Z,{children:"Spend by Provider"}),(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(a$.Z,{className:"mt-4 h-40",variant:"pie",data:P,index:"provider",category:"spend",colors:["cyan"],valueFormatter:e=>"$".concat(eP(e,2))})}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsxs)(sF.Z,{children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Provider"}),(0,c.jsx)(sq.Z,{children:"Spend"})]})}),(0,c.jsx)(sR.Z,{children:P.map(e=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e.provider}),(0,c.jsx)(sz.Z,{children:1e-5>parseFloat(e.spend.toFixed(2))?"less than 0.00":eP(e.spend,2)})]},e.provider))})]})})]})})]})})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"All Up"}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["API Requests ",es(O.sum_api_requests)]}),(0,c.jsx)(tn.Z,{className:"h-40",data:O.daily_data,valueFormatter:es,index:"date",colors:["cyan"],categories:["api_requests"],onValueChange:e=>console.log(e)})]}),(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Tokens ",es(O.sum_total_tokens)]}),(0,c.jsx)(to.Z,{className:"h-40",data:O.daily_data,valueFormatter:es,index:"date",colors:["cyan"],categories:["total_tokens"],onValueChange:e=>console.log(e)})]})]})]}),(0,c.jsx)(c.Fragment,{children:F.map((e,s)=>(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:e.model}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["API Requests ",es(e.sum_api_requests)]}),(0,c.jsx)(tn.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["cyan"],categories:["api_requests"],valueFormatter:es,onValueChange:e=>console.log(e)})]}),(0,c.jsxs)(v.Z,{children:[(0,c.jsxs)(sX.Z,{style:{fontSize:"15px",fontWeight:"normal",color:"#535452"},children:["Tokens ",es(e.sum_total_tokens)]}),(0,c.jsx)(to.Z,{className:"h-40",data:e.daily_data,index:"date",colors:["cyan"],categories:["total_tokens"],valueFormatter:es,onValueChange:e=>console.log(e)})]})]})]},s))})]})})]})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 h-[75vh] w-full",children:[(0,c.jsxs)(v.Z,{numColSpan:2,children:[(0,c.jsxs)(G.Z,{className:"mb-2",children:[(0,c.jsx)(S.Z,{children:"Total Spend Per Team"}),(0,c.jsx)(iI.Z,{data:E})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Daily Spend Per Team"}),(0,c.jsx)(to.Z,{className:"h-72",data:_,showLegend:!0,index:"date",categories:A,yAxisWidth:80,stack:!0})]})]}),(0,c.jsx)(v.Z,{numColSpan:2})]})}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)("p",{className:"mb-2 text-gray-500 italic text-[12px]",children:["Customers of your LLM API calls. Tracked when a `user` param is passed in your LLM calls"," ",(0,c.jsx)("a",{className:"text-blue-500",href:"https://docs.litellm.ai/docs/proxy/users",target:"_blank",children:"docs here"})]}),(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(ti,{value:B,onValueChange:e=>{K(e),el(e.from,e.to,null)}})}),(0,c.jsxs)(v.Z,{children:[(0,c.jsx)(k.Z,{children:"Select Key"}),(0,c.jsxs)(e9.Z,{defaultValue:"all-keys",children:[(0,c.jsx)(ei.Z,{value:"all-keys",onClick:()=>{el(B.from,B.to,null)},children:"All Keys"},"all-keys"),null==r?void 0:r.map((e,s)=>e&&null!==e.key_alias&&e.key_alias.length>0?(0,c.jsx)(ei.Z,{value:String(s),onClick:()=>{el(B.from,B.to,e.token)},children:e.key_alias},s):null)]})]})]}),(0,c.jsx)(G.Z,{className:"mt-4",children:(0,c.jsxs)(sF.Z,{className:"max-h-[70vh] min-h-[500px]",children:[(0,c.jsx)(sU.Z,{children:(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sq.Z,{children:"Customer"}),(0,c.jsx)(sq.Z,{children:"Spend"}),(0,c.jsx)(sq.Z,{children:"Total Events"})]})}),(0,c.jsx)(sR.Z,{children:null==g?void 0:g.map((e,s)=>(0,c.jsxs)(sV.Z,{children:[(0,c.jsx)(sz.Z,{children:e.end_user}),(0,c.jsx)(sz.Z,{children:eP(e.total_spend,2)}),(0,c.jsx)(sz.Z,{children:e.total_count})]},s))})]})})]}),(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:2,children:[(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(ti,{className:"mb-4",value:B,onValueChange:e=>{K(e),ea(e.from,e.to)}})}),(0,c.jsx)(v.Z,{children:i?(0,c.jsx)("div",{children:(0,c.jsxs)(iA.Z,{value:q,onValueChange:e=>V(e),children:[(0,c.jsx)(iT.Z,{value:"all-tags",onClick:()=>V(["all-tags"]),children:"All Tags"},"all-tags"),C&&C.filter(e=>"all-tags"!==e).map((e,s)=>(0,c.jsx)(iT.Z,{value:String(e),children:e},e))]})}):(0,c.jsx)("div",{children:(0,c.jsxs)(iA.Z,{value:q,onValueChange:e=>V(e),children:[(0,c.jsx)(iT.Z,{value:"all-tags",onClick:()=>V(["all-tags"]),children:"All Tags"},"all-tags"),C&&C.filter(e=>"all-tags"!==e).map((e,s)=>(0,c.jsxs)(ei.Z,{value:String(e),disabled:!0,children:["✨ ",e," (Enterprise only Feature)"]},e))]})})})]}),(0,c.jsxs)(y.Z,{numItems:2,className:"gap-2 h-[75vh] w-full mb-4",children:[(0,c.jsx)(v.Z,{numColSpan:2,children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{children:"Spend Per Tag"}),(0,c.jsxs)(k.Z,{children:["Get Started by Tracking cost per tag"," ",(0,c.jsx)("a",{className:"text-blue-500",href:"https://docs.litellm.ai/docs/proxy/cost_tracking",target:"_blank",children:"here"})]}),(0,c.jsx)(to.Z,{className:"h-72",data:Z,index:"name",categories:["spend"],colors:["cyan"]})]})}),(0,c.jsx)(v.Z,{numColSpan:2})]})]})]})]})})},iP=t(51853);let iM=e=>{let{responseTimeMs:s}=e;return null==s?null:(0,c.jsxs)("div",{className:"flex items-center space-x-1 text-xs text-gray-500 font-mono",children:[(0,c.jsx)("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,c.jsx)("path",{d:"M12 6V12L16 14M12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2Z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),(0,c.jsxs)("span",{children:[s.toFixed(0),"ms"]})]})},iO=e=>{let s=e;if("string"==typeof s)try{s=JSON.parse(s)}catch(e){}return s},iD=e=>{let{label:s,value:t}=e,[l,a]=d.useState(!1),[r,i]=d.useState(!1),n=(null==t?void 0:t.toString())||"N/A",o=n.length>50?n.substring(0,50)+"...":n;return(0,c.jsx)("tr",{className:"hover:bg-gray-50",children:(0,c.jsx)("td",{className:"px-4 py-2 align-top",colSpan:2,children:(0,c.jsxs)("div",{className:"flex items-center justify-between group",children:[(0,c.jsxs)("div",{className:"flex items-center flex-1",children:[(0,c.jsx)("button",{onClick:()=>a(!l),className:"text-gray-400 hover:text-gray-600 mr-2",children:l?"▼":"▶"}),(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"text-sm text-gray-600",children:s}),(0,c.jsx)("pre",{className:"mt-1 text-sm font-mono text-gray-800 whitespace-pre-wrap",children:l?n:o})]})]}),(0,c.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(n),i(!0),setTimeout(()=>i(!1),2e3)},className:"opacity-0 group-hover:opacity-100 text-gray-400 hover:text-gray-600",children:(0,c.jsx)(iP.Z,{className:"h-4 w-4"})})]})})})},iF=e=>{var s,t,l,a,r,i,n,o,d,m,u,x,h,p;let{response:g}=e,j=null,f={},v={};try{if(null==g?void 0:g.error)try{let e="string"==typeof g.error.message?JSON.parse(g.error.message):g.error.message;j={message:(null==e?void 0:e.message)||"Unknown error",traceback:(null==e?void 0:e.traceback)||"No traceback available",litellm_params:(null==e?void 0:e.litellm_cache_params)||{},health_check_cache_params:(null==e?void 0:e.health_check_cache_params)||{}},f=iO(j.litellm_params)||{},v=iO(j.health_check_cache_params)||{}}catch(e){console.warn("Error parsing error details:",e),j={message:String(g.error.message||"Unknown error"),traceback:"Error parsing details",litellm_params:{},health_check_cache_params:{}}}else f=iO(null==g?void 0:g.litellm_cache_params)||{},v=iO(null==g?void 0:g.health_check_cache_params)||{}}catch(e){console.warn("Error in response parsing:",e),f={},v={}}let y={redis_host:(null==v?void 0:null===(l=v.redis_client)||void 0===l?void 0:null===(t=l.connection_pool)||void 0===t?void 0:null===(s=t.connection_kwargs)||void 0===s?void 0:s.host)||(null==v?void 0:null===(i=v.redis_async_client)||void 0===i?void 0:null===(r=i.connection_pool)||void 0===r?void 0:null===(a=r.connection_kwargs)||void 0===a?void 0:a.host)||(null==v?void 0:null===(n=v.connection_kwargs)||void 0===n?void 0:n.host)||(null==v?void 0:v.host)||"N/A",redis_port:(null==v?void 0:null===(m=v.redis_client)||void 0===m?void 0:null===(d=m.connection_pool)||void 0===d?void 0:null===(o=d.connection_kwargs)||void 0===o?void 0:o.port)||(null==v?void 0:null===(h=v.redis_async_client)||void 0===h?void 0:null===(x=h.connection_pool)||void 0===x?void 0:null===(u=x.connection_kwargs)||void 0===u?void 0:u.port)||(null==v?void 0:null===(p=v.connection_kwargs)||void 0===p?void 0:p.port)||(null==v?void 0:v.port)||"N/A",redis_version:(null==v?void 0:v.redis_version)||"N/A",startup_nodes:(()=>{try{var e,s,t,l,a,r,i,n,o,c,d,m,u;if(null==v?void 0:null===(e=v.redis_kwargs)||void 0===e?void 0:e.startup_nodes)return JSON.stringify(v.redis_kwargs.startup_nodes);let x=(null==v?void 0:null===(l=v.redis_client)||void 0===l?void 0:null===(t=l.connection_pool)||void 0===t?void 0:null===(s=t.connection_kwargs)||void 0===s?void 0:s.host)||(null==v?void 0:null===(i=v.redis_async_client)||void 0===i?void 0:null===(r=i.connection_pool)||void 0===r?void 0:null===(a=r.connection_kwargs)||void 0===a?void 0:a.host),h=(null==v?void 0:null===(c=v.redis_client)||void 0===c?void 0:null===(o=c.connection_pool)||void 0===o?void 0:null===(n=o.connection_kwargs)||void 0===n?void 0:n.port)||(null==v?void 0:null===(u=v.redis_async_client)||void 0===u?void 0:null===(m=u.connection_pool)||void 0===m?void 0:null===(d=m.connection_kwargs)||void 0===d?void 0:d.port);return x&&h?JSON.stringify([{host:x,port:h}]):"N/A"}catch(e){return"N/A"}})(),namespace:(null==v?void 0:v.namespace)||"N/A"};return(0,c.jsx)("div",{className:"bg-white rounded-lg shadow",children:(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"border-b border-gray-200 px-4",children:[(0,c.jsx)(ss.Z,{className:"px-4 py-2 text-sm font-medium text-gray-600 hover:text-gray-800",children:"Summary"}),(0,c.jsx)(ss.Z,{className:"px-4 py-2 text-sm font-medium text-gray-600 hover:text-gray-800",children:"Raw Response"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{className:"p-4",children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-6",children:[(null==g?void 0:g.status)==="healthy"?(0,c.jsx)(eb.Z,{className:"h-5 w-5 text-green-500 mr-2"}):(0,c.jsx)(ey.Z,{className:"h-5 w-5 text-red-500 mr-2"}),(0,c.jsxs)(k.Z,{className:"text-sm font-medium ".concat((null==g?void 0:g.status)==="healthy"?"text-green-500":"text-red-500"),children:["Cache Status: ",(null==g?void 0:g.status)||"unhealthy"]})]}),(0,c.jsx)("table",{className:"w-full border-collapse",children:(0,c.jsxs)("tbody",{children:[j&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("tr",{children:(0,c.jsx)("td",{colSpan:2,className:"pt-4 pb-2 font-semibold text-red-600",children:"Error Details"})}),(0,c.jsx)(iD,{label:"Error Message",value:j.message}),(0,c.jsx)(iD,{label:"Traceback",value:j.traceback})]}),(0,c.jsx)("tr",{children:(0,c.jsx)("td",{colSpan:2,className:"pt-4 pb-2 font-semibold",children:"Cache Details"})}),(0,c.jsx)(iD,{label:"Cache Configuration",value:String(null==f?void 0:f.type)}),(0,c.jsx)(iD,{label:"Ping Response",value:String(g.ping_response)}),(0,c.jsx)(iD,{label:"Set Cache Response",value:g.set_cache_response||"N/A"}),(0,c.jsx)(iD,{label:"litellm_settings.cache_params",value:JSON.stringify(f,null,2)}),(null==f?void 0:f.type)==="redis"&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("tr",{children:(0,c.jsx)("td",{colSpan:2,className:"pt-4 pb-2 font-semibold",children:"Redis Details"})}),(0,c.jsx)(iD,{label:"Redis Host",value:y.redis_host||"N/A"}),(0,c.jsx)(iD,{label:"Redis Port",value:y.redis_port||"N/A"}),(0,c.jsx)(iD,{label:"Redis Version",value:y.redis_version||"N/A"}),(0,c.jsx)(iD,{label:"Startup Nodes",value:y.startup_nodes||"N/A"}),(0,c.jsx)(iD,{label:"Namespace",value:y.namespace||"N/A"})]})]})})]})}),(0,c.jsx)(sa.Z,{className:"p-4",children:(0,c.jsx)("div",{className:"bg-gray-50 rounded-md p-4 font-mono text-sm",children:(0,c.jsx)("pre",{className:"whitespace-pre-wrap break-words overflow-auto max-h-[500px]",children:(()=>{try{let e={...g,litellm_cache_params:f,health_check_cache_params:v},s=JSON.parse(JSON.stringify(e,(e,s)=>{if("string"==typeof s)try{return JSON.parse(s)}catch(e){}return s}));return JSON.stringify(s,null,2)}catch(e){return"Error formatting JSON: "+e.message}})()})})})]})]})})},iR=e=>{let{accessToken:s,healthCheckResponse:t,runCachingHealthCheck:l,responseTimeMs:a}=e,[r,i]=d.useState(null),[n,o]=d.useState(!1),m=async()=>{o(!0);let e=performance.now();await l(),i(performance.now()-e),o(!1)};return(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)(b.Z,{onClick:m,disabled:n,className:"bg-indigo-600 hover:bg-indigo-700 disabled:bg-indigo-400 text-white text-sm px-4 py-2 rounded-md",children:n?"Running Health Check...":"Run Health Check"}),(0,c.jsx)(iM,{responseTimeMs:r})]}),t&&(0,c.jsx)(iF,{response:t})]})},iz=e=>{if(e)return e.toISOString().split("T")[0]};function iU(e){return new Intl.NumberFormat("en-US",{maximumFractionDigits:0,notation:"compact",compactDisplay:"short"}).format(e)}var iq=e=>{let{accessToken:s,token:t,userRole:l,userID:a,premiumUser:r}=e,[i,n]=(0,d.useState)([]),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)([]),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)("0"),[b,_]=(0,d.useState)("0"),[N,Z]=(0,d.useState)("0"),[w,S]=(0,d.useState)({from:new Date(Date.now()-6048e5),to:new Date}),[C,I]=(0,d.useState)(""),[A,T]=(0,d.useState)("");(0,d.useEffect)(()=>{s&&w&&((async()=>{p(await (0,j.adminGlobalCacheActivity)(s,iz(w.from),iz(w.to)))})(),I(new Date().toLocaleString()))},[s]);let E=Array.from(new Set(h.map(e=>{var s;return null!==(s=null==e?void 0:e.api_key)&&void 0!==s?s:""}))),L=Array.from(new Set(h.map(e=>{var s;return null!==(s=null==e?void 0:e.model)&&void 0!==s?s:""})));Array.from(new Set(h.map(e=>{var s;return null!==(s=null==e?void 0:e.call_type)&&void 0!==s?s:""})));let P=async(e,t)=>{e&&t&&s&&p(await (0,j.adminGlobalCacheActivity)(s,iz(e),iz(t)))};(0,d.useEffect)(()=>{console.log("DATA IN CACHE DASHBOARD",h);let e=h;o.length>0&&(e=e.filter(e=>o.includes(e.api_key))),u.length>0&&(e=e.filter(e=>u.includes(e.model))),console.log("before processed data in cache dashboard",e);let s=0,t=0,l=0,a=e.reduce((e,a)=>{console.log("Processing item:",a),a.call_type||(console.log("Item has no call_type:",a),a.call_type="Unknown"),s+=(a.total_rows||0)-(a.cache_hit_true_rows||0),t+=a.cache_hit_true_rows||0,l+=a.cached_completion_tokens||0;let r=e.find(e=>e.name===a.call_type);return r?(r["LLM API requests"]+=(a.total_rows||0)-(a.cache_hit_true_rows||0),r["Cache hit"]+=a.cache_hit_true_rows||0,r["Cached Completion Tokens"]+=a.cached_completion_tokens||0,r["Generated Completion Tokens"]+=a.generated_completion_tokens||0):e.push({name:a.call_type,"LLM API requests":(a.total_rows||0)-(a.cache_hit_true_rows||0),"Cache hit":a.cache_hit_true_rows||0,"Cached Completion Tokens":a.cached_completion_tokens||0,"Generated Completion Tokens":a.generated_completion_tokens||0}),e},[]);f(iU(t)),_(iU(l));let r=t+s;r>0?Z((t/r*100).toFixed(2)):Z("0"),n(a),console.log("PROCESSED DATA IN CACHE DASHBOARD",a)},[o,u,w,h]);let M=async()=>{try{eo.Z.info("Running cache health check..."),T("");let e=await (0,j.cachingHealthCheckCall)(null!==s?s:"");console.log("CACHING HEALTH CHECK RESPONSE",e),T(e)}catch(s){let e;if(console.error("Error running health check:",s),s&&s.message)try{let t=JSON.parse(s.message);t.error&&(t=t.error),e=t}catch(t){e={message:s.message}}else e={message:"Unknown error occurred"};T({error:e})}};return(0,c.jsxs)(st.Z,{className:"gap-2 p-8 h-full w-full mt-2 mb-8",children:[(0,c.jsxs)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:[(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(ss.Z,{children:"Cache Analytics"}),(0,c.jsx)(ss.Z,{children:(0,c.jsx)("pre",{children:"Cache Health"})})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[C&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",C]}),(0,c.jsx)(sD.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center",onClick:()=>{I(new Date().toLocaleString())}})]})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)(y.Z,{numItems:3,className:"gap-4 mt-4",children:[(0,c.jsx)(v.Z,{children:(0,c.jsx)(iA.Z,{placeholder:"Select API Keys",value:o,onValueChange:m,children:E.map(e=>(0,c.jsx)(iT.Z,{value:e,children:e},e))})}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(iA.Z,{placeholder:"Select Models",value:u,onValueChange:x,children:L.map(e=>(0,c.jsx)(iT.Z,{value:e,children:e},e))})}),(0,c.jsx)(v.Z,{children:(0,c.jsx)(ti,{value:w,onValueChange:e=>{S(e),P(e.from,e.to)}})})]}),(0,c.jsxs)("div",{className:"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3 mt-4",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("p",{className:"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content",children:"Cache Hit Ratio"}),(0,c.jsx)("div",{className:"mt-2 flex items-baseline space-x-2.5",children:(0,c.jsxs)("p",{className:"text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong",children:[N,"%"]})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("p",{className:"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content",children:"Cache Hits"}),(0,c.jsx)("div",{className:"mt-2 flex items-baseline space-x-2.5",children:(0,c.jsx)("p",{className:"text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong",children:g})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)("p",{className:"text-tremor-default font-medium text-tremor-content dark:text-dark-tremor-content",children:"Cached Tokens"}),(0,c.jsx)("div",{className:"mt-2 flex items-baseline space-x-2.5",children:(0,c.jsx)("p",{className:"text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong",children:b})})]})]}),(0,c.jsx)(sX.Z,{className:"mt-4",children:"Cache Hits vs API Requests"}),(0,c.jsx)(to.Z,{title:"Cache Hits vs API Requests",data:i,stack:!0,index:"name",valueFormatter:iU,categories:["LLM API requests","Cache hit"],colors:["sky","teal"],yAxisWidth:48}),(0,c.jsx)(sX.Z,{className:"mt-4",children:"Cached Completion Tokens vs Generated Completion Tokens"}),(0,c.jsx)(to.Z,{className:"mt-6",data:i,stack:!0,index:"name",valueFormatter:iU,categories:["Generated Completion Tokens","Cached Completion Tokens"],colors:["sky","teal"],yAxisWidth:48})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(iR,{accessToken:s,healthCheckResponse:A,runCachingHealthCheck:M})})]})]})},iV=t(91810);(a=n||(n={})).PresidioPII="Presidio PII",a.Bedrock="Bedrock Guardrail",a.Lakera="Lakera";let iB={},iK=e=>{let s={};return s.PresidioPII="Presidio PII",s.Bedrock="Bedrock Guardrail",s.Lakera="Lakera",Object.entries(e).forEach(e=>{let[t,l]=e;l&&"object"==typeof l&&"ui_friendly_name"in l&&(s[t.split("_").map((e,s)=>e.charAt(0).toUpperCase()+e.slice(1)).join("")]=l.ui_friendly_name)}),iB=s,s},iG=()=>Object.keys(iB).length>0?iB:n,iH={PresidioPII:"presidio",Bedrock:"bedrock",Lakera:"lakera_v2"},iY=e=>{Object.entries(e).forEach(e=>{let[s,t]=e;t&&"object"==typeof t&&"ui_friendly_name"in t&&(iH[s.split("_").map((e,s)=>e.charAt(0).toUpperCase()+e.slice(1)).join("")]=s)})},iJ=e=>!!e&&"Presidio PII"===iG()[e],iW="../ui/assets/logos/",i$={"Presidio PII":"".concat(iW,"presidio.png"),"Bedrock Guardrail":"".concat(iW,"bedrock.svg"),Lakera:"".concat(iW,"lakeraai.jpeg"),"Azure Content Safety Prompt Shield":"".concat(iW,"presidio.png"),"Azure Content Safety Text Moderation":"".concat(iW,"presidio.png")},iQ=e=>{if(!e)return{logo:"",displayName:"-"};let s=Object.keys(iH).find(s=>iH[s].toLowerCase()===e.toLowerCase());if(!s)return{logo:"",displayName:e};let t=iG()[s];return{logo:i$[t]||"",displayName:t||e}};var iX=t(33866),i0=t(97416),i1=t(10798),i2=t(49638);let{Text:i4}=en.default,{Option:i5}=I.default,i3=e=>e.replace(/_/g," "),i6=e=>{switch(e){case"MASK":return(0,c.jsx)(i0.Z,{style:{marginRight:4}});case"BLOCK":return(0,c.jsx)(ll.Z,{style:{marginRight:4}});default:return null}},i8=e=>{let{categories:s,selectedCategories:t,onChange:l}=e;return(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center mb-2",children:[(0,c.jsx)(i1.Z,{className:"text-gray-500 mr-1"}),(0,c.jsx)(i4,{className:"text-gray-500 font-medium",children:"Filter by category"})]}),(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select categories to filter by",style:{width:"100%"},onChange:l,value:t,allowClear:!0,showSearch:!0,optionFilterProp:"children",className:"mb-4",tagRender:e=>(0,c.jsx)(ls.Z,{color:"blue",closable:e.closable,onClose:e.onClose,className:"mr-2 mb-2",children:e.label}),children:s.map(e=>(0,c.jsx)(i5,{value:e.category,children:e.category},e.category))})]})},i7=e=>{let{onSelectAll:s,onUnselectAll:t,hasSelectedEntities:l}=e;return(0,c.jsxs)("div",{className:"bg-gray-50 p-5 rounded-lg mb-6 border border-gray-200 shadow-sm",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(i4,{strong:!0,className:"text-gray-700 text-base",children:"Quick Actions"}),(0,c.jsx)(B.Z,{title:"Apply action to all PII types at once",children:(0,c.jsx)("div",{className:"ml-2 text-gray-400 cursor-help text-xs",children:"ⓘ"})})]}),(0,c.jsx)(L.ZP,{type:"default",onClick:t,disabled:!l,icon:(0,c.jsx)(i2.Z,{}),className:"border-gray-300 hover:text-red-600 hover:border-red-300",children:"Unselect All"})]}),(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,c.jsx)(L.ZP,{type:"default",onClick:()=>s("MASK"),className:"flex items-center justify-center h-10 border-blue-200 hover:border-blue-300 hover:text-blue-700 bg-blue-50 hover:bg-blue-100 text-blue-600",block:!0,icon:(0,c.jsx)(i0.Z,{}),children:"Select All & Mask"}),(0,c.jsx)(L.ZP,{type:"default",onClick:()=>s("BLOCK"),className:"flex items-center justify-center h-10 border-red-200 hover:border-red-300 hover:text-red-700 bg-red-50 hover:bg-red-100 text-red-600",block:!0,icon:(0,c.jsx)(ll.Z,{}),children:"Select All & Block"})]})]})},i9=e=>{let{entities:s,selectedEntities:t,selectedActions:l,actions:a,onEntitySelect:r,onActionSelect:i,entityToCategoryMap:n}=e;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden shadow-sm",children:[(0,c.jsxs)("div",{className:"bg-gray-50 px-5 py-3 border-b flex",children:[(0,c.jsx)(i4,{strong:!0,className:"flex-1 text-gray-700",children:"PII Type"}),(0,c.jsx)(i4,{strong:!0,className:"w-32 text-right text-gray-700",children:"Action"})]}),(0,c.jsx)("div",{className:"max-h-[400px] overflow-y-auto",children:0===s.length?(0,c.jsx)("div",{className:"py-10 text-center text-gray-500",children:"No PII types match your filter criteria"}):s.map(e=>(0,c.jsxs)("div",{className:"px-5 py-3 flex items-center justify-between hover:bg-gray-50 border-b ".concat(t.includes(e)?"bg-blue-50":""),children:[(0,c.jsxs)("div",{className:"flex items-center flex-1",children:[(0,c.jsx)(eR.Z,{checked:t.includes(e),onChange:()=>r(e),className:"mr-3"}),(0,c.jsx)(i4,{className:t.includes(e)?"font-medium text-gray-900":"text-gray-700",children:i3(e)}),n.get(e)&&(0,c.jsx)(ls.Z,{className:"ml-2 text-xs",color:"blue",children:n.get(e)})]}),(0,c.jsx)("div",{className:"w-32",children:(0,c.jsx)(I.default,{value:t.includes(e)&&l[e]||"MASK",onChange:s=>i(e,s),style:{width:120},disabled:!t.includes(e),className:"".concat(t.includes(e)?"":"opacity-50"),dropdownMatchSelectWidth:!1,children:a.map(e=>(0,c.jsx)(i5,{value:e,children:(0,c.jsxs)("div",{className:"flex items-center",children:[i6(e),e]})},e))})})]},e))})]})},{Title:ne,Text:ns}=en.default;var nt=e=>{let{entities:s,actions:t,selectedEntities:l,selectedActions:a,onEntitySelect:r,onActionSelect:i,entityCategories:n=[]}=e,[o,m]=(0,d.useState)([]),u=new Map;n.forEach(e=>{e.entities.forEach(s=>{u.set(s,e.category)})});let x=s.filter(e=>0===o.length||o.includes(u.get(e)||""));return(0,c.jsxs)("div",{className:"pii-configuration",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-5",children:[(0,c.jsx)("div",{className:"flex items-center",children:(0,c.jsx)(ne,{level:4,className:"mb-0 font-semibold text-gray-800",children:"Configure PII Protection"})}),(0,c.jsx)(iX.Z,{count:l.length,showZero:!0,style:{backgroundColor:l.length>0?"#4f46e5":"#d9d9d9"},overflowCount:999,children:(0,c.jsxs)(ns,{className:"text-gray-500",children:[l.length," items selected"]})})]}),(0,c.jsxs)("div",{className:"mb-6",children:[(0,c.jsx)(i8,{categories:n,selectedCategories:o,onChange:m}),(0,c.jsx)(i7,{onSelectAll:e=>{s.forEach(s=>{l.includes(s)||r(s),i(s,e)})},onUnselectAll:()=>{l.forEach(e=>{r(e)})},hasSelectedEntities:l.length>0})]}),(0,c.jsx)(i9,{entities:x,selectedEntities:l,selectedActions:a,actions:t,onEntitySelect:r,onActionSelect:i,entityToCategoryMap:u})]})},nl=e=>{var s;let{selectedProvider:t,accessToken:l,providerParams:a=null,value:r=null}=e,[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(a),[u,x]=(0,d.useState)(null);if((0,d.useEffect)(()=>{if(a){m(a);return}let e=async()=>{if(l){n(!0),x(null);try{let e=await (0,j.getGuardrailProviderSpecificParams)(l);console.log("Provider params API response:",e),m(e),iK(e),iY(e)}catch(e){console.error("Error fetching provider params:",e),x("Failed to load provider parameters")}finally{n(!1)}}};a||e()},[l,a]),!t)return null;if(i)return(0,c.jsx)(eF.Z,{tip:"Loading provider parameters..."});if(u)return(0,c.jsx)("div",{className:"text-red-500",children:u});let h=null===(s=iH[t])||void 0===s?void 0:s.toLowerCase(),p=o&&o[h];if(console.log("Provider key:",h),console.log("Provider fields:",p),!p||0===Object.keys(p).length)return(0,c.jsx)("div",{children:"No configuration fields available for this provider."});console.log("Value:",r);let g=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=arguments.length>2?arguments[2]:void 0;return Object.entries(e).map(e=>{let[l,a]=e,i=s?"".concat(s,".").concat(l):l,n=t?t[l]:null==r?void 0:r[l];return(console.log("Field value:",n),"ui_friendly_name"===l||"optional_params"===l&&"nested"===a.type&&a.fields)?null:"nested"===a.type&&a.fields?(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"mb-2 font-medium",children:l}),(0,c.jsx)("div",{className:"ml-4 border-l-2 border-gray-200 pl-4",children:g(a.fields,i,n)})]},i):(0,c.jsx)(A.Z.Item,{name:i,label:l,tooltip:a.description,rules:a.required?[{required:!0,message:"".concat(l," is required")}]:void 0,children:"select"===a.type&&a.options?(0,c.jsx)(I.default,{placeholder:a.description,defaultValue:n||a.default_value,children:a.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"multiselect"===a.type&&a.options?(0,c.jsx)(I.default,{mode:"multiple",placeholder:a.description,defaultValue:n||a.default_value,children:a.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"bool"===a.type||"boolean"===a.type?(0,c.jsxs)(I.default,{placeholder:a.description,defaultValue:void 0!==n?String(n):a.default_value,children:[(0,c.jsx)(I.default.Option,{value:"true",children:"True"}),(0,c.jsx)(I.default.Option,{value:"false",children:"False"})]}):"number"===a.type?(0,c.jsx)(O,{step:1,width:400,placeholder:a.description,defaultValue:void 0!==n?Number(n):void 0}):l.includes("password")||l.includes("secret")||l.includes("key")?(0,c.jsx)(eW.o,{placeholder:a.description,type:"password",defaultValue:n||""}):(0,c.jsx)(eW.o,{placeholder:a.description,type:"text",defaultValue:n||""})},i)})};return(0,c.jsx)(c.Fragment,{children:g(p)})};let{Title:na}=en.default,nr=e=>{let{field:s,fieldKey:t,fullFieldKey:l,value:a}=e,[r,i]=d.useState([]),[n,o]=d.useState(s.dict_key_options||[]);d.useEffect(()=>{if(a&&"object"==typeof a){let e=Object.keys(a);i(e.map(e=>({key:e,id:"".concat(e,"_").concat(Date.now(),"_").concat(Math.random())}))),o((s.dict_key_options||[]).filter(s=>!e.includes(s)))}},[a,s.dict_key_options]);let m=e=>{e&&(i([...r,{key:e,id:"".concat(e,"_").concat(Date.now())}]),o(n.filter(s=>s!==e)))},u=(e,s)=>{i(r.filter(s=>s.id!==e)),o([...n,s].sort())};return(0,c.jsxs)("div",{className:"space-y-3",children:[r.map(e=>(0,c.jsxs)("div",{className:"flex items-center space-x-3 p-3 border rounded-lg",children:[(0,c.jsx)("div",{className:"w-24 font-medium text-sm",children:e.key}),(0,c.jsx)("div",{className:"flex-1",children:(0,c.jsx)(A.Z.Item,{name:Array.isArray(l)?[...l,e.key]:[l,e.key],style:{marginBottom:0},initialValue:a&&"object"==typeof a?a[e.key]:void 0,normalize:"number"===s.dict_value_type?e=>{if(null==e||""===e)return;let s=Number(e);return isNaN(s)?e:s}:void 0,children:"number"===s.dict_value_type?(0,c.jsx)(O,{step:1,width:200,placeholder:"Enter ".concat(e.key," value")}):"boolean"===s.dict_value_type?(0,c.jsxs)(I.default,{placeholder:"Select ".concat(e.key," value"),children:[(0,c.jsx)(I.default.Option,{value:!0,children:"True"}),(0,c.jsx)(I.default.Option,{value:!1,children:"False"})]}):(0,c.jsx)(eW.o,{placeholder:"Enter ".concat(e.key," value"),type:"text"})})}),(0,c.jsx)("button",{type:"button",className:"text-red-500 hover:text-red-700 text-sm",onClick:()=>u(e.id,e.key),children:"Remove"})]},e.id)),n.length>0&&(0,c.jsxs)("div",{className:"flex items-center space-x-3 mt-2",children:[(0,c.jsx)(I.default,{placeholder:"Select category to configure",style:{width:200},onSelect:e=>e&&m(e),value:void 0,children:n.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}),(0,c.jsx)("span",{className:"text-sm text-gray-500",children:"Select a category to add threshold configuration"})]})]})};var ni=e=>{let{optionalParams:s,parentFieldKey:t,values:l}=e,a=(e,s)=>{let a="".concat(t,".").concat(e),r=null==l?void 0:l[e];return(console.log("value",r),"dict"===s.type&&s.dict_key_options)?(0,c.jsxs)("div",{className:"mb-8 p-6 bg-gray-50 rounded-lg border border-gray-200",children:[(0,c.jsx)("div",{className:"mb-4 font-medium text-gray-900 text-base",children:e}),(0,c.jsx)("p",{className:"text-sm text-gray-600 mb-4",children:s.description}),(0,c.jsx)(nr,{field:s,fieldKey:e,fullFieldKey:[t,e],value:r})]},a):(0,c.jsx)("div",{className:"mb-8 p-6 bg-white rounded-lg border border-gray-200 shadow-sm",children:(0,c.jsx)(A.Z.Item,{name:[t,e],label:(0,c.jsxs)("div",{className:"mb-2",children:[(0,c.jsx)("div",{className:"font-medium text-gray-900 text-base",children:e}),(0,c.jsx)("p",{className:"text-sm text-gray-600 mt-1",children:s.description})]}),rules:s.required?[{required:!0,message:"".concat(e," is required")}]:void 0,className:"mb-0",initialValue:void 0!==r?r:s.default_value,normalize:"number"===s.type?e=>{if(null==e||""===e)return;let s=Number(e);return isNaN(s)?e:s}:void 0,children:"select"===s.type&&s.options?(0,c.jsx)(I.default,{placeholder:s.description,children:s.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"multiselect"===s.type&&s.options?(0,c.jsx)(I.default,{mode:"multiple",placeholder:s.description,children:s.options.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:e},e))}):"bool"===s.type||"boolean"===s.type?(0,c.jsxs)(I.default,{placeholder:s.description,children:[(0,c.jsx)(I.default.Option,{value:"true",children:"True"}),(0,c.jsx)(I.default.Option,{value:"false",children:"False"})]}):"number"===s.type?(0,c.jsx)(O,{step:1,width:400,placeholder:s.description}):e.includes("password")||e.includes("secret")||e.includes("key")?(0,c.jsx)(eW.o,{placeholder:s.description,type:"password"}):(0,c.jsx)(eW.o,{placeholder:s.description,type:"text"})})},a)};return s.fields&&0!==Object.keys(s.fields).length?(0,c.jsxs)("div",{className:"guardrail-optional-params",children:[(0,c.jsxs)("div",{className:"mb-8 pb-4 border-b border-gray-100",children:[(0,c.jsx)(na,{level:3,className:"mb-2 font-semibold text-gray-900",children:"Optional Parameters"}),(0,c.jsx)("p",{className:"text-gray-600 text-sm",children:s.description||"Configure additional settings for this guardrail provider"})]}),(0,c.jsx)("div",{className:"space-y-8",children:Object.entries(s.fields).map(e=>{let[s,t]=e;return a(s,t)})})]}):null};let{Title:nn,Text:no,Link:nc}=en.default,{Option:nd}=I.default,{Step:nm}=iV.default,nu={pre_call:"Before LLM Call - Runs before the LLM call and checks the input (Recommended)",during_call:"During LLM Call - Runs in parallel with the LLM call, with response held until check completes",post_call:"After LLM Call - Runs after the LLM call and checks only the output",logging_only:"Logging Only - Only runs on logging callbacks without affecting the LLM call",pre_mcp_call:"Before MCP Tool Call - Runs before MCP tool execution and validates tool calls",during_mcp_call:"During MCP Tool Call - Runs in parallel with MCP tool execution for monitoring"};var nx=e=>{let{visible:s,onClose:t,accessToken:l,onSuccess:a}=e,[r]=A.Z.useForm(),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(null),[h,p]=(0,d.useState)([]),[g,f]=(0,d.useState)({}),[v,y]=(0,d.useState)(0),[N,Z]=(0,d.useState)(null),[w,k]=(0,d.useState)([]),[S,C]=(0,d.useState)(2),[E,L]=(0,d.useState)({});(0,d.useEffect)(()=>{l&&(async()=>{try{let[e,s]=await Promise.all([(0,j.getGuardrailUISettings)(l),(0,j.getGuardrailProviderSpecificParams)(l)]);x(e),Z(s),iK(s),iY(s)}catch(e){console.error("Error fetching guardrail data:",e),eo.Z.fromBackend("Failed to load guardrail configuration")}})()},[l]);let P=e=>{m(e),r.setFieldsValue({config:void 0,presidio_analyzer_api_base:void 0,presidio_anonymizer_api_base:void 0}),p([]),f({}),k([]),C(2),L({})},M=e=>{p(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},O=(e,s)=>{f(t=>({...t,[e]:s}))},D=async()=>{try{if(0===v&&(await r.validateFields(["guardrail_name","provider","mode","default_on"]),o)){let e=["guardrail_name","provider","mode","default_on"];"PresidioPII"===o&&e.push("presidio_analyzer_api_base","presidio_anonymizer_api_base"),await r.validateFields(e)}if(1===v&&iJ(o)&&0===h.length){eo.Z.fromBackend("Please select at least one PII entity to continue");return}y(v+1)}catch(e){console.error("Form validation failed:",e)}},F=()=>{r.resetFields(),m(null),p([]),f({}),k([]),C(2),L({}),y(0)},R=()=>{F(),t()},z=async()=>{try{n(!0),await r.validateFields();let s=r.getFieldsValue(!0),i=iH[s.provider],c={guardrail_name:s.guardrail_name,litellm_params:{guardrail:i,mode:s.mode,default_on:s.default_on},guardrail_info:{}};if("PresidioPII"===s.provider&&h.length>0){let e={};h.forEach(s=>{e[s]=g[s]||"MASK"}),c.litellm_params.pii_entities_config=e,s.presidio_analyzer_api_base&&(c.litellm_params.presidio_analyzer_api_base=s.presidio_analyzer_api_base),s.presidio_anonymizer_api_base&&(c.litellm_params.presidio_anonymizer_api_base=s.presidio_anonymizer_api_base)}else if(s.config)try{let e=JSON.parse(s.config);c.guardrail_info=e}catch(e){eo.Z.fromBackend("Invalid JSON in configuration"),n(!1);return}if(console.log("values: ",JSON.stringify(s)),N&&o){var e;let t=null===(e=iH[o])||void 0===e?void 0:e.toLowerCase();console.log("providerKey: ",t);let l=N[t]||{},a=new Set;console.log("providerSpecificParams: ",JSON.stringify(l)),Object.keys(l).forEach(e=>{"optional_params"!==e&&a.add(e)}),l.optional_params&&l.optional_params.fields&&Object.keys(l.optional_params.fields).forEach(e=>{a.add(e)}),console.log("allowedParams: ",a),a.forEach(e=>{let t=s[e];if(null==t||""===t){var l;t=null===(l=s.optional_params)||void 0===l?void 0:l[e]}null!=t&&""!==t&&(c.litellm_params[e]=t)})}if(!l)throw Error("No access token available");console.log("Sending guardrail data:",JSON.stringify(c)),await (0,j.createGuardrailCall)(l,c),eo.Z.success("Guardrail created successfully"),F(),a(),t()}catch(e){console.error("Failed to create guardrail:",e),eo.Z.fromBackend("Failed to create guardrail: "+(e instanceof Error?e.message:String(e)))}finally{n(!1)}},U=()=>{var e;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{name:"guardrail_name",label:"Guardrail Name",rules:[{required:!0,message:"Please enter a guardrail name"}],children:(0,c.jsx)(_.Z,{placeholder:"Enter a name for this guardrail"})}),(0,c.jsx)(A.Z.Item,{name:"provider",label:"Guardrail Provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,c.jsx)(I.default,{placeholder:"Select a guardrail provider",onChange:P,labelInValue:!1,optionLabelProp:"label",dropdownRender:e=>e,showSearch:!0,children:Object.entries(iG()).map(e=>{let[s,t]=e;return(0,c.jsx)(nd,{value:s,label:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[i$[t]&&(0,c.jsx)("img",{src:i$[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,c.jsx)("span",{children:t})]}),children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[i$[t]&&(0,c.jsx)("img",{src:i$[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(A.Z.Item,{name:"mode",label:"Mode",tooltip:"How the guardrail should be applied",rules:[{required:!0,message:"Please select a mode"}],children:(0,c.jsx)(I.default,{optionLabelProp:"label",mode:"multiple",children:(null==u?void 0:null===(e=u.supported_modes)||void 0===e?void 0:e.map(e=>(0,c.jsx)(nd,{value:e,label:e,children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:e}),"pre_call"===e&&(0,c.jsx)(ls.Z,{color:"green",style:{marginLeft:"8px"},children:"Recommended"})]}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu[e]})]})},e)))||(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(nd,{value:"pre_call",label:"pre_call",children:(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("strong",{children:"pre_call"})," ",(0,c.jsx)(ls.Z,{color:"green",children:"Recommended"})]}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu.pre_call})]})}),(0,c.jsx)(nd,{value:"during_call",label:"during_call",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{children:(0,c.jsx)("strong",{children:"during_call"})}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu.during_call})]})}),(0,c.jsx)(nd,{value:"post_call",label:"post_call",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{children:(0,c.jsx)("strong",{children:"post_call"})}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu.post_call})]})}),(0,c.jsx)(nd,{value:"logging_only",label:"logging_only",children:(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{children:(0,c.jsx)("strong",{children:"logging_only"})}),(0,c.jsx)("div",{style:{fontSize:"12px",color:"#888"},children:nu.logging_only})]})})]})})}),(0,c.jsx)(A.Z.Item,{name:"default_on",label:"Always On",tooltip:"If enabled, this guardrail will be applied to all requests by default.",children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:!0,children:"Yes"}),(0,c.jsx)(I.default.Option,{value:!1,children:"No"})]})}),(0,c.jsx)(nl,{selectedProvider:o,accessToken:l,providerParams:N})]})},q=()=>u&&"PresidioPII"===o?(0,c.jsx)(nt,{entities:u.supported_entities,actions:u.supported_actions,selectedEntities:h,selectedActions:g,onEntitySelect:M,onActionSelect:O,entityCategories:u.pii_entity_categories}):null,V=()=>{var e;if(!o||!N)return null;console.log("guardrail_provider_map: ",iH),console.log("selectedProvider: ",o);let s=null===(e=iH[o])||void 0===e?void 0:e.toLowerCase(),t=N&&N[s];return t&&t.optional_params?(0,c.jsx)(ni,{optionalParams:t.optional_params,parentFieldKey:"optional_params"}):null};return(0,c.jsx)(T.Z,{title:"Add Guardrail",open:s,onCancel:R,footer:null,width:700,children:(0,c.jsxs)(A.Z,{form:r,layout:"vertical",initialValues:{mode:"pre_call",default_on:!1},children:[(0,c.jsxs)(iV.default,{current:v,className:"mb-6",children:[(0,c.jsx)(nm,{title:"Basic Info"}),(0,c.jsx)(nm,{title:iJ(o)?"PII Configuration":"Provider Configuration"})]}),(()=>{switch(v){case 0:return U();case 1:if(iJ(o))return q();return V();default:return null}})(),(0,c.jsxs)("div",{className:"flex justify-end space-x-2 mt-4",children:[v>0&&(0,c.jsx)(b.Z,{variant:"secondary",onClick:()=>{y(v-1)},children:"Previous"}),v<2&&(0,c.jsx)(b.Z,{onClick:D,children:"Next"}),2===v&&(0,c.jsx)(b.Z,{onClick:z,loading:i,children:"Create Guardrail"}),(0,c.jsx)(b.Z,{variant:"secondary",onClick:R,children:"Cancel"})]})]})})};let{Title:nh,Text:np}=en.default,{Option:ng}=I.default;var nj=e=>{var s;let{visible:t,onClose:l,accessToken:a,onSuccess:r,guardrailId:i,initialValues:n}=e,[o]=A.Z.useForm(),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)((null==n?void 0:n.provider)||null),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)([]),[y,N]=(0,d.useState)({});(0,d.useEffect)(()=>{(async()=>{try{if(!a)return;let e=await (0,j.getGuardrailUISettings)(a);g(e)}catch(e){console.error("Error fetching guardrail settings:",e),eo.Z.fromBackend("Failed to load guardrail settings")}})()},[a]),(0,d.useEffect)(()=>{(null==n?void 0:n.pii_entities_config)&&Object.keys(n.pii_entities_config).length>0&&(v(Object.keys(n.pii_entities_config)),N(n.pii_entities_config))},[n]);let Z=e=>{v(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},w=(e,s)=>{N(t=>({...t,[e]:s}))},k=async()=>{try{u(!0);let e=await o.validateFields(),s=iH[e.provider],t={guardrail_id:i,guardrail:{guardrail_name:e.guardrail_name,litellm_params:{guardrail:s,mode:e.mode,default_on:e.default_on},guardrail_info:{}}};if("PresidioPII"===e.provider&&f.length>0){let e={};f.forEach(s=>{e[s]=y[s]||"MASK"}),t.guardrail.litellm_params.pii_entities_config=e}else if(e.config)try{let s=JSON.parse(e.config);"Bedrock"===e.provider&&s?(s.guardrail_id&&(t.guardrail.litellm_params.guardrailIdentifier=s.guardrail_id),s.guardrail_version&&(t.guardrail.litellm_params.guardrailVersion=s.guardrail_version)):t.guardrail.guardrail_info=s}catch(e){eo.Z.fromBackend("Invalid JSON in configuration"),u(!1);return}if(!a)throw Error("No access token available");console.log("Sending guardrail update data:",JSON.stringify(t));let n=await fetch("/guardrails/".concat(i),{method:"PUT",headers:{Authorization:"Bearer ".concat(a),"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok){let e=await n.text();throw Error(e||"Failed to update guardrail")}eo.Z.success("Guardrail updated successfully"),r(),l()}catch(e){console.error("Failed to update guardrail:",e),eo.Z.fromBackend("Failed to update guardrail: "+(e instanceof Error?e.message:String(e)))}finally{u(!1)}},S=()=>p&&x&&"PresidioPII"===x?(0,c.jsx)(nt,{entities:p.supported_entities,actions:p.supported_actions,selectedEntities:f,selectedActions:y,onEntitySelect:Z,onActionSelect:w,entityCategories:p.pii_entity_categories}):null;return(0,c.jsx)(T.Z,{title:"Edit Guardrail",open:t,onCancel:l,footer:null,width:700,children:(0,c.jsxs)(A.Z,{form:o,layout:"vertical",initialValues:n,children:[(0,c.jsx)(A.Z.Item,{name:"guardrail_name",label:"Guardrail Name",rules:[{required:!0,message:"Please enter a guardrail name"}],children:(0,c.jsx)(_.Z,{placeholder:"Enter a name for this guardrail"})}),(0,c.jsx)(A.Z.Item,{name:"provider",label:"Guardrail Provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,c.jsx)(I.default,{placeholder:"Select a guardrail provider",onChange:e=>{h(e),o.setFieldsValue({config:void 0}),v([]),N({})},disabled:!0,optionLabelProp:"label",children:Object.entries(iG()).map(e=>{let[s,t]=e;return(0,c.jsx)(ng,{value:s,label:t,children:(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[i$[t]&&(0,c.jsx)("img",{src:i$[t],alt:"",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"},onError:e=>{e.currentTarget.style.display="none"}}),(0,c.jsx)("span",{children:t})]})},s)})})}),(0,c.jsx)(A.Z.Item,{name:"mode",label:"Mode",tooltip:"How the guardrail should be applied",rules:[{required:!0,message:"Please select a mode"}],children:(0,c.jsx)(I.default,{children:(null==p?void 0:null===(s=p.supported_modes)||void 0===s?void 0:s.map(e=>(0,c.jsx)(ng,{value:e,children:e},e)))||(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ng,{value:"pre_call",children:"pre_call"}),(0,c.jsx)(ng,{value:"post_call",children:"post_call"})]})})}),(0,c.jsx)(A.Z.Item,{name:"default_on",label:"Always On",tooltip:"If enabled, this guardrail will be applied to all requests by default",valuePropName:"checked",children:(0,c.jsx)(eJ.Z,{})}),(()=>{if(!x)return null;if("PresidioPII"===x)return S();switch(x){case"Aporia":return(0,c.jsx)(A.Z.Item,{label:"Aporia Configuration",name:"config",tooltip:"JSON configuration for Aporia",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_aporia_api_key",\n "project_name": "your_project_name"\n}'})});case"AimSecurity":return(0,c.jsx)(A.Z.Item,{label:"Aim Security Configuration",name:"config",tooltip:"JSON configuration for Aim Security",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_aim_api_key"\n}'})});case"Bedrock":return(0,c.jsx)(A.Z.Item,{label:"Amazon Bedrock Configuration",name:"config",tooltip:"JSON configuration for Amazon Bedrock guardrails",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "guardrail_id": "your_guardrail_id",\n "guardrail_version": "your_guardrail_version"\n}'})});case"GuardrailsAI":return(0,c.jsx)(A.Z.Item,{label:"Guardrails.ai Configuration",name:"config",tooltip:"JSON configuration for Guardrails.ai",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_guardrails_api_key",\n "guardrail_id": "your_guardrail_id"\n}'})});case"LakeraAI":return(0,c.jsx)(A.Z.Item,{label:"Lakera AI Configuration",name:"config",tooltip:"JSON configuration for Lakera AI",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "api_key": "your_lakera_api_key"\n}'})});case"PromptInjection":return(0,c.jsx)(A.Z.Item,{label:"Prompt Injection Configuration",name:"config",tooltip:"JSON configuration for prompt injection detection",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "threshold": 0.8\n}'})});default:return(0,c.jsx)(A.Z.Item,{label:"Custom Configuration",name:"config",tooltip:"JSON configuration for your custom guardrail",children:(0,c.jsx)(P.default.TextArea,{rows:4,placeholder:'{\n "key1": "value1",\n "key2": "value2"\n}'})})}})(),(0,c.jsxs)("div",{className:"flex justify-end space-x-2 mt-4",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:l,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:k,loading:m,children:"Update Guardrail"})]})]})})},nf=e=>{let{guardrailsList:s,isLoading:t,onDeleteClick:l,accessToken:a,onGuardrailUpdated:r,isAdmin:i=!1,onGuardrailClick:n}=e,[o,m]=(0,d.useState)([{id:"created_at",desc:!0}]),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(null),g=e=>e?new Date(e).toLocaleString():"-",j=[{header:"Guardrail ID",accessorKey:"guardrail_id",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>e.getValue()&&n(e.getValue()),children:e.getValue()?"".concat(String(e.getValue()).slice(0,7),"..."):""})})},{header:"Name",accessorKey:"guardrail_name",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.guardrail_name,children:(0,c.jsx)("span",{className:"text-xs font-medium",children:t.guardrail_name||"-"})})}},{header:"Provider",accessorKey:"litellm_params.guardrail",cell:e=>{let{row:s}=e,{logo:t,displayName:l}=iQ(s.original.litellm_params.guardrail);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[t&&(0,c.jsx)("img",{src:t,alt:"".concat(l," logo"),className:"w-4 h-4",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)("span",{className:"text-xs",children:l})]})}},{header:"Mode",accessorKey:"litellm_params.mode",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.litellm_params.mode})}},{header:"Default On",accessorKey:"litellm_params.default_on",cell:e=>{var s,t;let{row:l}=e,a=l.original;return(0,c.jsx)(se.Z,{color:(null===(s=a.litellm_params)||void 0===s?void 0:s.default_on)?"green":"gray",className:"text-xs font-normal",size:"xs",children:(null===(t=a.litellm_params)||void 0===t?void 0:t.default_on)?"Default On":"Default Off"})}},{header:"Created At",accessorKey:"created_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.created_at,children:(0,c.jsx)("span",{className:"text-xs",children:g(t.created_at)})})}},{header:"Updated At",accessorKey:"updated_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.updated_at,children:(0,c.jsx)("span",{className:"text-xs",children:g(t.updated_at)})})}},{id:"actions",header:"",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("div",{className:"flex space-x-2",children:(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>t.guardrail_id&&l(t.guardrail_id,t.guardrail_name||"Unnamed Guardrail"),className:"cursor-pointer hover:text-red-500",tooltip:"Delete guardrail"})})}}],f=(0,sM.b7)({data:s,columns:j,state:{sorting:o},onSortingChange:m,getCoreRowModel:(0,sO.sC)(),getSortedRowModel:(0,sO.tj)(),enableSorting:!0});return(0,c.jsxs)("div",{className:"rounded-lg custom-border relative",children:[(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sU.Z,{children:f.getHeaderGroups().map(e=>(0,c.jsx)(sV.Z,{children:e.headers.map(e=>(0,c.jsx)(sq.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sB.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sR.Z,{children:t?(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:j.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"Loading..."})})})}):s.length>0?f.getRowModel().rows.map(e=>(0,c.jsx)(sV.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sz.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:j.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No guardrails found"})})})})})]})}),h&&(0,c.jsx)(nj,{visible:u,onClose:()=>x(!1),accessToken:a,onSuccess:()=>{x(!1),p(null),r()},guardrailId:h.guardrail_id||"",initialValues:{guardrail_name:h.guardrail_name||"",provider:Object.keys(iH).find(e=>iH[e]===(null==h?void 0:h.litellm_params.guardrail))||"",mode:h.litellm_params.mode,default_on:h.litellm_params.default_on,pii_entities_config:h.litellm_params.pii_entities_config,...h.guardrail_info}})]})},nv=e=>{var s,t,l,a,r,i,n,o,m,u,x;let{guardrailId:h,onClose:p,accessToken:g,isAdmin:f}=e,[v,N]=(0,d.useState)(null),[Z,w]=(0,d.useState)(null),[C,T]=(0,d.useState)(!0),[E,M]=(0,d.useState)(!1),[O]=A.Z.useForm(),[D,F]=(0,d.useState)([]),[R,z]=(0,d.useState)({}),[U,q]=(0,d.useState)(null),[V,B]=(0,d.useState)({}),H=async()=>{try{var e;if(T(!0),!g)return;let s=await (0,j.getGuardrailInfo)(g,h);if(N(s),null===(e=s.litellm_params)||void 0===e?void 0:e.pii_entities_config){let e=s.litellm_params.pii_entities_config;if(F([]),z({}),Object.keys(e).length>0){let s=[],t={};Object.entries(e).forEach(e=>{let[l,a]=e;s.push(l),t[l]="string"==typeof a?a:"MASK"}),F(s),z(t)}}else F([]),z({})}catch(e){eo.Z.fromBackend("Failed to load guardrail information"),console.error("Error fetching guardrail info:",e)}finally{T(!1)}},Y=async()=>{try{if(!g)return;let e=await (0,j.getGuardrailProviderSpecificParams)(g);w(e)}catch(e){console.error("Error fetching guardrail provider specific params:",e)}},J=async()=>{try{if(!g)return;let e=await (0,j.getGuardrailUISettings)(g);q(e)}catch(e){console.error("Error fetching guardrail UI settings:",e)}};(0,d.useEffect)(()=>{Y()},[g]),(0,d.useEffect)(()=>{H(),J()},[h,g]),(0,d.useEffect)(()=>{if(v&&O){var e;O.setFieldsValue({guardrail_name:v.guardrail_name,...v.litellm_params,guardrail_info:v.guardrail_info?JSON.stringify(v.guardrail_info,null,2):"",...(null===(e=v.litellm_params)||void 0===e?void 0:e.optional_params)&&{optional_params:v.litellm_params.optional_params}})}},[v,Z,O]);let W=async e=>{try{var s,t,l;if(!g)return;let a={litellm_params:{}};e.guardrail_name!==v.guardrail_name&&(a.guardrail_name=e.guardrail_name),e.default_on!==(null===(s=v.litellm_params)||void 0===s?void 0:s.default_on)&&(a.litellm_params.default_on=e.default_on);let r=v.guardrail_info,i=e.guardrail_info?JSON.parse(e.guardrail_info):void 0;JSON.stringify(r)!==JSON.stringify(i)&&(a.guardrail_info=i);let n=(null===(t=v.litellm_params)||void 0===t?void 0:t.pii_entities_config)||{},o={};D.forEach(e=>{o[e]=R[e]||"MASK"}),JSON.stringify(n)!==JSON.stringify(o)&&(a.litellm_params.pii_entities_config=o);let c=Object.keys(iH).find(e=>{var s;return iH[e]===(null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)});if(console.log("values: ",JSON.stringify(e)),console.log("currentProvider: ",c),Z&&c){let s=Z[null===(l=iH[c])||void 0===l?void 0:l.toLowerCase()]||{},t=new Set;console.log("providerSpecificParams: ",JSON.stringify(s)),Object.keys(s).forEach(e=>{"optional_params"!==e&&t.add(e)}),s.optional_params&&s.optional_params.fields&&Object.keys(s.optional_params.fields).forEach(e=>{t.add(e)}),console.log("allowedParams: ",t),t.forEach(s=>{var t,l;let r=e[s];(null==r||""===r)&&(r=null===(l=e.optional_params)||void 0===l?void 0:l[s]);let i=null===(t=v.litellm_params)||void 0===t?void 0:t[s];JSON.stringify(r)!==JSON.stringify(i)&&(null!=r&&""!==r?a.litellm_params[s]=r:null!=i&&""!==i&&(a.litellm_params[s]=null))})}if(0===Object.keys(a.litellm_params).length&&delete a.litellm_params,0===Object.keys(a).length){eo.Z.info("No changes detected"),M(!1);return}await (0,j.updateGuardrailCall)(g,h,a),eo.Z.success("Guardrail updated successfully"),H(),M(!1)}catch(e){console.error("Error updating guardrail:",e),eo.Z.fromBackend("Failed to update guardrail")}};if(C)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!v)return(0,c.jsx)("div",{className:"p-4",children:"Guardrail not found"});let $=e=>e?new Date(e).toLocaleString():"-",{logo:Q,displayName:X}=iQ((null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)||""),ee=async(e,s)=>{await eM(e)&&(B(e=>({...e,[s]:!0})),setTimeout(()=>{B(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:p,className:"mb-4",children:"Back to Guardrails"}),(0,c.jsx)(S.Z,{children:v.guardrail_name||"Unnamed Guardrail"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:v.guardrail_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:V["guardrail-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>ee(v.guardrail_id,"guardrail-id"),className:"left-2 z-10 transition-all duration-200 ".concat(V["guardrail-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),f?(0,c.jsx)(ss.Z,{children:"Settings"},"settings"):(0,c.jsx)(c.Fragment,{})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Provider"}),(0,c.jsxs)("div",{className:"mt-2 flex items-center space-x-2",children:[Q&&(0,c.jsx)("img",{src:Q,alt:"".concat(X," logo"),className:"w-6 h-6",onError:e=>{e.target.style.display="none"}}),(0,c.jsx)(S.Z,{children:X})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Mode"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:(null===(t=v.litellm_params)||void 0===t?void 0:t.mode)||"-"}),(0,c.jsx)(se.Z,{color:(null===(l=v.litellm_params)||void 0===l?void 0:l.default_on)?"green":"gray",children:(null===(a=v.litellm_params)||void 0===a?void 0:a.default_on)?"Default On":"Default Off"})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Created At"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:$(v.created_at)}),(0,c.jsxs)(k.Z,{children:["Last Updated: ",$(v.updated_at)]})]})]})]}),(null===(r=v.litellm_params)||void 0===r?void 0:r.pii_entities_config)&&Object.keys(v.litellm_params.pii_entities_config).length>0&&(0,c.jsx)(G.Z,{className:"mt-6",children:(0,c.jsxs)("div",{className:"flex justify-between items-center",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"PII Protection"}),(0,c.jsxs)(se.Z,{color:"blue",children:[Object.keys(v.litellm_params.pii_entities_config).length," PII entities configured"]})]})}),v.guardrail_info&&Object.keys(v.guardrail_info).length>0&&(0,c.jsxs)(G.Z,{className:"mt-6",children:[(0,c.jsx)(k.Z,{children:"Guardrail Info"}),(0,c.jsx)("div",{className:"mt-2 space-y-2",children:Object.entries(v.guardrail_info).map(e=>{let[s,t]=e;return(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(k.Z,{className:"font-medium w-1/3",children:s}),(0,c.jsx)(k.Z,{className:"w-2/3",children:"object"==typeof t?JSON.stringify(t,null,2):String(t)})]},s)})})]})]}),f&&(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Guardrail Settings"}),!E&&(0,c.jsx)(b.Z,{onClick:()=>M(!0),children:"Edit Settings"})]}),E?(0,c.jsxs)(A.Z,{form:O,onFinish:W,initialValues:{guardrail_name:v.guardrail_name,...v.litellm_params,guardrail_info:v.guardrail_info?JSON.stringify(v.guardrail_info,null,2):"",...(null===(i=v.litellm_params)||void 0===i?void 0:i.optional_params)&&{optional_params:v.litellm_params.optional_params}},layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"Guardrail Name",name:"guardrail_name",rules:[{required:!0,message:"Please input a guardrail name"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Default On",name:"default_on",children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:!0,children:"Yes"}),(0,c.jsx)(I.default.Option,{value:!1,children:"No"})]})}),(null===(n=v.litellm_params)||void 0===n?void 0:n.guardrail)==="presidio"&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(K.Z,{orientation:"left",children:"PII Protection"}),(0,c.jsx)("div",{className:"mb-6",children:U&&(0,c.jsx)(nt,{entities:U.supported_entities,actions:U.supported_actions,selectedEntities:D,selectedActions:R,onEntitySelect:e=>{F(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},onActionSelect:(e,s)=>{z(t=>({...t,[e]:s}))},entityCategories:U.pii_entity_categories})})]}),(0,c.jsx)(K.Z,{orientation:"left",children:"Provider Settings"}),(0,c.jsx)(nl,{selectedProvider:Object.keys(iH).find(e=>{var s;return iH[e]===(null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)})||null,accessToken:g,providerParams:Z,value:v.litellm_params}),Z&&(()=>{var e;let s=Object.keys(iH).find(e=>{var s;return iH[e]===(null===(s=v.litellm_params)||void 0===s?void 0:s.guardrail)});if(!s)return null;let t=Z[null===(e=iH[s])||void 0===e?void 0:e.toLowerCase()];return t&&t.optional_params?(0,c.jsx)(ni,{optionalParams:t.optional_params,parentFieldKey:"optional_params",values:v.litellm_params}):null})(),(0,c.jsx)(K.Z,{orientation:"left",children:"Advanced Settings"}),(0,c.jsx)(A.Z.Item,{label:"Guardrail Information",name:"guardrail_info",children:(0,c.jsx)(P.default.TextArea,{rows:5})}),(0,c.jsxs)("div",{className:"flex justify-end gap-2 mt-6",children:[(0,c.jsx)(L.ZP,{onClick:()=>M(!1),children:"Cancel"}),(0,c.jsx)(b.Z,{children:"Save Changes"})]})]}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Guardrail ID"}),(0,c.jsx)("div",{className:"font-mono",children:v.guardrail_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Guardrail Name"}),(0,c.jsx)("div",{children:v.guardrail_name||"Unnamed Guardrail"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Provider"}),(0,c.jsx)("div",{children:X})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Mode"}),(0,c.jsx)("div",{children:(null===(o=v.litellm_params)||void 0===o?void 0:o.mode)||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Default On"}),(0,c.jsx)(se.Z,{color:(null===(m=v.litellm_params)||void 0===m?void 0:m.default_on)?"green":"gray",children:(null===(u=v.litellm_params)||void 0===u?void 0:u.default_on)?"Yes":"No"})]}),(null===(x=v.litellm_params)||void 0===x?void 0:x.pii_entities_config)&&Object.keys(v.litellm_params.pii_entities_config).length>0&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"PII Protection"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsxs)(se.Z,{color:"blue",children:[Object.keys(v.litellm_params.pii_entities_config).length," PII entities configured"]})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:$(v.created_at)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)("div",{children:$(v.updated_at)})]})]})]})})]})]})]})},ny=e=>{let{accessToken:s,userRole:t}=e,[l,a]=(0,d.useState)([]),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(!1),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),f=!!t&&(0,eI.tY)(t),v=async()=>{if(s){o(!0);try{let e=await (0,j.getGuardrailsList)(s);console.log("guardrails: ".concat(JSON.stringify(e))),a(e.guardrails)}catch(e){console.error("Error fetching guardrails:",e)}finally{o(!1)}}};(0,d.useEffect)(()=>{v()},[s]);let y=async()=>{if(x&&s){u(!0);try{await (0,j.deleteGuardrailCall)(s,x.id),eo.Z.success('Guardrail "'.concat(x.name,'" deleted successfully')),v()}catch(e){console.error("Error deleting guardrail:",e),eo.Z.fromBackend("Failed to delete guardrail")}finally{u(!1),h(null)}}};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(b.Z,{onClick:()=>{p&&g(null),i(!0)},disabled:!s,children:"+ Add New Guardrail"})}),p?(0,c.jsx)(nv,{guardrailId:p,onClose:()=>g(null),accessToken:s,isAdmin:f}):(0,c.jsx)(nf,{guardrailsList:l,isLoading:n,onDeleteClick:(e,s)=>{h({id:e,name:s})},accessToken:s,onGuardrailUpdated:v,isAdmin:f,onGuardrailClick:e=>g(e)}),(0,c.jsx)(nx,{visible:r,onClose:()=>{i(!1)},accessToken:s,onSuccess:()=>{v()}}),x&&(0,c.jsxs)(T.Z,{title:"Delete Guardrail",open:null!==x,onOk:y,onCancel:()=>{h(null)},confirmLoading:m,okText:"Delete",okButtonProps:{danger:!0},children:[(0,c.jsxs)("p",{children:["Are you sure you want to delete guardrail: ",x.name," ?"]}),(0,c.jsx)("p",{children:"This action cannot be undone."})]})]})},nb=e=>{let{promptsList:s,isLoading:t,onPromptClick:l,onDeleteClick:a,accessToken:r,isAdmin:i}=e,[n,o]=(0,d.useState)([{id:"created_at",desc:!0}]),m=e=>e?new Date(e).toLocaleString():"-",u=[{header:"Prompt ID",accessorKey:"prompt_id",cell:e=>(0,c.jsx)(B.Z,{title:String(e.getValue()||""),children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate max-w-[200px]",onClick:()=>e.getValue()&&(null==l?void 0:l(e.getValue())),children:e.getValue()?"".concat(String(e.getValue()).slice(0,7),"..."):""})})},{header:"Created At",accessorKey:"created_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.created_at,children:(0,c.jsx)("span",{className:"text-xs",children:m(t.created_at)})})}},{header:"Updated At",accessorKey:"updated_at",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.updated_at,children:(0,c.jsx)("span",{className:"text-xs",children:m(t.updated_at)})})}},{header:"Type",accessorKey:"prompt_info.prompt_type",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.prompt_info.prompt_type,children:(0,c.jsx)("span",{className:"text-xs",children:t.prompt_info.prompt_type})})}},...i?[{header:"Actions",id:"actions",enableSorting:!1,cell:e=>{let{row:s}=e,t=s.original,l=t.prompt_id||"Unknown Prompt";return(0,c.jsx)("div",{className:"flex items-center gap-1",children:(0,c.jsx)(B.Z,{title:"Delete prompt",children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",color:"red",onClick:e=>{e.stopPropagation(),null==a||a(t.prompt_id,l)},icon:W.Z,className:"text-red-500 hover:text-red-700 hover:bg-red-50"})})})}}]:[]],x=(0,sM.b7)({data:s,columns:u,state:{sorting:n},onSortingChange:o,getCoreRowModel:(0,sO.sC)(),getSortedRowModel:(0,sO.tj)(),enableSorting:!0});return(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sU.Z,{children:x.getHeaderGroups().map(e=>(0,c.jsx)(sV.Z,{children:e.headers.map(e=>(0,c.jsx)(sq.Z,{className:"py-1 h-8",onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())}),(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sB.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sR.Z,{children:t?(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:u.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"Loading..."})})})}):s.length>0?x.getRowModel().rows.map(e=>(0,c.jsx)(sV.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sz.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap",children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:u.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No prompts found"})})})})})]})})})},n_=e=>{var s,t,l;let{promptId:a,onClose:r,accessToken:i,isAdmin:n,onDelete:o}=e,[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null),[f,v]=(0,d.useState)(!0),[_,N]=(0,d.useState)({}),[Z,w]=(0,d.useState)(!1),[C,I]=(0,d.useState)(!1),A=async()=>{try{if(v(!0),!i)return;let e=await (0,j.getPromptInfo)(i,a);u(e.prompt_spec),h(e.raw_prompt_template),g(e)}catch(e){eo.Z.fromBackend("Failed to load prompt information"),console.error("Error fetching prompt info:",e)}finally{v(!1)}};if((0,d.useEffect)(()=>{A()},[a,i]),f)return(0,c.jsx)("div",{className:"p-4",children:"Loading..."});if(!m)return(0,c.jsx)("div",{className:"p-4",children:"Prompt not found"});let E=e=>e?new Date(e).toLocaleString():"-",P=async(e,s)=>{await eM(e)&&(N(e=>({...e,[s]:!0})),setTimeout(()=>{N(e=>({...e,[s]:!1}))},2e3))},M=async()=>{if(i&&m){I(!0);try{await (0,j.deletePromptCall)(i,m.prompt_id),eo.Z.success('Prompt "'.concat(m.prompt_id,'" deleted successfully')),null==o||o(),r()}catch(e){console.error("Error deleting prompt:",e),eo.Z.fromBackend("Failed to delete prompt")}finally{I(!1),w(!1)}}};return(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",onClick:r,className:"mb-4",children:"Back to Prompts"}),(0,c.jsxs)("div",{className:"flex justify-between items-start mb-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{children:"Prompt Details"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:m.prompt_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["prompt-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>P(m.prompt_id,"prompt-id"),className:"left-2 z-10 transition-all duration-200 ".concat(_["prompt-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),n&&(0,c.jsx)(b.Z,{icon:W.Z,variant:"secondary",onClick:()=>{w(!0)},className:"flex items-center",children:"Delete Prompt"})]})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),x?(0,c.jsx)(ss.Z,{children:"Prompt Template"},"prompt-template"):(0,c.jsx)(c.Fragment,{}),n?(0,c.jsx)(ss.Z,{children:"Details"},"details"):(0,c.jsx)(c.Fragment,{}),(0,c.jsx)(ss.Z,{children:"Raw JSON"},"raw-json")]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Prompt ID"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{className:"font-mono text-sm",children:m.prompt_id})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Prompt Type"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:(null===(s=m.prompt_info)||void 0===s?void 0:s.prompt_type)||"-"}),(0,c.jsx)(se.Z,{color:"blue",className:"mt-1",children:(null===(t=m.prompt_info)||void 0===t?void 0:t.prompt_type)||"Unknown"})]})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Created At"}),(0,c.jsxs)("div",{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:E(m.created_at)}),(0,c.jsxs)(k.Z,{children:["Last Updated: ",E(m.updated_at)]})]})]})]}),m.litellm_params&&Object.keys(m.litellm_params).length>0&&(0,c.jsxs)(G.Z,{className:"mt-6",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"LiteLLM Parameters"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(m.litellm_params,null,2)})})]})]}),x&&(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Prompt Template"}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["prompt-content"]?(0,c.jsx)(s_.Z,{size:16}):(0,c.jsx)(sN.Z,{size:16}),onClick:()=>P(x.content,"prompt-content"),className:"transition-all duration-200 ".concat(_["prompt-content"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100"),children:_["prompt-content"]?"Copied!":"Copy Content"})]}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Template ID"}),(0,c.jsx)("div",{className:"font-mono text-sm bg-gray-50 p-2 rounded",children:x.litellm_prompt_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Content"}),(0,c.jsx)("div",{className:"mt-2 p-4 bg-gray-50 rounded-md border overflow-auto max-h-96",children:(0,c.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:x.content})})]}),x.metadata&&Object.keys(x.metadata).length>0&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Template Metadata"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap overflow-auto max-h-64",children:JSON.stringify(x.metadata,null,2)})})]})]})]})}),n&&(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(S.Z,{className:"mb-4",children:"Prompt Details"}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompt ID"}),(0,c.jsx)("div",{className:"font-mono text-sm bg-gray-50 p-2 rounded",children:m.prompt_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompt Type"}),(0,c.jsx)("div",{children:(null===(l=m.prompt_info)||void 0===l?void 0:l.prompt_type)||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created At"}),(0,c.jsx)("div",{children:E(m.created_at)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)("div",{children:E(m.updated_at)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"LiteLLM Parameters"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap overflow-auto max-h-96",children:JSON.stringify(m.litellm_params,null,2)})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Prompt Info"}),(0,c.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(m.prompt_info,null,2)})})]})]})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Raw API Response"}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["raw-json"]?(0,c.jsx)(s_.Z,{size:16}):(0,c.jsx)(sN.Z,{size:16}),onClick:()=>P(JSON.stringify(p,null,2),"raw-json"),className:"transition-all duration-200 ".concat(_["raw-json"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100"),children:_["raw-json"]?"Copied!":"Copy JSON"})]}),(0,c.jsx)("div",{className:"p-4 bg-gray-50 rounded-md border overflow-auto",children:(0,c.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(p,null,2)})})]})})]})]}),(0,c.jsxs)(T.Z,{title:"Delete Prompt",open:Z,onOk:M,onCancel:()=>{w(!1)},confirmLoading:C,okText:"Delete",okButtonProps:{danger:!0},children:[(0,c.jsxs)("p",{children:["Are you sure you want to delete prompt: ",(0,c.jsx)("strong",{children:null==m?void 0:m.prompt_id}),"?"]}),(0,c.jsx)("p",{children:"This action cannot be undone."})]})]})};let{Option:nN}=I.default;var nZ=e=>{let{visible:s,onClose:t,accessToken:l,onSuccess:a}=e,[r]=A.Z.useForm(),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)("dotprompt"),h=()=>{r.resetFields(),m([]),x("dotprompt"),t()},p=async()=>{try{let e=await r.validateFields();if(console.log("values: ",e),!l){eo.Z.fromBackend("Access token is required");return}if("dotprompt"===u&&0===o.length){eo.Z.fromBackend("Please upload a .prompt file");return}n(!0);let s={};if("dotprompt"===u&&o.length>0){let t=o[0].originFileObj;try{let a=await (0,j.convertPromptFileToJson)(l,t);console.log("Conversion result:",a),s={prompt_id:e.prompt_id,litellm_params:{prompt_integration:"dotprompt",prompt_id:a.prompt_id,prompt_data:a.json_data},prompt_info:{prompt_type:"db"}}}catch(e){console.error("Error converting prompt file:",e),eo.Z.fromBackend("Failed to convert prompt file to JSON"),n(!1);return}}try{await (0,j.createPromptCall)(l,s),eo.Z.success("Prompt created successfully!"),h(),a()}catch(e){console.error("Error creating prompt:",e),eo.Z.fromBackend("Failed to create prompt")}}catch(e){console.error("Form validation error:",e)}finally{n(!1)}};return(0,c.jsx)(T.Z,{title:"Add New Prompt",open:s,onCancel:h,footer:[(0,c.jsx)(L.ZP,{onClick:h,children:"Cancel"},"cancel"),(0,c.jsx)(L.ZP,{loading:i,onClick:p,children:"Create Prompt"},"submit")],width:600,children:(0,c.jsxs)(A.Z,{form:r,layout:"vertical",requiredMark:!1,children:[(0,c.jsx)(A.Z.Item,{label:"Prompt ID",name:"prompt_id",rules:[{required:!0,message:"Please enter a prompt ID"},{pattern:/^[a-zA-Z0-9_-]+$/,message:"Prompt ID can only contain letters, numbers, underscores, and hyphens"}],children:(0,c.jsx)(eW.o,{placeholder:"Enter unique prompt ID (e.g., my_prompt_id)"})}),(0,c.jsx)(A.Z.Item,{label:"Prompt Integration",name:"prompt_integration",initialValue:"dotprompt",children:(0,c.jsx)(I.default,{value:u,onChange:x,children:(0,c.jsx)(nN,{value:"dotprompt",children:"dotprompt"})})}),"dotprompt"===u&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(K.Z,{}),(0,c.jsxs)(A.Z.Item,{label:"Prompt File",extra:"Upload a .prompt file that follows the Dotprompt specification",children:[(0,c.jsx)(ed.default,{beforeUpload:e=>(e.name.endsWith(".prompt")||eo.Z.fromBackend("Please upload a .prompt file"),!1),fileList:o,onChange:e=>{let{fileList:s}=e;m(s.slice(-1))},onRemove:()=>{m([])},children:(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(ej.Z,{}),children:"Select .prompt File"})}),o.length>0&&(0,c.jsxs)("div",{className:"mt-2 text-sm text-gray-600",children:["Selected: ",o[0].name]})]})]})]})})},nw=e=>{let{accessToken:s,userRole:t}=e,[l,a]=(0,d.useState)([]),[r,i]=(0,d.useState)(!1),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)(null),f=!!t&&(0,eI.tY)(t),v=async()=>{if(s){i(!0);try{let e=await (0,j.getPromptsList)(s);console.log("prompts: ".concat(JSON.stringify(e))),a(e.prompts)}catch(e){console.error("Error fetching prompts:",e)}finally{i(!1)}}};(0,d.useEffect)(()=>{v()},[s]);let y=async()=>{if(p&&s){h(!0);try{await (0,j.deletePromptCall)(s,p.id),eo.Z.success('Prompt "'.concat(p.name,'" deleted successfully')),v()}catch(e){console.error("Error deleting prompt:",e),eo.Z.fromBackend("Failed to delete prompt")}finally{h(!1),g(null)}}};return(0,c.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[n?(0,c.jsx)(n_,{promptId:n,onClose:()=>o(null),accessToken:s,isAdmin:f,onDelete:v}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(b.Z,{onClick:()=>{n&&o(null),u(!0)},disabled:!s,children:"+ Add New Prompt"})}),(0,c.jsx)(nb,{promptsList:l,isLoading:r,onPromptClick:e=>{o(e)},onDeleteClick:(e,s)=>{g({id:e,name:s})},accessToken:s,isAdmin:f})]}),(0,c.jsx)(nZ,{visible:m,onClose:()=>{u(!1)},accessToken:s,onSuccess:()=>{v()}}),p&&(0,c.jsxs)(T.Z,{title:"Delete Prompt",open:null!==p,onOk:y,onCancel:()=>{g(null)},confirmLoading:x,okText:"Delete",okButtonProps:{danger:!0},children:[(0,c.jsxs)("p",{children:["Are you sure you want to delete prompt: ",p.name," ?"]}),(0,c.jsx)("p",{children:"This action cannot be undone."})]})]})},nk=e=>{let{accessToken:s}=e,[t,l]=(0,d.useState)('{\n "model": "openai/gpt-4o",\n "messages": [\n {\n "role": "system",\n "content": "You are a helpful assistant."\n },\n {\n "role": "user",\n "content": "Explain quantum computing in simple terms"\n }\n ],\n "temperature": 0.7,\n "max_tokens": 500,\n "stream": true\n}'),[a,r]=(0,d.useState)(""),[i,n]=(0,d.useState)(!1),o=(e,s,t)=>{let l=JSON.stringify(s,null,2).split("\n").map(e=>" ".concat(e)).join("\n"),a=Object.entries(t).map(e=>{let[s,t]=e;return"-H '".concat(s,": ").concat(t,"'")}).join(" \\\n ");return"curl -X POST \\\n ".concat(e," \\\n ").concat(a?"".concat(a," \\\n "):"","-H 'Content-Type: application/json' \\\n -d '{\n").concat(l,"\n }'")},m=async()=>{n(!0);try{let e;try{e=JSON.parse(t)}catch(e){eo.Z.fromBackend("Invalid JSON in request body"),n(!1);return}let l={call_type:"completion",request_body:e};if(!s){eo.Z.fromBackend("No access token found"),n(!1);return}let a=await (0,j.transformRequestCall)(s,l);if(a.raw_request_api_base&&a.raw_request_body){let e=o(a.raw_request_api_base,a.raw_request_body,a.raw_request_headers||{});r(e),eo.Z.success("Request transformed successfully")}else{let e="string"==typeof a?a:JSON.stringify(a);r(e),eo.Z.info("Transformed request received in unexpected format")}}catch(e){console.error("Error transforming request:",e),eo.Z.fromBackend("Failed to transform request")}finally{n(!1)}};return(0,c.jsxs)("div",{className:"w-full m-2",style:{overflow:"hidden"},children:[(0,c.jsx)(S.Z,{children:"Playground"}),(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"See how LiteLLM transforms your request for the specified provider."}),(0,c.jsxs)("div",{style:{display:"flex",gap:"16px",width:"100%",minWidth:0,overflow:"hidden"},className:"mt-4",children:[(0,c.jsxs)("div",{style:{flex:"1 1 50%",display:"flex",flexDirection:"column",border:"1px solid #e8e8e8",borderRadius:"8px",padding:"24px",overflow:"hidden",maxHeight:"600px",minWidth:0},children:[(0,c.jsxs)("div",{style:{marginBottom:"24px"},children:[(0,c.jsx)("h2",{style:{fontSize:"24px",fontWeight:"bold",margin:"0 0 4px 0"},children:"Original Request"}),(0,c.jsx)("p",{style:{color:"#666",margin:0},children:"The request you would send to LiteLLM /chat/completions endpoint."})]}),(0,c.jsx)("textarea",{style:{flex:"1 1 auto",width:"100%",minHeight:"240px",padding:"16px",border:"1px solid #e8e8e8",borderRadius:"6px",fontFamily:"monospace",fontSize:"14px",resize:"none",marginBottom:"24px",overflow:"auto"},value:t,onChange:e=>l(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&"Enter"===e.key&&(e.preventDefault(),m())},placeholder:"Press Cmd/Ctrl + Enter to transform"}),(0,c.jsx)("div",{style:{display:"flex",justifyContent:"flex-end",marginTop:"auto"},children:(0,c.jsxs)(L.ZP,{type:"primary",style:{backgroundColor:"#000",display:"flex",alignItems:"center",gap:"8px"},onClick:m,loading:i,children:[(0,c.jsx)("span",{children:"Transform"}),(0,c.jsx)("span",{children:"→"})]})})]}),(0,c.jsxs)("div",{style:{flex:"1 1 50%",display:"flex",flexDirection:"column",border:"1px solid #e8e8e8",borderRadius:"8px",padding:"24px",overflow:"hidden",maxHeight:"800px",minWidth:0},children:[(0,c.jsxs)("div",{style:{marginBottom:"24px"},children:[(0,c.jsx)("h2",{style:{fontSize:"24px",fontWeight:"bold",margin:"0 0 4px 0"},children:"Transformed Request"}),(0,c.jsx)("p",{style:{color:"#666",margin:0},children:"How LiteLLM transforms your request for the specified provider."}),(0,c.jsx)("br",{}),(0,c.jsx)("p",{style:{color:"#666",margin:0},className:"text-xs",children:"Note: Sensitive headers are not shown."})]}),(0,c.jsxs)("div",{style:{position:"relative",backgroundColor:"#f5f5f5",borderRadius:"6px",flex:"1 1 auto",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,c.jsx)("pre",{style:{padding:"16px",fontFamily:"monospace",fontSize:"14px",margin:0,overflow:"auto",flex:"1 1 auto"},children:a||'curl -X POST \\\n https://api.openai.com/v1/chat/completions \\\n -H \'Authorization: Bearer sk-xxx\' \\\n -H \'Content-Type: application/json\' \\\n -d \'{\n "model": "gpt-4",\n "messages": [\n {\n "role": "system",\n "content": "You are a helpful assistant."\n }\n ],\n "temperature": 0.7\n }\''}),(0,c.jsx)(L.ZP,{type:"text",icon:(0,c.jsx)(tJ.Z,{}),style:{position:"absolute",right:"8px",top:"8px"},size:"small",onClick:()=>{navigator.clipboard.writeText(a||""),eo.Z.success("Copied to clipboard")}})]})]})]}),(0,c.jsx)("div",{className:"mt-4 text-right w-full",children:(0,c.jsxs)("p",{className:"text-sm text-gray-500",children:["Found an error? File an issue"," ",(0,c.jsx)("a",{href:"https://github.com/BerriAI/litellm/issues",target:"_blank",rel:"noopener noreferrer",children:"here"}),"."]})})]})};let nS=e=>{try{let s=e.indexOf("/mcp/");if(-1===s)return{token:null,baseUrl:e};let t=e.split("/mcp/");if(2!==t.length)return{token:null,baseUrl:e};let l=t[0]+"/mcp/",a=t[1];if(!a)return{token:null,baseUrl:e};return{token:a,baseUrl:l}}catch(s){return console.error("Error parsing MCP URL:",s),{token:null,baseUrl:e}}},nC=e=>{let{token:s,baseUrl:t}=nS(e);return s?t+"...":e},nI=e=>{let{token:s}=nS(e);return{maskedUrl:nC(e),hasToken:!!s}},nA=e=>e?/^https?:\/\/[^\s/$.?#].[^\s]*$/i.test(e)?Promise.resolve():Promise.reject("Please enter a valid URL (e.g., http://service-name.domain:1234/path or https://example.com)"):Promise.resolve(),nT=e=>e&&e.includes("-")?Promise.reject("Server name cannot contain '-' (hyphen). Please use '_' (underscore) instead."):Promise.resolve(),nE=(e,s,t,l)=>[{accessorKey:"server_id",header:"Server ID",cell:e=>{let{row:t}=e;return(0,c.jsxs)("button",{onClick:()=>s(t.original.server_id),className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",children:[t.original.server_id.slice(0,7),"..."]})}},{accessorKey:"server_name",header:"Name"},{accessorKey:"alias",header:"Alias"},{id:"url",header:"URL",cell:e=>{let{row:s}=e,{maskedUrl:t}=nI(s.original.url);return(0,c.jsx)("span",{className:"font-mono text-sm",children:t})}},{accessorKey:"transport",header:"Transport",cell:e=>{let{getValue:s}=e;return(0,c.jsx)("span",{children:(s()||"http").toUpperCase()})}},{accessorKey:"auth_type",header:"Auth Type",cell:e=>{let{getValue:s}=e;return(0,c.jsx)("span",{children:s()||"none"})}},{id:"health_status",header:"Health Status",cell:e=>{let{row:s}=e,t=s.original,l=t.status||"unknown",a=t.last_health_check,r=t.health_check_error,i=(0,c.jsxs)("div",{className:"max-w-xs",children:[(0,c.jsxs)("div",{className:"font-semibold mb-1",children:["Health Status: ",l]}),a&&(0,c.jsxs)("div",{className:"text-xs mb-1",children:["Last Check: ",new Date(a).toLocaleString()]}),r&&(0,c.jsxs)("div",{className:"text-xs",children:[(0,c.jsx)("div",{className:"font-medium text-red-400 mb-1",children:"Error:"}),(0,c.jsx)("div",{className:"break-words",children:r})]}),!a&&!r&&(0,c.jsx)("div",{className:"text-xs text-gray-400",children:"No health check data available"})]});return(0,c.jsx)(B.Z,{title:i,placement:"top",children:(0,c.jsxs)("button",{className:"font-mono text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[10ch] ".concat((e=>{switch(e){case"healthy":return"text-green-500 bg-green-50 hover:bg-green-100";case"unhealthy":return"text-red-500 bg-red-50 hover:bg-red-100";default:return"text-gray-500 bg-gray-50 hover:bg-gray-100"}})(l)),children:[(0,c.jsx)("span",{className:"mr-1",children:"●"}),l.charAt(0).toUpperCase()+l.slice(1)]})})}},{id:"mcp_access_groups",header:"Access Groups",cell:e=>{let{row:s}=e,t=s.original.mcp_access_groups;if(Array.isArray(t)&&t.length>0&&"string"==typeof t[0]){let e=t.join(", ");return(0,c.jsx)(B.Z,{title:e,children:(0,c.jsx)("span",{className:"max-w-[200px] truncate block",children:e.length>30?"".concat(e.slice(0,30),"..."):e})})}return(0,c.jsx)("span",{className:"text-gray-400 italic",children:"None"})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.created_at?new Date(t.created_at).toLocaleDateString():"-"})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:t.updated_at?new Date(t.updated_at).toLocaleDateString():"-"})}},{id:"actions",header:"Actions",cell:e=>{let{row:s}=e;return(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>t(s.original.server_id),className:"cursor-pointer"}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>l(s.original.server_id),className:"cursor-pointer"})]})}}];var nL=t(82376),nP=t(71437);let nM={NONE:"none",API_KEY:"api_key",BEARER_TOKEN:"bearer_token",BASIC:"basic"},nO={SSE:"sse"},nD=e=>(console.log(e),null==e)?nO.SSE:e,nF=e=>null==e?nM.NONE:e,nR=e=>nF(e)!==nM.NONE;var nz=t(62670),nU=e=>{let{value:s={},onChange:t,tools:l=[],disabled:a=!1}=e,r=(e,l)=>{let a={...s,tool_name_to_cost_per_query:{...s.tool_name_to_cost_per_query,[e]:l}};null==t||t(a)};return(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,c.jsx)(nz.Z,{className:"text-green-600"}),(0,c.jsx)(S.Z,{children:"Cost Configuration"}),(0,c.jsx)(B.Z,{title:"Configure costs for this MCP server's tool calls. Set a default rate and per-tool overrides.",children:(0,c.jsx)(V.Z,{className:"text-gray-400"})})]}),(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsxs)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:["Default Cost per Query ($)",(0,c.jsx)(B.Z,{title:"Default cost charged for each tool call to this server.",children:(0,c.jsx)(V.Z,{className:"ml-1 text-gray-400"})})]}),(0,c.jsx)(e8.Z,{min:0,step:1e-4,precision:4,placeholder:"0.0000",value:s.default_cost_per_query,onChange:e=>{let l={...s,default_cost_per_query:e};null==t||t(l)},disabled:a,style:{width:"200px"},addonBefore:"$"}),(0,c.jsx)(k.Z,{className:"block mt-1 text-gray-500 text-sm",children:"Set a default cost for all tool calls to this server"})]}),l.length>0&&(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("label",{className:"block text-sm font-medium text-gray-700",children:["Tool-Specific Costs ($)",(0,c.jsx)(B.Z,{title:"Override the default cost for specific tools. Leave blank to use the default rate.",children:(0,c.jsx)(V.Z,{className:"ml-1 text-gray-400"})})]}),(0,c.jsx)(tE.default,{items:[{key:"1",label:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(rM.Z,{className:"mr-2 text-blue-500"}),(0,c.jsx)("span",{className:"font-medium",children:"Available Tools"}),(0,c.jsx)(iX.Z,{count:l.length,style:{backgroundColor:"#52c41a",marginLeft:"8px"}})]}),children:(0,c.jsx)("div",{className:"space-y-3 max-h-64 overflow-y-auto",children:l.map((e,t)=>{var l;return(0,c.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 rounded-lg",children:[(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900",children:e.name}),e.description&&(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm block mt-1",children:e.description})]}),(0,c.jsx)("div",{className:"ml-4",children:(0,c.jsx)(e8.Z,{min:0,step:1e-4,precision:4,placeholder:"Use default",value:null===(l=s.tool_name_to_cost_per_query)||void 0===l?void 0:l[e.name],onChange:s=>r(e.name,s),disabled:a,style:{width:"120px"},addonBefore:"$"})})]},t)})})}]})]})]}),(s.default_cost_per_query||s.tool_name_to_cost_per_query&&Object.keys(s.tool_name_to_cost_per_query).length>0)&&(0,c.jsxs)("div",{className:"mt-6 p-4 bg-blue-50 border border-blue-200 rounded-lg",children:[(0,c.jsx)(k.Z,{className:"text-blue-800 font-medium",children:"Cost Summary:"}),(0,c.jsxs)("div",{className:"mt-2 space-y-1",children:[s.default_cost_per_query&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• Default cost: $",s.default_cost_per_query.toFixed(4)," per query"]}),s.tool_name_to_cost_per_query&&Object.entries(s.tool_name_to_cost_per_query).map(e=>{let[s,t]=e;return null!=t&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• ",s,": $",t.toFixed(4)," per query"]},s)})]})]})]})})};let{Panel:nq}=tE.default;var nV=e=>{let{availableAccessGroups:s,mcpServer:t,searchValue:l,setSearchValue:a,getAccessGroupOptions:r}=e,i=A.Z.useFormInstance();return(0,d.useEffect)(()=>{t&&t.extra_headers&&i.setFieldValue("extra_headers",t.extra_headers)},[t,i]),(0,c.jsx)(tE.default,{className:"bg-gray-50 border border-gray-200 rounded-lg",expandIconPosition:"end",ghost:!1,children:(0,c.jsx)(nq,{header:(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Permission Management / Access Control"})]}),(0,c.jsx)("p",{className:"text-sm text-gray-600 ml-4",children:"Configure access permissions and security settings (Optional)"})]}),className:"border-0",children:(0,c.jsxs)("div",{className:"space-y-6 pt-4",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["MCP Access Groups",(0,c.jsx)(B.Z,{title:"Specify access groups for this MCP server. Users must be in at least one of these groups to access the server.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"mcp_access_groups",className:"mb-4",children:(0,c.jsx)(I.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"value",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.value)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},onSearch:e=>a(e),tokenSeparators:[","],options:r(),maxTagCount:"responsive",allowClear:!0})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Extra Headers",(0,c.jsx)(B.Z,{title:"Forward custom headers from incoming requests to this MCP server (e.g., Authorization, X-Custom-Header, User-Agent)",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})}),(null==t?void 0:t.extra_headers)&&t.extra_headers.length>0&&(0,c.jsxs)("span",{className:"ml-2 text-xs bg-blue-100 text-blue-700 px-2 py-1 rounded-full",children:[t.extra_headers.length," configured"]})]}),name:"extra_headers",children:(0,c.jsx)(I.default,{mode:"tags",placeholder:(null==t?void 0:t.extra_headers)&&t.extra_headers.length>0?"Currently: ".concat(t.extra_headers.join(", ")):"Enter header names (e.g., Authorization, X-Custom-Header)",className:"rounded-lg",size:"large",tokenSeparators:[","],allowClear:!0})})]})},"permissions")})},nB=t(83669);let nK=e=>{let{accessToken:s,formValues:t,enabled:l=!0}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,c]=(0,d.useState)(null),[m,u]=(0,d.useState)(!1),x=!!(t.url&&t.transport&&t.auth_type&&s),h=async()=>{if(s&&t.url){n(!0),c(null);try{let e={server_id:t.server_id||"",server_name:t.server_name||"",url:t.url,transport:t.transport,auth_type:t.auth_type,mcp_info:t.mcp_info},l=await (0,j.testMCPToolsListRequest)(s,e);if(l.tools&&!l.error)r(l.tools),c(null),l.tools.length>0&&!m&&u(!0);else{let e=l.message||"Failed to retrieve tools list";c(e),r([]),u(!1)}}catch(e){console.error("Tools fetch error:",e),c(e instanceof Error?e.message:String(e)),r([]),u(!1)}finally{n(!1)}}},p=()=>{r([]),c(null),u(!1)};return(0,d.useEffect)(()=>{l&&(x?h():p())},[t.url,t.transport,t.auth_type,s,l,x]),{tools:a,isLoadingTools:i,toolsError:o,hasShownSuccessMessage:m,canFetchTools:x,fetchTools:h,clearTools:p}};var nG=e=>{let{accessToken:s,formValues:t,allowedTools:l,existingAllowedTools:a,onAllowedToolsChange:r}=e,i=(0,d.useRef)(0),{tools:n,isLoadingTools:o,toolsError:m,canFetchTools:u}=nK({accessToken:s,formValues:t,enabled:!0});(0,d.useEffect)(()=>{if(n.length>0&&n.length!==i.current&&0===l.length){if(a&&a.length>0){let e=n.map(e=>e.name);r(a.filter(s=>e.includes(s)))}else r(n.map(e=>e.name))}i.current=n.length},[n,l.length,a,r]);let x=e=>{l.includes(e)?r(l.filter(s=>s!==e)):r([...l,e])};return u||t.url?(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsx)("div",{className:"flex items-center justify-between",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(rM.Z,{className:"text-blue-600"}),(0,c.jsx)(S.Z,{children:"Tool Configuration"}),n.length>0&&(0,c.jsx)(iX.Z,{count:n.length,style:{backgroundColor:"#52c41a"}})]})}),(0,c.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-3",children:(0,c.jsxs)(k.Z,{className:"text-blue-800 text-sm",children:[(0,c.jsx)("strong",{children:"Select which tools users can call:"})," Only checked tools will be available for users to invoke. Unchecked tools will be blocked from execution."]})}),o&&(0,c.jsxs)("div",{className:"flex items-center justify-center py-6",children:[(0,c.jsx)(eF.Z,{size:"large"}),(0,c.jsx)(k.Z,{className:"ml-3",children:"Loading tools..."})]}),m&&!o&&(0,c.jsxs)("div",{className:"text-center py-6 text-red-500 border rounded-lg border-dashed border-red-300 bg-red-50",children:[(0,c.jsx)(rM.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:"Unable to load tools"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm text-red-500",children:m})]}),!o&&!m&&0===n.length&&u&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,c.jsx)(rM.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{children:"No tools available for configuration"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm",children:"Connect to an MCP server with tools to configure them"})]}),!u&&t.url&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,c.jsx)(rM.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{children:"Complete required fields to configure tools"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm",children:"Fill in URL, Transport, and Authentication to load available tools"})]}),!o&&!m&&n.length>0&&(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-green-50 rounded-lg border border-green-200 flex-1",children:[(0,c.jsx)(nB.Z,{className:"text-green-600"}),(0,c.jsxs)(k.Z,{className:"text-green-700 font-medium",children:[l.length," of ",n.length," ",1===n.length?"tool":"tools"," enabled for user access"]})]}),(0,c.jsxs)("div",{className:"flex gap-2 ml-3",children:[(0,c.jsx)("button",{type:"button",onClick:()=>{r(n.map(e=>e.name))},className:"px-3 py-1.5 text-sm text-blue-600 hover:text-blue-700 hover:bg-blue-50 rounded-md transition-colors",children:"Enable All"}),(0,c.jsx)("button",{type:"button",onClick:()=>{r([])},className:"px-3 py-1.5 text-sm text-gray-600 hover:text-gray-700 hover:bg-gray-100 rounded-md transition-colors",children:"Disable All"})]})]}),(0,c.jsx)("div",{className:"space-y-2",children:n.map((e,s)=>(0,c.jsx)("div",{className:"p-4 rounded-lg border transition-colors cursor-pointer ".concat(l.includes(e.name)?"bg-blue-50 border-blue-300 hover:border-blue-400":"bg-gray-50 border-gray-200 hover:border-gray-300"),onClick:()=>x(e.name),children:(0,c.jsxs)("div",{className:"flex items-start gap-3",children:[(0,c.jsx)(eR.Z,{checked:l.includes(e.name),onChange:()=>x(e.name)}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"font-medium text-gray-900",children:e.name}),(0,c.jsx)("span",{className:"px-2 py-0.5 text-xs rounded-full font-medium ".concat(l.includes(e.name)?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:l.includes(e.name)?"Enabled":"Disabled"})]}),e.description&&(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm block mt-1",children:e.description}),(0,c.jsx)(k.Z,{className:"text-gray-400 text-xs block mt-1",children:l.includes(e.name)?"✓ Users can call this tool":"✗ Users cannot call this tool"})]})]})},s))})]})]})}):null},nH=e=>{let{mcpServer:s,accessToken:t,onCancel:l,onSuccess:a,availableAccessGroups:r}=e,[i]=A.Z.useForm(),[n,o]=(0,d.useState)({}),[m,u]=(0,d.useState)([]),[x,h]=(0,d.useState)(!1),[p,g]=(0,d.useState)(""),[f,v]=(0,d.useState)(!1),[y,N]=(0,d.useState)([]);(0,d.useEffect)(()=>{var e;(null===(e=s.mcp_info)||void 0===e?void 0:e.mcp_server_cost_info)&&o(s.mcp_info.mcp_server_cost_info)},[s]),(0,d.useEffect)(()=>{s.allowed_tools&&N(s.allowed_tools)},[s]),(0,d.useEffect)(()=>{if(s.mcp_access_groups){let e=s.mcp_access_groups.map(e=>"string"==typeof e?e:e.name||String(e));i.setFieldValue("mcp_access_groups",e)}},[s]),(0,d.useEffect)(()=>{Z()},[s,t]);let Z=async()=>{if(t&&s.url){h(!0);try{let e={server_id:s.server_id,server_name:s.server_name,url:s.url,transport:s.transport,auth_type:s.auth_type,mcp_info:s.mcp_info},l=await (0,j.testMCPToolsListRequest)(t,e);l.tools&&!l.error?u(l.tools):(console.error("Failed to fetch tools:",l.message),u([]))}catch(e){console.error("Tools fetch error:",e),u([])}finally{h(!1)}}},w=async e=>{if(t)try{let l=(e.mcp_access_groups||[]).map(e=>"string"==typeof e?e:e.name||String(e)),r={...e,server_id:s.server_id,mcp_info:{server_name:e.server_name||e.url,description:e.description,mcp_server_cost_info:Object.keys(n).length>0?n:null},mcp_access_groups:l,alias:e.alias,extra_headers:e.extra_headers||[],allowed_tools:y.length>0?y:null,disallowed_tools:e.disallowed_tools||[]},i=await (0,j.updateMCPServer)(t,r);eo.Z.success("MCP Server updated successfully"),a(i)}catch(e){eo.Z.fromBackend("Failed to update MCP Server"+((null==e?void 0:e.message)?": ".concat(e.message):""))}};return(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"grid w-full grid-cols-2",children:[(0,c.jsx)(ss.Z,{children:"Server Configuration"}),(0,c.jsx)(ss.Z,{children:"Cost Configuration"})]}),(0,c.jsxs)(sr.Z,{className:"mt-6",children:[(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(A.Z,{form:i,onFinish:w,initialValues:s,layout:"vertical",children:[(0,c.jsx)(A.Z.Item,{label:"MCP Server Name",name:"server_name",rules:[{validator:(e,s)=>nT(s)}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Alias",name:"alias",rules:[{validator:(e,s)=>nT(s)}],children:(0,c.jsx)(_.Z,{onChange:()=>v(!0)})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"description",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"MCP Server URL",name:"url",rules:[{required:!0,message:"Please enter a server URL"},{validator:(e,s)=>nA(s)}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Transport Type",name:"transport",rules:[{required:!0}],children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:"sse",children:"Server-Sent Events (SSE)"}),(0,c.jsx)(I.default.Option,{value:"http",children:"HTTP"})]})}),(0,c.jsx)(A.Z.Item,{label:"Authentication",name:"auth_type",rules:[{required:!0}],children:(0,c.jsxs)(I.default,{children:[(0,c.jsx)(I.default.Option,{value:"none",children:"None"}),(0,c.jsx)(I.default.Option,{value:"api_key",children:"API Key"}),(0,c.jsx)(I.default.Option,{value:"bearer_token",children:"Bearer Token"}),(0,c.jsx)(I.default.Option,{value:"basic",children:"Basic Auth"})]})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nV,{availableAccessGroups:r,mcpServer:s,searchValue:p,setSearchValue:g,getAccessGroupOptions:()=>{let e=r.map(e=>({value:e,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e})]})}));return p&&!r.some(e=>e.toLowerCase().includes(p.toLowerCase()))&&e.push({value:p,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:p}),(0,c.jsx)("span",{className:"text-gray-400 text-xs ml-1",children:"create new group"})]})}),e}})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nG,{accessToken:t,formValues:{server_id:s.server_id,server_name:s.server_name,url:s.url,transport:s.transport,auth_type:s.auth_type,mcp_info:s.mcp_info},allowedTools:y,existingAllowedTools:s.allowed_tools||null,onAllowedToolsChange:N})}),(0,c.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,c.jsx)(L.ZP,{onClick:l,children:"Cancel"}),(0,c.jsx)(b.Z,{type:"submit",children:"Save Changes"})]})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsx)(nU,{value:n,onChange:o,tools:m,disabled:x}),(0,c.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,c.jsx)(L.ZP,{onClick:l,children:"Cancel"}),(0,c.jsx)(b.Z,{onClick:()=>i.submit(),children:"Save Changes"})]})]})})]})]})},nY=e=>{let{costConfig:s}=e,t=(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null,l=(null==s?void 0:s.tool_name_to_cost_per_query)&&Object.keys(s.tool_name_to_cost_per_query).length>0;return t||l?(0,c.jsx)("div",{className:"mt-6 pt-6 border-t border-gray-200",children:(0,c.jsxs)("div",{className:"space-y-4",children:[t&&(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Default Cost per Query"}),(0,c.jsxs)("div",{className:"text-green-600 font-mono",children:["$",s.default_cost_per_query.toFixed(4)]})]}),l&&(null==s?void 0:s.tool_name_to_cost_per_query)&&(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Tool-Specific Costs"}),(0,c.jsx)("div",{className:"mt-2 space-y-2",children:Object.entries(s.tool_name_to_cost_per_query).map(e=>{let[s,t]=e;return null!=t&&(0,c.jsxs)("div",{className:"flex justify-between items-center p-3 bg-gray-50 rounded-lg",children:[(0,c.jsx)(k.Z,{className:"font-medium",children:s}),(0,c.jsxs)(k.Z,{className:"text-green-600 font-mono",children:["$",t.toFixed(4)," per query"]})]},s)})})]}),(0,c.jsxs)("div",{className:"mt-4 p-4 bg-blue-50 border border-blue-200 rounded-lg",children:[(0,c.jsx)(k.Z,{className:"text-blue-800 font-medium",children:"Cost Summary:"}),(0,c.jsxs)("div",{className:"mt-2 space-y-1",children:[t&&(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• Default cost: $",s.default_cost_per_query.toFixed(4)," per query"]}),l&&(null==s?void 0:s.tool_name_to_cost_per_query)&&(0,c.jsxs)(k.Z,{className:"text-blue-700",children:["• ",Object.keys(s.tool_name_to_cost_per_query).length," tool(s) with custom pricing"]})]})]})]})}):(0,c.jsx)("div",{className:"mt-6 pt-6 border-t border-gray-200",children:(0,c.jsx)("div",{className:"space-y-4",children:(0,c.jsx)("div",{className:"p-4 bg-gray-50 border border-gray-200 rounded-lg",children:(0,c.jsx)(k.Z,{className:"text-gray-600",children:"No cost configuration set for this server. Tool calls will be charged at $0.00 per tool call."})})})})};let nJ=e=>{var s,t,l,a,r;let{mcpServer:i,onBack:n,isEditing:o,isProxyAdmin:m,accessToken:u,userRole:x,userID:h,availableAccessGroups:p}=e,[g,j]=(0,d.useState)(o),[f,v]=(0,d.useState)(!1),[_,N]=(0,d.useState)({}),{maskedUrl:Z,hasToken:w}=nI(i.url),C=(e,s)=>w?s?e:Z:e,I=async(e,s)=>{await eM(e)&&(N(e=>({...e,[s]:!0})),setTimeout(()=>{N(e=>({...e,[s]:!1}))},2e3))};return(0,c.jsxs)("div",{className:"p-4 max-w-full",children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",className:"mb-4",onClick:n,children:"Back to All Servers"}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(S.Z,{children:i.server_name}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["mcp-server_name"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>I(i.server_name,"mcp-server_name"),className:"left-2 z-10 transition-all duration-200 ".concat(_["mcp-server_name"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")}),i.alias&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{className:"ml-4 text-gray-500",children:"Alias:"}),(0,c.jsx)("span",{className:"ml-1 font-mono text-blue-600",children:i.alias}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["mcp-alias"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>I(i.alias,"mcp-alias"),className:"left-2 z-10 transition-all duration-200 ".concat(_["mcp-alias"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,c.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,c.jsx)(k.Z,{className:"text-gray-500 font-mono",children:i.server_id}),(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:_["mcp-server-id"]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>I(i.server_id,"mcp-server-id"),className:"left-2 z-10 transition-all duration-200 ".concat(_["mcp-server-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,c.jsxs)(st.Z,{defaultIndex:g?2:0,children:[(0,c.jsx)(sl.Z,{className:"mb-4",children:[(0,c.jsx)(ss.Z,{children:"Overview"},"overview"),(0,c.jsx)(ss.Z,{children:"MCP Tools"},"tools"),...m?[(0,c.jsx)(ss.Z,{children:"Settings"},"settings")]:[]]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsxs)(sa.Z,{children:[(0,c.jsxs)(y.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Transport"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(S.Z,{children:nD(null!==(a=i.transport)&&void 0!==a?a:void 0)})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Auth Type"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(k.Z,{children:nF(null!==(r=i.auth_type)&&void 0!==r?r:void 0)})})]}),(0,c.jsxs)(G.Z,{children:[(0,c.jsx)(k.Z,{children:"Host Url"}),(0,c.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,c.jsx)(k.Z,{className:"break-all overflow-wrap-anywhere",children:C(i.url,f)}),w&&(0,c.jsx)("button",{onClick:()=>v(!f),className:"p-1 hover:bg-gray-100 rounded",children:(0,c.jsx)(sD.Z,{icon:f?nL.Z:nP.Z,size:"sm",className:"text-gray-500"})})]})]})]}),(0,c.jsxs)(G.Z,{className:"mt-2",children:[(0,c.jsx)(S.Z,{children:"Cost Configuration"}),(0,c.jsx)(nY,{costConfig:null===(s=i.mcp_info)||void 0===s?void 0:s.mcp_server_cost_info})]})]}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(om,{serverId:i.server_id,accessToken:u,auth_type:i.auth_type,userRole:x,userID:h,serverAlias:i.alias})}),(0,c.jsx)(sa.Z,{children:(0,c.jsxs)(G.Z,{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"MCP Server Settings"}),g?null:(0,c.jsx)(b.Z,{variant:"light",onClick:()=>j(!0),children:"Edit Settings"})]}),g?(0,c.jsx)(nH,{mcpServer:i,accessToken:u,onCancel:()=>j(!1),onSuccess:e=>{j(!1),n()},availableAccessGroups:p}):(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Server Name"}),(0,c.jsx)("div",{children:i.server_name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Alias"}),(0,c.jsx)("div",{children:i.alias})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Description"}),(0,c.jsx)("div",{children:i.description})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"URL"}),(0,c.jsxs)("div",{className:"font-mono break-all overflow-wrap-anywhere max-w-full flex items-center gap-2",children:[C(i.url,f),w&&(0,c.jsx)("button",{onClick:()=>v(!f),className:"p-1 hover:bg-gray-100 rounded",children:(0,c.jsx)(sD.Z,{icon:f?nL.Z:nP.Z,size:"sm",className:"text-gray-500"})})]})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Transport"}),(0,c.jsx)("div",{children:nD(i.transport)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Extra Headers"}),(0,c.jsx)("div",{children:null===(t=i.extra_headers)||void 0===t?void 0:t.join(", ")})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Auth Type"}),(0,c.jsx)("div",{children:nF(i.auth_type)})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Access Groups"}),(0,c.jsx)("div",{children:i.mcp_access_groups&&i.mcp_access_groups.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:i.mcp_access_groups.map((e,s)=>{var t;return(0,c.jsx)("span",{className:"px-2 py-1 bg-gray-100 rounded-md text-sm",children:"string"==typeof e?e:null!==(t=null==e?void 0:e.name)&&void 0!==t?t:""},s)})}):(0,c.jsx)(k.Z,{className:"text-gray-500",children:"No access groups defined"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Allowed Tools"}),(0,c.jsx)("div",{children:i.allowed_tools&&i.allowed_tools.length>0?(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:i.allowed_tools.map((e,s)=>(0,c.jsx)("span",{className:"px-2 py-1 bg-blue-50 border border-blue-200 rounded-md text-sm",children:e},s))}):(0,c.jsx)(k.Z,{className:"text-gray-500",children:"All tools enabled"})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Cost Configuration"}),(0,c.jsx)(nY,{costConfig:null===(l=i.mcp_info)||void 0===l?void 0:l.mcp_server_cost_info})]})]})]})})]})]})]})};var nW=e=>{let{accessToken:s,formValues:t,onToolsLoaded:l}=e,{tools:a,isLoadingTools:r,toolsError:i,canFetchTools:n,fetchTools:o}=nK({accessToken:s,formValues:t,enabled:!0});return((0,d.useEffect)(()=>{null==l||l(a)},[a,l]),n||t.url)?(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(nB.Z,{className:"text-blue-600"}),(0,c.jsx)(S.Z,{children:"Connection Status"})]}),!n&&t.url&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,c.jsx)(rM.Z,{className:"text-2xl mb-2"}),(0,c.jsx)(k.Z,{children:"Complete required fields to test connection"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-sm",children:"Fill in URL, Transport, and Authentication to test MCP server connection"})]}),n&&(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-gray-700 font-medium",children:r?"Testing connection to MCP server...":a.length>0?"Connection successful":i?"Connection failed":"Ready to test connection"}),(0,c.jsx)("br",{}),(0,c.jsxs)(k.Z,{className:"text-gray-500 text-sm",children:["Server: ",t.url]})]}),r&&(0,c.jsxs)("div",{className:"flex items-center text-blue-600",children:[(0,c.jsx)(eF.Z,{size:"small",className:"mr-2"}),(0,c.jsx)(k.Z,{className:"text-blue-600",children:"Connecting..."})]}),!r&&!i&&a.length>0&&(0,c.jsxs)("div",{className:"flex items-center text-green-600",children:[(0,c.jsx)(nB.Z,{className:"mr-1"}),(0,c.jsx)(k.Z,{className:"text-green-600 font-medium",children:"Connected"})]}),i&&(0,c.jsxs)("div",{className:"flex items-center text-red-600",children:[(0,c.jsx)(l4.Z,{className:"mr-1"}),(0,c.jsx)(k.Z,{className:"text-red-600 font-medium",children:"Failed"})]})]}),r&&(0,c.jsxs)("div",{className:"flex items-center justify-center py-6",children:[(0,c.jsx)(eF.Z,{size:"large"}),(0,c.jsx)(k.Z,{className:"ml-3",children:"Testing connection and loading tools..."})]}),i&&(0,c.jsx)(lm.Z,{message:"Connection Failed",description:i,type:"error",showIcon:!0,action:(0,c.jsx)(L.ZP,{icon:(0,c.jsx)(th.Z,{}),onClick:o,size:"small",children:"Retry"})}),!r&&0===a.length&&!i&&(0,c.jsxs)("div",{className:"text-center py-6 text-gray-500 border rounded-lg border-dashed",children:[(0,c.jsx)(nB.Z,{className:"text-2xl mb-2 text-green-500"}),(0,c.jsx)(k.Z,{className:"text-green-600 font-medium",children:"Connection successful!"}),(0,c.jsx)("br",{}),(0,c.jsx)(k.Z,{className:"text-gray-500",children:"No tools found for this MCP server"})]})]})]})}):null},n$=e=>{let{isVisible:s}=e;return s?(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Stdio Configuration (JSON)",(0,c.jsx)(B.Z,{title:"Paste your stdio MCP server configuration in JSON format. You can use the full mcpServers structure from config.yaml or just the inner server configuration.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"stdio_config",rules:[{required:!0,message:"Please enter stdio configuration"},{validator:(e,s)=>{if(!s)return Promise.resolve();try{return JSON.parse(s),Promise.resolve()}catch(e){return Promise.reject("Please enter valid JSON")}}}],children:(0,c.jsx)(P.default.TextArea,{placeholder:'{\n "mcpServers": {\n "circleci-mcp-server": {\n "command": "npx",\n "args": ["-y", "@circleci/mcp-server-circleci"],\n "env": {\n "CIRCLECI_TOKEN": "your-circleci-token",\n "CIRCLECI_BASE_URL": "https://circleci.com"\n }\n }\n }\n}',rows:12,className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500 font-mono text-sm"})}):null};let nQ="".concat("../ui/assets/logos/","mcp_logo.png");var nX=e=>{let{userRole:s,accessToken:t,onCreateSuccess:l,isModalVisible:a,setModalVisible:r,availableAccessGroups:i}=e,[n]=A.Z.useForm(),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)({}),[h,p]=(0,d.useState)({}),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)([]),[N,Z]=(0,d.useState)([]),[w,k]=(0,d.useState)(""),[S,C]=(0,d.useState)(""),[E,L]=(0,d.useState)(""),P=(e,s)=>{if(!e){L("");return}"sse"!==s||e.endsWith("/sse")?"http"!==s||e.endsWith("/mcp")?L(""):L("Typically MCP HTTP URLs end with /mcp. You can add this url but this is a warning."):L("Typically MCP SSE URLs end with /sse. You can add this url but this is a warning.")},M=async e=>{m(!0);try{let s=e.mcp_access_groups,a={};if(e.stdio_config&&"stdio"===w)try{let s=JSON.parse(e.stdio_config),t=s;if(s.mcpServers&&"object"==typeof s.mcpServers){let l=Object.keys(s.mcpServers);if(l.length>0){let a=l[0];t=s.mcpServers[a],e.server_name||(e.server_name=a.replace(/-/g,"_"))}}a={command:t.command,args:t.args,env:t.env},console.log("Parsed stdio config:",a)}catch(e){eo.Z.fromBackend("Invalid JSON in stdio configuration");return}let i={...e,...a,stdio_config:void 0,mcp_info:{server_name:e.server_name||e.url,description:e.description,mcp_server_cost_info:Object.keys(u).length>0?u:null},mcp_access_groups:s,alias:e.alias,allowed_tools:N.length>0?N:null};if(console.log("Payload: ".concat(JSON.stringify(i))),null!=t){let e=await (0,j.createMCPServer)(t,i);eo.Z.success("MCP Server created successfully"),n.resetFields(),x({}),y([]),Z([]),L(""),f(!1),r(!1),l(e)}}catch(e){eo.Z.fromBackend("Error creating MCP Server: "+e)}finally{m(!1)}},O=()=>{n.resetFields(),x({}),y([]),Z([]),L(""),f(!1),r(!1)};return(d.useEffect(()=>{if(!g&&h.server_name){let e=h.server_name.replace(/\s+/g,"_");n.setFieldsValue({alias:e}),p(s=>({...s,alias:e}))}},[h.server_name]),d.useEffect(()=>{a||p({})},[a]),(0,eI.tY)(s))?(0,c.jsx)(T.Z,{title:(0,c.jsxs)("div",{className:"flex items-center space-x-3 pb-4 border-b border-gray-100",children:[(0,c.jsx)("img",{src:nQ,alt:"MCP Logo",className:"w-8 h-8 object-contain",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"}}),(0,c.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add New MCP Server"})]}),open:a,width:1e3,onCancel:O,footer:null,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsxs)(A.Z,{form:n,onFinish:M,onValuesChange:(e,s)=>p(s),layout:"vertical",className:"space-y-6",children:[(0,c.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["MCP Server Name",(0,c.jsx)(B.Z,{title:"Best practice: Use a descriptive name that indicates the server's purpose (e.g., 'GitHub_MCP', 'Email_Service'). Hyphens '-' are not allowed; use underscores '_' instead.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"server_name",rules:[{required:!1,message:"Please enter a server name"},{validator:(e,s)=>nT(s)}],children:(0,c.jsx)(_.Z,{placeholder:"e.g., GitHub_MCP, Zapier_MCP, etc.",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Alias",(0,c.jsx)(B.Z,{title:"A short, unique identifier for this server. Defaults to the server name with spaces replaced by underscores.",children:(0,c.jsx)(V.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"alias",rules:[{required:!1},{validator:(e,s)=>s&&s.includes("-")?Promise.reject("Alias cannot contain '-' (hyphen). Please use '_' (underscore) instead."):Promise.resolve()}],children:(0,c.jsx)(_.Z,{placeholder:"e.g., GitHub_MCP, Zapier_MCP, etc.",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500",onChange:()=>f(!0)})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Description"}),name:"description",rules:[{required:!1,message:"Please enter a server description!!!!!!!!!"}],children:(0,c.jsx)(_.Z,{placeholder:"Brief description of what this server does",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Transport Type"}),name:"transport",rules:[{required:!0,message:"Please select a transport type"}],children:(0,c.jsxs)(I.default,{placeholder:"Select transport",className:"rounded-lg",size:"large",onChange:e=>{if(k(e),"stdio"===e)n.setFieldsValue({url:void 0,auth_type:void 0}),L("");else{n.setFieldsValue({command:void 0,args:void 0,env:void 0});let s=n.getFieldValue("url");s&&P(s,e)}},value:w,children:[(0,c.jsx)(I.default.Option,{value:"http",children:"HTTP"}),(0,c.jsx)(I.default.Option,{value:"sse",children:"Server-Sent Events (SSE)"}),(0,c.jsx)(I.default.Option,{value:"stdio",children:"Standard Input/Output (stdio)"})]})}),"stdio"!==w&&(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"MCP Server URL"}),name:"url",rules:[{required:!0,message:"Please enter a server URL"},{validator:(e,s)=>nA(s)}],children:(0,c.jsxs)("div",{children:[(0,c.jsx)(_.Z,{placeholder:"https://your-mcp-server.com",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500",onChange:e=>P(e.target.value,w)}),E&&(0,c.jsx)("div",{className:"mt-1 text-red-500 text-sm font-medium",children:E})]})}),"stdio"!==w&&(0,c.jsx)(A.Z.Item,{label:(0,c.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Authentication"}),name:"auth_type",rules:[{required:!0,message:"Please select an auth type"}],children:(0,c.jsxs)(I.default,{placeholder:"Select auth type",className:"rounded-lg",size:"large",children:[(0,c.jsx)(I.default.Option,{value:"none",children:"None"}),(0,c.jsx)(I.default.Option,{value:"api_key",children:"API Key"}),(0,c.jsx)(I.default.Option,{value:"bearer_token",children:"Bearer Token"}),(0,c.jsx)(I.default.Option,{value:"basic",children:"Basic Auth"})]})}),(0,c.jsx)(n$,{isVisible:"stdio"===w})]}),(0,c.jsx)("div",{className:"mt-8",children:(0,c.jsx)(nV,{availableAccessGroups:i,mcpServer:null,searchValue:S,setSearchValue:C,getAccessGroupOptions:()=>{let e=i.map(e=>({value:e,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e})]})}));return S&&!i.some(e=>e.toLowerCase().includes(S.toLowerCase()))&&e.push({value:S,label:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:S}),(0,c.jsx)("span",{className:"text-gray-400 text-xs ml-1",children:"create new group"})]})}),e}})}),(0,c.jsx)("div",{className:"mt-8 pt-6 border-t border-gray-200",children:(0,c.jsx)(nW,{accessToken:t,formValues:h,onToolsLoaded:y})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nG,{accessToken:t,formValues:h,allowedTools:N,existingAllowedTools:null,onAllowedToolsChange:Z})}),(0,c.jsx)("div",{className:"mt-6",children:(0,c.jsx)(nU,{value:u,onChange:x,tools:v.filter(e=>N.includes(e.name)),disabled:!1})}),(0,c.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,c.jsx)(b.Z,{variant:"secondary",onClick:O,children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",loading:o,children:o?"Creating...":"Add MCP Server"})]})]})})}):null},n0=t(64935),n1=t(11239),n2=t(54001),n4=t(96137),n5=t(96362),n3=t(80221),n6=t(29202);let{Title:n8,Text:n7}=en.default,{Panel:n9}=tE.default,oe=e=>{let{icon:s,title:t,description:l,children:a,serverName:r,accessGroups:i=["dev"]}=e,[n,o]=(0,d.useState)(!1),m=()=>{let e={"x-litellm-api-key":"Bearer YOUR_LITELLM_API_KEY"};if(n&&r){let s=[r.replace(/\s+/g,"_"),...i].join(",");e["x-mcp-servers"]=[s]}return e};return(0,c.jsxs)(tL.Z,{className:"border border-gray-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)("span",{className:"p-2 rounded-lg bg-gray-50",children:s}),(0,c.jsxs)("div",{children:[(0,c.jsx)(n8,{level:5,className:"mb-0",children:t}),(0,c.jsx)(n7,{className:"text-gray-600",children:l})]})]}),r&&("Implementation Example"===t||"Configuration"===t)&&(0,c.jsxs)(A.Z.Item,{className:"mb-4",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(eJ.Z,{size:"small",checked:n,onChange:o}),(0,c.jsxs)(n7,{className:"text-sm",children:["Limit tools to specific MCP servers or MCP groups by passing the ",(0,c.jsx)("code",{children:"x-mcp-servers"})," header"]})]}),n&&(0,c.jsx)(lm.Z,{className:"mt-2",type:"info",showIcon:!0,message:"Two Options",description:(0,c.jsxs)("div",{children:[(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Option 1:"})," Get a specific server: ",(0,c.jsxs)("code",{children:['["',r.replace(/\s+/g,"_"),'"]']})]}),(0,c.jsxs)("p",{children:[(0,c.jsx)("strong",{children:"Option 2:"})," Get a group of MCPs: ",(0,c.jsx)("code",{children:'["dev-group"]'})]}),(0,c.jsxs)("p",{className:"mt-2 text-sm text-gray-600",children:["You can also mix both: ",(0,c.jsx)("code",{children:'["Server1,dev-group"]'})]})]})})]}),d.Children.map(a,e=>{if(d.isValidElement(e)&&e.props.hasOwnProperty("code")&&e.props.hasOwnProperty("copyKey")){let s=e.props.code;if(s&&s.includes('"headers":'))return d.cloneElement(e,{code:s.replace(/"headers":\s*{[^}]*}/,'"headers": '.concat(JSON.stringify(m(),null,8)))})}return e})]})};var os=e=>{let{currentServerAccessGroups:s=[]}=e,t=(0,j.getProxyBaseUrl)(),[l,a]=(0,d.useState)({}),[r,i]=(0,d.useState)({openai:[],litellm:[],cursor:[],http:[]}),[n]=(0,d.useState)("Zapier_MCP"),o=async(e,s)=>{await eM(e)&&(a(e=>({...e,[s]:!0})),setTimeout(()=>{a(e=>({...e,[s]:!1}))},2e3))},m=e=>{let{code:s,copyKey:t,title:a,className:r=""}=e;return(0,c.jsxs)("div",{className:"relative group",children:[a&&(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(n0.Z,{size:16,className:"text-blue-600"}),(0,c.jsx)(n7,{strong:!0,className:"text-gray-700",children:a})]}),(0,c.jsxs)(tL.Z,{className:"bg-gray-50 border border-gray-200 relative ".concat(r),children:[(0,c.jsx)(L.ZP,{type:"text",size:"small",icon:l[t]?(0,c.jsx)(s_.Z,{size:12}):(0,c.jsx)(sN.Z,{size:12}),onClick:()=>o(s,t),className:"absolute top-2 right-2 z-10 transition-all duration-200 ".concat(l[t]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")}),(0,c.jsx)("pre",{className:"text-sm overflow-x-auto pr-10 text-gray-800 font-mono leading-relaxed",children:s})]})]})},u=e=>{let{step:s,title:t,children:l}=e;return(0,c.jsxs)("div",{className:"flex gap-4",children:[(0,c.jsx)("div",{className:"flex-shrink-0",children:(0,c.jsx)("div",{className:"w-8 h-8 bg-blue-600 text-white rounded-full flex items-center justify-center text-sm font-semibold",children:s})}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsx)(n7,{strong:!0,className:"text-gray-800 block mb-2",children:t}),l]})]})};return(0,c.jsx)("div",{children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(S.Z,{className:"text-3xl font-bold text-gray-900 mb-3",children:"Connect to your MCP client"}),(0,c.jsx)(k.Z,{className:"text-lg text-gray-600",children:"Use tools directly from any MCP client with LiteLLM MCP. Enable your AI assistant to perform real-world tasks through a simple, secure connection."})]}),(0,c.jsxs)(st.Z,{className:"w-full",children:[(0,c.jsx)(sl.Z,{className:"flex justify-start mt-8 mb-6",children:(0,c.jsxs)("div",{className:"flex bg-gray-100 p-1 rounded-lg",children:[(0,c.jsx)(ss.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n0.Z,{size:18}),"OpenAI API"]})}),(0,c.jsx)(ss.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n1.Z,{size:18}),"LiteLLM Proxy"]})}),(0,c.jsx)(ss.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n3.Z,{size:18}),"Cursor"]})}),(0,c.jsx)(ss.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,c.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,c.jsx)(n6.Z,{size:18}),"Streamable HTTP"]})})]})}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-blue-50 to-indigo-50 p-6 rounded-lg border border-blue-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n0.Z,{className:"text-blue-600",size:24}),(0,c.jsx)(n8,{level:4,className:"mb-0 text-blue-900",children:"OpenAI Responses API Integration"})]}),(0,c.jsx)(n7,{className:"text-blue-700",children:"Connect OpenAI Responses API to your LiteLLM MCP server for seamless tool integration"})]}),(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsx)(oe,{icon:(0,c.jsx)(n2.Z,{className:"text-blue-600",size:16}),title:"API Key Setup",description:"Configure your OpenAI API key for authentication",children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,c.jsx)("div",{children:(0,c.jsxs)(n7,{children:["Get your API key from the"," ",(0,c.jsxs)("a",{href:"https://platform.openai.com/api-keys",target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-700 inline-flex items-center gap-1",children:["OpenAI platform ",(0,c.jsx)(n5.Z,{size:12})]})]})}),(0,c.jsx)(m,{title:"Environment Variable",code:'export OPENAI_API_KEY="sk-..."',copyKey:"openai-env"})]})}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n4.Z,{className:"text-blue-600",size:16}),title:"MCP Server Information",description:"Connection details for your LiteLLM MCP server",children:(0,c.jsx)(m,{title:"Server URL",code:"".concat(t,"/mcp"),copyKey:"openai-server-url"})}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n0.Z,{className:"text-blue-600",size:16}),title:"Implementation Example",description:"Complete cURL example for using the Responses API",serverName:"Zapier Gmail",accessGroups:["dev"],children:(0,c.jsx)(m,{code:'curl --location \'https://api.openai.com/v1/responses\' \\\n--header \'Content-Type: application/json\' \\\n--header "Authorization: Bearer $OPENAI_API_KEY" \\\n--data \'{\n "model": "gpt-4.1",\n "tools": [\n {\n "type": "mcp",\n "server_label": "litellm",\n "server_url": "'.concat(t,'/mcp",\n "require_approval": "never",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n ],\n "input": "Run available tools",\n "tool_choice": "required"\n}\''),copyKey:"openai-curl",className:"text-xs"})})]})]}),{})}),(0,c.jsx)(sa.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-emerald-50 to-green-50 p-6 rounded-lg border border-emerald-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n1.Z,{className:"text-emerald-600",size:24}),(0,c.jsx)(n8,{level:4,className:"mb-0 text-emerald-900",children:"LiteLLM Proxy API Integration"})]}),(0,c.jsx)(n7,{className:"text-emerald-700",children:"Connect to LiteLLM Proxy Responses API for seamless tool integration with multiple model providers"})]}),(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsx)(oe,{icon:(0,c.jsx)(n2.Z,{className:"text-emerald-600",size:16}),title:"API Key Setup",description:"Configure your LiteLLM Proxy API key for authentication",children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,c.jsx)("div",{children:(0,c.jsx)(n7,{children:"Get your API key from your LiteLLM Proxy dashboard or contact your administrator"})}),(0,c.jsx)(m,{title:"Environment Variable",code:'export LITELLM_API_KEY="sk-..."',copyKey:"litellm-env"})]})}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n4.Z,{className:"text-emerald-600",size:16}),title:"MCP Server Information",description:"Connection details for your LiteLLM MCP server",children:(0,c.jsx)(m,{title:"Server URL",code:"".concat(t,"/mcp"),copyKey:"litellm-server-url"})}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n0.Z,{className:"text-emerald-600",size:16}),title:"Implementation Example",description:"Complete cURL example for using the LiteLLM Proxy Responses API",serverName:n,accessGroups:["dev"],children:(0,c.jsx)(m,{code:"curl --location '".concat(t,'/v1/responses\' \\\n--header \'Content-Type: application/json\' \\\n--header "Authorization: Bearer $LITELLM_API_KEY" \\\n--data \'{\n "model": "gpt-4",\n "tools": [\n {\n "type": "mcp",\n "server_label": "litellm",\n "server_url": "').concat(t,'/mcp",\n "require_approval": "never",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n ],\n "input": "Run available tools",\n "tool_choice": "required"\n}\''),copyKey:"litellm-curl",className:"text-xs"})})]})]}),{})}),(0,c.jsx)(sa.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-purple-50 to-blue-50 p-6 rounded-lg border border-purple-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n3.Z,{className:"text-purple-600",size:24}),(0,c.jsx)(n8,{level:4,className:"mb-0 text-purple-900",children:"Cursor IDE Integration"})]}),(0,c.jsx)(n7,{className:"text-purple-700",children:"Use tools directly from Cursor IDE with LiteLLM MCP. Enable your AI assistant to perform real-world tasks without leaving your coding environment."})]}),(0,c.jsxs)(tL.Z,{className:"border border-gray-200",children:[(0,c.jsx)(n8,{level:5,className:"mb-4 text-gray-800",children:"Setup Instructions"}),(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsx)(u,{step:1,title:"Open Cursor Settings",children:(0,c.jsxs)(n7,{className:"text-gray-600",children:["Use the keyboard shortcut ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"⇧+⌘+J"})," (Mac) or"," ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Ctrl+Shift+J"})," (Windows/Linux)"]})}),(0,c.jsx)(u,{step:2,title:"Navigate to MCP Tools",children:(0,c.jsx)(n7,{className:"text-gray-600",children:'Go to the "MCP Tools" tab and click "New MCP Server"'})}),(0,c.jsxs)(u,{step:3,title:"Add Configuration",children:[(0,c.jsxs)(n7,{className:"text-gray-600 mb-3",children:["Copy the JSON configuration below and paste it into Cursor, then save with"," ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Cmd+S"})," or"," ",(0,c.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Ctrl+S"})]}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n0.Z,{className:"text-purple-600",size:16}),title:"Configuration",description:"Cursor MCP configuration",serverName:"Zapier Gmail",accessGroups:["dev"],children:(0,c.jsx)(m,{code:'{\n "mcpServers": {\n "Zapier_MCP": {\n "server_url": "'.concat(t,'/mcp",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n }\n}'),copyKey:"cursor-config",className:"text-xs"})})]})]})]})]}),{})}),(0,c.jsx)(sa.Z,{className:"mt-6",children:(0,c.jsx)(()=>(0,c.jsxs)(t9.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,c.jsxs)("div",{className:"bg-gradient-to-r from-green-50 to-teal-50 p-6 rounded-lg border border-green-100",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,c.jsx)(n6.Z,{className:"text-green-600",size:24}),(0,c.jsx)(n8,{level:4,className:"mb-0 text-green-900",children:"Streamable HTTP Transport"})]}),(0,c.jsx)(n7,{className:"text-green-700",children:"Connect to LiteLLM MCP using HTTP transport. Compatible with any MCP client that supports HTTP streaming."})]}),(0,c.jsx)(oe,{icon:(0,c.jsx)(n6.Z,{className:"text-green-600",size:16}),title:"Universal MCP Connection",description:"Use this URL with any MCP client that supports HTTP transport",children:(0,c.jsxs)(t9.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,c.jsx)("div",{children:(0,c.jsx)(n7,{children:"Each MCP client supports different transports. Refer to your client documentation to determine the appropriate transport method."})}),(0,c.jsx)(m,{title:"Server URL",code:"".concat(t,"/mcp"),copyKey:"http-server-url"}),(0,c.jsx)(m,{title:"Headers Configuration",code:JSON.stringify({"x-litellm-api-key":"Bearer YOUR_LITELLM_API_KEY"},null,2),copyKey:"http-headers"}),(0,c.jsx)("div",{className:"mt-4",children:(0,c.jsx)(L.ZP,{type:"link",className:"p-0 h-auto text-blue-600 hover:text-blue-700",href:"https://modelcontextprotocol.io/docs/concepts/transports",icon:(0,c.jsx)(n5.Z,{size:14}),children:"Learn more about MCP transports"})})]})})]}),{})})]})]})]})})};let{Option:ot}=I.default,ol=e=>{let{isModalOpen:s,title:t,confirmDelete:l,cancelDelete:a}=e;return s?(0,c.jsx)(T.Z,{open:s,onOk:l,okType:"danger",onCancel:a,children:(0,c.jsxs)(y.Z,{numItems:1,className:"gap-2 w-full",children:[(0,c.jsx)(S.Z,{children:t}),(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)("p",{children:"Are you sure you want to delete this MCP Server?"})})]})}):null};var oa=e=>{let{accessToken:s,userRole:t,userID:l}=e,{data:a,isLoading:r,refetch:i,dataUpdatedAt:n}=(0,sA.a)({queryKey:["mcpServers"],queryFn:()=>{if(!s)throw Error("Access Token required");return(0,j.fetchMCPServers)(s)},enabled:!!s});d.useEffect(()=>{a&&(console.log("MCP Servers fetched:",a),a.forEach(e=>{console.log("Server: ".concat(e.server_name||e.server_id)),console.log(" allowed_tools:",e.allowed_tools)}))},[a]);let[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(null),[g,f]=(0,d.useState)(!1),[v,y]=(0,d.useState)("all"),[_,N]=(0,d.useState)("all"),[Z,w]=(0,d.useState)([]),[C,A]=(0,d.useState)(!1),T="Internal User"===t,E=d.useMemo(()=>{if(!a)return[];let e=new Set,s=[];return a.forEach(t=>{t.teams&&t.teams.forEach(t=>{let l=t.team_id;e.has(l)||(e.add(l),s.push(t))})}),s},[a]),L=d.useMemo(()=>a?Array.from(new Set(a.flatMap(e=>e.mcp_access_groups).filter(e=>null!=e))):[],[a]),P=e=>{y(e),O(e,_)},M=e=>{N(e),O(v,e)},O=(e,s)=>{if(!a)return w([]);let t=a;if("personal"===e){w([]);return}"all"!==e&&(t=t.filter(s=>{var t;return null===(t=s.teams)||void 0===t?void 0:t.some(s=>s.team_id===e)})),"all"!==s&&(t=t.filter(e=>{var t;return null===(t=e.mcp_access_groups)||void 0===t?void 0:t.some(e=>"string"==typeof e?e===s:e&&e.name===s)})),w(t)};(0,d.useEffect)(()=>{O(v,_)},[n]);let D=d.useMemo(()=>nE(null!=t?t:"",e=>{p(e),f(!1)},e=>{p(e),f(!0)},F),[t]);function F(e){m(e),x(!0)}let R=async()=>{if(null!=o&&null!=s){try{await (0,j.deleteMCPServer)(s,o),eo.Z.success("Deleted MCP Server successfully"),i()}catch(e){console.error("Error deleting the mcp server:",e)}x(!1),m(null)}};return s&&t&&l?(0,c.jsxs)("div",{className:"w-full h-full p-6",children:[(0,c.jsx)(ol,{isModalOpen:u,title:"Delete MCP Server",confirmDelete:R,cancelDelete:()=>{x(!1),m(null)}}),(0,c.jsx)(nX,{userRole:t,accessToken:s,onCreateSuccess:e=>{w(s=>[...s,e]),A(!1)},isModalVisible:C,setModalVisible:A,availableAccessGroups:L}),(0,c.jsx)(S.Z,{children:"MCP Servers"}),(0,c.jsx)(k.Z,{className:"text-tremor-content mt-2",children:"Configure and manage your MCP servers"}),(0,eI.tY)(t)&&(0,c.jsx)(b.Z,{className:"mt-4 mb-4",onClick:()=>A(!0),children:"+ Add New MCP Server"}),(0,c.jsxs)(st.Z,{className:"w-full h-full",children:[(0,c.jsx)(sl.Z,{className:"flex justify-between mt-2 w-full items-center",children:(0,c.jsxs)("div",{className:"flex",children:[(0,c.jsx)(ss.Z,{children:"All Servers"}),(0,c.jsx)(ss.Z,{children:"Connect"})]})}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:(0,c.jsx)(()=>h?(0,c.jsx)(nJ,{mcpServer:Z.find(e=>e.server_id===h)||{server_id:"",server_name:"",alias:"",url:"",transport:"",auth_type:"",created_at:"",created_by:"",updated_at:"",updated_by:""},onBack:()=>{f(!1),p(null),i()},isProxyAdmin:(0,eI.tY)(t),isEditing:g,accessToken:s,userID:l,userRole:t,availableAccessGroups:L}):(0,c.jsxs)("div",{className:"w-full h-full",children:[(0,c.jsx)("div",{className:"w-full px-6",children:(0,c.jsx)("div",{className:"flex flex-col space-y-4",children:(0,c.jsx)("div",{className:"flex items-center justify-between bg-gray-50 rounded-lg p-4 border-2 border-gray-200",children:(0,c.jsxs)("div",{className:"flex items-center gap-4",children:[(0,c.jsx)(k.Z,{className:"text-lg font-semibold text-gray-900",children:"Current Team:"}),(0,c.jsxs)(I.default,{value:v,onChange:P,style:{width:300},children:[(0,c.jsx)(ot,{value:"all",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:T?"All Available Servers":"All Servers"})]})}),(0,c.jsx)(ot,{value:"personal",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"Personal"})]})}),E.map(e=>(0,c.jsx)(ot,{value:e.team_id,children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e.team_alias||e.team_id})]})},e.team_id))]}),(0,c.jsxs)(k.Z,{className:"text-lg font-semibold text-gray-900 ml-6",children:["Access Group:",(0,c.jsx)(B.Z,{title:"An MCP Access Group is a set of users or teams that have permission to access specific MCP servers. Use access groups to control and organize who can connect to which servers.",children:(0,c.jsx)(tU.Z,{style:{marginLeft:4,color:"#888"}})})]}),(0,c.jsxs)(I.default,{value:_,onChange:M,style:{width:300},children:[(0,c.jsx)(ot,{value:"all",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:"All Access Groups"})]})}),L.map(e=>(0,c.jsx)(ot,{value:e,children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,c.jsx)("span",{className:"font-medium",children:e})]})},e))]})]})})})}),(0,c.jsx)("div",{className:"w-full px-6 mt-6",children:(0,c.jsx)(lN,{data:Z,columns:D,renderSubComponent:()=>(0,c.jsx)("div",{}),getRowCanExpand:()=>!1,isLoading:r,noDataMessage:"No MCP servers configured"})})]}),{})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(os,{})})]})]})]}):(console.log("Missing required authentication parameters",{accessToken:s,userRole:t,userID:l}),(0,c.jsx)("div",{className:"p-6 text-center text-gray-500",children:"Missing required authentication parameters."}))},or=t(21770);function oi(e){let{tool:s,needsAuth:t,authValue:l,onSubmit:a,isLoading:r,result:i,error:n,onClose:o}=e,[m]=A.Z.useForm(),[u,x]=d.useState("formatted"),[h,p]=d.useState(null),[g,j]=d.useState(null),f=d.useMemo(()=>"string"==typeof s.inputSchema?{type:"object",properties:{input:{type:"string",description:"Input for this tool"}},required:["input"]}:s.inputSchema,[s.inputSchema]),v=d.useMemo(()=>f.properties&&f.properties.params&&"object"===f.properties.params.type&&f.properties.params.properties?{type:"object",properties:f.properties.params.properties,required:f.properties.params.required||[]}:f,[f]);d.useEffect(()=>{h&&(i||n)&&j(Date.now()-h)},[i,n,h]);let y=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let s=document.createElement("textarea");s.value=e,s.style.position="fixed",s.style.opacity="0",document.body.appendChild(s),s.focus(),s.select();let t=document.execCommand("copy");if(document.body.removeChild(s),!t)throw Error("execCommand failed");return!0}}catch(e){return console.error("Copy failed:",e),!1}},N=async()=>{await y(JSON.stringify(i,null,2))?eo.Z.success("Result copied to clipboard"):eo.Z.fromBackend("Failed to copy result")},Z=async()=>{await y(s.name)?eo.Z.success("Tool name copied to clipboard"):eo.Z.fromBackend("Failed to copy tool name")};return(0,c.jsxs)("div",{className:"space-y-4 h-full",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between pb-3 border-b border-gray-200",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-3",children:[s.mcp_info.logo_url&&(0,c.jsx)("img",{src:s.mcp_info.logo_url,alt:"".concat(s.mcp_info.server_name," logo"),className:"w-6 h-6 object-contain"}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2 mb-1",children:[(0,c.jsx)("h2",{className:"text-lg font-semibold text-gray-900",children:"Test Tool:"}),(0,c.jsxs)("div",{className:"group inline-flex items-center space-x-1 bg-slate-50 hover:bg-slate-100 px-3 py-1 rounded-md cursor-pointer transition-colors border border-slate-200",onClick:Z,title:"Click to copy tool name",children:[(0,c.jsx)("span",{className:"font-mono text-slate-700 font-medium text-sm",children:s.name}),(0,c.jsx)("svg",{className:"w-3 h-3 text-slate-400 group-hover:text-slate-600 transition-colors",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})]})]}),(0,c.jsx)("p",{className:"text-xs text-gray-600",children:s.description}),(0,c.jsxs)("p",{className:"text-xs text-gray-500",children:["Provider: ",s.mcp_info.server_name]})]})]}),(0,c.jsx)(b.Z,{onClick:o,variant:"light",size:"sm",className:"text-gray-500 hover:text-gray-700",children:(0,c.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,c.jsxs)("div",{className:"grid grid-cols-2 gap-4 h-full",children:[(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg",children:[(0,c.jsx)("div",{className:"border-b border-gray-100 px-4 py-2",children:(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:"Input Parameters"}),(0,c.jsx)(B.Z,{title:"Configure the input parameters for this tool call",children:(0,c.jsx)(V.Z,{className:"text-gray-400 hover:text-gray-600"})})]})}),(0,c.jsx)("div",{className:"p-4",children:(0,c.jsxs)(A.Z,{form:m,onFinish:e=>{p(Date.now()),j(null);let s={};Object.entries(e).forEach(e=>{var t;let[l,a]=e,r=null===(t=v.properties)||void 0===t?void 0:t[l];if(r&&null!=a&&""!==a)switch(r.type){case"boolean":s[l]="true"===a||!0===a;break;case"number":s[l]=Number(a);break;case"string":s[l]=String(a);break;default:s[l]=a}else null!=a&&""!==a&&(s[l]=a)}),a(f.properties&&f.properties.params&&"object"===f.properties.params.type&&f.properties.params.properties?{params:s}:s)},layout:"vertical",className:"space-y-3",children:["string"==typeof s.inputSchema?(0,c.jsx)("div",{className:"space-y-3",children:(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Input ",(0,c.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"input",rules:[{required:!0,message:"Please enter input for this tool"}],className:"mb-3",children:(0,c.jsx)(_.Z,{placeholder:"Enter input for this tool",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})})}):void 0===v.properties?(0,c.jsx)("div",{className:"text-center py-6 bg-gray-50 rounded-lg border border-gray-200",children:(0,c.jsxs)("div",{className:"max-w-sm mx-auto",children:[(0,c.jsx)("h4",{className:"text-sm font-medium text-gray-900 mb-1",children:"No Parameters Required"}),(0,c.jsx)("p",{className:"text-xs text-gray-500",children:"This tool can be called without any input parameters."})]})}):(0,c.jsx)("div",{className:"space-y-3",children:Object.entries(v.properties).map(e=>{var s,t,l,a,r;let[i,n]=e;return(0,c.jsxs)(A.Z.Item,{label:(0,c.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:[i," ",(null===(s=v.required)||void 0===s?void 0:s.includes(i))&&(0,c.jsx)("span",{className:"text-red-500",children:"*"}),n.description&&(0,c.jsx)(B.Z,{title:n.description,children:(0,c.jsx)(V.Z,{className:"ml-2 text-gray-400 hover:text-gray-600"})})]}),name:i,rules:[{required:null===(t=v.required)||void 0===t?void 0:t.includes(i),message:"Please enter ".concat(i)}],className:"mb-3",children:["string"===n.type&&n.enum&&(0,c.jsxs)("select",{className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors",defaultValue:n.default,children:[!(null===(l=v.required)||void 0===l?void 0:l.includes(i))&&(0,c.jsxs)("option",{value:"",children:["Select ",i]}),n.enum.map(e=>(0,c.jsx)("option",{value:e,children:e},e))]}),"string"===n.type&&!n.enum&&(0,c.jsx)(_.Z,{placeholder:n.description||"Enter ".concat(i),className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"}),"number"===n.type&&(0,c.jsx)("input",{type:"number",placeholder:n.description||"Enter ".concat(i),className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors"}),"boolean"===n.type&&(0,c.jsxs)("select",{className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors",defaultValue:(null===(a=n.default)||void 0===a?void 0:a.toString())||"",children:[!(null===(r=v.required)||void 0===r?void 0:r.includes(i))&&(0,c.jsxs)("option",{value:"",children:["Select ",i]}),(0,c.jsx)("option",{value:"true",children:"True"}),(0,c.jsx)("option",{value:"false",children:"False"})]})]},i)})}),(0,c.jsx)("div",{className:"pt-3 border-t border-gray-100",children:(0,c.jsx)(b.Z,{onClick:()=>m.submit(),disabled:r,variant:"primary",className:"w-full",loading:r,children:r?"Calling Tool...":i||n?"Call Again":"Call Tool"})})]})})]}),(0,c.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg",children:[(0,c.jsx)("div",{className:"border-b border-gray-100 px-4 py-2",children:(0,c.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:"Tool Result"})}),(0,c.jsx)("div",{className:"p-4",children:i||n||r?(0,c.jsxs)("div",{className:"space-y-3",children:[i&&!r&&!n&&(0,c.jsx)("div",{className:"p-2 bg-green-50 border border-green-200 rounded-lg",children:(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("svg",{className:"h-4 w-4 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}),(0,c.jsx)("h4",{className:"text-xs font-medium text-green-900",children:"Tool executed successfully"}),null!==g&&(0,c.jsxs)("span",{className:"text-xs text-green-600 ml-1",children:["• ",(g/1e3).toFixed(2),"s"]})]}),(0,c.jsxs)("div",{className:"flex items-center space-x-1",children:[(0,c.jsxs)("div",{className:"flex bg-white rounded border border-green-300 p-0.5",children:[(0,c.jsx)("button",{onClick:()=>x("formatted"),className:"px-2 py-1 text-xs font-medium rounded transition-colors ".concat("formatted"===u?"bg-green-100 text-green-800":"text-green-600 hover:text-green-800"),children:"Formatted"}),(0,c.jsx)("button",{onClick:()=>x("json"),className:"px-2 py-1 text-xs font-medium rounded transition-colors ".concat("json"===u?"bg-green-100 text-green-800":"text-green-600 hover:text-green-800"),children:"JSON"})]}),(0,c.jsx)("button",{onClick:N,className:"p-1 hover:bg-green-100 rounded text-green-700",title:"Copy response",children:(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,c.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,c.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]})]})}),(0,c.jsxs)("div",{className:"max-h-96 overflow-y-auto",children:[r&&(0,c.jsxs)("div",{className:"flex flex-col justify-center items-center h-48 text-gray-500",children:[(0,c.jsxs)("div",{className:"relative",children:[(0,c.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-gray-200"}),(0,c.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-blue-600 border-t-transparent absolute top-0"})]}),(0,c.jsx)("p",{className:"text-sm font-medium mt-3",children:"Calling tool..."}),(0,c.jsx)("p",{className:"text-xs text-gray-400 mt-1",children:"Please wait while we process your request"})]}),n&&(0,c.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-lg p-3",children:(0,c.jsxs)("div",{className:"flex items-start space-x-2",children:[(0,c.jsx)("div",{className:"flex-shrink-0",children:(0,c.jsx)("svg",{className:"h-4 w-4 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsxs)("div",{className:"flex items-center space-x-2 mb-1",children:[(0,c.jsx)("h4",{className:"text-xs font-medium text-red-900",children:"Tool Call Failed"}),null!==g&&(0,c.jsxs)("span",{className:"text-xs text-red-600",children:["• ",(g/1e3).toFixed(2),"s"]})]}),(0,c.jsx)("div",{className:"bg-white border border-red-200 rounded p-2 max-h-48 overflow-y-auto",children:(0,c.jsx)("pre",{className:"text-xs whitespace-pre-wrap text-red-700 font-mono",children:n.message})})]})]})}),i&&!r&&!n&&(0,c.jsx)("div",{className:"space-y-3",children:"formatted"===u?i.map((e,s)=>(0,c.jsxs)("div",{className:"border border-gray-200 rounded-lg overflow-hidden",children:["text"===e.type&&(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Text Response"})}),(0,c.jsx)("div",{className:"p-3",children:(0,c.jsx)("div",{className:"bg-white rounded border border-gray-200 max-h-64 overflow-y-auto",children:(0,c.jsx)("div",{className:"p-3 space-y-2",children:e.text.split("\n\n").map((e,s)=>{if(""===e.trim())return null;if(e.startsWith("##")){let t=e.replace(/^#+\s/,"");return(0,c.jsx)("div",{className:"border-b border-gray-200 pb-1 mb-2",children:(0,c.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:t})},s)}let t=/(https?:\/\/[^\s\)]+)/g;if(t.test(e)){let l=e.split(t);return(0,c.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded p-2",children:(0,c.jsx)("div",{className:"text-xs text-gray-700 leading-relaxed whitespace-pre-wrap",children:l.map((e,s)=>t.test(e)?(0,c.jsx)("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-800 underline break-all",children:e},s):e)})},s)}return e.includes("Score:")?(0,c.jsx)("div",{className:"bg-green-50 border-l-4 border-green-400 p-2 rounded-r",children:(0,c.jsx)("p",{className:"text-xs text-green-800 font-medium whitespace-pre-wrap",children:e})},s):(0,c.jsx)("div",{className:"bg-gray-50 rounded p-2 border border-gray-200",children:(0,c.jsx)("div",{className:"text-xs text-gray-700 leading-relaxed whitespace-pre-wrap font-mono",children:e})},s)}).filter(Boolean)})})})]}),"image"===e.type&&e.url&&(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Image Response"})}),(0,c.jsx)("div",{className:"p-3",children:(0,c.jsx)("div",{className:"bg-gray-50 rounded p-3 border border-gray-200",children:(0,c.jsx)("img",{src:e.url,alt:"Tool result",className:"max-w-full h-auto rounded shadow-sm"})})})]}),"embedded_resource"===e.type&&(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,c.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Embedded Resource"})}),(0,c.jsx)("div",{className:"p-3",children:(0,c.jsxs)("div",{className:"flex items-center space-x-2 p-3 bg-blue-50 border border-blue-200 rounded",children:[(0,c.jsx)("div",{className:"flex-shrink-0",children:(0,c.jsx)("svg",{className:"h-5 w-5 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})})}),(0,c.jsxs)("div",{className:"flex-1",children:[(0,c.jsxs)("p",{className:"text-xs font-medium text-blue-900",children:["Resource Type: ",e.resource_type]}),e.url&&(0,c.jsxs)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center text-xs text-blue-600 hover:text-blue-800 hover:underline mt-1 transition-colors",children:["View Resource",(0,c.jsxs)("svg",{className:"ml-1 h-3 w-3",fill:"currentColor",viewBox:"0 0 20 20",children:[(0,c.jsx)("path",{d:"M11 3a1 1 0 100 2h2.586l-6.293 6.293a1 1 0 101.414 1.414L15 6.414V9a1 1 0 102 0V4a1 1 0 00-1-1h-5z"}),(0,c.jsx)("path",{d:"M5 5a2 2 0 00-2 2v8a2 2 0 002 2h8a2 2 0 002-2v-3a1 1 0 10-2 0v3H5V7h3a1 1 0 000-2H5z"})]})]})]})]})})]})]},s)):(0,c.jsx)("div",{className:"bg-white rounded border border-gray-200",children:(0,c.jsx)("div",{className:"p-3 overflow-auto max-h-80 bg-gray-50",children:(0,c.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all text-gray-800",children:JSON.stringify(i,null,2)})})})})]})]}):(0,c.jsx)("div",{className:"flex flex-col justify-center items-center h-48 text-gray-500",children:(0,c.jsxs)("div",{className:"text-center max-w-sm",children:[(0,c.jsx)("div",{className:"mb-3",children:(0,c.jsx)("svg",{className:"mx-auto h-12 w-12 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1,d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,c.jsx)("h4",{className:"text-sm font-medium text-gray-900 mb-1",children:"Ready to Call Tool"}),(0,c.jsx)("p",{className:"text-xs text-gray-500 leading-relaxed",children:'Configure the input parameters and click "Call Tool" to see the results here.'})]})})})]})]})]})}var on=t(29488),oo=t(36724);let oc=e=>{let s,{visible:t,onOk:l,onCancel:a,authType:r}=e,[i]=A.Z.useForm();if(r===nM.API_KEY||r===nM.BEARER_TOKEN){let e=r===nM.API_KEY?"API Key":"Bearer Token";s=(0,c.jsx)(A.Z.Item,{name:"authValue",label:e,rules:[{required:!0,message:"Please input your ".concat(e)}],children:(0,c.jsx)(P.default.Password,{})})}else r===nM.BASIC&&(s=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(A.Z.Item,{name:"username",label:"Username",rules:[{required:!0,message:"Please input your username"}],children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{name:"password",label:"Password",rules:[{required:!0,message:"Please input your password"}],children:(0,c.jsx)(P.default.Password,{})})]}));return(0,c.jsx)(T.Z,{open:t,title:"Authentication",onOk:()=>{i.validateFields().then(e=>{r===nM.BASIC?l("".concat(e.username.trim(),":").concat(e.password.trim())):l(e.authValue.trim())})},onCancel:a,destroyOnClose:!0,children:(0,c.jsx)(A.Z,{form:i,layout:"vertical",children:s})})},od=e=>{let{authType:s,onAuthSubmit:t,onClearAuth:l,hasAuth:a}=e,[r,i]=(0,d.useState)(!1);return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsxs)(oo.xv,{className:"text-sm font-medium text-gray-700",children:["Authentication ",a?"✓":""]}),(0,c.jsxs)("div",{className:"flex gap-2",children:[a&&(0,c.jsx)(oo.zx,{onClick:()=>{l()},size:"sm",variant:"secondary",className:"text-xs text-red-600 hover:text-red-700",children:"Clear"}),(0,c.jsx)(oo.zx,{onClick:()=>i(!0),size:"sm",variant:"secondary",className:"text-xs",children:a?"Update":"Add Auth"})]})]}),(0,c.jsx)(oo.xv,{className:"text-xs text-gray-500",children:a?"Authentication configured and saved locally":"Some tools may require authentication"}),(0,c.jsx)(oc,{visible:r,onOk:e=>{t(e),i(!1)},onCancel:()=>i(!1),authType:s})]})};var om=e=>{let{serverId:s,accessToken:t,auth_type:l,userRole:a,userID:r,serverAlias:i}=e,[n,o]=(0,d.useState)(""),[m,u]=(0,d.useState)(null),[x,h]=(0,d.useState)(null),[p,g]=(0,d.useState)(null);(0,d.useEffect)(()=>{if(nR(l)){let e=(0,on.Ui)(s,i||void 0);e&&o(e)}},[s,i,l]);let f=e=>{o(e),e&&nR(l)&&((0,on.Hc)(s,e,l||"none",i||void 0),eo.Z.success("Authentication token saved locally"))},v=()=>{o(""),(0,on.e4)(s),eo.Z.info("Authentication token cleared")},{data:y,isLoading:b,error:_}=(0,sA.a)({queryKey:["mcpTools",s,n,i],queryFn:()=>{if(!t)throw Error("Access Token required");return(0,j.listMCPTools)(t,s,n,i||void 0)},enabled:!!t,staleTime:3e4}),{mutate:N,isPending:Z}=(0,or.D)({mutationFn:async e=>{if(!t)throw Error("Access Token required");try{return await (0,j.callMCPTool)(t,e.tool.name,e.arguments,e.authValue,i||void 0)}catch(e){throw e}},onSuccess:e=>{h(e),g(null)},onError:e=>{g(e),h(null)}}),w=(null==y?void 0:y.tools)||[],k=""!==n;return(0,c.jsx)("div",{className:"w-full h-screen p-4 bg-white",children:(0,c.jsx)(oo.Zb,{className:"w-full rounded-xl shadow-md overflow-hidden",children:(0,c.jsxs)("div",{className:"flex h-auto w-full gap-4",children:[(0,c.jsxs)("div",{className:"w-1/4 p-4 bg-gray-50 flex flex-col",children:[(0,c.jsx)(oo.Dx,{className:"text-xl font-semibold mb-6 mt-2",children:"MCP Tools"}),(0,c.jsxs)("div",{className:"flex flex-col flex-1",children:[(0,c.jsxs)("div",{className:"flex flex-col flex-1 min-h-0",children:[(0,c.jsxs)(oo.xv,{className:"font-medium block mb-3 text-gray-700 flex items-center",children:[(0,c.jsx)(rM.Z,{className:"mr-2"})," Available Tools",w.length>0&&(0,c.jsx)("span",{className:"ml-2 bg-blue-100 text-blue-800 text-xs font-medium px-2 py-0.5 rounded-full",children:w.length})]}),b&&(0,c.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 bg-white border border-gray-200 rounded-lg",children:[(0,c.jsxs)("div",{className:"relative mb-3",children:[(0,c.jsx)("div",{className:"animate-spin rounded-full h-6 w-6 border-2 border-gray-200"}),(0,c.jsx)("div",{className:"animate-spin rounded-full h-6 w-6 border-2 border-blue-600 border-t-transparent absolute top-0"})]}),(0,c.jsx)("p",{className:"text-xs font-medium text-gray-700",children:"Loading tools..."})]}),(null==y?void 0:y.error)&&!b&&!w.length&&(0,c.jsx)("div",{className:"p-3 text-xs text-red-800 rounded-lg bg-red-50 border border-red-200",children:(0,c.jsxs)("p",{className:"font-medium",children:["Error: ",y.message]})}),!b&&!(null==y?void 0:y.error)&&(!w||0===w.length)&&(0,c.jsxs)("div",{className:"p-4 text-center bg-white border border-gray-200 rounded-lg",children:[(0,c.jsx)("div",{className:"mx-auto w-8 h-8 bg-gray-200 rounded-full flex items-center justify-center mb-2",children:(0,c.jsx)("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,c.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 8.172V5L8 4z"})})}),(0,c.jsx)("p",{className:"text-xs font-medium text-gray-700 mb-1",children:"No tools available"}),(0,c.jsx)("p",{className:"text-xs text-gray-500",children:"No tools found for this server"})]}),!b&&!(null==y?void 0:y.error)&&w.length>0&&(0,c.jsx)("div",{className:"space-y-2 flex-1 overflow-y-auto min-h-0 mcp-tools-scrollable",style:{maxHeight:"400px",scrollbarWidth:"auto",scrollbarColor:"#cbd5e0 #f7fafc"},children:w.map(e=>(0,c.jsxs)("div",{className:"border rounded-lg p-3 cursor-pointer transition-all hover:shadow-sm ".concat((null==m?void 0:m.name)===e.name?"border-blue-500 bg-blue-50 ring-1 ring-blue-200":"border-gray-200 bg-white hover:border-gray-300"),onClick:()=>{u(e),h(null),g(null)},children:[(0,c.jsxs)("div",{className:"flex items-start space-x-2",children:[e.mcp_info.logo_url&&(0,c.jsx)("img",{src:e.mcp_info.logo_url,alt:"".concat(e.mcp_info.server_name," logo"),className:"w-4 h-4 object-contain flex-shrink-0 mt-0.5"}),(0,c.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,c.jsx)("h4",{className:"font-mono text-xs font-medium text-gray-900 truncate",children:e.name}),(0,c.jsx)("p",{className:"text-xs text-gray-500 truncate",children:e.mcp_info.server_name}),(0,c.jsx)("p",{className:"text-xs text-gray-600 mt-1 line-clamp-2 leading-relaxed",children:e.description})]})]}),(null==m?void 0:m.name)===e.name&&(0,c.jsx)("div",{className:"mt-2 pt-2 border-t border-blue-200",children:(0,c.jsxs)("div",{className:"flex items-center text-xs font-medium text-blue-700",children:[(0,c.jsx)("svg",{className:"w-3 h-3 mr-1",fill:"currentColor",viewBox:"0 0 20 20",children:(0,c.jsx)("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})}),"Selected"]})})]},e.name))})]}),nR(l)&&(0,c.jsx)("div",{className:"pt-4 border-t border-gray-200 flex-shrink-0 mt-6",children:k?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(oo.xv,{className:"font-medium block mb-3 text-gray-700 flex items-center",children:[(0,c.jsx)(r6.Z,{className:"mr-2"})," Authentication"]}),(0,c.jsx)(od,{authType:l,onAuthSubmit:f,onClearAuth:v,hasAuth:k})]}):(0,c.jsxs)("div",{className:"p-4 bg-gradient-to-r from-orange-50 to-red-50 border border-orange-200 rounded-lg",children:[(0,c.jsxs)("div",{className:"flex items-center mb-3",children:[(0,c.jsx)(r6.Z,{className:"mr-2 text-orange-600 text-lg"}),(0,c.jsx)(oo.xv,{className:"font-semibold text-orange-800",children:"Authentication Required"})]}),(0,c.jsx)(oo.xv,{className:"text-sm text-orange-700 mb-4",children:"This MCP server requires authentication. You must add your credentials below to access the tools."}),(0,c.jsx)(od,{authType:l,onAuthSubmit:f,onClearAuth:v,hasAuth:k})]})})]})]}),(0,c.jsxs)("div",{className:"w-3/4 flex flex-col bg-white",children:[(0,c.jsx)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:(0,c.jsx)(oo.Dx,{className:"text-xl font-semibold mb-0",children:"Tool Testing Playground"})}),(0,c.jsx)("div",{className:"flex-1 overflow-auto p-4",children:m?(0,c.jsx)("div",{className:"h-full",children:(0,c.jsx)(oi,{tool:m,needsAuth:nR(l),authValue:n,onSubmit:e=>{N({tool:m,arguments:e,authValue:n})},result:x,error:p,isLoading:Z,onClose:()=>u(null)})}):(0,c.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,c.jsx)(eK.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,c.jsx)(oo.xv,{className:"text-lg font-medium text-gray-600 mb-2",children:"Select a Tool to Test"}),(0,c.jsx)(oo.xv,{className:"text-center text-gray-500 max-w-md",children:"Choose a tool from the left sidebar to start testing its functionality with custom inputs."})]})})]})]})})})},ou=t(57018),ox=e=>{let{tagId:s,onClose:t,accessToken:l,is_admin:a,editTag:r}=e,[i]=A.Z.useForm(),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(r),[x,h]=(0,d.useState)([]),p=async()=>{if(l)try{let e=(await (0,j.tagInfoCall)(l,[s]))[s];e&&(o(e),r&&i.setFieldsValue({name:e.name,description:e.description,models:e.models}))}catch(e){console.error("Error fetching tag details:",e),eo.Z.fromBackend("Error fetching tag details: "+e)}};(0,d.useEffect)(()=>{p()},[s,l]),(0,d.useEffect)(()=>{l&&e5("dummy-user","Admin",l,h)},[l]);let g=async e=>{if(l)try{await (0,j.tagUpdateCall)(l,{name:e.name,description:e.description,models:e.models}),eo.Z.success("Tag updated successfully"),u(!1),p()}catch(e){console.error("Error updating tag:",e),eo.Z.fromBackend("Error updating tag: "+e)}};return n?(0,c.jsxs)("div",{className:"p-4",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.zx,{onClick:t,className:"mb-4",children:"← Back to Tags"}),(0,c.jsxs)(ou.Dx,{children:["Tag Name: ",n.name]}),(0,c.jsx)(ou.xv,{className:"text-gray-500",children:n.description||"No description"})]}),a&&!m&&(0,c.jsx)(ou.zx,{onClick:()=>u(!0),children:"Edit Tag"})]}),m?(0,c.jsx)(ou.Zb,{children:(0,c.jsxs)(A.Z,{form:i,onFinish:g,layout:"vertical",initialValues:n,children:[(0,c.jsx)(A.Z.Item,{label:"Tag Name",name:"name",rules:[{required:!0,message:"Please input a tag name"}],children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"description",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed LLMs"," ",(0,c.jsx)(B.Z,{title:"Select which LLMs are allowed to process this type of data",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"models",children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select LLMs",children:x.map(e=>(0,c.jsx)(I.default.Option,{value:e,children:F(e)},e))})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(ou.zx,{onClick:()=>u(!1),children:"Cancel"}),(0,c.jsx)(ou.zx,{type:"submit",children:"Save Changes"})]})]})}):(0,c.jsx)("div",{className:"space-y-6",children:(0,c.jsxs)(ou.Zb,{children:[(0,c.jsx)(ou.Dx,{children:"Tag Details"}),(0,c.jsxs)("div",{className:"space-y-4 mt-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Name"}),(0,c.jsx)(ou.xv,{children:n.name})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Description"}),(0,c.jsx)(ou.xv,{children:n.description||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Allowed LLMs"}),(0,c.jsx)("div",{className:"flex flex-wrap gap-2 mt-2",children:0===n.models.length?(0,c.jsx)(ou.Ct,{color:"red",children:"All Models"}):n.models.map(e=>{var s;return(0,c.jsx)(ou.Ct,{color:"blue",children:(0,c.jsx)(B.Z,{title:"ID: ".concat(e),children:(null===(s=n.model_info)||void 0===s?void 0:s[e])||e})},e)})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Created"}),(0,c.jsx)(ou.xv,{children:n.created_at?new Date(n.created_at).toLocaleString():"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(ou.xv,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)(ou.xv,{children:n.updated_at?new Date(n.updated_at).toLocaleString():"-"})]})]})]})})]}):(0,c.jsx)("div",{children:"Loading..."})},oh=e=>{let{data:s,onEdit:t,onDelete:l,onSelectTag:a}=e,[r,i]=d.useState([{id:"created_at",desc:!0}]),n=[{header:"Tag Name",accessorKey:"name",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("div",{className:"overflow-hidden",children:(0,c.jsx)(B.Z,{title:t.name,children:(0,c.jsx)(b.Z,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5",onClick:()=>a(t.name),children:t.name})})})}},{header:"Description",accessorKey:"description",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.description,children:(0,c.jsx)("span",{className:"text-xs",children:t.description||"-"})})}},{header:"Allowed LLMs",accessorKey:"models",cell:e=>{var s,t;let{row:l}=e,a=l.original;return(0,c.jsx)("div",{style:{display:"flex",flexDirection:"column"},children:(null==a?void 0:null===(s=a.models)||void 0===s?void 0:s.length)===0?(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"red",children:"All Models"}):null==a?void 0:null===(t=a.models)||void 0===t?void 0:t.map(e=>{var s;return(0,c.jsx)(se.Z,{size:"xs",className:"mb-1",color:"blue",children:(0,c.jsx)(B.Z,{title:"ID: ".concat(e),children:(0,c.jsx)(k.Z,{children:(null===(s=a.model_info)||void 0===s?void 0:s[e])||e})})},e)})})}},{header:"Created",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:new Date(t.created_at).toLocaleDateString()})}},{id:"actions",header:"",cell:e=>{let{row:s}=e,a=s.original;return(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>t(a),className:"cursor-pointer"}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>l(a.name),className:"cursor-pointer"})]})}}],o=(0,sM.b7)({data:s,columns:n,state:{sorting:r},onSortingChange:i,getCoreRowModel:(0,sO.sC)(),getSortedRowModel:(0,sO.tj)(),enableSorting:!0});return(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sU.Z,{children:o.getHeaderGroups().map(e=>(0,c.jsx)(sV.Z,{children:e.headers.map(e=>(0,c.jsx)(sq.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sB.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sR.Z,{children:o.getRowModel().rows.length>0?o.getRowModel().rows.map(e=>(0,c.jsx)(sV.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sz.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:n.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No tags found"})})})})})]})})})},op=e=>{let{accessToken:s,userID:t,userRole:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(null),[u,x]=(0,d.useState)(!1),[h,p]=(0,d.useState)(!1),[g,f]=(0,d.useState)(null),[N,Z]=(0,d.useState)(""),[w]=A.Z.useForm(),[S,C]=(0,d.useState)([]),E=async()=>{if(s)try{let e=await (0,j.tagListCall)(s);console.log("List tags response:",e),r(Object.values(e))}catch(e){console.error("Error fetching tags:",e),eo.Z.fromBackend("Error fetching tags: "+e)}},L=async e=>{if(s)try{await (0,j.tagCreateCall)(s,{name:e.tag_name,description:e.description,models:e.allowed_llms}),eo.Z.success("Tag created successfully"),n(!1),w.resetFields(),E()}catch(e){console.error("Error creating tag:",e),eo.Z.fromBackend("Error creating tag: "+e)}},M=async e=>{f(e),p(!0)},O=async()=>{if(s&&g){try{await (0,j.tagDeleteCall)(s,g),eo.Z.success("Tag deleted successfully"),E()}catch(e){console.error("Error deleting tag:",e),eo.Z.fromBackend("Error deleting tag: "+e)}p(!1),f(null)}};return(0,d.useEffect)(()=>{t&&l&&s&&(async()=>{try{let e=await (0,j.modelInfoCall)(s,t,l);e&&e.data&&C(e.data)}catch(e){console.error("Error fetching models:",e),eo.Z.fromBackend("Error fetching models: "+e)}})()},[s,t,l]),(0,d.useEffect)(()=>{E()},[s]),(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:o?(0,c.jsx)(ox,{tagId:o,onClose:()=>{m(null),x(!1)},accessToken:s,is_admin:"Admin"===l,editTag:u}):(0,c.jsxs)("div",{className:"gap-2 p-8 h-[75vh] w-full mt-2",children:[(0,c.jsxs)("div",{className:"flex justify-between mt-2 w-full items-center mb-4",children:[(0,c.jsx)("h1",{children:"Tag Management"}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[N&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",N]}),(0,c.jsx)(sD.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center cursor-pointer",onClick:()=>{E(),Z(new Date().toLocaleString())}})]})]}),(0,c.jsxs)(k.Z,{className:"mb-4",children:["Click on a tag name to view and edit its details.",(0,c.jsxs)("p",{children:["You can use tags to restrict the usage of certain LLMs based on tags passed in the request. Read more about tag routing"," ",(0,c.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/tag_routing",target:"_blank",rel:"noopener noreferrer",children:"here"}),"."]})]}),(0,c.jsx)(b.Z,{className:"mb-4",onClick:()=>n(!0),children:"+ Create New Tag"}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(oh,{data:a,onEdit:e=>{m(e.name),x(!0)},onDelete:M,onSelectTag:m})})}),(0,c.jsx)(T.Z,{title:"Create New Tag",visible:i,width:800,footer:null,onCancel:()=>{n(!1),w.resetFields()},children:(0,c.jsxs)(A.Z,{form:w,onFinish:L,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:"Tag Name",name:"tag_name",rules:[{required:!0,message:"Please input a tag name"}],children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"description",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Allowed Models"," ",(0,c.jsx)(B.Z,{title:"Select which LLMs are allowed to process requests from this tag",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"allowed_llms",children:(0,c.jsx)(I.default,{mode:"multiple",placeholder:"Select LLMs",children:S.map(e=>(0,c.jsx)(I.default.Option,{value:e.model_info.id,children:(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{children:e.model_name}),(0,c.jsxs)("span",{className:"text-gray-400 ml-2",children:["(",e.model_info.id,")"]})]})},e.model_info.id))})}),(0,c.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,c.jsx)(b.Z,{type:"submit",children:"Create Tag"})})]})}),h&&(0,c.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,c.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,c.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,c.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,c.jsxs)("div",{className:"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",children:[(0,c.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,c.jsx)("div",{className:"sm:flex sm:items-start",children:(0,c.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,c.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Tag"}),(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this tag?"})})]})})}),(0,c.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:O,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:()=>{p(!1),f(null)},children:"Cancel"})]})]})]})})]})})},og=e=>{let{data:s,onView:t,onEdit:l,onDelete:a}=e,[r,i]=d.useState([{id:"created_at",desc:!0}]),n=[{header:"Vector Store ID",accessorKey:"vector_store_id",cell:e=>{let{row:s}=e,l=s.original;return(0,c.jsx)("button",{onClick:()=>t(l.vector_store_id),className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",children:l.vector_store_id.length>15?"".concat(l.vector_store_id.slice(0,15),"..."):l.vector_store_id})}},{header:"Name",accessorKey:"vector_store_name",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.vector_store_name,children:(0,c.jsx)("span",{className:"text-xs",children:t.vector_store_name||"-"})})}},{header:"Description",accessorKey:"vector_store_description",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)(B.Z,{title:t.vector_store_description,children:(0,c.jsx)("span",{className:"text-xs",children:t.vector_store_description||"-"})})}},{header:"Provider",accessorKey:"custom_llm_provider",cell:e=>{let{row:s}=e,t=s.original,{displayName:l,logo:a}=(0,s0.dr)(t.custom_llm_provider);return(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[a&&(0,c.jsx)("img",{src:a,alt:l,className:"h-4 w-4"}),(0,c.jsx)("span",{className:"text-xs",children:l})]})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:new Date(t.created_at).toLocaleDateString()})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsx)("span",{className:"text-xs",children:new Date(t.updated_at).toLocaleDateString()})}},{id:"actions",header:"",cell:e=>{let{row:s}=e,t=s.original;return(0,c.jsxs)("div",{className:"flex space-x-2",children:[(0,c.jsx)(sD.Z,{icon:s4.Z,size:"sm",onClick:()=>l(t.vector_store_id),className:"cursor-pointer"}),(0,c.jsx)(sD.Z,{icon:W.Z,size:"sm",onClick:()=>a(t.vector_store_id),className:"cursor-pointer"})]})}}],o=(0,sM.b7)({data:s,columns:n,state:{sorting:r},onSortingChange:i,getCoreRowModel:(0,sO.sC)(),getSortedRowModel:(0,sO.tj)(),enableSorting:!0});return(0,c.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,c.jsx)("div",{className:"overflow-x-auto",children:(0,c.jsxs)(sF.Z,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,c.jsx)(sU.Z,{children:o.getHeaderGroups().map(e=>(0,c.jsx)(sV.Z,{children:e.headers.map(e=>(0,c.jsx)(sq.Z,{className:"py-1 h-8 ".concat("actions"===e.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),onClick:e.column.getToggleSortingHandler(),children:(0,c.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,c.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,sM.ie)(e.column.columnDef.header,e.getContext())}),"actions"!==e.id&&(0,c.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,c.jsx)(sG.Z,{className:"h-4 w-4 text-blue-500"}),desc:(0,c.jsx)(sB.Z,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,c.jsx)(sH.Z,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,c.jsx)(sR.Z,{children:o.getRowModel().rows.length>0?o.getRowModel().rows.map(e=>(0,c.jsx)(sV.Z,{className:"h-8",children:e.getVisibleCells().map(e=>(0,c.jsx)(sz.Z,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap ".concat("actions"===e.column.id?"sticky right-0 bg-white shadow-[-4px_0_8px_-6px_rgba(0,0,0,0.1)]":""),children:(0,sM.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,c.jsx)(sV.Z,{children:(0,c.jsx)(sz.Z,{colSpan:n.length,className:"h-8 text-center",children:(0,c.jsx)("div",{className:"text-center text-gray-500",children:(0,c.jsx)("p",{children:"No vector stores found"})})})})})]})})})};(r=o||(o={})).Bedrock="Amazon Bedrock",r.PgVector="PostgreSQL pgvector (LiteLLM Connector)",r.VertexRagEngine="Vertex AI RAG Engine",r.OpenAI="OpenAI",r.Azure="Azure OpenAI";let oj={Bedrock:"bedrock",PgVector:"pg_vector",VertexRagEngine:"vertex_ai",OpenAI:"openai",Azure:"azure"},of="/ui/assets/logos/",ov={"Amazon Bedrock":"".concat(of,"bedrock.svg"),"PostgreSQL pgvector (LiteLLM Connector)":"".concat(of,"postgresql.svg"),"Vertex AI RAG Engine":"".concat(of,"google.svg"),OpenAI:"".concat(of,"openai_small.svg"),"Azure OpenAI":"".concat(of,"microsoft_azure.svg")},oy={bedrock:[],pg_vector:[{name:"api_base",label:"API Base",tooltip:"Enter the base URL of your deployed litellm-pgvector server (e.g., http://your-server:8000)",placeholder:"http://your-deployed-server:8000",required:!0,type:"text"},{name:"api_key",label:"API Key",tooltip:"Enter the API key from your deployed litellm-pgvector server",placeholder:"your-deployed-api-key",required:!0,type:"password"}],vertex_rag_engine:[],openai:[{name:"api_key",label:"API Key",tooltip:"Enter your OpenAI API key",placeholder:"sk-...",required:!0,type:"password"}],azure:[{name:"api_key",label:"API Key",tooltip:"Enter your Azure OpenAI API key",placeholder:"your-azure-api-key",required:!0,type:"password"},{name:"api_base",label:"API Base",tooltip:"Enter your Azure OpenAI endpoint (e.g., https://your-resource.openai.azure.com/)",placeholder:"https://your-resource.openai.azure.com/",required:!0,type:"text"}]},ob=e=>oy[e]||[];var o_=e=>{let{isVisible:s,onCancel:t,onSuccess:l,accessToken:a,credentials:r}=e,[i]=A.Z.useForm(),[n,m]=(0,d.useState)("{}"),[u,x]=(0,d.useState)("bedrock"),h=async e=>{if(a)try{let s={};try{s=n.trim()?JSON.parse(n):{}}catch(e){eo.Z.fromBackend("Invalid JSON in metadata field");return}let t={vector_store_id:e.vector_store_id,custom_llm_provider:e.custom_llm_provider,vector_store_name:e.vector_store_name,vector_store_description:e.vector_store_description,vector_store_metadata:s,litellm_credential_name:e.litellm_credential_name},r=ob(e.custom_llm_provider).reduce((s,t)=>(s[t.name]=e[t.name],s),{});t.litellm_params=r,await (0,j.vectorStoreCreateCall)(a,t),eo.Z.success("Vector store created successfully"),i.resetFields(),m("{}"),l()}catch(e){console.error("Error creating vector store:",e),eo.Z.fromBackend("Error creating vector store: "+e)}},p=()=>{i.resetFields(),m("{}"),x("bedrock"),t()};return(0,c.jsx)(T.Z,{title:"Add New Vector Store",visible:s,width:1e3,footer:null,onCancel:p,children:(0,c.jsxs)(A.Z,{form:i,onFinish:h,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Provider"," ",(0,c.jsx)(B.Z,{title:"Select the provider for this vector store",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"custom_llm_provider",rules:[{required:!0,message:"Please select a provider"}],initialValue:"bedrock",children:(0,c.jsx)(I.default,{onChange:e=>x(e),children:Object.entries(o).map(e=>{let[s,t]=e;return(0,c.jsx)(I.default.Option,{value:oj[s],children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:ov[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s)})})}),"pg_vector"===u&&(0,c.jsx)(lm.Z,{message:"PG Vector Setup Required",description:(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{children:"LiteLLM provides a server to connect to PG Vector. To use this provider:"}),(0,c.jsxs)("ol",{style:{marginLeft:"16px",marginTop:"8px"},children:[(0,c.jsxs)("li",{children:["Deploy the litellm-pgvector server from:"," ",(0,c.jsx)("a",{href:"https://github.com/BerriAI/litellm-pgvector",target:"_blank",rel:"noopener noreferrer",children:"https://github.com/BerriAI/litellm-pgvector"})]}),(0,c.jsx)("li",{children:"Configure your PostgreSQL database with pgvector extension"}),(0,c.jsx)("li",{children:"Start the server and note the API base URL and API key"}),(0,c.jsx)("li",{children:"Enter those details in the fields below"})]})]}),type:"info",showIcon:!0,style:{marginBottom:"16px"}}),"vertex_rag_engine"===u&&(0,c.jsx)(lm.Z,{message:"Vertex AI RAG Engine Setup",description:(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{children:"To use Vertex AI RAG Engine:"}),(0,c.jsxs)("ol",{style:{marginLeft:"16px",marginTop:"8px"},children:[(0,c.jsxs)("li",{children:["Set up your Vertex AI RAG Engine corpus following the guide:"," ",(0,c.jsx)("a",{href:"https://cloud.google.com/vertex-ai/generative-ai/docs/rag-engine/rag-overview",target:"_blank",rel:"noopener noreferrer",children:"Vertex AI RAG Engine Overview"})]}),(0,c.jsx)("li",{children:"Create a corpus in your Google Cloud project"}),(0,c.jsx)("li",{children:"Note the corpus ID from the Vertex AI console"}),(0,c.jsx)("li",{children:"Enter the corpus ID in the Vector Store ID field below"})]})]}),type:"info",showIcon:!0,style:{marginBottom:"16px"}}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Vector Store ID"," ",(0,c.jsx)(B.Z,{title:"Enter the vector store ID from your api provider",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"vector_store_id",rules:[{required:!0,message:"Please input the vector store ID from your api provider"}],children:(0,c.jsx)(_.Z,{placeholder:"vertex_rag_engine"===u?"6917529027641081856 (Get corpus ID from Vertex AI console)":"Enter vector store ID from your provider"})}),ob(u).map(e=>(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:[e.label," ",(0,c.jsx)(B.Z,{title:e.tooltip,children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:e.name,rules:e.required?[{required:!0,message:"Please input the ".concat(e.label.toLowerCase())}]:[],children:(0,c.jsx)(_.Z,{type:e.type||"text",placeholder:e.placeholder})},e.name)),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Vector Store Name"," ",(0,c.jsx)(B.Z,{title:"Custom name you want to give to the vector store, this name will be rendered on the LiteLLM UI",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"vector_store_name",children:(0,c.jsx)(_.Z,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"vector_store_description",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Existing Credentials"," ",(0,c.jsx)(B.Z,{title:"Optionally select API provider credentials for this vector store eg. Bedrock API KEY",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"litellm_credential_name",children:(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Select or search for existing credentials",optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{value:null,label:"None"},...r.map(e=>({value:e.credential_name,label:e.credential_name}))],allowClear:!0})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Metadata"," ",(0,c.jsx)(B.Z,{title:"JSON metadata for the vector store (optional)",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),children:(0,c.jsx)(P.default.TextArea,{rows:4,value:n,onChange:e=>m(e.target.value),placeholder:'{"key": "value"}'})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-3",children:[(0,c.jsx)(b.Z,{onClick:p,variant:"secondary",children:"Cancel"}),(0,c.jsx)(b.Z,{variant:"primary",type:"submit",children:"Create"})]})]})})},oN=e=>{let{isVisible:s,onCancel:t,onConfirm:l}=e;return(0,c.jsxs)(T.Z,{title:"Delete Vector Store",visible:s,footer:null,onCancel:t,children:[(0,c.jsx)("p",{children:"Are you sure you want to delete this vector store? This action cannot be undone."}),(0,c.jsxs)("div",{className:"px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,c.jsx)(b.Z,{onClick:l,color:"red",className:"ml-2",children:"Delete"}),(0,c.jsx)(b.Z,{onClick:t,variant:"primary",children:"Cancel"})]})]})},oZ=t(23907);let{TextArea:ow}=P.default,{Text:ok,Title:oS}=en.default;var oC=e=>{let{vectorStoreId:s,accessToken:t,className:l=""}=e,[a,r]=(0,d.useState)(""),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)([]),[u,x]=(0,d.useState)({}),h=async()=>{if(!a.trim()){ty.ZP.warning("Please enter a search query");return}n(!0);try{let e=await (0,j.vectorStoreSearchCall)(t,s,a),l={query:a,response:e,timestamp:Date.now()};m(e=>[l,...e]),r("")}catch(e){console.error("Error searching vector store:",e),eo.Z.fromBackend("Failed to search vector store")}finally{n(!1)}},p=e=>new Date(e).toLocaleString(),g=(e,s)=>{let t="".concat(e,"-").concat(s);x(e=>({...e,[t]:!e[t]}))};return(0,c.jsx)(tL.Z,{className:"w-full rounded-xl shadow-md",children:(0,c.jsxs)("div",{className:"flex flex-col h-[600px]",children:[(0,c.jsxs)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:[(0,c.jsxs)("div",{className:"flex items-center",children:[(0,c.jsx)(r3.Z,{className:"mr-2 text-blue-500"}),(0,c.jsx)(oS,{level:4,className:"mb-0",children:"Test Vector Store"})]}),o.length>0&&(0,c.jsx)(L.ZP,{onClick:()=>{m([]),x({}),eo.Z.success("Search history cleared")},size:"small",children:"Clear History"})]}),(0,c.jsxs)("div",{className:"flex-1 overflow-auto p-4 pb-0",children:[0===o.length?(0,c.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,c.jsx)(r3.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,c.jsx)(ok,{children:"Test your vector store by entering a search query below"})]}):(0,c.jsx)("div",{className:"space-y-4",children:o.map((e,s)=>{var t;return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("div",{className:"text-right",children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3 bg-blue-50 border border-blue-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,c.jsx)("strong",{className:"text-sm",children:"Query"}),(0,c.jsx)("span",{className:"text-xs text-gray-500",children:p(e.timestamp)})]}),(0,c.jsx)("div",{className:"text-left",children:e.query})]})}),(0,c.jsx)("div",{className:"text-left",children:(0,c.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3 bg-white border border-gray-200",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,c.jsx)(r3.Z,{className:"text-green-500"}),(0,c.jsx)("strong",{className:"text-sm",children:"Vector Store Results"}),e.response&&(0,c.jsxs)("span",{className:"text-xs px-2 py-0.5 rounded bg-gray-100 text-gray-600",children:[(null===(t=e.response.data)||void 0===t?void 0:t.length)||0," results"]})]}),e.response&&e.response.data&&e.response.data.length>0?(0,c.jsx)("div",{className:"space-y-3",children:e.response.data.map((e,t)=>{let l=u["".concat(s,"-").concat(t)]||!1;return(0,c.jsxs)("div",{className:"border rounded-lg overflow-hidden bg-gray-50",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center p-3 cursor-pointer hover:bg-gray-100 transition-colors",onClick:()=>g(s,t),children:[(0,c.jsxs)("div",{className:"flex items-center",children:[l?(0,c.jsx)(tP.Z,{className:"text-gray-500 mr-2"}):(0,c.jsx)(lh.Z,{className:"text-gray-500 mr-2"}),(0,c.jsxs)("span",{className:"font-medium text-sm",children:["Result ",t+1]}),!l&&e.content&&e.content[0]&&(0,c.jsxs)("span",{className:"ml-2 text-xs text-gray-500 truncate max-w-md",children:["- ",e.content[0].text.substring(0,100),"..."]})]}),(0,c.jsxs)("span",{className:"text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded",children:["Score: ",e.score.toFixed(4)]})]}),l&&(0,c.jsxs)("div",{className:"border-t bg-white p-3",children:[e.content&&e.content.map((e,s)=>(0,c.jsxs)("div",{className:"mb-3",children:[(0,c.jsxs)("div",{className:"text-xs text-gray-500 mb-1",children:["Content (",e.type,")"]}),(0,c.jsx)("div",{className:"text-sm bg-gray-50 p-3 rounded border text-gray-800 max-h-40 overflow-y-auto",children:e.text})]},s)),(e.file_id||e.filename||e.attributes)&&(0,c.jsxs)("div",{className:"mt-3 pt-3 border-t border-gray-200",children:[(0,c.jsx)("div",{className:"text-xs text-gray-500 mb-2 font-medium",children:"Metadata"}),(0,c.jsxs)("div",{className:"space-y-2 text-xs",children:[e.file_id&&(0,c.jsxs)("div",{className:"bg-gray-50 p-2 rounded",children:[(0,c.jsx)("span",{className:"font-medium",children:"File ID:"})," ",e.file_id]}),e.filename&&(0,c.jsxs)("div",{className:"bg-gray-50 p-2 rounded",children:[(0,c.jsx)("span",{className:"font-medium",children:"Filename:"})," ",e.filename]}),e.attributes&&Object.keys(e.attributes).length>0&&(0,c.jsxs)("div",{className:"bg-gray-50 p-2 rounded",children:[(0,c.jsx)("span",{className:"font-medium block mb-1",children:"Attributes:"}),(0,c.jsx)("pre",{className:"text-xs bg-white p-2 rounded border overflow-x-auto",children:JSON.stringify(e.attributes,null,2)})]})]})]})]})]},t)})}):(0,c.jsx)("div",{className:"text-gray-500 text-sm",children:"No results found"})]})}),sr(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),h())},placeholder:"Enter your search query... (Shift+Enter for new line)",disabled:i,autoSize:{minRows:1,maxRows:4},style:{resize:"none"}})}),(0,c.jsx)(L.ZP,{type:"primary",onClick:h,disabled:i||!a.trim(),icon:(0,c.jsx)(oZ.Z,{}),loading:i,children:"Search"})]})})]})})},oI=e=>{let{vectorStoreId:s,onClose:t,accessToken:l,is_admin:a,editVectorStore:r}=e,[i]=A.Z.useForm(),[n,o]=(0,d.useState)(null),[m,u]=(0,d.useState)(r),[x,h]=(0,d.useState)("{}"),[p,g]=(0,d.useState)([]),[f,v]=(0,d.useState)("details"),y=async()=>{if(l)try{let e=await (0,j.vectorStoreInfoCall)(l,s);if(e&&e.vector_store){if(o(e.vector_store),e.vector_store.vector_store_metadata){let s="string"==typeof e.vector_store.vector_store_metadata?JSON.parse(e.vector_store.vector_store_metadata):e.vector_store.vector_store_metadata;h(JSON.stringify(s,null,2))}r&&i.setFieldsValue({vector_store_id:e.vector_store.vector_store_id,custom_llm_provider:e.vector_store.custom_llm_provider,vector_store_name:e.vector_store.vector_store_name,vector_store_description:e.vector_store.vector_store_description})}}catch(e){console.error("Error fetching vector store details:",e),eo.Z.fromBackend("Error fetching vector store details: "+e)}},_=async()=>{if(l)try{let e=await (0,j.credentialListCall)(l);console.log("List credentials response:",e),g(e.credentials||[])}catch(e){console.error("Error fetching credentials:",e)}};(0,d.useEffect)(()=>{y(),_()},[s,l]);let N=async e=>{if(l)try{let s={};try{s=x?JSON.parse(x):{}}catch(e){eo.Z.fromBackend("Invalid JSON in metadata field");return}let t={vector_store_id:e.vector_store_id,custom_llm_provider:e.custom_llm_provider,vector_store_name:e.vector_store_name,vector_store_description:e.vector_store_description,vector_store_metadata:s};await (0,j.vectorStoreUpdateCall)(l,t),eo.Z.success("Vector store updated successfully"),u(!1),y()}catch(e){console.error("Error updating vector store:",e),eo.Z.fromBackend("Error updating vector store: "+e)}};return n?(0,c.jsxs)("div",{className:"p-4 max-w-full",children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(b.Z,{icon:si.Z,variant:"light",className:"mb-4",onClick:t,children:"Back to Vector Stores"}),(0,c.jsxs)(S.Z,{children:["Vector Store ID: ",n.vector_store_id]}),(0,c.jsx)(k.Z,{className:"text-gray-500",children:n.vector_store_description||"No description"})]}),a&&!m&&(0,c.jsx)(b.Z,{onClick:()=>u(!0),children:"Edit Vector Store"})]}),(0,c.jsxs)(st.Z,{children:[(0,c.jsxs)(sl.Z,{className:"mb-6",children:[(0,c.jsx)(ss.Z,{children:"Details"}),(0,c.jsx)(ss.Z,{children:"Test Vector Store"})]}),(0,c.jsxs)(sr.Z,{children:[(0,c.jsx)(sa.Z,{children:m?(0,c.jsxs)("div",{children:[(0,c.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,c.jsx)(S.Z,{children:"Edit Vector Store"})}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)(A.Z,{form:i,onFinish:N,layout:"vertical",initialValues:n,children:[(0,c.jsx)(A.Z.Item,{label:"Vector Store ID",name:"vector_store_id",rules:[{required:!0,message:"Please input a vector store ID"}],children:(0,c.jsx)(P.default,{disabled:!0})}),(0,c.jsx)(A.Z.Item,{label:"Vector Store Name",name:"vector_store_name",children:(0,c.jsx)(P.default,{})}),(0,c.jsx)(A.Z.Item,{label:"Description",name:"vector_store_description",children:(0,c.jsx)(P.default.TextArea,{rows:4})}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Provider"," ",(0,c.jsx)(B.Z,{title:"Select the provider for this vector store",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),name:"custom_llm_provider",rules:[{required:!0,message:"Please select a provider"}],children:(0,c.jsx)(I.default,{children:Object.entries(s0.Cl).map(e=>{let[s,t]=e;return"Bedrock"===s?(0,c.jsx)(I.default.Option,{value:s0.fK[s],children:(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,c.jsx)("img",{src:s0.cd[t],alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let s=e.target,l=s.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=t.charAt(0),l.replaceChild(e,s)}}}),(0,c.jsx)("span",{children:t})]})},s):null})})}),(0,c.jsx)("div",{className:"mb-4",children:(0,c.jsx)(k.Z,{className:"text-sm text-gray-500 mb-2",children:"Either select existing credentials OR enter provider credentials below"})}),(0,c.jsx)(A.Z.Item,{label:"Existing Credentials",name:"litellm_credential_name",children:(0,c.jsx)(I.default,{showSearch:!0,placeholder:"Select or search for existing credentials",optionFilterProp:"children",filterOption:(e,s)=>{var t;return(null!==(t=null==s?void 0:s.label)&&void 0!==t?t:"").toLowerCase().includes(e.toLowerCase())},options:[{value:null,label:"None"},...p.map(e=>({value:e.credential_name,label:e.credential_name}))],allowClear:!0})}),(0,c.jsxs)("div",{className:"flex items-center my-4",children:[(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"}),(0,c.jsx)("span",{className:"px-4 text-gray-500 text-sm",children:"OR"}),(0,c.jsx)("div",{className:"flex-grow border-t border-gray-200"})]}),(0,c.jsx)(A.Z.Item,{label:(0,c.jsxs)("span",{children:["Metadata"," ",(0,c.jsx)(B.Z,{title:"JSON metadata for the vector store",children:(0,c.jsx)(V.Z,{style:{marginLeft:"4px"}})})]}),children:(0,c.jsx)(P.default.TextArea,{rows:4,value:x,onChange:e=>h(e.target.value),placeholder:'{"key": "value"}'})}),(0,c.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,c.jsx)(L.ZP,{onClick:()=>u(!1),children:"Cancel"}),(0,c.jsx)(L.ZP,{type:"primary",htmlType:"submit",children:"Save Changes"})]})]})})]}):(0,c.jsxs)("div",{children:[(0,c.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,c.jsx)(S.Z,{children:"Vector Store Details"}),a&&(0,c.jsx)(b.Z,{onClick:()=>u(!0),children:"Edit Vector Store"})]}),(0,c.jsx)(G.Z,{children:(0,c.jsxs)("div",{className:"space-y-4",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"ID"}),(0,c.jsx)(k.Z,{children:n.vector_store_id})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Name"}),(0,c.jsx)(k.Z,{children:n.vector_store_name||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Description"}),(0,c.jsx)(k.Z,{children:n.vector_store_description||"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Provider"}),(0,c.jsx)("div",{className:"flex items-center space-x-2 mt-1",children:(()=>{let e=n.custom_llm_provider||"bedrock",{displayName:s,logo:t}=(()=>{let s=Object.keys(s0.fK).find(s=>s0.fK[s].toLowerCase()===e.toLowerCase());if(!s)return{displayName:e,logo:""};let t=s0.Cl[s],l=s0.cd[t];return{displayName:t,logo:l}})();return(0,c.jsxs)(c.Fragment,{children:[t&&(0,c.jsx)("img",{src:t,alt:"".concat(s," logo"),className:"w-5 h-5",onError:e=>{let t=e.target,l=t.parentElement;if(l){let e=document.createElement("div");e.className="w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=s.charAt(0),l.replaceChild(e,t)}}}),(0,c.jsx)(se.Z,{color:"blue",children:s})]})})()})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Metadata"}),(0,c.jsx)("div",{className:"bg-gray-50 p-3 rounded mt-2 font-mono text-xs overflow-auto max-h-48",children:(0,c.jsx)("pre",{children:x})})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Created"}),(0,c.jsx)(k.Z,{children:n.created_at?new Date(n.created_at).toLocaleString():"-"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"font-medium",children:"Last Updated"}),(0,c.jsx)(k.Z,{children:n.updated_at?new Date(n.updated_at).toLocaleString():"-"})]})]})})]})}),(0,c.jsx)(sa.Z,{children:(0,c.jsx)(oC,{vectorStoreId:n.vector_store_id,accessToken:l||""})})]})]})]}):(0,c.jsx)("div",{children:"Loading..."})},oA=e=>{let{accessToken:s,userID:t,userRole:l}=e,[a,r]=(0,d.useState)([]),[i,n]=(0,d.useState)(!1),[o,m]=(0,d.useState)(!1),[u,x]=(0,d.useState)(null),[h,p]=(0,d.useState)(""),[g,f]=(0,d.useState)([]),[_,N]=(0,d.useState)(null),[Z,w]=(0,d.useState)(!1),S=async()=>{if(s)try{let e=await (0,j.vectorStoreListCall)(s);console.log("List vector stores response:",e),r(e.data||[])}catch(e){console.error("Error fetching vector stores:",e),eo.Z.fromBackend("Error fetching vector stores: "+e)}},C=async()=>{if(s)try{let e=await (0,j.credentialListCall)(s);console.log("List credentials response:",e),f(e.credentials||[])}catch(e){console.error("Error fetching credentials:",e),eo.Z.fromBackend("Error fetching credentials: "+e)}},I=async e=>{x(e),m(!0)},A=async()=>{if(s&&u){try{await (0,j.vectorStoreDeleteCall)(s,u),eo.Z.success("Vector store deleted successfully"),S()}catch(e){console.error("Error deleting vector store:",e),eo.Z.fromBackend("Error deleting vector store: "+e)}m(!1),x(null)}};return(0,d.useEffect)(()=>{S(),C()},[s]),_?(0,c.jsx)("div",{className:"w-full h-full",children:(0,c.jsx)(oI,{vectorStoreId:_,onClose:()=>{N(null),w(!1),S()},accessToken:s,is_admin:(0,eI.tY)(l||""),editVectorStore:Z})}):(0,c.jsx)("div",{className:"w-full mx-4 h-[75vh]",children:(0,c.jsxs)("div",{className:"gap-2 p-8 h-[75vh] w-full mt-2",children:[(0,c.jsxs)("div",{className:"flex justify-between mt-2 w-full items-center mb-4",children:[(0,c.jsx)("h1",{children:"Vector Store Management"}),(0,c.jsxs)("div",{className:"flex items-center space-x-2",children:[h&&(0,c.jsxs)(k.Z,{children:["Last Refreshed: ",h]}),(0,c.jsx)(sD.Z,{icon:sn.Z,variant:"shadow",size:"xs",className:"self-center cursor-pointer",onClick:()=>{S(),C(),p(new Date().toLocaleString())}})]})]}),(0,c.jsx)(k.Z,{className:"mb-4",children:(0,c.jsx)("p",{children:"You can use vector stores to store and retrieve LLM embeddings.."})}),(0,c.jsx)(b.Z,{className:"mb-4",onClick:()=>n(!0),children:"+ Add Vector Store"}),(0,c.jsx)(y.Z,{numItems:1,className:"gap-2 pt-2 pb-2 h-[75vh] w-full mt-2",children:(0,c.jsx)(v.Z,{numColSpan:1,children:(0,c.jsx)(og,{data:a,onView:e=>{N(e),w(!1)},onEdit:e=>{N(e),w(!0)},onDelete:I})})}),(0,c.jsx)(o_,{isVisible:i,onCancel:()=>n(!1),onSuccess:()=>{n(!1),S()},accessToken:s,credentials:g}),(0,c.jsx)(oN,{isVisible:o,onCancel:()=>m(!1),onConfirm:A})]})})},oT=e=>{let{userID:s,userRole:t,accessToken:l}=e,{logoUrl:a,setLogoUrl:r}=(0,g.F)(),[i,n]=(0,d.useState)(""),[o,m]=(0,d.useState)(!1);(0,d.useEffect)(()=>{l&&u()},[l]);let u=async()=>{try{let s=(0,j.getProxyBaseUrl)(),t=await fetch(s?"".concat(s,"/get/ui_theme_settings"):"/get/ui_theme_settings",{method:"GET",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"}});if(t.ok){var e;let s=await t.json(),l=(null===(e=s.values)||void 0===e?void 0:e.logo_url)||"";n(l),r(l||null)}}catch(e){console.error("Error fetching theme settings:",e)}},x=async()=>{m(!0);try{let e=(0,j.getProxyBaseUrl)();if((await fetch(e?"".concat(e,"/update/ui_theme_settings"):"/update/ui_theme_settings",{method:"PATCH",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify({logo_url:i||null})})).ok)eo.Z.success("Logo settings updated successfully!"),r(i||null);else throw Error("Failed to update settings")}catch(e){console.error("Error updating logo settings:",e),eo.Z.fromBackend("Failed to update logo settings")}finally{m(!1)}},h=async()=>{n(""),r(null),m(!0);try{let e=(0,j.getProxyBaseUrl)();if((await fetch(e?"".concat(e,"/update/ui_theme_settings"):"/update/ui_theme_settings",{method:"PATCH",headers:{Authorization:"Bearer ".concat(l),"Content-Type":"application/json"},body:JSON.stringify({logo_url:null})})).ok)eo.Z.success("Logo reset to default!");else throw Error("Failed to reset logo")}catch(e){console.error("Error resetting logo:",e),eo.Z.fromBackend("Failed to reset logo")}finally{m(!1)}};return l?(0,c.jsxs)("div",{className:"w-full mx-auto max-w-4xl px-6 py-8",children:[(0,c.jsxs)("div",{className:"mb-8",children:[(0,c.jsx)(S.Z,{className:"text-2xl font-bold mb-2",children:"Logo Customization"}),(0,c.jsx)(k.Z,{className:"text-gray-600",children:"Customize your LiteLLM admin dashboard with a custom logo."})]}),(0,c.jsx)(G.Z,{className:"shadow-sm p-6",children:(0,c.jsxs)("div",{className:"space-y-6",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium text-gray-700 mb-2 block",children:"Custom Logo URL"}),(0,c.jsx)(_.Z,{placeholder:"https://example.com/logo.png",value:i,onValueChange:e=>{n(e),r(e||null)},className:"w-full"}),(0,c.jsx)(k.Z,{className:"text-xs text-gray-500 mt-1",children:"Enter a URL for your custom logo or leave empty to use the default LiteLLM logo"})]}),(0,c.jsxs)("div",{children:[(0,c.jsx)(k.Z,{className:"text-sm font-medium text-gray-700 mb-2 block",children:"Current Logo"}),(0,c.jsx)("div",{className:"bg-gray-50 rounded-lg p-6 flex items-center justify-center min-h-[120px]",children:i?(0,c.jsx)("img",{src:i,alt:"Custom logo",className:"max-w-full max-h-24 object-contain",onError:e=>{var s;let t=e.target;t.style.display="none";let l=document.createElement("div");l.className="text-gray-500 text-sm",l.textContent="Failed to load image",null===(s=t.parentElement)||void 0===s||s.appendChild(l)}}):(0,c.jsx)(k.Z,{className:"text-gray-500 text-sm",children:"Default LiteLLM logo will be used"})})]}),(0,c.jsxs)("div",{className:"flex gap-3 pt-4",children:[(0,c.jsx)(b.Z,{onClick:x,loading:o,disabled:o,color:"indigo",children:"Save Changes"}),(0,c.jsx)(b.Z,{onClick:h,loading:o,disabled:o,variant:"secondary",color:"gray",children:"Reset to Default"})]})]})})]}):null};let oE=new x.S;function oL(){return(0,c.jsxs)("div",{className:rn("h-screen","flex items-center justify-center gap-4"),children:[(0,c.jsx)("div",{className:"text-lg font-medium py-2 pr-4 border-r border-r-gray-200",children:"\uD83D\uDE85 LiteLLM"}),(0,c.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,c.jsx)(rc,{className:"size-4"}),(0,c.jsx)("span",{className:"text-gray-600 text-sm",children:"Loading..."})]})]})}function oP(){let[e,s]=(0,d.useState)(""),[t,l]=(0,d.useState)(!1),[a,r]=(0,d.useState)(!1),[i,n]=(0,d.useState)(null),[o,x]=(0,d.useState)(null),[v,y]=(0,d.useState)([]),[b,_]=(0,d.useState)([]),[N,Z]=(0,d.useState)([]),[w,k]=(0,d.useState)({PROXY_BASE_URL:"",PROXY_LOGOUT_URL:""}),[S,C]=(0,d.useState)(!0),I=(0,m.useSearchParams)(),[A,T]=(0,d.useState)({data:[]}),[E,L]=(0,d.useState)(null),[P,M]=(0,d.useState)(!1),[O,D]=(0,d.useState)(!0),[F,R]=(0,d.useState)(null),z=I.get("invitation_id"),[U,q]=(0,d.useState)(()=>I.get("page")||"api-keys"),[V,B]=(0,d.useState)(null),[K,G]=(0,d.useState)(!1),H=e=>{y(s=>s?[...s,e]:[e]),M(()=>!P)},Y=!1===O&&null===E&&null===z;return((0,d.useEffect)(()=>{let e=function(e){let s=document.cookie.split("; ").find(s=>s.startsWith(e+"="));return s?s.split("=")[1]:null}("token");(0,j.getUiConfig)().then(s=>{L(e),D(!1)})},[]),(0,d.useEffect)(()=>{Y&&(window.location.href=(j.proxyBaseUrl||"")+"/sso/key/generate")},[Y]),(0,d.useEffect)(()=>{if(!E)return;let e=(0,u.o)(E);if(e){if(B(e.key),r(e.disabled_non_admin_personal_key_creation),e.user_role){let t=function(e){if(!e)return"Undefined Role";switch(e.toLowerCase()){case"app_owner":case"demo_app_owner":return"App Owner";case"app_admin":case"proxy_admin":return"Admin";case"proxy_admin_viewer":return"Admin Viewer";case"org_admin":return"Org Admin";case"internal_user":return"Internal User";case"internal_user_viewer":case"internal_viewer":return"Internal Viewer";case"app_user":return"App User";default:return"Unknown Role"}}(e.user_role);s(t),"Admin Viewer"==t&&q("usage")}e.user_email&&n(e.user_email),e.login_method&&C("username_password"==e.login_method),e.premium_user&&l(e.premium_user),e.auth_header_name&&(0,j.setGlobalLitellmHeaderName)(e.auth_header_name),e.user_id&&R(e.user_id)}},[E]),(0,d.useEffect)(()=>{V&&F&&e&&e5(F,e,V,Z),V&&F&&e&&f(V,F,e,null,x),V&&lJ(V,_)},[V,F,e]),O||Y)?(0,c.jsx)(oL,{}):(0,c.jsx)(d.Suspense,{fallback:(0,c.jsx)(oL,{}),children:(0,c.jsx)(h.aH,{client:oE,children:(0,c.jsx)(g.f,{accessToken:V,children:z?(0,c.jsx)(sQ,{userID:F,userRole:e,premiumUser:t,teams:o,keys:v,setUserRole:s,userEmail:i,setUserEmail:n,setTeams:x,setKeys:y,organizations:b,addKey:H,createClicked:P}):(0,c.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,c.jsx)(p.Z,{userID:F,userRole:e,premiumUser:t,userEmail:i,setProxySettings:k,proxySettings:w,accessToken:V,isPublicPage:!1,sidebarCollapsed:K,onToggleSidebar:()=>{G(!K)}}),(0,c.jsxs)("div",{className:"flex flex-1 overflow-auto",children:[(0,c.jsx)("div",{className:"mt-2",children:(0,c.jsx)(iC,{accessToken:V,setPage:e=>{let s=new URLSearchParams(I);s.set("page",e),window.history.pushState(null,"","?".concat(s.toString())),q(e)},userRole:e,defaultSelectedKey:U,collapsed:K})}),"api-keys"==U?(0,c.jsx)(sQ,{userID:F,userRole:e,premiumUser:t,teams:o,keys:v,setUserRole:s,userEmail:i,setUserEmail:n,setTeams:x,setKeys:y,organizations:b,addKey:H,createClicked:P}):"models"==U?(0,c.jsx)(lC,{userID:F,userRole:e,token:E,keys:v,accessToken:V,modelData:A,setModelData:T,premiumUser:t,teams:o}):"llm-playground"==U?(0,c.jsx)(ia,{userID:F,userRole:e,token:E,accessToken:V,disabledPersonalKeyCreation:a}):"users"==U?(0,c.jsx)(lq,{userID:F,userRole:e,token:E,keys:v,teams:o,accessToken:V,setKeys:y}):"teams"==U?(0,c.jsx)(lH,{teams:o,setTeams:x,searchParams:I,accessToken:V,userID:F,userRole:e,organizations:b,premiumUser:t}):"organizations"==U?(0,c.jsx)(lW,{organizations:b,setOrganizations:_,userModels:N,accessToken:V,userRole:e,premiumUser:t}):"admin-panel"==U?(0,c.jsx)(l8,{setTeams:x,searchParams:I,accessToken:V,userID:F,showSSOBanner:S,premiumUser:t,proxySettings:w}):"api_ref"==U?(0,c.jsx)(rp,{proxySettings:w}):"settings"==U?(0,c.jsx)(an,{userID:F,userRole:e,accessToken:V,premiumUser:t}):"budgets"==U?(0,c.jsx)(av,{accessToken:V}):"guardrails"==U?(0,c.jsx)(ny,{accessToken:V,userRole:e}):"prompts"==U?(0,c.jsx)(nw,{accessToken:V,userRole:e}):"transform-request"==U?(0,c.jsx)(nk,{accessToken:V}):"general-settings"==U?(0,c.jsx)(ap,{userID:F,userRole:e,accessToken:V,modelData:A}):"ui-theme"==U?(0,c.jsx)(oT,{userID:F,userRole:e,accessToken:V}):"model-hub-table"==U?(0,c.jsx)(aW.Z,{accessToken:V,publicPage:!1,premiumUser:t,userRole:e}):"caching"==U?(0,c.jsx)(iq,{userID:F,userRole:e,token:E,accessToken:V,premiumUser:t}):"pass-through-settings"==U?(0,c.jsx)(lw,{userID:F,userRole:e,accessToken:V,modelData:A}):"logs"==U?(0,c.jsx)(aY,{userID:F,userRole:e,token:E,accessToken:V,allTeams:null!=o?o:[],premiumUser:t}):"mcp-servers"==U?(0,c.jsx)(oa,{accessToken:V,userRole:e,userID:F}):"tag-management"==U?(0,c.jsx)(op,{accessToken:V,userRole:e,userID:F}):"vector-stores"==U?(0,c.jsx)(oA,{accessToken:V,userRole:e,userID:F}):"new_usage"==U?(0,c.jsx)(rh,{userID:F,userRole:e,accessToken:V,teams:null!=o?o:[],premiumUser:t}):(0,c.jsx)(iL,{userID:F,userRole:e,token:E,accessToken:V,keys:v,premiumUser:t})]})]})})})})}}},function(e){e.O(0,[665,990,50,521,866,313,49,162,851,971,117,744],function(){return e(e.s=36362)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/main-app-4f7318ae681a6d94.js b/litellm/proxy/_experimental/out/_next/static/chunks/main-app-bb35cb240fbb9dca.js similarity index 54% rename from litellm/proxy/_experimental/out/_next/static/chunks/main-app-4f7318ae681a6d94.js rename to litellm/proxy/_experimental/out/_next/static/chunks/main-app-bb35cb240fbb9dca.js index 04cf9b11058..959563da946 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/main-app-4f7318ae681a6d94.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/main-app-bb35cb240fbb9dca.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[744],{10264:function(e,n,t){Promise.resolve().then(t.t.bind(t,12846,23)),Promise.resolve().then(t.t.bind(t,19107,23)),Promise.resolve().then(t.t.bind(t,61060,23)),Promise.resolve().then(t.t.bind(t,4707,23)),Promise.resolve().then(t.t.bind(t,80,23)),Promise.resolve().then(t.t.bind(t,36423,23))}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[971,117],function(){return n(54278),n(10264)}),_N_E=e.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[744],{78483:function(e,n,t){Promise.resolve().then(t.t.bind(t,12846,23)),Promise.resolve().then(t.t.bind(t,19107,23)),Promise.resolve().then(t.t.bind(t,61060,23)),Promise.resolve().then(t.t.bind(t,4707,23)),Promise.resolve().then(t.t.bind(t,80,23)),Promise.resolve().then(t.t.bind(t,36423,23))}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[971,117],function(){return n(54278),n(78483)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/css/a94bb091dba1d4f2.css b/litellm/proxy/_experimental/out/_next/static/css/a94bb091dba1d4f2.css new file mode 100644 index 00000000000..beea82334cc --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/css/a94bb091dba1d4f2.css @@ -0,0 +1,3 @@ +/* +! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com +*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af}input::placeholder,textarea::placeholder{color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors:active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors:active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media (forced-colors:active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.not-sr-only{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-1{inset:-.25rem}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-x-\[-1\.5rem\]{left:-1.5rem;right:-1.5rem}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-\[-1\.5rem\]{bottom:-1.5rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-1{right:.25rem}.right-1\/2{right:50%}.right-10{right:2.5rem}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-4{top:1rem}.top-8{top:2rem}.top-full{top:100%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.col-span-1{grid-column:span 1/span 1}.col-span-10{grid-column:span 10/span 10}.col-span-11{grid-column:span 11/span 11}.col-span-12{grid-column:span 12/span 12}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-7{grid-column:span 7/span 7}.col-span-8{grid-column:span 8/span 8}.col-span-9{grid-column:span 9/span 9}.m-0{margin:0}.m-2{margin:.5rem}.m-8{margin:2rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.\!mb-0{margin-bottom:0!important}.-mb-px{margin-bottom:-1px}.-ml-0{margin-left:0}.-ml-0\.5{margin-left:-.125rem}.-ml-1{margin-left:-.25rem}.-ml-1\.5{margin-left:-.375rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0{margin-left:0}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-11{margin-left:2.75rem}.ml-12{margin-left:3rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-6{margin-left:1.5rem}.ml-7{margin-left:1.75rem}.ml-8{margin-left:2rem}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-2\.5{margin-right:.625rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-8{margin-right:2rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.box-border{box-sizing:border-box}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.\!inline{display:inline!important}.inline{display:inline}.\!flex{display:flex!important}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.size-12{width:3rem;height:3rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.\!h-8{height:2rem!important}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-52{height:13rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-80{height:20rem}.h-9{height:2.25rem}.h-\[100vh\]{height:100vh}.h-\[1px\]{height:1px}.h-\[350px\]{height:350px}.h-\[600px\]{height:600px}.h-\[75vh\]{height:75vh}.h-\[80vh\]{height:80vh}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-24{max-height:6rem}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-8{max-height:2rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[228px\]{max-height:228px}.max-h-\[400px\]{max-height:400px}.max-h-\[40vh\]{max-height:40vh}.max-h-\[500px\]{max-height:500px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[65vh\]{max-height:65vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[75vh\]{max-height:75vh}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-\[120px\]{min-height:120px}.min-h-\[380px\]{min-height:380px}.min-h-\[400px\]{min-height:400px}.min-h-\[44px\]{min-height:44px}.min-h-\[500px\]{min-height:500px}.min-h-\[750px\]{min-height:750px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.\!w-8{width:2rem!important}.w-0{width:0}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-11\/12{width:91.666667%}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[120px\]{width:120px}.w-\[300px\]{width:300px}.w-\[400px\]{width:400px}.w-\[90\%\]{width:90%}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-screen{width:100vw}.\!min-w-8{min-width:2rem!important}.min-w-0{min-width:0}.min-w-\[10rem\]{min-width:10rem}.min-w-\[200px\]{min-width:200px}.min-w-\[600px\]{min-width:600px}.min-w-\[90px\]{min-width:90px}.min-w-full{min-width:100%}.min-w-min{min-width:-moz-min-content;min-width:min-content}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-4xl{max-width:56rem}.max-w-64{max-width:16rem}.max-w-6xl{max-width:72rem}.max-w-\[100px\]{max-width:100px}.max-w-\[10ch\]{max-width:10ch}.max-w-\[120px\]{max-width:120px}.max-w-\[150px\]{max-width:150px}.max-w-\[15ch\]{max-width:15ch}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[20ch\]{max-width:20ch}.max-w-\[210px\]{max-width:210px}.max-w-\[250px\]{max-width:250px}.max-w-\[80\%\]{max-width:80%}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-4{--tw-translate-y:-1rem}.-translate-y-4,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-1\/2{--tw-translate-x:50%}.translate-x-1\/2,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-y-0{--tw-translate-y:0px}.-rotate-180,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-180{--tw-rotate:-180deg}.-rotate-90{--tw-rotate:-90deg}.-rotate-90,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.rotate-90{--tw-rotate:90deg}.rotate-90,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-95,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-none{grid-template-columns:none}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.\!items-center{align-items:center!important}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.\!justify-center{justify-content:center!important}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-4{row-gap:1rem}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.125rem * var(--tw-space-x-reverse));margin-left:calc(.125rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem * var(--tw-space-x-reverse));margin-left:calc(.375rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem * var(--tw-space-x-reverse));margin-left:calc(2.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.625rem * var(--tw-space-x-reverse));margin-left:calc(.625rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse:1}.space-x-reverse>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-y-reverse>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:1}.divide-x-reverse>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}.divide-tremor-border>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity))}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-clip{overflow-x:clip}.overflow-x-scroll{overflow-x:scroll}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.text-clip{text-overflow:clip}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!rounded-full{border-radius:9999px!important}.\!rounded-none{border-radius:0!important}.rounded{border-radius:.25rem}.rounded-\[1px\]{border-radius:1px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-tremor-default{border-radius:.5rem}.rounded-tremor-full{border-radius:9999px}.rounded-tremor-small{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-tremor-default{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-l-tremor-default{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-tremor-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.rounded-l-tremor-small{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-r-tremor-default{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-r-tremor-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-tremor-small{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg,.rounded-t-tremor-default{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-bl{border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-x{border-left-width:1px;border-right-width:1px}.border-y{border-top-width:1px}.border-b,.border-y{border-bottom-width:1px}.border-b-4{border-bottom-width:4px}.border-e{border-inline-end-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-r-4{border-right-width:4px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.border-t-4{border-top-width:4px}.border-t-\[1px\]{border-top-width:1px}.border-dashed{border-style:dashed}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-amber-100{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.border-amber-50{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}.border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.border-amber-600{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.border-amber-700{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}.border-amber-800{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}.border-amber-950{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}.border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.border-blue-50{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}.border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}.border-blue-950{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}.border-cyan-100{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}.border-cyan-200{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}.border-cyan-300{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}.border-cyan-400{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}.border-cyan-50{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}.border-cyan-500{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.border-cyan-600{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}.border-cyan-700{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}.border-cyan-800{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}.border-cyan-900{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}.border-cyan-950{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}.border-dark-tremor-background{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.border-dark-tremor-border{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.border-dark-tremor-brand{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-dark-tremor-brand-emphasis{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.border-dark-tremor-brand-inverted{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.border-dark-tremor-brand-subtle{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.border-emerald-100{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}.border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.border-emerald-400{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.border-emerald-50{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}.border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.border-emerald-600{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.border-emerald-700{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.border-emerald-800{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.border-emerald-900{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}.border-emerald-950{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}.border-fuchsia-100{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}.border-fuchsia-200{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}.border-fuchsia-300{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}.border-fuchsia-400{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}.border-fuchsia-50{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}.border-fuchsia-500{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.border-fuchsia-600{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.border-fuchsia-700{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}.border-fuchsia-800{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.border-fuchsia-900{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}.border-fuchsia-950{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.border-gray-50{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.border-gray-950{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}.border-green-100{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}.border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}.border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}.border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.border-green-50{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.border-green-700{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}.border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}.border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.border-green-950{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}.border-indigo-100{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}.border-indigo-200{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}.border-indigo-300{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.border-indigo-400{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.border-indigo-50{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}.border-indigo-500{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-indigo-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.border-indigo-700{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.border-indigo-800{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.border-indigo-900{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}.border-indigo-950{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.border-lime-100{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}.border-lime-200{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}.border-lime-300{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}.border-lime-400{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}.border-lime-50{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}.border-lime-500{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.border-lime-600{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}.border-lime-700{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}.border-lime-800{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}.border-lime-900{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}.border-lime-950{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}.border-neutral-100{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}.border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.border-neutral-300{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.border-neutral-400{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.border-neutral-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.border-neutral-500{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}.border-neutral-600{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.border-neutral-700{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.border-neutral-800{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}.border-neutral-900{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}.border-neutral-950{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}.border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}.border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}.border-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.border-orange-50{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}.border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.border-orange-600{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.border-orange-700{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}.border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}.border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}.border-orange-950{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}.border-pink-100{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}.border-pink-200{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}.border-pink-300{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}.border-pink-400{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}.border-pink-50{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}.border-pink-500{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.border-pink-600{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.border-pink-700{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}.border-pink-800{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}.border-pink-900{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}.border-pink-950{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}.border-purple-100{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}.border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.border-purple-300{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.border-purple-400{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}.border-purple-50{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}.border-purple-500{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.border-purple-600{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.border-purple-700{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}.border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}.border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}.border-purple-950{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}.border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.border-red-50{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.border-red-700{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}.border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}.border-red-950{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}.border-rose-100{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}.border-rose-200{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.border-rose-300{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.border-rose-400{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.border-rose-50{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}.border-rose-500{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}.border-rose-600{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.border-rose-700{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}.border-rose-800{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.border-rose-900{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}.border-rose-950{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}.border-sky-100{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.border-sky-300{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.border-sky-400{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.border-sky-50{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}.border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.border-sky-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.border-sky-700{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.border-sky-950{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.border-slate-400{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.border-slate-50{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.border-slate-900{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.border-slate-950{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}.border-stone-100{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}.border-stone-200{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}.border-stone-300{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.border-stone-400{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}.border-stone-50{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}.border-stone-500{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}.border-stone-600{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}.border-stone-700{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}.border-stone-800{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}.border-stone-900{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}.border-stone-950{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}.border-teal-100{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}.border-teal-200{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}.border-teal-300{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}.border-teal-400{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.border-teal-50{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}.border-teal-500{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.border-teal-600{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.border-teal-700{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}.border-teal-800{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}.border-teal-900{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}.border-teal-950{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-tremor-background{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-tremor-border{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-tremor-brand{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-tremor-brand-emphasis{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.border-tremor-brand-inverted{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-tremor-brand-subtle{--tw-border-opacity:1;border-color:rgb(142 145 235/var(--tw-border-opacity))}.border-violet-100{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}.border-violet-200{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}.border-violet-300{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.border-violet-400{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.border-violet-50{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}.border-violet-500{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}.border-violet-600{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}.border-violet-700{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}.border-violet-800{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}.border-violet-900{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}.border-violet-950{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}.border-yellow-100{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}.border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}.border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.border-yellow-50{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}.border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}.border-yellow-600{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}.border-yellow-700{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}.border-yellow-800{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.border-yellow-900{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}.border-yellow-950{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}.border-zinc-100{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.border-zinc-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.border-zinc-400{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.border-zinc-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.border-zinc-500{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}.border-zinc-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.border-zinc-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.border-zinc-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}.border-zinc-950{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}.border-r-gray-200{--tw-border-opacity:1;border-right-color:rgb(229 231 235/var(--tw-border-opacity))}.border-t-transparent{border-top-color:transparent}.\!bg-blue-600{--tw-bg-opacity:1!important;background-color:rgb(37 99 235/var(--tw-bg-opacity))!important}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.bg-amber-200{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.bg-amber-300{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.bg-amber-700{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.bg-amber-800{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-black\/90{background-color:rgba(0,0,0,.9)}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.bg-blue-300{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.bg-blue-800{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.bg-cyan-200{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.bg-cyan-300{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}.bg-cyan-400{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.bg-cyan-50{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}.bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}.bg-cyan-600{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.bg-cyan-700{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}.bg-cyan-800{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.bg-cyan-900{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}.bg-cyan-950{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}.bg-dark-tremor-background{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-dark-tremor-background-subtle{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-dark-tremor-brand{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-dark-tremor-brand-emphasis{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.bg-dark-tremor-brand-faint{--tw-bg-opacity:1;background-color:rgb(11 18 41/var(--tw-bg-opacity))}.bg-dark-tremor-brand-muted{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.bg-dark-tremor-content-subtle{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.bg-emerald-200{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.bg-emerald-300{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.bg-emerald-800{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.bg-emerald-900{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.bg-emerald-950{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}.bg-fuchsia-100{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.bg-fuchsia-200{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}.bg-fuchsia-300{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}.bg-fuchsia-400{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}.bg-fuchsia-50{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}.bg-fuchsia-500{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}.bg-fuchsia-600{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.bg-fuchsia-700{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.bg-fuchsia-800{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.bg-fuchsia-900{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}.bg-fuchsia-950{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-50\/50{background-color:rgba(249,250,251,.5)}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.bg-green-300{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.bg-green-800{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.bg-indigo-200{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.bg-indigo-300{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}.bg-indigo-400{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.bg-indigo-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.bg-indigo-700{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.bg-indigo-800{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.bg-indigo-900{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.bg-indigo-950{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.bg-lime-100{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.bg-lime-200{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.bg-lime-300{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}.bg-lime-400{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}.bg-lime-50{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}.bg-lime-500{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.bg-lime-700{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.bg-lime-800{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.bg-lime-900{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}.bg-lime-950{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.bg-neutral-200{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.bg-neutral-400{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}.bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-neutral-500{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.bg-neutral-600{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.bg-neutral-950{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.bg-orange-300{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}.bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}.bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}.bg-pink-300{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}.bg-pink-400{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.bg-pink-500{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.bg-pink-700{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.bg-pink-800{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.bg-pink-900{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}.bg-pink-950{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}.bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}.bg-purple-300{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}.bg-purple-400{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.bg-purple-800{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}.bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-red-300{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}.bg-rose-100{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.bg-rose-200{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.bg-rose-300{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}.bg-rose-400{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.bg-rose-50{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.bg-rose-700{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.bg-rose-800{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.bg-rose-900{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.bg-rose-950{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.bg-sky-200{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.bg-sky-400{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-sky-700{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.bg-sky-800{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.bg-sky-900{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.bg-slate-950\/30{background-color:rgba(2,6,23,.3)}.bg-stone-100{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.bg-stone-200{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.bg-stone-300{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}.bg-stone-400{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}.bg-stone-50{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}.bg-stone-500{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}.bg-stone-600{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}.bg-stone-700{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}.bg-stone-800{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}.bg-stone-900{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}.bg-stone-950{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}.bg-teal-100{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.bg-teal-200{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}.bg-teal-300{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}.bg-teal-400{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.bg-teal-50{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}.bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.bg-teal-800{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.bg-teal-900{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}.bg-teal-950{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-tremor-background{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-tremor-background-emphasis{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-tremor-background-muted{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-tremor-background-subtle{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-tremor-border{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-tremor-brand{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-tremor-brand-muted{--tw-bg-opacity:1;background-color:rgb(134 136 239/var(--tw-bg-opacity))}.bg-tremor-brand-muted\/50{background-color:rgba(134,136,239,.5)}.bg-tremor-brand-subtle{--tw-bg-opacity:1;background-color:rgb(142 145 235/var(--tw-bg-opacity))}.bg-tremor-content-subtle{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.bg-violet-200{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.bg-violet-300{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.bg-violet-400{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}.bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.bg-violet-500{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}.bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.bg-violet-700{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}.bg-violet-800{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.bg-violet-900{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}.bg-violet-950{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.bg-yellow-300{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.bg-yellow-700{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}.bg-yellow-800{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}.bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.bg-yellow-950{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.bg-zinc-300{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}.bg-zinc-400{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-zinc-500{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}.bg-zinc-600{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.bg-zinc-950{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}.bg-opacity-10{--tw-bg-opacity:0.1}.bg-opacity-20{--tw-bg-opacity:0.2}.bg-opacity-30{--tw-bg-opacity:0.3}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from:#f59e0b var(--tw-gradient-from-position);--tw-gradient-to:rgba(245,158,11,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-50{--tw-gradient-from:#eff6ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,246,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-emerald-50{--tw-gradient-from:#ecfdf5 var(--tw-gradient-from-position);--tw-gradient-to:rgba(236,253,245,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-50{--tw-gradient-from:#f0fdf4 var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-orange-50{--tw-gradient-from:#fff7ed var(--tw-gradient-from-position);--tw-gradient-to:rgba(255,247,237,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-50{--tw-gradient-from:#faf5ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(250,245,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:transparent var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-tremor-background{--tw-gradient-from:#fff var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-blue-50{--tw-gradient-to:#eff6ff var(--tw-gradient-to-position)}.to-green-50{--tw-gradient-to:#f0fdf4 var(--tw-gradient-to-position)}.to-indigo-50{--tw-gradient-to:#eef2ff var(--tw-gradient-to-position)}.to-red-50{--tw-gradient-to:#fef2f2 var(--tw-gradient-to-position)}.to-teal-50{--tw-gradient-to:#f0fdfa var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.to-tremor-background{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.to-yellow-500{--tw-gradient-to:#eab308 var(--tw-gradient-to-position)}.bg-repeat{background-repeat:repeat}.fill-amber-100{fill:#fef3c7}.fill-amber-200{fill:#fde68a}.fill-amber-300{fill:#fcd34d}.fill-amber-400{fill:#fbbf24}.fill-amber-50{fill:#fffbeb}.fill-amber-500{fill:#f59e0b}.fill-amber-600{fill:#d97706}.fill-amber-700{fill:#b45309}.fill-amber-800{fill:#92400e}.fill-amber-900{fill:#78350f}.fill-amber-950{fill:#451a03}.fill-blue-100{fill:#dbeafe}.fill-blue-200{fill:#bfdbfe}.fill-blue-300{fill:#93c5fd}.fill-blue-400{fill:#60a5fa}.fill-blue-50{fill:#eff6ff}.fill-blue-500{fill:#3b82f6}.fill-blue-600{fill:#2563eb}.fill-blue-700{fill:#1d4ed8}.fill-blue-800{fill:#1e40af}.fill-blue-900{fill:#1e3a8a}.fill-blue-950{fill:#172554}.fill-cyan-100{fill:#cffafe}.fill-cyan-200{fill:#a5f3fc}.fill-cyan-300{fill:#67e8f9}.fill-cyan-400{fill:#22d3ee}.fill-cyan-50{fill:#ecfeff}.fill-cyan-500{fill:#06b6d4}.fill-cyan-600{fill:#0891b2}.fill-cyan-700{fill:#0e7490}.fill-cyan-800{fill:#155e75}.fill-cyan-900{fill:#164e63}.fill-cyan-950{fill:#083344}.fill-emerald-100{fill:#d1fae5}.fill-emerald-200{fill:#a7f3d0}.fill-emerald-300{fill:#6ee7b7}.fill-emerald-400{fill:#34d399}.fill-emerald-50{fill:#ecfdf5}.fill-emerald-500{fill:#10b981}.fill-emerald-600{fill:#059669}.fill-emerald-700{fill:#047857}.fill-emerald-800{fill:#065f46}.fill-emerald-900{fill:#064e3b}.fill-emerald-950{fill:#022c22}.fill-fuchsia-100{fill:#fae8ff}.fill-fuchsia-200{fill:#f5d0fe}.fill-fuchsia-300{fill:#f0abfc}.fill-fuchsia-400{fill:#e879f9}.fill-fuchsia-50{fill:#fdf4ff}.fill-fuchsia-500{fill:#d946ef}.fill-fuchsia-600{fill:#c026d3}.fill-fuchsia-700{fill:#a21caf}.fill-fuchsia-800{fill:#86198f}.fill-fuchsia-900{fill:#701a75}.fill-fuchsia-950{fill:#4a044e}.fill-gray-100{fill:#f3f4f6}.fill-gray-200{fill:#e5e7eb}.fill-gray-300{fill:#d1d5db}.fill-gray-400{fill:#9ca3af}.fill-gray-50{fill:#f9fafb}.fill-gray-500{fill:#6b7280}.fill-gray-600{fill:#4b5563}.fill-gray-700{fill:#374151}.fill-gray-800{fill:#1f2937}.fill-gray-900{fill:#111827}.fill-gray-950{fill:#030712}.fill-green-100{fill:#dcfce7}.fill-green-200{fill:#bbf7d0}.fill-green-300{fill:#86efac}.fill-green-400{fill:#4ade80}.fill-green-50{fill:#f0fdf4}.fill-green-500{fill:#22c55e}.fill-green-600{fill:#16a34a}.fill-green-700{fill:#15803d}.fill-green-800{fill:#166534}.fill-green-900{fill:#14532d}.fill-green-950{fill:#052e16}.fill-indigo-100{fill:#e0e7ff}.fill-indigo-200{fill:#c7d2fe}.fill-indigo-300{fill:#a5b4fc}.fill-indigo-400{fill:#818cf8}.fill-indigo-50{fill:#eef2ff}.fill-indigo-500{fill:#6366f1}.fill-indigo-600{fill:#4f46e5}.fill-indigo-700{fill:#4338ca}.fill-indigo-800{fill:#3730a3}.fill-indigo-900{fill:#312e81}.fill-indigo-950{fill:#1e1b4b}.fill-lime-100{fill:#ecfccb}.fill-lime-200{fill:#d9f99d}.fill-lime-300{fill:#bef264}.fill-lime-400{fill:#a3e635}.fill-lime-50{fill:#f7fee7}.fill-lime-500{fill:#84cc16}.fill-lime-600{fill:#65a30d}.fill-lime-700{fill:#4d7c0f}.fill-lime-800{fill:#3f6212}.fill-lime-900{fill:#365314}.fill-lime-950{fill:#1a2e05}.fill-neutral-100{fill:#f5f5f5}.fill-neutral-200{fill:#e5e5e5}.fill-neutral-300{fill:#d4d4d4}.fill-neutral-400{fill:#a3a3a3}.fill-neutral-50{fill:#fafafa}.fill-neutral-500{fill:#737373}.fill-neutral-600{fill:#525252}.fill-neutral-700{fill:#404040}.fill-neutral-800{fill:#262626}.fill-neutral-900{fill:#171717}.fill-neutral-950{fill:#0a0a0a}.fill-orange-100{fill:#ffedd5}.fill-orange-200{fill:#fed7aa}.fill-orange-300{fill:#fdba74}.fill-orange-400{fill:#fb923c}.fill-orange-50{fill:#fff7ed}.fill-orange-500{fill:#f97316}.fill-orange-600{fill:#ea580c}.fill-orange-700{fill:#c2410c}.fill-orange-800{fill:#9a3412}.fill-orange-900{fill:#7c2d12}.fill-orange-950{fill:#431407}.fill-pink-100{fill:#fce7f3}.fill-pink-200{fill:#fbcfe8}.fill-pink-300{fill:#f9a8d4}.fill-pink-400{fill:#f472b6}.fill-pink-50{fill:#fdf2f8}.fill-pink-500{fill:#ec4899}.fill-pink-600{fill:#db2777}.fill-pink-700{fill:#be185d}.fill-pink-800{fill:#9d174d}.fill-pink-900{fill:#831843}.fill-pink-950{fill:#500724}.fill-purple-100{fill:#f3e8ff}.fill-purple-200{fill:#e9d5ff}.fill-purple-300{fill:#d8b4fe}.fill-purple-400{fill:#c084fc}.fill-purple-50{fill:#faf5ff}.fill-purple-500{fill:#a855f7}.fill-purple-600{fill:#9333ea}.fill-purple-700{fill:#7e22ce}.fill-purple-800{fill:#6b21a8}.fill-purple-900{fill:#581c87}.fill-purple-950{fill:#3b0764}.fill-red-100{fill:#fee2e2}.fill-red-200{fill:#fecaca}.fill-red-300{fill:#fca5a5}.fill-red-400{fill:#f87171}.fill-red-50{fill:#fef2f2}.fill-red-500{fill:#ef4444}.fill-red-600{fill:#dc2626}.fill-red-700{fill:#b91c1c}.fill-red-800{fill:#991b1b}.fill-red-900{fill:#7f1d1d}.fill-red-950{fill:#450a0a}.fill-rose-100{fill:#ffe4e6}.fill-rose-200{fill:#fecdd3}.fill-rose-300{fill:#fda4af}.fill-rose-400{fill:#fb7185}.fill-rose-50{fill:#fff1f2}.fill-rose-500{fill:#f43f5e}.fill-rose-600{fill:#e11d48}.fill-rose-700{fill:#be123c}.fill-rose-800{fill:#9f1239}.fill-rose-900{fill:#881337}.fill-rose-950{fill:#4c0519}.fill-sky-100{fill:#e0f2fe}.fill-sky-200{fill:#bae6fd}.fill-sky-300{fill:#7dd3fc}.fill-sky-400{fill:#38bdf8}.fill-sky-50{fill:#f0f9ff}.fill-sky-500{fill:#0ea5e9}.fill-sky-600{fill:#0284c7}.fill-sky-700{fill:#0369a1}.fill-sky-800{fill:#075985}.fill-sky-900{fill:#0c4a6e}.fill-sky-950{fill:#082f49}.fill-slate-100{fill:#f1f5f9}.fill-slate-200{fill:#e2e8f0}.fill-slate-300{fill:#cbd5e1}.fill-slate-400{fill:#94a3b8}.fill-slate-50{fill:#f8fafc}.fill-slate-500{fill:#64748b}.fill-slate-600{fill:#475569}.fill-slate-700{fill:#334155}.fill-slate-800{fill:#1e293b}.fill-slate-900{fill:#0f172a}.fill-slate-950{fill:#020617}.fill-stone-100{fill:#f5f5f4}.fill-stone-200{fill:#e7e5e4}.fill-stone-300{fill:#d6d3d1}.fill-stone-400{fill:#a8a29e}.fill-stone-50{fill:#fafaf9}.fill-stone-500{fill:#78716c}.fill-stone-600{fill:#57534e}.fill-stone-700{fill:#44403c}.fill-stone-800{fill:#292524}.fill-stone-900{fill:#1c1917}.fill-stone-950{fill:#0c0a09}.fill-teal-100{fill:#ccfbf1}.fill-teal-200{fill:#99f6e4}.fill-teal-300{fill:#5eead4}.fill-teal-400{fill:#2dd4bf}.fill-teal-50{fill:#f0fdfa}.fill-teal-500{fill:#14b8a6}.fill-teal-600{fill:#0d9488}.fill-teal-700{fill:#0f766e}.fill-teal-800{fill:#115e59}.fill-teal-900{fill:#134e4a}.fill-teal-950{fill:#042f2e}.fill-tremor-content{fill:#6b7280}.fill-tremor-content-emphasis{fill:#374151}.fill-violet-100{fill:#ede9fe}.fill-violet-200{fill:#ddd6fe}.fill-violet-300{fill:#c4b5fd}.fill-violet-400{fill:#a78bfa}.fill-violet-50{fill:#f5f3ff}.fill-violet-500{fill:#8b5cf6}.fill-violet-600{fill:#7c3aed}.fill-violet-700{fill:#6d28d9}.fill-violet-800{fill:#5b21b6}.fill-violet-900{fill:#4c1d95}.fill-violet-950{fill:#2e1065}.fill-yellow-100{fill:#fef9c3}.fill-yellow-200{fill:#fef08a}.fill-yellow-300{fill:#fde047}.fill-yellow-400{fill:#facc15}.fill-yellow-50{fill:#fefce8}.fill-yellow-500{fill:#eab308}.fill-yellow-600{fill:#ca8a04}.fill-yellow-700{fill:#a16207}.fill-yellow-800{fill:#854d0e}.fill-yellow-900{fill:#713f12}.fill-yellow-950{fill:#422006}.fill-zinc-100{fill:#f4f4f5}.fill-zinc-200{fill:#e4e4e7}.fill-zinc-300{fill:#d4d4d8}.fill-zinc-400{fill:#a1a1aa}.fill-zinc-50{fill:#fafafa}.fill-zinc-500{fill:#71717a}.fill-zinc-600{fill:#52525b}.fill-zinc-700{fill:#3f3f46}.fill-zinc-800{fill:#27272a}.fill-zinc-900{fill:#18181b}.fill-zinc-950{fill:#09090b}.stroke-amber-100{stroke:#fef3c7}.stroke-amber-200{stroke:#fde68a}.stroke-amber-300{stroke:#fcd34d}.stroke-amber-400{stroke:#fbbf24}.stroke-amber-50{stroke:#fffbeb}.stroke-amber-500{stroke:#f59e0b}.stroke-amber-600{stroke:#d97706}.stroke-amber-700{stroke:#b45309}.stroke-amber-800{stroke:#92400e}.stroke-amber-900{stroke:#78350f}.stroke-amber-950{stroke:#451a03}.stroke-blue-100{stroke:#dbeafe}.stroke-blue-200{stroke:#bfdbfe}.stroke-blue-300{stroke:#93c5fd}.stroke-blue-400{stroke:#60a5fa}.stroke-blue-50{stroke:#eff6ff}.stroke-blue-500{stroke:#3b82f6}.stroke-blue-600{stroke:#2563eb}.stroke-blue-700{stroke:#1d4ed8}.stroke-blue-800{stroke:#1e40af}.stroke-blue-900{stroke:#1e3a8a}.stroke-blue-950{stroke:#172554}.stroke-cyan-100{stroke:#cffafe}.stroke-cyan-200{stroke:#a5f3fc}.stroke-cyan-300{stroke:#67e8f9}.stroke-cyan-400{stroke:#22d3ee}.stroke-cyan-50{stroke:#ecfeff}.stroke-cyan-500{stroke:#06b6d4}.stroke-cyan-600{stroke:#0891b2}.stroke-cyan-700{stroke:#0e7490}.stroke-cyan-800{stroke:#155e75}.stroke-cyan-900{stroke:#164e63}.stroke-cyan-950{stroke:#083344}.stroke-dark-tremor-background{stroke:#111827}.stroke-dark-tremor-border{stroke:#374151}.stroke-emerald-100{stroke:#d1fae5}.stroke-emerald-200{stroke:#a7f3d0}.stroke-emerald-300{stroke:#6ee7b7}.stroke-emerald-400{stroke:#34d399}.stroke-emerald-50{stroke:#ecfdf5}.stroke-emerald-500{stroke:#10b981}.stroke-emerald-600{stroke:#059669}.stroke-emerald-700{stroke:#047857}.stroke-emerald-800{stroke:#065f46}.stroke-emerald-900{stroke:#064e3b}.stroke-emerald-950{stroke:#022c22}.stroke-fuchsia-100{stroke:#fae8ff}.stroke-fuchsia-200{stroke:#f5d0fe}.stroke-fuchsia-300{stroke:#f0abfc}.stroke-fuchsia-400{stroke:#e879f9}.stroke-fuchsia-50{stroke:#fdf4ff}.stroke-fuchsia-500{stroke:#d946ef}.stroke-fuchsia-600{stroke:#c026d3}.stroke-fuchsia-700{stroke:#a21caf}.stroke-fuchsia-800{stroke:#86198f}.stroke-fuchsia-900{stroke:#701a75}.stroke-fuchsia-950{stroke:#4a044e}.stroke-gray-100{stroke:#f3f4f6}.stroke-gray-200{stroke:#e5e7eb}.stroke-gray-300{stroke:#d1d5db}.stroke-gray-400{stroke:#9ca3af}.stroke-gray-50{stroke:#f9fafb}.stroke-gray-500{stroke:#6b7280}.stroke-gray-600{stroke:#4b5563}.stroke-gray-700{stroke:#374151}.stroke-gray-800{stroke:#1f2937}.stroke-gray-900{stroke:#111827}.stroke-gray-950{stroke:#030712}.stroke-green-100{stroke:#dcfce7}.stroke-green-200{stroke:#bbf7d0}.stroke-green-300{stroke:#86efac}.stroke-green-400{stroke:#4ade80}.stroke-green-50{stroke:#f0fdf4}.stroke-green-500{stroke:#22c55e}.stroke-green-600{stroke:#16a34a}.stroke-green-700{stroke:#15803d}.stroke-green-800{stroke:#166534}.stroke-green-900{stroke:#14532d}.stroke-green-950{stroke:#052e16}.stroke-indigo-100{stroke:#e0e7ff}.stroke-indigo-200{stroke:#c7d2fe}.stroke-indigo-300{stroke:#a5b4fc}.stroke-indigo-400{stroke:#818cf8}.stroke-indigo-50{stroke:#eef2ff}.stroke-indigo-500{stroke:#6366f1}.stroke-indigo-600{stroke:#4f46e5}.stroke-indigo-700{stroke:#4338ca}.stroke-indigo-800{stroke:#3730a3}.stroke-indigo-900{stroke:#312e81}.stroke-indigo-950{stroke:#1e1b4b}.stroke-lime-100{stroke:#ecfccb}.stroke-lime-200{stroke:#d9f99d}.stroke-lime-300{stroke:#bef264}.stroke-lime-400{stroke:#a3e635}.stroke-lime-50{stroke:#f7fee7}.stroke-lime-500{stroke:#84cc16}.stroke-lime-600{stroke:#65a30d}.stroke-lime-700{stroke:#4d7c0f}.stroke-lime-800{stroke:#3f6212}.stroke-lime-900{stroke:#365314}.stroke-lime-950{stroke:#1a2e05}.stroke-neutral-100{stroke:#f5f5f5}.stroke-neutral-200{stroke:#e5e5e5}.stroke-neutral-300{stroke:#d4d4d4}.stroke-neutral-400{stroke:#a3a3a3}.stroke-neutral-50{stroke:#fafafa}.stroke-neutral-500{stroke:#737373}.stroke-neutral-600{stroke:#525252}.stroke-neutral-700{stroke:#404040}.stroke-neutral-800{stroke:#262626}.stroke-neutral-900{stroke:#171717}.stroke-neutral-950{stroke:#0a0a0a}.stroke-orange-100{stroke:#ffedd5}.stroke-orange-200{stroke:#fed7aa}.stroke-orange-300{stroke:#fdba74}.stroke-orange-400{stroke:#fb923c}.stroke-orange-50{stroke:#fff7ed}.stroke-orange-500{stroke:#f97316}.stroke-orange-600{stroke:#ea580c}.stroke-orange-700{stroke:#c2410c}.stroke-orange-800{stroke:#9a3412}.stroke-orange-900{stroke:#7c2d12}.stroke-orange-950{stroke:#431407}.stroke-pink-100{stroke:#fce7f3}.stroke-pink-200{stroke:#fbcfe8}.stroke-pink-300{stroke:#f9a8d4}.stroke-pink-400{stroke:#f472b6}.stroke-pink-50{stroke:#fdf2f8}.stroke-pink-500{stroke:#ec4899}.stroke-pink-600{stroke:#db2777}.stroke-pink-700{stroke:#be185d}.stroke-pink-800{stroke:#9d174d}.stroke-pink-900{stroke:#831843}.stroke-pink-950{stroke:#500724}.stroke-purple-100{stroke:#f3e8ff}.stroke-purple-200{stroke:#e9d5ff}.stroke-purple-300{stroke:#d8b4fe}.stroke-purple-400{stroke:#c084fc}.stroke-purple-50{stroke:#faf5ff}.stroke-purple-500{stroke:#a855f7}.stroke-purple-600{stroke:#9333ea}.stroke-purple-700{stroke:#7e22ce}.stroke-purple-800{stroke:#6b21a8}.stroke-purple-900{stroke:#581c87}.stroke-purple-950{stroke:#3b0764}.stroke-red-100{stroke:#fee2e2}.stroke-red-200{stroke:#fecaca}.stroke-red-300{stroke:#fca5a5}.stroke-red-400{stroke:#f87171}.stroke-red-50{stroke:#fef2f2}.stroke-red-500{stroke:#ef4444}.stroke-red-600{stroke:#dc2626}.stroke-red-700{stroke:#b91c1c}.stroke-red-800{stroke:#991b1b}.stroke-red-900{stroke:#7f1d1d}.stroke-red-950{stroke:#450a0a}.stroke-rose-100{stroke:#ffe4e6}.stroke-rose-200{stroke:#fecdd3}.stroke-rose-300{stroke:#fda4af}.stroke-rose-400{stroke:#fb7185}.stroke-rose-50{stroke:#fff1f2}.stroke-rose-500{stroke:#f43f5e}.stroke-rose-600{stroke:#e11d48}.stroke-rose-700{stroke:#be123c}.stroke-rose-800{stroke:#9f1239}.stroke-rose-900{stroke:#881337}.stroke-rose-950{stroke:#4c0519}.stroke-sky-100{stroke:#e0f2fe}.stroke-sky-200{stroke:#bae6fd}.stroke-sky-300{stroke:#7dd3fc}.stroke-sky-400{stroke:#38bdf8}.stroke-sky-50{stroke:#f0f9ff}.stroke-sky-500{stroke:#0ea5e9}.stroke-sky-600{stroke:#0284c7}.stroke-sky-700{stroke:#0369a1}.stroke-sky-800{stroke:#075985}.stroke-sky-900{stroke:#0c4a6e}.stroke-sky-950{stroke:#082f49}.stroke-slate-100{stroke:#f1f5f9}.stroke-slate-200{stroke:#e2e8f0}.stroke-slate-300{stroke:#cbd5e1}.stroke-slate-400{stroke:#94a3b8}.stroke-slate-50{stroke:#f8fafc}.stroke-slate-500{stroke:#64748b}.stroke-slate-600{stroke:#475569}.stroke-slate-700{stroke:#334155}.stroke-slate-800{stroke:#1e293b}.stroke-slate-900{stroke:#0f172a}.stroke-slate-950{stroke:#020617}.stroke-stone-100{stroke:#f5f5f4}.stroke-stone-200{stroke:#e7e5e4}.stroke-stone-300{stroke:#d6d3d1}.stroke-stone-400{stroke:#a8a29e}.stroke-stone-50{stroke:#fafaf9}.stroke-stone-500{stroke:#78716c}.stroke-stone-600{stroke:#57534e}.stroke-stone-700{stroke:#44403c}.stroke-stone-800{stroke:#292524}.stroke-stone-900{stroke:#1c1917}.stroke-stone-950{stroke:#0c0a09}.stroke-teal-100{stroke:#ccfbf1}.stroke-teal-200{stroke:#99f6e4}.stroke-teal-300{stroke:#5eead4}.stroke-teal-400{stroke:#2dd4bf}.stroke-teal-50{stroke:#f0fdfa}.stroke-teal-500{stroke:#14b8a6}.stroke-teal-600{stroke:#0d9488}.stroke-teal-700{stroke:#0f766e}.stroke-teal-800{stroke:#115e59}.stroke-teal-900{stroke:#134e4a}.stroke-teal-950{stroke:#042f2e}.stroke-tremor-background{stroke:#fff}.stroke-tremor-border{stroke:#e5e7eb}.stroke-tremor-brand{stroke:#6366f1}.stroke-tremor-brand-muted\/50{stroke:rgba(134,136,239,.5)}.stroke-violet-100{stroke:#ede9fe}.stroke-violet-200{stroke:#ddd6fe}.stroke-violet-300{stroke:#c4b5fd}.stroke-violet-400{stroke:#a78bfa}.stroke-violet-50{stroke:#f5f3ff}.stroke-violet-500{stroke:#8b5cf6}.stroke-violet-600{stroke:#7c3aed}.stroke-violet-700{stroke:#6d28d9}.stroke-violet-800{stroke:#5b21b6}.stroke-violet-900{stroke:#4c1d95}.stroke-violet-950{stroke:#2e1065}.stroke-yellow-100{stroke:#fef9c3}.stroke-yellow-200{stroke:#fef08a}.stroke-yellow-300{stroke:#fde047}.stroke-yellow-400{stroke:#facc15}.stroke-yellow-50{stroke:#fefce8}.stroke-yellow-500{stroke:#eab308}.stroke-yellow-600{stroke:#ca8a04}.stroke-yellow-700{stroke:#a16207}.stroke-yellow-800{stroke:#854d0e}.stroke-yellow-900{stroke:#713f12}.stroke-yellow-950{stroke:#422006}.stroke-zinc-100{stroke:#f4f4f5}.stroke-zinc-200{stroke:#e4e4e7}.stroke-zinc-300{stroke:#d4d4d8}.stroke-zinc-400{stroke:#a1a1aa}.stroke-zinc-50{stroke:#fafafa}.stroke-zinc-500{stroke:#71717a}.stroke-zinc-600{stroke:#52525b}.stroke-zinc-700{stroke:#3f3f46}.stroke-zinc-800{stroke:#27272a}.stroke-zinc-900{stroke:#18181b}.stroke-zinc-950{stroke:#09090b}.stroke-1{stroke-width:1}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-0{padding:0!important}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[10px\]{padding-top:10px;padding-bottom:10px}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-7{padding-left:1.75rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-14{padding-right:3.5rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[12px\]{font-size:12px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-tremor-default{font-size:.775rem;line-height:1.15rem}.text-tremor-label{font-size:.75rem;line-height:.3rem}.text-tremor-metric{font-size:1.675rem;line-height:2.15rem}.text-tremor-title{font-size:1.025rem;line-height:1.65rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.normal-nums{font-variant-numeric:normal}.ordinal{--tw-ordinal:ordinal}.ordinal,.slashed-zero{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero}.lining-nums{--tw-numeric-figure:lining-nums}.lining-nums,.oldstyle-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums}.proportional-nums{--tw-numeric-spacing:proportional-nums}.proportional-nums,.tabular-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-6{line-height:1.5rem}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.text-amber-50{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.text-amber-950{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.text-blue-50{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.text-blue-950{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}.text-current{color:currentColor}.text-cyan-100{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.text-cyan-200{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}.text-cyan-300{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}.text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.text-cyan-50{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}.text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.text-cyan-800{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}.text-cyan-900{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.text-cyan-950{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}.text-dark-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-dark-tremor-brand-emphasis{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.text-dark-tremor-brand-inverted{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.text-dark-tremor-content{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-dark-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.text-dark-tremor-content-subtle{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-emerald-100{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.text-emerald-200{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.text-emerald-50{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}.text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.text-emerald-900{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}.text-emerald-950{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}.text-fuchsia-100{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}.text-fuchsia-200{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.text-fuchsia-300{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}.text-fuchsia-400{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}.text-fuchsia-50{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}.text-fuchsia-500{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}.text-fuchsia-600{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.text-fuchsia-700{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.text-fuchsia-800{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.text-fuchsia-900{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}.text-fuchsia-950{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-gray-950{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.text-green-100{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-green-50{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}.text-green-950{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}.text-indigo-100{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}.text-indigo-200{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.text-indigo-300{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.text-indigo-50{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}.text-indigo-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.text-indigo-900{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.text-indigo-950{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.text-inherit{color:inherit}.text-lime-100{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}.text-lime-200{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}.text-lime-300{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}.text-lime-400{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}.text-lime-50{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}.text-lime-500{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}.text-lime-600{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.text-lime-700{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}.text-lime-800{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}.text-lime-900{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.text-lime-950{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}.text-neutral-100{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.text-neutral-300{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}.text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}.text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.text-orange-50{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.text-orange-900{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}.text-orange-950{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}.text-pink-100{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}.text-pink-200{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.text-pink-300{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}.text-pink-400{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}.text-pink-50{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}.text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.text-pink-600{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.text-pink-700{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.text-pink-800{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.text-pink-900{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}.text-pink-950{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}.text-purple-100{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}.text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}.text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.text-purple-50{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.text-purple-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.text-purple-900{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}.text-purple-950{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}.text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}.text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.text-red-50{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.text-red-950{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}.text-rose-100{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.text-rose-200{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.text-rose-50{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}.text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.text-rose-800{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.text-rose-900{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.text-rose-950{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}.text-sky-100{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.text-sky-50{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}.text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.text-sky-800{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.text-sky-900{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}.text-sky-950{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}.text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-50{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.text-slate-950{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.text-stone-100{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}.text-stone-200{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}.text-stone-300{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}.text-stone-400{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.text-stone-50{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}.text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.text-stone-600{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.text-stone-700{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}.text-stone-800{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}.text-stone-900{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}.text-stone-950{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}.text-teal-100{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}.text-teal-200{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.text-teal-300{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}.text-teal-400{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}.text-teal-50{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}.text-teal-500{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.text-teal-700{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.text-teal-800{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.text-teal-900{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}.text-teal-950{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}.text-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-tremor-brand-emphasis{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.text-tremor-brand-inverted{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-tremor-content{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-tremor-content-strong{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-tremor-content-subtle{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-violet-100{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}.text-violet-200{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.text-violet-50{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}.text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.text-violet-600{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.text-violet-700{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.text-violet-800{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}.text-violet-900{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}.text-violet-950{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-100{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}.text-yellow-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.text-yellow-50{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}.text-yellow-950{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}.text-zinc-100{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.text-zinc-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-dark-tremor-brand,.accent-tremor-brand{accent-color:#6366f1}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-\[-4px_0_4px_-4px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[-4px_0_4px_-4px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:-4px 0 4px -4px rgba(0,0,0,.1);--tw-shadow-colored:-4px 0 4px -4px var(--tw-shadow-color)}.shadow-\[-4px_0_8px_-6px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:-4px 0 8px -6px rgba(0,0,0,.1);--tw-shadow-colored:-4px 0 8px -6px var(--tw-shadow-color)}.shadow-\[-4px_0_8px_-6px_rgba\(0\2c 0\2c 0\2c 0\.1\)\],.shadow-dark-tremor-card{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-dark-tremor-card{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow-dark-tremor-input{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-dark-tremor-input,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-tremor-card{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow-tremor-card,.shadow-tremor-dropdown{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-tremor-dropdown{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-tremor-input{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-tremor-input,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-tremor-brand{outline-color:#6366f1}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-1{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-2,.ring-4{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-inset{--tw-ring-inset:inset}.ring-amber-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 243 199/var(--tw-ring-opacity))}.ring-amber-200{--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity))}.ring-amber-300{--tw-ring-opacity:1;--tw-ring-color:rgb(252 211 77/var(--tw-ring-opacity))}.ring-amber-400{--tw-ring-opacity:1;--tw-ring-color:rgb(251 191 36/var(--tw-ring-opacity))}.ring-amber-50{--tw-ring-opacity:1;--tw-ring-color:rgb(255 251 235/var(--tw-ring-opacity))}.ring-amber-500{--tw-ring-opacity:1;--tw-ring-color:rgb(245 158 11/var(--tw-ring-opacity))}.ring-amber-600{--tw-ring-opacity:1;--tw-ring-color:rgb(217 119 6/var(--tw-ring-opacity))}.ring-amber-700{--tw-ring-opacity:1;--tw-ring-color:rgb(180 83 9/var(--tw-ring-opacity))}.ring-amber-800{--tw-ring-opacity:1;--tw-ring-color:rgb(146 64 14/var(--tw-ring-opacity))}.ring-amber-900{--tw-ring-opacity:1;--tw-ring-color:rgb(120 53 15/var(--tw-ring-opacity))}.ring-amber-950{--tw-ring-opacity:1;--tw-ring-color:rgb(69 26 3/var(--tw-ring-opacity))}.ring-blue-100{--tw-ring-opacity:1;--tw-ring-color:rgb(219 234 254/var(--tw-ring-opacity))}.ring-blue-200{--tw-ring-opacity:1;--tw-ring-color:rgb(191 219 254/var(--tw-ring-opacity))}.ring-blue-300{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity))}.ring-blue-400{--tw-ring-opacity:1;--tw-ring-color:rgb(96 165 250/var(--tw-ring-opacity))}.ring-blue-50{--tw-ring-opacity:1;--tw-ring-color:rgb(239 246 255/var(--tw-ring-opacity))}.ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.ring-blue-600{--tw-ring-opacity:1;--tw-ring-color:rgb(37 99 235/var(--tw-ring-opacity))}.ring-blue-700{--tw-ring-opacity:1;--tw-ring-color:rgb(29 78 216/var(--tw-ring-opacity))}.ring-blue-800{--tw-ring-opacity:1;--tw-ring-color:rgb(30 64 175/var(--tw-ring-opacity))}.ring-blue-900{--tw-ring-opacity:1;--tw-ring-color:rgb(30 58 138/var(--tw-ring-opacity))}.ring-blue-950{--tw-ring-opacity:1;--tw-ring-color:rgb(23 37 84/var(--tw-ring-opacity))}.ring-cyan-100{--tw-ring-opacity:1;--tw-ring-color:rgb(207 250 254/var(--tw-ring-opacity))}.ring-cyan-200{--tw-ring-opacity:1;--tw-ring-color:rgb(165 243 252/var(--tw-ring-opacity))}.ring-cyan-300{--tw-ring-opacity:1;--tw-ring-color:rgb(103 232 249/var(--tw-ring-opacity))}.ring-cyan-400{--tw-ring-opacity:1;--tw-ring-color:rgb(34 211 238/var(--tw-ring-opacity))}.ring-cyan-50{--tw-ring-opacity:1;--tw-ring-color:rgb(236 254 255/var(--tw-ring-opacity))}.ring-cyan-500{--tw-ring-opacity:1;--tw-ring-color:rgb(6 182 212/var(--tw-ring-opacity))}.ring-cyan-600{--tw-ring-opacity:1;--tw-ring-color:rgb(8 145 178/var(--tw-ring-opacity))}.ring-cyan-700{--tw-ring-opacity:1;--tw-ring-color:rgb(14 116 144/var(--tw-ring-opacity))}.ring-cyan-800{--tw-ring-opacity:1;--tw-ring-color:rgb(21 94 117/var(--tw-ring-opacity))}.ring-cyan-900{--tw-ring-opacity:1;--tw-ring-color:rgb(22 78 99/var(--tw-ring-opacity))}.ring-cyan-950{--tw-ring-opacity:1;--tw-ring-color:rgb(8 51 68/var(--tw-ring-opacity))}.ring-dark-tremor-ring{--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55/var(--tw-ring-opacity))}.ring-emerald-100{--tw-ring-opacity:1;--tw-ring-color:rgb(209 250 229/var(--tw-ring-opacity))}.ring-emerald-200{--tw-ring-opacity:1;--tw-ring-color:rgb(167 243 208/var(--tw-ring-opacity))}.ring-emerald-300{--tw-ring-opacity:1;--tw-ring-color:rgb(110 231 183/var(--tw-ring-opacity))}.ring-emerald-400{--tw-ring-opacity:1;--tw-ring-color:rgb(52 211 153/var(--tw-ring-opacity))}.ring-emerald-50{--tw-ring-opacity:1;--tw-ring-color:rgb(236 253 245/var(--tw-ring-opacity))}.ring-emerald-500{--tw-ring-opacity:1;--tw-ring-color:rgb(16 185 129/var(--tw-ring-opacity))}.ring-emerald-600{--tw-ring-opacity:1;--tw-ring-color:rgb(5 150 105/var(--tw-ring-opacity))}.ring-emerald-700{--tw-ring-opacity:1;--tw-ring-color:rgb(4 120 87/var(--tw-ring-opacity))}.ring-emerald-800{--tw-ring-opacity:1;--tw-ring-color:rgb(6 95 70/var(--tw-ring-opacity))}.ring-emerald-900{--tw-ring-opacity:1;--tw-ring-color:rgb(6 78 59/var(--tw-ring-opacity))}.ring-emerald-950{--tw-ring-opacity:1;--tw-ring-color:rgb(2 44 34/var(--tw-ring-opacity))}.ring-fuchsia-100{--tw-ring-opacity:1;--tw-ring-color:rgb(250 232 255/var(--tw-ring-opacity))}.ring-fuchsia-200{--tw-ring-opacity:1;--tw-ring-color:rgb(245 208 254/var(--tw-ring-opacity))}.ring-fuchsia-300{--tw-ring-opacity:1;--tw-ring-color:rgb(240 171 252/var(--tw-ring-opacity))}.ring-fuchsia-400{--tw-ring-opacity:1;--tw-ring-color:rgb(232 121 249/var(--tw-ring-opacity))}.ring-fuchsia-50{--tw-ring-opacity:1;--tw-ring-color:rgb(253 244 255/var(--tw-ring-opacity))}.ring-fuchsia-500{--tw-ring-opacity:1;--tw-ring-color:rgb(217 70 239/var(--tw-ring-opacity))}.ring-fuchsia-600{--tw-ring-opacity:1;--tw-ring-color:rgb(192 38 211/var(--tw-ring-opacity))}.ring-fuchsia-700{--tw-ring-opacity:1;--tw-ring-color:rgb(162 28 175/var(--tw-ring-opacity))}.ring-fuchsia-800{--tw-ring-opacity:1;--tw-ring-color:rgb(134 25 143/var(--tw-ring-opacity))}.ring-fuchsia-900{--tw-ring-opacity:1;--tw-ring-color:rgb(112 26 117/var(--tw-ring-opacity))}.ring-fuchsia-950{--tw-ring-opacity:1;--tw-ring-color:rgb(74 4 78/var(--tw-ring-opacity))}.ring-gray-100{--tw-ring-opacity:1;--tw-ring-color:rgb(243 244 246/var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity))}.ring-gray-400{--tw-ring-opacity:1;--tw-ring-color:rgb(156 163 175/var(--tw-ring-opacity))}.ring-gray-50{--tw-ring-opacity:1;--tw-ring-color:rgb(249 250 251/var(--tw-ring-opacity))}.ring-gray-500{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity))}.ring-gray-600{--tw-ring-opacity:1;--tw-ring-color:rgb(75 85 99/var(--tw-ring-opacity))}.ring-gray-700{--tw-ring-opacity:1;--tw-ring-color:rgb(55 65 81/var(--tw-ring-opacity))}.ring-gray-800{--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55/var(--tw-ring-opacity))}.ring-gray-900{--tw-ring-opacity:1;--tw-ring-color:rgb(17 24 39/var(--tw-ring-opacity))}.ring-gray-950{--tw-ring-opacity:1;--tw-ring-color:rgb(3 7 18/var(--tw-ring-opacity))}.ring-green-100{--tw-ring-opacity:1;--tw-ring-color:rgb(220 252 231/var(--tw-ring-opacity))}.ring-green-200{--tw-ring-opacity:1;--tw-ring-color:rgb(187 247 208/var(--tw-ring-opacity))}.ring-green-300{--tw-ring-opacity:1;--tw-ring-color:rgb(134 239 172/var(--tw-ring-opacity))}.ring-green-400{--tw-ring-opacity:1;--tw-ring-color:rgb(74 222 128/var(--tw-ring-opacity))}.ring-green-50{--tw-ring-opacity:1;--tw-ring-color:rgb(240 253 244/var(--tw-ring-opacity))}.ring-green-500{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity))}.ring-green-600{--tw-ring-opacity:1;--tw-ring-color:rgb(22 163 74/var(--tw-ring-opacity))}.ring-green-700{--tw-ring-opacity:1;--tw-ring-color:rgb(21 128 61/var(--tw-ring-opacity))}.ring-green-800{--tw-ring-opacity:1;--tw-ring-color:rgb(22 101 52/var(--tw-ring-opacity))}.ring-green-900{--tw-ring-opacity:1;--tw-ring-color:rgb(20 83 45/var(--tw-ring-opacity))}.ring-green-950{--tw-ring-opacity:1;--tw-ring-color:rgb(5 46 22/var(--tw-ring-opacity))}.ring-indigo-100{--tw-ring-opacity:1;--tw-ring-color:rgb(224 231 255/var(--tw-ring-opacity))}.ring-indigo-200{--tw-ring-opacity:1;--tw-ring-color:rgb(199 210 254/var(--tw-ring-opacity))}.ring-indigo-300{--tw-ring-opacity:1;--tw-ring-color:rgb(165 180 252/var(--tw-ring-opacity))}.ring-indigo-400{--tw-ring-opacity:1;--tw-ring-color:rgb(129 140 248/var(--tw-ring-opacity))}.ring-indigo-50{--tw-ring-opacity:1;--tw-ring-color:rgb(238 242 255/var(--tw-ring-opacity))}.ring-indigo-500{--tw-ring-opacity:1;--tw-ring-color:rgb(99 102 241/var(--tw-ring-opacity))}.ring-indigo-600{--tw-ring-opacity:1;--tw-ring-color:rgb(79 70 229/var(--tw-ring-opacity))}.ring-indigo-700{--tw-ring-opacity:1;--tw-ring-color:rgb(67 56 202/var(--tw-ring-opacity))}.ring-indigo-800{--tw-ring-opacity:1;--tw-ring-color:rgb(55 48 163/var(--tw-ring-opacity))}.ring-indigo-900{--tw-ring-opacity:1;--tw-ring-color:rgb(49 46 129/var(--tw-ring-opacity))}.ring-indigo-950{--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}.ring-lime-100{--tw-ring-opacity:1;--tw-ring-color:rgb(236 252 203/var(--tw-ring-opacity))}.ring-lime-200{--tw-ring-opacity:1;--tw-ring-color:rgb(217 249 157/var(--tw-ring-opacity))}.ring-lime-300{--tw-ring-opacity:1;--tw-ring-color:rgb(190 242 100/var(--tw-ring-opacity))}.ring-lime-400{--tw-ring-opacity:1;--tw-ring-color:rgb(163 230 53/var(--tw-ring-opacity))}.ring-lime-50{--tw-ring-opacity:1;--tw-ring-color:rgb(247 254 231/var(--tw-ring-opacity))}.ring-lime-500{--tw-ring-opacity:1;--tw-ring-color:rgb(132 204 22/var(--tw-ring-opacity))}.ring-lime-600{--tw-ring-opacity:1;--tw-ring-color:rgb(101 163 13/var(--tw-ring-opacity))}.ring-lime-700{--tw-ring-opacity:1;--tw-ring-color:rgb(77 124 15/var(--tw-ring-opacity))}.ring-lime-800{--tw-ring-opacity:1;--tw-ring-color:rgb(63 98 18/var(--tw-ring-opacity))}.ring-lime-900{--tw-ring-opacity:1;--tw-ring-color:rgb(54 83 20/var(--tw-ring-opacity))}.ring-lime-950{--tw-ring-opacity:1;--tw-ring-color:rgb(26 46 5/var(--tw-ring-opacity))}.ring-neutral-100{--tw-ring-opacity:1;--tw-ring-color:rgb(245 245 245/var(--tw-ring-opacity))}.ring-neutral-200{--tw-ring-opacity:1;--tw-ring-color:rgb(229 229 229/var(--tw-ring-opacity))}.ring-neutral-300{--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 212/var(--tw-ring-opacity))}.ring-neutral-400{--tw-ring-opacity:1;--tw-ring-color:rgb(163 163 163/var(--tw-ring-opacity))}.ring-neutral-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 250 250/var(--tw-ring-opacity))}.ring-neutral-500{--tw-ring-opacity:1;--tw-ring-color:rgb(115 115 115/var(--tw-ring-opacity))}.ring-neutral-600{--tw-ring-opacity:1;--tw-ring-color:rgb(82 82 82/var(--tw-ring-opacity))}.ring-neutral-700{--tw-ring-opacity:1;--tw-ring-color:rgb(64 64 64/var(--tw-ring-opacity))}.ring-neutral-800{--tw-ring-opacity:1;--tw-ring-color:rgb(38 38 38/var(--tw-ring-opacity))}.ring-neutral-900{--tw-ring-opacity:1;--tw-ring-color:rgb(23 23 23/var(--tw-ring-opacity))}.ring-neutral-950{--tw-ring-opacity:1;--tw-ring-color:rgb(10 10 10/var(--tw-ring-opacity))}.ring-orange-100{--tw-ring-opacity:1;--tw-ring-color:rgb(255 237 213/var(--tw-ring-opacity))}.ring-orange-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 215 170/var(--tw-ring-opacity))}.ring-orange-300{--tw-ring-opacity:1;--tw-ring-color:rgb(253 186 116/var(--tw-ring-opacity))}.ring-orange-400{--tw-ring-opacity:1;--tw-ring-color:rgb(251 146 60/var(--tw-ring-opacity))}.ring-orange-50{--tw-ring-opacity:1;--tw-ring-color:rgb(255 247 237/var(--tw-ring-opacity))}.ring-orange-500{--tw-ring-opacity:1;--tw-ring-color:rgb(249 115 22/var(--tw-ring-opacity))}.ring-orange-600{--tw-ring-opacity:1;--tw-ring-color:rgb(234 88 12/var(--tw-ring-opacity))}.ring-orange-700{--tw-ring-opacity:1;--tw-ring-color:rgb(194 65 12/var(--tw-ring-opacity))}.ring-orange-800{--tw-ring-opacity:1;--tw-ring-color:rgb(154 52 18/var(--tw-ring-opacity))}.ring-orange-900{--tw-ring-opacity:1;--tw-ring-color:rgb(124 45 18/var(--tw-ring-opacity))}.ring-orange-950{--tw-ring-opacity:1;--tw-ring-color:rgb(67 20 7/var(--tw-ring-opacity))}.ring-pink-100{--tw-ring-opacity:1;--tw-ring-color:rgb(252 231 243/var(--tw-ring-opacity))}.ring-pink-200{--tw-ring-opacity:1;--tw-ring-color:rgb(251 207 232/var(--tw-ring-opacity))}.ring-pink-300{--tw-ring-opacity:1;--tw-ring-color:rgb(249 168 212/var(--tw-ring-opacity))}.ring-pink-400{--tw-ring-opacity:1;--tw-ring-color:rgb(244 114 182/var(--tw-ring-opacity))}.ring-pink-50{--tw-ring-opacity:1;--tw-ring-color:rgb(253 242 248/var(--tw-ring-opacity))}.ring-pink-500{--tw-ring-opacity:1;--tw-ring-color:rgb(236 72 153/var(--tw-ring-opacity))}.ring-pink-600{--tw-ring-opacity:1;--tw-ring-color:rgb(219 39 119/var(--tw-ring-opacity))}.ring-pink-700{--tw-ring-opacity:1;--tw-ring-color:rgb(190 24 93/var(--tw-ring-opacity))}.ring-pink-800{--tw-ring-opacity:1;--tw-ring-color:rgb(157 23 77/var(--tw-ring-opacity))}.ring-pink-900{--tw-ring-opacity:1;--tw-ring-color:rgb(131 24 67/var(--tw-ring-opacity))}.ring-pink-950{--tw-ring-opacity:1;--tw-ring-color:rgb(80 7 36/var(--tw-ring-opacity))}.ring-purple-100{--tw-ring-opacity:1;--tw-ring-color:rgb(243 232 255/var(--tw-ring-opacity))}.ring-purple-200{--tw-ring-opacity:1;--tw-ring-color:rgb(233 213 255/var(--tw-ring-opacity))}.ring-purple-300{--tw-ring-opacity:1;--tw-ring-color:rgb(216 180 254/var(--tw-ring-opacity))}.ring-purple-400{--tw-ring-opacity:1;--tw-ring-color:rgb(192 132 252/var(--tw-ring-opacity))}.ring-purple-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 245 255/var(--tw-ring-opacity))}.ring-purple-500{--tw-ring-opacity:1;--tw-ring-color:rgb(168 85 247/var(--tw-ring-opacity))}.ring-purple-600{--tw-ring-opacity:1;--tw-ring-color:rgb(147 51 234/var(--tw-ring-opacity))}.ring-purple-700{--tw-ring-opacity:1;--tw-ring-color:rgb(126 34 206/var(--tw-ring-opacity))}.ring-purple-800{--tw-ring-opacity:1;--tw-ring-color:rgb(107 33 168/var(--tw-ring-opacity))}.ring-purple-900{--tw-ring-opacity:1;--tw-ring-color:rgb(88 28 135/var(--tw-ring-opacity))}.ring-purple-950{--tw-ring-opacity:1;--tw-ring-color:rgb(59 7 100/var(--tw-ring-opacity))}.ring-red-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 226 226/var(--tw-ring-opacity))}.ring-red-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 202 202/var(--tw-ring-opacity))}.ring-red-300{--tw-ring-opacity:1;--tw-ring-color:rgb(252 165 165/var(--tw-ring-opacity))}.ring-red-400{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity))}.ring-red-50{--tw-ring-opacity:1;--tw-ring-color:rgb(254 242 242/var(--tw-ring-opacity))}.ring-red-500{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.ring-red-600{--tw-ring-opacity:1;--tw-ring-color:rgb(220 38 38/var(--tw-ring-opacity))}.ring-red-700{--tw-ring-opacity:1;--tw-ring-color:rgb(185 28 28/var(--tw-ring-opacity))}.ring-red-800{--tw-ring-opacity:1;--tw-ring-color:rgb(153 27 27/var(--tw-ring-opacity))}.ring-red-900{--tw-ring-opacity:1;--tw-ring-color:rgb(127 29 29/var(--tw-ring-opacity))}.ring-red-950{--tw-ring-opacity:1;--tw-ring-color:rgb(69 10 10/var(--tw-ring-opacity))}.ring-rose-100{--tw-ring-opacity:1;--tw-ring-color:rgb(255 228 230/var(--tw-ring-opacity))}.ring-rose-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 205 211/var(--tw-ring-opacity))}.ring-rose-300{--tw-ring-opacity:1;--tw-ring-color:rgb(253 164 175/var(--tw-ring-opacity))}.ring-rose-400{--tw-ring-opacity:1;--tw-ring-color:rgb(251 113 133/var(--tw-ring-opacity))}.ring-rose-50{--tw-ring-opacity:1;--tw-ring-color:rgb(255 241 242/var(--tw-ring-opacity))}.ring-rose-500{--tw-ring-opacity:1;--tw-ring-color:rgb(244 63 94/var(--tw-ring-opacity))}.ring-rose-600{--tw-ring-opacity:1;--tw-ring-color:rgb(225 29 72/var(--tw-ring-opacity))}.ring-rose-700{--tw-ring-opacity:1;--tw-ring-color:rgb(190 18 60/var(--tw-ring-opacity))}.ring-rose-800{--tw-ring-opacity:1;--tw-ring-color:rgb(159 18 57/var(--tw-ring-opacity))}.ring-rose-900{--tw-ring-opacity:1;--tw-ring-color:rgb(136 19 55/var(--tw-ring-opacity))}.ring-rose-950{--tw-ring-opacity:1;--tw-ring-color:rgb(76 5 25/var(--tw-ring-opacity))}.ring-sky-100{--tw-ring-opacity:1;--tw-ring-color:rgb(224 242 254/var(--tw-ring-opacity))}.ring-sky-200{--tw-ring-opacity:1;--tw-ring-color:rgb(186 230 253/var(--tw-ring-opacity))}.ring-sky-300{--tw-ring-opacity:1;--tw-ring-color:rgb(125 211 252/var(--tw-ring-opacity))}.ring-sky-400{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.ring-sky-50{--tw-ring-opacity:1;--tw-ring-color:rgb(240 249 255/var(--tw-ring-opacity))}.ring-sky-500{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity))}.ring-sky-600{--tw-ring-opacity:1;--tw-ring-color:rgb(2 132 199/var(--tw-ring-opacity))}.ring-sky-700{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.ring-sky-800{--tw-ring-opacity:1;--tw-ring-color:rgb(7 89 133/var(--tw-ring-opacity))}.ring-sky-900{--tw-ring-opacity:1;--tw-ring-color:rgb(12 74 110/var(--tw-ring-opacity))}.ring-sky-950{--tw-ring-opacity:1;--tw-ring-color:rgb(8 47 73/var(--tw-ring-opacity))}.ring-slate-100{--tw-ring-opacity:1;--tw-ring-color:rgb(241 245 249/var(--tw-ring-opacity))}.ring-slate-200{--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity))}.ring-slate-300{--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity))}.ring-slate-400{--tw-ring-opacity:1;--tw-ring-color:rgb(148 163 184/var(--tw-ring-opacity))}.ring-slate-50{--tw-ring-opacity:1;--tw-ring-color:rgb(248 250 252/var(--tw-ring-opacity))}.ring-slate-500{--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity))}.ring-slate-600{--tw-ring-opacity:1;--tw-ring-color:rgb(71 85 105/var(--tw-ring-opacity))}.ring-slate-700{--tw-ring-opacity:1;--tw-ring-color:rgb(51 65 85/var(--tw-ring-opacity))}.ring-slate-800{--tw-ring-opacity:1;--tw-ring-color:rgb(30 41 59/var(--tw-ring-opacity))}.ring-slate-900{--tw-ring-opacity:1;--tw-ring-color:rgb(15 23 42/var(--tw-ring-opacity))}.ring-slate-950{--tw-ring-opacity:1;--tw-ring-color:rgb(2 6 23/var(--tw-ring-opacity))}.ring-stone-100{--tw-ring-opacity:1;--tw-ring-color:rgb(245 245 244/var(--tw-ring-opacity))}.ring-stone-200{--tw-ring-opacity:1;--tw-ring-color:rgb(231 229 228/var(--tw-ring-opacity))}.ring-stone-300{--tw-ring-opacity:1;--tw-ring-color:rgb(214 211 209/var(--tw-ring-opacity))}.ring-stone-400{--tw-ring-opacity:1;--tw-ring-color:rgb(168 162 158/var(--tw-ring-opacity))}.ring-stone-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 250 249/var(--tw-ring-opacity))}.ring-stone-500{--tw-ring-opacity:1;--tw-ring-color:rgb(120 113 108/var(--tw-ring-opacity))}.ring-stone-600{--tw-ring-opacity:1;--tw-ring-color:rgb(87 83 78/var(--tw-ring-opacity))}.ring-stone-700{--tw-ring-opacity:1;--tw-ring-color:rgb(68 64 60/var(--tw-ring-opacity))}.ring-stone-800{--tw-ring-opacity:1;--tw-ring-color:rgb(41 37 36/var(--tw-ring-opacity))}.ring-stone-900{--tw-ring-opacity:1;--tw-ring-color:rgb(28 25 23/var(--tw-ring-opacity))}.ring-stone-950{--tw-ring-opacity:1;--tw-ring-color:rgb(12 10 9/var(--tw-ring-opacity))}.ring-teal-100{--tw-ring-opacity:1;--tw-ring-color:rgb(204 251 241/var(--tw-ring-opacity))}.ring-teal-200{--tw-ring-opacity:1;--tw-ring-color:rgb(153 246 228/var(--tw-ring-opacity))}.ring-teal-300{--tw-ring-opacity:1;--tw-ring-color:rgb(94 234 212/var(--tw-ring-opacity))}.ring-teal-400{--tw-ring-opacity:1;--tw-ring-color:rgb(45 212 191/var(--tw-ring-opacity))}.ring-teal-50{--tw-ring-opacity:1;--tw-ring-color:rgb(240 253 250/var(--tw-ring-opacity))}.ring-teal-500{--tw-ring-opacity:1;--tw-ring-color:rgb(20 184 166/var(--tw-ring-opacity))}.ring-teal-600{--tw-ring-opacity:1;--tw-ring-color:rgb(13 148 136/var(--tw-ring-opacity))}.ring-teal-700{--tw-ring-opacity:1;--tw-ring-color:rgb(15 118 110/var(--tw-ring-opacity))}.ring-teal-800{--tw-ring-opacity:1;--tw-ring-color:rgb(17 94 89/var(--tw-ring-opacity))}.ring-teal-900{--tw-ring-opacity:1;--tw-ring-color:rgb(19 78 74/var(--tw-ring-opacity))}.ring-teal-950{--tw-ring-opacity:1;--tw-ring-color:rgb(4 47 46/var(--tw-ring-opacity))}.ring-tremor-brand-inverted{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-tremor-brand-muted{--tw-ring-opacity:1;--tw-ring-color:rgb(134 136 239/var(--tw-ring-opacity))}.ring-tremor-ring{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}.ring-violet-100{--tw-ring-opacity:1;--tw-ring-color:rgb(237 233 254/var(--tw-ring-opacity))}.ring-violet-200{--tw-ring-opacity:1;--tw-ring-color:rgb(221 214 254/var(--tw-ring-opacity))}.ring-violet-300{--tw-ring-opacity:1;--tw-ring-color:rgb(196 181 253/var(--tw-ring-opacity))}.ring-violet-400{--tw-ring-opacity:1;--tw-ring-color:rgb(167 139 250/var(--tw-ring-opacity))}.ring-violet-50{--tw-ring-opacity:1;--tw-ring-color:rgb(245 243 255/var(--tw-ring-opacity))}.ring-violet-500{--tw-ring-opacity:1;--tw-ring-color:rgb(139 92 246/var(--tw-ring-opacity))}.ring-violet-600{--tw-ring-opacity:1;--tw-ring-color:rgb(124 58 237/var(--tw-ring-opacity))}.ring-violet-700{--tw-ring-opacity:1;--tw-ring-color:rgb(109 40 217/var(--tw-ring-opacity))}.ring-violet-800{--tw-ring-opacity:1;--tw-ring-color:rgb(91 33 182/var(--tw-ring-opacity))}.ring-violet-900{--tw-ring-opacity:1;--tw-ring-color:rgb(76 29 149/var(--tw-ring-opacity))}.ring-violet-950{--tw-ring-opacity:1;--tw-ring-color:rgb(46 16 101/var(--tw-ring-opacity))}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-yellow-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 249 195/var(--tw-ring-opacity))}.ring-yellow-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 240 138/var(--tw-ring-opacity))}.ring-yellow-300{--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity))}.ring-yellow-400{--tw-ring-opacity:1;--tw-ring-color:rgb(250 204 21/var(--tw-ring-opacity))}.ring-yellow-50{--tw-ring-opacity:1;--tw-ring-color:rgb(254 252 232/var(--tw-ring-opacity))}.ring-yellow-500{--tw-ring-opacity:1;--tw-ring-color:rgb(234 179 8/var(--tw-ring-opacity))}.ring-yellow-600{--tw-ring-opacity:1;--tw-ring-color:rgb(202 138 4/var(--tw-ring-opacity))}.ring-yellow-700{--tw-ring-opacity:1;--tw-ring-color:rgb(161 98 7/var(--tw-ring-opacity))}.ring-yellow-800{--tw-ring-opacity:1;--tw-ring-color:rgb(133 77 14/var(--tw-ring-opacity))}.ring-yellow-900{--tw-ring-opacity:1;--tw-ring-color:rgb(113 63 18/var(--tw-ring-opacity))}.ring-yellow-950{--tw-ring-opacity:1;--tw-ring-color:rgb(66 32 6/var(--tw-ring-opacity))}.ring-zinc-100{--tw-ring-opacity:1;--tw-ring-color:rgb(244 244 245/var(--tw-ring-opacity))}.ring-zinc-200{--tw-ring-opacity:1;--tw-ring-color:rgb(228 228 231/var(--tw-ring-opacity))}.ring-zinc-300{--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity))}.ring-zinc-400{--tw-ring-opacity:1;--tw-ring-color:rgb(161 161 170/var(--tw-ring-opacity))}.ring-zinc-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 250 250/var(--tw-ring-opacity))}.ring-zinc-500{--tw-ring-opacity:1;--tw-ring-color:rgb(113 113 122/var(--tw-ring-opacity))}.ring-zinc-600{--tw-ring-opacity:1;--tw-ring-color:rgb(82 82 91/var(--tw-ring-opacity))}.ring-zinc-700{--tw-ring-opacity:1;--tw-ring-color:rgb(63 63 70/var(--tw-ring-opacity))}.ring-zinc-800{--tw-ring-opacity:1;--tw-ring-color:rgb(39 39 42/var(--tw-ring-opacity))}.ring-zinc-900{--tw-ring-opacity:1;--tw-ring-color:rgb(24 24 27/var(--tw-ring-opacity))}.ring-zinc-950{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity))}.ring-opacity-40{--tw-ring-opacity:0.4}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}.drop-shadow-md,.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.invert{--tw-invert:invert(100%)}.invert,.sepia{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia:sepia(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-grayscale{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%)}.backdrop-invert{--tw-backdrop-invert:invert(100%)}.backdrop-invert,.backdrop-sepia{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%)}.backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[appearance\:textfield\]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.\[scrollbar-width\:none\]{scrollbar-width:none}:root{--foreground-rgb:0,0,0;--background-start-rgb:255,255,255;--background-end-rgb:255,255,255;--neutral-border:#dcddeb}body{color:rgb(var(--foreground-rgb));background:linear-gradient(to bottom,transparent,rgb(var(--background-end-rgb))) rgb(var(--background-start-rgb))}.table-wrapper{overflow-x:scroll;margin:0 24px}.custom-border{border:1px solid var(--neutral-border)}.ant-dropdown-menu-item{padding:0!important}.ant-dropdown-menu-item>div{transition:all .2s ease}.ant-dropdown-menu-item[data-menu-id$=user-info]:hover{background-color:transparent!important;cursor:default}.ant-dropdown-menu-item[data-menu-id$=user-info]>div{cursor:default}.ant-dropdown-menu{padding:4px!important;min-width:280px!important}.ant-dropdown-menu-item-divider{margin:4px 0}.placeholder\:text-tremor-content::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.placeholder\:text-tremor-content::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.placeholder\:text-tremor-content-subtle::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.placeholder\:text-tremor-content-subtle::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.first\:rounded-l-\[4px\]:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}.last\:mb-0:last-child{margin-bottom:0}.last\:rounded-r-\[4px\]:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.last\:border-0:last-child{border-width:0}.last\:border-b-0:last-child{border-bottom-width:0}.focus-within\:relative:focus-within{position:relative}.hover\:border-b-2:hover{border-bottom-width:2px}.hover\:border-amber-100:hover{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}.hover\:border-amber-200:hover{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.hover\:border-amber-300:hover{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.hover\:border-amber-400:hover{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.hover\:border-amber-50:hover{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}.hover\:border-amber-500:hover{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.hover\:border-amber-600:hover{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.hover\:border-amber-700:hover{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}.hover\:border-amber-800:hover{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.hover\:border-amber-900:hover{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}.hover\:border-amber-950:hover{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}.hover\:border-blue-100:hover{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}.hover\:border-blue-200:hover{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.hover\:border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}.hover\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.hover\:border-blue-50:hover{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}.hover\:border-blue-500:hover{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.hover\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.hover\:border-blue-700:hover{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.hover\:border-blue-800:hover{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}.hover\:border-blue-900:hover{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}.hover\:border-blue-950:hover{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}.hover\:border-cyan-100:hover{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}.hover\:border-cyan-200:hover{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}.hover\:border-cyan-300:hover{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}.hover\:border-cyan-400:hover{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}.hover\:border-cyan-50:hover{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}.hover\:border-cyan-500:hover{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.hover\:border-cyan-600:hover{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}.hover\:border-cyan-700:hover{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}.hover\:border-cyan-800:hover{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}.hover\:border-cyan-900:hover{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}.hover\:border-cyan-950:hover{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}.hover\:border-emerald-100:hover{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}.hover\:border-emerald-200:hover{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.hover\:border-emerald-300:hover{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.hover\:border-emerald-400:hover{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.hover\:border-emerald-50:hover{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}.hover\:border-emerald-500:hover{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.hover\:border-emerald-600:hover{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.hover\:border-emerald-700:hover{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.hover\:border-emerald-800:hover{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.hover\:border-emerald-900:hover{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}.hover\:border-emerald-950:hover{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}.hover\:border-fuchsia-100:hover{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}.hover\:border-fuchsia-200:hover{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}.hover\:border-fuchsia-300:hover{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}.hover\:border-fuchsia-400:hover{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}.hover\:border-fuchsia-50:hover{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}.hover\:border-fuchsia-500:hover{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.hover\:border-fuchsia-600:hover{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.hover\:border-fuchsia-700:hover{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}.hover\:border-fuchsia-800:hover{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.hover\:border-fuchsia-900:hover{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}.hover\:border-fuchsia-950:hover{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}.hover\:border-gray-100:hover{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.hover\:border-gray-200:hover{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.hover\:border-gray-50:hover{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}.hover\:border-gray-500:hover{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.hover\:border-gray-600:hover{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.hover\:border-gray-700:hover{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.hover\:border-gray-800:hover{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.hover\:border-gray-900:hover{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.hover\:border-gray-950:hover{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}.hover\:border-green-100:hover{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}.hover\:border-green-200:hover{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}.hover\:border-green-300:hover{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}.hover\:border-green-400:hover{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.hover\:border-green-50:hover{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}.hover\:border-green-500:hover{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.hover\:border-green-600:hover{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.hover\:border-green-700:hover{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}.hover\:border-green-800:hover{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}.hover\:border-green-900:hover{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.hover\:border-green-950:hover{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}.hover\:border-indigo-100:hover{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}.hover\:border-indigo-200:hover{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}.hover\:border-indigo-300:hover{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.hover\:border-indigo-400:hover{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.hover\:border-indigo-50:hover{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}.hover\:border-indigo-500:hover{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.hover\:border-indigo-600:hover{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.hover\:border-indigo-700:hover{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.hover\:border-indigo-800:hover{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.hover\:border-indigo-900:hover{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}.hover\:border-indigo-950:hover{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.hover\:border-lime-100:hover{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}.hover\:border-lime-200:hover{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}.hover\:border-lime-300:hover{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}.hover\:border-lime-400:hover{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}.hover\:border-lime-50:hover{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}.hover\:border-lime-500:hover{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.hover\:border-lime-600:hover{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}.hover\:border-lime-700:hover{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}.hover\:border-lime-800:hover{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}.hover\:border-lime-900:hover{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}.hover\:border-lime-950:hover{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}.hover\:border-neutral-100:hover{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}.hover\:border-neutral-200:hover{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.hover\:border-neutral-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.hover\:border-neutral-400:hover{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.hover\:border-neutral-50:hover{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.hover\:border-neutral-500:hover{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}.hover\:border-neutral-600:hover{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.hover\:border-neutral-700:hover{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.hover\:border-neutral-800:hover{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}.hover\:border-neutral-900:hover{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}.hover\:border-neutral-950:hover{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}.hover\:border-orange-100:hover{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}.hover\:border-orange-200:hover{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}.hover\:border-orange-300:hover{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.hover\:border-orange-400:hover{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.hover\:border-orange-50:hover{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}.hover\:border-orange-500:hover{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.hover\:border-orange-600:hover{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.hover\:border-orange-700:hover{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}.hover\:border-orange-800:hover{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}.hover\:border-orange-900:hover{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}.hover\:border-orange-950:hover{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}.hover\:border-pink-100:hover{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}.hover\:border-pink-200:hover{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}.hover\:border-pink-300:hover{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}.hover\:border-pink-400:hover{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}.hover\:border-pink-50:hover{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}.hover\:border-pink-500:hover{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.hover\:border-pink-600:hover{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.hover\:border-pink-700:hover{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}.hover\:border-pink-800:hover{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}.hover\:border-pink-900:hover{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}.hover\:border-pink-950:hover{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}.hover\:border-purple-100:hover{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}.hover\:border-purple-200:hover{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.hover\:border-purple-300:hover{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.hover\:border-purple-400:hover{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}.hover\:border-purple-50:hover{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}.hover\:border-purple-500:hover{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.hover\:border-purple-600:hover{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.hover\:border-purple-700:hover{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}.hover\:border-purple-800:hover{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}.hover\:border-purple-900:hover{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}.hover\:border-purple-950:hover{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}.hover\:border-red-100:hover{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}.hover\:border-red-200:hover{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.hover\:border-red-300:hover{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.hover\:border-red-400:hover{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.hover\:border-red-50:hover{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}.hover\:border-red-500:hover{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.hover\:border-red-600:hover{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.hover\:border-red-700:hover{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.hover\:border-red-800:hover{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}.hover\:border-red-900:hover{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}.hover\:border-red-950:hover{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}.hover\:border-rose-100:hover{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}.hover\:border-rose-200:hover{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.hover\:border-rose-300:hover{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.hover\:border-rose-400:hover{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.hover\:border-rose-50:hover{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}.hover\:border-rose-500:hover{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}.hover\:border-rose-600:hover{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.hover\:border-rose-700:hover{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}.hover\:border-rose-800:hover{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.hover\:border-rose-900:hover{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}.hover\:border-rose-950:hover{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}.hover\:border-sky-100:hover{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.hover\:border-sky-200:hover{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.hover\:border-sky-300:hover{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.hover\:border-sky-400:hover{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.hover\:border-sky-50:hover{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}.hover\:border-sky-500:hover{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.hover\:border-sky-600:hover{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.hover\:border-sky-700:hover{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.hover\:border-sky-800:hover{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.hover\:border-sky-900:hover{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.hover\:border-sky-950:hover{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}.hover\:border-slate-100:hover{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.hover\:border-slate-200:hover{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.hover\:border-slate-300:hover{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.hover\:border-slate-400:hover{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.hover\:border-slate-50:hover{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.hover\:border-slate-500:hover{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.hover\:border-slate-600:hover{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.hover\:border-slate-700:hover{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.hover\:border-slate-800:hover{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.hover\:border-slate-900:hover{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.hover\:border-slate-950:hover{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}.hover\:border-stone-100:hover{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}.hover\:border-stone-200:hover{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}.hover\:border-stone-300:hover{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.hover\:border-stone-400:hover{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}.hover\:border-stone-50:hover{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}.hover\:border-stone-500:hover{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}.hover\:border-stone-600:hover{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}.hover\:border-stone-700:hover{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}.hover\:border-stone-800:hover{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}.hover\:border-stone-900:hover{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}.hover\:border-stone-950:hover{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}.hover\:border-teal-100:hover{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}.hover\:border-teal-200:hover{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}.hover\:border-teal-300:hover{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}.hover\:border-teal-400:hover{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.hover\:border-teal-50:hover{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}.hover\:border-teal-500:hover{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.hover\:border-teal-600:hover{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.hover\:border-teal-700:hover{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}.hover\:border-teal-800:hover{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}.hover\:border-teal-900:hover{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}.hover\:border-teal-950:hover{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}.hover\:border-tremor-brand-emphasis:hover{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.hover\:border-tremor-content:hover{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.hover\:border-violet-100:hover{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}.hover\:border-violet-200:hover{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}.hover\:border-violet-300:hover{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.hover\:border-violet-400:hover{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.hover\:border-violet-50:hover{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}.hover\:border-violet-500:hover{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}.hover\:border-violet-600:hover{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}.hover\:border-violet-700:hover{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}.hover\:border-violet-800:hover{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}.hover\:border-violet-900:hover{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}.hover\:border-violet-950:hover{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}.hover\:border-yellow-100:hover{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}.hover\:border-yellow-200:hover{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}.hover\:border-yellow-300:hover{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.hover\:border-yellow-400:hover{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.hover\:border-yellow-50:hover{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}.hover\:border-yellow-500:hover{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}.hover\:border-yellow-600:hover{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}.hover\:border-yellow-700:hover{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}.hover\:border-yellow-800:hover{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.hover\:border-yellow-900:hover{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}.hover\:border-yellow-950:hover{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}.hover\:border-zinc-100:hover{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.hover\:border-zinc-200:hover{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.hover\:border-zinc-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.hover\:border-zinc-400:hover{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.hover\:border-zinc-50:hover{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.hover\:border-zinc-500:hover{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}.hover\:border-zinc-600:hover{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.hover\:border-zinc-700:hover{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.hover\:border-zinc-800:hover{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.hover\:border-zinc-900:hover{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}.hover\:border-zinc-950:hover{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}.hover\:\!bg-blue-700:hover{--tw-bg-opacity:1!important;background-color:rgb(29 78 216/var(--tw-bg-opacity))!important}.hover\:bg-amber-100:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.hover\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.hover\:bg-amber-300:hover{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.hover\:bg-amber-400:hover{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.hover\:bg-amber-50:hover{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.hover\:bg-amber-500:hover{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.hover\:bg-amber-600:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.hover\:bg-amber-700:hover{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.hover\:bg-amber-800:hover{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.hover\:bg-amber-900:hover{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.hover\:bg-amber-950:hover{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.hover\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.hover\:bg-blue-300:hover{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.hover\:bg-blue-400:hover{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.hover\:bg-blue-900:hover{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.hover\:bg-blue-950:hover{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}.hover\:bg-cyan-100:hover{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.hover\:bg-cyan-200:hover{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.hover\:bg-cyan-300:hover{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}.hover\:bg-cyan-400:hover{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.hover\:bg-cyan-50:hover{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}.hover\:bg-cyan-500:hover{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}.hover\:bg-cyan-600:hover{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.hover\:bg-cyan-700:hover{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}.hover\:bg-cyan-800:hover{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.hover\:bg-cyan-900:hover{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}.hover\:bg-cyan-950:hover{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}.hover\:bg-emerald-100:hover{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.hover\:bg-emerald-200:hover{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.hover\:bg-emerald-300:hover{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.hover\:bg-emerald-400:hover{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.hover\:bg-emerald-50:hover{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.hover\:bg-emerald-500:hover{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.hover\:bg-emerald-600:hover{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.hover\:bg-emerald-700:hover{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.hover\:bg-emerald-800:hover{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.hover\:bg-emerald-900:hover{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.hover\:bg-emerald-950:hover{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}.hover\:bg-fuchsia-100:hover{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.hover\:bg-fuchsia-200:hover{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}.hover\:bg-fuchsia-300:hover{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}.hover\:bg-fuchsia-400:hover{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}.hover\:bg-fuchsia-50:hover{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}.hover\:bg-fuchsia-500:hover{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}.hover\:bg-fuchsia-600:hover{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.hover\:bg-fuchsia-700:hover{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.hover\:bg-fuchsia-800:hover{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.hover\:bg-fuchsia-900:hover{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}.hover\:bg-fuchsia-950:hover{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.hover\:bg-gray-400:hover{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.hover\:bg-gray-900:hover{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.hover\:bg-gray-950:hover{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.hover\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.hover\:bg-green-200:hover{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.hover\:bg-green-300:hover{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.hover\:bg-green-400:hover{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.hover\:bg-green-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.hover\:bg-green-500:hover{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.hover\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.hover\:bg-green-800:hover{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.hover\:bg-green-900:hover{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.hover\:bg-green-950:hover{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}.hover\:bg-indigo-100:hover{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.hover\:bg-indigo-200:hover{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.hover\:bg-indigo-300:hover{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}.hover\:bg-indigo-400:hover{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.hover\:bg-indigo-50:hover{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.hover\:bg-indigo-500:hover{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.hover\:bg-indigo-600:hover{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-indigo-800:hover{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.hover\:bg-indigo-900:hover{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.hover\:bg-indigo-950:hover{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.hover\:bg-lime-100:hover{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.hover\:bg-lime-200:hover{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.hover\:bg-lime-300:hover{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}.hover\:bg-lime-400:hover{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}.hover\:bg-lime-50:hover{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}.hover\:bg-lime-500:hover{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.hover\:bg-lime-600:hover{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.hover\:bg-lime-700:hover{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.hover\:bg-lime-800:hover{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.hover\:bg-lime-900:hover{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}.hover\:bg-lime-950:hover{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}.hover\:bg-neutral-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.hover\:bg-neutral-200:hover{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.hover\:bg-neutral-300:hover{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.hover\:bg-neutral-400:hover{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}.hover\:bg-neutral-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:bg-neutral-500:hover{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.hover\:bg-neutral-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.hover\:bg-neutral-700:hover{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.hover\:bg-neutral-800:hover{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.hover\:bg-neutral-900:hover{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.hover\:bg-neutral-950:hover{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.hover\:bg-orange-100:hover{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.hover\:bg-orange-200:hover{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.hover\:bg-orange-300:hover{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.hover\:bg-orange-400:hover{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.hover\:bg-orange-50:hover{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.hover\:bg-orange-500:hover{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.hover\:bg-orange-600:hover{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.hover\:bg-orange-700:hover{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.hover\:bg-orange-800:hover{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.hover\:bg-orange-900:hover{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}.hover\:bg-orange-950:hover{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}.hover\:bg-pink-100:hover{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.hover\:bg-pink-200:hover{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}.hover\:bg-pink-300:hover{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}.hover\:bg-pink-400:hover{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.hover\:bg-pink-50:hover{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.hover\:bg-pink-500:hover{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.hover\:bg-pink-600:hover{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.hover\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.hover\:bg-pink-800:hover{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.hover\:bg-pink-900:hover{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}.hover\:bg-pink-950:hover{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}.hover\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.hover\:bg-purple-200:hover{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}.hover\:bg-purple-300:hover{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}.hover\:bg-purple-400:hover{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}.hover\:bg-purple-50:hover{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.hover\:bg-purple-500:hover{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.hover\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.hover\:bg-purple-700:hover{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.hover\:bg-purple-800:hover{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.hover\:bg-purple-900:hover{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}.hover\:bg-purple-950:hover{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}.hover\:bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.hover\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.hover\:bg-red-300:hover{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.hover\:bg-red-400:hover{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.hover\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.hover\:bg-red-800:hover{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.hover\:bg-red-950:hover{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}.hover\:bg-rose-100:hover{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.hover\:bg-rose-200:hover{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.hover\:bg-rose-300:hover{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}.hover\:bg-rose-400:hover{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.hover\:bg-rose-50:hover{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.hover\:bg-rose-500:hover{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.hover\:bg-rose-600:hover{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.hover\:bg-rose-700:hover{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.hover\:bg-rose-800:hover{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.hover\:bg-rose-900:hover{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.hover\:bg-rose-950:hover{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}.hover\:bg-sky-100:hover{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.hover\:bg-sky-200:hover{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.hover\:bg-sky-300:hover{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.hover\:bg-sky-400:hover{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.hover\:bg-sky-50:hover{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.hover\:bg-sky-500:hover{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.hover\:bg-sky-600:hover{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.hover\:bg-sky-700:hover{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.hover\:bg-sky-800:hover{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.hover\:bg-sky-900:hover{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.hover\:bg-sky-950:hover{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}.hover\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\:bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\:bg-slate-300:hover{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.hover\:bg-slate-400:hover{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\:bg-slate-500:hover{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.hover\:bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.hover\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.hover\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.hover\:bg-slate-900:hover{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.hover\:bg-slate-950:hover{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.hover\:bg-stone-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.hover\:bg-stone-200:hover{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.hover\:bg-stone-300:hover{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}.hover\:bg-stone-400:hover{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}.hover\:bg-stone-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}.hover\:bg-stone-500:hover{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}.hover\:bg-stone-600:hover{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}.hover\:bg-stone-700:hover{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}.hover\:bg-stone-800:hover{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}.hover\:bg-stone-900:hover{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}.hover\:bg-stone-950:hover{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}.hover\:bg-teal-100:hover{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.hover\:bg-teal-200:hover{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}.hover\:bg-teal-300:hover{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}.hover\:bg-teal-400:hover{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.hover\:bg-teal-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}.hover\:bg-teal-500:hover{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.hover\:bg-teal-600:hover{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.hover\:bg-teal-700:hover{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.hover\:bg-teal-800:hover{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.hover\:bg-teal-900:hover{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}.hover\:bg-teal-950:hover{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}.hover\:bg-tremor-background-muted:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:bg-tremor-background-subtle:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-tremor-brand-emphasis:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-violet-100:hover{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.hover\:bg-violet-200:hover{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.hover\:bg-violet-300:hover{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.hover\:bg-violet-400:hover{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}.hover\:bg-violet-50:hover{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.hover\:bg-violet-500:hover{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}.hover\:bg-violet-600:hover{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.hover\:bg-violet-700:hover{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}.hover\:bg-violet-800:hover{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.hover\:bg-violet-900:hover{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}.hover\:bg-violet-950:hover{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}.hover\:bg-yellow-100:hover{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.hover\:bg-yellow-200:hover{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.hover\:bg-yellow-300:hover{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.hover\:bg-yellow-400:hover{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.hover\:bg-yellow-50:hover{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.hover\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.hover\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.hover\:bg-yellow-700:hover{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}.hover\:bg-yellow-800:hover{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}.hover\:bg-yellow-900:hover{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.hover\:bg-yellow-950:hover{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}.hover\:bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.hover\:bg-zinc-200:hover{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.hover\:bg-zinc-300:hover{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}.hover\:bg-zinc-400:hover{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.hover\:bg-zinc-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:bg-zinc-500:hover{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}.hover\:bg-zinc-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.hover\:bg-zinc-700:hover{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.hover\:bg-zinc-800:hover{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.hover\:bg-zinc-900:hover{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.hover\:bg-zinc-950:hover{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}.hover\:bg-opacity-20:hover{--tw-bg-opacity:0.2}.hover\:text-amber-100:hover{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.hover\:text-amber-200:hover{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.hover\:text-amber-300:hover{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.hover\:text-amber-400:hover{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.hover\:text-amber-50:hover{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}.hover\:text-amber-500:hover{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.hover\:text-amber-600:hover{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.hover\:text-amber-700:hover{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.hover\:text-amber-800:hover{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.hover\:text-amber-900:hover{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.hover\:text-amber-950:hover{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}.hover\:text-blue-100:hover{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}.hover\:text-blue-200:hover{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.hover\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.hover\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.hover\:text-blue-50:hover{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.hover\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.hover\:text-blue-900:hover{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.hover\:text-blue-950:hover{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}.hover\:text-cyan-100:hover{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.hover\:text-cyan-200:hover{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}.hover\:text-cyan-300:hover{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}.hover\:text-cyan-400:hover{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.hover\:text-cyan-50:hover{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}.hover\:text-cyan-500:hover{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.hover\:text-cyan-600:hover{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.hover\:text-cyan-700:hover{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.hover\:text-cyan-800:hover{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}.hover\:text-cyan-900:hover{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.hover\:text-cyan-950:hover{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}.hover\:text-emerald-100:hover{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.hover\:text-emerald-200:hover{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}.hover\:text-emerald-300:hover{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.hover\:text-emerald-400:hover{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.hover\:text-emerald-50:hover{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}.hover\:text-emerald-500:hover{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.hover\:text-emerald-600:hover{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.hover\:text-emerald-700:hover{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.hover\:text-emerald-800:hover{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.hover\:text-emerald-900:hover{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}.hover\:text-emerald-950:hover{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}.hover\:text-fuchsia-100:hover{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}.hover\:text-fuchsia-200:hover{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.hover\:text-fuchsia-300:hover{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}.hover\:text-fuchsia-400:hover{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}.hover\:text-fuchsia-50:hover{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}.hover\:text-fuchsia-500:hover{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}.hover\:text-fuchsia-600:hover{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.hover\:text-fuchsia-700:hover{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.hover\:text-fuchsia-800:hover{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.hover\:text-fuchsia-900:hover{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}.hover\:text-fuchsia-950:hover{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}.hover\:text-gray-100:hover{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.hover\:text-gray-400:hover{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.hover\:text-gray-50:hover{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.hover\:text-gray-950:hover{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.hover\:text-green-100:hover{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.hover\:text-green-200:hover{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.hover\:text-green-300:hover{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.hover\:text-green-400:hover{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.hover\:text-green-50:hover{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}.hover\:text-green-500:hover{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.hover\:text-green-600:hover{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.hover\:text-green-700:hover{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.hover\:text-green-800:hover{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.hover\:text-green-900:hover{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}.hover\:text-green-950:hover{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}.hover\:text-indigo-100:hover{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}.hover\:text-indigo-200:hover{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.hover\:text-indigo-300:hover{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.hover\:text-indigo-400:hover{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.hover\:text-indigo-50:hover{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}.hover\:text-indigo-500:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.hover\:text-indigo-600:hover{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.hover\:text-indigo-700:hover{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.hover\:text-indigo-800:hover{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.hover\:text-indigo-900:hover{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.hover\:text-indigo-950:hover{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.hover\:text-lime-100:hover{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}.hover\:text-lime-200:hover{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}.hover\:text-lime-300:hover{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}.hover\:text-lime-400:hover{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}.hover\:text-lime-50:hover{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}.hover\:text-lime-500:hover{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}.hover\:text-lime-600:hover{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.hover\:text-lime-700:hover{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}.hover\:text-lime-800:hover{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}.hover\:text-lime-900:hover{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.hover\:text-lime-950:hover{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}.hover\:text-neutral-100:hover{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.hover\:text-neutral-200:hover{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.hover\:text-neutral-300:hover{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.hover\:text-neutral-400:hover{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.hover\:text-neutral-50:hover{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.hover\:text-neutral-500:hover{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.hover\:text-neutral-600:hover{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.hover\:text-neutral-700:hover{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.hover\:text-neutral-800:hover{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.hover\:text-neutral-900:hover{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.hover\:text-neutral-950:hover{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}.hover\:text-orange-100:hover{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}.hover\:text-orange-200:hover{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.hover\:text-orange-300:hover{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.hover\:text-orange-400:hover{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.hover\:text-orange-50:hover{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}.hover\:text-orange-500:hover{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.hover\:text-orange-600:hover{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.hover\:text-orange-700:hover{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.hover\:text-orange-800:hover{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.hover\:text-orange-900:hover{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}.hover\:text-orange-950:hover{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}.hover\:text-pink-100:hover{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}.hover\:text-pink-200:hover{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.hover\:text-pink-300:hover{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}.hover\:text-pink-400:hover{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}.hover\:text-pink-50:hover{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}.hover\:text-pink-500:hover{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.hover\:text-pink-600:hover{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.hover\:text-pink-700:hover{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.hover\:text-pink-800:hover{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.hover\:text-pink-900:hover{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}.hover\:text-pink-950:hover{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}.hover\:text-purple-100:hover{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}.hover\:text-purple-200:hover{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}.hover\:text-purple-300:hover{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.hover\:text-purple-400:hover{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.hover\:text-purple-50:hover{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}.hover\:text-purple-500:hover{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.hover\:text-purple-600:hover{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.hover\:text-purple-700:hover{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.hover\:text-purple-800:hover{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.hover\:text-purple-900:hover{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}.hover\:text-purple-950:hover{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}.hover\:text-red-100:hover{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}.hover\:text-red-200:hover{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.hover\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.hover\:text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.hover\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.hover\:text-red-800:hover{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.hover\:text-red-900:hover{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.hover\:text-red-950:hover{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}.hover\:text-rose-100:hover{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.hover\:text-rose-200:hover{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.hover\:text-rose-300:hover{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.hover\:text-rose-400:hover{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.hover\:text-rose-50:hover{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}.hover\:text-rose-500:hover{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.hover\:text-rose-600:hover{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.hover\:text-rose-700:hover{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.hover\:text-rose-800:hover{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.hover\:text-rose-900:hover{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.hover\:text-rose-950:hover{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}.hover\:text-sky-100:hover{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.hover\:text-sky-200:hover{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.hover\:text-sky-300:hover{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.hover\:text-sky-400:hover{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.hover\:text-sky-50:hover{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}.hover\:text-sky-500:hover{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.hover\:text-sky-600:hover{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.hover\:text-sky-700:hover{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.hover\:text-sky-800:hover{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.hover\:text-sky-900:hover{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}.hover\:text-sky-950:hover{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}.hover\:text-slate-100:hover{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.hover\:text-slate-200:hover{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.hover\:text-slate-300:hover{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.hover\:text-slate-400:hover{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.hover\:text-slate-50:hover{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.hover\:text-slate-500:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.hover\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.hover\:text-slate-800:hover{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.hover\:text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.hover\:text-slate-950:hover{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.hover\:text-stone-100:hover{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}.hover\:text-stone-200:hover{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}.hover\:text-stone-300:hover{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}.hover\:text-stone-400:hover{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.hover\:text-stone-50:hover{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}.hover\:text-stone-500:hover{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.hover\:text-stone-600:hover{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.hover\:text-stone-700:hover{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}.hover\:text-stone-800:hover{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}.hover\:text-stone-900:hover{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}.hover\:text-stone-950:hover{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}.hover\:text-teal-100:hover{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}.hover\:text-teal-200:hover{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.hover\:text-teal-300:hover{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}.hover\:text-teal-400:hover{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}.hover\:text-teal-50:hover{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}.hover\:text-teal-500:hover{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}.hover\:text-teal-600:hover{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.hover\:text-teal-700:hover{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.hover\:text-teal-800:hover{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.hover\:text-teal-900:hover{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}.hover\:text-teal-950:hover{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}.hover\:text-tremor-brand-emphasis:hover{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.hover\:text-tremor-content:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.hover\:text-tremor-content-emphasis:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.hover\:text-violet-100:hover{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}.hover\:text-violet-200:hover{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.hover\:text-violet-300:hover{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.hover\:text-violet-400:hover{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.hover\:text-violet-50:hover{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}.hover\:text-violet-500:hover{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.hover\:text-violet-600:hover{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.hover\:text-violet-700:hover{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.hover\:text-violet-800:hover{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}.hover\:text-violet-900:hover{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}.hover\:text-violet-950:hover{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}.hover\:text-yellow-100:hover{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}.hover\:text-yellow-200:hover{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}.hover\:text-yellow-300:hover{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.hover\:text-yellow-400:hover{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.hover\:text-yellow-50:hover{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}.hover\:text-yellow-500:hover{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.hover\:text-yellow-600:hover{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.hover\:text-yellow-700:hover{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.hover\:text-yellow-800:hover{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.hover\:text-yellow-900:hover{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}.hover\:text-yellow-950:hover{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}.hover\:text-zinc-100:hover{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.hover\:text-zinc-200:hover{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.hover\:text-zinc-300:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.hover\:text-zinc-400:hover{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.hover\:text-zinc-50:hover{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.hover\:text-zinc-500:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.hover\:text-zinc-600:hover{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.hover\:text-zinc-700:hover{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.hover\:text-zinc-800:hover{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.hover\:text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.hover\:text-zinc-950:hover{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.hover\:shadow-md:hover,.hover\:shadow-sm:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.focus\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.focus\:border-transparent:focus{border-color:transparent}.focus\:border-tremor-brand-subtle:focus{--tw-border-opacity:1;border-color:rgb(142 145 235/var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-1:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.focus\:ring-red-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(254 202 202/var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.focus\:ring-tremor-brand-muted:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(134 136 239/var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:\!bg-gray-300:disabled{--tw-bg-opacity:1!important;background-color:rgb(209 213 219/var(--tw-bg-opacity))!important}.disabled\:bg-indigo-400:disabled{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.disabled\:\!text-gray-500:disabled{--tw-text-opacity:1!important;color:rgb(107 114 128/var(--tw-text-opacity))!important}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.group:hover .group-hover\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.group:hover .group-hover\:text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.group:hover .group-hover\:opacity-100{opacity:1}.group:active .group-active\:scale-95{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.aria-selected\:\!bg-tremor-background-subtle[aria-selected=true]{--tw-bg-opacity:1!important;background-color:rgb(243 244 246/var(--tw-bg-opacity))!important}.aria-selected\:bg-tremor-background-emphasis[aria-selected=true]{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.aria-selected\:\!text-tremor-content[aria-selected=true]{--tw-text-opacity:1!important;color:rgb(107 114 128/var(--tw-text-opacity))!important}.aria-selected\:text-dark-tremor-brand-inverted[aria-selected=true]{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.aria-selected\:text-tremor-brand-inverted[aria-selected=true],.aria-selected\:text-tremor-content-inverted[aria-selected=true]{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.ui-selected\:border-b-2[data-headlessui-state~=selected]{border-bottom-width:2px}.ui-selected\:border-amber-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}.ui-selected\:border-amber-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.ui-selected\:border-amber-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.ui-selected\:border-amber-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.ui-selected\:border-amber-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}.ui-selected\:border-amber-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.ui-selected\:border-amber-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.ui-selected\:border-amber-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}.ui-selected\:border-amber-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.ui-selected\:border-amber-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}.ui-selected\:border-amber-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}.ui-selected\:border-blue-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}.ui-selected\:border-blue-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.ui-selected\:border-blue-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}.ui-selected\:border-blue-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.ui-selected\:border-blue-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}.ui-selected\:border-blue-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.ui-selected\:border-blue-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.ui-selected\:border-blue-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.ui-selected\:border-blue-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}.ui-selected\:border-blue-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}.ui-selected\:border-blue-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}.ui-selected\:border-cyan-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}.ui-selected\:border-cyan-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}.ui-selected\:border-cyan-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}.ui-selected\:border-cyan-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}.ui-selected\:border-cyan-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}.ui-selected\:border-cyan-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.ui-selected\:border-cyan-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}.ui-selected\:border-cyan-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}.ui-selected\:border-cyan-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}.ui-selected\:border-cyan-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}.ui-selected\:border-cyan-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}.ui-selected\:border-emerald-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}.ui-selected\:border-emerald-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.ui-selected\:border-emerald-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.ui-selected\:border-emerald-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.ui-selected\:border-emerald-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}.ui-selected\:border-emerald-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.ui-selected\:border-emerald-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.ui-selected\:border-emerald-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.ui-selected\:border-emerald-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.ui-selected\:border-emerald-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}.ui-selected\:border-emerald-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}.ui-selected\:border-gray-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.ui-selected\:border-gray-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.ui-selected\:border-gray-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.ui-selected\:border-gray-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.ui-selected\:border-gray-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}.ui-selected\:border-gray-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.ui-selected\:border-gray-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.ui-selected\:border-gray-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.ui-selected\:border-gray-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.ui-selected\:border-gray-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.ui-selected\:border-gray-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}.ui-selected\:border-green-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}.ui-selected\:border-green-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}.ui-selected\:border-green-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}.ui-selected\:border-green-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.ui-selected\:border-green-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}.ui-selected\:border-green-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.ui-selected\:border-green-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.ui-selected\:border-green-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}.ui-selected\:border-green-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}.ui-selected\:border-green-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.ui-selected\:border-green-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}.ui-selected\:border-indigo-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}.ui-selected\:border-indigo-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}.ui-selected\:border-indigo-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.ui-selected\:border-indigo-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.ui-selected\:border-indigo-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}.ui-selected\:border-indigo-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.ui-selected\:border-indigo-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.ui-selected\:border-indigo-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.ui-selected\:border-indigo-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.ui-selected\:border-indigo-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}.ui-selected\:border-indigo-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.ui-selected\:border-lime-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}.ui-selected\:border-lime-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}.ui-selected\:border-lime-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}.ui-selected\:border-lime-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}.ui-selected\:border-lime-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}.ui-selected\:border-lime-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.ui-selected\:border-lime-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}.ui-selected\:border-lime-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}.ui-selected\:border-lime-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}.ui-selected\:border-lime-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}.ui-selected\:border-lime-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}.ui-selected\:border-neutral-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}.ui-selected\:border-neutral-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.ui-selected\:border-neutral-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.ui-selected\:border-neutral-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.ui-selected\:border-neutral-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.ui-selected\:border-neutral-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}.ui-selected\:border-neutral-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.ui-selected\:border-neutral-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.ui-selected\:border-neutral-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}.ui-selected\:border-neutral-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}.ui-selected\:border-neutral-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}.ui-selected\:border-orange-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}.ui-selected\:border-orange-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}.ui-selected\:border-orange-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.ui-selected\:border-orange-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.ui-selected\:border-orange-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}.ui-selected\:border-orange-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.ui-selected\:border-orange-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.ui-selected\:border-orange-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}.ui-selected\:border-orange-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}.ui-selected\:border-orange-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}.ui-selected\:border-orange-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}.ui-selected\:border-pink-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}.ui-selected\:border-pink-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}.ui-selected\:border-pink-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}.ui-selected\:border-pink-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}.ui-selected\:border-pink-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}.ui-selected\:border-pink-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.ui-selected\:border-pink-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.ui-selected\:border-pink-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}.ui-selected\:border-pink-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}.ui-selected\:border-pink-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}.ui-selected\:border-pink-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}.ui-selected\:border-purple-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}.ui-selected\:border-purple-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.ui-selected\:border-purple-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.ui-selected\:border-purple-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}.ui-selected\:border-purple-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}.ui-selected\:border-purple-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.ui-selected\:border-purple-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.ui-selected\:border-purple-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}.ui-selected\:border-purple-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}.ui-selected\:border-purple-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}.ui-selected\:border-purple-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}.ui-selected\:border-red-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}.ui-selected\:border-red-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.ui-selected\:border-red-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.ui-selected\:border-red-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.ui-selected\:border-red-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}.ui-selected\:border-red-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.ui-selected\:border-red-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.ui-selected\:border-red-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.ui-selected\:border-red-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}.ui-selected\:border-red-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}.ui-selected\:border-red-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}.ui-selected\:border-rose-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}.ui-selected\:border-rose-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.ui-selected\:border-rose-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.ui-selected\:border-rose-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.ui-selected\:border-rose-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}.ui-selected\:border-rose-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}.ui-selected\:border-rose-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.ui-selected\:border-rose-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}.ui-selected\:border-rose-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.ui-selected\:border-rose-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}.ui-selected\:border-rose-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}.ui-selected\:border-sky-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.ui-selected\:border-sky-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.ui-selected\:border-sky-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.ui-selected\:border-sky-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.ui-selected\:border-sky-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}.ui-selected\:border-sky-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.ui-selected\:border-sky-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.ui-selected\:border-sky-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.ui-selected\:border-sky-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.ui-selected\:border-sky-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.ui-selected\:border-sky-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}.ui-selected\:border-slate-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.ui-selected\:border-slate-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.ui-selected\:border-slate-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.ui-selected\:border-slate-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.ui-selected\:border-slate-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.ui-selected\:border-slate-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.ui-selected\:border-slate-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.ui-selected\:border-slate-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.ui-selected\:border-slate-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.ui-selected\:border-slate-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.ui-selected\:border-slate-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}.ui-selected\:border-stone-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}.ui-selected\:border-stone-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}.ui-selected\:border-stone-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.ui-selected\:border-stone-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}.ui-selected\:border-stone-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}.ui-selected\:border-stone-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}.ui-selected\:border-stone-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}.ui-selected\:border-stone-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}.ui-selected\:border-stone-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}.ui-selected\:border-stone-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}.ui-selected\:border-stone-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}.ui-selected\:border-teal-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}.ui-selected\:border-teal-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}.ui-selected\:border-teal-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}.ui-selected\:border-teal-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.ui-selected\:border-teal-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}.ui-selected\:border-teal-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.ui-selected\:border-teal-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.ui-selected\:border-teal-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}.ui-selected\:border-teal-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}.ui-selected\:border-teal-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}.ui-selected\:border-teal-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}.ui-selected\:border-tremor-border[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.ui-selected\:border-tremor-brand[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.ui-selected\:border-violet-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}.ui-selected\:border-violet-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}.ui-selected\:border-violet-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.ui-selected\:border-violet-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.ui-selected\:border-violet-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}.ui-selected\:border-violet-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}.ui-selected\:border-violet-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}.ui-selected\:border-violet-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}.ui-selected\:border-violet-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}.ui-selected\:border-violet-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}.ui-selected\:border-violet-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}.ui-selected\:border-yellow-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}.ui-selected\:border-yellow-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}.ui-selected\:border-yellow-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.ui-selected\:border-yellow-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.ui-selected\:border-yellow-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}.ui-selected\:border-yellow-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}.ui-selected\:border-yellow-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}.ui-selected\:border-yellow-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}.ui-selected\:border-yellow-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.ui-selected\:border-yellow-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}.ui-selected\:border-yellow-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}.ui-selected\:border-zinc-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.ui-selected\:border-zinc-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.ui-selected\:border-zinc-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.ui-selected\:border-zinc-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.ui-selected\:border-zinc-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.ui-selected\:border-zinc-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}.ui-selected\:border-zinc-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.ui-selected\:border-zinc-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.ui-selected\:border-zinc-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.ui-selected\:border-zinc-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}.ui-selected\:border-zinc-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}.ui-selected\:bg-amber-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.ui-selected\:bg-amber-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.ui-selected\:bg-amber-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.ui-selected\:bg-amber-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.ui-selected\:bg-amber-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.ui-selected\:bg-amber-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.ui-selected\:bg-amber-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.ui-selected\:bg-amber-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.ui-selected\:bg-amber-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.ui-selected\:bg-amber-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.ui-selected\:bg-amber-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}.ui-selected\:bg-blue-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.ui-selected\:bg-blue-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.ui-selected\:bg-blue-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.ui-selected\:bg-blue-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.ui-selected\:bg-blue-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.ui-selected\:bg-blue-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.ui-selected\:bg-blue-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.ui-selected\:bg-blue-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.ui-selected\:bg-blue-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.ui-selected\:bg-blue-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.ui-selected\:bg-blue-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}.ui-selected\:bg-gray-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.ui-selected\:bg-gray-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.ui-selected\:bg-gray-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.ui-selected\:bg-gray-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.ui-selected\:bg-gray-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ui-selected\:bg-gray-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.ui-selected\:bg-gray-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.ui-selected\:bg-gray-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.ui-selected\:bg-gray-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.ui-selected\:bg-gray-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.ui-selected\:bg-gray-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.ui-selected\:bg-green-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.ui-selected\:bg-green-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.ui-selected\:bg-green-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.ui-selected\:bg-green-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.ui-selected\:bg-green-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.ui-selected\:bg-green-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.ui-selected\:bg-green-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.ui-selected\:bg-green-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.ui-selected\:bg-green-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.ui-selected\:bg-green-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.ui-selected\:bg-green-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.ui-selected\:bg-lime-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.ui-selected\:bg-lime-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.ui-selected\:bg-lime-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}.ui-selected\:bg-lime-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}.ui-selected\:bg-lime-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}.ui-selected\:bg-lime-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.ui-selected\:bg-lime-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.ui-selected\:bg-lime-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.ui-selected\:bg-lime-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.ui-selected\:bg-lime-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}.ui-selected\:bg-lime-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.ui-selected\:bg-orange-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.ui-selected\:bg-orange-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.ui-selected\:bg-orange-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.ui-selected\:bg-orange-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.ui-selected\:bg-orange-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.ui-selected\:bg-orange-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.ui-selected\:bg-orange-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.ui-selected\:bg-orange-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.ui-selected\:bg-orange-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.ui-selected\:bg-orange-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}.ui-selected\:bg-orange-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}.ui-selected\:bg-pink-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.ui-selected\:bg-pink-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}.ui-selected\:bg-pink-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}.ui-selected\:bg-pink-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.ui-selected\:bg-pink-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.ui-selected\:bg-pink-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.ui-selected\:bg-pink-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.ui-selected\:bg-pink-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.ui-selected\:bg-pink-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.ui-selected\:bg-pink-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}.ui-selected\:bg-pink-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}.ui-selected\:bg-purple-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.ui-selected\:bg-purple-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}.ui-selected\:bg-purple-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}.ui-selected\:bg-purple-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}.ui-selected\:bg-purple-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.ui-selected\:bg-purple-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.ui-selected\:bg-purple-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.ui-selected\:bg-purple-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.ui-selected\:bg-purple-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.ui-selected\:bg-purple-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}.ui-selected\:bg-purple-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}.ui-selected\:bg-red-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.ui-selected\:bg-red-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.ui-selected\:bg-red-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.ui-selected\:bg-red-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.ui-selected\:bg-red-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.ui-selected\:bg-red-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.ui-selected\:bg-red-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.ui-selected\:bg-red-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.ui-selected\:bg-red-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.ui-selected\:bg-red-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.ui-selected\:bg-red-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}.ui-selected\:bg-rose-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.ui-selected\:bg-rose-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.ui-selected\:bg-rose-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}.ui-selected\:bg-rose-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.ui-selected\:bg-rose-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.ui-selected\:bg-rose-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.ui-selected\:bg-rose-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.ui-selected\:bg-rose-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.ui-selected\:bg-rose-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.ui-selected\:bg-rose-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.ui-selected\:bg-rose-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}.ui-selected\:bg-sky-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.ui-selected\:bg-sky-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.ui-selected\:bg-sky-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.ui-selected\:bg-sky-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.ui-selected\:bg-sky-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.ui-selected\:bg-sky-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.ui-selected\:bg-sky-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.ui-selected\:bg-sky-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.ui-selected\:bg-sky-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.ui-selected\:bg-sky-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.ui-selected\:bg-sky-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}.ui-selected\:bg-slate-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.ui-selected\:bg-slate-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.ui-selected\:bg-slate-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.ui-selected\:bg-slate-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.ui-selected\:bg-slate-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.ui-selected\:bg-slate-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.ui-selected\:bg-slate-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.ui-selected\:bg-slate-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.ui-selected\:bg-slate-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.ui-selected\:bg-slate-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.ui-selected\:bg-slate-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.ui-selected\:bg-stone-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.ui-selected\:bg-stone-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.ui-selected\:bg-stone-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}.ui-selected\:bg-stone-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}.ui-selected\:bg-stone-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}.ui-selected\:bg-stone-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}.ui-selected\:bg-stone-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}.ui-selected\:bg-stone-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}.ui-selected\:bg-stone-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}.ui-selected\:bg-stone-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}.ui-selected\:bg-stone-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}.ui-selected\:bg-teal-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.ui-selected\:bg-teal-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}.ui-selected\:bg-teal-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}.ui-selected\:bg-teal-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.ui-selected\:bg-teal-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}.ui-selected\:bg-teal-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.ui-selected\:bg-teal-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.ui-selected\:bg-teal-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.ui-selected\:bg-teal-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.ui-selected\:bg-teal-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}.ui-selected\:bg-teal-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}.ui-selected\:bg-tremor-background[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.ui-selected\:bg-tremor-background-muted[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ui-selected\:bg-violet-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.ui-selected\:bg-violet-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.ui-selected\:bg-violet-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.ui-selected\:bg-violet-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}.ui-selected\:bg-violet-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.ui-selected\:bg-violet-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}.ui-selected\:bg-violet-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.ui-selected\:bg-violet-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}.ui-selected\:bg-violet-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.ui-selected\:bg-violet-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}.ui-selected\:bg-violet-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}.ui-selected\:text-amber-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.ui-selected\:text-amber-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.ui-selected\:text-amber-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.ui-selected\:text-amber-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.ui-selected\:text-amber-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}.ui-selected\:text-amber-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.ui-selected\:text-amber-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.ui-selected\:text-amber-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.ui-selected\:text-amber-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.ui-selected\:text-amber-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.ui-selected\:text-amber-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}.ui-selected\:text-blue-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}.ui-selected\:text-blue-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.ui-selected\:text-blue-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.ui-selected\:text-blue-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.ui-selected\:text-blue-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}.ui-selected\:text-blue-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.ui-selected\:text-blue-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.ui-selected\:text-blue-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.ui-selected\:text-blue-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.ui-selected\:text-blue-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.ui-selected\:text-blue-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}.ui-selected\:text-cyan-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.ui-selected\:text-cyan-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}.ui-selected\:text-cyan-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}.ui-selected\:text-cyan-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.ui-selected\:text-cyan-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}.ui-selected\:text-cyan-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.ui-selected\:text-cyan-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.ui-selected\:text-cyan-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.ui-selected\:text-cyan-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}.ui-selected\:text-cyan-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.ui-selected\:text-cyan-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}.ui-selected\:text-dark-tremor-brand[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.ui-selected\:text-emerald-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.ui-selected\:text-emerald-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}.ui-selected\:text-emerald-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.ui-selected\:text-emerald-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.ui-selected\:text-emerald-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}.ui-selected\:text-emerald-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.ui-selected\:text-emerald-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.ui-selected\:text-emerald-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.ui-selected\:text-emerald-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.ui-selected\:text-emerald-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}.ui-selected\:text-emerald-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}.ui-selected\:text-gray-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.ui-selected\:text-gray-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.ui-selected\:text-gray-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.ui-selected\:text-gray-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.ui-selected\:text-gray-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.ui-selected\:text-gray-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.ui-selected\:text-gray-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.ui-selected\:text-gray-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.ui-selected\:text-gray-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.ui-selected\:text-gray-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.ui-selected\:text-gray-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.ui-selected\:text-green-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.ui-selected\:text-green-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.ui-selected\:text-green-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.ui-selected\:text-green-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.ui-selected\:text-green-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}.ui-selected\:text-green-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.ui-selected\:text-green-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.ui-selected\:text-green-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.ui-selected\:text-green-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.ui-selected\:text-green-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}.ui-selected\:text-green-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}.ui-selected\:text-indigo-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}.ui-selected\:text-indigo-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.ui-selected\:text-indigo-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.ui-selected\:text-indigo-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.ui-selected\:text-indigo-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}.ui-selected\:text-indigo-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.ui-selected\:text-indigo-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.ui-selected\:text-indigo-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.ui-selected\:text-indigo-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.ui-selected\:text-indigo-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.ui-selected\:text-indigo-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.ui-selected\:text-lime-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}.ui-selected\:text-lime-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}.ui-selected\:text-lime-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}.ui-selected\:text-lime-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}.ui-selected\:text-lime-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}.ui-selected\:text-lime-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}.ui-selected\:text-lime-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.ui-selected\:text-lime-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}.ui-selected\:text-lime-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}.ui-selected\:text-lime-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.ui-selected\:text-lime-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}.ui-selected\:text-neutral-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.ui-selected\:text-neutral-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.ui-selected\:text-neutral-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.ui-selected\:text-neutral-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.ui-selected\:text-neutral-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.ui-selected\:text-neutral-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.ui-selected\:text-neutral-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.ui-selected\:text-neutral-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.ui-selected\:text-neutral-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.ui-selected\:text-neutral-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.ui-selected\:text-neutral-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}.ui-selected\:text-orange-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}.ui-selected\:text-orange-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.ui-selected\:text-orange-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.ui-selected\:text-orange-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.ui-selected\:text-orange-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}.ui-selected\:text-orange-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.ui-selected\:text-orange-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.ui-selected\:text-orange-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.ui-selected\:text-orange-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.ui-selected\:text-orange-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}.ui-selected\:text-orange-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}.ui-selected\:text-pink-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}.ui-selected\:text-pink-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.ui-selected\:text-pink-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}.ui-selected\:text-pink-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}.ui-selected\:text-pink-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}.ui-selected\:text-pink-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.ui-selected\:text-pink-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.ui-selected\:text-pink-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.ui-selected\:text-pink-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.ui-selected\:text-pink-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}.ui-selected\:text-pink-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}.ui-selected\:text-purple-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}.ui-selected\:text-purple-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}.ui-selected\:text-purple-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.ui-selected\:text-purple-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.ui-selected\:text-purple-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}.ui-selected\:text-purple-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.ui-selected\:text-purple-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.ui-selected\:text-purple-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.ui-selected\:text-purple-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.ui-selected\:text-purple-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}.ui-selected\:text-purple-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}.ui-selected\:text-red-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}.ui-selected\:text-red-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.ui-selected\:text-red-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.ui-selected\:text-red-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.ui-selected\:text-red-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.ui-selected\:text-red-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.ui-selected\:text-red-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.ui-selected\:text-red-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.ui-selected\:text-red-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.ui-selected\:text-red-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.ui-selected\:text-red-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}.ui-selected\:text-rose-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.ui-selected\:text-rose-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.ui-selected\:text-rose-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.ui-selected\:text-rose-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.ui-selected\:text-rose-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}.ui-selected\:text-rose-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.ui-selected\:text-rose-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.ui-selected\:text-rose-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.ui-selected\:text-rose-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.ui-selected\:text-rose-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.ui-selected\:text-rose-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}.ui-selected\:text-sky-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.ui-selected\:text-sky-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.ui-selected\:text-sky-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.ui-selected\:text-sky-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.ui-selected\:text-sky-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}.ui-selected\:text-sky-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.ui-selected\:text-sky-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.ui-selected\:text-sky-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.ui-selected\:text-sky-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.ui-selected\:text-sky-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}.ui-selected\:text-sky-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}.ui-selected\:text-slate-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.ui-selected\:text-slate-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.ui-selected\:text-slate-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.ui-selected\:text-slate-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.ui-selected\:text-slate-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.ui-selected\:text-slate-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.ui-selected\:text-slate-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.ui-selected\:text-slate-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.ui-selected\:text-slate-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.ui-selected\:text-slate-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.ui-selected\:text-slate-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.ui-selected\:text-stone-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}.ui-selected\:text-stone-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}.ui-selected\:text-stone-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}.ui-selected\:text-stone-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.ui-selected\:text-stone-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}.ui-selected\:text-stone-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.ui-selected\:text-stone-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.ui-selected\:text-stone-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}.ui-selected\:text-stone-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}.ui-selected\:text-stone-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}.ui-selected\:text-stone-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}.ui-selected\:text-teal-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}.ui-selected\:text-teal-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.ui-selected\:text-teal-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}.ui-selected\:text-teal-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}.ui-selected\:text-teal-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}.ui-selected\:text-teal-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}.ui-selected\:text-teal-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.ui-selected\:text-teal-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.ui-selected\:text-teal-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.ui-selected\:text-teal-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}.ui-selected\:text-teal-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}.ui-selected\:text-tremor-brand[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.ui-selected\:text-tremor-content-emphasis[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.ui-selected\:text-tremor-content-strong[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.ui-selected\:text-violet-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}.ui-selected\:text-violet-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.ui-selected\:text-violet-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.ui-selected\:text-violet-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.ui-selected\:text-violet-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}.ui-selected\:text-violet-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.ui-selected\:text-violet-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.ui-selected\:text-violet-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.ui-selected\:text-violet-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}.ui-selected\:text-violet-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}.ui-selected\:text-violet-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}.ui-selected\:text-yellow-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}.ui-selected\:text-yellow-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}.ui-selected\:text-yellow-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.ui-selected\:text-yellow-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.ui-selected\:text-yellow-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}.ui-selected\:text-yellow-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.ui-selected\:text-yellow-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.ui-selected\:text-yellow-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.ui-selected\:text-yellow-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.ui-selected\:text-yellow-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}.ui-selected\:text-yellow-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}.ui-selected\:text-zinc-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.ui-selected\:text-zinc-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.ui-selected\:text-zinc-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.ui-selected\:text-zinc-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.ui-selected\:text-zinc-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.ui-selected\:text-zinc-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.ui-selected\:text-zinc-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.ui-selected\:text-zinc-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.ui-selected\:text-zinc-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.ui-selected\:text-zinc-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.ui-selected\:text-zinc-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}.ui-selected\:shadow-tremor-input[data-headlessui-state~=selected]{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:where([data-headlessui-state~=selected]) .ui-selected\:border-b-2{border-bottom-width:2px}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-100{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-50{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-600{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-700{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-800{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-950{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-50{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-700{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-950{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-100{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-200{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-300{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-400{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-50{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-500{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-600{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-700{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-800{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-900{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-950{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-100{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-400{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-50{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-600{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-700{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-800{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-900{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-950{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-100{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-200{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-300{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-400{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-50{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-500{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-600{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-700{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-800{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-900{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-950{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-50{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-950{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-100{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-50{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-700{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-950{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-100{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-200{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-300{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-400{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-50{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-500{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-700{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-800{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-900{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-950{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-100{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-200{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-300{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-400{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-50{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-500{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-600{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-700{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-800{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-900{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-950{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-100{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-300{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-400{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-500{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-600{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-700{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-800{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-900{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-950{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-50{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-600{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-700{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-950{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-100{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-200{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-300{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-400{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-50{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-500{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-600{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-700{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-800{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-900{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-950{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-100{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-300{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-400{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-50{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-500{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-600{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-700{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-950{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-50{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-700{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-950{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-100{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-200{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-300{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-400{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-50{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-500{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-600{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-700{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-800{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-900{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-950{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-100{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-300{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-400{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-50{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-700{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-950{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-400{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-50{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-900{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-950{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-100{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-200{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-300{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-400{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-50{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-500{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-600{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-700{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-800{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-900{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-950{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-100{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-200{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-300{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-400{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-50{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-500{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-600{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-700{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-800{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-900{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-950{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-tremor-border{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-tremor-brand{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-100{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-200{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-300{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-400{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-50{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-500{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-600{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-700{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-800{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-900{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-950{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-100{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-50{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-600{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-700{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-800{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-900{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-950{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-100{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-400{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-500{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-950{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-200{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-300{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-700{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-800{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-200{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-300{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-700{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-800{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-200{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-300{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-400{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-50{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-600{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-700{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-800{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-900{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-950{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-200{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-300{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-800{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-900{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-950{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-100{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-200{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-300{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-400{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-50{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-500{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-600{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-700{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-800{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-900{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-950{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-300{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-800{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-200{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-300{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-400{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-700{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-800{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-900{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-950{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-100{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-200{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-300{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-400{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-50{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-500{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-700{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-800{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-900{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-950{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-200{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-300{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-400{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-500{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-600{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-950{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-300{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-300{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-400{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-500{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-700{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-800{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-900{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-950{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-300{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-400{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-800{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-300{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-800{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-100{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-200{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-300{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-400{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-50{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-700{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-800{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-900{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-950{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-200{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-400{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-700{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-800{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-900{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-100{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-200{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-300{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-400{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-50{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-500{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-600{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-700{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-800{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-900{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-950{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-100{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-200{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-300{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-400{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-50{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-800{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-900{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-950{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-tremor-background{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-tremor-background-muted{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-200{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-300{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-400{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-500{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-700{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-800{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-900{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-950{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-300{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-700{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-800{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-950{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-300{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-400{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-500{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-600{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-950{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-50{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-950{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-50{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-950{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-100{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-200{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-300{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-50{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-800{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-900{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-950{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-dark-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-100{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-200{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-50{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-900{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-950{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-100{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-200{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-300{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-400{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-50{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-500{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-600{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-700{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-800{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-900{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-950{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-950{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-100{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-50{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-950{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-100{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-200{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-300{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-50{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-900{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-950{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-100{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-200{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-300{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-400{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-50{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-500{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-600{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-700{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-800{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-900{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-950{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-100{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-300{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-700{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-800{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-50{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-900{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-950{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-100{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-200{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-300{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-400{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-50{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-600{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-700{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-800{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-900{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-950{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-100{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-50{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-900{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-950{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-50{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-950{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-100{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-200{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-50{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-800{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-900{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-950{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-100{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-50{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-800{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-900{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-950{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-50{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-950{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-100{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-200{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-300{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-400{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-50{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-600{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-700{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-800{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-900{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-950{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-100{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-200{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-300{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-400{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-50{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-500{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-700{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-800{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-900{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-950{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-tremor-content-strong{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-100{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-200{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-50{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-600{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-700{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-800{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-900{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-950{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-100{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-50{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-950{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-100{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:shadow-tremor-input{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ui-active\:bg-tremor-background-muted[data-headlessui-state~=active]{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ui-active\:text-tremor-content-strong[data-headlessui-state~=active]{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:where([data-headlessui-state~=active]) .ui-active\:bg-tremor-background-muted{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}:where([data-headlessui-state~=active]) .ui-active\:text-tremor-content-strong{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:is(.dark .dark\:divide-dark-tremor-border)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(55 65 81/var(--tw-divide-opacity))}:is(.dark .dark\:border-dark-tremor-background){--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-border){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand){--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand-emphasis){--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand-inverted){--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand-subtle){--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:is(.dark .dark\:bg-dark-tremor-background){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-background-emphasis){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-background-muted){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-background-subtle){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-border){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-brand){--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-brand-muted){--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-brand-muted\/70){background-color:rgba(30,27,75,.7)}:is(.dark .dark\:bg-dark-tremor-brand-subtle){--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-content-subtle){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-950\/50){background-color:rgba(2,6,23,.5)}:is(.dark .dark\:bg-opacity-10){--tw-bg-opacity:0.1}:is(.dark .dark\:bg-opacity-25){--tw-bg-opacity:0.25}:is(.dark .dark\:bg-opacity-30){--tw-bg-opacity:0.3}:is(.dark .dark\:from-dark-tremor-background){--tw-gradient-from:#111827 var(--tw-gradient-from-position);--tw-gradient-to:rgba(17,24,39,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:is(.dark .dark\:to-dark-tremor-background){--tw-gradient-to:#111827 var(--tw-gradient-to-position)}:is(.dark .dark\:fill-dark-tremor-content){fill:#6b7280}:is(.dark .dark\:fill-dark-tremor-content-emphasis){fill:#e5e7eb}:is(.dark .dark\:stroke-dark-tremor-background){stroke:#111827}:is(.dark .dark\:stroke-dark-tremor-border){stroke:#374151}:is(.dark .dark\:stroke-dark-tremor-brand){stroke:#6366f1}:is(.dark .dark\:stroke-dark-tremor-brand-muted){stroke:#1e1b4b}:is(.dark .dark\:text-dark-tremor-brand){--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-brand-emphasis){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-brand-inverted){--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content-emphasis){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content-strong){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content-subtle){--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:accent-dark-tremor-brand){accent-color:#6366f1}:is(.dark .dark\:opacity-25){opacity:.25}:is(.dark .dark\:shadow-dark-tremor-card){--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:shadow-dark-tremor-dropdown){--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:shadow-dark-tremor-input){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:outline-dark-tremor-brand){outline-color:#6366f1}:is(.dark .dark\:ring-dark-tremor-brand-inverted){--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .dark\:ring-dark-tremor-brand-muted){--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .dark\:ring-dark-tremor-ring){--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55/var(--tw-ring-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content)::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content)::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content-subtle)::-moz-placeholder{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content-subtle)::placeholder{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content)::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content)::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content-subtle)::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content-subtle)::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:hover\:border-dark-tremor-brand-emphasis:hover){--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}:is(.dark .dark\:hover\:border-dark-tremor-content-emphasis:hover){--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-background-muted:hover){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-background-subtle:hover){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-brand-emphasis:hover){--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-brand-faint:hover){--tw-bg-opacity:1;background-color:rgb(11 18 41/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-opacity-20:hover){--tw-bg-opacity:0.2}:is(.dark .dark\:hover\:text-dark-tremor-brand-emphasis:hover){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-dark-tremor-content:hover){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-dark-tremor-content-emphasis:hover){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-tremor-content:hover){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-tremor-content-emphasis:hover){--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}:is(.dark .hover\:dark\:text-dark-tremor-content):hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:focus\:border-dark-tremor-brand-subtle:focus){--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:is(.dark .focus\:dark\:border-dark-tremor-brand-subtle):focus{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:is(.dark .dark\:focus\:ring-dark-tremor-brand-muted:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .focus\:dark\:ring-dark-tremor-brand-muted):focus{--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-dark-tremor-content-emphasis){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .aria-selected\:dark\:\!bg-dark-tremor-background-subtle)[aria-selected=true]{--tw-bg-opacity:1!important;background-color:rgb(31 41 55/var(--tw-bg-opacity))!important}:is(.dark .dark\:aria-selected\:bg-dark-tremor-background-emphasis[aria-selected=true]){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}:is(.dark .dark\:aria-selected\:text-dark-tremor-brand-inverted[aria-selected=true]){--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}:is(.dark .dark\:aria-selected\:text-dark-tremor-content-inverted[aria-selected=true]){--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:border-dark-tremor-border[data-headlessui-state~=selected]){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\:ui-selected\:border-dark-tremor-brand[data-headlessui-state~=selected]){--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:is(.dark .dark\:ui-selected\:bg-dark-tremor-background[data-headlessui-state~=selected]){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:ui-selected\:bg-dark-tremor-background-muted[data-headlessui-state~=selected]){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:ui-selected\:text-dark-tremor-brand[data-headlessui-state~=selected]){--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:text-dark-tremor-content-emphasis[data-headlessui-state~=selected]){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:text-dark-tremor-content-strong[data-headlessui-state~=selected]){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:shadow-dark-tremor-input[data-headlessui-state~=selected]){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:border-dark-tremor-border){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:border-dark-tremor-brand){--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:bg-dark-tremor-background){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:bg-dark-tremor-background-muted){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:text-dark-tremor-brand){--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:text-dark-tremor-content-emphasis){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:text-dark-tremor-content-strong){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:shadow-dark-tremor-input){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:ui-active\:bg-dark-tremor-background-muted[data-headlessui-state~=active]){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:ui-active\:text-dark-tremor-content-strong[data-headlessui-state~=active]){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=active]) .dark\:ui-active\:bg-dark-tremor-background-muted){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark :where([data-headlessui-state~=active]) .dark\:ui-active\:text-dark-tremor-content-strong){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}@media (min-width:640px){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-10{grid-column:span 10/span 10}.sm\:col-span-11{grid-column:span 11/span 11}.sm\:col-span-12{grid-column:span 12/span 12}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:col-span-4{grid-column:span 4/span 4}.sm\:col-span-5{grid-column:span 5/span 5}.sm\:col-span-6{grid-column:span 6/span 6}.sm\:col-span-7{grid-column:span 7/span 7}.sm\:col-span-8{grid-column:span 8/span 8}.sm\:col-span-9{grid-column:span 9/span 9}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:mb-0{margin-bottom:0}.sm\:ml-4{margin-left:1rem}.sm\:mt-0{margin-top:0}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:h-screen{height:100vh}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.sm\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.sm\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.sm\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.sm\:grid-cols-none{grid-template-columns:none}.sm\:flex-row{flex-direction:row}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}}@media (min-width:768px){.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-10{grid-column:span 10/span 10}.md\:col-span-11{grid-column:span 11/span 11}.md\:col-span-12{grid-column:span 12/span 12}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-5{grid-column:span 5/span 5}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-7{grid-column:span 7/span 7}.md\:col-span-8{grid-column:span 8/span 8}.md\:col-span-9{grid-column:span 9/span 9}.md\:table-cell{display:table-cell}.md\:hidden{display:none}.md\:w-auto{width:auto}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.md\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:grid-cols-none{grid-template-columns:none}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}}@media (min-width:1024px){.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-10{grid-column:span 10/span 10}.lg\:col-span-11{grid-column:span 11/span 11}.lg\:col-span-12{grid-column:span 12/span 12}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:inline{display:inline}.lg\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:max-w-\[200px\]{max-width:200px}.lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.lg\:grid-cols-none{grid-template-columns:none}}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button,.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&_td\]\:py-0\.5 td{padding-top:.125rem;padding-bottom:.125rem}.\[\&_td\]\:py-2 td{padding-top:.5rem;padding-bottom:.5rem}.\[\&_th\]\:py-1 th{padding-top:.25rem;padding-bottom:.25rem}.\[\&_th\]\:py-2 th{padding-top:.5rem;padding-bottom:.5rem} \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/css/ec98fed1bdd650b4.css b/litellm/proxy/_experimental/out/_next/static/css/ec98fed1bdd650b4.css deleted file mode 100644 index 119e79c1024..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/css/ec98fed1bdd650b4.css +++ /dev/null @@ -1,3 +0,0 @@ -/* -! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com -*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af}input::placeholder,textarea::placeholder{color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors:active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors:active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media (forced-colors:active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.not-sr-only{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-1{inset:-.25rem}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-x-\[-1\.5rem\]{left:-1.5rem;right:-1.5rem}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-\[-1\.5rem\]{bottom:-1.5rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-1{right:.25rem}.right-1\/2{right:50%}.right-10{right:2.5rem}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-4{top:1rem}.top-8{top:2rem}.top-full{top:100%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.col-span-1{grid-column:span 1/span 1}.col-span-10{grid-column:span 10/span 10}.col-span-11{grid-column:span 11/span 11}.col-span-12{grid-column:span 12/span 12}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-7{grid-column:span 7/span 7}.col-span-8{grid-column:span 8/span 8}.col-span-9{grid-column:span 9/span 9}.m-0{margin:0}.m-2{margin:.5rem}.m-8{margin:2rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.\!mb-0{margin-bottom:0!important}.-mb-px{margin-bottom:-1px}.-ml-0{margin-left:0}.-ml-0\.5{margin-left:-.125rem}.-ml-1{margin-left:-.25rem}.-ml-1\.5{margin-left:-.375rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-11{margin-left:2.75rem}.ml-12{margin-left:3rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-6{margin-left:1.5rem}.ml-7{margin-left:1.75rem}.ml-8{margin-left:2rem}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-2\.5{margin-right:.625rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-8{margin-right:2rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.box-border{box-sizing:border-box}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.\!inline{display:inline!important}.inline{display:inline}.\!flex{display:flex!important}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.size-12{width:3rem;height:3rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.\!h-8{height:2rem!important}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-52{height:13rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-80{height:20rem}.h-9{height:2.25rem}.h-\[100vh\]{height:100vh}.h-\[1px\]{height:1px}.h-\[350px\]{height:350px}.h-\[600px\]{height:600px}.h-\[75vh\]{height:75vh}.h-\[80vh\]{height:80vh}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-24{max-height:6rem}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-8{max-height:2rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[228px\]{max-height:228px}.max-h-\[400px\]{max-height:400px}.max-h-\[40vh\]{max-height:40vh}.max-h-\[500px\]{max-height:500px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[65vh\]{max-height:65vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[75vh\]{max-height:75vh}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-\[120px\]{min-height:120px}.min-h-\[380px\]{min-height:380px}.min-h-\[400px\]{min-height:400px}.min-h-\[44px\]{min-height:44px}.min-h-\[500px\]{min-height:500px}.min-h-\[750px\]{min-height:750px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.\!w-8{width:2rem!important}.w-0{width:0}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-11\/12{width:91.666667%}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[120px\]{width:120px}.w-\[300px\]{width:300px}.w-\[400px\]{width:400px}.w-\[90\%\]{width:90%}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-screen{width:100vw}.\!min-w-8{min-width:2rem!important}.min-w-0{min-width:0}.min-w-\[10rem\]{min-width:10rem}.min-w-\[200px\]{min-width:200px}.min-w-\[600px\]{min-width:600px}.min-w-\[90px\]{min-width:90px}.min-w-full{min-width:100%}.min-w-min{min-width:-moz-min-content;min-width:min-content}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-4xl{max-width:56rem}.max-w-64{max-width:16rem}.max-w-6xl{max-width:72rem}.max-w-\[100px\]{max-width:100px}.max-w-\[10ch\]{max-width:10ch}.max-w-\[120px\]{max-width:120px}.max-w-\[150px\]{max-width:150px}.max-w-\[15ch\]{max-width:15ch}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[20ch\]{max-width:20ch}.max-w-\[210px\]{max-width:210px}.max-w-\[250px\]{max-width:250px}.max-w-\[80\%\]{max-width:80%}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-4{--tw-translate-y:-1rem}.-translate-y-4,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-1\/2{--tw-translate-x:50%}.translate-x-1\/2,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-y-0{--tw-translate-y:0px}.-rotate-180,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-180{--tw-rotate:-180deg}.-rotate-90{--tw-rotate:-90deg}.-rotate-90,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.rotate-90{--tw-rotate:90deg}.rotate-90,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-95,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-none{grid-template-columns:none}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.\!items-center{align-items:center!important}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.\!justify-center{justify-content:center!important}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-4{row-gap:1rem}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.125rem * var(--tw-space-x-reverse));margin-left:calc(.125rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem * var(--tw-space-x-reverse));margin-left:calc(.375rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem * var(--tw-space-x-reverse));margin-left:calc(2.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.625rem * var(--tw-space-x-reverse));margin-left:calc(.625rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse:1}.space-x-reverse>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-y-reverse>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:1}.divide-x-reverse>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}.divide-tremor-border>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity))}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-clip{overflow-x:clip}.overflow-x-scroll{overflow-x:scroll}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.text-clip{text-overflow:clip}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!rounded-full{border-radius:9999px!important}.\!rounded-none{border-radius:0!important}.rounded{border-radius:.25rem}.rounded-\[1px\]{border-radius:1px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-tremor-default{border-radius:.5rem}.rounded-tremor-full{border-radius:9999px}.rounded-tremor-small{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-tremor-default{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-l-tremor-default{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-tremor-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.rounded-l-tremor-small{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-r-tremor-default{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-r-tremor-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-tremor-small{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg,.rounded-t-tremor-default{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-bl{border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-x{border-left-width:1px;border-right-width:1px}.border-y{border-top-width:1px}.border-b,.border-y{border-bottom-width:1px}.border-b-4{border-bottom-width:4px}.border-e{border-inline-end-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-r-4{border-right-width:4px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.border-t-4{border-top-width:4px}.border-t-\[1px\]{border-top-width:1px}.border-dashed{border-style:dashed}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-amber-100{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.border-amber-50{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}.border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.border-amber-600{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.border-amber-700{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}.border-amber-800{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}.border-amber-950{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}.border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.border-blue-50{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}.border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}.border-blue-950{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}.border-cyan-100{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}.border-cyan-200{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}.border-cyan-300{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}.border-cyan-400{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}.border-cyan-50{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}.border-cyan-500{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.border-cyan-600{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}.border-cyan-700{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}.border-cyan-800{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}.border-cyan-900{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}.border-cyan-950{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}.border-dark-tremor-background{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.border-dark-tremor-border{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.border-dark-tremor-brand{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-dark-tremor-brand-emphasis{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.border-dark-tremor-brand-inverted{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.border-dark-tremor-brand-subtle{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.border-emerald-100{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}.border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.border-emerald-400{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.border-emerald-50{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}.border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.border-emerald-600{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.border-emerald-700{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.border-emerald-800{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.border-emerald-900{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}.border-emerald-950{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}.border-fuchsia-100{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}.border-fuchsia-200{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}.border-fuchsia-300{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}.border-fuchsia-400{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}.border-fuchsia-50{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}.border-fuchsia-500{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.border-fuchsia-600{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.border-fuchsia-700{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}.border-fuchsia-800{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.border-fuchsia-900{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}.border-fuchsia-950{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.border-gray-50{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.border-gray-950{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}.border-green-100{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}.border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}.border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}.border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.border-green-50{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.border-green-700{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}.border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}.border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.border-green-950{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}.border-indigo-100{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}.border-indigo-200{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}.border-indigo-300{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.border-indigo-400{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.border-indigo-50{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}.border-indigo-500{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-indigo-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.border-indigo-700{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.border-indigo-800{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.border-indigo-900{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}.border-indigo-950{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.border-lime-100{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}.border-lime-200{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}.border-lime-300{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}.border-lime-400{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}.border-lime-50{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}.border-lime-500{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.border-lime-600{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}.border-lime-700{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}.border-lime-800{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}.border-lime-900{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}.border-lime-950{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}.border-neutral-100{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}.border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.border-neutral-300{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.border-neutral-400{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.border-neutral-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.border-neutral-500{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}.border-neutral-600{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.border-neutral-700{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.border-neutral-800{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}.border-neutral-900{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}.border-neutral-950{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}.border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}.border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}.border-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.border-orange-50{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}.border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.border-orange-600{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.border-orange-700{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}.border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}.border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}.border-orange-950{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}.border-pink-100{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}.border-pink-200{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}.border-pink-300{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}.border-pink-400{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}.border-pink-50{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}.border-pink-500{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.border-pink-600{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.border-pink-700{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}.border-pink-800{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}.border-pink-900{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}.border-pink-950{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}.border-purple-100{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}.border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.border-purple-300{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.border-purple-400{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}.border-purple-50{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}.border-purple-500{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.border-purple-600{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.border-purple-700{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}.border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}.border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}.border-purple-950{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}.border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.border-red-50{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.border-red-700{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}.border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}.border-red-950{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}.border-rose-100{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}.border-rose-200{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.border-rose-300{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.border-rose-400{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.border-rose-50{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}.border-rose-500{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}.border-rose-600{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.border-rose-700{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}.border-rose-800{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.border-rose-900{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}.border-rose-950{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}.border-sky-100{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.border-sky-300{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.border-sky-400{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.border-sky-50{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}.border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.border-sky-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.border-sky-700{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.border-sky-950{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.border-slate-400{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.border-slate-50{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.border-slate-900{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.border-slate-950{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}.border-stone-100{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}.border-stone-200{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}.border-stone-300{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.border-stone-400{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}.border-stone-50{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}.border-stone-500{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}.border-stone-600{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}.border-stone-700{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}.border-stone-800{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}.border-stone-900{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}.border-stone-950{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}.border-teal-100{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}.border-teal-200{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}.border-teal-300{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}.border-teal-400{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.border-teal-50{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}.border-teal-500{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.border-teal-600{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.border-teal-700{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}.border-teal-800{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}.border-teal-900{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}.border-teal-950{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-tremor-background{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-tremor-border{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-tremor-brand{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-tremor-brand-emphasis{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.border-tremor-brand-inverted{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-tremor-brand-subtle{--tw-border-opacity:1;border-color:rgb(142 145 235/var(--tw-border-opacity))}.border-violet-100{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}.border-violet-200{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}.border-violet-300{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.border-violet-400{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.border-violet-50{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}.border-violet-500{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}.border-violet-600{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}.border-violet-700{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}.border-violet-800{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}.border-violet-900{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}.border-violet-950{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}.border-yellow-100{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}.border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}.border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.border-yellow-50{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}.border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}.border-yellow-600{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}.border-yellow-700{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}.border-yellow-800{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.border-yellow-900{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}.border-yellow-950{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}.border-zinc-100{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.border-zinc-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.border-zinc-400{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.border-zinc-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.border-zinc-500{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}.border-zinc-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.border-zinc-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.border-zinc-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}.border-zinc-950{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}.border-r-gray-200{--tw-border-opacity:1;border-right-color:rgb(229 231 235/var(--tw-border-opacity))}.border-t-transparent{border-top-color:transparent}.\!bg-blue-600{--tw-bg-opacity:1!important;background-color:rgb(37 99 235/var(--tw-bg-opacity))!important}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.bg-amber-200{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.bg-amber-300{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.bg-amber-700{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.bg-amber-800{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-black\/90{background-color:rgba(0,0,0,.9)}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.bg-blue-300{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.bg-blue-800{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.bg-cyan-200{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.bg-cyan-300{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}.bg-cyan-400{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.bg-cyan-50{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}.bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}.bg-cyan-600{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.bg-cyan-700{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}.bg-cyan-800{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.bg-cyan-900{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}.bg-cyan-950{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}.bg-dark-tremor-background{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-dark-tremor-background-subtle{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-dark-tremor-brand{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-dark-tremor-brand-emphasis{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.bg-dark-tremor-brand-faint{--tw-bg-opacity:1;background-color:rgb(11 18 41/var(--tw-bg-opacity))}.bg-dark-tremor-brand-muted{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.bg-dark-tremor-content-subtle{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.bg-emerald-200{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.bg-emerald-300{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.bg-emerald-800{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.bg-emerald-900{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.bg-emerald-950{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}.bg-fuchsia-100{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.bg-fuchsia-200{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}.bg-fuchsia-300{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}.bg-fuchsia-400{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}.bg-fuchsia-50{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}.bg-fuchsia-500{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}.bg-fuchsia-600{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.bg-fuchsia-700{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.bg-fuchsia-800{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.bg-fuchsia-900{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}.bg-fuchsia-950{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-50\/50{background-color:rgba(249,250,251,.5)}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.bg-green-300{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.bg-green-800{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.bg-indigo-200{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.bg-indigo-300{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}.bg-indigo-400{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.bg-indigo-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.bg-indigo-700{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.bg-indigo-800{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.bg-indigo-900{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.bg-indigo-950{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.bg-lime-100{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.bg-lime-200{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.bg-lime-300{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}.bg-lime-400{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}.bg-lime-50{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}.bg-lime-500{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.bg-lime-700{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.bg-lime-800{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.bg-lime-900{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}.bg-lime-950{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.bg-neutral-200{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.bg-neutral-400{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}.bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-neutral-500{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.bg-neutral-600{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.bg-neutral-950{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.bg-orange-300{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}.bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}.bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}.bg-pink-300{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}.bg-pink-400{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.bg-pink-500{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.bg-pink-700{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.bg-pink-800{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.bg-pink-900{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}.bg-pink-950{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}.bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}.bg-purple-300{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}.bg-purple-400{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.bg-purple-800{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}.bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-red-300{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}.bg-rose-100{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.bg-rose-200{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.bg-rose-300{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}.bg-rose-400{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.bg-rose-50{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.bg-rose-700{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.bg-rose-800{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.bg-rose-900{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.bg-rose-950{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.bg-sky-200{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.bg-sky-400{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-sky-700{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.bg-sky-800{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.bg-sky-900{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.bg-slate-950\/30{background-color:rgba(2,6,23,.3)}.bg-stone-100{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.bg-stone-200{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.bg-stone-300{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}.bg-stone-400{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}.bg-stone-50{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}.bg-stone-500{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}.bg-stone-600{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}.bg-stone-700{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}.bg-stone-800{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}.bg-stone-900{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}.bg-stone-950{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}.bg-teal-100{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.bg-teal-200{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}.bg-teal-300{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}.bg-teal-400{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.bg-teal-50{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}.bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.bg-teal-800{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.bg-teal-900{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}.bg-teal-950{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-tremor-background{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-tremor-background-emphasis{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-tremor-background-muted{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-tremor-background-subtle{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-tremor-border{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-tremor-brand{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-tremor-brand-muted{--tw-bg-opacity:1;background-color:rgb(134 136 239/var(--tw-bg-opacity))}.bg-tremor-brand-muted\/50{background-color:rgba(134,136,239,.5)}.bg-tremor-brand-subtle{--tw-bg-opacity:1;background-color:rgb(142 145 235/var(--tw-bg-opacity))}.bg-tremor-content-subtle{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.bg-violet-200{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.bg-violet-300{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.bg-violet-400{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}.bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.bg-violet-500{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}.bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.bg-violet-700{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}.bg-violet-800{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.bg-violet-900{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}.bg-violet-950{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.bg-yellow-300{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.bg-yellow-700{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}.bg-yellow-800{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}.bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.bg-yellow-950{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.bg-zinc-300{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}.bg-zinc-400{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-zinc-500{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}.bg-zinc-600{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.bg-zinc-950{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}.bg-opacity-10{--tw-bg-opacity:0.1}.bg-opacity-20{--tw-bg-opacity:0.2}.bg-opacity-30{--tw-bg-opacity:0.3}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from:#f59e0b var(--tw-gradient-from-position);--tw-gradient-to:rgba(245,158,11,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-50{--tw-gradient-from:#eff6ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,246,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-emerald-50{--tw-gradient-from:#ecfdf5 var(--tw-gradient-from-position);--tw-gradient-to:rgba(236,253,245,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-50{--tw-gradient-from:#f0fdf4 var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-orange-50{--tw-gradient-from:#fff7ed var(--tw-gradient-from-position);--tw-gradient-to:rgba(255,247,237,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-50{--tw-gradient-from:#faf5ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(250,245,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:transparent var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-tremor-background{--tw-gradient-from:#fff var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-blue-50{--tw-gradient-to:#eff6ff var(--tw-gradient-to-position)}.to-green-50{--tw-gradient-to:#f0fdf4 var(--tw-gradient-to-position)}.to-indigo-50{--tw-gradient-to:#eef2ff var(--tw-gradient-to-position)}.to-red-50{--tw-gradient-to:#fef2f2 var(--tw-gradient-to-position)}.to-teal-50{--tw-gradient-to:#f0fdfa var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.to-tremor-background{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.to-yellow-500{--tw-gradient-to:#eab308 var(--tw-gradient-to-position)}.bg-repeat{background-repeat:repeat}.fill-amber-100{fill:#fef3c7}.fill-amber-200{fill:#fde68a}.fill-amber-300{fill:#fcd34d}.fill-amber-400{fill:#fbbf24}.fill-amber-50{fill:#fffbeb}.fill-amber-500{fill:#f59e0b}.fill-amber-600{fill:#d97706}.fill-amber-700{fill:#b45309}.fill-amber-800{fill:#92400e}.fill-amber-900{fill:#78350f}.fill-amber-950{fill:#451a03}.fill-blue-100{fill:#dbeafe}.fill-blue-200{fill:#bfdbfe}.fill-blue-300{fill:#93c5fd}.fill-blue-400{fill:#60a5fa}.fill-blue-50{fill:#eff6ff}.fill-blue-500{fill:#3b82f6}.fill-blue-600{fill:#2563eb}.fill-blue-700{fill:#1d4ed8}.fill-blue-800{fill:#1e40af}.fill-blue-900{fill:#1e3a8a}.fill-blue-950{fill:#172554}.fill-cyan-100{fill:#cffafe}.fill-cyan-200{fill:#a5f3fc}.fill-cyan-300{fill:#67e8f9}.fill-cyan-400{fill:#22d3ee}.fill-cyan-50{fill:#ecfeff}.fill-cyan-500{fill:#06b6d4}.fill-cyan-600{fill:#0891b2}.fill-cyan-700{fill:#0e7490}.fill-cyan-800{fill:#155e75}.fill-cyan-900{fill:#164e63}.fill-cyan-950{fill:#083344}.fill-emerald-100{fill:#d1fae5}.fill-emerald-200{fill:#a7f3d0}.fill-emerald-300{fill:#6ee7b7}.fill-emerald-400{fill:#34d399}.fill-emerald-50{fill:#ecfdf5}.fill-emerald-500{fill:#10b981}.fill-emerald-600{fill:#059669}.fill-emerald-700{fill:#047857}.fill-emerald-800{fill:#065f46}.fill-emerald-900{fill:#064e3b}.fill-emerald-950{fill:#022c22}.fill-fuchsia-100{fill:#fae8ff}.fill-fuchsia-200{fill:#f5d0fe}.fill-fuchsia-300{fill:#f0abfc}.fill-fuchsia-400{fill:#e879f9}.fill-fuchsia-50{fill:#fdf4ff}.fill-fuchsia-500{fill:#d946ef}.fill-fuchsia-600{fill:#c026d3}.fill-fuchsia-700{fill:#a21caf}.fill-fuchsia-800{fill:#86198f}.fill-fuchsia-900{fill:#701a75}.fill-fuchsia-950{fill:#4a044e}.fill-gray-100{fill:#f3f4f6}.fill-gray-200{fill:#e5e7eb}.fill-gray-300{fill:#d1d5db}.fill-gray-400{fill:#9ca3af}.fill-gray-50{fill:#f9fafb}.fill-gray-500{fill:#6b7280}.fill-gray-600{fill:#4b5563}.fill-gray-700{fill:#374151}.fill-gray-800{fill:#1f2937}.fill-gray-900{fill:#111827}.fill-gray-950{fill:#030712}.fill-green-100{fill:#dcfce7}.fill-green-200{fill:#bbf7d0}.fill-green-300{fill:#86efac}.fill-green-400{fill:#4ade80}.fill-green-50{fill:#f0fdf4}.fill-green-500{fill:#22c55e}.fill-green-600{fill:#16a34a}.fill-green-700{fill:#15803d}.fill-green-800{fill:#166534}.fill-green-900{fill:#14532d}.fill-green-950{fill:#052e16}.fill-indigo-100{fill:#e0e7ff}.fill-indigo-200{fill:#c7d2fe}.fill-indigo-300{fill:#a5b4fc}.fill-indigo-400{fill:#818cf8}.fill-indigo-50{fill:#eef2ff}.fill-indigo-500{fill:#6366f1}.fill-indigo-600{fill:#4f46e5}.fill-indigo-700{fill:#4338ca}.fill-indigo-800{fill:#3730a3}.fill-indigo-900{fill:#312e81}.fill-indigo-950{fill:#1e1b4b}.fill-lime-100{fill:#ecfccb}.fill-lime-200{fill:#d9f99d}.fill-lime-300{fill:#bef264}.fill-lime-400{fill:#a3e635}.fill-lime-50{fill:#f7fee7}.fill-lime-500{fill:#84cc16}.fill-lime-600{fill:#65a30d}.fill-lime-700{fill:#4d7c0f}.fill-lime-800{fill:#3f6212}.fill-lime-900{fill:#365314}.fill-lime-950{fill:#1a2e05}.fill-neutral-100{fill:#f5f5f5}.fill-neutral-200{fill:#e5e5e5}.fill-neutral-300{fill:#d4d4d4}.fill-neutral-400{fill:#a3a3a3}.fill-neutral-50{fill:#fafafa}.fill-neutral-500{fill:#737373}.fill-neutral-600{fill:#525252}.fill-neutral-700{fill:#404040}.fill-neutral-800{fill:#262626}.fill-neutral-900{fill:#171717}.fill-neutral-950{fill:#0a0a0a}.fill-orange-100{fill:#ffedd5}.fill-orange-200{fill:#fed7aa}.fill-orange-300{fill:#fdba74}.fill-orange-400{fill:#fb923c}.fill-orange-50{fill:#fff7ed}.fill-orange-500{fill:#f97316}.fill-orange-600{fill:#ea580c}.fill-orange-700{fill:#c2410c}.fill-orange-800{fill:#9a3412}.fill-orange-900{fill:#7c2d12}.fill-orange-950{fill:#431407}.fill-pink-100{fill:#fce7f3}.fill-pink-200{fill:#fbcfe8}.fill-pink-300{fill:#f9a8d4}.fill-pink-400{fill:#f472b6}.fill-pink-50{fill:#fdf2f8}.fill-pink-500{fill:#ec4899}.fill-pink-600{fill:#db2777}.fill-pink-700{fill:#be185d}.fill-pink-800{fill:#9d174d}.fill-pink-900{fill:#831843}.fill-pink-950{fill:#500724}.fill-purple-100{fill:#f3e8ff}.fill-purple-200{fill:#e9d5ff}.fill-purple-300{fill:#d8b4fe}.fill-purple-400{fill:#c084fc}.fill-purple-50{fill:#faf5ff}.fill-purple-500{fill:#a855f7}.fill-purple-600{fill:#9333ea}.fill-purple-700{fill:#7e22ce}.fill-purple-800{fill:#6b21a8}.fill-purple-900{fill:#581c87}.fill-purple-950{fill:#3b0764}.fill-red-100{fill:#fee2e2}.fill-red-200{fill:#fecaca}.fill-red-300{fill:#fca5a5}.fill-red-400{fill:#f87171}.fill-red-50{fill:#fef2f2}.fill-red-500{fill:#ef4444}.fill-red-600{fill:#dc2626}.fill-red-700{fill:#b91c1c}.fill-red-800{fill:#991b1b}.fill-red-900{fill:#7f1d1d}.fill-red-950{fill:#450a0a}.fill-rose-100{fill:#ffe4e6}.fill-rose-200{fill:#fecdd3}.fill-rose-300{fill:#fda4af}.fill-rose-400{fill:#fb7185}.fill-rose-50{fill:#fff1f2}.fill-rose-500{fill:#f43f5e}.fill-rose-600{fill:#e11d48}.fill-rose-700{fill:#be123c}.fill-rose-800{fill:#9f1239}.fill-rose-900{fill:#881337}.fill-rose-950{fill:#4c0519}.fill-sky-100{fill:#e0f2fe}.fill-sky-200{fill:#bae6fd}.fill-sky-300{fill:#7dd3fc}.fill-sky-400{fill:#38bdf8}.fill-sky-50{fill:#f0f9ff}.fill-sky-500{fill:#0ea5e9}.fill-sky-600{fill:#0284c7}.fill-sky-700{fill:#0369a1}.fill-sky-800{fill:#075985}.fill-sky-900{fill:#0c4a6e}.fill-sky-950{fill:#082f49}.fill-slate-100{fill:#f1f5f9}.fill-slate-200{fill:#e2e8f0}.fill-slate-300{fill:#cbd5e1}.fill-slate-400{fill:#94a3b8}.fill-slate-50{fill:#f8fafc}.fill-slate-500{fill:#64748b}.fill-slate-600{fill:#475569}.fill-slate-700{fill:#334155}.fill-slate-800{fill:#1e293b}.fill-slate-900{fill:#0f172a}.fill-slate-950{fill:#020617}.fill-stone-100{fill:#f5f5f4}.fill-stone-200{fill:#e7e5e4}.fill-stone-300{fill:#d6d3d1}.fill-stone-400{fill:#a8a29e}.fill-stone-50{fill:#fafaf9}.fill-stone-500{fill:#78716c}.fill-stone-600{fill:#57534e}.fill-stone-700{fill:#44403c}.fill-stone-800{fill:#292524}.fill-stone-900{fill:#1c1917}.fill-stone-950{fill:#0c0a09}.fill-teal-100{fill:#ccfbf1}.fill-teal-200{fill:#99f6e4}.fill-teal-300{fill:#5eead4}.fill-teal-400{fill:#2dd4bf}.fill-teal-50{fill:#f0fdfa}.fill-teal-500{fill:#14b8a6}.fill-teal-600{fill:#0d9488}.fill-teal-700{fill:#0f766e}.fill-teal-800{fill:#115e59}.fill-teal-900{fill:#134e4a}.fill-teal-950{fill:#042f2e}.fill-tremor-content{fill:#6b7280}.fill-tremor-content-emphasis{fill:#374151}.fill-violet-100{fill:#ede9fe}.fill-violet-200{fill:#ddd6fe}.fill-violet-300{fill:#c4b5fd}.fill-violet-400{fill:#a78bfa}.fill-violet-50{fill:#f5f3ff}.fill-violet-500{fill:#8b5cf6}.fill-violet-600{fill:#7c3aed}.fill-violet-700{fill:#6d28d9}.fill-violet-800{fill:#5b21b6}.fill-violet-900{fill:#4c1d95}.fill-violet-950{fill:#2e1065}.fill-yellow-100{fill:#fef9c3}.fill-yellow-200{fill:#fef08a}.fill-yellow-300{fill:#fde047}.fill-yellow-400{fill:#facc15}.fill-yellow-50{fill:#fefce8}.fill-yellow-500{fill:#eab308}.fill-yellow-600{fill:#ca8a04}.fill-yellow-700{fill:#a16207}.fill-yellow-800{fill:#854d0e}.fill-yellow-900{fill:#713f12}.fill-yellow-950{fill:#422006}.fill-zinc-100{fill:#f4f4f5}.fill-zinc-200{fill:#e4e4e7}.fill-zinc-300{fill:#d4d4d8}.fill-zinc-400{fill:#a1a1aa}.fill-zinc-50{fill:#fafafa}.fill-zinc-500{fill:#71717a}.fill-zinc-600{fill:#52525b}.fill-zinc-700{fill:#3f3f46}.fill-zinc-800{fill:#27272a}.fill-zinc-900{fill:#18181b}.fill-zinc-950{fill:#09090b}.stroke-amber-100{stroke:#fef3c7}.stroke-amber-200{stroke:#fde68a}.stroke-amber-300{stroke:#fcd34d}.stroke-amber-400{stroke:#fbbf24}.stroke-amber-50{stroke:#fffbeb}.stroke-amber-500{stroke:#f59e0b}.stroke-amber-600{stroke:#d97706}.stroke-amber-700{stroke:#b45309}.stroke-amber-800{stroke:#92400e}.stroke-amber-900{stroke:#78350f}.stroke-amber-950{stroke:#451a03}.stroke-blue-100{stroke:#dbeafe}.stroke-blue-200{stroke:#bfdbfe}.stroke-blue-300{stroke:#93c5fd}.stroke-blue-400{stroke:#60a5fa}.stroke-blue-50{stroke:#eff6ff}.stroke-blue-500{stroke:#3b82f6}.stroke-blue-600{stroke:#2563eb}.stroke-blue-700{stroke:#1d4ed8}.stroke-blue-800{stroke:#1e40af}.stroke-blue-900{stroke:#1e3a8a}.stroke-blue-950{stroke:#172554}.stroke-cyan-100{stroke:#cffafe}.stroke-cyan-200{stroke:#a5f3fc}.stroke-cyan-300{stroke:#67e8f9}.stroke-cyan-400{stroke:#22d3ee}.stroke-cyan-50{stroke:#ecfeff}.stroke-cyan-500{stroke:#06b6d4}.stroke-cyan-600{stroke:#0891b2}.stroke-cyan-700{stroke:#0e7490}.stroke-cyan-800{stroke:#155e75}.stroke-cyan-900{stroke:#164e63}.stroke-cyan-950{stroke:#083344}.stroke-dark-tremor-background{stroke:#111827}.stroke-dark-tremor-border{stroke:#374151}.stroke-emerald-100{stroke:#d1fae5}.stroke-emerald-200{stroke:#a7f3d0}.stroke-emerald-300{stroke:#6ee7b7}.stroke-emerald-400{stroke:#34d399}.stroke-emerald-50{stroke:#ecfdf5}.stroke-emerald-500{stroke:#10b981}.stroke-emerald-600{stroke:#059669}.stroke-emerald-700{stroke:#047857}.stroke-emerald-800{stroke:#065f46}.stroke-emerald-900{stroke:#064e3b}.stroke-emerald-950{stroke:#022c22}.stroke-fuchsia-100{stroke:#fae8ff}.stroke-fuchsia-200{stroke:#f5d0fe}.stroke-fuchsia-300{stroke:#f0abfc}.stroke-fuchsia-400{stroke:#e879f9}.stroke-fuchsia-50{stroke:#fdf4ff}.stroke-fuchsia-500{stroke:#d946ef}.stroke-fuchsia-600{stroke:#c026d3}.stroke-fuchsia-700{stroke:#a21caf}.stroke-fuchsia-800{stroke:#86198f}.stroke-fuchsia-900{stroke:#701a75}.stroke-fuchsia-950{stroke:#4a044e}.stroke-gray-100{stroke:#f3f4f6}.stroke-gray-200{stroke:#e5e7eb}.stroke-gray-300{stroke:#d1d5db}.stroke-gray-400{stroke:#9ca3af}.stroke-gray-50{stroke:#f9fafb}.stroke-gray-500{stroke:#6b7280}.stroke-gray-600{stroke:#4b5563}.stroke-gray-700{stroke:#374151}.stroke-gray-800{stroke:#1f2937}.stroke-gray-900{stroke:#111827}.stroke-gray-950{stroke:#030712}.stroke-green-100{stroke:#dcfce7}.stroke-green-200{stroke:#bbf7d0}.stroke-green-300{stroke:#86efac}.stroke-green-400{stroke:#4ade80}.stroke-green-50{stroke:#f0fdf4}.stroke-green-500{stroke:#22c55e}.stroke-green-600{stroke:#16a34a}.stroke-green-700{stroke:#15803d}.stroke-green-800{stroke:#166534}.stroke-green-900{stroke:#14532d}.stroke-green-950{stroke:#052e16}.stroke-indigo-100{stroke:#e0e7ff}.stroke-indigo-200{stroke:#c7d2fe}.stroke-indigo-300{stroke:#a5b4fc}.stroke-indigo-400{stroke:#818cf8}.stroke-indigo-50{stroke:#eef2ff}.stroke-indigo-500{stroke:#6366f1}.stroke-indigo-600{stroke:#4f46e5}.stroke-indigo-700{stroke:#4338ca}.stroke-indigo-800{stroke:#3730a3}.stroke-indigo-900{stroke:#312e81}.stroke-indigo-950{stroke:#1e1b4b}.stroke-lime-100{stroke:#ecfccb}.stroke-lime-200{stroke:#d9f99d}.stroke-lime-300{stroke:#bef264}.stroke-lime-400{stroke:#a3e635}.stroke-lime-50{stroke:#f7fee7}.stroke-lime-500{stroke:#84cc16}.stroke-lime-600{stroke:#65a30d}.stroke-lime-700{stroke:#4d7c0f}.stroke-lime-800{stroke:#3f6212}.stroke-lime-900{stroke:#365314}.stroke-lime-950{stroke:#1a2e05}.stroke-neutral-100{stroke:#f5f5f5}.stroke-neutral-200{stroke:#e5e5e5}.stroke-neutral-300{stroke:#d4d4d4}.stroke-neutral-400{stroke:#a3a3a3}.stroke-neutral-50{stroke:#fafafa}.stroke-neutral-500{stroke:#737373}.stroke-neutral-600{stroke:#525252}.stroke-neutral-700{stroke:#404040}.stroke-neutral-800{stroke:#262626}.stroke-neutral-900{stroke:#171717}.stroke-neutral-950{stroke:#0a0a0a}.stroke-orange-100{stroke:#ffedd5}.stroke-orange-200{stroke:#fed7aa}.stroke-orange-300{stroke:#fdba74}.stroke-orange-400{stroke:#fb923c}.stroke-orange-50{stroke:#fff7ed}.stroke-orange-500{stroke:#f97316}.stroke-orange-600{stroke:#ea580c}.stroke-orange-700{stroke:#c2410c}.stroke-orange-800{stroke:#9a3412}.stroke-orange-900{stroke:#7c2d12}.stroke-orange-950{stroke:#431407}.stroke-pink-100{stroke:#fce7f3}.stroke-pink-200{stroke:#fbcfe8}.stroke-pink-300{stroke:#f9a8d4}.stroke-pink-400{stroke:#f472b6}.stroke-pink-50{stroke:#fdf2f8}.stroke-pink-500{stroke:#ec4899}.stroke-pink-600{stroke:#db2777}.stroke-pink-700{stroke:#be185d}.stroke-pink-800{stroke:#9d174d}.stroke-pink-900{stroke:#831843}.stroke-pink-950{stroke:#500724}.stroke-purple-100{stroke:#f3e8ff}.stroke-purple-200{stroke:#e9d5ff}.stroke-purple-300{stroke:#d8b4fe}.stroke-purple-400{stroke:#c084fc}.stroke-purple-50{stroke:#faf5ff}.stroke-purple-500{stroke:#a855f7}.stroke-purple-600{stroke:#9333ea}.stroke-purple-700{stroke:#7e22ce}.stroke-purple-800{stroke:#6b21a8}.stroke-purple-900{stroke:#581c87}.stroke-purple-950{stroke:#3b0764}.stroke-red-100{stroke:#fee2e2}.stroke-red-200{stroke:#fecaca}.stroke-red-300{stroke:#fca5a5}.stroke-red-400{stroke:#f87171}.stroke-red-50{stroke:#fef2f2}.stroke-red-500{stroke:#ef4444}.stroke-red-600{stroke:#dc2626}.stroke-red-700{stroke:#b91c1c}.stroke-red-800{stroke:#991b1b}.stroke-red-900{stroke:#7f1d1d}.stroke-red-950{stroke:#450a0a}.stroke-rose-100{stroke:#ffe4e6}.stroke-rose-200{stroke:#fecdd3}.stroke-rose-300{stroke:#fda4af}.stroke-rose-400{stroke:#fb7185}.stroke-rose-50{stroke:#fff1f2}.stroke-rose-500{stroke:#f43f5e}.stroke-rose-600{stroke:#e11d48}.stroke-rose-700{stroke:#be123c}.stroke-rose-800{stroke:#9f1239}.stroke-rose-900{stroke:#881337}.stroke-rose-950{stroke:#4c0519}.stroke-sky-100{stroke:#e0f2fe}.stroke-sky-200{stroke:#bae6fd}.stroke-sky-300{stroke:#7dd3fc}.stroke-sky-400{stroke:#38bdf8}.stroke-sky-50{stroke:#f0f9ff}.stroke-sky-500{stroke:#0ea5e9}.stroke-sky-600{stroke:#0284c7}.stroke-sky-700{stroke:#0369a1}.stroke-sky-800{stroke:#075985}.stroke-sky-900{stroke:#0c4a6e}.stroke-sky-950{stroke:#082f49}.stroke-slate-100{stroke:#f1f5f9}.stroke-slate-200{stroke:#e2e8f0}.stroke-slate-300{stroke:#cbd5e1}.stroke-slate-400{stroke:#94a3b8}.stroke-slate-50{stroke:#f8fafc}.stroke-slate-500{stroke:#64748b}.stroke-slate-600{stroke:#475569}.stroke-slate-700{stroke:#334155}.stroke-slate-800{stroke:#1e293b}.stroke-slate-900{stroke:#0f172a}.stroke-slate-950{stroke:#020617}.stroke-stone-100{stroke:#f5f5f4}.stroke-stone-200{stroke:#e7e5e4}.stroke-stone-300{stroke:#d6d3d1}.stroke-stone-400{stroke:#a8a29e}.stroke-stone-50{stroke:#fafaf9}.stroke-stone-500{stroke:#78716c}.stroke-stone-600{stroke:#57534e}.stroke-stone-700{stroke:#44403c}.stroke-stone-800{stroke:#292524}.stroke-stone-900{stroke:#1c1917}.stroke-stone-950{stroke:#0c0a09}.stroke-teal-100{stroke:#ccfbf1}.stroke-teal-200{stroke:#99f6e4}.stroke-teal-300{stroke:#5eead4}.stroke-teal-400{stroke:#2dd4bf}.stroke-teal-50{stroke:#f0fdfa}.stroke-teal-500{stroke:#14b8a6}.stroke-teal-600{stroke:#0d9488}.stroke-teal-700{stroke:#0f766e}.stroke-teal-800{stroke:#115e59}.stroke-teal-900{stroke:#134e4a}.stroke-teal-950{stroke:#042f2e}.stroke-tremor-background{stroke:#fff}.stroke-tremor-border{stroke:#e5e7eb}.stroke-tremor-brand{stroke:#6366f1}.stroke-tremor-brand-muted\/50{stroke:rgba(134,136,239,.5)}.stroke-violet-100{stroke:#ede9fe}.stroke-violet-200{stroke:#ddd6fe}.stroke-violet-300{stroke:#c4b5fd}.stroke-violet-400{stroke:#a78bfa}.stroke-violet-50{stroke:#f5f3ff}.stroke-violet-500{stroke:#8b5cf6}.stroke-violet-600{stroke:#7c3aed}.stroke-violet-700{stroke:#6d28d9}.stroke-violet-800{stroke:#5b21b6}.stroke-violet-900{stroke:#4c1d95}.stroke-violet-950{stroke:#2e1065}.stroke-yellow-100{stroke:#fef9c3}.stroke-yellow-200{stroke:#fef08a}.stroke-yellow-300{stroke:#fde047}.stroke-yellow-400{stroke:#facc15}.stroke-yellow-50{stroke:#fefce8}.stroke-yellow-500{stroke:#eab308}.stroke-yellow-600{stroke:#ca8a04}.stroke-yellow-700{stroke:#a16207}.stroke-yellow-800{stroke:#854d0e}.stroke-yellow-900{stroke:#713f12}.stroke-yellow-950{stroke:#422006}.stroke-zinc-100{stroke:#f4f4f5}.stroke-zinc-200{stroke:#e4e4e7}.stroke-zinc-300{stroke:#d4d4d8}.stroke-zinc-400{stroke:#a1a1aa}.stroke-zinc-50{stroke:#fafafa}.stroke-zinc-500{stroke:#71717a}.stroke-zinc-600{stroke:#52525b}.stroke-zinc-700{stroke:#3f3f46}.stroke-zinc-800{stroke:#27272a}.stroke-zinc-900{stroke:#18181b}.stroke-zinc-950{stroke:#09090b}.stroke-1{stroke-width:1}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-0{padding:0!important}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[10px\]{padding-top:10px;padding-bottom:10px}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-7{padding-left:1.75rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-14{padding-right:3.5rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[12px\]{font-size:12px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-tremor-default{font-size:.775rem;line-height:1.15rem}.text-tremor-label{font-size:.75rem;line-height:.3rem}.text-tremor-metric{font-size:1.675rem;line-height:2.15rem}.text-tremor-title{font-size:1.025rem;line-height:1.65rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.normal-nums{font-variant-numeric:normal}.ordinal{--tw-ordinal:ordinal}.ordinal,.slashed-zero{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero}.lining-nums{--tw-numeric-figure:lining-nums}.lining-nums,.oldstyle-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums}.proportional-nums{--tw-numeric-spacing:proportional-nums}.proportional-nums,.tabular-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-6{line-height:1.5rem}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.text-amber-50{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.text-amber-950{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.text-blue-50{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.text-blue-950{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}.text-current{color:currentColor}.text-cyan-100{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.text-cyan-200{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}.text-cyan-300{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}.text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.text-cyan-50{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}.text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.text-cyan-800{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}.text-cyan-900{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.text-cyan-950{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}.text-dark-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-dark-tremor-brand-emphasis{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.text-dark-tremor-brand-inverted{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.text-dark-tremor-content{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-dark-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.text-dark-tremor-content-subtle{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-emerald-100{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.text-emerald-200{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.text-emerald-50{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}.text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.text-emerald-900{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}.text-emerald-950{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}.text-fuchsia-100{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}.text-fuchsia-200{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.text-fuchsia-300{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}.text-fuchsia-400{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}.text-fuchsia-50{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}.text-fuchsia-500{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}.text-fuchsia-600{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.text-fuchsia-700{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.text-fuchsia-800{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.text-fuchsia-900{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}.text-fuchsia-950{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-gray-950{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.text-green-100{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-green-50{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}.text-green-950{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}.text-indigo-100{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}.text-indigo-200{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.text-indigo-300{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.text-indigo-50{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}.text-indigo-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.text-indigo-900{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.text-indigo-950{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.text-inherit{color:inherit}.text-lime-100{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}.text-lime-200{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}.text-lime-300{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}.text-lime-400{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}.text-lime-50{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}.text-lime-500{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}.text-lime-600{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.text-lime-700{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}.text-lime-800{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}.text-lime-900{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.text-lime-950{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}.text-neutral-100{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.text-neutral-300{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}.text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}.text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.text-orange-50{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.text-orange-900{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}.text-orange-950{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}.text-pink-100{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}.text-pink-200{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.text-pink-300{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}.text-pink-400{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}.text-pink-50{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}.text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.text-pink-600{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.text-pink-700{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.text-pink-800{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.text-pink-900{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}.text-pink-950{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}.text-purple-100{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}.text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}.text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.text-purple-50{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.text-purple-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.text-purple-900{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}.text-purple-950{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}.text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}.text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.text-red-50{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.text-red-950{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}.text-rose-100{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.text-rose-200{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.text-rose-50{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}.text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.text-rose-800{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.text-rose-900{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.text-rose-950{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}.text-sky-100{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.text-sky-50{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}.text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.text-sky-800{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.text-sky-900{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}.text-sky-950{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}.text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-50{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.text-slate-950{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.text-stone-100{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}.text-stone-200{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}.text-stone-300{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}.text-stone-400{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.text-stone-50{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}.text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.text-stone-600{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.text-stone-700{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}.text-stone-800{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}.text-stone-900{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}.text-stone-950{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}.text-teal-100{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}.text-teal-200{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.text-teal-300{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}.text-teal-400{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}.text-teal-50{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}.text-teal-500{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.text-teal-700{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.text-teal-800{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.text-teal-900{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}.text-teal-950{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}.text-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-tremor-brand-emphasis{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.text-tremor-brand-inverted{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-tremor-content{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-tremor-content-strong{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-tremor-content-subtle{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-violet-100{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}.text-violet-200{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.text-violet-50{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}.text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.text-violet-600{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.text-violet-700{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.text-violet-800{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}.text-violet-900{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}.text-violet-950{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-100{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}.text-yellow-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.text-yellow-50{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}.text-yellow-950{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}.text-zinc-100{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.text-zinc-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-dark-tremor-brand,.accent-tremor-brand{accent-color:#6366f1}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-\[-4px_0_4px_-4px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[-4px_0_4px_-4px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:-4px 0 4px -4px rgba(0,0,0,.1);--tw-shadow-colored:-4px 0 4px -4px var(--tw-shadow-color)}.shadow-\[-4px_0_8px_-6px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:-4px 0 8px -6px rgba(0,0,0,.1);--tw-shadow-colored:-4px 0 8px -6px var(--tw-shadow-color)}.shadow-\[-4px_0_8px_-6px_rgba\(0\2c 0\2c 0\2c 0\.1\)\],.shadow-dark-tremor-card{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-dark-tremor-card{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow-dark-tremor-input{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-dark-tremor-input,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-tremor-card{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow-tremor-card,.shadow-tremor-dropdown{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-tremor-dropdown{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-tremor-input{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-tremor-input,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-tremor-brand{outline-color:#6366f1}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-1{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-2,.ring-4{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-inset{--tw-ring-inset:inset}.ring-amber-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 243 199/var(--tw-ring-opacity))}.ring-amber-200{--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity))}.ring-amber-300{--tw-ring-opacity:1;--tw-ring-color:rgb(252 211 77/var(--tw-ring-opacity))}.ring-amber-400{--tw-ring-opacity:1;--tw-ring-color:rgb(251 191 36/var(--tw-ring-opacity))}.ring-amber-50{--tw-ring-opacity:1;--tw-ring-color:rgb(255 251 235/var(--tw-ring-opacity))}.ring-amber-500{--tw-ring-opacity:1;--tw-ring-color:rgb(245 158 11/var(--tw-ring-opacity))}.ring-amber-600{--tw-ring-opacity:1;--tw-ring-color:rgb(217 119 6/var(--tw-ring-opacity))}.ring-amber-700{--tw-ring-opacity:1;--tw-ring-color:rgb(180 83 9/var(--tw-ring-opacity))}.ring-amber-800{--tw-ring-opacity:1;--tw-ring-color:rgb(146 64 14/var(--tw-ring-opacity))}.ring-amber-900{--tw-ring-opacity:1;--tw-ring-color:rgb(120 53 15/var(--tw-ring-opacity))}.ring-amber-950{--tw-ring-opacity:1;--tw-ring-color:rgb(69 26 3/var(--tw-ring-opacity))}.ring-blue-100{--tw-ring-opacity:1;--tw-ring-color:rgb(219 234 254/var(--tw-ring-opacity))}.ring-blue-200{--tw-ring-opacity:1;--tw-ring-color:rgb(191 219 254/var(--tw-ring-opacity))}.ring-blue-300{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity))}.ring-blue-400{--tw-ring-opacity:1;--tw-ring-color:rgb(96 165 250/var(--tw-ring-opacity))}.ring-blue-50{--tw-ring-opacity:1;--tw-ring-color:rgb(239 246 255/var(--tw-ring-opacity))}.ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.ring-blue-600{--tw-ring-opacity:1;--tw-ring-color:rgb(37 99 235/var(--tw-ring-opacity))}.ring-blue-700{--tw-ring-opacity:1;--tw-ring-color:rgb(29 78 216/var(--tw-ring-opacity))}.ring-blue-800{--tw-ring-opacity:1;--tw-ring-color:rgb(30 64 175/var(--tw-ring-opacity))}.ring-blue-900{--tw-ring-opacity:1;--tw-ring-color:rgb(30 58 138/var(--tw-ring-opacity))}.ring-blue-950{--tw-ring-opacity:1;--tw-ring-color:rgb(23 37 84/var(--tw-ring-opacity))}.ring-cyan-100{--tw-ring-opacity:1;--tw-ring-color:rgb(207 250 254/var(--tw-ring-opacity))}.ring-cyan-200{--tw-ring-opacity:1;--tw-ring-color:rgb(165 243 252/var(--tw-ring-opacity))}.ring-cyan-300{--tw-ring-opacity:1;--tw-ring-color:rgb(103 232 249/var(--tw-ring-opacity))}.ring-cyan-400{--tw-ring-opacity:1;--tw-ring-color:rgb(34 211 238/var(--tw-ring-opacity))}.ring-cyan-50{--tw-ring-opacity:1;--tw-ring-color:rgb(236 254 255/var(--tw-ring-opacity))}.ring-cyan-500{--tw-ring-opacity:1;--tw-ring-color:rgb(6 182 212/var(--tw-ring-opacity))}.ring-cyan-600{--tw-ring-opacity:1;--tw-ring-color:rgb(8 145 178/var(--tw-ring-opacity))}.ring-cyan-700{--tw-ring-opacity:1;--tw-ring-color:rgb(14 116 144/var(--tw-ring-opacity))}.ring-cyan-800{--tw-ring-opacity:1;--tw-ring-color:rgb(21 94 117/var(--tw-ring-opacity))}.ring-cyan-900{--tw-ring-opacity:1;--tw-ring-color:rgb(22 78 99/var(--tw-ring-opacity))}.ring-cyan-950{--tw-ring-opacity:1;--tw-ring-color:rgb(8 51 68/var(--tw-ring-opacity))}.ring-dark-tremor-ring{--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55/var(--tw-ring-opacity))}.ring-emerald-100{--tw-ring-opacity:1;--tw-ring-color:rgb(209 250 229/var(--tw-ring-opacity))}.ring-emerald-200{--tw-ring-opacity:1;--tw-ring-color:rgb(167 243 208/var(--tw-ring-opacity))}.ring-emerald-300{--tw-ring-opacity:1;--tw-ring-color:rgb(110 231 183/var(--tw-ring-opacity))}.ring-emerald-400{--tw-ring-opacity:1;--tw-ring-color:rgb(52 211 153/var(--tw-ring-opacity))}.ring-emerald-50{--tw-ring-opacity:1;--tw-ring-color:rgb(236 253 245/var(--tw-ring-opacity))}.ring-emerald-500{--tw-ring-opacity:1;--tw-ring-color:rgb(16 185 129/var(--tw-ring-opacity))}.ring-emerald-600{--tw-ring-opacity:1;--tw-ring-color:rgb(5 150 105/var(--tw-ring-opacity))}.ring-emerald-700{--tw-ring-opacity:1;--tw-ring-color:rgb(4 120 87/var(--tw-ring-opacity))}.ring-emerald-800{--tw-ring-opacity:1;--tw-ring-color:rgb(6 95 70/var(--tw-ring-opacity))}.ring-emerald-900{--tw-ring-opacity:1;--tw-ring-color:rgb(6 78 59/var(--tw-ring-opacity))}.ring-emerald-950{--tw-ring-opacity:1;--tw-ring-color:rgb(2 44 34/var(--tw-ring-opacity))}.ring-fuchsia-100{--tw-ring-opacity:1;--tw-ring-color:rgb(250 232 255/var(--tw-ring-opacity))}.ring-fuchsia-200{--tw-ring-opacity:1;--tw-ring-color:rgb(245 208 254/var(--tw-ring-opacity))}.ring-fuchsia-300{--tw-ring-opacity:1;--tw-ring-color:rgb(240 171 252/var(--tw-ring-opacity))}.ring-fuchsia-400{--tw-ring-opacity:1;--tw-ring-color:rgb(232 121 249/var(--tw-ring-opacity))}.ring-fuchsia-50{--tw-ring-opacity:1;--tw-ring-color:rgb(253 244 255/var(--tw-ring-opacity))}.ring-fuchsia-500{--tw-ring-opacity:1;--tw-ring-color:rgb(217 70 239/var(--tw-ring-opacity))}.ring-fuchsia-600{--tw-ring-opacity:1;--tw-ring-color:rgb(192 38 211/var(--tw-ring-opacity))}.ring-fuchsia-700{--tw-ring-opacity:1;--tw-ring-color:rgb(162 28 175/var(--tw-ring-opacity))}.ring-fuchsia-800{--tw-ring-opacity:1;--tw-ring-color:rgb(134 25 143/var(--tw-ring-opacity))}.ring-fuchsia-900{--tw-ring-opacity:1;--tw-ring-color:rgb(112 26 117/var(--tw-ring-opacity))}.ring-fuchsia-950{--tw-ring-opacity:1;--tw-ring-color:rgb(74 4 78/var(--tw-ring-opacity))}.ring-gray-100{--tw-ring-opacity:1;--tw-ring-color:rgb(243 244 246/var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity))}.ring-gray-400{--tw-ring-opacity:1;--tw-ring-color:rgb(156 163 175/var(--tw-ring-opacity))}.ring-gray-50{--tw-ring-opacity:1;--tw-ring-color:rgb(249 250 251/var(--tw-ring-opacity))}.ring-gray-500{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity))}.ring-gray-600{--tw-ring-opacity:1;--tw-ring-color:rgb(75 85 99/var(--tw-ring-opacity))}.ring-gray-700{--tw-ring-opacity:1;--tw-ring-color:rgb(55 65 81/var(--tw-ring-opacity))}.ring-gray-800{--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55/var(--tw-ring-opacity))}.ring-gray-900{--tw-ring-opacity:1;--tw-ring-color:rgb(17 24 39/var(--tw-ring-opacity))}.ring-gray-950{--tw-ring-opacity:1;--tw-ring-color:rgb(3 7 18/var(--tw-ring-opacity))}.ring-green-100{--tw-ring-opacity:1;--tw-ring-color:rgb(220 252 231/var(--tw-ring-opacity))}.ring-green-200{--tw-ring-opacity:1;--tw-ring-color:rgb(187 247 208/var(--tw-ring-opacity))}.ring-green-300{--tw-ring-opacity:1;--tw-ring-color:rgb(134 239 172/var(--tw-ring-opacity))}.ring-green-400{--tw-ring-opacity:1;--tw-ring-color:rgb(74 222 128/var(--tw-ring-opacity))}.ring-green-50{--tw-ring-opacity:1;--tw-ring-color:rgb(240 253 244/var(--tw-ring-opacity))}.ring-green-500{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity))}.ring-green-600{--tw-ring-opacity:1;--tw-ring-color:rgb(22 163 74/var(--tw-ring-opacity))}.ring-green-700{--tw-ring-opacity:1;--tw-ring-color:rgb(21 128 61/var(--tw-ring-opacity))}.ring-green-800{--tw-ring-opacity:1;--tw-ring-color:rgb(22 101 52/var(--tw-ring-opacity))}.ring-green-900{--tw-ring-opacity:1;--tw-ring-color:rgb(20 83 45/var(--tw-ring-opacity))}.ring-green-950{--tw-ring-opacity:1;--tw-ring-color:rgb(5 46 22/var(--tw-ring-opacity))}.ring-indigo-100{--tw-ring-opacity:1;--tw-ring-color:rgb(224 231 255/var(--tw-ring-opacity))}.ring-indigo-200{--tw-ring-opacity:1;--tw-ring-color:rgb(199 210 254/var(--tw-ring-opacity))}.ring-indigo-300{--tw-ring-opacity:1;--tw-ring-color:rgb(165 180 252/var(--tw-ring-opacity))}.ring-indigo-400{--tw-ring-opacity:1;--tw-ring-color:rgb(129 140 248/var(--tw-ring-opacity))}.ring-indigo-50{--tw-ring-opacity:1;--tw-ring-color:rgb(238 242 255/var(--tw-ring-opacity))}.ring-indigo-500{--tw-ring-opacity:1;--tw-ring-color:rgb(99 102 241/var(--tw-ring-opacity))}.ring-indigo-600{--tw-ring-opacity:1;--tw-ring-color:rgb(79 70 229/var(--tw-ring-opacity))}.ring-indigo-700{--tw-ring-opacity:1;--tw-ring-color:rgb(67 56 202/var(--tw-ring-opacity))}.ring-indigo-800{--tw-ring-opacity:1;--tw-ring-color:rgb(55 48 163/var(--tw-ring-opacity))}.ring-indigo-900{--tw-ring-opacity:1;--tw-ring-color:rgb(49 46 129/var(--tw-ring-opacity))}.ring-indigo-950{--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}.ring-lime-100{--tw-ring-opacity:1;--tw-ring-color:rgb(236 252 203/var(--tw-ring-opacity))}.ring-lime-200{--tw-ring-opacity:1;--tw-ring-color:rgb(217 249 157/var(--tw-ring-opacity))}.ring-lime-300{--tw-ring-opacity:1;--tw-ring-color:rgb(190 242 100/var(--tw-ring-opacity))}.ring-lime-400{--tw-ring-opacity:1;--tw-ring-color:rgb(163 230 53/var(--tw-ring-opacity))}.ring-lime-50{--tw-ring-opacity:1;--tw-ring-color:rgb(247 254 231/var(--tw-ring-opacity))}.ring-lime-500{--tw-ring-opacity:1;--tw-ring-color:rgb(132 204 22/var(--tw-ring-opacity))}.ring-lime-600{--tw-ring-opacity:1;--tw-ring-color:rgb(101 163 13/var(--tw-ring-opacity))}.ring-lime-700{--tw-ring-opacity:1;--tw-ring-color:rgb(77 124 15/var(--tw-ring-opacity))}.ring-lime-800{--tw-ring-opacity:1;--tw-ring-color:rgb(63 98 18/var(--tw-ring-opacity))}.ring-lime-900{--tw-ring-opacity:1;--tw-ring-color:rgb(54 83 20/var(--tw-ring-opacity))}.ring-lime-950{--tw-ring-opacity:1;--tw-ring-color:rgb(26 46 5/var(--tw-ring-opacity))}.ring-neutral-100{--tw-ring-opacity:1;--tw-ring-color:rgb(245 245 245/var(--tw-ring-opacity))}.ring-neutral-200{--tw-ring-opacity:1;--tw-ring-color:rgb(229 229 229/var(--tw-ring-opacity))}.ring-neutral-300{--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 212/var(--tw-ring-opacity))}.ring-neutral-400{--tw-ring-opacity:1;--tw-ring-color:rgb(163 163 163/var(--tw-ring-opacity))}.ring-neutral-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 250 250/var(--tw-ring-opacity))}.ring-neutral-500{--tw-ring-opacity:1;--tw-ring-color:rgb(115 115 115/var(--tw-ring-opacity))}.ring-neutral-600{--tw-ring-opacity:1;--tw-ring-color:rgb(82 82 82/var(--tw-ring-opacity))}.ring-neutral-700{--tw-ring-opacity:1;--tw-ring-color:rgb(64 64 64/var(--tw-ring-opacity))}.ring-neutral-800{--tw-ring-opacity:1;--tw-ring-color:rgb(38 38 38/var(--tw-ring-opacity))}.ring-neutral-900{--tw-ring-opacity:1;--tw-ring-color:rgb(23 23 23/var(--tw-ring-opacity))}.ring-neutral-950{--tw-ring-opacity:1;--tw-ring-color:rgb(10 10 10/var(--tw-ring-opacity))}.ring-orange-100{--tw-ring-opacity:1;--tw-ring-color:rgb(255 237 213/var(--tw-ring-opacity))}.ring-orange-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 215 170/var(--tw-ring-opacity))}.ring-orange-300{--tw-ring-opacity:1;--tw-ring-color:rgb(253 186 116/var(--tw-ring-opacity))}.ring-orange-400{--tw-ring-opacity:1;--tw-ring-color:rgb(251 146 60/var(--tw-ring-opacity))}.ring-orange-50{--tw-ring-opacity:1;--tw-ring-color:rgb(255 247 237/var(--tw-ring-opacity))}.ring-orange-500{--tw-ring-opacity:1;--tw-ring-color:rgb(249 115 22/var(--tw-ring-opacity))}.ring-orange-600{--tw-ring-opacity:1;--tw-ring-color:rgb(234 88 12/var(--tw-ring-opacity))}.ring-orange-700{--tw-ring-opacity:1;--tw-ring-color:rgb(194 65 12/var(--tw-ring-opacity))}.ring-orange-800{--tw-ring-opacity:1;--tw-ring-color:rgb(154 52 18/var(--tw-ring-opacity))}.ring-orange-900{--tw-ring-opacity:1;--tw-ring-color:rgb(124 45 18/var(--tw-ring-opacity))}.ring-orange-950{--tw-ring-opacity:1;--tw-ring-color:rgb(67 20 7/var(--tw-ring-opacity))}.ring-pink-100{--tw-ring-opacity:1;--tw-ring-color:rgb(252 231 243/var(--tw-ring-opacity))}.ring-pink-200{--tw-ring-opacity:1;--tw-ring-color:rgb(251 207 232/var(--tw-ring-opacity))}.ring-pink-300{--tw-ring-opacity:1;--tw-ring-color:rgb(249 168 212/var(--tw-ring-opacity))}.ring-pink-400{--tw-ring-opacity:1;--tw-ring-color:rgb(244 114 182/var(--tw-ring-opacity))}.ring-pink-50{--tw-ring-opacity:1;--tw-ring-color:rgb(253 242 248/var(--tw-ring-opacity))}.ring-pink-500{--tw-ring-opacity:1;--tw-ring-color:rgb(236 72 153/var(--tw-ring-opacity))}.ring-pink-600{--tw-ring-opacity:1;--tw-ring-color:rgb(219 39 119/var(--tw-ring-opacity))}.ring-pink-700{--tw-ring-opacity:1;--tw-ring-color:rgb(190 24 93/var(--tw-ring-opacity))}.ring-pink-800{--tw-ring-opacity:1;--tw-ring-color:rgb(157 23 77/var(--tw-ring-opacity))}.ring-pink-900{--tw-ring-opacity:1;--tw-ring-color:rgb(131 24 67/var(--tw-ring-opacity))}.ring-pink-950{--tw-ring-opacity:1;--tw-ring-color:rgb(80 7 36/var(--tw-ring-opacity))}.ring-purple-100{--tw-ring-opacity:1;--tw-ring-color:rgb(243 232 255/var(--tw-ring-opacity))}.ring-purple-200{--tw-ring-opacity:1;--tw-ring-color:rgb(233 213 255/var(--tw-ring-opacity))}.ring-purple-300{--tw-ring-opacity:1;--tw-ring-color:rgb(216 180 254/var(--tw-ring-opacity))}.ring-purple-400{--tw-ring-opacity:1;--tw-ring-color:rgb(192 132 252/var(--tw-ring-opacity))}.ring-purple-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 245 255/var(--tw-ring-opacity))}.ring-purple-500{--tw-ring-opacity:1;--tw-ring-color:rgb(168 85 247/var(--tw-ring-opacity))}.ring-purple-600{--tw-ring-opacity:1;--tw-ring-color:rgb(147 51 234/var(--tw-ring-opacity))}.ring-purple-700{--tw-ring-opacity:1;--tw-ring-color:rgb(126 34 206/var(--tw-ring-opacity))}.ring-purple-800{--tw-ring-opacity:1;--tw-ring-color:rgb(107 33 168/var(--tw-ring-opacity))}.ring-purple-900{--tw-ring-opacity:1;--tw-ring-color:rgb(88 28 135/var(--tw-ring-opacity))}.ring-purple-950{--tw-ring-opacity:1;--tw-ring-color:rgb(59 7 100/var(--tw-ring-opacity))}.ring-red-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 226 226/var(--tw-ring-opacity))}.ring-red-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 202 202/var(--tw-ring-opacity))}.ring-red-300{--tw-ring-opacity:1;--tw-ring-color:rgb(252 165 165/var(--tw-ring-opacity))}.ring-red-400{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity))}.ring-red-50{--tw-ring-opacity:1;--tw-ring-color:rgb(254 242 242/var(--tw-ring-opacity))}.ring-red-500{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.ring-red-600{--tw-ring-opacity:1;--tw-ring-color:rgb(220 38 38/var(--tw-ring-opacity))}.ring-red-700{--tw-ring-opacity:1;--tw-ring-color:rgb(185 28 28/var(--tw-ring-opacity))}.ring-red-800{--tw-ring-opacity:1;--tw-ring-color:rgb(153 27 27/var(--tw-ring-opacity))}.ring-red-900{--tw-ring-opacity:1;--tw-ring-color:rgb(127 29 29/var(--tw-ring-opacity))}.ring-red-950{--tw-ring-opacity:1;--tw-ring-color:rgb(69 10 10/var(--tw-ring-opacity))}.ring-rose-100{--tw-ring-opacity:1;--tw-ring-color:rgb(255 228 230/var(--tw-ring-opacity))}.ring-rose-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 205 211/var(--tw-ring-opacity))}.ring-rose-300{--tw-ring-opacity:1;--tw-ring-color:rgb(253 164 175/var(--tw-ring-opacity))}.ring-rose-400{--tw-ring-opacity:1;--tw-ring-color:rgb(251 113 133/var(--tw-ring-opacity))}.ring-rose-50{--tw-ring-opacity:1;--tw-ring-color:rgb(255 241 242/var(--tw-ring-opacity))}.ring-rose-500{--tw-ring-opacity:1;--tw-ring-color:rgb(244 63 94/var(--tw-ring-opacity))}.ring-rose-600{--tw-ring-opacity:1;--tw-ring-color:rgb(225 29 72/var(--tw-ring-opacity))}.ring-rose-700{--tw-ring-opacity:1;--tw-ring-color:rgb(190 18 60/var(--tw-ring-opacity))}.ring-rose-800{--tw-ring-opacity:1;--tw-ring-color:rgb(159 18 57/var(--tw-ring-opacity))}.ring-rose-900{--tw-ring-opacity:1;--tw-ring-color:rgb(136 19 55/var(--tw-ring-opacity))}.ring-rose-950{--tw-ring-opacity:1;--tw-ring-color:rgb(76 5 25/var(--tw-ring-opacity))}.ring-sky-100{--tw-ring-opacity:1;--tw-ring-color:rgb(224 242 254/var(--tw-ring-opacity))}.ring-sky-200{--tw-ring-opacity:1;--tw-ring-color:rgb(186 230 253/var(--tw-ring-opacity))}.ring-sky-300{--tw-ring-opacity:1;--tw-ring-color:rgb(125 211 252/var(--tw-ring-opacity))}.ring-sky-400{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.ring-sky-50{--tw-ring-opacity:1;--tw-ring-color:rgb(240 249 255/var(--tw-ring-opacity))}.ring-sky-500{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity))}.ring-sky-600{--tw-ring-opacity:1;--tw-ring-color:rgb(2 132 199/var(--tw-ring-opacity))}.ring-sky-700{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.ring-sky-800{--tw-ring-opacity:1;--tw-ring-color:rgb(7 89 133/var(--tw-ring-opacity))}.ring-sky-900{--tw-ring-opacity:1;--tw-ring-color:rgb(12 74 110/var(--tw-ring-opacity))}.ring-sky-950{--tw-ring-opacity:1;--tw-ring-color:rgb(8 47 73/var(--tw-ring-opacity))}.ring-slate-100{--tw-ring-opacity:1;--tw-ring-color:rgb(241 245 249/var(--tw-ring-opacity))}.ring-slate-200{--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity))}.ring-slate-300{--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity))}.ring-slate-400{--tw-ring-opacity:1;--tw-ring-color:rgb(148 163 184/var(--tw-ring-opacity))}.ring-slate-50{--tw-ring-opacity:1;--tw-ring-color:rgb(248 250 252/var(--tw-ring-opacity))}.ring-slate-500{--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity))}.ring-slate-600{--tw-ring-opacity:1;--tw-ring-color:rgb(71 85 105/var(--tw-ring-opacity))}.ring-slate-700{--tw-ring-opacity:1;--tw-ring-color:rgb(51 65 85/var(--tw-ring-opacity))}.ring-slate-800{--tw-ring-opacity:1;--tw-ring-color:rgb(30 41 59/var(--tw-ring-opacity))}.ring-slate-900{--tw-ring-opacity:1;--tw-ring-color:rgb(15 23 42/var(--tw-ring-opacity))}.ring-slate-950{--tw-ring-opacity:1;--tw-ring-color:rgb(2 6 23/var(--tw-ring-opacity))}.ring-stone-100{--tw-ring-opacity:1;--tw-ring-color:rgb(245 245 244/var(--tw-ring-opacity))}.ring-stone-200{--tw-ring-opacity:1;--tw-ring-color:rgb(231 229 228/var(--tw-ring-opacity))}.ring-stone-300{--tw-ring-opacity:1;--tw-ring-color:rgb(214 211 209/var(--tw-ring-opacity))}.ring-stone-400{--tw-ring-opacity:1;--tw-ring-color:rgb(168 162 158/var(--tw-ring-opacity))}.ring-stone-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 250 249/var(--tw-ring-opacity))}.ring-stone-500{--tw-ring-opacity:1;--tw-ring-color:rgb(120 113 108/var(--tw-ring-opacity))}.ring-stone-600{--tw-ring-opacity:1;--tw-ring-color:rgb(87 83 78/var(--tw-ring-opacity))}.ring-stone-700{--tw-ring-opacity:1;--tw-ring-color:rgb(68 64 60/var(--tw-ring-opacity))}.ring-stone-800{--tw-ring-opacity:1;--tw-ring-color:rgb(41 37 36/var(--tw-ring-opacity))}.ring-stone-900{--tw-ring-opacity:1;--tw-ring-color:rgb(28 25 23/var(--tw-ring-opacity))}.ring-stone-950{--tw-ring-opacity:1;--tw-ring-color:rgb(12 10 9/var(--tw-ring-opacity))}.ring-teal-100{--tw-ring-opacity:1;--tw-ring-color:rgb(204 251 241/var(--tw-ring-opacity))}.ring-teal-200{--tw-ring-opacity:1;--tw-ring-color:rgb(153 246 228/var(--tw-ring-opacity))}.ring-teal-300{--tw-ring-opacity:1;--tw-ring-color:rgb(94 234 212/var(--tw-ring-opacity))}.ring-teal-400{--tw-ring-opacity:1;--tw-ring-color:rgb(45 212 191/var(--tw-ring-opacity))}.ring-teal-50{--tw-ring-opacity:1;--tw-ring-color:rgb(240 253 250/var(--tw-ring-opacity))}.ring-teal-500{--tw-ring-opacity:1;--tw-ring-color:rgb(20 184 166/var(--tw-ring-opacity))}.ring-teal-600{--tw-ring-opacity:1;--tw-ring-color:rgb(13 148 136/var(--tw-ring-opacity))}.ring-teal-700{--tw-ring-opacity:1;--tw-ring-color:rgb(15 118 110/var(--tw-ring-opacity))}.ring-teal-800{--tw-ring-opacity:1;--tw-ring-color:rgb(17 94 89/var(--tw-ring-opacity))}.ring-teal-900{--tw-ring-opacity:1;--tw-ring-color:rgb(19 78 74/var(--tw-ring-opacity))}.ring-teal-950{--tw-ring-opacity:1;--tw-ring-color:rgb(4 47 46/var(--tw-ring-opacity))}.ring-tremor-brand-inverted{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-tremor-brand-muted{--tw-ring-opacity:1;--tw-ring-color:rgb(134 136 239/var(--tw-ring-opacity))}.ring-tremor-ring{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}.ring-violet-100{--tw-ring-opacity:1;--tw-ring-color:rgb(237 233 254/var(--tw-ring-opacity))}.ring-violet-200{--tw-ring-opacity:1;--tw-ring-color:rgb(221 214 254/var(--tw-ring-opacity))}.ring-violet-300{--tw-ring-opacity:1;--tw-ring-color:rgb(196 181 253/var(--tw-ring-opacity))}.ring-violet-400{--tw-ring-opacity:1;--tw-ring-color:rgb(167 139 250/var(--tw-ring-opacity))}.ring-violet-50{--tw-ring-opacity:1;--tw-ring-color:rgb(245 243 255/var(--tw-ring-opacity))}.ring-violet-500{--tw-ring-opacity:1;--tw-ring-color:rgb(139 92 246/var(--tw-ring-opacity))}.ring-violet-600{--tw-ring-opacity:1;--tw-ring-color:rgb(124 58 237/var(--tw-ring-opacity))}.ring-violet-700{--tw-ring-opacity:1;--tw-ring-color:rgb(109 40 217/var(--tw-ring-opacity))}.ring-violet-800{--tw-ring-opacity:1;--tw-ring-color:rgb(91 33 182/var(--tw-ring-opacity))}.ring-violet-900{--tw-ring-opacity:1;--tw-ring-color:rgb(76 29 149/var(--tw-ring-opacity))}.ring-violet-950{--tw-ring-opacity:1;--tw-ring-color:rgb(46 16 101/var(--tw-ring-opacity))}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-yellow-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 249 195/var(--tw-ring-opacity))}.ring-yellow-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 240 138/var(--tw-ring-opacity))}.ring-yellow-300{--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity))}.ring-yellow-400{--tw-ring-opacity:1;--tw-ring-color:rgb(250 204 21/var(--tw-ring-opacity))}.ring-yellow-50{--tw-ring-opacity:1;--tw-ring-color:rgb(254 252 232/var(--tw-ring-opacity))}.ring-yellow-500{--tw-ring-opacity:1;--tw-ring-color:rgb(234 179 8/var(--tw-ring-opacity))}.ring-yellow-600{--tw-ring-opacity:1;--tw-ring-color:rgb(202 138 4/var(--tw-ring-opacity))}.ring-yellow-700{--tw-ring-opacity:1;--tw-ring-color:rgb(161 98 7/var(--tw-ring-opacity))}.ring-yellow-800{--tw-ring-opacity:1;--tw-ring-color:rgb(133 77 14/var(--tw-ring-opacity))}.ring-yellow-900{--tw-ring-opacity:1;--tw-ring-color:rgb(113 63 18/var(--tw-ring-opacity))}.ring-yellow-950{--tw-ring-opacity:1;--tw-ring-color:rgb(66 32 6/var(--tw-ring-opacity))}.ring-zinc-100{--tw-ring-opacity:1;--tw-ring-color:rgb(244 244 245/var(--tw-ring-opacity))}.ring-zinc-200{--tw-ring-opacity:1;--tw-ring-color:rgb(228 228 231/var(--tw-ring-opacity))}.ring-zinc-300{--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity))}.ring-zinc-400{--tw-ring-opacity:1;--tw-ring-color:rgb(161 161 170/var(--tw-ring-opacity))}.ring-zinc-50{--tw-ring-opacity:1;--tw-ring-color:rgb(250 250 250/var(--tw-ring-opacity))}.ring-zinc-500{--tw-ring-opacity:1;--tw-ring-color:rgb(113 113 122/var(--tw-ring-opacity))}.ring-zinc-600{--tw-ring-opacity:1;--tw-ring-color:rgb(82 82 91/var(--tw-ring-opacity))}.ring-zinc-700{--tw-ring-opacity:1;--tw-ring-color:rgb(63 63 70/var(--tw-ring-opacity))}.ring-zinc-800{--tw-ring-opacity:1;--tw-ring-color:rgb(39 39 42/var(--tw-ring-opacity))}.ring-zinc-900{--tw-ring-opacity:1;--tw-ring-color:rgb(24 24 27/var(--tw-ring-opacity))}.ring-zinc-950{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity))}.ring-opacity-40{--tw-ring-opacity:0.4}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}.drop-shadow-md,.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.invert{--tw-invert:invert(100%)}.invert,.sepia{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia:sepia(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-grayscale{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%)}.backdrop-invert{--tw-backdrop-invert:invert(100%)}.backdrop-invert,.backdrop-sepia{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%)}.backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[appearance\:textfield\]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.\[scrollbar-width\:none\]{scrollbar-width:none}:root{--foreground-rgb:0,0,0;--background-start-rgb:255,255,255;--background-end-rgb:255,255,255;--neutral-border:#dcddeb}body{color:rgb(var(--foreground-rgb));background:linear-gradient(to bottom,transparent,rgb(var(--background-end-rgb))) rgb(var(--background-start-rgb))}.table-wrapper{overflow-x:scroll;margin:0 24px}.custom-border{border:1px solid var(--neutral-border)}.ant-dropdown-menu-item{padding:0!important}.ant-dropdown-menu-item>div{transition:all .2s ease}.ant-dropdown-menu-item[data-menu-id$=user-info]:hover{background-color:transparent!important;cursor:default}.ant-dropdown-menu-item[data-menu-id$=user-info]>div{cursor:default}.ant-dropdown-menu{padding:4px!important;min-width:280px!important}.ant-dropdown-menu-item-divider{margin:4px 0}.placeholder\:text-tremor-content::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.placeholder\:text-tremor-content::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.placeholder\:text-tremor-content-subtle::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.placeholder\:text-tremor-content-subtle::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.first\:rounded-l-\[4px\]:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}.last\:mb-0:last-child{margin-bottom:0}.last\:rounded-r-\[4px\]:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.last\:border-0:last-child{border-width:0}.last\:border-b-0:last-child{border-bottom-width:0}.focus-within\:relative:focus-within{position:relative}.hover\:border-b-2:hover{border-bottom-width:2px}.hover\:border-amber-100:hover{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}.hover\:border-amber-200:hover{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.hover\:border-amber-300:hover{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.hover\:border-amber-400:hover{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.hover\:border-amber-50:hover{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}.hover\:border-amber-500:hover{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.hover\:border-amber-600:hover{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.hover\:border-amber-700:hover{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}.hover\:border-amber-800:hover{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.hover\:border-amber-900:hover{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}.hover\:border-amber-950:hover{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}.hover\:border-blue-100:hover{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}.hover\:border-blue-200:hover{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.hover\:border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}.hover\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.hover\:border-blue-50:hover{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}.hover\:border-blue-500:hover{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.hover\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.hover\:border-blue-700:hover{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.hover\:border-blue-800:hover{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}.hover\:border-blue-900:hover{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}.hover\:border-blue-950:hover{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}.hover\:border-cyan-100:hover{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}.hover\:border-cyan-200:hover{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}.hover\:border-cyan-300:hover{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}.hover\:border-cyan-400:hover{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}.hover\:border-cyan-50:hover{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}.hover\:border-cyan-500:hover{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.hover\:border-cyan-600:hover{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}.hover\:border-cyan-700:hover{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}.hover\:border-cyan-800:hover{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}.hover\:border-cyan-900:hover{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}.hover\:border-cyan-950:hover{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}.hover\:border-emerald-100:hover{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}.hover\:border-emerald-200:hover{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.hover\:border-emerald-300:hover{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.hover\:border-emerald-400:hover{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.hover\:border-emerald-50:hover{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}.hover\:border-emerald-500:hover{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.hover\:border-emerald-600:hover{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.hover\:border-emerald-700:hover{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.hover\:border-emerald-800:hover{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.hover\:border-emerald-900:hover{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}.hover\:border-emerald-950:hover{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}.hover\:border-fuchsia-100:hover{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}.hover\:border-fuchsia-200:hover{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}.hover\:border-fuchsia-300:hover{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}.hover\:border-fuchsia-400:hover{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}.hover\:border-fuchsia-50:hover{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}.hover\:border-fuchsia-500:hover{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.hover\:border-fuchsia-600:hover{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.hover\:border-fuchsia-700:hover{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}.hover\:border-fuchsia-800:hover{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.hover\:border-fuchsia-900:hover{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}.hover\:border-fuchsia-950:hover{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}.hover\:border-gray-100:hover{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.hover\:border-gray-200:hover{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.hover\:border-gray-50:hover{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}.hover\:border-gray-500:hover{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.hover\:border-gray-600:hover{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.hover\:border-gray-700:hover{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.hover\:border-gray-800:hover{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.hover\:border-gray-900:hover{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.hover\:border-gray-950:hover{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}.hover\:border-green-100:hover{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}.hover\:border-green-200:hover{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}.hover\:border-green-300:hover{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}.hover\:border-green-400:hover{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.hover\:border-green-50:hover{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}.hover\:border-green-500:hover{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.hover\:border-green-600:hover{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.hover\:border-green-700:hover{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}.hover\:border-green-800:hover{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}.hover\:border-green-900:hover{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.hover\:border-green-950:hover{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}.hover\:border-indigo-100:hover{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}.hover\:border-indigo-200:hover{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}.hover\:border-indigo-300:hover{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.hover\:border-indigo-400:hover{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.hover\:border-indigo-50:hover{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}.hover\:border-indigo-500:hover{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.hover\:border-indigo-600:hover{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.hover\:border-indigo-700:hover{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.hover\:border-indigo-800:hover{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.hover\:border-indigo-900:hover{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}.hover\:border-indigo-950:hover{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.hover\:border-lime-100:hover{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}.hover\:border-lime-200:hover{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}.hover\:border-lime-300:hover{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}.hover\:border-lime-400:hover{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}.hover\:border-lime-50:hover{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}.hover\:border-lime-500:hover{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.hover\:border-lime-600:hover{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}.hover\:border-lime-700:hover{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}.hover\:border-lime-800:hover{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}.hover\:border-lime-900:hover{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}.hover\:border-lime-950:hover{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}.hover\:border-neutral-100:hover{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}.hover\:border-neutral-200:hover{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.hover\:border-neutral-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.hover\:border-neutral-400:hover{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.hover\:border-neutral-50:hover{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.hover\:border-neutral-500:hover{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}.hover\:border-neutral-600:hover{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.hover\:border-neutral-700:hover{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.hover\:border-neutral-800:hover{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}.hover\:border-neutral-900:hover{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}.hover\:border-neutral-950:hover{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}.hover\:border-orange-100:hover{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}.hover\:border-orange-200:hover{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}.hover\:border-orange-300:hover{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.hover\:border-orange-400:hover{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.hover\:border-orange-50:hover{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}.hover\:border-orange-500:hover{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.hover\:border-orange-600:hover{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.hover\:border-orange-700:hover{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}.hover\:border-orange-800:hover{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}.hover\:border-orange-900:hover{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}.hover\:border-orange-950:hover{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}.hover\:border-pink-100:hover{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}.hover\:border-pink-200:hover{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}.hover\:border-pink-300:hover{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}.hover\:border-pink-400:hover{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}.hover\:border-pink-50:hover{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}.hover\:border-pink-500:hover{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.hover\:border-pink-600:hover{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.hover\:border-pink-700:hover{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}.hover\:border-pink-800:hover{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}.hover\:border-pink-900:hover{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}.hover\:border-pink-950:hover{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}.hover\:border-purple-100:hover{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}.hover\:border-purple-200:hover{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.hover\:border-purple-300:hover{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.hover\:border-purple-400:hover{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}.hover\:border-purple-50:hover{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}.hover\:border-purple-500:hover{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.hover\:border-purple-600:hover{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.hover\:border-purple-700:hover{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}.hover\:border-purple-800:hover{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}.hover\:border-purple-900:hover{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}.hover\:border-purple-950:hover{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}.hover\:border-red-100:hover{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}.hover\:border-red-200:hover{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.hover\:border-red-300:hover{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.hover\:border-red-400:hover{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.hover\:border-red-50:hover{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}.hover\:border-red-500:hover{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.hover\:border-red-600:hover{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.hover\:border-red-700:hover{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.hover\:border-red-800:hover{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}.hover\:border-red-900:hover{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}.hover\:border-red-950:hover{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}.hover\:border-rose-100:hover{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}.hover\:border-rose-200:hover{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.hover\:border-rose-300:hover{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.hover\:border-rose-400:hover{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.hover\:border-rose-50:hover{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}.hover\:border-rose-500:hover{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}.hover\:border-rose-600:hover{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.hover\:border-rose-700:hover{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}.hover\:border-rose-800:hover{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.hover\:border-rose-900:hover{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}.hover\:border-rose-950:hover{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}.hover\:border-sky-100:hover{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.hover\:border-sky-200:hover{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.hover\:border-sky-300:hover{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.hover\:border-sky-400:hover{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.hover\:border-sky-50:hover{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}.hover\:border-sky-500:hover{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.hover\:border-sky-600:hover{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.hover\:border-sky-700:hover{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.hover\:border-sky-800:hover{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.hover\:border-sky-900:hover{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.hover\:border-sky-950:hover{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}.hover\:border-slate-100:hover{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.hover\:border-slate-200:hover{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.hover\:border-slate-300:hover{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.hover\:border-slate-400:hover{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.hover\:border-slate-50:hover{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.hover\:border-slate-500:hover{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.hover\:border-slate-600:hover{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.hover\:border-slate-700:hover{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.hover\:border-slate-800:hover{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.hover\:border-slate-900:hover{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.hover\:border-slate-950:hover{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}.hover\:border-stone-100:hover{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}.hover\:border-stone-200:hover{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}.hover\:border-stone-300:hover{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.hover\:border-stone-400:hover{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}.hover\:border-stone-50:hover{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}.hover\:border-stone-500:hover{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}.hover\:border-stone-600:hover{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}.hover\:border-stone-700:hover{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}.hover\:border-stone-800:hover{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}.hover\:border-stone-900:hover{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}.hover\:border-stone-950:hover{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}.hover\:border-teal-100:hover{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}.hover\:border-teal-200:hover{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}.hover\:border-teal-300:hover{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}.hover\:border-teal-400:hover{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.hover\:border-teal-50:hover{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}.hover\:border-teal-500:hover{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.hover\:border-teal-600:hover{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.hover\:border-teal-700:hover{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}.hover\:border-teal-800:hover{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}.hover\:border-teal-900:hover{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}.hover\:border-teal-950:hover{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}.hover\:border-tremor-brand-emphasis:hover{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.hover\:border-tremor-content:hover{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.hover\:border-violet-100:hover{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}.hover\:border-violet-200:hover{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}.hover\:border-violet-300:hover{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.hover\:border-violet-400:hover{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.hover\:border-violet-50:hover{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}.hover\:border-violet-500:hover{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}.hover\:border-violet-600:hover{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}.hover\:border-violet-700:hover{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}.hover\:border-violet-800:hover{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}.hover\:border-violet-900:hover{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}.hover\:border-violet-950:hover{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}.hover\:border-yellow-100:hover{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}.hover\:border-yellow-200:hover{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}.hover\:border-yellow-300:hover{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.hover\:border-yellow-400:hover{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.hover\:border-yellow-50:hover{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}.hover\:border-yellow-500:hover{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}.hover\:border-yellow-600:hover{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}.hover\:border-yellow-700:hover{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}.hover\:border-yellow-800:hover{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.hover\:border-yellow-900:hover{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}.hover\:border-yellow-950:hover{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}.hover\:border-zinc-100:hover{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.hover\:border-zinc-200:hover{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.hover\:border-zinc-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.hover\:border-zinc-400:hover{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.hover\:border-zinc-50:hover{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.hover\:border-zinc-500:hover{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}.hover\:border-zinc-600:hover{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.hover\:border-zinc-700:hover{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.hover\:border-zinc-800:hover{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.hover\:border-zinc-900:hover{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}.hover\:border-zinc-950:hover{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}.hover\:\!bg-blue-700:hover{--tw-bg-opacity:1!important;background-color:rgb(29 78 216/var(--tw-bg-opacity))!important}.hover\:bg-amber-100:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.hover\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.hover\:bg-amber-300:hover{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.hover\:bg-amber-400:hover{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.hover\:bg-amber-50:hover{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.hover\:bg-amber-500:hover{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.hover\:bg-amber-600:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.hover\:bg-amber-700:hover{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.hover\:bg-amber-800:hover{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.hover\:bg-amber-900:hover{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.hover\:bg-amber-950:hover{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.hover\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.hover\:bg-blue-300:hover{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.hover\:bg-blue-400:hover{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.hover\:bg-blue-900:hover{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.hover\:bg-blue-950:hover{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}.hover\:bg-cyan-100:hover{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.hover\:bg-cyan-200:hover{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.hover\:bg-cyan-300:hover{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}.hover\:bg-cyan-400:hover{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.hover\:bg-cyan-50:hover{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}.hover\:bg-cyan-500:hover{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}.hover\:bg-cyan-600:hover{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.hover\:bg-cyan-700:hover{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}.hover\:bg-cyan-800:hover{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.hover\:bg-cyan-900:hover{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}.hover\:bg-cyan-950:hover{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}.hover\:bg-emerald-100:hover{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.hover\:bg-emerald-200:hover{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.hover\:bg-emerald-300:hover{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.hover\:bg-emerald-400:hover{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.hover\:bg-emerald-50:hover{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.hover\:bg-emerald-500:hover{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.hover\:bg-emerald-600:hover{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.hover\:bg-emerald-700:hover{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.hover\:bg-emerald-800:hover{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.hover\:bg-emerald-900:hover{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.hover\:bg-emerald-950:hover{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}.hover\:bg-fuchsia-100:hover{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.hover\:bg-fuchsia-200:hover{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}.hover\:bg-fuchsia-300:hover{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}.hover\:bg-fuchsia-400:hover{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}.hover\:bg-fuchsia-50:hover{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}.hover\:bg-fuchsia-500:hover{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}.hover\:bg-fuchsia-600:hover{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.hover\:bg-fuchsia-700:hover{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.hover\:bg-fuchsia-800:hover{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.hover\:bg-fuchsia-900:hover{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}.hover\:bg-fuchsia-950:hover{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.hover\:bg-gray-400:hover{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.hover\:bg-gray-900:hover{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.hover\:bg-gray-950:hover{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.hover\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.hover\:bg-green-200:hover{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.hover\:bg-green-300:hover{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.hover\:bg-green-400:hover{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.hover\:bg-green-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.hover\:bg-green-500:hover{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.hover\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.hover\:bg-green-800:hover{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.hover\:bg-green-900:hover{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.hover\:bg-green-950:hover{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}.hover\:bg-indigo-100:hover{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.hover\:bg-indigo-200:hover{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.hover\:bg-indigo-300:hover{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}.hover\:bg-indigo-400:hover{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.hover\:bg-indigo-50:hover{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.hover\:bg-indigo-500:hover{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.hover\:bg-indigo-600:hover{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-indigo-800:hover{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.hover\:bg-indigo-900:hover{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.hover\:bg-indigo-950:hover{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.hover\:bg-lime-100:hover{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.hover\:bg-lime-200:hover{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.hover\:bg-lime-300:hover{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}.hover\:bg-lime-400:hover{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}.hover\:bg-lime-50:hover{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}.hover\:bg-lime-500:hover{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.hover\:bg-lime-600:hover{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.hover\:bg-lime-700:hover{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.hover\:bg-lime-800:hover{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.hover\:bg-lime-900:hover{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}.hover\:bg-lime-950:hover{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}.hover\:bg-neutral-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.hover\:bg-neutral-200:hover{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.hover\:bg-neutral-300:hover{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.hover\:bg-neutral-400:hover{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}.hover\:bg-neutral-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:bg-neutral-500:hover{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.hover\:bg-neutral-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.hover\:bg-neutral-700:hover{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.hover\:bg-neutral-800:hover{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.hover\:bg-neutral-900:hover{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.hover\:bg-neutral-950:hover{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.hover\:bg-orange-100:hover{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.hover\:bg-orange-200:hover{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.hover\:bg-orange-300:hover{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.hover\:bg-orange-400:hover{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.hover\:bg-orange-50:hover{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.hover\:bg-orange-500:hover{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.hover\:bg-orange-600:hover{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.hover\:bg-orange-700:hover{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.hover\:bg-orange-800:hover{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.hover\:bg-orange-900:hover{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}.hover\:bg-orange-950:hover{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}.hover\:bg-pink-100:hover{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.hover\:bg-pink-200:hover{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}.hover\:bg-pink-300:hover{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}.hover\:bg-pink-400:hover{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.hover\:bg-pink-50:hover{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.hover\:bg-pink-500:hover{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.hover\:bg-pink-600:hover{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.hover\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.hover\:bg-pink-800:hover{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.hover\:bg-pink-900:hover{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}.hover\:bg-pink-950:hover{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}.hover\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.hover\:bg-purple-200:hover{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}.hover\:bg-purple-300:hover{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}.hover\:bg-purple-400:hover{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}.hover\:bg-purple-50:hover{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.hover\:bg-purple-500:hover{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.hover\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.hover\:bg-purple-700:hover{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.hover\:bg-purple-800:hover{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.hover\:bg-purple-900:hover{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}.hover\:bg-purple-950:hover{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}.hover\:bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.hover\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.hover\:bg-red-300:hover{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.hover\:bg-red-400:hover{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.hover\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.hover\:bg-red-800:hover{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.hover\:bg-red-950:hover{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}.hover\:bg-rose-100:hover{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.hover\:bg-rose-200:hover{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.hover\:bg-rose-300:hover{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}.hover\:bg-rose-400:hover{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.hover\:bg-rose-50:hover{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.hover\:bg-rose-500:hover{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.hover\:bg-rose-600:hover{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.hover\:bg-rose-700:hover{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.hover\:bg-rose-800:hover{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.hover\:bg-rose-900:hover{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.hover\:bg-rose-950:hover{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}.hover\:bg-sky-100:hover{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.hover\:bg-sky-200:hover{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.hover\:bg-sky-300:hover{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.hover\:bg-sky-400:hover{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.hover\:bg-sky-50:hover{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.hover\:bg-sky-500:hover{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.hover\:bg-sky-600:hover{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.hover\:bg-sky-700:hover{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.hover\:bg-sky-800:hover{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.hover\:bg-sky-900:hover{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.hover\:bg-sky-950:hover{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}.hover\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\:bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\:bg-slate-300:hover{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.hover\:bg-slate-400:hover{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\:bg-slate-500:hover{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.hover\:bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.hover\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.hover\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.hover\:bg-slate-900:hover{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.hover\:bg-slate-950:hover{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.hover\:bg-stone-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.hover\:bg-stone-200:hover{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.hover\:bg-stone-300:hover{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}.hover\:bg-stone-400:hover{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}.hover\:bg-stone-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}.hover\:bg-stone-500:hover{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}.hover\:bg-stone-600:hover{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}.hover\:bg-stone-700:hover{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}.hover\:bg-stone-800:hover{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}.hover\:bg-stone-900:hover{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}.hover\:bg-stone-950:hover{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}.hover\:bg-teal-100:hover{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.hover\:bg-teal-200:hover{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}.hover\:bg-teal-300:hover{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}.hover\:bg-teal-400:hover{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.hover\:bg-teal-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}.hover\:bg-teal-500:hover{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.hover\:bg-teal-600:hover{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.hover\:bg-teal-700:hover{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.hover\:bg-teal-800:hover{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.hover\:bg-teal-900:hover{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}.hover\:bg-teal-950:hover{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}.hover\:bg-tremor-background-muted:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:bg-tremor-background-subtle:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-tremor-brand-emphasis:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-violet-100:hover{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.hover\:bg-violet-200:hover{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.hover\:bg-violet-300:hover{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.hover\:bg-violet-400:hover{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}.hover\:bg-violet-50:hover{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.hover\:bg-violet-500:hover{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}.hover\:bg-violet-600:hover{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.hover\:bg-violet-700:hover{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}.hover\:bg-violet-800:hover{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.hover\:bg-violet-900:hover{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}.hover\:bg-violet-950:hover{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}.hover\:bg-yellow-100:hover{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.hover\:bg-yellow-200:hover{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.hover\:bg-yellow-300:hover{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.hover\:bg-yellow-400:hover{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.hover\:bg-yellow-50:hover{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.hover\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.hover\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.hover\:bg-yellow-700:hover{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}.hover\:bg-yellow-800:hover{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}.hover\:bg-yellow-900:hover{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.hover\:bg-yellow-950:hover{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}.hover\:bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.hover\:bg-zinc-200:hover{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.hover\:bg-zinc-300:hover{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}.hover\:bg-zinc-400:hover{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.hover\:bg-zinc-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:bg-zinc-500:hover{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}.hover\:bg-zinc-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.hover\:bg-zinc-700:hover{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.hover\:bg-zinc-800:hover{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.hover\:bg-zinc-900:hover{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.hover\:bg-zinc-950:hover{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}.hover\:bg-opacity-20:hover{--tw-bg-opacity:0.2}.hover\:text-amber-100:hover{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.hover\:text-amber-200:hover{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.hover\:text-amber-300:hover{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.hover\:text-amber-400:hover{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.hover\:text-amber-50:hover{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}.hover\:text-amber-500:hover{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.hover\:text-amber-600:hover{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.hover\:text-amber-700:hover{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.hover\:text-amber-800:hover{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.hover\:text-amber-900:hover{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.hover\:text-amber-950:hover{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}.hover\:text-blue-100:hover{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}.hover\:text-blue-200:hover{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.hover\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.hover\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.hover\:text-blue-50:hover{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.hover\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.hover\:text-blue-900:hover{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.hover\:text-blue-950:hover{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}.hover\:text-cyan-100:hover{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.hover\:text-cyan-200:hover{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}.hover\:text-cyan-300:hover{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}.hover\:text-cyan-400:hover{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.hover\:text-cyan-50:hover{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}.hover\:text-cyan-500:hover{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.hover\:text-cyan-600:hover{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.hover\:text-cyan-700:hover{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.hover\:text-cyan-800:hover{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}.hover\:text-cyan-900:hover{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.hover\:text-cyan-950:hover{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}.hover\:text-emerald-100:hover{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.hover\:text-emerald-200:hover{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}.hover\:text-emerald-300:hover{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.hover\:text-emerald-400:hover{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.hover\:text-emerald-50:hover{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}.hover\:text-emerald-500:hover{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.hover\:text-emerald-600:hover{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.hover\:text-emerald-700:hover{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.hover\:text-emerald-800:hover{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.hover\:text-emerald-900:hover{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}.hover\:text-emerald-950:hover{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}.hover\:text-fuchsia-100:hover{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}.hover\:text-fuchsia-200:hover{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.hover\:text-fuchsia-300:hover{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}.hover\:text-fuchsia-400:hover{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}.hover\:text-fuchsia-50:hover{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}.hover\:text-fuchsia-500:hover{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}.hover\:text-fuchsia-600:hover{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.hover\:text-fuchsia-700:hover{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.hover\:text-fuchsia-800:hover{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.hover\:text-fuchsia-900:hover{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}.hover\:text-fuchsia-950:hover{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}.hover\:text-gray-100:hover{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.hover\:text-gray-400:hover{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.hover\:text-gray-50:hover{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.hover\:text-gray-950:hover{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.hover\:text-green-100:hover{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.hover\:text-green-200:hover{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.hover\:text-green-300:hover{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.hover\:text-green-400:hover{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.hover\:text-green-50:hover{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}.hover\:text-green-500:hover{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.hover\:text-green-600:hover{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.hover\:text-green-700:hover{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.hover\:text-green-800:hover{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.hover\:text-green-900:hover{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}.hover\:text-green-950:hover{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}.hover\:text-indigo-100:hover{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}.hover\:text-indigo-200:hover{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.hover\:text-indigo-300:hover{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.hover\:text-indigo-400:hover{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.hover\:text-indigo-50:hover{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}.hover\:text-indigo-500:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.hover\:text-indigo-600:hover{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.hover\:text-indigo-700:hover{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.hover\:text-indigo-800:hover{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.hover\:text-indigo-900:hover{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.hover\:text-indigo-950:hover{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.hover\:text-lime-100:hover{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}.hover\:text-lime-200:hover{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}.hover\:text-lime-300:hover{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}.hover\:text-lime-400:hover{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}.hover\:text-lime-50:hover{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}.hover\:text-lime-500:hover{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}.hover\:text-lime-600:hover{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.hover\:text-lime-700:hover{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}.hover\:text-lime-800:hover{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}.hover\:text-lime-900:hover{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.hover\:text-lime-950:hover{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}.hover\:text-neutral-100:hover{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.hover\:text-neutral-200:hover{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.hover\:text-neutral-300:hover{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.hover\:text-neutral-400:hover{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.hover\:text-neutral-50:hover{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.hover\:text-neutral-500:hover{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.hover\:text-neutral-600:hover{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.hover\:text-neutral-700:hover{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.hover\:text-neutral-800:hover{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.hover\:text-neutral-900:hover{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.hover\:text-neutral-950:hover{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}.hover\:text-orange-100:hover{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}.hover\:text-orange-200:hover{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.hover\:text-orange-300:hover{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.hover\:text-orange-400:hover{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.hover\:text-orange-50:hover{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}.hover\:text-orange-500:hover{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.hover\:text-orange-600:hover{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.hover\:text-orange-700:hover{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.hover\:text-orange-800:hover{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.hover\:text-orange-900:hover{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}.hover\:text-orange-950:hover{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}.hover\:text-pink-100:hover{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}.hover\:text-pink-200:hover{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.hover\:text-pink-300:hover{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}.hover\:text-pink-400:hover{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}.hover\:text-pink-50:hover{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}.hover\:text-pink-500:hover{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.hover\:text-pink-600:hover{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.hover\:text-pink-700:hover{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.hover\:text-pink-800:hover{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.hover\:text-pink-900:hover{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}.hover\:text-pink-950:hover{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}.hover\:text-purple-100:hover{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}.hover\:text-purple-200:hover{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}.hover\:text-purple-300:hover{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.hover\:text-purple-400:hover{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.hover\:text-purple-50:hover{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}.hover\:text-purple-500:hover{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.hover\:text-purple-600:hover{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.hover\:text-purple-700:hover{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.hover\:text-purple-800:hover{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.hover\:text-purple-900:hover{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}.hover\:text-purple-950:hover{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}.hover\:text-red-100:hover{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}.hover\:text-red-200:hover{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.hover\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.hover\:text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.hover\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.hover\:text-red-800:hover{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.hover\:text-red-900:hover{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.hover\:text-red-950:hover{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}.hover\:text-rose-100:hover{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.hover\:text-rose-200:hover{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.hover\:text-rose-300:hover{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.hover\:text-rose-400:hover{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.hover\:text-rose-50:hover{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}.hover\:text-rose-500:hover{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.hover\:text-rose-600:hover{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.hover\:text-rose-700:hover{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.hover\:text-rose-800:hover{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.hover\:text-rose-900:hover{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.hover\:text-rose-950:hover{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}.hover\:text-sky-100:hover{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.hover\:text-sky-200:hover{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.hover\:text-sky-300:hover{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.hover\:text-sky-400:hover{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.hover\:text-sky-50:hover{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}.hover\:text-sky-500:hover{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.hover\:text-sky-600:hover{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.hover\:text-sky-700:hover{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.hover\:text-sky-800:hover{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.hover\:text-sky-900:hover{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}.hover\:text-sky-950:hover{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}.hover\:text-slate-100:hover{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.hover\:text-slate-200:hover{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.hover\:text-slate-300:hover{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.hover\:text-slate-400:hover{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.hover\:text-slate-50:hover{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.hover\:text-slate-500:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.hover\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.hover\:text-slate-800:hover{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.hover\:text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.hover\:text-slate-950:hover{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.hover\:text-stone-100:hover{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}.hover\:text-stone-200:hover{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}.hover\:text-stone-300:hover{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}.hover\:text-stone-400:hover{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.hover\:text-stone-50:hover{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}.hover\:text-stone-500:hover{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.hover\:text-stone-600:hover{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.hover\:text-stone-700:hover{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}.hover\:text-stone-800:hover{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}.hover\:text-stone-900:hover{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}.hover\:text-stone-950:hover{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}.hover\:text-teal-100:hover{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}.hover\:text-teal-200:hover{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.hover\:text-teal-300:hover{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}.hover\:text-teal-400:hover{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}.hover\:text-teal-50:hover{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}.hover\:text-teal-500:hover{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}.hover\:text-teal-600:hover{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.hover\:text-teal-700:hover{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.hover\:text-teal-800:hover{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.hover\:text-teal-900:hover{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}.hover\:text-teal-950:hover{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}.hover\:text-tremor-brand-emphasis:hover{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.hover\:text-tremor-content:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.hover\:text-tremor-content-emphasis:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.hover\:text-violet-100:hover{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}.hover\:text-violet-200:hover{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.hover\:text-violet-300:hover{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.hover\:text-violet-400:hover{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.hover\:text-violet-50:hover{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}.hover\:text-violet-500:hover{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.hover\:text-violet-600:hover{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.hover\:text-violet-700:hover{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.hover\:text-violet-800:hover{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}.hover\:text-violet-900:hover{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}.hover\:text-violet-950:hover{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}.hover\:text-yellow-100:hover{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}.hover\:text-yellow-200:hover{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}.hover\:text-yellow-300:hover{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.hover\:text-yellow-400:hover{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.hover\:text-yellow-50:hover{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}.hover\:text-yellow-500:hover{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.hover\:text-yellow-600:hover{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.hover\:text-yellow-700:hover{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.hover\:text-yellow-800:hover{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.hover\:text-yellow-900:hover{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}.hover\:text-yellow-950:hover{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}.hover\:text-zinc-100:hover{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.hover\:text-zinc-200:hover{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.hover\:text-zinc-300:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.hover\:text-zinc-400:hover{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.hover\:text-zinc-50:hover{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.hover\:text-zinc-500:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.hover\:text-zinc-600:hover{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.hover\:text-zinc-700:hover{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.hover\:text-zinc-800:hover{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.hover\:text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.hover\:text-zinc-950:hover{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.hover\:shadow-md:hover,.hover\:shadow-sm:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.focus\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.focus\:border-transparent:focus{border-color:transparent}.focus\:border-tremor-brand-subtle:focus{--tw-border-opacity:1;border-color:rgb(142 145 235/var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-1:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.focus\:ring-red-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(254 202 202/var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.focus\:ring-tremor-brand-muted:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(134 136 239/var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:\!bg-gray-300:disabled{--tw-bg-opacity:1!important;background-color:rgb(209 213 219/var(--tw-bg-opacity))!important}.disabled\:bg-indigo-400:disabled{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.disabled\:\!text-gray-500:disabled{--tw-text-opacity:1!important;color:rgb(107 114 128/var(--tw-text-opacity))!important}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.group:hover .group-hover\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.group:hover .group-hover\:text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.group:hover .group-hover\:opacity-100{opacity:1}.group:active .group-active\:scale-95{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.aria-selected\:\!bg-tremor-background-subtle[aria-selected=true]{--tw-bg-opacity:1!important;background-color:rgb(243 244 246/var(--tw-bg-opacity))!important}.aria-selected\:bg-tremor-background-emphasis[aria-selected=true]{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.aria-selected\:\!text-tremor-content[aria-selected=true]{--tw-text-opacity:1!important;color:rgb(107 114 128/var(--tw-text-opacity))!important}.aria-selected\:text-dark-tremor-brand-inverted[aria-selected=true]{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.aria-selected\:text-tremor-brand-inverted[aria-selected=true],.aria-selected\:text-tremor-content-inverted[aria-selected=true]{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.ui-selected\:border-b-2[data-headlessui-state~=selected]{border-bottom-width:2px}.ui-selected\:border-amber-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}.ui-selected\:border-amber-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.ui-selected\:border-amber-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.ui-selected\:border-amber-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.ui-selected\:border-amber-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}.ui-selected\:border-amber-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}.ui-selected\:border-amber-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.ui-selected\:border-amber-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}.ui-selected\:border-amber-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.ui-selected\:border-amber-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}.ui-selected\:border-amber-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}.ui-selected\:border-blue-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}.ui-selected\:border-blue-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.ui-selected\:border-blue-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}.ui-selected\:border-blue-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.ui-selected\:border-blue-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}.ui-selected\:border-blue-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.ui-selected\:border-blue-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.ui-selected\:border-blue-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.ui-selected\:border-blue-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}.ui-selected\:border-blue-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}.ui-selected\:border-blue-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}.ui-selected\:border-cyan-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}.ui-selected\:border-cyan-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}.ui-selected\:border-cyan-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}.ui-selected\:border-cyan-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}.ui-selected\:border-cyan-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}.ui-selected\:border-cyan-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}.ui-selected\:border-cyan-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}.ui-selected\:border-cyan-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}.ui-selected\:border-cyan-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}.ui-selected\:border-cyan-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}.ui-selected\:border-cyan-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}.ui-selected\:border-emerald-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}.ui-selected\:border-emerald-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.ui-selected\:border-emerald-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.ui-selected\:border-emerald-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.ui-selected\:border-emerald-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}.ui-selected\:border-emerald-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}.ui-selected\:border-emerald-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.ui-selected\:border-emerald-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.ui-selected\:border-emerald-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.ui-selected\:border-emerald-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}.ui-selected\:border-emerald-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}.ui-selected\:border-fuchsia-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}.ui-selected\:border-gray-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.ui-selected\:border-gray-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.ui-selected\:border-gray-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.ui-selected\:border-gray-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.ui-selected\:border-gray-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}.ui-selected\:border-gray-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.ui-selected\:border-gray-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.ui-selected\:border-gray-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.ui-selected\:border-gray-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.ui-selected\:border-gray-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.ui-selected\:border-gray-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}.ui-selected\:border-green-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}.ui-selected\:border-green-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}.ui-selected\:border-green-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}.ui-selected\:border-green-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.ui-selected\:border-green-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}.ui-selected\:border-green-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.ui-selected\:border-green-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.ui-selected\:border-green-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}.ui-selected\:border-green-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}.ui-selected\:border-green-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.ui-selected\:border-green-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}.ui-selected\:border-indigo-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}.ui-selected\:border-indigo-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}.ui-selected\:border-indigo-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.ui-selected\:border-indigo-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}.ui-selected\:border-indigo-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}.ui-selected\:border-indigo-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.ui-selected\:border-indigo-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.ui-selected\:border-indigo-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}.ui-selected\:border-indigo-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}.ui-selected\:border-indigo-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}.ui-selected\:border-indigo-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}.ui-selected\:border-lime-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}.ui-selected\:border-lime-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}.ui-selected\:border-lime-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}.ui-selected\:border-lime-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}.ui-selected\:border-lime-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}.ui-selected\:border-lime-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}.ui-selected\:border-lime-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}.ui-selected\:border-lime-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}.ui-selected\:border-lime-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}.ui-selected\:border-lime-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}.ui-selected\:border-lime-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}.ui-selected\:border-neutral-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}.ui-selected\:border-neutral-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.ui-selected\:border-neutral-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.ui-selected\:border-neutral-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.ui-selected\:border-neutral-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.ui-selected\:border-neutral-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}.ui-selected\:border-neutral-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.ui-selected\:border-neutral-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.ui-selected\:border-neutral-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}.ui-selected\:border-neutral-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}.ui-selected\:border-neutral-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}.ui-selected\:border-orange-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}.ui-selected\:border-orange-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}.ui-selected\:border-orange-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.ui-selected\:border-orange-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.ui-selected\:border-orange-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}.ui-selected\:border-orange-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.ui-selected\:border-orange-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.ui-selected\:border-orange-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}.ui-selected\:border-orange-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}.ui-selected\:border-orange-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}.ui-selected\:border-orange-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}.ui-selected\:border-pink-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}.ui-selected\:border-pink-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}.ui-selected\:border-pink-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}.ui-selected\:border-pink-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}.ui-selected\:border-pink-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}.ui-selected\:border-pink-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.ui-selected\:border-pink-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.ui-selected\:border-pink-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}.ui-selected\:border-pink-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}.ui-selected\:border-pink-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}.ui-selected\:border-pink-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}.ui-selected\:border-purple-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}.ui-selected\:border-purple-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.ui-selected\:border-purple-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.ui-selected\:border-purple-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}.ui-selected\:border-purple-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}.ui-selected\:border-purple-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.ui-selected\:border-purple-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.ui-selected\:border-purple-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}.ui-selected\:border-purple-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}.ui-selected\:border-purple-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}.ui-selected\:border-purple-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}.ui-selected\:border-red-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}.ui-selected\:border-red-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.ui-selected\:border-red-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.ui-selected\:border-red-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.ui-selected\:border-red-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}.ui-selected\:border-red-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.ui-selected\:border-red-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.ui-selected\:border-red-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.ui-selected\:border-red-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}.ui-selected\:border-red-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}.ui-selected\:border-red-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}.ui-selected\:border-rose-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}.ui-selected\:border-rose-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.ui-selected\:border-rose-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.ui-selected\:border-rose-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.ui-selected\:border-rose-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}.ui-selected\:border-rose-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}.ui-selected\:border-rose-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.ui-selected\:border-rose-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}.ui-selected\:border-rose-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.ui-selected\:border-rose-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}.ui-selected\:border-rose-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}.ui-selected\:border-sky-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.ui-selected\:border-sky-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.ui-selected\:border-sky-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.ui-selected\:border-sky-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.ui-selected\:border-sky-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}.ui-selected\:border-sky-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.ui-selected\:border-sky-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.ui-selected\:border-sky-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.ui-selected\:border-sky-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.ui-selected\:border-sky-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.ui-selected\:border-sky-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}.ui-selected\:border-slate-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.ui-selected\:border-slate-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.ui-selected\:border-slate-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.ui-selected\:border-slate-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.ui-selected\:border-slate-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.ui-selected\:border-slate-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.ui-selected\:border-slate-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.ui-selected\:border-slate-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.ui-selected\:border-slate-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.ui-selected\:border-slate-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.ui-selected\:border-slate-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}.ui-selected\:border-stone-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}.ui-selected\:border-stone-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}.ui-selected\:border-stone-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.ui-selected\:border-stone-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}.ui-selected\:border-stone-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}.ui-selected\:border-stone-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}.ui-selected\:border-stone-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}.ui-selected\:border-stone-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}.ui-selected\:border-stone-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}.ui-selected\:border-stone-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}.ui-selected\:border-stone-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}.ui-selected\:border-teal-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}.ui-selected\:border-teal-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}.ui-selected\:border-teal-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}.ui-selected\:border-teal-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}.ui-selected\:border-teal-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}.ui-selected\:border-teal-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.ui-selected\:border-teal-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.ui-selected\:border-teal-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}.ui-selected\:border-teal-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}.ui-selected\:border-teal-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}.ui-selected\:border-teal-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}.ui-selected\:border-tremor-border[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.ui-selected\:border-tremor-brand[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.ui-selected\:border-violet-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}.ui-selected\:border-violet-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}.ui-selected\:border-violet-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.ui-selected\:border-violet-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.ui-selected\:border-violet-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}.ui-selected\:border-violet-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}.ui-selected\:border-violet-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}.ui-selected\:border-violet-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}.ui-selected\:border-violet-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}.ui-selected\:border-violet-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}.ui-selected\:border-violet-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}.ui-selected\:border-yellow-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}.ui-selected\:border-yellow-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}.ui-selected\:border-yellow-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.ui-selected\:border-yellow-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.ui-selected\:border-yellow-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}.ui-selected\:border-yellow-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}.ui-selected\:border-yellow-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}.ui-selected\:border-yellow-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}.ui-selected\:border-yellow-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.ui-selected\:border-yellow-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}.ui-selected\:border-yellow-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}.ui-selected\:border-zinc-100[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.ui-selected\:border-zinc-200[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.ui-selected\:border-zinc-300[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.ui-selected\:border-zinc-400[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.ui-selected\:border-zinc-50[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}.ui-selected\:border-zinc-500[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}.ui-selected\:border-zinc-600[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.ui-selected\:border-zinc-700[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.ui-selected\:border-zinc-800[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.ui-selected\:border-zinc-900[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}.ui-selected\:border-zinc-950[data-headlessui-state~=selected]{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}.ui-selected\:bg-amber-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.ui-selected\:bg-amber-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.ui-selected\:bg-amber-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.ui-selected\:bg-amber-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.ui-selected\:bg-amber-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.ui-selected\:bg-amber-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.ui-selected\:bg-amber-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.ui-selected\:bg-amber-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.ui-selected\:bg-amber-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.ui-selected\:bg-amber-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.ui-selected\:bg-amber-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}.ui-selected\:bg-blue-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.ui-selected\:bg-blue-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.ui-selected\:bg-blue-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.ui-selected\:bg-blue-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.ui-selected\:bg-blue-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.ui-selected\:bg-blue-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.ui-selected\:bg-blue-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.ui-selected\:bg-blue-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.ui-selected\:bg-blue-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.ui-selected\:bg-blue-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.ui-selected\:bg-blue-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}.ui-selected\:bg-cyan-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.ui-selected\:bg-emerald-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}.ui-selected\:bg-fuchsia-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}.ui-selected\:bg-gray-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.ui-selected\:bg-gray-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.ui-selected\:bg-gray-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.ui-selected\:bg-gray-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.ui-selected\:bg-gray-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ui-selected\:bg-gray-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.ui-selected\:bg-gray-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.ui-selected\:bg-gray-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.ui-selected\:bg-gray-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.ui-selected\:bg-gray-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.ui-selected\:bg-gray-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.ui-selected\:bg-green-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.ui-selected\:bg-green-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.ui-selected\:bg-green-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}.ui-selected\:bg-green-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.ui-selected\:bg-green-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.ui-selected\:bg-green-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.ui-selected\:bg-green-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.ui-selected\:bg-green-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.ui-selected\:bg-green-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.ui-selected\:bg-green-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}.ui-selected\:bg-green-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}.ui-selected\:bg-indigo-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}.ui-selected\:bg-lime-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}.ui-selected\:bg-lime-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}.ui-selected\:bg-lime-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}.ui-selected\:bg-lime-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}.ui-selected\:bg-lime-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}.ui-selected\:bg-lime-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}.ui-selected\:bg-lime-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}.ui-selected\:bg-lime-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}.ui-selected\:bg-lime-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.ui-selected\:bg-lime-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}.ui-selected\:bg-lime-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.ui-selected\:bg-neutral-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.ui-selected\:bg-orange-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.ui-selected\:bg-orange-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.ui-selected\:bg-orange-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.ui-selected\:bg-orange-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.ui-selected\:bg-orange-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.ui-selected\:bg-orange-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.ui-selected\:bg-orange-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.ui-selected\:bg-orange-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.ui-selected\:bg-orange-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.ui-selected\:bg-orange-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}.ui-selected\:bg-orange-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}.ui-selected\:bg-pink-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.ui-selected\:bg-pink-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}.ui-selected\:bg-pink-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}.ui-selected\:bg-pink-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.ui-selected\:bg-pink-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}.ui-selected\:bg-pink-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.ui-selected\:bg-pink-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}.ui-selected\:bg-pink-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.ui-selected\:bg-pink-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.ui-selected\:bg-pink-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}.ui-selected\:bg-pink-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}.ui-selected\:bg-purple-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.ui-selected\:bg-purple-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}.ui-selected\:bg-purple-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}.ui-selected\:bg-purple-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}.ui-selected\:bg-purple-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.ui-selected\:bg-purple-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.ui-selected\:bg-purple-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}.ui-selected\:bg-purple-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.ui-selected\:bg-purple-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}.ui-selected\:bg-purple-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}.ui-selected\:bg-purple-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}.ui-selected\:bg-red-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.ui-selected\:bg-red-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.ui-selected\:bg-red-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.ui-selected\:bg-red-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.ui-selected\:bg-red-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.ui-selected\:bg-red-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.ui-selected\:bg-red-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.ui-selected\:bg-red-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.ui-selected\:bg-red-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.ui-selected\:bg-red-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}.ui-selected\:bg-red-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}.ui-selected\:bg-rose-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.ui-selected\:bg-rose-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}.ui-selected\:bg-rose-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}.ui-selected\:bg-rose-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.ui-selected\:bg-rose-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.ui-selected\:bg-rose-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.ui-selected\:bg-rose-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.ui-selected\:bg-rose-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.ui-selected\:bg-rose-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.ui-selected\:bg-rose-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.ui-selected\:bg-rose-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}.ui-selected\:bg-sky-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.ui-selected\:bg-sky-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.ui-selected\:bg-sky-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.ui-selected\:bg-sky-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.ui-selected\:bg-sky-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.ui-selected\:bg-sky-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.ui-selected\:bg-sky-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.ui-selected\:bg-sky-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.ui-selected\:bg-sky-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.ui-selected\:bg-sky-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.ui-selected\:bg-sky-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}.ui-selected\:bg-slate-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.ui-selected\:bg-slate-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.ui-selected\:bg-slate-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.ui-selected\:bg-slate-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.ui-selected\:bg-slate-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.ui-selected\:bg-slate-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.ui-selected\:bg-slate-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.ui-selected\:bg-slate-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.ui-selected\:bg-slate-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.ui-selected\:bg-slate-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.ui-selected\:bg-slate-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.ui-selected\:bg-stone-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.ui-selected\:bg-stone-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.ui-selected\:bg-stone-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}.ui-selected\:bg-stone-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}.ui-selected\:bg-stone-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}.ui-selected\:bg-stone-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}.ui-selected\:bg-stone-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}.ui-selected\:bg-stone-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}.ui-selected\:bg-stone-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}.ui-selected\:bg-stone-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}.ui-selected\:bg-stone-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}.ui-selected\:bg-teal-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.ui-selected\:bg-teal-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}.ui-selected\:bg-teal-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}.ui-selected\:bg-teal-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}.ui-selected\:bg-teal-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}.ui-selected\:bg-teal-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.ui-selected\:bg-teal-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.ui-selected\:bg-teal-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.ui-selected\:bg-teal-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.ui-selected\:bg-teal-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}.ui-selected\:bg-teal-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}.ui-selected\:bg-tremor-background[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.ui-selected\:bg-tremor-background-muted[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ui-selected\:bg-violet-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.ui-selected\:bg-violet-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.ui-selected\:bg-violet-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.ui-selected\:bg-violet-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}.ui-selected\:bg-violet-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.ui-selected\:bg-violet-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}.ui-selected\:bg-violet-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.ui-selected\:bg-violet-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}.ui-selected\:bg-violet-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.ui-selected\:bg-violet-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}.ui-selected\:bg-violet-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.ui-selected\:bg-yellow-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-100[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-200[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-300[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-400[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-50[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-500[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-600[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-700[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-800[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-900[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.ui-selected\:bg-zinc-950[data-headlessui-state~=selected]{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}.ui-selected\:text-amber-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.ui-selected\:text-amber-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.ui-selected\:text-amber-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.ui-selected\:text-amber-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.ui-selected\:text-amber-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}.ui-selected\:text-amber-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.ui-selected\:text-amber-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.ui-selected\:text-amber-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.ui-selected\:text-amber-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.ui-selected\:text-amber-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}.ui-selected\:text-amber-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}.ui-selected\:text-blue-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}.ui-selected\:text-blue-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.ui-selected\:text-blue-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.ui-selected\:text-blue-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.ui-selected\:text-blue-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}.ui-selected\:text-blue-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.ui-selected\:text-blue-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.ui-selected\:text-blue-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.ui-selected\:text-blue-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.ui-selected\:text-blue-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.ui-selected\:text-blue-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}.ui-selected\:text-cyan-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.ui-selected\:text-cyan-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}.ui-selected\:text-cyan-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}.ui-selected\:text-cyan-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.ui-selected\:text-cyan-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}.ui-selected\:text-cyan-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.ui-selected\:text-cyan-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.ui-selected\:text-cyan-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.ui-selected\:text-cyan-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}.ui-selected\:text-cyan-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}.ui-selected\:text-cyan-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}.ui-selected\:text-dark-tremor-brand[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.ui-selected\:text-emerald-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.ui-selected\:text-emerald-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}.ui-selected\:text-emerald-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.ui-selected\:text-emerald-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.ui-selected\:text-emerald-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}.ui-selected\:text-emerald-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.ui-selected\:text-emerald-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.ui-selected\:text-emerald-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.ui-selected\:text-emerald-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.ui-selected\:text-emerald-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}.ui-selected\:text-emerald-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}.ui-selected\:text-fuchsia-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}.ui-selected\:text-gray-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.ui-selected\:text-gray-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.ui-selected\:text-gray-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.ui-selected\:text-gray-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.ui-selected\:text-gray-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}.ui-selected\:text-gray-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.ui-selected\:text-gray-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.ui-selected\:text-gray-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.ui-selected\:text-gray-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.ui-selected\:text-gray-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.ui-selected\:text-gray-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}.ui-selected\:text-green-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}.ui-selected\:text-green-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.ui-selected\:text-green-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}.ui-selected\:text-green-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.ui-selected\:text-green-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}.ui-selected\:text-green-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.ui-selected\:text-green-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.ui-selected\:text-green-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.ui-selected\:text-green-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.ui-selected\:text-green-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}.ui-selected\:text-green-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}.ui-selected\:text-indigo-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}.ui-selected\:text-indigo-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.ui-selected\:text-indigo-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.ui-selected\:text-indigo-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.ui-selected\:text-indigo-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}.ui-selected\:text-indigo-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.ui-selected\:text-indigo-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.ui-selected\:text-indigo-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.ui-selected\:text-indigo-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.ui-selected\:text-indigo-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.ui-selected\:text-indigo-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}.ui-selected\:text-lime-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}.ui-selected\:text-lime-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}.ui-selected\:text-lime-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}.ui-selected\:text-lime-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}.ui-selected\:text-lime-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}.ui-selected\:text-lime-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}.ui-selected\:text-lime-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}.ui-selected\:text-lime-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}.ui-selected\:text-lime-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}.ui-selected\:text-lime-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}.ui-selected\:text-lime-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}.ui-selected\:text-neutral-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.ui-selected\:text-neutral-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.ui-selected\:text-neutral-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.ui-selected\:text-neutral-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.ui-selected\:text-neutral-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.ui-selected\:text-neutral-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.ui-selected\:text-neutral-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.ui-selected\:text-neutral-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.ui-selected\:text-neutral-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.ui-selected\:text-neutral-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.ui-selected\:text-neutral-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}.ui-selected\:text-orange-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}.ui-selected\:text-orange-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.ui-selected\:text-orange-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.ui-selected\:text-orange-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.ui-selected\:text-orange-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}.ui-selected\:text-orange-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.ui-selected\:text-orange-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.ui-selected\:text-orange-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.ui-selected\:text-orange-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.ui-selected\:text-orange-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}.ui-selected\:text-orange-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}.ui-selected\:text-pink-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}.ui-selected\:text-pink-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.ui-selected\:text-pink-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}.ui-selected\:text-pink-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}.ui-selected\:text-pink-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}.ui-selected\:text-pink-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.ui-selected\:text-pink-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.ui-selected\:text-pink-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}.ui-selected\:text-pink-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.ui-selected\:text-pink-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}.ui-selected\:text-pink-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}.ui-selected\:text-purple-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}.ui-selected\:text-purple-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}.ui-selected\:text-purple-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.ui-selected\:text-purple-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}.ui-selected\:text-purple-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}.ui-selected\:text-purple-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.ui-selected\:text-purple-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.ui-selected\:text-purple-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.ui-selected\:text-purple-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.ui-selected\:text-purple-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}.ui-selected\:text-purple-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}.ui-selected\:text-red-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}.ui-selected\:text-red-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.ui-selected\:text-red-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.ui-selected\:text-red-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.ui-selected\:text-red-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.ui-selected\:text-red-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.ui-selected\:text-red-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.ui-selected\:text-red-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.ui-selected\:text-red-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.ui-selected\:text-red-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.ui-selected\:text-red-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}.ui-selected\:text-rose-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.ui-selected\:text-rose-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}.ui-selected\:text-rose-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.ui-selected\:text-rose-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.ui-selected\:text-rose-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}.ui-selected\:text-rose-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.ui-selected\:text-rose-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.ui-selected\:text-rose-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.ui-selected\:text-rose-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.ui-selected\:text-rose-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.ui-selected\:text-rose-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}.ui-selected\:text-sky-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.ui-selected\:text-sky-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.ui-selected\:text-sky-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.ui-selected\:text-sky-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.ui-selected\:text-sky-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}.ui-selected\:text-sky-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.ui-selected\:text-sky-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.ui-selected\:text-sky-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.ui-selected\:text-sky-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.ui-selected\:text-sky-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}.ui-selected\:text-sky-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}.ui-selected\:text-slate-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.ui-selected\:text-slate-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.ui-selected\:text-slate-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.ui-selected\:text-slate-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.ui-selected\:text-slate-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.ui-selected\:text-slate-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.ui-selected\:text-slate-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.ui-selected\:text-slate-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.ui-selected\:text-slate-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.ui-selected\:text-slate-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.ui-selected\:text-slate-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.ui-selected\:text-stone-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}.ui-selected\:text-stone-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}.ui-selected\:text-stone-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}.ui-selected\:text-stone-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.ui-selected\:text-stone-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}.ui-selected\:text-stone-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.ui-selected\:text-stone-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.ui-selected\:text-stone-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}.ui-selected\:text-stone-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}.ui-selected\:text-stone-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}.ui-selected\:text-stone-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}.ui-selected\:text-teal-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}.ui-selected\:text-teal-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.ui-selected\:text-teal-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}.ui-selected\:text-teal-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}.ui-selected\:text-teal-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}.ui-selected\:text-teal-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}.ui-selected\:text-teal-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.ui-selected\:text-teal-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.ui-selected\:text-teal-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.ui-selected\:text-teal-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}.ui-selected\:text-teal-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}.ui-selected\:text-tremor-brand[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.ui-selected\:text-tremor-content-emphasis[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.ui-selected\:text-tremor-content-strong[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.ui-selected\:text-violet-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}.ui-selected\:text-violet-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.ui-selected\:text-violet-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.ui-selected\:text-violet-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.ui-selected\:text-violet-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}.ui-selected\:text-violet-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.ui-selected\:text-violet-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.ui-selected\:text-violet-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.ui-selected\:text-violet-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}.ui-selected\:text-violet-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}.ui-selected\:text-violet-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}.ui-selected\:text-yellow-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}.ui-selected\:text-yellow-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}.ui-selected\:text-yellow-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.ui-selected\:text-yellow-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.ui-selected\:text-yellow-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}.ui-selected\:text-yellow-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.ui-selected\:text-yellow-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.ui-selected\:text-yellow-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.ui-selected\:text-yellow-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.ui-selected\:text-yellow-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}.ui-selected\:text-yellow-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}.ui-selected\:text-zinc-100[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.ui-selected\:text-zinc-200[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.ui-selected\:text-zinc-300[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.ui-selected\:text-zinc-400[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.ui-selected\:text-zinc-50[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.ui-selected\:text-zinc-500[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.ui-selected\:text-zinc-600[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.ui-selected\:text-zinc-700[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.ui-selected\:text-zinc-800[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.ui-selected\:text-zinc-900[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.ui-selected\:text-zinc-950[data-headlessui-state~=selected]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}.ui-selected\:shadow-tremor-input[data-headlessui-state~=selected]{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:where([data-headlessui-state~=selected]) .ui-selected\:border-b-2{border-bottom-width:2px}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-100{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-50{--tw-border-opacity:1;border-color:rgb(255 251 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-600{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-700{--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-800{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-amber-950{--tw-border-opacity:1;border-color:rgb(69 26 3/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-50{--tw-border-opacity:1;border-color:rgb(239 246 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-700{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-blue-950{--tw-border-opacity:1;border-color:rgb(23 37 84/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-100{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-200{--tw-border-opacity:1;border-color:rgb(165 243 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-300{--tw-border-opacity:1;border-color:rgb(103 232 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-400{--tw-border-opacity:1;border-color:rgb(34 211 238/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-50{--tw-border-opacity:1;border-color:rgb(236 254 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-500{--tw-border-opacity:1;border-color:rgb(6 182 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-600{--tw-border-opacity:1;border-color:rgb(8 145 178/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-700{--tw-border-opacity:1;border-color:rgb(14 116 144/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-800{--tw-border-opacity:1;border-color:rgb(21 94 117/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-900{--tw-border-opacity:1;border-color:rgb(22 78 99/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-cyan-950{--tw-border-opacity:1;border-color:rgb(8 51 68/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-100{--tw-border-opacity:1;border-color:rgb(209 250 229/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-400{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-50{--tw-border-opacity:1;border-color:rgb(236 253 245/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-600{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-700{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-800{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-900{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-emerald-950{--tw-border-opacity:1;border-color:rgb(2 44 34/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-100{--tw-border-opacity:1;border-color:rgb(250 232 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-200{--tw-border-opacity:1;border-color:rgb(245 208 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-300{--tw-border-opacity:1;border-color:rgb(240 171 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-400{--tw-border-opacity:1;border-color:rgb(232 121 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-50{--tw-border-opacity:1;border-color:rgb(253 244 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-500{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-600{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-700{--tw-border-opacity:1;border-color:rgb(162 28 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-800{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-900{--tw-border-opacity:1;border-color:rgb(112 26 117/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-fuchsia-950{--tw-border-opacity:1;border-color:rgb(74 4 78/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-50{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-gray-950{--tw-border-opacity:1;border-color:rgb(3 7 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-100{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-50{--tw-border-opacity:1;border-color:rgb(240 253 244/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-700{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-green-950{--tw-border-opacity:1;border-color:rgb(5 46 22/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-100{--tw-border-opacity:1;border-color:rgb(224 231 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-200{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-300{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-400{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-50{--tw-border-opacity:1;border-color:rgb(238 242 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-500{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-700{--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-800{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-900{--tw-border-opacity:1;border-color:rgb(49 46 129/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-indigo-950{--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-100{--tw-border-opacity:1;border-color:rgb(236 252 203/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-200{--tw-border-opacity:1;border-color:rgb(217 249 157/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-300{--tw-border-opacity:1;border-color:rgb(190 242 100/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-400{--tw-border-opacity:1;border-color:rgb(163 230 53/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-50{--tw-border-opacity:1;border-color:rgb(247 254 231/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-500{--tw-border-opacity:1;border-color:rgb(132 204 22/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-600{--tw-border-opacity:1;border-color:rgb(101 163 13/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-700{--tw-border-opacity:1;border-color:rgb(77 124 15/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-800{--tw-border-opacity:1;border-color:rgb(63 98 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-900{--tw-border-opacity:1;border-color:rgb(54 83 20/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-lime-950{--tw-border-opacity:1;border-color:rgb(26 46 5/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-100{--tw-border-opacity:1;border-color:rgb(245 245 245/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-300{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-400{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-500{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-600{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-700{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-800{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-900{--tw-border-opacity:1;border-color:rgb(23 23 23/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-neutral-950{--tw-border-opacity:1;border-color:rgb(10 10 10/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-50{--tw-border-opacity:1;border-color:rgb(255 247 237/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-600{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-700{--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-orange-950{--tw-border-opacity:1;border-color:rgb(67 20 7/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-100{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-200{--tw-border-opacity:1;border-color:rgb(251 207 232/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-300{--tw-border-opacity:1;border-color:rgb(249 168 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-400{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-50{--tw-border-opacity:1;border-color:rgb(253 242 248/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-500{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-600{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-700{--tw-border-opacity:1;border-color:rgb(190 24 93/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-800{--tw-border-opacity:1;border-color:rgb(157 23 77/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-900{--tw-border-opacity:1;border-color:rgb(131 24 67/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-pink-950{--tw-border-opacity:1;border-color:rgb(80 7 36/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-100{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-300{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-400{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-50{--tw-border-opacity:1;border-color:rgb(250 245 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-500{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-600{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-700{--tw-border-opacity:1;border-color:rgb(126 34 206/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-purple-950{--tw-border-opacity:1;border-color:rgb(59 7 100/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-50{--tw-border-opacity:1;border-color:rgb(254 242 242/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-700{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-red-950{--tw-border-opacity:1;border-color:rgb(69 10 10/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-100{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-200{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-300{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-400{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-50{--tw-border-opacity:1;border-color:rgb(255 241 242/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-500{--tw-border-opacity:1;border-color:rgb(244 63 94/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-600{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-700{--tw-border-opacity:1;border-color:rgb(190 18 60/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-800{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-900{--tw-border-opacity:1;border-color:rgb(136 19 55/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-rose-950{--tw-border-opacity:1;border-color:rgb(76 5 25/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-100{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-300{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-400{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-50{--tw-border-opacity:1;border-color:rgb(240 249 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-700{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-sky-950{--tw-border-opacity:1;border-color:rgb(8 47 73/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-400{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-50{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-900{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-slate-950{--tw-border-opacity:1;border-color:rgb(2 6 23/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-100{--tw-border-opacity:1;border-color:rgb(245 245 244/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-200{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-300{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-400{--tw-border-opacity:1;border-color:rgb(168 162 158/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-50{--tw-border-opacity:1;border-color:rgb(250 250 249/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-500{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-600{--tw-border-opacity:1;border-color:rgb(87 83 78/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-700{--tw-border-opacity:1;border-color:rgb(68 64 60/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-800{--tw-border-opacity:1;border-color:rgb(41 37 36/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-900{--tw-border-opacity:1;border-color:rgb(28 25 23/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-stone-950{--tw-border-opacity:1;border-color:rgb(12 10 9/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-100{--tw-border-opacity:1;border-color:rgb(204 251 241/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-200{--tw-border-opacity:1;border-color:rgb(153 246 228/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-300{--tw-border-opacity:1;border-color:rgb(94 234 212/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-400{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-50{--tw-border-opacity:1;border-color:rgb(240 253 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-500{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-600{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-700{--tw-border-opacity:1;border-color:rgb(15 118 110/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-800{--tw-border-opacity:1;border-color:rgb(17 94 89/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-900{--tw-border-opacity:1;border-color:rgb(19 78 74/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-teal-950{--tw-border-opacity:1;border-color:rgb(4 47 46/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-tremor-border{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-tremor-brand{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-100{--tw-border-opacity:1;border-color:rgb(237 233 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-200{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-300{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-400{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-50{--tw-border-opacity:1;border-color:rgb(245 243 255/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-500{--tw-border-opacity:1;border-color:rgb(139 92 246/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-600{--tw-border-opacity:1;border-color:rgb(124 58 237/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-700{--tw-border-opacity:1;border-color:rgb(109 40 217/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-800{--tw-border-opacity:1;border-color:rgb(91 33 182/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-900{--tw-border-opacity:1;border-color:rgb(76 29 149/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-violet-950{--tw-border-opacity:1;border-color:rgb(46 16 101/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-100{--tw-border-opacity:1;border-color:rgb(254 249 195/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-50{--tw-border-opacity:1;border-color:rgb(254 252 232/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-600{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-700{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-800{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-900{--tw-border-opacity:1;border-color:rgb(113 63 18/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-yellow-950{--tw-border-opacity:1;border-color:rgb(66 32 6/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-100{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-400{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-50{--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-500{--tw-border-opacity:1;border-color:rgb(113 113 122/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:border-zinc-950{--tw-border-opacity:1;border-color:rgb(9 9 11/var(--tw-border-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-200{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-300{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-700{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-800{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-200{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-300{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-700{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-800{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-200{--tw-bg-opacity:1;background-color:rgb(165 243 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-300{--tw-bg-opacity:1;background-color:rgb(103 232 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-400{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-50{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-600{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-700{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-800{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-900{--tw-bg-opacity:1;background-color:rgb(22 78 99/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-cyan-950{--tw-bg-opacity:1;background-color:rgb(8 51 68/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-200{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-300{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-800{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-900{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-emerald-950{--tw-bg-opacity:1;background-color:rgb(2 44 34/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-100{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-200{--tw-bg-opacity:1;background-color:rgb(245 208 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-300{--tw-bg-opacity:1;background-color:rgb(240 171 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-400{--tw-bg-opacity:1;background-color:rgb(232 121 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-50{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-500{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-600{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-700{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-800{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-900{--tw-bg-opacity:1;background-color:rgb(112 26 117/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-fuchsia-950{--tw-bg-opacity:1;background-color:rgb(74 4 78/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-300{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-800{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-200{--tw-bg-opacity:1;background-color:rgb(199 210 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-300{--tw-bg-opacity:1;background-color:rgb(165 180 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-400{--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-700{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-800{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-900{--tw-bg-opacity:1;background-color:rgb(49 46 129/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-indigo-950{--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-100{--tw-bg-opacity:1;background-color:rgb(236 252 203/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-200{--tw-bg-opacity:1;background-color:rgb(217 249 157/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-300{--tw-bg-opacity:1;background-color:rgb(190 242 100/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-400{--tw-bg-opacity:1;background-color:rgb(163 230 53/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-50{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-500{--tw-bg-opacity:1;background-color:rgb(132 204 22/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-700{--tw-bg-opacity:1;background-color:rgb(77 124 15/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-800{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-900{--tw-bg-opacity:1;background-color:rgb(54 83 20/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-lime-950{--tw-bg-opacity:1;background-color:rgb(26 46 5/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-200{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-300{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-400{--tw-bg-opacity:1;background-color:rgb(163 163 163/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-500{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-600{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-neutral-950{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-300{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-300{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-400{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-500{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-700{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-800{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-900{--tw-bg-opacity:1;background-color:rgb(131 24 67/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-pink-950{--tw-bg-opacity:1;background-color:rgb(80 7 36/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-300{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-400{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-800{--tw-bg-opacity:1;background-color:rgb(107 33 168/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-300{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-800{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-100{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-200{--tw-bg-opacity:1;background-color:rgb(254 205 211/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-300{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-400{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-50{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-700{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-800{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-900{--tw-bg-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-rose-950{--tw-bg-opacity:1;background-color:rgb(76 5 25/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-200{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-400{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-700{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-800{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-900{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-100{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-200{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-300{--tw-bg-opacity:1;background-color:rgb(214 211 209/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-400{--tw-bg-opacity:1;background-color:rgb(168 162 158/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-50{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-500{--tw-bg-opacity:1;background-color:rgb(120 113 108/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-600{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-700{--tw-bg-opacity:1;background-color:rgb(68 64 60/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-800{--tw-bg-opacity:1;background-color:rgb(41 37 36/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-900{--tw-bg-opacity:1;background-color:rgb(28 25 23/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-stone-950{--tw-bg-opacity:1;background-color:rgb(12 10 9/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-100{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-200{--tw-bg-opacity:1;background-color:rgb(153 246 228/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-300{--tw-bg-opacity:1;background-color:rgb(94 234 212/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-400{--tw-bg-opacity:1;background-color:rgb(45 212 191/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-50{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-800{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-900{--tw-bg-opacity:1;background-color:rgb(19 78 74/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-teal-950{--tw-bg-opacity:1;background-color:rgb(4 47 46/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-tremor-background{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-tremor-background-muted{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-200{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-300{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-400{--tw-bg-opacity:1;background-color:rgb(167 139 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-500{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-700{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-800{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-900{--tw-bg-opacity:1;background-color:rgb(76 29 149/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-violet-950{--tw-bg-opacity:1;background-color:rgb(46 16 101/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-300{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-700{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-800{--tw-bg-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-yellow-950{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-300{--tw-bg-opacity:1;background-color:rgb(212 212 216/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-400{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-500{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-600{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:bg-zinc-950{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-50{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-amber-950{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-50{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-blue-950{--tw-text-opacity:1;color:rgb(23 37 84/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-100{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-200{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-300{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-50{--tw-text-opacity:1;color:rgb(236 254 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-800{--tw-text-opacity:1;color:rgb(21 94 117/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-900{--tw-text-opacity:1;color:rgb(22 78 99/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-cyan-950{--tw-text-opacity:1;color:rgb(8 51 68/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-dark-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-100{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-200{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-50{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-900{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-emerald-950{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-100{--tw-text-opacity:1;color:rgb(250 232 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-200{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-300{--tw-text-opacity:1;color:rgb(240 171 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-400{--tw-text-opacity:1;color:rgb(232 121 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-50{--tw-text-opacity:1;color:rgb(253 244 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-500{--tw-text-opacity:1;color:rgb(217 70 239/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-600{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-700{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-800{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-900{--tw-text-opacity:1;color:rgb(112 26 117/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-fuchsia-950{--tw-text-opacity:1;color:rgb(74 4 78/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-gray-950{--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-100{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-50{--tw-text-opacity:1;color:rgb(240 253 244/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-green-950{--tw-text-opacity:1;color:rgb(5 46 22/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-100{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-200{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-300{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-50{--tw-text-opacity:1;color:rgb(238 242 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-900{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-indigo-950{--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-100{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-200{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-300{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-400{--tw-text-opacity:1;color:rgb(163 230 53/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-50{--tw-text-opacity:1;color:rgb(247 254 231/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-500{--tw-text-opacity:1;color:rgb(132 204 22/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-600{--tw-text-opacity:1;color:rgb(101 163 13/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-700{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-800{--tw-text-opacity:1;color:rgb(63 98 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-900{--tw-text-opacity:1;color:rgb(54 83 20/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-lime-950{--tw-text-opacity:1;color:rgb(26 46 5/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-100{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-300{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-700{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-800{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-50{--tw-text-opacity:1;color:rgb(255 247 237/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-900{--tw-text-opacity:1;color:rgb(124 45 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-orange-950{--tw-text-opacity:1;color:rgb(67 20 7/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-100{--tw-text-opacity:1;color:rgb(252 231 243/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-200{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-300{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-400{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-50{--tw-text-opacity:1;color:rgb(253 242 248/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-600{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-700{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-800{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-900{--tw-text-opacity:1;color:rgb(131 24 67/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-pink-950{--tw-text-opacity:1;color:rgb(80 7 36/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-100{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-50{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-900{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-purple-950{--tw-text-opacity:1;color:rgb(59 7 100/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-50{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-red-950{--tw-text-opacity:1;color:rgb(69 10 10/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-100{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-200{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-50{--tw-text-opacity:1;color:rgb(255 241 242/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-800{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-900{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-rose-950{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-100{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-50{--tw-text-opacity:1;color:rgb(240 249 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-800{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-900{--tw-text-opacity:1;color:rgb(12 74 110/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-sky-950{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-50{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-slate-950{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-100{--tw-text-opacity:1;color:rgb(245 245 244/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-200{--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-300{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-400{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-50{--tw-text-opacity:1;color:rgb(250 250 249/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-600{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-700{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-800{--tw-text-opacity:1;color:rgb(41 37 36/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-900{--tw-text-opacity:1;color:rgb(28 25 23/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-stone-950{--tw-text-opacity:1;color:rgb(12 10 9/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-100{--tw-text-opacity:1;color:rgb(204 251 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-200{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-300{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-400{--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-50{--tw-text-opacity:1;color:rgb(240 253 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-500{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-700{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-800{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-900{--tw-text-opacity:1;color:rgb(19 78 74/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-teal-950{--tw-text-opacity:1;color:rgb(4 47 46/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-tremor-brand{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-tremor-content-strong{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-100{--tw-text-opacity:1;color:rgb(237 233 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-200{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-50{--tw-text-opacity:1;color:rgb(245 243 255/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-600{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-700{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-800{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-900{--tw-text-opacity:1;color:rgb(76 29 149/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-violet-950{--tw-text-opacity:1;color:rgb(46 16 101/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-100{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-50{--tw-text-opacity:1;color:rgb(254 252 232/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-yellow-950{--tw-text-opacity:1;color:rgb(66 32 6/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-100{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity))}:where([data-headlessui-state~=selected]) .ui-selected\:shadow-tremor-input{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ui-active\:bg-tremor-background-muted[data-headlessui-state~=active]{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ui-active\:text-tremor-content-strong[data-headlessui-state~=active]{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:where([data-headlessui-state~=active]) .ui-active\:bg-tremor-background-muted{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}:where([data-headlessui-state~=active]) .ui-active\:text-tremor-content-strong{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}:is(.dark .dark\:divide-dark-tremor-border)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(55 65 81/var(--tw-divide-opacity))}:is(.dark .dark\:border-dark-tremor-background){--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-border){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand){--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand-emphasis){--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand-inverted){--tw-border-opacity:1;border-color:rgb(30 27 75/var(--tw-border-opacity))}:is(.dark .dark\:border-dark-tremor-brand-subtle){--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:is(.dark .dark\:bg-dark-tremor-background){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-background-emphasis){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-background-muted){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-background-subtle){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-border){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-brand){--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-brand-muted){--tw-bg-opacity:1;background-color:rgb(30 27 75/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-brand-muted\/70){background-color:rgba(30,27,75,.7)}:is(.dark .dark\:bg-dark-tremor-brand-subtle){--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}:is(.dark .dark\:bg-dark-tremor-content-subtle){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-950\/50){background-color:rgba(2,6,23,.5)}:is(.dark .dark\:bg-opacity-10){--tw-bg-opacity:0.1}:is(.dark .dark\:bg-opacity-25){--tw-bg-opacity:0.25}:is(.dark .dark\:bg-opacity-30){--tw-bg-opacity:0.3}:is(.dark .dark\:from-dark-tremor-background){--tw-gradient-from:#111827 var(--tw-gradient-from-position);--tw-gradient-to:rgba(17,24,39,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:is(.dark .dark\:to-dark-tremor-background){--tw-gradient-to:#111827 var(--tw-gradient-to-position)}:is(.dark .dark\:fill-dark-tremor-content){fill:#6b7280}:is(.dark .dark\:fill-dark-tremor-content-emphasis){fill:#e5e7eb}:is(.dark .dark\:stroke-dark-tremor-background){stroke:#111827}:is(.dark .dark\:stroke-dark-tremor-border){stroke:#374151}:is(.dark .dark\:stroke-dark-tremor-brand){stroke:#6366f1}:is(.dark .dark\:stroke-dark-tremor-brand-muted){stroke:#1e1b4b}:is(.dark .dark\:text-dark-tremor-brand){--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-brand-emphasis){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-brand-inverted){--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content-emphasis){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content-strong){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark .dark\:text-dark-tremor-content-subtle){--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:accent-dark-tremor-brand){accent-color:#6366f1}:is(.dark .dark\:opacity-25){opacity:.25}:is(.dark .dark\:shadow-dark-tremor-card){--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:shadow-dark-tremor-dropdown){--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:shadow-dark-tremor-input){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:outline-dark-tremor-brand){outline-color:#6366f1}:is(.dark .dark\:ring-dark-tremor-brand-inverted){--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .dark\:ring-dark-tremor-brand-muted){--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .dark\:ring-dark-tremor-ring){--tw-ring-opacity:1;--tw-ring-color:rgb(31 41 55/var(--tw-ring-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content)::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content)::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content-subtle)::-moz-placeholder{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-dark-tremor-content-subtle)::placeholder{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content)::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content)::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content-subtle)::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-tremor-content-subtle)::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\:hover\:border-dark-tremor-brand-emphasis:hover){--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity))}:is(.dark .dark\:hover\:border-dark-tremor-content-emphasis:hover){--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-background-muted:hover){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-background-subtle:hover){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-brand-emphasis:hover){--tw-bg-opacity:1;background-color:rgb(129 140 248/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-dark-tremor-brand-faint:hover){--tw-bg-opacity:1;background-color:rgb(11 18 41/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-opacity-20:hover){--tw-bg-opacity:0.2}:is(.dark .dark\:hover\:text-dark-tremor-brand-emphasis:hover){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-dark-tremor-content:hover){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-dark-tremor-content-emphasis:hover){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-tremor-content:hover){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-tremor-content-emphasis:hover){--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}:is(.dark .hover\:dark\:text-dark-tremor-content):hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}:is(.dark .dark\:focus\:border-dark-tremor-brand-subtle:focus){--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:is(.dark .focus\:dark\:border-dark-tremor-brand-subtle):focus{--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity))}:is(.dark .dark\:focus\:ring-dark-tremor-brand-muted:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .focus\:dark\:ring-dark-tremor-brand-muted):focus{--tw-ring-opacity:1;--tw-ring-color:rgb(30 27 75/var(--tw-ring-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-dark-tremor-content-emphasis){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .aria-selected\:dark\:\!bg-dark-tremor-background-subtle)[aria-selected=true]{--tw-bg-opacity:1!important;background-color:rgb(31 41 55/var(--tw-bg-opacity))!important}:is(.dark .dark\:aria-selected\:bg-dark-tremor-background-emphasis[aria-selected=true]){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}:is(.dark .dark\:aria-selected\:text-dark-tremor-brand-inverted[aria-selected=true]){--tw-text-opacity:1;color:rgb(30 27 75/var(--tw-text-opacity))}:is(.dark .dark\:aria-selected\:text-dark-tremor-content-inverted[aria-selected=true]){--tw-text-opacity:1;color:rgb(3 7 18/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:border-dark-tremor-border[data-headlessui-state~=selected]){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\:ui-selected\:border-dark-tremor-brand[data-headlessui-state~=selected]){--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:is(.dark .dark\:ui-selected\:bg-dark-tremor-background[data-headlessui-state~=selected]){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\:ui-selected\:bg-dark-tremor-background-muted[data-headlessui-state~=selected]){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:ui-selected\:text-dark-tremor-brand[data-headlessui-state~=selected]){--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:text-dark-tremor-content-emphasis[data-headlessui-state~=selected]){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:text-dark-tremor-content-strong[data-headlessui-state~=selected]){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark .dark\:ui-selected\:shadow-dark-tremor-input[data-headlessui-state~=selected]){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:border-dark-tremor-border){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:border-dark-tremor-brand){--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:bg-dark-tremor-background){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:bg-dark-tremor-background-muted){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:text-dark-tremor-brand){--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:text-dark-tremor-content-emphasis){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:text-dark-tremor-content-strong){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=selected]) .dark\:ui-selected\:shadow-dark-tremor-input){--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:ui-active\:bg-dark-tremor-background-muted[data-headlessui-state~=active]){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark .dark\:ui-active\:text-dark-tremor-content-strong[data-headlessui-state~=active]){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}:is(.dark :where([data-headlessui-state~=active]) .dark\:ui-active\:bg-dark-tremor-background-muted){--tw-bg-opacity:1;background-color:rgb(19 26 43/var(--tw-bg-opacity))}:is(.dark :where([data-headlessui-state~=active]) .dark\:ui-active\:text-dark-tremor-content-strong){--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}@media (min-width:640px){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-10{grid-column:span 10/span 10}.sm\:col-span-11{grid-column:span 11/span 11}.sm\:col-span-12{grid-column:span 12/span 12}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:col-span-4{grid-column:span 4/span 4}.sm\:col-span-5{grid-column:span 5/span 5}.sm\:col-span-6{grid-column:span 6/span 6}.sm\:col-span-7{grid-column:span 7/span 7}.sm\:col-span-8{grid-column:span 8/span 8}.sm\:col-span-9{grid-column:span 9/span 9}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:mb-0{margin-bottom:0}.sm\:ml-4{margin-left:1rem}.sm\:mt-0{margin-top:0}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:h-screen{height:100vh}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.sm\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.sm\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.sm\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.sm\:grid-cols-none{grid-template-columns:none}.sm\:flex-row{flex-direction:row}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}}@media (min-width:768px){.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-10{grid-column:span 10/span 10}.md\:col-span-11{grid-column:span 11/span 11}.md\:col-span-12{grid-column:span 12/span 12}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-5{grid-column:span 5/span 5}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-7{grid-column:span 7/span 7}.md\:col-span-8{grid-column:span 8/span 8}.md\:col-span-9{grid-column:span 9/span 9}.md\:table-cell{display:table-cell}.md\:hidden{display:none}.md\:w-auto{width:auto}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.md\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:grid-cols-none{grid-template-columns:none}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}}@media (min-width:1024px){.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-10{grid-column:span 10/span 10}.lg\:col-span-11{grid-column:span 11/span 11}.lg\:col-span-12{grid-column:span 12/span 12}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:inline{display:inline}.lg\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:max-w-\[200px\]{max-width:200px}.lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.lg\:grid-cols-none{grid-template-columns:none}}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button,.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&_td\]\:py-0\.5 td{padding-top:.125rem;padding-bottom:.125rem}.\[\&_td\]\:py-2 td{padding-top:.5rem;padding-bottom:.5rem}.\[\&_th\]\:py-1 th{padding-top:.25rem;padding-bottom:.25rem}.\[\&_th\]\:py-2 th{padding-top:.5rem;padding-bottom:.5rem} \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/index.html b/litellm/proxy/_experimental/out/index.html index 0a970c2d6ad..d77299d871b 100644 --- a/litellm/proxy/_experimental/out/index.html +++ b/litellm/proxy/_experimental/out/index.html @@ -1 +1 @@ -LiteLLM Dashboard \ No newline at end of file +LiteLLM Dashboard \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/index.txt b/litellm/proxy/_experimental/out/index.txt index 3288a7b5793..030e7eb39f3 100644 --- a/litellm/proxy/_experimental/out/index.txt +++ b/litellm/proxy/_experimental/out/index.txt @@ -1,7 +1,7 @@ 2:I[19107,[],"ClientPageRoot"] -3:I[98412,["665","static/chunks/3014691f-b7b79b78e27792f3.js","990","static/chunks/13b76428-ebdf3012af0e4489.js","50","static/chunks/50-fe160ecfa8bc4059.js","521","static/chunks/521-d97d355792d44830.js","866","static/chunks/866-9e1803a09e9ae8da.js","313","static/chunks/313-0025fb08e386c4b8.js","49","static/chunks/49-0e15a7b701ab2b73.js","162","static/chunks/162-b79fa8ec9408cd55.js","851","static/chunks/851-7416960163d4d982.js","931","static/chunks/app/page-a5ca703846f872ee.js"],"default",1] +3:I[98412,["665","static/chunks/3014691f-b7b79b78e27792f3.js","990","static/chunks/13b76428-ebdf3012af0e4489.js","50","static/chunks/50-d0da2dd7acce2eb9.js","521","static/chunks/521-d97d355792d44830.js","866","static/chunks/866-9e1803a09e9ae8da.js","313","static/chunks/313-0025fb08e386c4b8.js","49","static/chunks/49-036448f42c39b97c.js","162","static/chunks/162-b79fa8ec9408cd55.js","851","static/chunks/851-7416960163d4d982.js","931","static/chunks/app/page-570a9fabe3b6be98.js"],"default",1] 4:I[4707,[],""] 5:I[36423,[],""] -0:["677L3MDatvUz5h5yJedbt",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/ec98fed1bdd650b4.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +0:["0NP4pGCTzzyECenXO-S3V",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/a94bb091dba1d4f2.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"LiteLLM Dashboard"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","link","5",{"rel":"icon","href":"./favicon.ico"}],["$","meta","6",{"name":"next-size-adjust"}]] 1:null diff --git a/litellm/proxy/_experimental/out/model_hub.txt b/litellm/proxy/_experimental/out/model_hub.txt index af6e1df67a9..20b54151700 100644 --- a/litellm/proxy/_experimental/out/model_hub.txt +++ b/litellm/proxy/_experimental/out/model_hub.txt @@ -1,7 +1,7 @@ 2:I[19107,[],"ClientPageRoot"] -3:I[52829,["50","static/chunks/50-fe160ecfa8bc4059.js","521","static/chunks/521-d97d355792d44830.js","49","static/chunks/49-0e15a7b701ab2b73.js","162","static/chunks/162-b79fa8ec9408cd55.js","418","static/chunks/app/model_hub/page-0517a053ea1a258a.js"],"default",1] +3:I[52829,["50","static/chunks/50-d0da2dd7acce2eb9.js","521","static/chunks/521-d97d355792d44830.js","49","static/chunks/49-036448f42c39b97c.js","162","static/chunks/162-b79fa8ec9408cd55.js","418","static/chunks/app/model_hub/page-d7915f579b770030.js"],"default",1] 4:I[4707,[],""] 5:I[36423,[],""] -0:["677L3MDatvUz5h5yJedbt",[[["",{"children":["model_hub",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["model_hub",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","model_hub","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/ec98fed1bdd650b4.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +0:["0NP4pGCTzzyECenXO-S3V",[[["",{"children":["model_hub",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["model_hub",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","model_hub","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/a94bb091dba1d4f2.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"LiteLLM Dashboard"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","link","5",{"rel":"icon","href":"./favicon.ico"}],["$","meta","6",{"name":"next-size-adjust"}]] 1:null diff --git a/litellm/proxy/_experimental/out/model_hub_table.html b/litellm/proxy/_experimental/out/model_hub_table.html index 10fb1af3fcc..57266e7ee80 100644 --- a/litellm/proxy/_experimental/out/model_hub_table.html +++ b/litellm/proxy/_experimental/out/model_hub_table.html @@ -1 +1 @@ -LiteLLM Dashboard \ No newline at end of file +LiteLLM Dashboard \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/model_hub_table.txt b/litellm/proxy/_experimental/out/model_hub_table.txt index 990edafa29f..7deea0e0cef 100644 --- a/litellm/proxy/_experimental/out/model_hub_table.txt +++ b/litellm/proxy/_experimental/out/model_hub_table.txt @@ -1,7 +1,7 @@ 2:I[19107,[],"ClientPageRoot"] -3:I[22775,["50","static/chunks/50-fe160ecfa8bc4059.js","521","static/chunks/521-d97d355792d44830.js","866","static/chunks/866-9e1803a09e9ae8da.js","49","static/chunks/49-0e15a7b701ab2b73.js","162","static/chunks/162-b79fa8ec9408cd55.js","851","static/chunks/851-7416960163d4d982.js","25","static/chunks/app/model_hub_table/page-c69f5ef890b4b0dc.js"],"default",1] +3:I[22775,["50","static/chunks/50-d0da2dd7acce2eb9.js","521","static/chunks/521-d97d355792d44830.js","866","static/chunks/866-9e1803a09e9ae8da.js","49","static/chunks/49-036448f42c39b97c.js","162","static/chunks/162-b79fa8ec9408cd55.js","851","static/chunks/851-7416960163d4d982.js","25","static/chunks/app/model_hub_table/page-2f23c22a47b20607.js"],"default",1] 4:I[4707,[],""] 5:I[36423,[],""] -0:["677L3MDatvUz5h5yJedbt",[[["",{"children":["model_hub_table",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["model_hub_table",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","model_hub_table","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/ec98fed1bdd650b4.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +0:["0NP4pGCTzzyECenXO-S3V",[[["",{"children":["model_hub_table",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["model_hub_table",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","model_hub_table","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/a94bb091dba1d4f2.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"LiteLLM Dashboard"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","link","5",{"rel":"icon","href":"./favicon.ico"}],["$","meta","6",{"name":"next-size-adjust"}]] 1:null diff --git a/litellm/proxy/_experimental/out/onboarding.html b/litellm/proxy/_experimental/out/onboarding.html index 2cb9c0d1f36..04c6c886768 100644 --- a/litellm/proxy/_experimental/out/onboarding.html +++ b/litellm/proxy/_experimental/out/onboarding.html @@ -1 +1 @@ -LiteLLM Dashboard \ No newline at end of file +LiteLLM Dashboard \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/onboarding.txt b/litellm/proxy/_experimental/out/onboarding.txt index 79bf5ce3e10..b2ac0b9b6ec 100644 --- a/litellm/proxy/_experimental/out/onboarding.txt +++ b/litellm/proxy/_experimental/out/onboarding.txt @@ -1,7 +1,7 @@ 2:I[19107,[],"ClientPageRoot"] -3:I[12011,["665","static/chunks/3014691f-b7b79b78e27792f3.js","50","static/chunks/50-fe160ecfa8bc4059.js","49","static/chunks/49-0e15a7b701ab2b73.js","461","static/chunks/app/onboarding/page-673bb6c3ebcd355a.js"],"default",1] +3:I[12011,["665","static/chunks/3014691f-b7b79b78e27792f3.js","50","static/chunks/50-d0da2dd7acce2eb9.js","49","static/chunks/49-036448f42c39b97c.js","461","static/chunks/app/onboarding/page-79017a4c39acd336.js"],"default",1] 4:I[4707,[],""] 5:I[36423,[],""] -0:["677L3MDatvUz5h5yJedbt",[[["",{"children":["onboarding",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["onboarding",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","onboarding","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/ec98fed1bdd650b4.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +0:["0NP4pGCTzzyECenXO-S3V",[[["",{"children":["onboarding",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["onboarding",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","onboarding","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/349654da14372cd9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/litellm-asset-prefix/_next/static/css/a94bb091dba1d4f2.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_1c856b","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"LiteLLM Dashboard"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","link","5",{"rel":"icon","href":"./favicon.ico"}],["$","meta","6",{"name":"next-size-adjust"}]] 1:null From 1579752e06c13ba37f43a2c01679149bca31bb4e Mon Sep 17 00:00:00 2001 From: Leslie Cheng Date: Tue, 7 Oct 2025 20:53:38 -0700 Subject: [PATCH 41/84] Implement fix --- .../adapters/streaming_iterator.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/litellm/llms/anthropic/experimental_pass_through/adapters/streaming_iterator.py b/litellm/llms/anthropic/experimental_pass_through/adapters/streaming_iterator.py index 306bcd9bb2c..bcfbee9fc31 100644 --- a/litellm/llms/anthropic/experimental_pass_through/adapters/streaming_iterator.py +++ b/litellm/llms/anthropic/experimental_pass_through/adapters/streaming_iterator.py @@ -7,7 +7,7 @@ from collections import deque from typing import TYPE_CHECKING, Any, AsyncIterator, Iterator, Literal, Optional from litellm import verbose_logger -from litellm.types.llms.anthropic import UsageDelta +from litellm.types.llms.anthropic import UsageDelta, ToolUseBlock from litellm.types.utils import AdapterCompletionStreamWrapper if TYPE_CHECKING: @@ -270,7 +270,6 @@ class AnthropicStreamWrapper(AdapterCompletionStreamWrapper): processed_chunk.get("delta", {}).get("stop_reason") is not None ): - self.holding_stop_reason_chunk = processed_chunk else: self.chunk_queue.append(processed_chunk) @@ -380,4 +379,11 @@ class AnthropicStreamWrapper(AdapterCompletionStreamWrapper): self.current_content_block_start = content_block_start return True + # For parallel tool calls, we'll necessarily have a new content block + # if we get a function name since it signals a new tool call + if block_type == "tool_use" and content_block_start.get("name"): + self.current_content_block_type = block_type + self.current_content_block_start = content_block_start + return True + return False From f0c9dfbaf8423b7814ed052f4d04ec99b6e6f1a4 Mon Sep 17 00:00:00 2001 From: Leslie Cheng Date: Tue, 7 Oct 2025 20:57:08 -0700 Subject: [PATCH 42/84] Add some tests --- .../messages/test_parallel_tool_calls.py | 315 ++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 tests/test_litellm/llms/anthropic/experimental_pass_through/messages/test_parallel_tool_calls.py diff --git a/tests/test_litellm/llms/anthropic/experimental_pass_through/messages/test_parallel_tool_calls.py b/tests/test_litellm/llms/anthropic/experimental_pass_through/messages/test_parallel_tool_calls.py new file mode 100644 index 00000000000..9d4e58f3c88 --- /dev/null +++ b/tests/test_litellm/llms/anthropic/experimental_pass_through/messages/test_parallel_tool_calls.py @@ -0,0 +1,315 @@ +import os +import sys +from typing import List + + +sys.path.insert(0, os.path.abspath("../../../../..")) + +from litellm.llms.anthropic.experimental_pass_through.adapters.streaming_iterator import ( + AnthropicStreamWrapper, +) +from litellm.types.utils import ( + Delta, + ModelResponse, + StreamingChoices, + Usage, + ChatCompletionDeltaToolCall, + Function, +) + + +class MockCompletionStream: + def __init__(self, responses: List[ModelResponse]): + self.responses = responses + self.index = 0 + + def __iter__(self): + return self + + def __next__(self): + if self.index >= len(self.responses): + raise StopIteration + response = self.responses[self.index] + self.index += 1 + return response + + def __aiter__(self): + return self + + async def __anext__(self): + if self.index >= len(self.responses): + raise StopAsyncIteration + response = self.responses[self.index] + self.index += 1 + return response + + +def construct_text_chunk(text: str) -> ModelResponse: + return ModelResponse( + stream=True, + choices=[ + StreamingChoices( + delta=Delta(content=text), + index=0, + finish_reason=None, + ) + ], + ) + + +def construct_split_tool_call( + id: str, function_name: str, function_arg_parts: List[str] +) -> List[ModelResponse]: + return [ + # https://platform.openai.com/docs/guides/function-calling#streaming + ModelResponse( + stream=True, + choices=[ + StreamingChoices( + delta=Delta( + tool_calls=[ + ChatCompletionDeltaToolCall( + id=id, + function=Function(arguments="", name=function_name), + index=0, + type="function", + ) + ] + ), + index=0, + finish_reason=None, + ) + ], + ), + *[ + ModelResponse( + stream=True, + choices=[ + StreamingChoices( + delta=Delta( + tool_calls=[ + ChatCompletionDeltaToolCall( + id=None, + function=Function(arguments=part, name=None), + index=0, + type=None, + ) + ] + ), + index=0, + finish_reason=None, + ) + ], + ) + for part in function_arg_parts + ], + ] + + +def test_anthropic_stream_wrapper_single_tool_call(): + responses = [ + *construct_split_tool_call("tooluse_foo", "get_weather", ['{"city":', '"NY"}']), + ModelResponse( + stream=True, + choices=[ + StreamingChoices( + delta=Delta(content="", stop_reason="tool_calls"), + index=0, + finish_reason="stop", + ) + ], + usage=Usage(prompt_tokens=230, completion_tokens=65, total_tokens=295), + ), + ] + + wrapper = AnthropicStreamWrapper( + completion_stream=MockCompletionStream(responses), + model="sonnet-4-5", + ) + + chunks = [] + chunk_types = [] + + # Collect all chunks + for chunk in wrapper: + chunks.append(chunk) + chunk_types.append(chunk.get("type")) + + # Verify the expected sequence of chunk types + expected_types = [ + "message_start", # Initial message start + # TODO: for future contributors: if the initial content_block_start + # respects the upstream's starting chunk, the initial empty text block + # should be removed (and this test should be updated accordingly) + # --------------------------------------------------------------------- + "content_block_start", # Initial empty text block start + "content_block_stop", # End of empty text block + # --------------------------------------------------------------------- + "content_block_start", # Start of first tool_use content block + "content_block_delta", # {"city": + "content_block_delta", # "NY"} + "content_block_stop", # End of first tool_use content block + "message_delta", # Stop reason with merged usage + "message_stop", # Final message stop + ] + + assert expected_types == chunk_types + + get_weather_calls = 0 + + for chunk in chunks: + if ( + chunk.get("type") == "content_block_start" + and chunk["content_block"]["type"] == "tool_use" + ): + if chunk["content_block"]["name"] == "get_weather": + get_weather_calls += 1 + + assert get_weather_calls == 1 + + +def test_anthropic_stream_wrapper_back_to_back_tool_calls(): + responses = [ + *construct_split_tool_call("tooluse_foo", "get_weather", ['{"city":', '"NY"}']), + *construct_split_tool_call("tooluse_bar", "get_weather", ['{"city":', '"SF"}']), + ModelResponse( + stream=True, + choices=[ + StreamingChoices( + delta=Delta(content="", stop_reason="tool_calls"), + index=0, + finish_reason="stop", + ) + ], + usage=Usage(prompt_tokens=230, completion_tokens=65, total_tokens=295), + ), + ] + + wrapper = AnthropicStreamWrapper( + completion_stream=MockCompletionStream(responses), + model="sonnet-4-5", + ) + + chunks = [] + chunk_types = [] + + # Collect all chunks + for chunk in wrapper: + chunks.append(chunk) + chunk_types.append(chunk.get("type")) + + # Verify the expected sequence of chunk types + expected_types = [ + "message_start", # Initial message start + # TODO: for future contributors: if the initial content_block_start + # respects the upstream's starting chunk, the initial empty text block + # should be removed (and this test should be updated accordingly) + # --------------------------------------------------------------------- + "content_block_start", # Initial empty text block start + "content_block_stop", # End of empty text block + # --------------------------------------------------------------------- + "content_block_start", # Start of first tool_use content block + "content_block_delta", # {"city": + "content_block_delta", # "NY"} + "content_block_stop", # End of first tool_use content block + "content_block_start", # Start of second tool_use content block + "content_block_delta", # {"city": + "content_block_delta", # " SF"} + "content_block_stop", # End of second tool_use content block + "message_delta", # Stop reason with merged usage + "message_stop", # Final message stop + ] + + assert expected_types == chunk_types + + get_weather_calls = 0 + + for chunk in chunks: + if ( + chunk.get("type") == "content_block_start" + and chunk["content_block"]["type"] == "tool_use" + ): + if chunk["content_block"]["name"] == "get_weather": + get_weather_calls += 1 + + assert get_weather_calls == 2 + + +def test_anthropic_stream_wrapper_interleaved_tool_calls_and_text(): + responses = [ + *construct_split_tool_call("tooluse_foo", "get_weather", ['{"city":', '"NY"}']), + construct_text_chunk("The weather is nice today."), + *construct_split_tool_call("tooluse_bar", "get_weather", ['{"city":', '"SF"}']), + *construct_split_tool_call( + "tooluse_bar", "get_weather", ['{"city":', '"CHI"}'] + ), + construct_text_chunk("The weather is not so nice today."), + ModelResponse( + stream=True, + choices=[ + StreamingChoices( + delta=Delta(content="", stop_reason="tool_calls"), + index=0, + finish_reason="stop", + ) + ], + usage=Usage(prompt_tokens=230, completion_tokens=65, total_tokens=295), + ), + ] + + wrapper = AnthropicStreamWrapper( + completion_stream=MockCompletionStream(responses), + model="sonnet-4-5", + ) + + chunks = [] + chunk_types = [] + + # Collect all chunks + for chunk in wrapper: + chunks.append(chunk) + chunk_types.append(chunk.get("type")) + + # Verify the expected sequence of chunk types + expected_types = [ + "message_start", # Initial message start + # TODO: for future contributors: if the initial content_block_start + # respects the upstream's starting chunk, the initial empty text block + # should be removed (and this test should be updated accordingly) + # --------------------------------------------------------------------- + "content_block_start", # Initial empty text block start + "content_block_stop", # End of empty text block + # --------------------------------------------------------------------- + "content_block_start", # Start of first tool_use content block + "content_block_delta", # {"city": + "content_block_delta", # "NY"} + "content_block_stop", # End of first tool_use content block + "content_block_start", # "The weather is nice today" + "content_block_stop", + "content_block_start", # Start of second tool_use content block + "content_block_delta", # {"city": + "content_block_delta", # " SF"} + "content_block_stop", # End of second tool_use content block + "content_block_start", # Start of third tool_use content block + "content_block_delta", # {"city": + "content_block_delta", # " CHI"} + "content_block_stop", # End of third tool_use content block + "content_block_start", # "The weather is not so nice today" + "content_block_stop", + "message_delta", # Stop reason with merged usage + "message_stop", # Final message stop + ] + + assert expected_types == chunk_types + + get_weather_calls = 0 + + for chunk in chunks: + if ( + chunk.get("type") == "content_block_start" + and chunk["content_block"]["type"] == "tool_use" + ): + if chunk["content_block"]["name"] == "get_weather": + get_weather_calls += 1 + + assert get_weather_calls == 3 From 86affa405cc764a38ed230944903f73ced078bd9 Mon Sep 17 00:00:00 2001 From: Leslie Cheng Date: Tue, 7 Oct 2025 21:11:56 -0700 Subject: [PATCH 43/84] Unused type --- .../experimental_pass_through/adapters/streaming_iterator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/litellm/llms/anthropic/experimental_pass_through/adapters/streaming_iterator.py b/litellm/llms/anthropic/experimental_pass_through/adapters/streaming_iterator.py index bcfbee9fc31..47263dc1748 100644 --- a/litellm/llms/anthropic/experimental_pass_through/adapters/streaming_iterator.py +++ b/litellm/llms/anthropic/experimental_pass_through/adapters/streaming_iterator.py @@ -7,7 +7,7 @@ from collections import deque from typing import TYPE_CHECKING, Any, AsyncIterator, Iterator, Literal, Optional from litellm import verbose_logger -from litellm.types.llms.anthropic import UsageDelta, ToolUseBlock +from litellm.types.llms.anthropic import UsageDelta from litellm.types.utils import AdapterCompletionStreamWrapper if TYPE_CHECKING: From f8af72bbf14000f43d95a512750fe125aae4ba96 Mon Sep 17 00:00:00 2001 From: Tim Elfrink Date: Wed, 8 Oct 2025 10:31:35 +0200 Subject: [PATCH 44/84] fix: redact AWS credentials when redact_user_api_key_info enabled Use SensitiveDataMasker in print_deployment() to mask all sensitive credentials including AWS keys when redact_user_api_key_info is True. Fixes #14839 --- ...odel_prices_and_context_window_backup.json | 3 +-- litellm/router.py | 19 ++++++++++--- .../test_router_helper_utils.py | 27 +++++++++++++++++++ 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index bdfc4fd020b..29a65887747 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -13303,8 +13303,7 @@ "supported_endpoints": [ "/v1/images/generations", "/v1/images/edits" - ], - "supports_vision": true + ] }, "gpt-realtime": { "cache_creation_input_audio_token_cost": 4e-07, diff --git a/litellm/router.py b/litellm/router.py index ef7bcba635f..5349a212d66 100644 --- a/litellm/router.py +++ b/litellm/router.py @@ -59,6 +59,7 @@ from litellm.litellm_core_utils.coroutine_checker import coroutine_checker from litellm.litellm_core_utils.credential_accessor import CredentialAccessor from litellm.litellm_core_utils.dd_tracing import tracer from litellm.litellm_core_utils.litellm_logging import Logging as LiteLLMLogging +from litellm.litellm_core_utils.sensitive_data_masker import SensitiveDataMasker from litellm.router_strategy.budget_limiter import RouterBudgetLimiting from litellm.router_strategy.least_busy import LeastBusyLoggingHandler from litellm.router_strategy.lowest_cost import LowestCostLoggingHandler @@ -142,10 +143,17 @@ from litellm.types.router import ( RoutingStrategy, ) from litellm.types.services import ServiceTypes -from litellm.types.utils import GenericBudgetConfigType, LiteLLMBatch +from litellm.types.utils import ( + GenericBudgetConfigType, + LiteLLMBatch, +) from litellm.types.utils import ModelInfo from litellm.types.utils import ModelInfo as ModelMapInfo -from litellm.types.utils import ModelResponseStream, StandardLoggingPayload, Usage +from litellm.types.utils import ( + ModelResponseStream, + StandardLoggingPayload, + Usage, +) from litellm.utils import ( CustomStreamWrapper, EmbeddingResponse, @@ -909,8 +917,13 @@ class Router: try: _deployment_copy = copy.deepcopy(deployment) litellm_params: dict = _deployment_copy["litellm_params"] - if "api_key" in litellm_params: + + if litellm.redact_user_api_key_info: + masker = SensitiveDataMasker(visible_prefix=2, visible_suffix=0) + _deployment_copy["litellm_params"] = masker.mask_dict(litellm_params) + elif "api_key" in litellm_params: litellm_params["api_key"] = litellm_params["api_key"][:2] + "*" * 10 + return _deployment_copy except Exception as e: verbose_router_logger.debug( diff --git a/tests/router_unit_tests/test_router_helper_utils.py b/tests/router_unit_tests/test_router_helper_utils.py index 094df944bcc..a31c4d8210f 100644 --- a/tests/router_unit_tests/test_router_helper_utils.py +++ b/tests/router_unit_tests/test_router_helper_utils.py @@ -94,6 +94,33 @@ def test_print_deployment(model_list): assert 10 * "*" in printed_deployment["litellm_params"]["api_key"] +def test_print_deployment_with_redact_enabled(model_list): + """Test if sensitive credentials are masked when redact_user_api_key_info is enabled""" + import litellm + + router = Router(model_list=model_list) + deployment = { + "model_name": "bedrock-claude", + "litellm_params": { + "model": "bedrock/anthropic.claude-v2", + "aws_access_key_id": "AKIAIOSFODNN7EXAMPLE", + "aws_secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", + "aws_region_name": "us-west-2", + }, + } + + original_setting = litellm.redact_user_api_key_info + try: + litellm.redact_user_api_key_info = True + printed_deployment = router.print_deployment(deployment) + + assert "*" in printed_deployment["litellm_params"]["aws_access_key_id"] + assert "*" in printed_deployment["litellm_params"]["aws_secret_access_key"] + assert "us-west-2" == printed_deployment["litellm_params"]["aws_region_name"] + finally: + litellm.redact_user_api_key_info = original_setting + + def test_completion(model_list): """Test if the completion function is working correctly""" router = Router(model_list=model_list) From 85d4142845d0f5ff7602640a4e5063cacf2c69dd Mon Sep 17 00:00:00 2001 From: Sameer Kankute Date: Wed, 8 Oct 2025 21:14:23 +0530 Subject: [PATCH 45/84] Fix litellm_param based costing --- litellm/litellm_core_utils/litellm_logging.py | 2 +- litellm/router.py | 3 +- litellm/types/router.py | 21 +- litellm/types/utils.py | 47 ++++- .../test_pass_through_unit_tests.py | 185 ++++++++++++++++++ 5 files changed, 238 insertions(+), 20 deletions(-) diff --git a/litellm/litellm_core_utils/litellm_logging.py b/litellm/litellm_core_utils/litellm_logging.py index 696c67c44d7..eafcab88557 100644 --- a/litellm/litellm_core_utils/litellm_logging.py +++ b/litellm/litellm_core_utils/litellm_logging.py @@ -81,12 +81,12 @@ from litellm.types.llms.openai import ( ) from litellm.types.mcp import MCPPostCallResponseObject from litellm.types.rerank import RerankResponse -from litellm.types.router import CustomPricingLiteLLMParams from litellm.types.utils import ( CachingDetails, CallTypes, CostBreakdown, CostResponseTypes, + CustomPricingLiteLLMParams, DynamicPromptManagementParamLiteral, EmbeddingResponse, GuardrailStatus, diff --git a/litellm/router.py b/litellm/router.py index ef7bcba635f..50f6d7f1b6a 100644 --- a/litellm/router.py +++ b/litellm/router.py @@ -125,7 +125,6 @@ from litellm.types.router import ( AllowedFailsPolicy, AssistantsTypedDict, CredentialLiteLLMParams, - CustomPricingLiteLLMParams, CustomRoutingStrategyBase, Deployment, DeploymentTypedDict, @@ -145,7 +144,7 @@ from litellm.types.services import ServiceTypes from litellm.types.utils import GenericBudgetConfigType, LiteLLMBatch from litellm.types.utils import ModelInfo from litellm.types.utils import ModelInfo as ModelMapInfo -from litellm.types.utils import ModelResponseStream, StandardLoggingPayload, Usage +from litellm.types.utils import ModelResponseStream, StandardLoggingPayload, Usage, CustomPricingLiteLLMParams from litellm.utils import ( CustomStreamWrapper, EmbeddingResponse, diff --git a/litellm/types/router.py b/litellm/types/router.py index 62f1c13eb4b..3482df19c37 100644 --- a/litellm/types/router.py +++ b/litellm/types/router.py @@ -4,24 +4,20 @@ litellm.Router Types - includes RouterConfig, UpdateRouterConfig, ModelInfo etc import datetime import enum -from litellm._uuid import uuid from dataclasses import dataclass from typing import Any, Dict, List, Literal, Optional, Tuple, Union, get_type_hints import httpx -from httpx import AsyncClient, Client -from openai import AsyncAzureOpenAI, AsyncOpenAI, AzureOpenAI, OpenAI from pydantic import BaseModel, ConfigDict, Field from typing_extensions import Required, TypedDict -from litellm.llms.custom_httpx.http_handler import AsyncHTTPHandler, HTTPHandler +from litellm._uuid import uuid -from ..exceptions import RateLimitError from .completion import CompletionRequest from .embedding import EmbeddingRequest from .llms.openai import OpenAIFileObject from .llms.vertex_ai import VERTEX_CREDENTIALS_TYPES -from .utils import ModelResponse, ProviderSpecificModelInfo +from .utils import CustomPricingLiteLLMParams, ModelResponse class ConfigurableClientsideParamsCustomAuth(TypedDict): @@ -166,14 +162,7 @@ class CredentialLiteLLMParams(BaseModel): watsonx_region_name: Optional[str] = None -class CustomPricingLiteLLMParams(BaseModel): - ## CUSTOM PRICING ## - input_cost_per_token: Optional[float] = None - output_cost_per_token: Optional[float] = None - input_cost_per_second: Optional[float] = None - output_cost_per_second: Optional[float] = None - input_cost_per_pixel: Optional[float] = None - output_cost_per_pixel: Optional[float] = None + class GenericLiteLLMParams(CredentialLiteLLMParams, CustomPricingLiteLLMParams): @@ -482,7 +471,7 @@ class Deployment(BaseModel): def to_json(self, **kwargs): try: return self.model_dump(**kwargs) # noqa - except Exception as e: + except Exception: # if using pydantic v1 return self.dict(**kwargs) @@ -602,7 +591,7 @@ class ModelGroupInfo(BaseModel): def __init__(self, **data): for field_name, field_type in get_type_hints(self.__class__).items(): - if field_type == bool and data.get(field_name) is None: + if field_type is bool and data.get(field_name) is None: data[field_name] = False super().__init__(**data) diff --git a/litellm/types/utils.py b/litellm/types/utils.py index cac3bdfb01d..d4814224301 100644 --- a/litellm/types/utils.py +++ b/litellm/types/utils.py @@ -2226,6 +2226,51 @@ class StandardCallbackDynamicParams(TypedDict, total=False): turn_off_message_logging: Optional[bool] # when true will not log messages litellm_disabled_callbacks: Optional[List[str]] +class CustomPricingLiteLLMParams(BaseModel): + ## CUSTOM PRICING ## + input_cost_per_token: Optional[float] = None + output_cost_per_token: Optional[float] = None + input_cost_per_second: Optional[float] = None + output_cost_per_second: Optional[float] = None + input_cost_per_pixel: Optional[float] = None + output_cost_per_pixel: Optional[float] = None + + # Include all ModelInfoBase fields as optional + # This allows any model_info parameter to be set in litellm_params + input_cost_per_token_flex: Optional[float] = None + input_cost_per_token_priority: Optional[float] = None + cache_creation_input_token_cost: Optional[float] = None + cache_creation_input_token_cost_above_1hr: Optional[float] = None + cache_read_input_token_cost: Optional[float] = None + cache_read_input_token_cost_flex: Optional[float] = None + cache_read_input_token_cost_priority: Optional[float] = None + input_cost_per_character: Optional[float] = None + input_cost_per_audio_token: Optional[float] = None + input_cost_per_token_above_128k_tokens: Optional[float] = None + input_cost_per_token_above_200k_tokens: Optional[float] = None + input_cost_per_character_above_128k_tokens: Optional[float] = None + input_cost_per_query: Optional[float] = None + input_cost_per_image: Optional[float] = None + input_cost_per_audio_per_second: Optional[float] = None + input_cost_per_video_per_second: Optional[float] = None + input_cost_per_second: Optional[float] = None + input_cost_per_token_batches: Optional[float] = None + output_cost_per_token_batches: Optional[float] = None + output_cost_per_token_flex: Optional[float] = None + output_cost_per_token_priority: Optional[float] = None + output_cost_per_character: Optional[float] = None + output_cost_per_audio_token: Optional[float] = None + output_cost_per_token_above_128k_tokens: Optional[float] = None + output_cost_per_token_above_200k_tokens: Optional[float] = None + output_cost_per_character_above_128k_tokens: Optional[float] = None + output_cost_per_image: Optional[float] = None + output_cost_per_reasoning_token: Optional[float] = None + output_cost_per_video_per_second: Optional[float] = None + output_cost_per_audio_per_second: Optional[float] = None + output_cost_per_second: Optional[float] = None + search_context_cost_per_query: Optional[Dict[str, Any]] = None + citation_cost_per_token: Optional[float] = None + tiered_pricing: Optional[List[Dict[str, Any]]] = None all_litellm_params = [ "metadata", @@ -2325,7 +2370,7 @@ all_litellm_params = [ "litellm_session_id", "use_litellm_proxy", "prompt_label", -] + list(StandardCallbackDynamicParams.__annotations__.keys()) +] + list(StandardCallbackDynamicParams.__annotations__.keys()) + list(CustomPricingLiteLLMParams.model_fields.keys()) class KeyGenerationConfig(TypedDict, total=False): diff --git a/tests/pass_through_unit_tests/test_pass_through_unit_tests.py b/tests/pass_through_unit_tests/test_pass_through_unit_tests.py index 501fe24e65e..445d0ca55e8 100644 --- a/tests/pass_through_unit_tests/test_pass_through_unit_tests.py +++ b/tests/pass_through_unit_tests/test_pass_through_unit_tests.py @@ -418,3 +418,188 @@ def test_is_bedrock_agent_runtime_route(): is False ) assert _is_bedrock_agent_runtime_route("/some/random/endpoint") is False + + +def test_init_kwargs_filters_pricing_params(mock_request, mock_user_api_key_dict): + """ + Test that pricing parameters are properly filtered out from the request body + and don't get sent to the provider API. + + This ensures that custom pricing parameters like: + - cache_read_input_token_cost + - input_cost_per_token_batches + - output_cost_per_token_batches + - cache_creation_input_token_cost + etc. are removed from the request body before sending to provider. + + Regression test for: LIT-1221 + """ + request = mock_request() + + # Create a parsed body with pricing parameters that should be filtered out + parsed_body = { + "model": "gpt-4", + "messages": [{"role": "user", "content": "test"}], + # Standard pricing params (should be filtered) + "input_cost_per_token": 0.00002, + "output_cost_per_token": 0.00002, + "input_cost_per_second": 0.00001, + "output_cost_per_second": 0.00001, + # Cache-related pricing params (should be filtered) + "cache_read_input_token_cost": 0.00005, + "cache_creation_input_token_cost": 0.00003, + "cache_creation_input_token_cost_above_1hr": 0.00004, + # Batch pricing params (should be filtered) + "input_cost_per_token_batches": 0.00005, + "output_cost_per_token_batches": 0.00006, + # Other pricing params (should be filtered) + "input_cost_per_audio_token": 0.00001, + "output_cost_per_audio_token": 0.00001, + "input_cost_per_character": 0.000001, + "output_cost_per_character": 0.000001, + "input_cost_per_image": 0.001, + "output_cost_per_image": 0.001, + # Tiered pricing + "tiered_pricing": [{"input_cost_per_token": 0.00001}], + # This should NOT be filtered (it's a valid OpenAI parameter) + "temperature": 0.7, + "max_tokens": 100, + } + + passthrough_payload = PassthroughStandardLoggingPayload( + url="https://api.openai.com/v1/chat/completions", + request_body=parsed_body.copy(), + ) + + result = HttpPassThroughEndpointHelpers._init_kwargs_for_pass_through_endpoint( + request=request, + user_api_key_dict=mock_user_api_key_dict, + passthrough_logging_payload=passthrough_payload, + _parsed_body=parsed_body, + litellm_call_id="test-call-id", + logging_obj=LiteLLMLoggingObj( + model="gpt-4", + messages=[{"role": "user", "content": "test"}], + stream=False, + call_type="completion", + start_time=datetime.now(), + litellm_call_id="test-call-id", + function_id="test-function-id", + ), + ) + + # Verify pricing parameters were filtered out from parsed_body + assert "input_cost_per_token" not in parsed_body + assert "output_cost_per_token" not in parsed_body + assert "input_cost_per_second" not in parsed_body + assert "output_cost_per_second" not in parsed_body + assert "cache_read_input_token_cost" not in parsed_body + assert "cache_creation_input_token_cost" not in parsed_body + assert "cache_creation_input_token_cost_above_1hr" not in parsed_body + assert "input_cost_per_token_batches" not in parsed_body + assert "output_cost_per_token_batches" not in parsed_body + assert "input_cost_per_audio_token" not in parsed_body + assert "output_cost_per_audio_token" not in parsed_body + assert "input_cost_per_character" not in parsed_body + assert "output_cost_per_character" not in parsed_body + assert "input_cost_per_image" not in parsed_body + assert "output_cost_per_image" not in parsed_body + assert "tiered_pricing" not in parsed_body + + # Verify valid OpenAI parameters remain in parsed_body + assert parsed_body["model"] == "gpt-4" + assert parsed_body["messages"] == [{"role": "user", "content": "test"}] + assert parsed_body["temperature"] == 0.7 + assert parsed_body["max_tokens"] == 100 + + # Verify pricing parameters are stored in litellm_params for internal use + litellm_params = result["litellm_params"] + assert litellm_params["input_cost_per_token"] == 0.00002 + assert litellm_params["output_cost_per_token"] == 0.00002 + # Note: Other pricing params are also stored but we test the key ones that caused the regression + + +def test_custom_pricing_used_in_cost_calculation(): + """ + Test that when custom pricing parameters are provided in litellm_params, + they are actually used for cost calculation. + + This ensures that the custom pricing functionality works end-to-end: + 1. Pricing params are stored in litellm_params + 2. These params are used by completion_cost() to calculate costs + + Regression test for: LIT-1221 + """ + from litellm import completion_cost, Choices, Message, ModelResponse + from litellm.utils import Usage + + # Create a mock response with usage + resp = ModelResponse( + id="chatcmpl-test-123", + choices=[ + Choices( + finish_reason="stop", + index=0, + message=Message( + content="This is a test response", + role="assistant", + ), + ) + ], + created=1234567890, + model="gpt-4", + object="chat.completion", + usage=Usage(prompt_tokens=100, completion_tokens=50, total_tokens=150), + ) + + # Test 1: Standard pricing (should use default model pricing) + standard_cost = completion_cost( + completion_response=resp, + model="gpt-4", + ) + print(f"Standard cost: {standard_cost}") + + # Test 2: Custom pricing via custom_cost_per_token parameter + custom_input_price = 0.00010 # $0.0001 per token + custom_output_price = 0.00020 # $0.0002 per token + + custom_cost = completion_cost( + completion_response=resp, + custom_cost_per_token={ + "input_cost_per_token": custom_input_price, + "output_cost_per_token": custom_output_price, + }, + ) + + # Calculate expected cost + expected_custom_cost = (100 * custom_input_price) + (50 * custom_output_price) + + print(f"Custom cost: {custom_cost}") + print(f"Expected custom cost: {expected_custom_cost}") + + # Verify custom pricing is used (should match our calculation) + assert round(custom_cost, 10) == round(expected_custom_cost, 10) + + # Verify custom cost is different from standard cost (unless prices happen to match) + # This confirms custom pricing is actually being applied + assert custom_cost != standard_cost, "Custom pricing should produce different cost than standard pricing" + + # Test 3: Custom pricing with cache_read_input_token_cost and input_cost_per_token_batches + # This specifically tests the parameters that were causing the original issue + cache_cost = completion_cost( + completion_response=resp, + custom_cost_per_token={ + "input_cost_per_token": 0.00001, + "output_cost_per_token": 0.00002, + "cache_read_input_token_cost": 0.000005, # Should be accepted + "input_cost_per_token_batches": 0.000003, # Should be accepted + "output_cost_per_token_batches": 0.000004, # Should be accepted + }, + ) + + # Basic validation that it doesn't throw an error and returns a number + assert isinstance(cache_cost, (int, float)) + assert cache_cost >= 0 + + print(f"Cache-aware cost: {cache_cost}") + print("✅ Custom pricing parameters are correctly used in cost calculation") From 0b6b69cd5bfe1b037de5bf1da4c2016942ca6baf Mon Sep 17 00:00:00 2001 From: Sameer Kankute Date: Wed, 8 Oct 2025 22:19:02 +0530 Subject: [PATCH 46/84] fix issue with parsing assistant messages (#15320) * Update factory.py * reinclude the test cases * fixed test --------- Co-authored-by: Weijie --- litellm/litellm_core_utils/prompt_templates/factory.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/litellm/litellm_core_utils/prompt_templates/factory.py b/litellm/litellm_core_utils/prompt_templates/factory.py index c1d8a1cd41b..95daa40ca8e 100644 --- a/litellm/litellm_core_utils/prompt_templates/factory.py +++ b/litellm/litellm_core_utils/prompt_templates/factory.py @@ -232,7 +232,6 @@ def ollama_pt( ## MERGE CONSECUTIVE ASSISTANT CONTENT ## while msg_i < len(messages) and messages[msg_i]["role"] == "assistant": assistant_content_str += convert_content_list_to_str(messages[msg_i]) - msg_i += 1 tool_calls = messages[msg_i].get("tool_calls") ollama_tool_calls = [] @@ -258,7 +257,7 @@ def ollama_pt( f"Tool Calls: {json.dumps(ollama_tool_calls, indent=2)}" ) - msg_i += 1 + msg_i += 1 if assistant_content_str: prompt += f"### Assistant:\n{assistant_content_str}\n\n" From 7595acff424ad0b646320fb35ebc29e3fd487e15 Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Wed, 8 Oct 2025 12:03:44 -0700 Subject: [PATCH 47/84] empty commit for CI/CD From 45ec1ffdaac1f0d668438280fe5a857b0dec22c6 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 8 Oct 2025 13:13:21 -0700 Subject: [PATCH 48/84] fix(ui/): set is sso modal visible to true for all users allow backend to handle more complex state management --- litellm/model_prices_and_context_window_backup.json | 3 +-- .../out/{model_hub_table.html => model_hub_table/index.html} | 0 litellm/proxy/_experimental/out/onboarding.html | 1 - ui/litellm-dashboard/src/components/admins.tsx | 4 +--- 4 files changed, 2 insertions(+), 6 deletions(-) rename litellm/proxy/_experimental/out/{model_hub_table.html => model_hub_table/index.html} (100%) delete mode 100644 litellm/proxy/_experimental/out/onboarding.html diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index bdfc4fd020b..29a65887747 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -13303,8 +13303,7 @@ "supported_endpoints": [ "/v1/images/generations", "/v1/images/edits" - ], - "supports_vision": true + ] }, "gpt-realtime": { "cache_creation_input_audio_token_cost": 4e-07, diff --git a/litellm/proxy/_experimental/out/model_hub_table.html b/litellm/proxy/_experimental/out/model_hub_table/index.html similarity index 100% rename from litellm/proxy/_experimental/out/model_hub_table.html rename to litellm/proxy/_experimental/out/model_hub_table/index.html diff --git a/litellm/proxy/_experimental/out/onboarding.html b/litellm/proxy/_experimental/out/onboarding.html deleted file mode 100644 index 04c6c886768..00000000000 --- a/litellm/proxy/_experimental/out/onboarding.html +++ /dev/null @@ -1 +0,0 @@ -LiteLLM Dashboard \ No newline at end of file diff --git a/ui/litellm-dashboard/src/components/admins.tsx b/ui/litellm-dashboard/src/components/admins.tsx index 7c891c71dd0..88ec208cb4d 100644 --- a/ui/litellm-dashboard/src/components/admins.tsx +++ b/ui/litellm-dashboard/src/components/admins.tsx @@ -524,9 +524,7 @@ const AdminPanel: React.FC = ({ - )} - - - {isCreateUserModalVisible && ( - setIsCreateUserModalVisible(false)} - footer={null} - width={800} - > - - - )} -
- ); -}; - -export default CreateKey; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx deleted file mode 100644 index 33a8ae06cf9..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection.tsx +++ /dev/null @@ -1,150 +0,0 @@ -"use client"; - -import { TextInput, Title } from "@tremor/react"; -import { Form, FormInstance, Select, Tooltip } from "antd"; -import { InfoCircleOutlined } from "@ant-design/icons"; -import { getModelDisplayName } from "@/components/key_team_helpers/fetch_available_models_team_key"; -import React from "react"; - -export interface KeyDetailsSectionProps { - form: FormInstance; - keyOwner: string; - modelsToPick: string[]; - keyType: string; - setKeyType: (keyType: string) => void; -} - -const { Option } = Select; - -const KeyDetailsSection = ({ form, keyOwner, keyType, modelsToPick, setKeyType }: KeyDetailsSectionProps) => { - return ( -
- Key Details - - {keyOwner === "you" || keyOwner === "another_user" ? "Key Name" : "Service Account ID"}{" "} - - - - - } - name="key_alias" - rules={[ - { - required: true, - message: `Please input a ${keyOwner === "you" ? "key name" : "service account ID"}`, - }, - ]} - help="required" - > - - - - - Models{" "} - - - - - } - name="models" - rules={ - keyType === "management" || keyType === "read_only" - ? [] - : [{ required: true, message: "Please select a model" }] - } - help={ - keyType === "management" || keyType === "read_only" - ? "Models field is disabled for this key type" - : "required" - } - className="mt-4" - > - - - - - Key Type{" "} - - - - - } - name="key_type" - initialValue="default" - className="mt-4" - > - - -
- ); -}; - -export default KeyDetailsSection; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx deleted file mode 100644 index b88f8919448..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection.tsx +++ /dev/null @@ -1,460 +0,0 @@ -"use client"; - -import { Accordion, AccordionBody, AccordionHeader, Text, Title } from "@tremor/react"; -import { Form, FormInstance, Input, Select, Tooltip } from "antd"; -import { InfoCircleOutlined } from "@ant-design/icons"; -import { formatNumberWithCommas } from "@/utils/dataUtils"; -import NumericalInput from "@/components/shared/numerical_input"; -import BudgetDurationDropdown from "@/components/common_components/budget_duration_dropdown"; -import RateLimitTypeFormItem from "@/components/common_components/RateLimitTypeFormItem"; -import VectorStoreSelector from "@/components/vector_store_management/VectorStoreSelector"; -import MCPServerSelector from "@/components/mcp_server_management/MCPServerSelector"; -import PremiumLoggingSettings from "@/components/common_components/PremiumLoggingSettings"; -import ModelAliasManager from "@/components/common_components/ModelAliasManager"; -import KeyLifecycleSettings from "@/components/common_components/KeyLifecycleSettings"; -import { proxyBaseUrl } from "@/components/networking"; -import SchemaFormFields from "@/components/common_components/check_openapi_schema"; -import { Team } from "@/components/key_team_helpers/key_list"; -import React from "react"; -import { DefaultOptionType } from "rc-select/lib/Select"; -import { ModelAliases } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/types"; - -export interface OptionalSettingsSectionProps { - form: FormInstance; - team: Team | null; - premiumUser: boolean; - guardrails: string[]; - prompts: string[]; - accessToken: string; - predefinedTags: DefaultOptionType[]; - loggingSettings: any; - setLoggingSettings: (settings: any) => void; - disabledCallbacks: string[]; - setDisabledCallbacks: (disabledCallbacks: string[]) => void; - modelAliases: ModelAliases; - setModelAliases: (aliases: ModelAliases) => void; - autoRotationEnabled: boolean; - setAutoRotationEnabled: (enabled: boolean) => void; - rotationInterval: string; - setRotationInterval: (interval: string) => void; -} - -// TODO: break apart this component into smaller sections -const OptionalSettingsSection = ({ - form, - team, - premiumUser, - guardrails, - prompts, - accessToken, - predefinedTags, - loggingSettings, - setLoggingSettings, - disabledCallbacks, - setDisabledCallbacks, - modelAliases, - setModelAliases, - autoRotationEnabled, - setAutoRotationEnabled, - rotationInterval, - setRotationInterval, -}: OptionalSettingsSectionProps) => { - return ( -
- - - Optional Settings - - - - Max Budget (USD){" "} - - - - - } - name="max_budget" - help={`Budget cannot exceed team max budget: $${team?.max_budget !== null && team?.max_budget !== undefined ? team?.max_budget : "unlimited"}`} - rules={[ - { - validator: async (_, value) => { - if (value && team && team.max_budget !== null && value > team.max_budget) { - throw new Error( - `Budget cannot exceed team max budget: $${formatNumberWithCommas(team.max_budget, 4)}`, - ); - } - }, - }, - ]} - > - - - - Reset Budget{" "} - - - - - } - name="budget_duration" - help={`Team Reset Budget: ${team?.budget_duration !== null && team?.budget_duration !== undefined ? team?.budget_duration : "None"}`} - > - form.setFieldValue("budget_duration", value)} /> - - - Tokens per minute Limit (TPM){" "} - - - - - } - name="tpm_limit" - help={`TPM cannot exceed team TPM limit: ${team?.tpm_limit !== null && team?.tpm_limit !== undefined ? team?.tpm_limit : "unlimited"}`} - rules={[ - { - validator: async (_, value) => { - if (value && team && team.tpm_limit !== null && value > team.tpm_limit) { - throw new Error(`TPM limit cannot exceed team TPM limit: ${team.tpm_limit}`); - } - }, - }, - ]} - > - - - - - Requests per minute Limit (RPM){" "} - - - - - } - name="rpm_limit" - help={`RPM cannot exceed team RPM limit: ${team?.rpm_limit !== null && team?.rpm_limit !== undefined ? team?.rpm_limit : "unlimited"}`} - rules={[ - { - validator: async (_, value) => { - if (value && team && team.rpm_limit !== null && value > team.rpm_limit) { - throw new Error(`RPM limit cannot exceed team RPM limit: ${team.rpm_limit}`); - } - }, - }, - ]} - > - - - - - Guardrails{" "} - - e.stopPropagation()} // Prevent accordion from collapsing when clicking link - > - - - - - } - name="guardrails" - className="mt-4" - help={ - premiumUser - ? "Select existing guardrails or enter new ones" - : "Premium feature - Upgrade to set guardrails by key" - } - > - ({ value: name, label: name }))} - /> - - - Allowed Vector Stores{" "} - - - - - } - name="allowed_vector_store_ids" - className="mt-4" - help="Select vector stores this key can access. Leave empty for access to all vector stores" - > - form.setFieldValue("allowed_vector_store_ids", values)} - value={form.getFieldValue("allowed_vector_store_ids")} - accessToken={accessToken} - placeholder="Select vector stores (optional)" - /> - - - - Allowed MCP Servers{" "} - - - - - } - name="allowed_mcp_servers_and_groups" - className="mt-4" - help="Select MCP servers or access groups this key can access. " - > - form.setFieldValue("allowed_mcp_servers_and_groups", val)} - value={form.getFieldValue("allowed_mcp_servers_and_groups")} - accessToken={accessToken} - placeholder="Select MCP servers or access groups (optional)" - /> - - - - Metadata{" "} - - - - - } - name="metadata" - className="mt-4" - > - - - - Tags{" "} - - - - - } - name="tags" - className="mt-4" - help={`Tags for tracking spend and/or doing tag-based routing.`} - > - handleUserSelect(value, option as UserOption)} - options={userOptions} - loading={userSearchLoading} - allowClear - style={{ width: "100%" }} - notFoundContent={userSearchLoading ? "Searching..." : "No users found"} - /> - setIsCreateUserModalVisible(true)} style={{ marginLeft: "8px" }}> - Create User - -
-
Search by email to find users
-
- - )} - - Team{" "} - - - - - } - name="team_id" - initialValue={team ? team.team_id : null} - className="mt-4" - rules={[ - { - required: keyOwner === "service_account", - message: "Please select a team for the service account", - }, - ]} - help={keyOwner === "service_account" ? "required" : ""} - > - { - const selectedTeam = teams?.find((t) => t.team_id === teamId) || null; - setSelectedCreateKeyTeam(selectedTeam); - }} - /> - -
- ); -}; - -export default OwnershipSection; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx deleted file mode 100644 index cbe3db4e8ff..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyModal.tsx +++ /dev/null @@ -1,235 +0,0 @@ -"use client"; - -import { Button as Button2, Form, FormInstance, Modal } from "antd"; -import { Text } from "@tremor/react"; -import { keyCreateCall, keyCreateServiceAccountCall } from "@/components/networking"; -import React, { useEffect, useState } from "react"; -import { Team } from "@/components/key_team_helpers/key_list"; -import SaveKeyModal from "@/app/(dashboard)/virtual-keys/components/SaveKeyModal"; -import NotificationsManager from "@/components/molecules/notifications_manager"; -import { - useGuardrailsAndPrompts, - useMcpAccessGroups, - useTeamModels, - useUserModels, - useUserSearch, -} from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks"; -import OwnershipSection from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OwnershipSection"; -import KeyDetailsSection from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/KeyDetailsSection"; -import OptionalSettingsSection from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/CreateKeyForm/OptionalSettingsSection"; -import { ModelAliases } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/types"; -import { getPredefinedTags, prepareFormValues } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/utils"; -import { fetchTeams } from "@/app/(dashboard)/virtual-keys/networking"; -import useTeams from "@/app/(dashboard)/virtual-keys/hooks/useTeams"; -import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; - -export interface CreateKeyModalProps { - isModalVisible: boolean; - setIsModalVisible: (isModalVisible: boolean) => void; - form: FormInstance; - handleUserSelect: (_value: string, option: UserOption) => void; - setIsCreateUserModalVisible: (visible: boolean) => void; - team: Team | null; - data: any[] | null; - addKey: (data: any) => void; -} - -interface User { - user_id: string; - user_email: string; - role?: string; -} - -interface UserOption { - label: string; - value: string; - user: User; -} - -const CreateKeyModal = ({ - isModalVisible, - setIsModalVisible, - form, - handleUserSelect, - setIsCreateUserModalVisible, - team, - data, - addKey, -}: CreateKeyModalProps) => { - const { userId: userID, userRole, accessToken, premiumUser } = useAuthorized(); - const [apiKey, setApiKey] = useState(null); - const [keyOwner, setKeyOwner] = useState("you"); - const [keyType, setKeyType] = useState("default"); - - const [selectedCreateKeyTeam, setSelectedCreateKeyTeam] = useState(team); - - const [softBudget, setSoftBudget] = useState(null); - const [loggingSettings, setLoggingSettings] = useState([]); - const [disabledCallbacks, setDisabledCallbacks] = useState([]); - const [autoRotationEnabled, setAutoRotationEnabled] = useState(false); - const [rotationInterval, setRotationInterval] = useState("30d"); - const [modelAliases, setModelAliases] = useState({}); - const predefinedTags = getPredefinedTags(data); - - const { options: userOptions, loading: userSearchLoading, onSearch: handleUserSearch } = useUserSearch(); - const { guardrails, prompts } = useGuardrailsAndPrompts(); - const teams = useTeams(); - const mcpAccessGroups = useMcpAccessGroups(); - const userModels = useUserModels(); - const modelsToPick = useTeamModels(selectedCreateKeyTeam); - - const isTeamSelectionRequired = modelsToPick.includes("no-default-models"); - const isFormDisabled = isTeamSelectionRequired && !selectedCreateKeyTeam; - - const handleCancel = () => { - setIsModalVisible(false); - setApiKey(null); - setSelectedCreateKeyTeam(null); - form.resetFields(); - setLoggingSettings([]); - setDisabledCallbacks([]); - setKeyType("default"); - setModelAliases({}); - setAutoRotationEnabled(false); - setRotationInterval("30d"); - }; - - const handleOk = () => { - setIsModalVisible(false); - form.resetFields(); - setLoggingSettings([]); - setDisabledCallbacks([]); - setKeyType("default"); - setModelAliases({}); - setAutoRotationEnabled(false); - setRotationInterval("30d"); - }; - - const handleCreate = async (formValues: Record) => { - try { - const newKeyAlias = formValues?.key_alias ?? ""; - const newKeyTeamId = formValues?.team_id ?? null; - - const existingKeyAliases = data?.filter((k) => k.team_id === newKeyTeamId).map((k) => k.key_alias) ?? []; - - if (existingKeyAliases.includes(newKeyAlias)) { - throw new Error( - `Key alias ${newKeyAlias} already exists for team with ID ${newKeyTeamId}, please provide another key alias`, - ); - } - - NotificationsManager.info("Making API Call"); - setIsModalVisible(true); - - const prepared = prepareFormValues(formValues, { - keyOwner, - userID, - loggingSettings, - disabledCallbacks, - autoRotationEnabled, - rotationInterval, - modelAliases, - }); - - let response; - if (keyOwner === "service_account") { - response = await keyCreateServiceAccountCall(accessToken, prepared); - } else { - response = await keyCreateCall(accessToken, userID, prepared); - } - - // TODO: change logic to trigger API call in parent component - addKey(response); - - setApiKey(response["key"]); - setSoftBudget(response["soft_budget"]); - NotificationsManager.success("API Key Created"); - form.resetFields(); - localStorage.removeItem("userData" + userID); - } catch (error) { - console.log("error in create key:", error); - NotificationsManager.fromBackend(`Error creating the key: ${error}`); - } - }; - - useEffect(() => { - form.setFieldValue("models", []); - }, [selectedCreateKeyTeam, accessToken, userID, userRole, form]); - - return ( -
- -
- - - {/* Show message when team selection is required */} - {isFormDisabled && ( -
- - Please select a team to continue configuring your API key. If you do not see any teams, please contact - your Proxy Admin to either provide you with access to models or to add you to a team. - -
- )} - - {/* Section 2: Key Details */} - {!isFormDisabled && ( - - )} - - {/* Section 3: Optional Settings */} - {!isFormDisabled && ( - - )} - -
- - Create Key - -
- -
- {apiKey && ( - - )} -
- ); -}; - -export default CreateKeyModal; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/index.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/index.ts deleted file mode 100644 index ca3c4a663b9..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from "./useGuardrailsAndPrompts"; -export * from "./useMcpAccessGroups"; -export * from "./useUserModels"; -export * from "./useTeamModels"; -export * from "./useUserSearch"; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts deleted file mode 100644 index f4718e8ba05..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useGuardrailsAndPrompts.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { useEffect, useState } from "react"; -import { fetchGuardrails, fetchPrompts } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; - -export const useGuardrailsAndPrompts = () => { - const [guardrails, setGuardrails] = useState([]); - const [prompts, setPrompts] = useState([]); - const { accessToken } = useAuthorized(); - - useEffect(() => { - if (!accessToken) { - setGuardrails([]); - setPrompts([]); - return; - } - (async () => { - const [g, p] = await Promise.all([fetchGuardrails(accessToken), fetchPrompts(accessToken)]); - setGuardrails(g || []); - setPrompts(p || []); - })(); - }, [accessToken]); - - return { guardrails, prompts }; -}; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts deleted file mode 100644 index 998b392f774..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useMcpAccessGroups.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { useEffect, useState } from "react"; -import { getMCPAccessGroups } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; - -export const useMcpAccessGroups = () => { - const [mcpAccessGroups, setMcpAccessGroups] = useState([]); - const { accessToken } = useAuthorized(); - - useEffect(() => { - if (!accessToken) { - setMcpAccessGroups([]); - return; - } - (async () => { - const groups = await getMCPAccessGroups(accessToken); - setMcpAccessGroups(groups || []); - })(); - }, [accessToken]); - - return mcpAccessGroups; -}; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts deleted file mode 100644 index dd99de0615b..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useTeamModels.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { useEffect, useMemo, useState } from "react"; -import type { Team } from "@/components/key_team_helpers/key_list"; -import { fetchTeamModels } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; - -export const useTeamModels = (selectedTeam: Team | null) => { - const { userId: userID, userRole, accessToken } = useAuthorized(); - const [modelsToPick, setModelsToPick] = useState([]); - - // turn array into a stable dep so it only re-runs when contents change - const selectedTeamModelsKey = useMemo(() => (selectedTeam?.models ?? []).join("|"), [selectedTeam?.models]); - - useEffect(() => { - if (!userID || !userRole || !accessToken) { - setModelsToPick([]); - return; - } - (async () => { - const fetched = await fetchTeamModels(userID, userRole, accessToken, selectedTeam?.team_id ?? null); - const union = Array.from(new Set([...(selectedTeam?.models ?? []), ...(fetched || [])])); - setModelsToPick(union); - })(); - }, [userID, userRole, accessToken, selectedTeam?.team_id, selectedTeamModelsKey, selectedTeam?.models]); - - return modelsToPick; -}; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts deleted file mode 100644 index 66b5520f067..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useUserModels.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { useEffect, useState } from "react"; -import { getUserModelNames } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; - -export const useUserModels = () => { - const { userId: userID, userRole, accessToken } = useAuthorized(); - const [userModels, setUserModels] = useState([]); - - useEffect(() => { - if (!userID || !userRole || !accessToken) { - setUserModels([]); - return; - } - (async () => { - const modelNames = await getUserModelNames(userID, userRole, accessToken); - setUserModels(modelNames || []); - })(); - }, [userID, userRole, accessToken]); - - return userModels; -}; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts deleted file mode 100644 index d266a51667c..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/hooks/useUserSearch.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { useEffect, useMemo, useState } from "react"; -import { debounce } from "lodash"; -import { searchUserOptionsByEmail } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking"; -import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; - -type User = { user_id: string; user_email: string; role?: string }; -export interface UserOption { - label: string; - value: string; - user: User; -} - -export const useUserSearch = (delay = 300) => { - const { accessToken } = useAuthorized(); - const [options, setOptions] = useState([]); - const [loading, setLoading] = useState(false); - - const doSearch = async (raw: string) => { - const q = raw?.trim(); - if (!q || !accessToken) { - setOptions([]); - setLoading(false); - return; - } - setLoading(true); - try { - const res = await searchUserOptionsByEmail(accessToken, q); - setOptions(res || []); - } finally { - setLoading(false); - } - }; - - const onSearch = useMemo(() => debounce(doSearch, delay), [accessToken, delay]); - - useEffect(() => { - return () => onSearch.cancel(); - }, [onSearch]); - - return { options, loading, onSearch }; -}; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking.ts deleted file mode 100644 index 377f6d31139..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/networking.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { - fetchMCPAccessGroups, - getGuardrailsList, - getPromptsList, - modelAvailableCall, - User, - userFilterUICall, -} from "@/components/networking"; -import { ModelAvailableResponse, UserOption } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/types"; - -export const fetchGuardrails = async (accessToken: string) => { - try { - const response = await getGuardrailsList(accessToken); - return response.guardrails.map((g: { guardrail_name: string }) => g.guardrail_name); - } catch (error) { - console.error("Failed to fetch guardrails:", error); - return []; - } -}; - -export const fetchPrompts = async (accessToken: string) => { - try { - const response = await getPromptsList(accessToken); - return response.prompts.map((prompt) => prompt.prompt_id); - } catch (error) { - console.error("Failed to fetch prompts:", error); - return []; - } -}; - -export const searchUserOptionsByEmail = async (accessToken: string, emailQuery: string): Promise => { - const params = new URLSearchParams(); - params.append("user_email", emailQuery); - - const response = await userFilterUICall(accessToken, params); - const users: User[] = response; - - return users.map((user) => ({ - label: `${user.user_email} (${user.user_id})`, - value: user.user_id, - user, - })); -}; - -export const getUserModelNames = async (userID: string, userRole: string, accessToken: string): Promise => { - const res: ModelAvailableResponse = await modelAvailableCall(accessToken, userID, userRole); - return (res?.data ?? []).map((m) => m.id); -}; - -export const fetchTeamModels = async ( - userID: string, - userRole: string, - accessToken: string, - teamID: string | null, -): Promise => { - try { - if (userID === null || userRole === null) { - return []; - } - - if (accessToken !== null) { - const model_available = await modelAvailableCall(accessToken, userID, userRole, true, teamID, true); - let available_model_names = model_available["data"].map((element: { id: string }) => element.id); - console.log("available_model_names:", available_model_names); - return available_model_names; - } - return []; - } catch (error) { - console.error("Error fetching user models:", error); - return []; - } -}; - -export const getMCPAccessGroups = async (accessToken: string): Promise => { - try { - if (accessToken == null) { - return []; - } - return await fetchMCPAccessGroups(accessToken); - } catch (error) { - console.error("Failed to fetch MCP access groups:", error); - return []; - } -}; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/types.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/types.ts deleted file mode 100644 index 4d48df82d44..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/types.ts +++ /dev/null @@ -1,17 +0,0 @@ -export interface User { - user_id: string; - user_email: string; - role?: string; -} - -export interface UserOption { - label: string; - value: string; - user: User; -} - -export type Model = { id: string }; - -export type ModelAvailableResponse = { data: Model[] }; - -export type ModelAliases = { [key: string]: string }; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/utils.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/utils.ts deleted file mode 100644 index 1fb40b87895..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/CreateKeyModal/utils.ts +++ /dev/null @@ -1,187 +0,0 @@ -import { mapDisplayToInternalNames } from "@/components/callback_info_helpers"; -import { ModelAliases } from "@/app/(dashboard)/virtual-keys/components/CreateKeyModal/types"; - -export const getPredefinedTags = (data: any[] | null) => { - let allTags = []; - - console.log("data:", JSON.stringify(data)); - - if (data) { - for (let key of data) { - if (key["metadata"] && key["metadata"]["tags"]) { - allTags.push(...key["metadata"]["tags"]); - } - } - } - - const uniqueTags = Array.from(new Set(allTags)).map((tag) => ({ - value: tag, - label: tag, - })); - - console.log("uniqueTags:", uniqueTags); - return uniqueTags; -}; - -type AnyObj = Record; - -type PrepareOptions = { - keyOwner: string; - userID: string; - loggingSettings: any[]; - disabledCallbacks: string[]; - autoRotationEnabled: boolean; - rotationInterval: string; - modelAliases: ModelAliases; -}; - -export function safeParseMetadata(metadataStr: string | undefined): AnyObj { - try { - return JSON.parse(metadataStr || "{}"); - } catch (error) { - console.error("Error parsing metadata:", error); - return {}; - } -} - -export function withOwnerAssignments( - values: AnyObj, - { keyOwner, userID }: Pick, -): AnyObj { - // If owned by "you", set user_id - const base = keyOwner === "you" ? { ...values, user_id: userID } : { ...values }; - return base; -} - -export function enrichMetadata( - metadata: AnyObj, - values: AnyObj, - { - keyOwner, - loggingSettings, - disabledCallbacks, - }: Pick, -): AnyObj { - let next = { ...metadata }; - - // If it's a service account, add the service_account_id to the metadata - if (keyOwner === "service_account") { - next = { ...next, service_account_id: values.key_alias }; - } - - // Add logging settings to the metadata - if (Array.isArray(loggingSettings) && loggingSettings.length > 0) { - next = { ...next, logging: loggingSettings.filter((config: any) => config?.callback_name) }; - } - - // Add disabled callbacks to the metadata - if (Array.isArray(disabledCallbacks) && disabledCallbacks.length > 0) { - const mappedDisabledCallbacks = mapDisplayToInternalNames(disabledCallbacks); - next = { ...next, litellm_disabled_callbacks: mappedDisabledCallbacks }; - } - - return next; -} - -export function withAutoRotation( - values: AnyObj, - { autoRotationEnabled, rotationInterval }: Pick, -): AnyObj { - if (!autoRotationEnabled) return { ...values }; - return { ...values, auto_rotate: true, rotation_interval: rotationInterval }; -} - -export function withDurationNoop(values: AnyObj): AnyObj { - // Preserve the original no-op logic: if duration exists, set it to itself - if (values.duration) { - return { ...values, duration: values.duration }; - } - return { ...values }; -} - -export function mergeObjectPermission(values: AnyObj, patch: AnyObj): AnyObj { - const object_permission = { ...(values.object_permission || {}), ...patch }; - return { ...values, object_permission }; -} - -export function withVectorStores(values: AnyObj): AnyObj { - const { allowed_vector_store_ids, ...rest } = values; - if (Array.isArray(allowed_vector_store_ids) && allowed_vector_store_ids.length > 0) { - const patched = mergeObjectPermission(rest, { vector_stores: allowed_vector_store_ids }); - return patched; // original field removed by destructuring - } - return { ...values }; -} - -export function withMcpServersAndGroups(values: AnyObj): AnyObj { - const { allowed_mcp_servers_and_groups, ...rest } = values; - const servers = allowed_mcp_servers_and_groups?.servers; - const accessGroups = allowed_mcp_servers_and_groups?.accessGroups; - - const hasServers = Array.isArray(servers) && servers.length > 0; - const hasAccessGroups = Array.isArray(accessGroups) && accessGroups.length > 0; - - if (!hasServers && !hasAccessGroups) return { ...values }; - - let patched = { ...rest }; - if (hasServers) patched = mergeObjectPermission(patched, { mcp_servers: servers }); - if (hasAccessGroups) patched = mergeObjectPermission(patched, { mcp_access_groups: accessGroups }); - - // original field removed by destructuring - return patched; -} - -export function withMcpAccessGroups(values: AnyObj): AnyObj { - const { allowed_mcp_access_groups, ...rest } = values; - if (Array.isArray(allowed_mcp_access_groups) && allowed_mcp_access_groups.length > 0) { - const patched = mergeObjectPermission(rest, { mcp_access_groups: allowed_mcp_access_groups }); - return patched; // original field removed by destructuring - } - return { ...values }; -} - -function withAliases(values: AnyObj, modelAliases: ModelAliases): AnyObj { - if (modelAliases && Object.keys(modelAliases).length > 0) { - return { ...values, aliases: JSON.stringify(modelAliases) }; - } - return { ...values }; -} - -function withMetadataString(values: AnyObj, metadata: AnyObj): AnyObj { - return { ...values, metadata: JSON.stringify(metadata) }; -} - -export function prepareFormValues(initialValues: AnyObj, opts: PrepareOptions): AnyObj { - // Step 1: assign user id if needed - let values = withOwnerAssignments(initialValues, { keyOwner: opts.keyOwner, userID: opts.userID }); - - // Step 2: metadata parse & enrichment - const parsedMetadata = safeParseMetadata(values.metadata); - const enrichedMetadata = enrichMetadata(parsedMetadata, values, { - keyOwner: opts.keyOwner, - loggingSettings: opts.loggingSettings, - disabledCallbacks: opts.disabledCallbacks, - }); - - // Step 3: auto-rotation - values = withAutoRotation(values, { - autoRotationEnabled: opts.autoRotationEnabled, - rotationInterval: opts.rotationInterval, - }); - - // Step 4: duration (no-op preservation) - values = withDurationNoop(values); - - // Step 5: commit metadata string - values = withMetadataString(values, enrichedMetadata); - - // Step 6: object_permission transformations - values = withVectorStores(values); - values = withMcpServersAndGroups(values); - values = withMcpAccessGroups(values); - - // Step 7: aliases - values = withAliases(values, opts.modelAliases); - - return values; -} diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/KeyInfoView.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/KeyInfoView.tsx deleted file mode 100644 index 9f9a47fbe10..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/KeyInfoView.tsx +++ /dev/null @@ -1,699 +0,0 @@ -"use client"; - -import React, { useEffect, useState } from "react"; -import { - Card, - Text, - Button, - Grid, - Tab, - TabList, - TabGroup, - TabPanel, - TabPanels, - Title, - Badge, -} from "@tremor/react"; -import { ArrowLeftIcon, TrashIcon, RefreshIcon } from "@heroicons/react/outline"; -import { Form, Tooltip, Button as AntdButton } from "antd"; -import { copyToClipboard as utilCopyToClipboard, formatNumberWithCommas } from "@/utils/dataUtils"; -import { CopyIcon, CheckIcon } from "lucide-react"; -import { KeyResponse } from "@/components/key_team_helpers/key_list" -import { mapDisplayToInternalNames, mapInternalToDisplayNames } from "@/components/callback_info_helpers" -import NotificationManager from "@/components/molecules/notifications_manager" -import { keyDeleteCall, keyUpdateCall } from "@/components/networking" -import { parseErrorMessage } from "@/components/shared/errorUtils" -import { rolesWithWriteAccess } from "@/utils/roles" -import { RegenerateKeyModal } from "@/components/organisms/regenerate_key_modal" -import ObjectPermissionsView from "@/components/object_permissions_view" -import LoggingSettingsView from "@/components/logging_settings_view" -import { extractLoggingSettings, formatMetadataForDisplay } from "@/components/key_info_utils" -import AutoRotationView from "@/components/common_components/AutoRotationView" -import { KeyEditView } from "@/components/templates/key_edit_view" - - -interface KeyInfoViewProps { - keyId: string; - onClose: () => void; - keyData: KeyResponse | undefined; - onKeyDataUpdate?: (data: Partial) => void; - onDelete?: () => void; - accessToken: string | null; - userID: string | null; - userRole: string | null; - teams: any[] | null; - premiumUser: boolean; - setAccessToken?: (token: string) => void; - backButtonText?: string; -} - -const KeyInfoView = ({ - keyId, - onClose, - keyData, - accessToken, - userID, - userRole, - teams, - onKeyDataUpdate, - onDelete, - premiumUser, - setAccessToken, - backButtonText = "Back to Keys", - }: KeyInfoViewProps) => { - const [isEditing, setIsEditing] = useState(false); - const [form] = Form.useForm(); - const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false); - const [deleteConfirmInput, setDeleteConfirmInput] = useState(""); - const [isRegenerateModalOpen, setIsRegenerateModalOpen] = useState(false); - const [copiedStates, setCopiedStates] = useState>({}); - - // Add local state to maintain key data and track regeneration - const [currentKeyData, setCurrentKeyData] = useState(keyData); - const [lastRegeneratedAt, setLastRegeneratedAt] = useState(null); - const [isRecentlyRegenerated, setIsRecentlyRegenerated] = useState(false); - - // Update local state when keyData prop changes (but don't reset to undefined) - useEffect(() => { - if (keyData) { - setCurrentKeyData(keyData); - } - }, [keyData]); - - // Reset recent regeneration indicator after 5 seconds - useEffect(() => { - if (isRecentlyRegenerated) { - const timer = setTimeout(() => { - setIsRecentlyRegenerated(false); - }, 5000); - return () => clearTimeout(timer); - } - }, [isRecentlyRegenerated]); - - // Use currentKeyData instead of keyData throughout the component - if (!currentKeyData) { - return ( -
- - Key not found -
- ); - } - - const handleKeyUpdate = async (formValues: Record) => { - try { - if (!accessToken) return; - - const currentKey = formValues.token; - formValues.key = currentKey; - - // Guard premium features - if (!premiumUser) { - delete formValues.guardrails; - delete formValues.prompts; - } - - // Handle object_permission updates - if (formValues.vector_stores !== undefined) { - formValues.object_permission = { - ...currentKeyData.object_permission, - vector_stores: formValues.vector_stores || [], - }; - // Remove vector_stores from the top level as it should be in object_permission - delete formValues.vector_stores; - } - - if (formValues.mcp_servers_and_groups !== undefined) { - const { servers, accessGroups } = formValues.mcp_servers_and_groups || { servers: [], accessGroups: [] }; - formValues.object_permission = { - ...currentKeyData.object_permission, - mcp_servers: servers || [], - mcp_access_groups: accessGroups || [], - }; - // Remove mcp_servers_and_groups from the top level as it should be in object_permission - delete formValues.mcp_servers_and_groups; - } - - // Convert metadata back to an object if it exists and is a string - if (formValues.metadata && typeof formValues.metadata === "string") { - try { - const parsedMetadata = JSON.parse(formValues.metadata); - formValues.metadata = { - ...parsedMetadata, - ...(formValues.guardrails?.length > 0 ? { guardrails: formValues.guardrails } : {}), - ...(formValues.logging_settings ? { logging: formValues.logging_settings } : {}), - ...(formValues.disabled_callbacks?.length > 0 - ? { - litellm_disabled_callbacks: mapDisplayToInternalNames(formValues.disabled_callbacks), - } - : {}), - }; - } catch (error) { - console.error("Error parsing metadata JSON:", error); - NotificationManager.error("Invalid metadata JSON"); - return; - } - } else { - formValues.metadata = { - ...(formValues.metadata || {}), - ...(formValues.guardrails?.length > 0 ? { guardrails: formValues.guardrails } : {}), - ...(formValues.logging_settings ? { logging: formValues.logging_settings } : {}), - ...(formValues.disabled_callbacks?.length > 0 - ? { - litellm_disabled_callbacks: mapDisplayToInternalNames(formValues.disabled_callbacks), - } - : {}), - }; - } - - delete formValues.logging_settings; - - // Convert budget_duration to API format - if (formValues.budget_duration) { - const durationMap: Record = { - daily: "24h", - weekly: "7d", - monthly: "30d", - }; - formValues.budget_duration = durationMap[formValues.budget_duration]; - } - - const newKeyValues = await keyUpdateCall(accessToken, formValues); - - // Update local state - setCurrentKeyData((prevData) => (prevData ? { ...prevData, ...newKeyValues } : undefined)); - - if (onKeyDataUpdate) { - onKeyDataUpdate(newKeyValues); - } - NotificationManager.success("Key updated successfully"); - setIsEditing(false); - // Refresh key data here if needed - } catch (error) { - NotificationManager.fromBackend(parseErrorMessage(error)); - console.error("Error updating key:", error); - } - }; - - const handleDelete = async () => { - try { - if (!accessToken) return; - await keyDeleteCall(accessToken as string, currentKeyData.token || currentKeyData.token_id); - NotificationManager.success("Key deleted successfully"); - if (onDelete) { - onDelete(); - } - onClose(); - } catch (error) { - console.error("Error deleting the key:", error); - NotificationManager.fromBackend(error); - } - // Reset the confirmation input - setDeleteConfirmInput(""); - }; - - const copyToClipboard = async (text: string, key: string) => { - const success = await utilCopyToClipboard(text); - if (success) { - setCopiedStates((prev) => ({ ...prev, [key]: true })); - setTimeout(() => { - setCopiedStates((prev) => ({ ...prev, [key]: false })); - }, 2000); - } - }; - - const handleRegenerateKeyUpdate = (updatedKeyData: Partial) => { - // Update local state immediately with ALL the new data - setCurrentKeyData((prevData) => { - if (!prevData) return undefined; - const newData = { - ...prevData, - ...updatedKeyData, // This should include the new token (key-id) - // Update the created_at to show when it was regenerated - created_at: new Date().toLocaleString(), - }; - return newData; - }); - - // Track regeneration timestamp - setLastRegeneratedAt(new Date()); - setIsRecentlyRegenerated(true); - - if (onKeyDataUpdate) { - onKeyDataUpdate({ - ...updatedKeyData, - created_at: new Date().toLocaleString(), - }); - } - }; - - // Update the formatTimestamp function to use the desired date format - const formatTimestamp = (timestamp: string | Date) => { - const date = new Date(timestamp); - const dateStr = date.toLocaleDateString("en-US", { - year: "numeric", - month: "short", - day: "numeric", - }); - const timeStr = date.toLocaleTimeString("en-US", { - hour: "numeric", - minute: "2-digit", - hour12: true, - }); - return `${dateStr} at ${timeStr}`; - }; - - return ( -
-
-
- - {currentKeyData.key_alias || "API Key"} - -
-
- Key ID - {currentKeyData.token_id || currentKeyData.token} -
- : } - onClick={() => copyToClipboard(currentKeyData.token_id || currentKeyData.token, "key-id")} - className={`ml-2 transition-all duration-200${ - copiedStates["key-id"] - ? "text-green-600 bg-green-50 border-green-200" - : "text-gray-500 hover:text-gray-700 hover:bg-gray-100" - }`} - /> -
- - {/* Add timestamp and regeneration indicator */} -
- - {currentKeyData.updated_at && currentKeyData.updated_at !== currentKeyData.created_at - ? `Updated: ${formatTimestamp(currentKeyData.updated_at)}` - : `Created: ${formatTimestamp(currentKeyData.created_at)}`} - - - {isRecentlyRegenerated && ( - - Recently Regenerated - - )} - - {lastRegeneratedAt && ( - - Regenerated - - )} -
-
- {userRole && rolesWithWriteAccess.includes(userRole) && ( -
- - - - - - -
- )} -
- - {/* Add RegenerateKeyModal */} - setIsRegenerateModalOpen(false)} - accessToken={accessToken} - premiumUser={premiumUser} - setAccessToken={setAccessToken} - onKeyUpdate={handleRegenerateKeyUpdate} - /> - - {/* Delete Confirmation Modal */} - {isDeleteModalOpen && - (() => { - const keyName = currentKeyData?.key_alias || currentKeyData?.token_id || "API Key"; - const isValid = deleteConfirmInput === keyName; - return ( -
-
-
-
-

Delete Key

- -
-
-
-
- - - -
-
-

- Warning: You are about to delete this API key. -

-

- This action is irreversible and will immediately revoke access for any applications using this - key. -

-
-
-

Are you sure you want to delete this API key?

-
- - setDeleteConfirmInput(e.target.value)} - placeholder="Enter key name exactly" - className="w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-base" - autoFocus - /> -
-
-
-
- - -
-
-
- ); - })()} - - - - Overview - Settings - - - - {/* Overview Panel */} - - - - Spend -
- ${formatNumberWithCommas(currentKeyData.spend, 4)} - - of{" "} - {currentKeyData.max_budget !== null - ? `$${formatNumberWithCommas(currentKeyData.max_budget)}` - : "Unlimited"} - -
-
- - - Rate Limits -
- TPM: {currentKeyData.tpm_limit !== null ? currentKeyData.tpm_limit : "Unlimited"} - RPM: {currentKeyData.rpm_limit !== null ? currentKeyData.rpm_limit : "Unlimited"} -
-
- - - Models -
- {currentKeyData.models && currentKeyData.models.length > 0 ? ( - currentKeyData.models.map((model, index) => ( - - {model} - - )) - ) : ( - No models specified - )} -
-
- - - - - - - - -
-
- - {/* Settings Panel */} - - -
- Key Settings - {!isEditing && userRole && rolesWithWriteAccess.includes(userRole) && ( - - )} -
- - {isEditing ? ( - setIsEditing(false)} - onSubmit={handleKeyUpdate} - teams={teams} - accessToken={accessToken} - userID={userID} - userRole={userRole} - premiumUser={premiumUser} - /> - ) : ( -
-
- Key ID - {currentKeyData.token_id || currentKeyData.token} -
- -
- Key Alias - {currentKeyData.key_alias || "Not Set"} -
- -
- Secret Key - {currentKeyData.key_name} -
- -
- Team ID - {currentKeyData.team_id || "Not Set"} -
- -
- Organization - {currentKeyData.organization_id || "Not Set"} -
- -
- Created - {formatTimestamp(currentKeyData.created_at)} -
- - {lastRegeneratedAt && ( -
- Last Regenerated -
- {formatTimestamp(lastRegeneratedAt)} - - Recent - -
-
- )} - -
- Expires - {currentKeyData.expires ? formatTimestamp(currentKeyData.expires) : "Never"} -
- - - -
- Spend - ${formatNumberWithCommas(currentKeyData.spend, 4)} USD -
- -
- Budget - - {currentKeyData.max_budget !== null - ? `$${formatNumberWithCommas(currentKeyData.max_budget, 2)}` - : "Unlimited"} - -
- -
- Prompts - - {Array.isArray(currentKeyData.metadata?.prompts) && currentKeyData.metadata.prompts.length > 0 - ? currentKeyData.metadata.prompts.map((prompt, index) => ( - - {prompt} - - )) - : "No prompts specified"} - -
- -
- Models -
- {currentKeyData.models && currentKeyData.models.length > 0 ? ( - currentKeyData.models.map((model, index) => ( - - {model} - - )) - ) : ( - No models specified - )} -
-
- -
- Rate Limits - TPM: {currentKeyData.tpm_limit !== null ? currentKeyData.tpm_limit : "Unlimited"} - RPM: {currentKeyData.rpm_limit !== null ? currentKeyData.rpm_limit : "Unlimited"} - - Max Parallel Requests:{" "} - {currentKeyData.max_parallel_requests !== null - ? currentKeyData.max_parallel_requests - : "Unlimited"} - - - Model TPM Limits:{" "} - {currentKeyData.metadata?.model_tpm_limit - ? JSON.stringify(currentKeyData.metadata.model_tpm_limit) - : "Unlimited"} - - - Model RPM Limits:{" "} - {currentKeyData.metadata?.model_rpm_limit - ? JSON.stringify(currentKeyData.metadata.model_rpm_limit) - : "Unlimited"} - -
- -
- Metadata -
-                      {formatMetadataForDisplay(currentKeyData.metadata)}
-                    
-
- - - - -
- )} -
-
-
-
-
- ); -} - -export default KeyInfoView; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/SaveKeyModal.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/SaveKeyModal.tsx deleted file mode 100644 index fed678aadca..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/SaveKeyModal.tsx +++ /dev/null @@ -1,60 +0,0 @@ -"use client"; - -import { Button, Col, Grid, Text, Title } from "@tremor/react"; -import { CopyToClipboard } from "react-copy-to-clipboard"; -import { Modal } from "antd"; -import React from "react"; -import NotificationsManager from "@/components/molecules/notifications_manager"; - -export interface SaveKeyModalProps { - apiKey: string; - isModalVisible: boolean; - handleOk: () => void; - handleCancel: () => void; -} - -const SaveKeyModal = ({ apiKey, isModalVisible, handleOk, handleCancel }: SaveKeyModalProps) => { - const handleCopy = () => { - NotificationsManager.success("API Key copied to clipboard"); - }; - - return ( - - - Save your Key - -

- Please save this secret key somewhere safe and accessible. For security reasons,{" "} - you will not be able to view it again through your LiteLLM account. If you lose this secret key, you - will need to generate a new one. -

- - - {apiKey != null ? ( -
- API Key: -
-
{apiKey}
-
- - - - -
- ) : ( - Key being created, this might take 30s - )} - -
-
- ); -}; - -export default SaveKeyModal; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx deleted file mode 100644 index 180d3336f1c..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable.tsx +++ /dev/null @@ -1,667 +0,0 @@ -"use client"; -// TODO: refactor - -import React, { useEffect, useState } from "react"; -import { ColumnDef } from "@tanstack/react-table"; -import { Button } from "@tremor/react"; -import { Tooltip } from "antd"; -import { updateExistingKeys } from "@/utils/dataUtils"; -import { flexRender, getCoreRowModel, getSortedRowModel, SortingState, useReactTable } from "@tanstack/react-table"; -import { Table, TableHead, TableHeaderCell, TableBody, TableRow, TableCell, Icon } from "@tremor/react"; -import { SwitchVerticalIcon, ChevronUpIcon, ChevronDownIcon, ChevronRightIcon } from "@heroicons/react/outline"; -import { Badge, Text } from "@tremor/react"; -import { formatNumberWithCommas } from "@/utils/dataUtils"; -import { KeyResponse, Team } from "@/components/key_team_helpers/key_list"; -import { Organization, userListCall } from "@/components/networking"; -import { getModelDisplayName } from "@/components/key_team_helpers/fetch_available_models_team_key"; -import FilterComponent, { FilterOption } from "@/components/molecules/filter"; -import { useFilterLogic } from "@/components/key_team_helpers/filter_logic"; -import useTeams from "@/app/(dashboard)/virtual-keys/hooks/useTeams"; -import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; -import KeyInfoView from "@/app/(dashboard)/virtual-keys/components/KeyInfoView"; - -interface AllKeysTableProps { - keys: KeyResponse[]; - setKeys: (keys: KeyResponse[] | ((prev: KeyResponse[]) => KeyResponse[])) => void; - isLoading?: boolean; - pagination: { - currentPage: number; - totalPages: number; - totalCount: number; - }; - onPageChange: (page: number) => void; - pageSize?: number; - organizations: Organization[] | null; - refresh?: () => void; - onSortChange?: (sortBy: string, sortOrder: "asc" | "desc") => void; - currentSort?: { - sortBy: string; - sortOrder: "asc" | "desc"; - }; - setAccessToken?: (token: string) => void; -} - -interface UserResponse { - user_id: string; - user_email: string; - user_role: string; -} - -const VirtualKeysTable = ({ - keys, - setKeys, - isLoading = false, - pagination, - onPageChange, - pageSize = 50, - organizations, - refresh, - onSortChange, - currentSort, - setAccessToken, -}: AllKeysTableProps) => { - const { userId: userID, userRole, accessToken, premiumUser } = useAuthorized(); - const { teams } = useTeams(); - const [selectedKeyId, setSelectedKeyId] = useState(null); - const [userList, setUserList] = useState([]); - const [sorting, setSorting] = React.useState(() => { - if (currentSort) { - return [ - { - id: currentSort.sortBy, - desc: currentSort.sortOrder === "desc", - }, - ]; - } - return [ - { - id: "created_at", - desc: true, - }, - ]; - }); - const [expandedAccordions, setExpandedAccordions] = useState>({}); - - // Use the filter logic hook - - const { filters, filteredKeys, allKeyAliases, allTeams, allOrganizations, handleFilterChange, handleFilterReset } = - useFilterLogic({ - keys, - teams, - organizations, - accessToken, - }); - - useEffect(() => { - if (accessToken) { - const user_IDs = keys.map((key) => key.user_id).filter((id) => id !== null); - const fetchUserList = async () => { - const userListData = await userListCall(accessToken, user_IDs, 1, 100); - setUserList(userListData.users); - }; - fetchUserList(); - } - }, [accessToken, keys]); - - // Add a useEffect to call refresh when a key is created - useEffect(() => { - if (!refresh || typeof window === "undefined") { - return; - } - const handleStorageChange = () => { - refresh(); - }; - - // Listen for storage events that might indicate a key was created - window.addEventListener("storage", handleStorageChange); - - return () => { - window.removeEventListener("storage", handleStorageChange); - }; - }, [refresh]); - - const columns: ColumnDef[] = [ - { - id: "expander", - header: () => null, - cell: ({ row }) => - row.getCanExpand() ? ( - - ) : null, - }, - { - id: "token", - accessorKey: "token", - header: "Key ID", - cell: (info) => ( -
- - - -
- ), - }, - { - id: "key_alias", - accessorKey: "key_alias", - header: "Key Alias", - cell: (info) => { - const value = info.getValue() as string; - return ( - {value ? (value.length > 20 ? `${value.slice(0, 20)}...` : value) : "-"} - ); - }, - }, - { - id: "key_name", - accessorKey: "key_name", - header: "Secret Key", - cell: (info) => {info.getValue() as string}, - }, - { - id: "team_alias", - accessorKey: "team_id", - header: "Team Alias", - cell: ({ row, getValue }) => { - const teamId = getValue() as string; - const team = teams?.find((t) => t.team_id === teamId); - return team?.team_alias || "Unknown"; - }, - }, - { - id: "team_id", - accessorKey: "team_id", - header: "Team ID", - cell: (info) => ( - - {info.getValue() ? `${(info.getValue() as string).slice(0, 7)}...` : "-"} - - ), - }, - { - id: "organization_id", - accessorKey: "organization_id", - header: "Organization ID", - cell: (info) => (info.getValue() ? info.renderValue() : "-"), - }, - { - id: "user_email", - accessorKey: "user_id", - header: "User Email", - cell: (info) => { - const userId = info.getValue() as string; - const user = userList.find((u) => u.user_id === userId); - return user?.user_email ? ( - - {user?.user_email.slice(0, 20)}... - - ) : ( - "-" - ); - }, - }, - { - id: "user_id", - accessorKey: "user_id", - header: "User ID", - cell: (info) => { - const userId = info.getValue() as string | null; - if (userId && userId.length > 15) { - return ( - - {userId.slice(0, 7)}... - - ); - } - return userId ? userId : "-"; - }, - }, - { - id: "created_at", - accessorKey: "created_at", - header: "Created At", - cell: (info) => { - const value = info.getValue(); - return value ? new Date(value as string).toLocaleDateString() : "-"; - }, - }, - { - id: "created_by", - accessorKey: "created_by", - header: "Created By", - cell: (info) => { - const value = info.getValue() as string | null; - if (value && value.length > 15) { - return ( - - {value.slice(0, 7)}... - - ); - } - return value; - }, - }, - { - id: "updated_at", - accessorKey: "updated_at", - header: "Updated At", - cell: (info) => { - const value = info.getValue(); - return value ? new Date(value as string).toLocaleDateString() : "Never"; - }, - }, - { - id: "expires", - accessorKey: "expires", - header: "Expires", - cell: (info) => { - const value = info.getValue(); - return value ? new Date(value as string).toLocaleDateString() : "Never"; - }, - }, - { - id: "spend", - accessorKey: "spend", - header: "Spend (USD)", - cell: (info) => formatNumberWithCommas(info.getValue() as number, 4), - }, - { - id: "max_budget", - accessorKey: "max_budget", - header: "Budget (USD)", - cell: (info) => { - const maxBudget = info.getValue() as number | null; - if (maxBudget === null) { - return "Unlimited"; - } - return `$${formatNumberWithCommas(maxBudget)}`; - }, - }, - { - id: "budget_reset_at", - accessorKey: "budget_reset_at", - header: "Budget Reset", - cell: (info) => { - const value = info.getValue(); - return value ? new Date(value as string).toLocaleString() : "Never"; - }, - }, - { - id: "models", - accessorKey: "models", - header: "Models", - cell: (info) => { - const models = info.getValue() as string[]; - return ( -
- {Array.isArray(models) ? ( -
- {models.length === 0 ? ( - - All Proxy Models - - ) : ( - <> -
- {models.length > 3 && ( -
- { - setExpandedAccordions((prev) => ({ - ...prev, - [info.row.id]: !prev[info.row.id], - })); - }} - /> -
- )} -
- {models.slice(0, 3).map((model, index) => - model === "all-proxy-models" ? ( - - All Proxy Models - - ) : ( - - - {model.length > 30 - ? `${getModelDisplayName(model).slice(0, 30)}...` - : getModelDisplayName(model)} - - - ), - )} - {models.length > 3 && !expandedAccordions[info.row.id] && ( - - - +{models.length - 3} {models.length - 3 === 1 ? "more model" : "more models"} - - - )} - {expandedAccordions[info.row.id] && ( -
- {models.slice(3).map((model, index) => - model === "all-proxy-models" ? ( - - All Proxy Models - - ) : ( - - - {model.length > 30 - ? `${getModelDisplayName(model).slice(0, 30)}...` - : getModelDisplayName(model)} - - - ), - )} -
- )} -
-
- - )} -
- ) : null} -
- ); - }, - }, - { - id: "rate_limits", - header: "Rate Limits", - cell: ({ row }) => { - const key = row.original; - return ( -
-
TPM: {key.tpm_limit !== null ? key.tpm_limit : "Unlimited"}
-
RPM: {key.rpm_limit !== null ? key.rpm_limit : "Unlimited"}
-
- ); - }, - }, - ]; - - const filterOptions: FilterOption[] = [ - { - name: "Team ID", - label: "Team ID", - isSearchable: true, - searchFn: async (searchText: string) => { - if (!allTeams || allTeams.length === 0) return []; - - const filteredTeams = allTeams.filter( - (team) => - team.team_id.toLowerCase().includes(searchText.toLowerCase()) || - (team.team_alias && team.team_alias.toLowerCase().includes(searchText.toLowerCase())), - ); - - return filteredTeams.map((team) => ({ - label: `${team.team_alias || team.team_id} (${team.team_id})`, - value: team.team_id, - })); - }, - }, - { - name: "Organization ID", - label: "Organization ID", - isSearchable: true, - searchFn: async (searchText: string) => { - if (!allOrganizations || allOrganizations.length === 0) return []; - - const filteredOrgs = allOrganizations.filter( - (org) => org.organization_id?.toLowerCase().includes(searchText.toLowerCase()) ?? false, - ); - - return filteredOrgs - .filter((org) => org.organization_id !== null && org.organization_id !== undefined) - .map((org) => ({ - label: `${org.organization_id || "Unknown"} (${org.organization_id})`, - value: org.organization_id as string, - })); - }, - }, - { - name: "Key Alias", - label: "Key Alias", - isSearchable: true, - searchFn: async (searchText) => { - const filteredKeyAliases = allKeyAliases.filter((key) => { - return key.toLowerCase().includes(searchText.toLowerCase()); - }); - - return filteredKeyAliases.map((key) => { - return { - label: key, - value: key, - }; - }); - }, - }, - { - name: "User ID", - label: "User ID", - isSearchable: false, - }, - { - name: "Key Hash", - label: "Key Hash", - isSearchable: false, - }, - ]; - - console.log(`keys: ${JSON.stringify(keys)}`); - - const table = useReactTable({ - data: filteredKeys, - columns: columns.filter((col) => col.id !== "expander"), - state: { - sorting, - }, - onSortingChange: (updaterOrValue) => { - const newSorting = typeof updaterOrValue === "function" ? updaterOrValue(sorting) : updaterOrValue; - console.log(`newSorting: ${JSON.stringify(newSorting)}`); - setSorting(newSorting); - if (newSorting && newSorting.length > 0) { - const sortState = newSorting[0]; - const sortBy = sortState.id; - const sortOrder = sortState.desc ? "desc" : "asc"; - console.log(`sortBy: ${sortBy}, sortOrder: ${sortOrder}`); - handleFilterChange({ - ...filters, - "Sort By": sortBy, - "Sort Order": sortOrder, - }); - onSortChange?.(sortBy, sortOrder); - } - }, - getCoreRowModel: getCoreRowModel(), - getSortedRowModel: getSortedRowModel(), - enableSorting: true, - manualSorting: false, - }); - - // Update local sorting state when currentSort prop changes - React.useEffect(() => { - if (currentSort) { - setSorting([ - { - id: currentSort.sortBy, - desc: currentSort.sortOrder === "desc", - }, - ]); - } - }, [currentSort]); - - return ( -
- {selectedKeyId ? ( - setSelectedKeyId(null)} - keyData={filteredKeys.find((k) => k.token === selectedKeyId)} - onKeyDataUpdate={(updatedKeyData) => { - setKeys((keys) => - keys.map((key) => { - if (key.token === updatedKeyData.token) { - return updateExistingKeys(key, updatedKeyData); - } - return key; - }), - ); - if (refresh) refresh(); // Minimal fix: refresh the full key list after an update - }} - onDelete={() => { - setKeys((keys) => keys.filter((key) => key.token !== selectedKeyId)); - if (refresh) refresh(); // Minimal fix: refresh the full key list after a delete - }} - accessToken={accessToken} - userID={userID} - userRole={userRole} - teams={allTeams} - premiumUser={premiumUser} - setAccessToken={setAccessToken} - /> - ) : ( -
-
- -
- -
- - Showing{" "} - {isLoading - ? "..." - : `${(pagination.currentPage - 1) * pageSize + 1} - ${Math.min(pagination.currentPage * pageSize, pagination.totalCount)}`}{" "} - of {isLoading ? "..." : pagination.totalCount} results - - -
- - Page {isLoading ? "..." : pagination.currentPage} of {isLoading ? "..." : pagination.totalPages} - - - - - -
-
-
-
-
- - - {table.getHeaderGroups().map((headerGroup) => ( - - {headerGroup.headers.map((header) => ( - -
-
- {header.isPlaceholder - ? null - : flexRender(header.column.columnDef.header, header.getContext())} -
- {header.id !== "actions" && ( -
- {header.column.getIsSorted() ? ( - { - asc: , - desc: , - }[header.column.getIsSorted() as string] - ) : ( - - )} -
- )} -
-
- ))} -
- ))} -
- - {isLoading ? ( - - -
-

🚅 Loading keys...

-
-
-
- ) : filteredKeys.length > 0 ? ( - table.getRowModel().rows.map((row) => ( - - {row.getVisibleCells().map((cell) => ( - 3 ? "px-0" : ""}`} - > - {flexRender(cell.column.columnDef.cell, cell.getContext())} - - ))} - - )) - ) : ( - - -
-

No keys found

-
-
-
- )} -
-
-
-
-
-
- )} -
- ); -}; - -export default VirtualKeysTable; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts deleted file mode 100644 index ac174a554e8..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/hooks/useFilterLogic.ts +++ /dev/null @@ -1,189 +0,0 @@ -import { useCallback, useEffect, useState, useRef } from "react"; -import { useQuery } from "@tanstack/react-query"; -import { debounce } from "lodash"; -import { KeyResponse, Team } from "@/components/key_team_helpers/key_list"; -import { keyListCall, Organization } from "@/components/networking"; -import { defaultPageSize } from "@/components/constants"; -import { fetchAllKeyAliases, fetchAllOrganizations, fetchAllTeams } from "@/components/key_team_helpers/filter_helpers"; - -export interface FilterState { - "Team ID": string; - "Organization ID": string; - "Key Alias": string; - [key: string]: string; - "User ID": string; - "Sort By": string; - "Sort Order": string; -} - -export function useFilterLogic({ - keys, - teams, - organizations, - accessToken, -}: { - keys: KeyResponse[]; - teams: Team[] | null; - organizations: Organization[] | null; - accessToken: string | null; -}) { - const defaultFilters: FilterState = { - "Team ID": "", - "Organization ID": "", - "Key Alias": "", - "User ID": "", - "Sort By": "created_at", - "Sort Order": "desc", - }; - const [filters, setFilters] = useState(defaultFilters); - const [allTeams, setAllTeams] = useState(teams || []); - const [allOrganizations, setAllOrganizations] = useState(organizations || []); - const [filteredKeys, setFilteredKeys] = useState(keys); - const lastSearchTimestamp = useRef(0); - const debouncedSearch = useCallback( - debounce(async (filters: FilterState) => { - if (!accessToken) { - return; - } - - const currentTimestamp = Date.now(); - lastSearchTimestamp.current = currentTimestamp; - - try { - // Make the API call using userListCall with all filter parameters - const data = await keyListCall( - accessToken, - filters["Organization ID"] || null, - filters["Team ID"] || null, - filters["Key Alias"] || null, - filters["User ID"] || null, - filters["Key Hash"] || null, - 1, // Reset to first page when searching - defaultPageSize, - filters["Sort By"] || null, - filters["Sort Order"] || null, - ); - - // Only update state if this is the most recent search - if (currentTimestamp === lastSearchTimestamp.current) { - if (data) { - setFilteredKeys(data.keys); - console.log("called from debouncedSearch filters:", JSON.stringify(filters)); - console.log("called from debouncedSearch data:", JSON.stringify(data)); - } - } - } catch (error) { - console.error("Error searching users:", error); - } - }, 300), - [accessToken], - ); - // Apply filters to keys whenever keys or filters change - useEffect(() => { - if (!keys) { - setFilteredKeys([]); - return; - } - - let result = [...keys]; - - // Apply Team ID filter - if (filters["Team ID"]) { - result = result.filter((key) => key.team_id === filters["Team ID"]); - } - - // Apply Organization ID filter - if (filters["Organization ID"]) { - result = result.filter((key) => key.organization_id === filters["Organization ID"]); - } - - setFilteredKeys(result); - }, [keys, filters]); - - // Fetch all data for filters when component mounts - useEffect(() => { - const loadAllFilterData = async () => { - // Load all teams - no organization filter needed here - const teamsData = await fetchAllTeams(accessToken); - if (teamsData.length > 0) { - setAllTeams(teamsData); - } - - // Load all organizations - const orgsData = await fetchAllOrganizations(accessToken); - if (orgsData.length > 0) { - setAllOrganizations(orgsData); - } - }; - - if (accessToken) { - loadAllFilterData(); - } - }, [accessToken]); - - const queryAllKeysQuery = useQuery({ - queryKey: ["allKeys"], - queryFn: async () => { - if (!accessToken) throw new Error("Access token required"); - return await fetchAllKeyAliases(accessToken); - }, - enabled: !!accessToken, - }); - const allKeyAliases = queryAllKeysQuery.data || []; - - // Update teams and organizations when props change - useEffect(() => { - if (teams && teams.length > 0) { - setAllTeams((prevTeams) => { - // Only update if we don't already have a larger set of teams - return prevTeams.length < teams.length ? teams : prevTeams; - }); - } - }, [teams]); - - useEffect(() => { - if (organizations && organizations.length > 0) { - setAllOrganizations((prevOrgs) => { - // Only update if we don't already have a larger set of organizations - return prevOrgs.length < organizations.length ? organizations : prevOrgs; - }); - } - }, [organizations]); - - const handleFilterChange = (newFilters: Record) => { - // Update filters state - setFilters({ - "Team ID": newFilters["Team ID"] || "", - "Organization ID": newFilters["Organization ID"] || "", - "Key Alias": newFilters["Key Alias"] || "", - "User ID": newFilters["User ID"] || "", - "Sort By": newFilters["Sort By"] || "created_at", - "Sort Order": newFilters["Sort Order"] || "desc", - }); - - // Fetch keys based on new filters - const updatedFilters = { - ...filters, - ...newFilters, - }; - debouncedSearch(updatedFilters); - }; - - const handleFilterReset = () => { - // Reset filters state - setFilters(defaultFilters); - - // Reset selections - debouncedSearch(defaultFilters); - }; - - return { - filters, - filteredKeys, - allKeyAliases, - allTeams, - allOrganizations, - handleFilterChange, - handleFilterReset, - }; -} diff --git a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/page.tsx b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/page.tsx index 611d92f1a32..56f780b2962 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/page.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/virtual-keys/page.tsx @@ -1,16 +1,18 @@ "use client"; -import VirtualKeysTable from "@/app/(dashboard)/virtual-keys/components/VirtualKeysTable/VirtualKeysTable"; import { useState } from "react"; -import useKeyList from "@/components/key_team_helpers/key_list"; +import useKeyList, { KeyResponse } from "@/components/key_team_helpers/key_list"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -import { Col, Grid } from "@tremor/react"; -import CreateKey from "@/app/(dashboard)/virtual-keys/components/CreateKey"; import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; +import UserDashboard from "@/components/user_dashboard"; +import useTeams from "@/app/(dashboard)/hooks/useTeams"; +import { Organization } from "@/components/networking"; const VirtualKeysPage = () => { - const { accessToken, userRole } = useAuthorized(); + const { accessToken, userRole, userId, premiumUser, userEmail } = useAuthorized(); + const { teams, setTeams } = useTeams(); const [createClicked, setCreateClicked] = useState(false); + const [organizations, setOrganizations] = useState([]); const queryClient = new QueryClient(); @@ -28,20 +30,21 @@ const VirtualKeysPage = () => { return ( -
- - - - {}} - organizations={null} - /> - - -
+ {}} + setUserEmail={() => {}} + setTeams={setTeams} + setKeys={setKeys} + premiumUser={premiumUser} + organizations={organizations} + addKey={addKey} + createClicked={createClicked} + />
); }; diff --git a/ui/litellm-dashboard/src/components/templates/view_key_table.tsx b/ui/litellm-dashboard/src/components/templates/view_key_table.tsx index d146d5ba79e..86903d55530 100644 --- a/ui/litellm-dashboard/src/components/templates/view_key_table.tsx +++ b/ui/litellm-dashboard/src/components/templates/view_key_table.tsx @@ -90,7 +90,7 @@ interface ViewKeyTableProps { selectedTeam: Team | null; setSelectedTeam: React.Dispatch>; data: KeyResponse[] | null; - setData: React.Dispatch>; + setData: (keys: KeyResponse[]) => void; teams: Team[] | null; premiumUser: boolean; currentOrg: Organization | null; @@ -135,13 +135,6 @@ interface CombinedLimits { [key: string]: CombinedLimit; // Index signature allowing string keys } -/** - * ───────────────────────────────────────────────────────────────────────── - * @deprecated - * This component is being DEPRECATED in favor of src/app/(dashboard)/virtual-keys/components/VirtualKeysTable/ - * Please contribute to the new refactor. - * ───────────────────────────────────────────────────────────────────────── - */ const ViewKeyTable: React.FC = ({ userID, userRole, diff --git a/ui/litellm-dashboard/src/components/user_dashboard.tsx b/ui/litellm-dashboard/src/components/user_dashboard.tsx index b6470e49521..4d98b37a8f8 100644 --- a/ui/litellm-dashboard/src/components/user_dashboard.tsx +++ b/ui/litellm-dashboard/src/components/user_dashboard.tsx @@ -20,11 +20,12 @@ import ViewUserTeam from "./view_user_team"; import DashboardTeam from "./dashboard_default_team"; import Onboarding from "../app/onboarding/page"; import { useSearchParams, useRouter } from "next/navigation"; -import { Team } from "./key_team_helpers/key_list"; +import { KeyResponse, Team } from "./key_team_helpers/key_list"; import { jwtDecode } from "jwt-decode"; import { Typography } from "antd"; import { clearTokenCookies } from "@/utils/cookieUtils"; import { clearMCPAuthTokens } from "./mcp_tools/mcp_auth_storage"; +import { Setter } from "@/types"; export interface ProxySettings { PROXY_BASE_URL: string | null; @@ -56,7 +57,7 @@ interface UserDashboardProps { setUserRole: React.Dispatch>; setUserEmail: React.Dispatch>; setTeams: React.Dispatch>; - setKeys: React.Dispatch>; + setKeys: (keys: KeyResponse[]) => void; premiumUser: boolean; organizations: Organization[] | null; addKey: (data: any) => void; diff --git a/ui/litellm-dashboard/src/components/view_users.tsx b/ui/litellm-dashboard/src/components/view_users.tsx index 19479ce21a9..7fcb7f54b82 100644 --- a/ui/litellm-dashboard/src/components/view_users.tsx +++ b/ui/litellm-dashboard/src/components/view_users.tsx @@ -30,6 +30,8 @@ import { updateExistingKeys } from "@/utils/dataUtils"; import { useDebouncedState } from "@tanstack/react-pacer/debouncer"; import { isAdminRole } from "@/utils/roles"; import NotificationsManager from "./molecules/notifications_manager"; +import { Setter } from "@/types"; +import { KeyResponse } from "@/components/key_team_helpers/key_list"; interface ViewUserDashboardProps { accessToken: string | null; From c97495c5d9f9a7356230f4bff6fb4c50a7467f82 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 8 Oct 2025 17:39:42 -0700 Subject: [PATCH 67/84] docs(mcp.md): document new allow/disallow tool parameters functionality --- docs/my-website/docs/mcp.md | 115 +++++++++++++++++++++++++- litellm/proxy/_new_secret_config.yaml | 33 ++++++-- 2 files changed, 138 insertions(+), 10 deletions(-) diff --git a/docs/my-website/docs/mcp.md b/docs/my-website/docs/mcp.md index 9365b0a5542..bb0759598af 100644 --- a/docs/my-website/docs/mcp.md +++ b/docs/my-website/docs/mcp.md @@ -246,7 +246,7 @@ litellm_settings: -## MCP Tool Filtering +## Allow/Disallow MCP Tools Control which tools are available from your MCP servers. You can either allow only specific tools or block dangerous ones. @@ -306,6 +306,119 @@ mcp_servers: - If you specify both `allowed_tools` and `disallowed_tools`, the allowed list takes priority - Tool names are case-sensitive +--- + +## Allow/Disallow MCP Tool Parameters + +Control which parameters are allowed for specific MCP tools using the `allowed_params` configuration. This provides fine-grained control over tool usage by restricting the parameters that can be passed to each tool. + +### Configuration + +`allowed_params` is a dictionary that maps tool names to lists of allowed parameter names. When configured, only the specified parameters will be accepted for that tool - any other parameters will be rejected with a 403 error. + +```yaml title="config.yaml with allowed_params" showLineNumbers +mcp_servers: + deepwiki_mcp: + url: https://mcp.deepwiki.com/mcp + transport: "http" + auth_type: "none" + allowed_params: + # Tool name: list of allowed parameters + read_wiki_contents: ["status"] + + my_api_mcp: + url: "https://my-api-server.com" + auth_type: "api_key" + auth_value: "my-key" + allowed_params: + # Using unprefixed tool name + getpetbyid: ["status"] + # Using prefixed tool name (both formats work) + my_api_mcp-findpetsbystatus: ["status", "limit"] + # Another tool with multiple allowed params + create_issue: ["title", "body", "labels"] +``` + +### How It Works + +1. **Tool-specific filtering**: Each tool can have its own list of allowed parameters +2. **Flexible naming**: Tool names can be specified with or without the server prefix (e.g., both `"getpetbyid"` and `"my_api_mcp-getpetbyid"` work) +3. **Whitelist approach**: Only parameters in the allowed list are permitted +4. **Unlisted tools**: If `allowed_params` is not set, all parameters are allowed +5. **Error handling**: Requests with disallowed parameters receive a 403 error with details about which parameters are allowed + +### Example Request Behavior + +With the configuration above, here's how requests would be handled: + +**✅ Allowed Request:** +```json +{ + "tool": "read_wiki_contents", + "arguments": { + "status": "active" + } +} +``` + +**❌ Rejected Request:** +```json +{ + "tool": "read_wiki_contents", + "arguments": { + "status": "active", + "limit": 10 // This parameter is not allowed + } +} +``` + +**Error Response:** +```json +{ + "error": "Parameters ['limit'] are not allowed for tool read_wiki_contents. Allowed parameters: ['status']. Contact proxy admin to allow these parameters." +} +``` + +### Use Cases + +- **Security**: Prevent users from accessing sensitive parameters or dangerous operations +- **Cost control**: Restrict expensive parameters (e.g., limiting result counts) +- **Compliance**: Enforce parameter usage policies for regulatory requirements +- **Staged rollouts**: Gradually enable parameters as tools are tested +- **Multi-tenant isolation**: Different parameter access for different user groups + +### Combining with Tool Filtering + +`allowed_params` works alongside `allowed_tools` and `disallowed_tools` for complete control: + +```yaml title="Combined filtering example" showLineNumbers +mcp_servers: + github_mcp: + url: "https://api.githubcopilot.com/mcp" + auth_type: oauth2 + authorization_url: https://github.com/login/oauth/authorize + token_url: https://github.com/login/oauth/access_token + client_id: os.environ/GITHUB_OAUTH_CLIENT_ID + client_secret: os.environ/GITHUB_OAUTH_CLIENT_SECRET + scopes: ["public_repo", "user:email"] + # Only allow specific tools + allowed_tools: ["create_issue", "list_issues", "search_issues"] + # Block dangerous operations + disallowed_tools: ["delete_repo"] + # Restrict parameters per tool + allowed_params: + create_issue: ["title", "body", "labels"] + list_issues: ["state", "sort", "perPage"] + search_issues: ["query", "sort", "order", "perPage"] +``` + +This configuration ensures that: +1. Only the three listed tools are available +2. The `delete_repo` tool is explicitly blocked +3. Each tool can only use its specified parameters + +--- + ## MCP Server Access Control LiteLLM Proxy provides two methods for controlling access to specific MCP servers: diff --git a/litellm/proxy/_new_secret_config.yaml b/litellm/proxy/_new_secret_config.yaml index ff686844168..996df3d3f56 100644 --- a/litellm/proxy/_new_secret_config.yaml +++ b/litellm/proxy/_new_secret_config.yaml @@ -17,15 +17,30 @@ model_list: api_key: dummy mcp_servers: - github_mcp: - url: "https://api.githubcopilot.com/mcp" - auth_type: oauth2 - authorization_url: https://github.com/login/oauth/authorize - token_url: https://github.com/login/oauth/access_token - client_id: os.environ/GITHUB_OAUTH_CLIENT_ID - client_secret: os.environ/GITHUB_OAUTH_CLIENT_SECRET - scopes: ["public_repo", "user:email"] - + deepwiki_mcp: + url: https://mcp.deepwiki.com/mcp + transport: "http" + auth_type: "none" + allowed_params: + read_wiki_contents: ["status"] + + # my_api_mcp: + # url: "http://0.0.0.0:8090" + # spec_path: "/Users/krrishdholakia/Documents/temp_py_folder/example_openapi.json" + # auth_type: none + # allowed_tools: ["getpetbyid", "my_api_mcp-findpetsbystatus"] + # # Configure allowed parameters per tool + # # Key: tool name (with or without prefix) + # # Value: list of allowed parameter names + # allowed_params: + # # Using unprefixed tool name + # "getpetbyid": ["status"] + # # Using prefixed tool name (both formats work) + # "my_api_mcp-findpetsbystatus": ["status", "limit"] + # # Example: allow only specific params for another tool + # # "another_tool": ["param1", "param2"] + + litellm_settings: callbacks: ["prometheus"] custom_prometheus_metadata_labels: ["metadata.initiative", "metadata.business-unit"] From 97031dc8eeac09b3576c6a40dffdce5d59084de5 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 8 Oct 2025 17:41:04 -0700 Subject: [PATCH 68/84] Fix - (openrouter): move cache_control to content blocks for claude/gemini (#15345) * test_openrouter_transform_request_with_cache_control * fix CacheControlSupportedModels * test_openrouter_transform_request_with_cache_control_gemini --- .../llms/openrouter/chat/transformation.py | 66 +++++- .../test_openrouter_chat_transformation.py | 203 ++++++++++++++++++ 2 files changed, 268 insertions(+), 1 deletion(-) diff --git a/litellm/llms/openrouter/chat/transformation.py b/litellm/llms/openrouter/chat/transformation.py index bf57218c91d..a47689a30b7 100644 --- a/litellm/llms/openrouter/chat/transformation.py +++ b/litellm/llms/openrouter/chat/transformation.py @@ -6,6 +6,7 @@ Calls done in OpenAI/openai.py as OpenRouter is openai-compatible. Docs: https://openrouter.ai/docs/parameters """ +from enum import Enum from typing import Any, AsyncIterator, Iterator, List, Optional, Tuple, Union import httpx @@ -20,6 +21,12 @@ from ...openai.chat.gpt_transformation import OpenAIGPTConfig from ..common_utils import OpenRouterException +class CacheControlSupportedModels(str, Enum): + """Models that support cache_control in content blocks.""" + CLAUDE = "claude" + GEMINI = "gemini" + + class OpenrouterConfig(OpenAIGPTConfig): def map_openai_params( self, @@ -48,19 +55,73 @@ class OpenrouterConfig(OpenAIGPTConfig): ) return mapped_openai_params + def _supports_cache_control_in_content(self, model: str) -> bool: + """ + Check if the model supports cache_control in content blocks. + + Returns: + bool: True if model supports cache_control (Claude or Gemini models) + """ + model_lower = model.lower() + return any( + supported_model.value in model_lower + for supported_model in CacheControlSupportedModels + ) + def remove_cache_control_flag_from_messages_and_tools( self, model: str, messages: List[AllMessageValues], tools: Optional[List["ChatCompletionToolParam"]] = None, ) -> Tuple[List[AllMessageValues], Optional[List["ChatCompletionToolParam"]]]: - if "claude" in model.lower(): # don't remove 'cache_control' flag + if self._supports_cache_control_in_content(model): return messages, tools else: return super().remove_cache_control_flag_from_messages_and_tools( model, messages, tools ) + def _move_cache_control_to_content( + self, messages: List[AllMessageValues] + ) -> List[AllMessageValues]: + """ + Move cache_control from message level to content blocks. + OpenRouter requires cache_control to be inside content blocks, not at message level. + + When cache_control is at message level, it's added to ALL content blocks + to cache the entire message content. + """ + transformed_messages = [] + for message in messages: + message_copy = dict(message) + cache_control = message_copy.pop("cache_control", None) + + if cache_control is not None: + content = message_copy.get("content") + + if isinstance(content, list): + # Content is already a list, add cache_control to all blocks + if len(content) > 0: + content_copy = [] + for block in content: + block_copy = dict(block) + block_copy["cache_control"] = cache_control + content_copy.append(block_copy) + message_copy["content"] = content_copy + else: + # Content is a string, convert to structured format + message_copy["content"] = [ + { + "type": "text", + "text": content, + "cache_control": cache_control, + } + ] + + transformed_messages.append(message_copy) + + return transformed_messages + def transform_request( self, model: str, @@ -75,6 +136,9 @@ class OpenrouterConfig(OpenAIGPTConfig): Returns: dict: The transformed request. Sent as the body of the API call. """ + if self._supports_cache_control_in_content(model): + messages = self._move_cache_control_to_content(messages) + extra_body = optional_params.pop("extra_body", {}) response = super().transform_request( model, messages, optional_params, litellm_params, headers diff --git a/tests/test_litellm/llms/openrouter/chat/test_openrouter_chat_transformation.py b/tests/test_litellm/llms/openrouter/chat/test_openrouter_chat_transformation.py index 02eb872abab..ff81ba84c00 100644 --- a/tests/test_litellm/llms/openrouter/chat/test_openrouter_chat_transformation.py +++ b/tests/test_litellm/llms/openrouter/chat/test_openrouter_chat_transformation.py @@ -114,3 +114,206 @@ def test_openrouter_cache_control_flag_removal(): headers={}, ) assert transformed_request["messages"][0].get("cache_control") is None + + + +def test_openrouter_transform_request_with_cache_control(): + """ + Test transform_request moves cache_control from message level to content blocks (string content). + + Input: + { + "role": "user", + "content": "what are the key terms...", + "cache_control": {"type": "ephemeral"} + } + + Expected Output: + { + "role": "user", + "content": [ + { + "type": "text", + "text": "what are the key terms...", + "cache_control": {"type": "ephemeral"} + } + ] + } + """ + import json + config = OpenrouterConfig() + + messages = [ + { + "role": "system", + "content": [ + { + "type": "text", + "text": "You are an AI assistant tasked with analyzing legal documents." + }, + { + "type": "text", + "text": "Here is the full text of a complex legal agreement" + } + ] + }, + { + "role": "user", + "content": "what are the key terms and conditions in this agreement?", + "cache_control": {"type": "ephemeral"} + } + ] + + transformed_request = config.transform_request( + model="openrouter/anthropic/claude-3-5-sonnet-20240620", + messages=messages, + optional_params={}, + litellm_params={}, + headers={}, + ) + + print("\n=== Transformed Request ===") + print(json.dumps(transformed_request, indent=4, default=str)) + + assert "messages" in transformed_request + assert len(transformed_request["messages"]) == 2 + + user_message = transformed_request["messages"][1] + assert user_message["role"] == "user" + assert isinstance(user_message["content"], list) + assert user_message["content"][0]["type"] == "text" + assert user_message["content"][0]["cache_control"] == {"type": "ephemeral"} + + +def test_openrouter_transform_request_with_cache_control_list_content(): + """ + Test transform_request moves cache_control to all content blocks when content is already a list. + + Input: + { + "role": "system", + "content": [ + {"type": "text", "text": "You are a historian..."}, + {"type": "text", "text": "HUGE TEXT BODY"} + ], + "cache_control": {"type": "ephemeral"} + } + + Expected Output: + { + "role": "system", + "content": [ + { + "type": "text", + "text": "You are a historian...", + "cache_control": {"type": "ephemeral"} + }, + { + "type": "text", + "text": "HUGE TEXT BODY", + "cache_control": {"type": "ephemeral"} + } + ] + } + """ + import json + config = OpenrouterConfig() + + messages = [ + { + "role": "system", + "content": [ + { + "type": "text", + "text": "You are a historian studying the fall of the Roman Empire." + }, + { + "type": "text", + "text": "HUGE TEXT BODY" + } + ], + "cache_control": {"type": "ephemeral"} + }, + { + "role": "user", + "content": "What triggered the collapse?" + } + ] + + transformed_request = config.transform_request( + model="openrouter/anthropic/claude-3-5-sonnet-20240620", + messages=messages, + optional_params={}, + litellm_params={}, + headers={}, + ) + + print("\n=== Transformed Request (List Content) ===") + print(json.dumps(transformed_request, indent=4, default=str)) + + assert "messages" in transformed_request + assert len(transformed_request["messages"]) == 2 + + system_message = transformed_request["messages"][0] + assert system_message["role"] == "system" + assert isinstance(system_message["content"], list) + assert len(system_message["content"]) == 2 + assert system_message["content"][0]["cache_control"] == {"type": "ephemeral"} + assert system_message["content"][1]["cache_control"] == {"type": "ephemeral"} + assert "cache_control" not in system_message + + +def test_openrouter_transform_request_with_cache_control_gemini(): + """ + Test transform_request moves cache_control to content blocks for Gemini models. + + Input: + { + "role": "user", + "content": "Analyze this data", + "cache_control": {"type": "ephemeral"} + } + + Expected Output: + { + "role": "user", + "content": [ + { + "type": "text", + "text": "Analyze this data", + "cache_control": {"type": "ephemeral"} + } + ] + } + """ + import json + config = OpenrouterConfig() + + messages = [ + { + "role": "user", + "content": "Analyze this data", + "cache_control": {"type": "ephemeral"} + } + ] + + transformed_request = config.transform_request( + model="openrouter/google/gemini-2.0-flash-exp:free", + messages=messages, + optional_params={}, + litellm_params={}, + headers={}, + ) + + print("\n=== Transformed Request (Gemini) ===") + print(json.dumps(transformed_request, indent=4, default=str)) + + assert "messages" in transformed_request + assert len(transformed_request["messages"]) == 1 + + user_message = transformed_request["messages"][0] + assert user_message["role"] == "user" + assert isinstance(user_message["content"], list) + assert user_message["content"][0]["type"] == "text" + assert user_message["content"][0]["cache_control"] == {"type": "ephemeral"} + \ No newline at end of file From 3beb4a0797baee8694804b02aaa171be312ba1de Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Wed, 8 Oct 2025 17:54:48 -0700 Subject: [PATCH 69/84] added reload to base URL when FF is turned off --- .../src/app/(dashboard)/layout.tsx | 2 +- ui/litellm-dashboard/src/app/page.tsx | 1 - .../src/hooks/useFeatureFlags.tsx | 25 +++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx b/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx index 3d38a7362be..68ab361356f 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/layout.tsx @@ -63,7 +63,7 @@ export default function Layout({ children }: { children: React.ReactNode }) { />
- +
{children}
diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index ceee52399ef..cefa680fc82 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -23,7 +23,6 @@ import ModelHubTable from "@/components/model_hub_table"; import NewUsagePage from "@/components/new_usage"; import APIRef from "@/components/api_ref"; import ChatUI from "@/components/chat_ui/ChatUI"; -import Sidebar from "@/components/leftnav"; import Usage from "@/components/usage"; import CacheDashboard from "@/components/cache_dashboard"; import { getUiConfig, proxyBaseUrl, setGlobalLitellmHeaderName } from "@/components/networking"; diff --git a/ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx b/ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx index f1914f463a1..d3d676d2d21 100644 --- a/ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx +++ b/ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx @@ -1,5 +1,13 @@ "use client"; + +const getBasePath = () => { + const raw = process.env.NEXT_PUBLIC_BASE_URL ?? ""; + const trimmed = raw.replace(/^\/+|\/+$/g, ""); // strip leading/trailing slashes + return trimmed ? `/${trimmed}/` : "/"; // ensure trailing slash +}; + import React, { createContext, useContext, useEffect, useState } from "react"; +import { useRouter } from "next/navigation"; // ⟵ add this type Flags = { refactoredUIFlag: boolean; @@ -48,6 +56,8 @@ function writeFlagSafely(v: boolean) { } export const FeatureFlagsProvider = ({ children }: { children: React.ReactNode }) => { + const router = useRouter(); // ⟵ add this + // Lazy init reads from localStorage only on the client const [refactoredUIFlag, setRefactoredUIFlagState] = useState(() => readFlagSafely()); @@ -73,6 +83,21 @@ export const FeatureFlagsProvider = ({ children }: { children: React.ReactNode } return () => window.removeEventListener("storage", onStorage); }, []); + // Redirect to base path the moment the flag is OFF. + useEffect(() => { + if (refactoredUIFlag) return; // only act when turned off + + const base = getBasePath(); + const normalize = (p: string) => (p.endsWith("/") ? p : p + "/"); + const current = normalize(window.location.pathname); + + // Avoid a redirect loop if we're already at the base path. + if (current !== base) { + // Replace so the "off" redirect doesn't pollute history. + router.replace(base); + } + }, [refactoredUIFlag, router]); + return ( {children} ); From ff4eda0ea67730da3363f2d151decb9ee3ce4e9c Mon Sep 17 00:00:00 2001 From: Achintya Rajan Date: Wed, 8 Oct 2025 18:00:15 -0700 Subject: [PATCH 70/84] removed unscoped changes (will be added later) --- .../components/modals/CreateUserModal.tsx | 346 ------------------ .../src/components/leftnav.tsx | 41 +-- 2 files changed, 18 insertions(+), 369 deletions(-) delete mode 100644 ui/litellm-dashboard/src/app/(dashboard)/components/modals/CreateUserModal.tsx diff --git a/ui/litellm-dashboard/src/app/(dashboard)/components/modals/CreateUserModal.tsx b/ui/litellm-dashboard/src/app/(dashboard)/components/modals/CreateUserModal.tsx deleted file mode 100644 index be3ea48bf2a..00000000000 --- a/ui/litellm-dashboard/src/app/(dashboard)/components/modals/CreateUserModal.tsx +++ /dev/null @@ -1,346 +0,0 @@ -"use client"; - -// TODO: refactor -import React, { useState, useEffect } from "react"; -import { Button, Modal, Form, Input, message, Select, InputNumber, Select as Select2 } from "antd"; -import { - Button as Button2, - Text, - TextInput, - SelectItem, - Accordion, - AccordionHeader, - AccordionBody, - Title, -} from "@tremor/react"; -import NotificationsManager from "@/components/molecules/notifications_manager"; -const { Option } = Select; -import { Tooltip } from "antd"; -import { InfoCircleOutlined } from "@ant-design/icons"; -import { useQueryClient } from "@tanstack/react-query"; -import OnboardingModal, { InvitationLink } from "@/components/onboarding_link"; -import { - getProxyBaseUrl, - getProxyUISettings, - invitationCreateCall, - modelAvailableCall, - Team, - userCreateCall, -} from "@/components/networking"; -import { getModelDisplayName } from "@/components/key_team_helpers/fetch_available_models_team_key"; -import BulkCreateUsersButton from "@/components/bulk_create_users_button"; -import useTeams from "@/app/(dashboard)/hooks/useTeams"; -import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; - -// Helper function to generate UUID compatible across all environments -const generateUUID = (): string => { - if (typeof crypto !== "undefined" && crypto.randomUUID) { - return crypto.randomUUID(); - } - // Fallback UUID generation for environments without crypto.randomUUID - return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) { - const r = (Math.random() * 16) | 0; - const v = c == "x" ? r : (r & 0x3) | 0x8; - return v.toString(16); - }); -}; - -interface CreateUserModalProps { - possibleUIRoles: null | Record>; - onUserCreated?: (userId: string) => void; - isEmbedded?: boolean; -} - -interface UISettings { - PROXY_BASE_URL: string | null; - PROXY_LOGOUT_URL: string | null; - DEFAULT_TEAM_DISABLED: boolean; - SSO_ENABLED: boolean; -} - -const CreateUserModal: React.FC = ({ possibleUIRoles, onUserCreated, isEmbedded = false }) => { - const { userId: userID, accessToken } = useAuthorized(); - const queryClient = useQueryClient(); - const [uiSettings, setUISettings] = useState(null); - const [form] = Form.useForm(); - const [isModalVisible, setIsModalVisible] = useState(false); - const [apiuser, setApiuser] = useState(false); - const [userModels, setUserModels] = useState([]); - const [isInvitationLinkModalVisible, setIsInvitationLinkModalVisible] = useState(false); - const [invitationLinkData, setInvitationLinkData] = useState(null); - const [baseUrl, setBaseUrl] = useState(null); - const { teams } = useTeams(); - - // get all models - useEffect(() => { - const fetchData = async () => { - try { - const userRole = "any"; // You may need to get the user role dynamically - const modelDataResponse = await modelAvailableCall(accessToken, userID, userRole); - // Assuming modelDataResponse.data contains an array of model objects with a 'model_name' property - const availableModels = []; - for (let i = 0; i < modelDataResponse.data.length; i++) { - const model = modelDataResponse.data[i]; - availableModels.push(model.id); - } - console.log("Model data response:", modelDataResponse.data); - console.log("Available models:", availableModels); - - // Assuming modelDataResponse.data contains an array of model names - setUserModels(availableModels); - - // get ui settings - const uiSettingsResponse = await getProxyUISettings(accessToken); - console.log("uiSettingsResponse:", uiSettingsResponse); - - setUISettings(uiSettingsResponse); - } catch (error) { - console.error("Error fetching model data:", error); - } - }; - - setBaseUrl(getProxyBaseUrl()); - - fetchData(); // Call the function to fetch model data when the component mounts - }, []); // Empty dependency array to run only once - - const handleOk = () => { - setIsModalVisible(false); - form.resetFields(); - }; - - const handleCancel = () => { - setIsModalVisible(false); - setApiuser(false); - form.resetFields(); - }; - - const handleCreate = async (formValues: { user_id: string; models?: string[]; user_role: string }) => { - try { - NotificationsManager.info("Making API Call"); - if (!isEmbedded) { - setIsModalVisible(true); - } - if ((!formValues.models || formValues.models.length === 0) && formValues.user_role !== "proxy_admin") { - console.log("formValues.user_role", formValues.user_role); - // If models is empty or undefined, set it to "no-default-models" - formValues.models = ["no-default-models"]; - } - console.log("formValues in create user:", formValues); - const response = await userCreateCall(accessToken, null, formValues); - await queryClient.invalidateQueries({ queryKey: ["userList"] }); - console.log("user create Response:", response); - setApiuser(true); - const user_id = response.data?.user_id || response.user_id; - - // Call the callback if provided (for embedded mode) - if (onUserCreated && isEmbedded) { - onUserCreated(user_id); - form.resetFields(); - return; // Skip the invitation flow when embedded - } - - // only do invite link flow if sso is not enabled - if (!uiSettings?.SSO_ENABLED) { - invitationCreateCall(accessToken, user_id).then((data) => { - data.has_user_setup_sso = false; - setInvitationLinkData(data); - setIsInvitationLinkModalVisible(true); - }); - } else { - // create an InvitationLink Object for this user for the SSO flow - // for SSO the invite link is the proxy base url since the User just needs to login - const invitationLink: InvitationLink = { - id: generateUUID(), // Generate a unique ID - user_id: user_id, - is_accepted: false, - accepted_at: null, - expires_at: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000), // Set expiry to 7 days from now - created_at: new Date(), - created_by: userID, // Assuming userID is the current user creating the invitation - updated_at: new Date(), - updated_by: userID, - has_user_setup_sso: true, - }; - setInvitationLinkData(invitationLink); - setIsInvitationLinkModalVisible(true); - } - - NotificationsManager.success("API user Created"); - form.resetFields(); - localStorage.removeItem("userData" + userID); - } catch (error: any) { - const errorMessage = error.response?.data?.detail || error?.message || "Error creating the user"; - NotificationsManager.fromBackend(errorMessage); - console.error("Error creating the user:", error); - } - }; - - // Modify the return statement to handle embedded mode - if (isEmbedded) { - return ( -
- - - - - - {possibleUIRoles && - Object.entries(possibleUIRoles).map(([role, { ui_label, description }]) => ( - -
- {ui_label}{" "} -

- {description} -

-
-
- ))} -
-
- - - - - - - - -
- -
-
- ); - } - - // Original return for standalone mode - return ( -
- setIsModalVisible(true)}> - + Invite User - - - - Create a User who can own keys -
- - - - - Global Proxy Role{" "} - - - - - } - name="user_role" - > - - {possibleUIRoles && - Object.entries(possibleUIRoles).map(([role, { ui_label, description }]) => ( - -
- {ui_label}{" "} -

- {description} -

-
-
- ))} -
-
- - - - - - - - - - - Personal Key Creation - - - - Models{" "} - - - - - } - name="models" - help="Models user has access to, outside of team scope." - > - - - All Proxy Models - - {userModels.map((model) => ( - - {getModelDisplayName(model)} - - ))} - - - - -
- -
-
-
- {apiuser && ( - - )} -
- ); -}; - -export default CreateUserModal; diff --git a/ui/litellm-dashboard/src/components/leftnav.tsx b/ui/litellm-dashboard/src/components/leftnav.tsx index a0d8d162c68..e47691d3bb4 100644 --- a/ui/litellm-dashboard/src/components/leftnav.tsx +++ b/ui/litellm-dashboard/src/components/leftnav.tsx @@ -1,4 +1,8 @@ import { Layout, Menu } from "antd"; +import Link from "next/link"; +import { List } from "postcss/lib/list"; +import { Text, Button } from "@tremor/react"; +import { useState } from "react"; import { KeyOutlined, PlayCircleOutlined, @@ -56,17 +60,6 @@ interface MenuItem { icon?: React.ReactNode; } -/** ---------- Base URL helpers ---------- */ -/** - * Normalizes NEXT_PUBLIC_BASE_URL to either "/" or "/ui/" (always with a trailing slash). - * Supported env values: "" or "ui/". - */ -const getBasePath = () => { - const raw = process.env.NEXT_PUBLIC_BASE_URL ?? ""; - const trimmed = raw.replace(/^\/+|\/+$/g, ""); // strip leading/trailing slashes - return trimmed ? `/${trimmed}/` : "/"; // ensure trailing slash -}; - const Sidebar: React.FC = ({ accessToken, setPage, userRole, defaultSelectedKey, collapsed = false }) => { // Note: If a menu item does not have a role, it is visible to all roles. const menuItems: MenuItem[] = [ @@ -225,7 +218,6 @@ const Sidebar: React.FC = ({ accessToken, setPage, userRole, defau ], }, ]; - // Find the menu item that matches the default page, including in submenus const findMenuItemKey = (page: string): string => { // Check top-level items @@ -260,15 +252,6 @@ const Sidebar: React.FC = ({ accessToken, setPage, userRole, defau return true; }); - // Centralized navigation that prefixes the base path ("/" or "/ui/") - const goTo = (page: string) => { - const base = getBasePath(); // "/" or "/ui/" - const newSearchParams = new URLSearchParams(window.location.search); - newSearchParams.set("page", page); - window.history.pushState(null, "", `${base}?${newSearchParams.toString()}`); // e.g. "/ui/?page=..." - setPage(page); - }; - return ( = ({ accessToken, setPage, userRole, defau key: child.key, icon: child.icon, label: child.label, - onClick: () => goTo(child.page), + onClick: () => { + const newSearchParams = new URLSearchParams(window.location.search); + newSearchParams.set("page", child.page); + window.history.pushState(null, "", `?${newSearchParams.toString()}`); + setPage(child.page); + }, })), - onClick: !item.children ? () => goTo(item.page) : undefined, + onClick: !item.children + ? () => { + const newSearchParams = new URLSearchParams(window.location.search); + newSearchParams.set("page", item.page); + window.history.pushState(null, "", `?${newSearchParams.toString()}`); + setPage(item.page); + } + : undefined, }))} /> From 2f42c806cbba2693b222026ec6cbc99432dff716 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 8 Oct 2025 18:10:43 -0700 Subject: [PATCH 71/84] [Fix] x-litellm-cache-key header not being returned on cache hit (#15348) * fix: x-cache-key * test_cache_key_in_hidden_params_acompletion * fix: remove_cache_control_flag_from_messages_and_tools --- litellm/caching/caching_handler.py | 16 ++---- .../llms/openai/chat/gpt_transformation.py | 8 +-- tests/local_testing/test_caching.py | 53 +++++++++++++++++++ 3 files changed, 62 insertions(+), 15 deletions(-) diff --git a/litellm/caching/caching_handler.py b/litellm/caching/caching_handler.py index 17cd50f75aa..6bbc3231224 100644 --- a/litellm/caching/caching_handler.py +++ b/litellm/caching/caching_handler.py @@ -14,10 +14,10 @@ It utilizes the (RedisCache, s3Cache, RedisSemanticCache, QdrantSemanticCache, I In each method it will call the appropriate method from caching.py """ -import time import asyncio import datetime import inspect +import time from typing import ( TYPE_CHECKING, Any, @@ -62,12 +62,10 @@ else: LiteLLMLoggingObj = Any -from litellm.litellm_core_utils.streaming_handler import CustomStreamWrapper - - from litellm.litellm_core_utils.core_helpers import ( -_get_parent_otel_span_from_kwargs, + _get_parent_otel_span_from_kwargs, ) +from litellm.litellm_core_utils.streaming_handler import CustomStreamWrapper class CachingHandlerResponse(BaseModel): @@ -214,9 +212,7 @@ class LLMCachingHandler: end_time=end_time, cache_hit=cache_hit, ) - cache_key = litellm.cache._get_preset_cache_key_from_kwargs( - **kwargs - ) + cache_key = litellm.cache.get_cache_key(**kwargs) if ( isinstance(cached_result, BaseModel) or isinstance(cached_result, CustomStreamWrapper) @@ -330,9 +326,7 @@ class LLMCachingHandler: end_time=end_time, cache_hit=cache_hit ) - cache_key = litellm.cache._get_preset_cache_key_from_kwargs( - **kwargs - ) + cache_key = litellm.cache.get_cache_key(**kwargs) if ( isinstance(cached_result, BaseModel) or isinstance(cached_result, CustomStreamWrapper) diff --git a/litellm/llms/openai/chat/gpt_transformation.py b/litellm/llms/openai/chat/gpt_transformation.py index 204916e3a48..3e18617905c 100644 --- a/litellm/llms/openai/chat/gpt_transformation.py +++ b/litellm/llms/openai/chat/gpt_transformation.py @@ -397,13 +397,13 @@ class OpenAIGPTConfig(BaseLLMModelInfo, BaseConfig): ) from litellm.types.llms.openai import ChatCompletionToolParam - for message in messages: - message = cast( + for i, message in enumerate(messages): + messages[i] = cast( AllMessageValues, filter_value_from_dict(message, "cache_control") # type: ignore ) if tools is not None: - for tool in tools: - tool = cast( + for i, tool in enumerate(tools): + tools[i] = cast( ChatCompletionToolParam, filter_value_from_dict(tool, "cache_control"), # type: ignore ) diff --git a/tests/local_testing/test_caching.py b/tests/local_testing/test_caching.py index ee3082a9d32..30bacfff8bf 100644 --- a/tests/local_testing/test_caching.py +++ b/tests/local_testing/test_caching.py @@ -2765,3 +2765,56 @@ def test_caching_thinking_args_hit(): # test in memory cache except Exception as e: print(f"error occurred: {traceback.format_exc()}") pytest.fail(f"Error occurred: {e}") + + +@pytest.mark.asyncio +async def test_cache_key_in_hidden_params_acompletion(): + """ + Test that cache_key is present in _hidden_params on cache hits for acompletion. + + Validates fix for missing x-litellm-cache-key header on proxy cache hits. + """ + litellm.cache = Cache( + type="redis", + host=os.environ["REDIS_HOST"], + port=os.environ["REDIS_PORT"], + password=os.environ["REDIS_PASSWORD"], + ) + + unique_content = f"test cache key hidden params {uuid.uuid4()}" + messages = [{"role": "user", "content": unique_content}] + + # First call - cache miss + response1 = await litellm.acompletion( + model="gpt-3.5-turbo", + messages=messages, + mock_response="test response", + caching=True, + ) + + print(f"Response 1 _hidden_params: {response1._hidden_params}") + assert response1._hidden_params.get("cache_hit") is not True + + await asyncio.sleep(0.5) + + # Second call - cache hit + response2 = await litellm.acompletion( + model="gpt-3.5-turbo", + messages=messages, + mock_response="test response", + caching=True, + ) + + print(f"Response 2 _hidden_params: {response2._hidden_params}") + + # Verify cache hit occurred + assert response2._hidden_params.get("cache_hit") is True + + # Verify cache_key is present in _hidden_params + assert "cache_key" in response2._hidden_params + assert response2._hidden_params["cache_key"] is not None + + # Verify both responses have same ID (cache hit) + assert response1.id == response2.id + + litellm.cache = None From 422631409678036468a9fdc927c4cdca3a9196a7 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Wed, 8 Oct 2025 18:31:26 -0700 Subject: [PATCH 72/84] Add native Responses API support for litellm_proxy provider (#15347) * Initial plan * Add native Responses API support for litellm_proxy provider Co-authored-by: ishaan-jaff <29436595+ishaan-jaff@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: ishaan-jaff <29436595+ishaan-jaff@users.noreply.github.com> --- litellm/__init__.py | 3 + .../litellm_proxy/responses/transformation.py | 48 +++++++++++ litellm/utils.py | 2 + tests/local_testing/test_config.py | 21 +++++ tests/test_litellm_proxy_responses_config.py | 84 +++++++++++++++++++ 5 files changed, 158 insertions(+) create mode 100644 litellm/llms/litellm_proxy/responses/transformation.py create mode 100644 tests/test_litellm_proxy_responses_config.py diff --git a/litellm/__init__.py b/litellm/__init__.py index 60cf327c26f..e461c88efd6 100644 --- a/litellm/__init__.py +++ b/litellm/__init__.py @@ -1190,6 +1190,9 @@ from .llms.azure.responses.transformation import AzureOpenAIResponsesAPIConfig from .llms.azure.responses.o_series_transformation import ( AzureOpenAIOSeriesResponsesAPIConfig, ) +from .llms.litellm_proxy.responses.transformation import ( + LiteLLMProxyResponsesAPIConfig, +) from .llms.openai.chat.o_series_transformation import ( OpenAIOSeriesConfig as OpenAIO1Config, # maintain backwards compatibility OpenAIOSeriesConfig, diff --git a/litellm/llms/litellm_proxy/responses/transformation.py b/litellm/llms/litellm_proxy/responses/transformation.py new file mode 100644 index 00000000000..0b81d8be7d8 --- /dev/null +++ b/litellm/llms/litellm_proxy/responses/transformation.py @@ -0,0 +1,48 @@ +""" +Responses API transformation for LiteLLM Proxy provider. + +LiteLLM Proxy supports the OpenAI Responses API natively when the underlying model supports it. +This config enables pass-through behavior to the proxy's /v1/responses endpoint. +""" + +from typing import Optional + +from litellm.llms.openai.responses.transformation import OpenAIResponsesAPIConfig +from litellm.secret_managers.main import get_secret_str +from litellm.types.utils import LlmProviders + + +class LiteLLMProxyResponsesAPIConfig(OpenAIResponsesAPIConfig): + """ + Configuration for LiteLLM Proxy Responses API support. + + Extends OpenAI's config since the proxy follows OpenAI's API spec, + but uses LITELLM_PROXY_API_BASE for the base URL. + """ + + @property + def custom_llm_provider(self) -> LlmProviders: + return LlmProviders.LITELLM_PROXY + + def get_complete_url( + self, + api_base: Optional[str], + litellm_params: dict, + ) -> str: + """ + Get the endpoint for LiteLLM Proxy responses API. + + Uses LITELLM_PROXY_API_BASE environment variable if api_base is not provided. + """ + api_base = api_base or get_secret_str("LITELLM_PROXY_API_BASE") + + if api_base is None: + raise ValueError( + "api_base not set for LiteLLM Proxy responses API. " + "Set via api_base parameter or LITELLM_PROXY_API_BASE environment variable" + ) + + # Remove trailing slashes + api_base = api_base.rstrip("/") + + return f"{api_base}/responses" diff --git a/litellm/utils.py b/litellm/utils.py index 47250615ef6..5861d703a34 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -7305,6 +7305,8 @@ class ProviderConfigManager: return litellm.AzureOpenAIOSeriesResponsesAPIConfig() else: return litellm.AzureOpenAIResponsesAPIConfig() + elif litellm.LlmProviders.LITELLM_PROXY == provider: + return litellm.LiteLLMProxyResponsesAPIConfig() return None @staticmethod diff --git a/tests/local_testing/test_config.py b/tests/local_testing/test_config.py index a0a31c2e78c..5d8fae282ce 100644 --- a/tests/local_testing/test_config.py +++ b/tests/local_testing/test_config.py @@ -401,3 +401,24 @@ def test_provider_config_manager_bedrock_converse_like(): # model="gpt-3.5-turbo", provider=LlmProviders(provider) # ) # _check_provider_config(config, provider) + + +def test_litellm_proxy_responses_api_config(): + """Test that litellm_proxy provider returns correct Responses API config""" + from litellm.llms.litellm_proxy.responses.transformation import ( + LiteLLMProxyResponsesAPIConfig, + ) + + config = ProviderConfigManager.get_provider_responses_api_config( + model="litellm_proxy/gpt-4", + provider=LlmProviders.LITELLM_PROXY, + ) + print(f"config: {config}") + assert config is not None, "Config should not be None for litellm_proxy provider" + assert isinstance( + config, LiteLLMProxyResponsesAPIConfig + ), f"Expected LiteLLMProxyResponsesAPIConfig, got {type(config)}" + assert ( + config.custom_llm_provider == LlmProviders.LITELLM_PROXY + ), "custom_llm_provider should be LITELLM_PROXY" + diff --git a/tests/test_litellm_proxy_responses_config.py b/tests/test_litellm_proxy_responses_config.py new file mode 100644 index 00000000000..6242a9dbf3b --- /dev/null +++ b/tests/test_litellm_proxy_responses_config.py @@ -0,0 +1,84 @@ +""" +Unit test for LiteLLM Proxy Responses API configuration. +""" + +import pytest + +from litellm.types.utils import LlmProviders +from litellm.utils import ProviderConfigManager + + +def test_litellm_proxy_responses_api_config(): + """Test that litellm_proxy provider returns correct Responses API config""" + from litellm.llms.litellm_proxy.responses.transformation import ( + LiteLLMProxyResponsesAPIConfig, + ) + + config = ProviderConfigManager.get_provider_responses_api_config( + model="litellm_proxy/gpt-4", + provider=LlmProviders.LITELLM_PROXY, + ) + print(f"config: {config}") + assert config is not None, "Config should not be None for litellm_proxy provider" + assert isinstance( + config, LiteLLMProxyResponsesAPIConfig + ), f"Expected LiteLLMProxyResponsesAPIConfig, got {type(config)}" + assert ( + config.custom_llm_provider == LlmProviders.LITELLM_PROXY + ), "custom_llm_provider should be LITELLM_PROXY" + + +def test_litellm_proxy_responses_api_config_get_complete_url(): + """Test that get_complete_url works correctly""" + import os + from litellm.llms.litellm_proxy.responses.transformation import ( + LiteLLMProxyResponsesAPIConfig, + ) + + config = LiteLLMProxyResponsesAPIConfig() + + # Test with explicit api_base + url = config.get_complete_url( + api_base="https://my-proxy.example.com", + litellm_params={}, + ) + assert url == "https://my-proxy.example.com/responses" + + # Test with trailing slash + url = config.get_complete_url( + api_base="https://my-proxy.example.com/", + litellm_params={}, + ) + assert url == "https://my-proxy.example.com/responses" + + # Test that it raises error when api_base is None and env var is not set + if "LITELLM_PROXY_API_BASE" in os.environ: + del os.environ["LITELLM_PROXY_API_BASE"] + + with pytest.raises(ValueError, match="api_base not set"): + config.get_complete_url(api_base=None, litellm_params={}) + + +def test_litellm_proxy_responses_api_config_inherits_from_openai(): + """Test that LiteLLMProxyResponsesAPIConfig extends OpenAI config properly""" + from litellm.llms.litellm_proxy.responses.transformation import ( + LiteLLMProxyResponsesAPIConfig, + ) + from litellm.llms.openai.responses.transformation import ( + OpenAIResponsesAPIConfig, + ) + + config = LiteLLMProxyResponsesAPIConfig() + + # Should inherit from OpenAI config + assert isinstance(config, OpenAIResponsesAPIConfig) + + # Should have the correct provider set + assert config.custom_llm_provider == LlmProviders.LITELLM_PROXY + + +if __name__ == "__main__": + test_litellm_proxy_responses_api_config() + test_litellm_proxy_responses_api_config_get_complete_url() + test_litellm_proxy_responses_api_config_inherits_from_openai() + print("All tests passed!") From c4022ade497a18cb41be464bc7bce938fb589ca3 Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Wed, 8 Oct 2025 18:34:30 -0700 Subject: [PATCH 73/84] test mapped tests MCP --- ...odel_prices_and_context_window_backup.json | 33 ++++++ .../auth/test_user_api_key_auth_mcp.py | 112 ++++++++++-------- .../test_team_endpoints.py | 7 +- 3 files changed, 100 insertions(+), 52 deletions(-) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 29a65887747..06cb67e56c5 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -12975,6 +12975,39 @@ "supports_vision": true, "supports_web_search": true }, + "gpt-5-pro-2025-10-06": { + "input_cost_per_token": 1.5e-05, + "input_cost_per_token_batches": 7.5e-06, + "litellm_provider": "openai", + "max_input_tokens": 400000, + "max_output_tokens": 272000, + "max_tokens": 272000, + "mode": "responses", + "output_cost_per_token": 1.2e-04, + "output_cost_per_token_batches": 6e-05, + "supported_endpoints": [ + "/v1/batch", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_native_streaming": false, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_web_search": true + }, "gpt-5-codex": { "cache_read_input_token_cost": 1.25e-07, "input_cost_per_token": 1.25e-06, diff --git a/tests/test_litellm/proxy/_experimental/mcp_server/auth/test_user_api_key_auth_mcp.py b/tests/test_litellm/proxy/_experimental/mcp_server/auth/test_user_api_key_auth_mcp.py index 7da941db390..7927aa7f486 100644 --- a/tests/test_litellm/proxy/_experimental/mcp_server/auth/test_user_api_key_auth_mcp.py +++ b/tests/test_litellm/proxy/_experimental/mcp_server/auth/test_user_api_key_auth_mcp.py @@ -1053,7 +1053,7 @@ async def test_get_team_object_permission_with_already_loaded_permission(): from the team object without making an additional DB call. """ from litellm.proxy._types import LiteLLM_ObjectPermissionTable, LiteLLM_TeamTable - + # Create mock object permission mock_object_permission = LiteLLM_ObjectPermissionTable( object_permission_id="perm-123", @@ -1077,28 +1077,34 @@ async def test_get_team_object_permission_with_already_loaded_permission(): ) # Mock get_team_object to return our team with loaded permission + # Also need to mock prisma_client from proxy_server + mock_prisma = MagicMock() with patch( - "litellm.proxy._experimental.mcp_server.auth.user_api_key_auth_mcp.get_team_object" - ) as mock_get_team: + "litellm.proxy.proxy_server.prisma_client", + mock_prisma, + ): with patch( - "litellm.proxy._experimental.mcp_server.auth.user_api_key_auth_mcp.get_object_permission" - ) as mock_get_perm: - mock_get_team.return_value = mock_team_obj - - # Call the method - result = await MCPRequestHandler._get_team_object_permission( - mock_user_auth - ) - - # Assert we got the object permission - assert result == mock_object_permission - assert result.mcp_servers == ["server1", "server2"] - - # Verify get_team_object was called - mock_get_team.assert_called_once() - - # Verify get_object_permission was NOT called (since it was already loaded) - mock_get_perm.assert_not_called() + "litellm.proxy.auth.auth_checks.get_team_object" + ) as mock_get_team: + with patch( + "litellm.proxy.auth.auth_checks.get_object_permission" + ) as mock_get_perm: + mock_get_team.return_value = mock_team_obj + + # Call the method + result = await MCPRequestHandler._get_team_object_permission( + mock_user_auth + ) + + # Assert we got the object permission + assert result == mock_object_permission + assert result.mcp_servers == ["server1", "server2"] + + # Verify get_team_object was called + mock_get_team.assert_called_once() + + # Verify get_object_permission was NOT called (since it was already loaded) + mock_get_perm.assert_not_called() @pytest.mark.asyncio @@ -1108,7 +1114,7 @@ async def test_get_team_object_permission_fetches_from_db_when_not_loaded(): is not loaded but object_permission_id exists. """ from litellm.proxy._types import LiteLLM_ObjectPermissionTable, LiteLLM_TeamTable - + # Create mock object permission (to be returned from DB) mock_object_permission = LiteLLM_ObjectPermissionTable( object_permission_id="perm-456", @@ -1132,35 +1138,41 @@ async def test_get_team_object_permission_fetches_from_db_when_not_loaded(): ) # Mock the methods + # Also need to mock prisma_client from proxy_server + mock_prisma = MagicMock() with patch( - "litellm.proxy._experimental.mcp_server.auth.user_api_key_auth_mcp.get_team_object" - ) as mock_get_team: + "litellm.proxy.proxy_server.prisma_client", + mock_prisma, + ): with patch( - "litellm.proxy._experimental.mcp_server.auth.user_api_key_auth_mcp.get_object_permission" - ) as mock_get_perm: - mock_get_team.return_value = mock_team_obj - mock_get_perm.return_value = mock_object_permission - - # Call the method - result = await MCPRequestHandler._get_team_object_permission( - mock_user_auth - ) - - # Assert we got the object permission - assert result == mock_object_permission - assert result.mcp_servers == ["server3", "server4"] - - # Verify get_team_object was called - mock_get_team.assert_called_once() - - # Verify get_object_permission WAS called (since it wasn't loaded) - mock_get_perm.assert_called_once_with( - object_permission_id="perm-456", - prisma_client=mock.ANY, - user_api_key_cache=mock.ANY, - parent_otel_span=mock_user_auth.parent_otel_span, - proxy_logging_obj=mock.ANY, - ) + "litellm.proxy.auth.auth_checks.get_team_object" + ) as mock_get_team: + with patch( + "litellm.proxy.auth.auth_checks.get_object_permission" + ) as mock_get_perm: + mock_get_team.return_value = mock_team_obj + mock_get_perm.return_value = mock_object_permission + + # Call the method + result = await MCPRequestHandler._get_team_object_permission( + mock_user_auth + ) + + # Assert we got the object permission + assert result == mock_object_permission + assert result.mcp_servers == ["server3", "server4"] + + # Verify get_team_object was called + mock_get_team.assert_called_once() + + # Verify get_object_permission WAS called (since it wasn't loaded) + mock_get_perm.assert_called_once_with( + object_permission_id="perm-456", + prisma_client=mock.ANY, + user_api_key_cache=mock.ANY, + parent_otel_span=mock_user_auth.parent_otel_span, + proxy_logging_obj=mock.ANY, + ) @pytest.mark.asyncio @@ -1170,7 +1182,7 @@ async def test_get_allowed_mcp_servers_for_team_uses_helper(): helper which handles both loaded and unloaded object_permission cases. """ from litellm.proxy._types import LiteLLM_ObjectPermissionTable - + # Create mock object permission with servers and access groups mock_object_permission = LiteLLM_ObjectPermissionTable( object_permission_id="perm-789", diff --git a/tests/test_litellm/proxy/management_endpoints/test_team_endpoints.py b/tests/test_litellm/proxy/management_endpoints/test_team_endpoints.py index 929ec41e09a..99325693b53 100644 --- a/tests/test_litellm/proxy/management_endpoints/test_team_endpoints.py +++ b/tests/test_litellm/proxy/management_endpoints/test_team_endpoints.py @@ -2,7 +2,6 @@ import asyncio import json import os import sys -from litellm._uuid import uuid from typing import Optional, cast from unittest.mock import AsyncMock, MagicMock, patch @@ -10,6 +9,8 @@ import pytest from fastapi import HTTPException from fastapi.testclient import TestClient +from litellm._uuid import uuid + sys.path.insert( 0, os.path.abspath("../../../") ) # Adds the parent directory to the system path @@ -412,8 +413,10 @@ async def test_new_team_with_mcp_tool_permissions(mock_db_client, mock_admin_aut ) # Verify mcp_tool_permissions was stored + import json assert "mcp_tool_permissions" in created_permission_data - assert created_permission_data["mcp_tool_permissions"] == { + # mcp_tool_permissions is stored as a JSON string + assert json.loads(created_permission_data["mcp_tool_permissions"]) == { "server_a": ["read_wiki_structure", "read_wiki_contents"], "server_b": ["ask_question"], } From d28ecbc900584426dd36395e2b2403e196e73d9b Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 8 Oct 2025 18:45:13 -0700 Subject: [PATCH 74/84] feat(ui_sso.py): support mapping app roles from azure entra id to litellm user roles Closes LIT-1228 --- litellm/proxy/management_endpoints/types.py | 40 +++++++++- litellm/proxy/management_endpoints/ui_sso.py | 80 +++++++++++++++++++- 2 files changed, 115 insertions(+), 5 deletions(-) diff --git a/litellm/proxy/management_endpoints/types.py b/litellm/proxy/management_endpoints/types.py index 0e811669d1a..ad2ad0a5fe5 100644 --- a/litellm/proxy/management_endpoints/types.py +++ b/litellm/proxy/management_endpoints/types.py @@ -4,10 +4,48 @@ Types for the management endpoints Might include fastapi/proxy requirements.txt related imports """ -from typing import List +from typing import List, Optional, cast from fastapi_sso.sso.base import OpenID +from litellm.proxy._types import LitellmUserRoles + + +def is_valid_litellm_user_role(role_str: str) -> bool: + """ + Check if a string is a valid LitellmUserRoles enum value (case-insensitive). + + Args: + role_str: String to validate (e.g., "proxy_admin", "PROXY_ADMIN", "internal_user") + + Returns: + True if the string matches a valid LitellmUserRoles value, False otherwise + """ + try: + # Use _value2member_map_ for O(1) lookup, case-insensitive + return role_str.lower() in LitellmUserRoles._value2member_map_ + except Exception: + return False + + +def get_litellm_user_role(role_str: str) -> Optional[LitellmUserRoles]: + """ + Convert a string to a LitellmUserRoles enum if valid (case-insensitive). + + Args: + role_str: String to convert (e.g., "proxy_admin", "PROXY_ADMIN", "internal_user") + + Returns: + LitellmUserRoles enum if valid, None otherwise + """ + try: + # Use _value2member_map_ for O(1) lookup, case-insensitive + result = LitellmUserRoles._value2member_map_.get(role_str.lower()) + return cast(Optional[LitellmUserRoles], result) + except Exception: + return None + class CustomOpenID(OpenID): team_ids: List[str] + user_role: Optional[LitellmUserRoles] = None diff --git a/litellm/proxy/management_endpoints/ui_sso.py b/litellm/proxy/management_endpoints/ui_sso.py index 9eec551fb7a..d8f426e1ae6 100644 --- a/litellm/proxy/management_endpoints/ui_sso.py +++ b/litellm/proxy/management_endpoints/ui_sso.py @@ -58,7 +58,7 @@ from litellm.proxy.management_endpoints.sso_helper_utils import ( has_admin_ui_access, ) from litellm.proxy.management_endpoints.team_endpoints import new_team, team_member_add -from litellm.proxy.management_endpoints.types import CustomOpenID +from litellm.proxy.management_endpoints.types import CustomOpenID, get_litellm_user_role from litellm.proxy.utils import ( PrismaClient, ProxyLogging, @@ -277,6 +277,7 @@ def generic_response_convertor( last_name=response.get(generic_user_last_name_attribute_name), provider=response.get(generic_provider_attribute_name), team_ids=all_teams, + user_role=None, ) @@ -1145,7 +1146,7 @@ class SSOAuthenticationHandler: ) -> str: """ Get the redirect URL for SSO - + Note: existing_key is not added to the URL to avoid changing the callback URL. It should be passed via the state parameter instead. """ @@ -1348,7 +1349,7 @@ class SSOAuthenticationHandler: Checks the request 'source' if a cli state token was passed in This is used to authenticate through the CLI login flow. - + The state parameter format is: {PREFIX}:{key}:{existing_key} - If existing_key is provided, it's included in the state - The state parameter is used to pass data through the OAuth flow without changing the callback URL @@ -1673,22 +1674,49 @@ class MicrosoftSSOHandler: access_token=microsoft_sso.access_token ) + # Extract app roles from the id_token JWT + app_roles = MicrosoftSSOHandler.get_app_roles_from_id_token( + id_token=microsoft_sso.id_token + ) + verbose_proxy_logger.debug(f"Extracted app roles from id_token: {app_roles}") + + # Combine groups and app roles + user_role: Optional[LitellmUserRoles] = None + if app_roles: + # Check if any app role is a valid LitellmUserRoles + for role_str in app_roles: + role = get_litellm_user_role(role_str) + if role is not None: + user_role = role + verbose_proxy_logger.debug( + f"Found valid LitellmUserRoles '{role.value}' in app_roles" + ) + break + + verbose_proxy_logger.debug( + f"Combined team_ids (groups + app roles): {user_team_ids}" + ) + # if user is trying to get the raw sso response for debugging, return the raw sso response if return_raw_sso_response: original_msft_result[MicrosoftSSOHandler.GRAPH_API_RESPONSE_KEY] = ( user_team_ids ) + original_msft_result["app_roles"] = app_roles return original_msft_result or {} result = MicrosoftSSOHandler.openid_from_response( response=original_msft_result, team_ids=user_team_ids, + user_role=user_role, ) return result @staticmethod def openid_from_response( - response: Optional[dict], team_ids: List[str] + response: Optional[dict], + team_ids: List[str], + user_role: Optional[LitellmUserRoles], ) -> CustomOpenID: response = response or {} verbose_proxy_logger.debug(f"Microsoft SSO Callback Response: {response}") @@ -1700,10 +1728,54 @@ class MicrosoftSSOHandler: first_name=response.get("givenName"), last_name=response.get("surname"), team_ids=team_ids, + user_role=user_role, ) verbose_proxy_logger.debug(f"Microsoft SSO OpenID Response: {openid_response}") return openid_response + @staticmethod + def get_app_roles_from_id_token(id_token: Optional[str]) -> List[str]: + """ + Extract app roles from the Microsoft Entra ID (Azure AD) id_token JWT. + + App roles are assigned in the Azure AD Enterprise Application and appear + in the 'roles' claim of the id_token. + + Args: + id_token (Optional[str]): The JWT id_token from Microsoft SSO + + Returns: + List[str]: List of app role names assigned to the user + """ + if not id_token: + verbose_proxy_logger.debug("No id_token provided for app role extraction") + return [] + + try: + import jwt + + # Decode the JWT without signature verification + # (signature is already verified by fastapi_sso) + decoded_token = jwt.decode(id_token, options={"verify_signature": False}) + + # Extract roles claim from the token + roles = decoded_token.get("roles", []) + + if roles and isinstance(roles, list): + verbose_proxy_logger.debug( + f"Found {len(roles)} app role(s) in id_token: {roles}" + ) + return roles + else: + verbose_proxy_logger.debug( + "No app roles found in id_token or roles claim is not a list" + ) + return [] + + except Exception as e: + verbose_proxy_logger.error(f"Error extracting app roles from id_token: {e}") + return [] + @staticmethod async def get_user_groups_from_graph_api( access_token: Optional[str] = None, From ff3f356416562dc27b5648876e69e22e02f7ced4 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 8 Oct 2025 18:46:28 -0700 Subject: [PATCH 75/84] docs(docs/): add app role support to docs --- docs/my-website/docs/proxy/admin_ui_sso.md | 17 +++++++ docs/my-website/docs/tutorials/msft_sso.md | 52 ++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/docs/my-website/docs/proxy/admin_ui_sso.md b/docs/my-website/docs/proxy/admin_ui_sso.md index 32bf97410cb..439aae6f96a 100644 --- a/docs/my-website/docs/proxy/admin_ui_sso.md +++ b/docs/my-website/docs/proxy/admin_ui_sso.md @@ -81,6 +81,23 @@ MICROSOFT_TENANT="5a39737 http://localhost:4000/sso/callback ``` +**Using App Roles for User Permissions** + +You can assign user roles directly from Entra ID using App Roles. LiteLLM will automatically read the app roles from the JWT token and assign the corresponding role to the user. + +Supported roles: +- `proxy_admin` - Admin over the platform +- `proxy_admin_viewer` - Can login, view all keys, view all spend (read-only) +- `org_admin` - Admin over a specific organization +- `internal_user` - Can login, view/create/delete their own keys, view their spend + +To set up app roles: +1. Navigate to your App Registration on https://portal.azure.com/ +2. Go to "App roles" and create a new app role +3. Use one of the supported role names above (e.g., `proxy_admin`) +4. Assign users to these roles in your Enterprise Application +5. When users sign in via SSO, LiteLLM will automatically assign them the corresponding role + diff --git a/docs/my-website/docs/tutorials/msft_sso.md b/docs/my-website/docs/tutorials/msft_sso.md index f7ad6440f2e..d24a2896696 100644 --- a/docs/my-website/docs/tutorials/msft_sso.md +++ b/docs/my-website/docs/tutorials/msft_sso.md @@ -140,6 +140,58 @@ litellm_settings: +## 4. Using Entra ID App Roles for User Permissions + +You can assign user roles directly from Entra ID using App Roles. LiteLLM will automatically read the app roles from the JWT token during SSO sign-in and assign the corresponding role to the user. + +### 4.1 Supported Roles + +LiteLLM supports the following app roles (case-insensitive): + +- `proxy_admin` - Admin over the entire LiteLLM platform +- `proxy_admin_viewer` - Read-only admin access (can view all keys and spend) +- `org_admin` - Admin over a specific organization (can create teams and users within their org) +- `internal_user` - Standard user (can create/view/delete their own keys and view their own spend) + +### 4.2 Create App Roles in Entra ID + +1. Navigate to your App Registration on https://portal.azure.com/ +2. Go to **App roles** > **Create app role** + + + +3. Configure the app role: + - **Display name**: Proxy Admin (or your preferred display name) + - **Value**: `proxy_admin` (use one of the supported role values above) + - **Description**: Administrator access to LiteLLM proxy + - **Allowed member types**: Users/Groups + + + +4. Click **Apply** to save the role + +### 4.3 Assign Users to App Roles + +1. Navigate to **Enterprise Applications** on https://portal.azure.com/ +2. Select your LiteLLM application +3. Go to **Users and groups** > **Add user/group** +4. Select the user and assign them to one of the app roles you created + + + +### 4.4 Test the Role Assignment + +1. Sign in to LiteLLM UI via SSO as a user with an assigned app role +2. LiteLLM will automatically extract the app role from the JWT token +3. The user will be assigned the corresponding LiteLLM role in the database +4. The user's permissions will reflect their assigned role + +**How it works:** +- When a user signs in via Microsoft SSO, LiteLLM extracts the `roles` claim from the JWT `id_token` +- If any of the roles match a valid LiteLLM role (case-insensitive), that role is assigned to the user +- If multiple roles are present, LiteLLM uses the first valid role it finds +- This role assignment persists in the LiteLLM database and determines the user's access level + ## Video Walkthrough This walks through setting up sso auto-add for **Microsoft Entra ID** From 8eafb7a8fa93023d7b520bda3d22f4a1ac761758 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 8 Oct 2025 18:50:42 -0700 Subject: [PATCH 76/84] docs: doc improvements --- docs/my-website/docs/proxy/admin_ui_sso.md | 4 ++-- .../out/{model_hub_table.html => model_hub_table/index.html} | 0 litellm/proxy/_experimental/out/onboarding.html | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) rename litellm/proxy/_experimental/out/{model_hub_table.html => model_hub_table/index.html} (100%) delete mode 100644 litellm/proxy/_experimental/out/onboarding.html diff --git a/docs/my-website/docs/proxy/admin_ui_sso.md b/docs/my-website/docs/proxy/admin_ui_sso.md index 439aae6f96a..bd18dd9c690 100644 --- a/docs/my-website/docs/proxy/admin_ui_sso.md +++ b/docs/my-website/docs/proxy/admin_ui_sso.md @@ -88,8 +88,8 @@ You can assign user roles directly from Entra ID using App Roles. LiteLLM will a Supported roles: - `proxy_admin` - Admin over the platform - `proxy_admin_viewer` - Can login, view all keys, view all spend (read-only) -- `org_admin` - Admin over a specific organization -- `internal_user` - Can login, view/create/delete their own keys, view their spend +- `internal_user` - Normal user. Can login, view spend and depending on team-member permissions - view/create/delete their own keys. + To set up app roles: 1. Navigate to your App Registration on https://portal.azure.com/ diff --git a/litellm/proxy/_experimental/out/model_hub_table.html b/litellm/proxy/_experimental/out/model_hub_table/index.html similarity index 100% rename from litellm/proxy/_experimental/out/model_hub_table.html rename to litellm/proxy/_experimental/out/model_hub_table/index.html diff --git a/litellm/proxy/_experimental/out/onboarding.html b/litellm/proxy/_experimental/out/onboarding.html deleted file mode 100644 index 04c6c886768..00000000000 --- a/litellm/proxy/_experimental/out/onboarding.html +++ /dev/null @@ -1 +0,0 @@ -LiteLLM Dashboard \ No newline at end of file From 697f99c1d5be1ffc6fc9d3dea1fb150f3860f0eb Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 8 Oct 2025 18:59:00 -0700 Subject: [PATCH 77/84] docs: doc improvements --- docs/my-website/docs/tutorials/msft_sso.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/my-website/docs/tutorials/msft_sso.md b/docs/my-website/docs/tutorials/msft_sso.md index d24a2896696..2936f27297f 100644 --- a/docs/my-website/docs/tutorials/msft_sso.md +++ b/docs/my-website/docs/tutorials/msft_sso.md @@ -158,15 +158,12 @@ LiteLLM supports the following app roles (case-insensitive): 1. Navigate to your App Registration on https://portal.azure.com/ 2. Go to **App roles** > **Create app role** - - 3. Configure the app role: - **Display name**: Proxy Admin (or your preferred display name) - **Value**: `proxy_admin` (use one of the supported role values above) - **Description**: Administrator access to LiteLLM proxy - **Allowed member types**: Users/Groups - 4. Click **Apply** to save the role @@ -177,7 +174,6 @@ LiteLLM supports the following app roles (case-insensitive): 3. Go to **Users and groups** > **Add user/group** 4. Select the user and assign them to one of the app roles you created - ### 4.4 Test the Role Assignment From 37fdb486d4e4a0278e38190e5f62ec0fc6b46abc Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 8 Oct 2025 19:06:19 -0700 Subject: [PATCH 78/84] refactor: comment out oauth error raising logic for now --- .../mcp_server/auth/user_api_key_auth_mcp.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/litellm/proxy/_experimental/mcp_server/auth/user_api_key_auth_mcp.py b/litellm/proxy/_experimental/mcp_server/auth/user_api_key_auth_mcp.py index 714f2c87465..20a632f1674 100644 --- a/litellm/proxy/_experimental/mcp_server/auth/user_api_key_auth_mcp.py +++ b/litellm/proxy/_experimental/mcp_server/auth/user_api_key_auth_mcp.py @@ -114,16 +114,16 @@ class MCPRequestHandler: request.body = mock_body # type: ignore if ".well-known" in str(request.url): # public routes validated_user_api_key_auth = UserAPIKeyAuth() - elif litellm_api_key == "": - from fastapi import HTTPException + # elif litellm_api_key == "": + # from fastapi import HTTPException - raise HTTPException( - status_code=401, - detail="LiteLLM API key is missing. Please add it or use OAuth authentication.", - headers={ - "WWW-Authenticate": f'Bearer resource_metadata=f"{request.base_url}/.well-known/oauth-protected-resource"', - }, - ) + # raise HTTPException( + # status_code=401, + # detail="LiteLLM API key is missing. Please add it or use OAuth authentication.", + # headers={ + # "WWW-Authenticate": f'Bearer resource_metadata=f"{request.base_url}/.well-known/oauth-protected-resource"', + # }, + # ) else: validated_user_api_key_auth = await user_api_key_auth( api_key=litellm_api_key, request=request From 5be198248bc11fc29e93aac8bc164a5a9f057a41 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 8 Oct 2025 19:07:11 -0700 Subject: [PATCH 79/84] fix: fix linting error --- .../_experimental/mcp_server/auth/user_api_key_auth_mcp.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/litellm/proxy/_experimental/mcp_server/auth/user_api_key_auth_mcp.py b/litellm/proxy/_experimental/mcp_server/auth/user_api_key_auth_mcp.py index 20a632f1674..e77ad11fae4 100644 --- a/litellm/proxy/_experimental/mcp_server/auth/user_api_key_auth_mcp.py +++ b/litellm/proxy/_experimental/mcp_server/auth/user_api_key_auth_mcp.py @@ -5,12 +5,7 @@ from starlette.requests import Request from starlette.types import Scope from litellm._logging import verbose_logger -from litellm.proxy._types import ( - LiteLLM_TeamTable, - LitellmUserRoles, - SpecialHeaders, - UserAPIKeyAuth, -) +from litellm.proxy._types import LiteLLM_TeamTable, SpecialHeaders, UserAPIKeyAuth from litellm.proxy.auth.user_api_key_auth import user_api_key_auth From e2b7b05774ba4403f9a8c2efa12d65b348b07919 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 8 Oct 2025 19:16:22 -0700 Subject: [PATCH 80/84] docs(mcp.md): document new openapi to mcp tool support --- docs/my-website/docs/mcp.md | 195 ++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) diff --git a/docs/my-website/docs/mcp.md b/docs/my-website/docs/mcp.md index 9365b0a5542..462306e961d 100644 --- a/docs/my-website/docs/mcp.md +++ b/docs/my-website/docs/mcp.md @@ -246,6 +246,201 @@ litellm_settings: +## Converting OpenAPI Specs to MCP Servers + +LiteLLM can automatically convert OpenAPI specifications into MCP servers, allowing you to expose any REST API as MCP tools. This is useful when you have existing APIs with OpenAPI/Swagger documentation and want to make them available as MCP tools. + +### Benefits + +- **Rapid Integration**: Convert existing APIs to MCP tools without writing custom MCP server code +- **Automatic Tool Generation**: LiteLLM automatically generates MCP tools from your OpenAPI spec +- **Unified Interface**: Use the same MCP interface for both native MCP servers and OpenAPI-based APIs +- **Easy Testing**: Test and iterate on API integrations quickly + +### Configuration + +Add your OpenAPI-based MCP server to your `config.yaml`: + +```yaml title="config.yaml - OpenAPI to MCP" showLineNumbers +model_list: + - model_name: gpt-4o + litellm_params: + model: openai/gpt-4o + api_key: sk-xxxxxxx + +mcp_servers: + # OpenAPI Spec Example - Petstore API + petstore_mcp: + url: "https://petstore.swagger.io/v2" + spec_path: "/path/to/openapi.json" + auth_type: "none" + + # OpenAPI Spec with API Key Authentication + my_api_mcp: + url: "http://0.0.0.0:8090" + spec_path: "/path/to/openapi.json" + auth_type: "api_key" + auth_value: "your-api-key-here" + + # OpenAPI Spec with Bearer Token + secured_api_mcp: + url: "https://api.example.com" + spec_path: "/path/to/openapi.json" + auth_type: "bearer_token" + auth_value: "your-bearer-token" +``` + +### Configuration Parameters + +| Parameter | Required | Description | +|-----------|----------|-------------| +| `url` | Yes | The base URL of your API endpoint | +| `spec_path` | Yes | Path or URL to your OpenAPI specification file (JSON or YAML) | +| `auth_type` | No | Authentication type: `none`, `api_key`, `bearer_token`, `basic`, `authorization` | +| `auth_value` | No | Authentication value (required if `auth_type` is set) | +| `description` | No | Optional description for the MCP server | +| `allowed_tools` | No | List of specific tools to allow (see [MCP Tool Filtering](#mcp-tool-filtering)) | +| `disallowed_tools` | No | List of specific tools to block (see [MCP Tool Filtering](#mcp-tool-filtering)) | + +### Usage Example + +Once configured, you can use the OpenAPI-based MCP server just like any other MCP server: + + + + +```python title="Using OpenAPI-based MCP Server" showLineNumbers +from fastmcp import Client +import asyncio + +# Standard MCP configuration +config = { + "mcpServers": { + "petstore": { + "url": "http://localhost:4000/petstore_mcp/mcp", + "headers": { + "x-litellm-api-key": "Bearer sk-1234" + } + } + } +} + +# Create a client that connects to the server +client = Client(config) + +async def main(): + async with client: + # List available tools generated from OpenAPI spec + tools = await client.list_tools() + print(f"Available tools: {[tool.name for tool in tools]}") + + # Example: Get a pet by ID (from Petstore API) + response = await client.call_tool( + name="getpetbyid", + arguments={"petId": "1"} + ) + print(f"Response:\n{response}\n") + + # Example: Find pets by status + response = await client.call_tool( + name="findpetsbystatus", + arguments={"status": "available"} + ) + print(f"Response:\n{response}\n") + +if __name__ == "__main__": + asyncio.run(main()) +``` + + + + + +```json title="Cursor MCP Configuration for OpenAPI Server" showLineNumbers +{ + "mcpServers": { + "Petstore": { + "url": "http://localhost:4000/petstore_mcp/mcp", + "headers": { + "x-litellm-api-key": "Bearer $LITELLM_API_KEY" + } + } + } +} +``` + + + + + +```bash title="Using OpenAPI MCP Server with OpenAI" showLineNumbers +curl --location 'https://api.openai.com/v1/responses' \ +--header 'Content-Type: application/json' \ +--header "Authorization: Bearer $OPENAI_API_KEY" \ +--data '{ + "model": "gpt-4o", + "tools": [ + { + "type": "mcp", + "server_label": "petstore", + "server_url": "http://localhost:4000/petstore_mcp/mcp", + "require_approval": "never", + "headers": { + "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY" + } + } + ], + "input": "Find all available pets in the petstore", + "tool_choice": "required" +}' +``` + + + + +### How It Works + +1. **Spec Loading**: LiteLLM loads your OpenAPI specification from the provided `spec_path` +2. **Tool Generation**: Each API endpoint in the spec becomes an MCP tool +3. **Parameter Mapping**: OpenAPI parameters are automatically mapped to MCP tool parameters +4. **Request Handling**: When a tool is called, LiteLLM converts the MCP request to the appropriate HTTP request +5. **Response Translation**: API responses are converted back to MCP format + +### OpenAPI Spec Requirements + +Your OpenAPI specification should follow standard OpenAPI/Swagger conventions: +- **Supported versions**: OpenAPI 3.0.x, OpenAPI 3.1.x, Swagger 2.0 +- **Required fields**: `paths`, `info` sections should be properly defined +- **Operation IDs**: Each operation should have a unique `operationId` (this becomes the tool name) +- **Parameters**: Request parameters should be properly documented with types and descriptions + +### Example OpenAPI Spec Structure + +```yaml title="sample-openapi.yaml" showLineNumbers +openapi: 3.0.0 +info: + title: My API + version: 1.0.0 +paths: + /pets/{petId}: + get: + operationId: getPetById + summary: Get a pet by ID + parameters: + - name: petId + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object +``` + ## MCP Tool Filtering Control which tools are available from your MCP servers. You can either allow only specific tools or block dangerous ones. From 763d2f8ccdd8412dbe6d4ac0e136d9ac34dcd4c0 Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Wed, 8 Oct 2025 19:57:33 -0700 Subject: [PATCH 81/84] UI new build --- .../static/0NP4pGCTzzyECenXO-S3V/_buildManifest.js | 1 - .../_next/static/chunks/1039-1031e149b66e294d.js | 1 + .../_next/static/chunks/1052-80a465c977e6b146.js | 1 + .../_next/static/chunks/1160-3efb81c958413447.js | 1 + .../_next/static/chunks/117-6a9f6a591033d4a0.js | 2 -- .../_next/static/chunks/1223-de5e7e4f043a5233.js | 1 + .../_next/static/chunks/1264-2979d95e0b56a75c.js | 1 + .../_next/static/chunks/1307-6b882871684ce94c.js | 1 + .../static/chunks/13b76428-e1bf383848c17260.js | 1 + .../static/chunks/13b76428-ebdf3012af0e4489.js | 1 - .../_next/static/chunks/1487-ada9ecf7dd9bca97.js | 1 + .../_next/static/chunks/1491-80fe911f18f4631c.js | 1 + .../_next/static/chunks/1526-8e2976ed10cb2fa0.js | 1 + .../_next/static/chunks/1529-e0933e3af843b646.js | 1 + .../_next/static/chunks/162-b79fa8ec9408cd55.js | 1 - .../_next/static/chunks/1633-0db2561cf68d80bc.js | 1 + .../out/_next/static/chunks/17-782feb91c41095ca.js | 1 + .../_next/static/chunks/1739-5149135b6e98ac40.js | 1 + .../_next/static/chunks/2004-946c4fd2a52c86d0.js | 1 + .../_next/static/chunks/2019-d4e12fe6a3ca4e25.js | 1 + .../_next/static/chunks/2052-68db39dea49a676f.js | 1 + .../_next/static/chunks/2117-2da5ec8fad6a6c25.js | 2 ++ .../_next/static/chunks/2162-947823f263cd4e0b.js | 1 + .../_next/static/chunks/2202-563a3700a73a4a11.js | 1 + .../_next/static/chunks/226-81daaf8cff08ccfe.js | 1 + .../_next/static/chunks/2284-4cbc9a7f33eb7c89.js | 1 + .../_next/static/chunks/2344-169e12738d6439ab.js | 1 + .../_next/static/chunks/2417-b28f330f82bf4a82.js | 1 + .../_next/static/chunks/2525-13b137f40949dcf1.js | 4 ++++ .../_next/static/chunks/2662-51eb8b1bec576f6d.js | 1 + .../_next/static/chunks/2842-3febfc5e0bb91eff.js | 1 + .../_next/static/chunks/2926-b5dcad9f62f5e2b1.js | 1 + .../_next/static/chunks/293-a7c1c04c415a418e.js | 1 + .../static/chunks/3014691f-702e24806fe9cec4.js | 1 + .../static/chunks/3014691f-b7b79b78e27792f3.js | 1 - .../_next/static/chunks/313-0025fb08e386c4b8.js | 12 ------------ .../_next/static/chunks/3202-10bb7b948f3a8eb2.js | 1 + .../_next/static/chunks/3250-3256164511237d25.js | 1 + .../_next/static/chunks/3298-8d1992a5407c2cae.js | 1 + .../_next/static/chunks/3603-b101c17ea3d68f19.js | 1 + .../_next/static/chunks/3669-cbf664b1e9c58f8a.js | 1 + .../_next/static/chunks/3709-b17db86e0ab325d2.js | 1 + .../_next/static/chunks/3752-53808701995a5f10.js | 1 + .../_next/static/chunks/3801-4bb3b8116c02dad5.js | 1 + .../_next/static/chunks/3866-e3419825a249263f.js | 1 + .../_next/static/chunks/4292-5c3ab7c3b62e1965.js | 1 + .../_next/static/chunks/4365-a008db87ace8b7cb.js | 1 + .../_next/static/chunks/4696-f31deddc1ce81a6b.js | 1 + .../_next/static/chunks/4851-fbdd7aec2937c09d.js | 1 + .../out/_next/static/chunks/49-036448f42c39b97c.js | 1 - .../_next/static/chunks/4924-e47559a81a4aa31c.js | 1 + .../out/_next/static/chunks/50-d0da2dd7acce2eb9.js | 1 - .../_next/static/chunks/5079-a43d5cc0d7429256.js | 1 + .../_next/static/chunks/5096-4ef058eb8abce1d7.js | 1 + .../_next/static/chunks/5105-eb18802ec448789d.js | 1 + .../_next/static/chunks/5188-0e9d5e6db19ac9e6.js | 1 + .../_next/static/chunks/521-d97d355792d44830.js | 4 ---- .../_next/static/chunks/527-d9b7316e990a0539.js | 1 + .../_next/static/chunks/5319-43bd4ee5bb7e50d1.js | 1 + .../_next/static/chunks/5809-33437b27a2ac76d5.js | 1 + .../_next/static/chunks/5830-47ce1a4897188f14.js | 1 + .../_next/static/chunks/603-4d26e1c19f911024.js | 1 + .../_next/static/chunks/6433-c9b3a95c5de0b59f.js | 8 ++++++++ .../_next/static/chunks/6494-7124dea6b90175e7.js | 1 + .../_next/static/chunks/6836-e30124a71aafae62.js | 1 + .../_next/static/chunks/6925-5f3f11523497a729.js | 1 + .../_next/static/chunks/7155-f019e996be6de8e3.js | 1 + .../_next/static/chunks/7281-41cef56aa2b3df92.js | 1 + .../_next/static/chunks/7382-c293a81095a18d6c.js | 1 + .../_next/static/chunks/7406-8dbad47afbc571f1.js | 1 + .../_next/static/chunks/773-da80cf7b30837a84.js | 1 + .../_next/static/chunks/7851-62c5dbe52d2b953b.js | 1 + .../_next/static/chunks/7906-11071e9e2e7b8318.js | 1 + .../_next/static/chunks/7908-07a76cfe29c543c9.js | 1 + .../_next/static/chunks/8049-0a4ef0c3396390d0.js | 1 + .../_next/static/chunks/8098-3da3212991542668.js | 1 + .../_next/static/chunks/8143-44b491eb039c1a37.js | 1 + .../_next/static/chunks/8347-0845abae9a2a5d9e.js | 1 + .../_next/static/chunks/851-7416960163d4d982.js | 1 - .../_next/static/chunks/866-9e1803a09e9ae8da.js | 1 - .../_next/static/chunks/874-eeddfa04bd1a3b05.js | 1 + .../_next/static/chunks/8791-b95bd7fdd710a85d.js | 1 + .../_next/static/chunks/8806-85c2bcba4ca300e2.js | 1 + .../_next/static/chunks/901-34706ce91c6b582c.js | 1 + .../_next/static/chunks/9011-0769cb78a6e5f233.js | 1 + .../_next/static/chunks/9165-2a738a73d0d5f1d1.js | 1 + .../_next/static/chunks/9429-2cac017dd355dcd2.js | 1 + .../_next/static/chunks/9632-e6fd89cdaacd24b7.js | 1 + .../_next/static/chunks/9678-c633432ec1f8c65a.js | 1 + .../_next/static/chunks/9775-ac7313139c5f089d.js | 1 + .../_next/static/chunks/9820-b0722f821c1af1ee.js | 1 + .../_next/static/chunks/9888-a0a2120c93674b5e.js | 5 +++++ .../api-reference/page-65279b0256b88937.js | 1 + .../api-playground/page-a9a2313f4a4f5576.js | 1 + .../experimental/budgets/page-3f76f4d2f9e30bdd.js | 1 + .../experimental/caching/page-732ff8bc946077b5.js | 1 + .../old-usage/page-8f20fa1eb19068a7.js | 1 + .../experimental/prompts/page-8e0ff8f340793dfe.js | 1 + .../tag-management/page-bf54d2148954d39f.js | 1 + .../guardrails/page-332f6053a8a0dea0.js | 1 + .../app/(dashboard)/layout-356bfe32246db9cb.js | 1 + .../app/(dashboard)/logs/page-135a51c055a86dd3.js | 1 + .../(dashboard)/model-hub/page-9270d71fdee2c6d6.js | 1 + .../models-and-endpoints/page-62f85a79b1034b41.js | 1 + .../organizations/page-563ec8240873e36a.js | 1 + .../admin-settings/page-e306d985ab7d00d2.js | 1 + .../logging-and-alerts/page-28149e3c38e3f6c2.js | 1 + .../router-settings/page-378c964d8cbd1546.js | 1 + .../settings/ui-theme/page-946a86d088852793.js | 1 + .../app/(dashboard)/teams/page-f166a0ffc3b6a64c.js | 1 + .../(dashboard)/test-key/page-7f4c63c9185a0cc2.js | 1 + .../tools/mcp-servers/page-419df96d4d884fcc.js | 1 + .../tools/vector-stores/page-fd022e06e573a86a.js | 1 + .../app/(dashboard)/usage/page-6445839d3be55d3e.js | 1 + .../app/(dashboard)/users/page-b642eac5bc03b5e3.js | 1 + .../virtual-keys/page-b0b9794fef6314e4.js | 1 + .../chunks/app/_not-found/page-3b0daafcbe368586.js | 1 - .../chunks/app/_not-found/page-8fcbb38fcc17683b.js | 1 + .../static/chunks/app/layout-b4b61d636c5d2baf.js | 1 + .../static/chunks/app/layout-df4939b4f2ec37d7.js | 1 - .../chunks/app/model_hub/page-72f15aece1cca2fe.js | 1 + .../chunks/app/model_hub/page-d7915f579b770030.js | 1 - .../app/model_hub_table/page-09d61dd24d86b94d.js | 1 + .../app/model_hub_table/page-2f23c22a47b20607.js | 1 - .../chunks/app/onboarding/page-79017a4c39acd336.js | 1 - .../chunks/app/onboarding/page-dc50fce870d9ba1b.js | 1 + .../static/chunks/app/page-570a9fabe3b6be98.js | 1 - .../static/chunks/app/page-b9dc1b5637bfda99.js | 1 + .../static/chunks/fd9d1056-205af899b895cbac.js | 1 - .../static/chunks/fd9d1056-64e84c4092e0c5d7.js | 1 + .../static/chunks/framework-08aa667e5202eed8.js | 1 + .../static/chunks/framework-b370f160bb96059c.js | 1 - ...d370c92406567cc.js => main-a93cf31c84027372.js} | 2 +- .../static/chunks/main-app-77a6ca3c04ee9adf.js | 1 + .../static/chunks/main-app-bb35cb240fbb9dca.js | 1 - .../static/chunks/pages/_app-15e2daefa259f0b5.js | 1 - .../static/chunks/pages/_app-3c9ca398d360b709.js | 1 + .../static/chunks/pages/_error-28b803cb2479b966.js | 1 - .../static/chunks/pages/_error-cf5ca766ac8f493f.js | 1 + ...aae3231a8df1.js => webpack-db32e14ed3b4a921.js} | 2 +- .../static/rUJALQkuIpGgNwKsXlWEH/_buildManifest.js | 1 + .../_ssgManifest.js | 0 litellm/proxy/_experimental/out/api-reference.html | 1 + litellm/proxy/_experimental/out/api-reference.txt | 14 ++++++++++++++ .../out/experimental/api-playground.html | 1 + .../out/experimental/api-playground.txt | 14 ++++++++++++++ .../_experimental/out/experimental/budgets.html | 1 + .../_experimental/out/experimental/budgets.txt | 14 ++++++++++++++ .../_experimental/out/experimental/caching.html | 1 + .../_experimental/out/experimental/caching.txt | 14 ++++++++++++++ .../_experimental/out/experimental/old-usage.html | 1 + .../_experimental/out/experimental/old-usage.txt | 14 ++++++++++++++ .../_experimental/out/experimental/prompts.html | 1 + .../_experimental/out/experimental/prompts.txt | 14 ++++++++++++++ .../out/experimental/tag-management.html | 1 + .../out/experimental/tag-management.txt | 14 ++++++++++++++ litellm/proxy/_experimental/out/guardrails.html | 1 + litellm/proxy/_experimental/out/guardrails.txt | 14 ++++++++++++++ litellm/proxy/_experimental/out/index.html | 2 +- litellm/proxy/_experimental/out/index.txt | 11 ++++++----- litellm/proxy/_experimental/out/logs.html | 1 + litellm/proxy/_experimental/out/logs.txt | 14 ++++++++++++++ litellm/proxy/_experimental/out/model-hub.html | 1 + litellm/proxy/_experimental/out/model-hub.txt | 14 ++++++++++++++ litellm/proxy/_experimental/out/model_hub.txt | 7 ++++--- .../proxy/_experimental/out/model_hub_table.html | 1 + .../proxy/_experimental/out/model_hub_table.txt | 7 ++++--- .../_experimental/out/model_hub_table/index.html | 1 - .../_experimental/out/models-and-endpoints.html | 1 + .../_experimental/out/models-and-endpoints.txt | 14 ++++++++++++++ litellm/proxy/_experimental/out/onboarding.html | 1 + litellm/proxy/_experimental/out/onboarding.txt | 7 ++++--- litellm/proxy/_experimental/out/organizations.html | 1 + litellm/proxy/_experimental/out/organizations.txt | 14 ++++++++++++++ .../_experimental/out/settings/admin-settings.html | 1 + .../_experimental/out/settings/admin-settings.txt | 14 ++++++++++++++ .../out/settings/logging-and-alerts.html | 1 + .../out/settings/logging-and-alerts.txt | 14 ++++++++++++++ .../out/settings/router-settings.html | 1 + .../_experimental/out/settings/router-settings.txt | 14 ++++++++++++++ .../proxy/_experimental/out/settings/ui-theme.html | 1 + .../proxy/_experimental/out/settings/ui-theme.txt | 14 ++++++++++++++ litellm/proxy/_experimental/out/teams.html | 1 + litellm/proxy/_experimental/out/teams.txt | 14 ++++++++++++++ litellm/proxy/_experimental/out/test-key.html | 1 + litellm/proxy/_experimental/out/test-key.txt | 14 ++++++++++++++ .../proxy/_experimental/out/tools/mcp-servers.html | 1 + .../proxy/_experimental/out/tools/mcp-servers.txt | 14 ++++++++++++++ .../_experimental/out/tools/vector-stores.html | 1 + .../_experimental/out/tools/vector-stores.txt | 14 ++++++++++++++ litellm/proxy/_experimental/out/usage.html | 1 + litellm/proxy/_experimental/out/usage.txt | 14 ++++++++++++++ litellm/proxy/_experimental/out/users.html | 1 + litellm/proxy/_experimental/out/users.txt | 14 ++++++++++++++ litellm/proxy/_experimental/out/virtual-keys.html | 1 + litellm/proxy/_experimental/out/virtual-keys.txt | 14 ++++++++++++++ 196 files changed, 500 insertions(+), 55 deletions(-) delete mode 100644 litellm/proxy/_experimental/out/_next/static/0NP4pGCTzzyECenXO-S3V/_buildManifest.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1039-1031e149b66e294d.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1052-80a465c977e6b146.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1160-3efb81c958413447.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/117-6a9f6a591033d4a0.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1223-de5e7e4f043a5233.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1264-2979d95e0b56a75c.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1307-6b882871684ce94c.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/13b76428-e1bf383848c17260.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/13b76428-ebdf3012af0e4489.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1487-ada9ecf7dd9bca97.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1491-80fe911f18f4631c.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1526-8e2976ed10cb2fa0.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1529-e0933e3af843b646.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/162-b79fa8ec9408cd55.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1633-0db2561cf68d80bc.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/17-782feb91c41095ca.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/1739-5149135b6e98ac40.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2004-946c4fd2a52c86d0.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2019-d4e12fe6a3ca4e25.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2052-68db39dea49a676f.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2117-2da5ec8fad6a6c25.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2162-947823f263cd4e0b.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2202-563a3700a73a4a11.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/226-81daaf8cff08ccfe.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2284-4cbc9a7f33eb7c89.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2344-169e12738d6439ab.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2417-b28f330f82bf4a82.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2525-13b137f40949dcf1.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2662-51eb8b1bec576f6d.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2842-3febfc5e0bb91eff.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/2926-b5dcad9f62f5e2b1.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/293-a7c1c04c415a418e.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/3014691f-702e24806fe9cec4.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/3014691f-b7b79b78e27792f3.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/313-0025fb08e386c4b8.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/3202-10bb7b948f3a8eb2.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/3250-3256164511237d25.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/3298-8d1992a5407c2cae.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/3603-b101c17ea3d68f19.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/3669-cbf664b1e9c58f8a.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/3709-b17db86e0ab325d2.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/3752-53808701995a5f10.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/3801-4bb3b8116c02dad5.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/3866-e3419825a249263f.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/4292-5c3ab7c3b62e1965.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/4365-a008db87ace8b7cb.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/4696-f31deddc1ce81a6b.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/4851-fbdd7aec2937c09d.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/49-036448f42c39b97c.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/4924-e47559a81a4aa31c.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/50-d0da2dd7acce2eb9.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/5079-a43d5cc0d7429256.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/5096-4ef058eb8abce1d7.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/5105-eb18802ec448789d.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/5188-0e9d5e6db19ac9e6.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/521-d97d355792d44830.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/527-d9b7316e990a0539.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/5319-43bd4ee5bb7e50d1.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/5809-33437b27a2ac76d5.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/5830-47ce1a4897188f14.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/603-4d26e1c19f911024.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/6433-c9b3a95c5de0b59f.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/6494-7124dea6b90175e7.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/6836-e30124a71aafae62.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/6925-5f3f11523497a729.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/7155-f019e996be6de8e3.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/7281-41cef56aa2b3df92.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/7382-c293a81095a18d6c.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/7406-8dbad47afbc571f1.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/773-da80cf7b30837a84.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/7851-62c5dbe52d2b953b.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/7906-11071e9e2e7b8318.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/7908-07a76cfe29c543c9.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/8049-0a4ef0c3396390d0.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/8098-3da3212991542668.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/8143-44b491eb039c1a37.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/8347-0845abae9a2a5d9e.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/851-7416960163d4d982.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/866-9e1803a09e9ae8da.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/874-eeddfa04bd1a3b05.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/8791-b95bd7fdd710a85d.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/8806-85c2bcba4ca300e2.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/901-34706ce91c6b582c.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/9011-0769cb78a6e5f233.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/9165-2a738a73d0d5f1d1.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/9429-2cac017dd355dcd2.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/9632-e6fd89cdaacd24b7.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/9678-c633432ec1f8c65a.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/9775-ac7313139c5f089d.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/9820-b0722f821c1af1ee.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/9888-a0a2120c93674b5e.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/api-reference/page-65279b0256b88937.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/experimental/api-playground/page-a9a2313f4a4f5576.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/experimental/budgets/page-3f76f4d2f9e30bdd.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/experimental/caching/page-732ff8bc946077b5.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/experimental/old-usage/page-8f20fa1eb19068a7.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/experimental/prompts/page-8e0ff8f340793dfe.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/experimental/tag-management/page-bf54d2148954d39f.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/guardrails/page-332f6053a8a0dea0.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/layout-356bfe32246db9cb.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/logs/page-135a51c055a86dd3.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/model-hub/page-9270d71fdee2c6d6.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/models-and-endpoints/page-62f85a79b1034b41.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/organizations/page-563ec8240873e36a.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/settings/admin-settings/page-e306d985ab7d00d2.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/settings/logging-and-alerts/page-28149e3c38e3f6c2.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/settings/router-settings/page-378c964d8cbd1546.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/settings/ui-theme/page-946a86d088852793.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/teams/page-f166a0ffc3b6a64c.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/test-key/page-7f4c63c9185a0cc2.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/tools/mcp-servers/page-419df96d4d884fcc.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/tools/vector-stores/page-fd022e06e573a86a.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/usage/page-6445839d3be55d3e.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/users/page-b642eac5bc03b5e3.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/(dashboard)/virtual-keys/page-b0b9794fef6314e4.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/_not-found/page-3b0daafcbe368586.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/_not-found/page-8fcbb38fcc17683b.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/layout-b4b61d636c5d2baf.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/layout-df4939b4f2ec37d7.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-72f15aece1cca2fe.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub/page-d7915f579b770030.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-09d61dd24d86b94d.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/model_hub_table/page-2f23c22a47b20607.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-79017a4c39acd336.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/onboarding/page-dc50fce870d9ba1b.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/page-570a9fabe3b6be98.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/page-b9dc1b5637bfda99.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/fd9d1056-205af899b895cbac.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/fd9d1056-64e84c4092e0c5d7.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/framework-08aa667e5202eed8.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/framework-b370f160bb96059c.js rename litellm/proxy/_experimental/out/_next/static/chunks/{main-ad370c92406567cc.js => main-a93cf31c84027372.js} (67%) create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/main-app-77a6ca3c04ee9adf.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/main-app-bb35cb240fbb9dca.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/pages/_app-15e2daefa259f0b5.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/pages/_app-3c9ca398d360b709.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/pages/_error-28b803cb2479b966.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js rename litellm/proxy/_experimental/out/_next/static/chunks/{webpack-a426aae3231a8df1.js => webpack-db32e14ed3b4a921.js} (76%) create mode 100644 litellm/proxy/_experimental/out/_next/static/rUJALQkuIpGgNwKsXlWEH/_buildManifest.js rename litellm/proxy/_experimental/out/_next/static/{0NP4pGCTzzyECenXO-S3V => rUJALQkuIpGgNwKsXlWEH}/_ssgManifest.js (100%) create mode 100644 litellm/proxy/_experimental/out/api-reference.html create mode 100644 litellm/proxy/_experimental/out/api-reference.txt create mode 100644 litellm/proxy/_experimental/out/experimental/api-playground.html create mode 100644 litellm/proxy/_experimental/out/experimental/api-playground.txt create mode 100644 litellm/proxy/_experimental/out/experimental/budgets.html create mode 100644 litellm/proxy/_experimental/out/experimental/budgets.txt create mode 100644 litellm/proxy/_experimental/out/experimental/caching.html create mode 100644 litellm/proxy/_experimental/out/experimental/caching.txt create mode 100644 litellm/proxy/_experimental/out/experimental/old-usage.html create mode 100644 litellm/proxy/_experimental/out/experimental/old-usage.txt create mode 100644 litellm/proxy/_experimental/out/experimental/prompts.html create mode 100644 litellm/proxy/_experimental/out/experimental/prompts.txt create mode 100644 litellm/proxy/_experimental/out/experimental/tag-management.html create mode 100644 litellm/proxy/_experimental/out/experimental/tag-management.txt create mode 100644 litellm/proxy/_experimental/out/guardrails.html create mode 100644 litellm/proxy/_experimental/out/guardrails.txt create mode 100644 litellm/proxy/_experimental/out/logs.html create mode 100644 litellm/proxy/_experimental/out/logs.txt create mode 100644 litellm/proxy/_experimental/out/model-hub.html create mode 100644 litellm/proxy/_experimental/out/model-hub.txt create mode 100644 litellm/proxy/_experimental/out/model_hub_table.html delete mode 100644 litellm/proxy/_experimental/out/model_hub_table/index.html create mode 100644 litellm/proxy/_experimental/out/models-and-endpoints.html create mode 100644 litellm/proxy/_experimental/out/models-and-endpoints.txt create mode 100644 litellm/proxy/_experimental/out/onboarding.html create mode 100644 litellm/proxy/_experimental/out/organizations.html create mode 100644 litellm/proxy/_experimental/out/organizations.txt create mode 100644 litellm/proxy/_experimental/out/settings/admin-settings.html create mode 100644 litellm/proxy/_experimental/out/settings/admin-settings.txt create mode 100644 litellm/proxy/_experimental/out/settings/logging-and-alerts.html create mode 100644 litellm/proxy/_experimental/out/settings/logging-and-alerts.txt create mode 100644 litellm/proxy/_experimental/out/settings/router-settings.html create mode 100644 litellm/proxy/_experimental/out/settings/router-settings.txt create mode 100644 litellm/proxy/_experimental/out/settings/ui-theme.html create mode 100644 litellm/proxy/_experimental/out/settings/ui-theme.txt create mode 100644 litellm/proxy/_experimental/out/teams.html create mode 100644 litellm/proxy/_experimental/out/teams.txt create mode 100644 litellm/proxy/_experimental/out/test-key.html create mode 100644 litellm/proxy/_experimental/out/test-key.txt create mode 100644 litellm/proxy/_experimental/out/tools/mcp-servers.html create mode 100644 litellm/proxy/_experimental/out/tools/mcp-servers.txt create mode 100644 litellm/proxy/_experimental/out/tools/vector-stores.html create mode 100644 litellm/proxy/_experimental/out/tools/vector-stores.txt create mode 100644 litellm/proxy/_experimental/out/usage.html create mode 100644 litellm/proxy/_experimental/out/usage.txt create mode 100644 litellm/proxy/_experimental/out/users.html create mode 100644 litellm/proxy/_experimental/out/users.txt create mode 100644 litellm/proxy/_experimental/out/virtual-keys.html create mode 100644 litellm/proxy/_experimental/out/virtual-keys.txt diff --git a/litellm/proxy/_experimental/out/_next/static/0NP4pGCTzzyECenXO-S3V/_buildManifest.js b/litellm/proxy/_experimental/out/_next/static/0NP4pGCTzzyECenXO-S3V/_buildManifest.js deleted file mode 100644 index 96ded068de5..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/0NP4pGCTzzyECenXO-S3V/_buildManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-28b803cb2479b966.js"],sortedPages:["/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/1039-1031e149b66e294d.js b/litellm/proxy/_experimental/out/_next/static/chunks/1039-1031e149b66e294d.js new file mode 100644 index 00000000000..74c9c3d33c5 --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/1039-1031e149b66e294d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1039],{41649:function(e,t,n){n.d(t,{Z:function(){return f}});var r=n(5853),a=n(2265),o=n(1526),l=n(7084),i=n(26898),c=n(97324),s=n(1153);let d={xs:{paddingX:"px-2",paddingY:"py-0.5",fontSize:"text-xs"},sm:{paddingX:"px-2.5",paddingY:"py-0.5",fontSize:"text-sm"},md:{paddingX:"px-3",paddingY:"py-0.5",fontSize:"text-md"},lg:{paddingX:"px-3.5",paddingY:"py-0.5",fontSize:"text-lg"},xl:{paddingX:"px-4",paddingY:"py-1",fontSize:"text-xl"}},u={xs:{height:"h-4",width:"w-4"},sm:{height:"h-4",width:"w-4"},md:{height:"h-4",width:"w-4"},lg:{height:"h-5",width:"w-5"},xl:{height:"h-6",width:"w-6"}},p=(0,s.fn)("Badge"),f=a.forwardRef((e,t)=>{let{color:n,icon:f,size:m=l.u8.SM,tooltip:g,className:h,children:b}=e,v=(0,r._T)(e,["color","icon","size","tooltip","className","children"]),x=f||null,{tooltipProps:w,getReferenceProps:k}=(0,o.l)();return a.createElement("span",Object.assign({ref:(0,s.lq)([t,w.refs.setReference]),className:(0,c.q)(p("root"),"w-max flex-shrink-0 inline-flex justify-center items-center cursor-default rounded-tremor-full",n?(0,c.q)((0,s.bM)(n,i.K.background).bgColor,(0,s.bM)(n,i.K.text).textColor,"bg-opacity-20 dark:bg-opacity-25"):(0,c.q)("bg-tremor-brand-muted text-tremor-brand-emphasis","dark:bg-dark-tremor-brand-muted dark:text-dark-tremor-brand-emphasis"),d[m].paddingX,d[m].paddingY,d[m].fontSize,h)},k,v),a.createElement(o.Z,Object.assign({text:g},w)),x?a.createElement(x,{className:(0,c.q)(p("icon"),"shrink-0 -ml-1 mr-1.5",u[m].height,u[m].width)}):null,a.createElement("p",{className:(0,c.q)(p("text"),"text-sm whitespace-nowrap")},b))});f.displayName="Badge"},30150:function(e,t,n){n.d(t,{Z:function(){return p}});var r=n(5853),a=n(2265);let o=e=>{var t=(0,r._T)(e,[]);return a.createElement("svg",Object.assign({},t,{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2.5"}),a.createElement("path",{d:"M12 4v16m8-8H4"}))},l=e=>{var t=(0,r._T)(e,[]);return a.createElement("svg",Object.assign({},t,{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2.5"}),a.createElement("path",{d:"M20 12H4"}))};var i=n(97324),c=n(1153),s=n(69262);let d="flex mx-auto text-tremor-content-subtle dark:text-dark-tremor-content-subtle",u="cursor-pointer hover:text-tremor-content dark:hover:text-dark-tremor-content",p=a.forwardRef((e,t)=>{let{onSubmit:n,enableStepper:p=!0,disabled:f,onValueChange:m,onChange:g}=e,h=(0,r._T)(e,["onSubmit","enableStepper","disabled","onValueChange","onChange"]),b=(0,a.useRef)(null),[v,x]=a.useState(!1),w=a.useCallback(()=>{x(!0)},[]),k=a.useCallback(()=>{x(!1)},[]),[y,E]=a.useState(!1),S=a.useCallback(()=>{E(!0)},[]),C=a.useCallback(()=>{E(!1)},[]);return a.createElement(s.Z,Object.assign({type:"number",ref:(0,c.lq)([b,t]),disabled:f,makeInputClassName:(0,c.fn)("NumberInput"),onKeyDown:e=>{var t;if("Enter"===e.key&&!e.ctrlKey&&!e.altKey&&!e.shiftKey){let e=null===(t=b.current)||void 0===t?void 0:t.value;null==n||n(parseFloat(null!=e?e:""))}"ArrowDown"===e.key&&w(),"ArrowUp"===e.key&&S()},onKeyUp:e=>{"ArrowDown"===e.key&&k(),"ArrowUp"===e.key&&C()},onChange:e=>{f||(null==m||m(parseFloat(e.target.value)),null==g||g(e))},stepper:p?a.createElement("div",{className:(0,i.q)("flex justify-center align-middle")},a.createElement("div",{tabIndex:-1,onClick:e=>e.preventDefault(),onMouseDown:e=>e.preventDefault(),onTouchStart:e=>{e.cancelable&&e.preventDefault()},onMouseUp:()=>{var e,t;f||(null===(e=b.current)||void 0===e||e.stepDown(),null===(t=b.current)||void 0===t||t.dispatchEvent(new Event("input",{bubbles:!0})))},className:(0,i.q)(!f&&u,d,"group py-[10px] px-2.5 border-l border-tremor-border dark:border-dark-tremor-border")},a.createElement(l,{"data-testid":"step-down",className:(v?"scale-95":"")+" h-4 w-4 duration-75 transition group-active:scale-95"})),a.createElement("div",{tabIndex:-1,onClick:e=>e.preventDefault(),onMouseDown:e=>e.preventDefault(),onTouchStart:e=>{e.cancelable&&e.preventDefault()},onMouseUp:()=>{var e,t;f||(null===(e=b.current)||void 0===e||e.stepUp(),null===(t=b.current)||void 0===t||t.dispatchEvent(new Event("input",{bubbles:!0})))},className:(0,i.q)(!f&&u,d,"group py-[10px] px-2.5 border-l border-tremor-border dark:border-dark-tremor-border")},a.createElement(o,{"data-testid":"step-up",className:(y?"scale-95":"")+" h-4 w-4 duration-75 transition group-active:scale-95"}))):null},h))});p.displayName="NumberInput"},87452:function(e,t,n){n.d(t,{Z:function(){return u},r:function(){return d}});var r=n(5853),a=n(21886);n(42698),n(64016);var o=n(8710);n(33232);var l=n(97324),i=n(1153),c=n(2265);let s=(0,i.fn)("Accordion"),d=(0,c.createContext)({isOpen:!1}),u=c.forwardRef((e,t)=>{var n;let{defaultOpen:i=!1,children:u,className:p}=e,f=(0,r._T)(e,["defaultOpen","children","className"]),m=null!==(n=(0,c.useContext)(o.Z))&&void 0!==n?n:(0,l.q)("rounded-tremor-default border");return c.createElement(a.p,Object.assign({as:"div",ref:t,className:(0,l.q)(s("root"),"overflow-hidden","bg-tremor-background border-tremor-border","dark:bg-dark-tremor-background dark:border-dark-tremor-border",m,p),defaultOpen:i},f),e=>{let{open:t}=e;return c.createElement(d.Provider,{value:{isOpen:t}},u)})});u.displayName="Accordion"},88829:function(e,t,n){n.d(t,{Z:function(){return c}});var r=n(5853),a=n(2265),o=n(21886),l=n(97324);let i=(0,n(1153).fn)("AccordionBody"),c=a.forwardRef((e,t)=>{let{children:n,className:c}=e,s=(0,r._T)(e,["children","className"]);return a.createElement(o.p.Panel,Object.assign({ref:t,className:(0,l.q)(i("root"),"w-full text-tremor-default px-4 pb-3","text-tremor-content","dark:text-dark-tremor-content",c)},s),n)});c.displayName="AccordionBody"},72208:function(e,t,n){n.d(t,{Z:function(){return d}});var r=n(5853),a=n(2265),o=n(21886);let l=e=>{var t=(0,r._T)(e,[]);return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),a.createElement("path",{d:"M11.9999 10.8284L7.0502 15.7782L5.63599 14.364L11.9999 8L18.3639 14.364L16.9497 15.7782L11.9999 10.8284Z"}))};var i=n(87452),c=n(97324);let s=(0,n(1153).fn)("AccordionHeader"),d=a.forwardRef((e,t)=>{let{children:n,className:d}=e,u=(0,r._T)(e,["children","className"]),{isOpen:p}=(0,a.useContext)(i.r);return a.createElement(o.p.Button,Object.assign({ref:t,className:(0,c.q)(s("root"),"w-full flex items-center justify-between px-4 py-3","text-tremor-content-emphasis","dark:text-dark-tremor-content-emphasis",d)},u),a.createElement("div",{className:(0,c.q)(s("children"),"flex flex-1 text-inherit mr-4")},n),a.createElement("div",null,a.createElement(l,{className:(0,c.q)(s("arrowIcon"),"h-5 w-5 -mr-1","text-tremor-content-subtle","dark:text-dark-tremor-content-subtle",p?"transition-all":"transition-all -rotate-180")})))});d.displayName="AccordionHeader"},23496:function(e,t,n){n.d(t,{Z:function(){return m}});var r=n(2265),a=n(36760),o=n.n(a),l=n(71744),i=n(352),c=n(12918),s=n(80669),d=n(3104);let u=e=>{let{componentCls:t,sizePaddingEdgeHorizontal:n,colorSplit:r,lineWidth:a,textPaddingInline:o,orientationMargin:l,verticalMarginInline:s}=e;return{[t]:Object.assign(Object.assign({},(0,c.Wf)(e)),{borderBlockStart:"".concat((0,i.bf)(a)," solid ").concat(r),"&-vertical":{position:"relative",top:"-0.06em",display:"inline-block",height:"0.9em",marginInline:s,marginBlock:0,verticalAlign:"middle",borderTop:0,borderInlineStart:"".concat((0,i.bf)(a)," solid ").concat(r)},"&-horizontal":{display:"flex",clear:"both",width:"100%",minWidth:"100%",margin:"".concat((0,i.bf)(e.dividerHorizontalGutterMargin)," 0")},["&-horizontal".concat(t,"-with-text")]:{display:"flex",alignItems:"center",margin:"".concat((0,i.bf)(e.dividerHorizontalWithTextGutterMargin)," 0"),color:e.colorTextHeading,fontWeight:500,fontSize:e.fontSizeLG,whiteSpace:"nowrap",textAlign:"center",borderBlockStart:"0 ".concat(r),"&::before, &::after":{position:"relative",width:"50%",borderBlockStart:"".concat((0,i.bf)(a)," solid transparent"),borderBlockStartColor:"inherit",borderBlockEnd:0,transform:"translateY(50%)",content:"''"}},["&-horizontal".concat(t,"-with-text-left")]:{"&::before":{width:"calc(".concat(l," * 100%)")},"&::after":{width:"calc(100% - ".concat(l," * 100%)")}},["&-horizontal".concat(t,"-with-text-right")]:{"&::before":{width:"calc(100% - ".concat(l," * 100%)")},"&::after":{width:"calc(".concat(l," * 100%)")}},["".concat(t,"-inner-text")]:{display:"inline-block",paddingBlock:0,paddingInline:o},"&-dashed":{background:"none",borderColor:r,borderStyle:"dashed",borderWidth:"".concat((0,i.bf)(a)," 0 0")},["&-horizontal".concat(t,"-with-text").concat(t,"-dashed")]:{"&::before, &::after":{borderStyle:"dashed none none"}},["&-vertical".concat(t,"-dashed")]:{borderInlineStartWidth:a,borderInlineEnd:0,borderBlockStart:0,borderBlockEnd:0},["&-plain".concat(t,"-with-text")]:{color:e.colorText,fontWeight:"normal",fontSize:e.fontSize},["&-horizontal".concat(t,"-with-text-left").concat(t,"-no-default-orientation-margin-left")]:{"&::before":{width:0},"&::after":{width:"100%"},["".concat(t,"-inner-text")]:{paddingInlineStart:n}},["&-horizontal".concat(t,"-with-text-right").concat(t,"-no-default-orientation-margin-right")]:{"&::before":{width:"100%"},"&::after":{width:0},["".concat(t,"-inner-text")]:{paddingInlineEnd:n}}})}};var p=(0,s.I$)("Divider",e=>[u((0,d.TS)(e,{dividerHorizontalWithTextGutterMargin:e.margin,dividerHorizontalGutterMargin:e.marginLG,sizePaddingEdgeHorizontal:0}))],e=>({textPaddingInline:"1em",orientationMargin:.05,verticalMarginInline:e.marginXS}),{unitless:{orientationMargin:!0}}),f=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,r=Object.getOwnPropertySymbols(e);at.indexOf(r[a])&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]]);return n},m=e=>{let{getPrefixCls:t,direction:n,divider:a}=r.useContext(l.E_),{prefixCls:i,type:c="horizontal",orientation:s="center",orientationMargin:d,className:u,rootClassName:m,children:g,dashed:h,plain:b,style:v}=e,x=f(e,["prefixCls","type","orientation","orientationMargin","className","rootClassName","children","dashed","plain","style"]),w=t("divider",i),[k,y,E]=p(w),S=s.length>0?"-".concat(s):s,C=!!g,I="left"===s&&null!=d,N="right"===s&&null!=d,O=o()(w,null==a?void 0:a.className,y,E,"".concat(w,"-").concat(c),{["".concat(w,"-with-text")]:C,["".concat(w,"-with-text").concat(S)]:C,["".concat(w,"-dashed")]:!!h,["".concat(w,"-plain")]:!!b,["".concat(w,"-rtl")]:"rtl"===n,["".concat(w,"-no-default-orientation-margin-left")]:I,["".concat(w,"-no-default-orientation-margin-right")]:N},u,m),P=r.useMemo(()=>"number"==typeof d?d:/^\d+$/.test(d)?Number(d):d,[d]),D=Object.assign(Object.assign({},I&&{marginLeft:P}),N&&{marginRight:P});return k(r.createElement("div",Object.assign({className:O,style:Object.assign(Object.assign({},null==a?void 0:a.style),v)},x,{role:"separator"}),g&&"vertical"!==c&&r.createElement("span",{className:"".concat(w,"-inner-text"),style:D},g)))}},21886:function(e,t,n){let r,a;n.d(t,{p:function(){return O}});var o,l=n(2265),i=n(13323),c=n(17684),s=n(80004),d=n(93689),u=n(37863),p=n(47634),f=n(24536),m=n(40293),g=n(27847);let h=null!=(o=l.startTransition)?o:function(e){e()};var b=n(37388),v=((r=v||{})[r.Open=0]="Open",r[r.Closed=1]="Closed",r),x=((a=x||{})[a.ToggleDisclosure=0]="ToggleDisclosure",a[a.CloseDisclosure=1]="CloseDisclosure",a[a.SetButtonId=2]="SetButtonId",a[a.SetPanelId=3]="SetPanelId",a[a.LinkPanel=4]="LinkPanel",a[a.UnlinkPanel=5]="UnlinkPanel",a);let w={0:e=>({...e,disclosureState:(0,f.E)(e.disclosureState,{0:1,1:0})}),1:e=>1===e.disclosureState?e:{...e,disclosureState:1},4:e=>!0===e.linkedPanel?e:{...e,linkedPanel:!0},5:e=>!1===e.linkedPanel?e:{...e,linkedPanel:!1},2:(e,t)=>e.buttonId===t.buttonId?e:{...e,buttonId:t.buttonId},3:(e,t)=>e.panelId===t.panelId?e:{...e,panelId:t.panelId}},k=(0,l.createContext)(null);function y(e){let t=(0,l.useContext)(k);if(null===t){let t=Error("<".concat(e," /> is missing a parent component."));throw Error.captureStackTrace&&Error.captureStackTrace(t,y),t}return t}k.displayName="DisclosureContext";let E=(0,l.createContext)(null);E.displayName="DisclosureAPIContext";let S=(0,l.createContext)(null);function C(e,t){return(0,f.E)(t.type,w,e,t)}S.displayName="DisclosurePanelContext";let I=l.Fragment,N=g.AN.RenderStrategy|g.AN.Static,O=Object.assign((0,g.yV)(function(e,t){let{defaultOpen:n=!1,...r}=e,a=(0,l.useRef)(null),o=(0,d.T)(t,(0,d.h)(e=>{a.current=e},void 0===e.as||e.as===l.Fragment)),c=(0,l.useRef)(null),s=(0,l.useRef)(null),p=(0,l.useReducer)(C,{disclosureState:n?0:1,linkedPanel:!1,buttonRef:s,panelRef:c,buttonId:null,panelId:null}),[{disclosureState:h,buttonId:b},v]=p,x=(0,i.z)(e=>{v({type:1});let t=(0,m.r)(a);if(!t||!b)return;let n=e?e instanceof HTMLElement?e:e.current instanceof HTMLElement?e.current:t.getElementById(b):t.getElementById(b);null==n||n.focus()}),w=(0,l.useMemo)(()=>({close:x}),[x]),y=(0,l.useMemo)(()=>({open:0===h,close:x}),[h,x]);return l.createElement(k.Provider,{value:p},l.createElement(E.Provider,{value:w},l.createElement(u.up,{value:(0,f.E)(h,{0:u.ZM.Open,1:u.ZM.Closed})},(0,g.sY)({ourProps:{ref:o},theirProps:r,slot:y,defaultTag:I,name:"Disclosure"}))))}),{Button:(0,g.yV)(function(e,t){let n=(0,c.M)(),{id:r="headlessui-disclosure-button-".concat(n),...a}=e,[o,u]=y("Disclosure.Button"),f=(0,l.useContext)(S),m=null!==f&&f===o.panelId,h=(0,l.useRef)(null),v=(0,d.T)(h,t,m?null:o.buttonRef),x=(0,g.Y2)();(0,l.useEffect)(()=>{if(!m)return u({type:2,buttonId:r}),()=>{u({type:2,buttonId:null})}},[r,u,m]);let w=(0,i.z)(e=>{var t;if(m){if(1===o.disclosureState)return;switch(e.key){case b.R.Space:case b.R.Enter:e.preventDefault(),e.stopPropagation(),u({type:0}),null==(t=o.buttonRef.current)||t.focus()}}else switch(e.key){case b.R.Space:case b.R.Enter:e.preventDefault(),e.stopPropagation(),u({type:0})}}),k=(0,i.z)(e=>{e.key===b.R.Space&&e.preventDefault()}),E=(0,i.z)(t=>{var n;(0,p.P)(t.currentTarget)||e.disabled||(m?(u({type:0}),null==(n=o.buttonRef.current)||n.focus()):u({type:0}))}),C=(0,l.useMemo)(()=>({open:0===o.disclosureState}),[o]),I=(0,s.f)(e,h),N=m?{ref:v,type:I,onKeyDown:w,onClick:E}:{ref:v,id:r,type:I,"aria-expanded":0===o.disclosureState,"aria-controls":o.linkedPanel?o.panelId:void 0,onKeyDown:w,onKeyUp:k,onClick:E};return(0,g.sY)({mergeRefs:x,ourProps:N,theirProps:a,slot:C,defaultTag:"button",name:"Disclosure.Button"})}),Panel:(0,g.yV)(function(e,t){let n=(0,c.M)(),{id:r="headlessui-disclosure-panel-".concat(n),...a}=e,[o,i]=y("Disclosure.Panel"),{close:s}=function e(t){let n=(0,l.useContext)(E);if(null===n){let n=Error("<".concat(t," /> is missing a parent component."));throw Error.captureStackTrace&&Error.captureStackTrace(n,e),n}return n}("Disclosure.Panel"),p=(0,g.Y2)(),f=(0,d.T)(t,o.panelRef,e=>{h(()=>i({type:e?4:5}))});(0,l.useEffect)(()=>(i({type:3,panelId:r}),()=>{i({type:3,panelId:null})}),[r,i]);let m=(0,u.oJ)(),b=null!==m?(m&u.ZM.Open)===u.ZM.Open:0===o.disclosureState,v=(0,l.useMemo)(()=>({open:0===o.disclosureState,close:s}),[o,s]);return l.createElement(S.Provider,{value:o.panelId},(0,g.sY)({mergeRefs:p,ourProps:{ref:f,id:r},theirProps:a,slot:v,defaultTag:"div",features:N,visible:b,name:"Disclosure.Panel"}))})})},86462:function(e,t,n){var r=n(2265);let a=r.forwardRef(function(e,t){return r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:t},e),r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"}))});t.Z=a},23628:function(e,t,n){var r=n(2265);let a=r.forwardRef(function(e,t){return r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:t},e),r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"}))});t.Z=a}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/1052-80a465c977e6b146.js b/litellm/proxy/_experimental/out/_next/static/chunks/1052-80a465c977e6b146.js new file mode 100644 index 00000000000..d760fa17b65 --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/1052-80a465c977e6b146.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1052],{19046:function(e,t,s){s.d(t,{Dx:function(){return r.Z},Zb:function(){return a.Z},oi:function(){return l.Z},xv:function(){return n.Z},zx:function(){return o.Z}});var o=s(20831),a=s(12514),n=s(84264),l=s(49566),r=s(96761)},31052:function(e,t,s){s.d(t,{Z:function(){return eA}});var o=s(57437),a=s(2265),n=s(243),l=s(19046),r=s(93837),i=s(64482),c=s(65319),d=s(93192),m=s(52787),g=s(89970),p=s(87908),u=s(82680),x=s(73002),h=s(26433),f=s(19250);async function b(e,t,s,o,a,n,l,r,i,c,d,m,g,p){console.log=function(){},console.log("isLocal:",!1);let u=(0,f.getProxyBaseUrl)(),x={};a&&a.length>0&&(x["x-litellm-tags"]=a.join(","));let b=new h.ZP.OpenAI({apiKey:o,baseURL:u,dangerouslyAllowBrowser:!0,defaultHeaders:x});try{let a;let x=Date.now(),h=!1,f=g&&g.length>0?[{type:"mcp",server_label:"litellm",server_url:"".concat(u,"/mcp"),require_approval:"never",allowed_tools:g,headers:{"x-litellm-api-key":"Bearer ".concat(o)}}]:void 0;for await(let o of(await b.chat.completions.create({model:s,stream:!0,stream_options:{include_usage:!0},litellm_trace_id:c,messages:e,...d?{vector_store_ids:d}:{},...m?{guardrails:m}:{},...f?{tools:f,tool_choice:"auto"}:{}},{signal:n}))){var v,y,j,w,S,N,k,P;console.log("Stream chunk:",o);let e=null===(v=o.choices[0])||void 0===v?void 0:v.delta;if(console.log("Delta content:",null===(j=o.choices[0])||void 0===j?void 0:null===(y=j.delta)||void 0===y?void 0:y.content),console.log("Delta reasoning content:",null==e?void 0:e.reasoning_content),!h&&((null===(S=o.choices[0])||void 0===S?void 0:null===(w=S.delta)||void 0===w?void 0:w.content)||e&&e.reasoning_content)&&(h=!0,a=Date.now()-x,console.log("First token received! Time:",a,"ms"),r?(console.log("Calling onTimingData with:",a),r(a)):console.log("onTimingData callback is not defined!")),null===(k=o.choices[0])||void 0===k?void 0:null===(N=k.delta)||void 0===N?void 0:N.content){let e=o.choices[0].delta.content;t(e,o.model)}if(e&&e.image&&p&&(console.log("Image generated:",e.image),p(e.image.url,o.model)),e&&e.reasoning_content){let t=e.reasoning_content;l&&l(t)}if(o.usage&&i){console.log("Usage data found:",o.usage);let e={completionTokens:o.usage.completion_tokens,promptTokens:o.usage.prompt_tokens,totalTokens:o.usage.total_tokens};(null===(P=o.usage.completion_tokens_details)||void 0===P?void 0:P.reasoning_tokens)&&(e.reasoningTokens=o.usage.completion_tokens_details.reasoning_tokens),i(e)}}}catch(e){throw(null==n?void 0:n.aborted)&&console.log("Chat completion request was cancelled"),e}}var v=s(9114);async function y(e,t,s,o,a,n){console.log=function(){},console.log("isLocal:",!1);let l=(0,f.getProxyBaseUrl)(),r=new h.ZP.OpenAI({apiKey:o,baseURL:l,dangerouslyAllowBrowser:!0,defaultHeaders:a&&a.length>0?{"x-litellm-tags":a.join(",")}:void 0});try{let o=await r.images.generate({model:s,prompt:e},{signal:n});if(console.log(o.data),o.data&&o.data[0]){if(o.data[0].url)t(o.data[0].url,s);else if(o.data[0].b64_json){let e=o.data[0].b64_json;t("data:image/png;base64,".concat(e),s)}else throw Error("No image data found in response")}else throw Error("Invalid response format")}catch(e){throw(null==n?void 0:n.aborted)?console.log("Image generation request was cancelled"):v.Z.fromBackend("Error occurred while generating image. Please try again. Error: ".concat(e)),e}}async function j(e,t,s,o,a,n,l){console.log=function(){},console.log("isLocal:",!1);let r=(0,f.getProxyBaseUrl)(),i=new h.ZP.OpenAI({apiKey:a,baseURL:r,dangerouslyAllowBrowser:!0,defaultHeaders:n&&n.length>0?{"x-litellm-tags":n.join(",")}:void 0});try{let a=Array.isArray(e)?e:[e],n=[];for(let e=0;e1&&v.Z.success("Successfully processed ".concat(n.length," images"))}catch(e){if(console.error("Error making image edit request:",e),null==l?void 0:l.aborted)console.log("Image edits request was cancelled");else{var c;let t="Failed to edit image(s)";(null==e?void 0:null===(c=e.error)||void 0===c?void 0:c.message)?t=e.error.message:(null==e?void 0:e.message)&&(t=e.message),v.Z.fromBackend("Image edit failed: ".concat(t))}throw e}}async function w(e,t,s,o){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],n=arguments.length>5?arguments[5]:void 0,l=arguments.length>6?arguments[6]:void 0,r=arguments.length>7?arguments[7]:void 0,i=arguments.length>8?arguments[8]:void 0,c=arguments.length>9?arguments[9]:void 0,d=arguments.length>10?arguments[10]:void 0,m=arguments.length>11?arguments[11]:void 0,g=arguments.length>12?arguments[12]:void 0,p=arguments.length>13?arguments[13]:void 0,u=arguments.length>14?arguments[14]:void 0,x=arguments.length>15?arguments[15]:void 0;if(!o)throw Error("API key is required");console.log=function(){};let b=(0,f.getProxyBaseUrl)(),y={};a&&a.length>0&&(y["x-litellm-tags"]=a.join(","));let j=new h.ZP.OpenAI({apiKey:o,baseURL:b,dangerouslyAllowBrowser:!0,defaultHeaders:y});try{let o=Date.now(),a=!1,h=e.map(e=>(Array.isArray(e.content),{role:e.role,content:e.content,type:"message"})),f=g&&g.length>0?[{type:"mcp",server_label:"litellm",server_url:"litellm_proxy/mcp",require_approval:"never",allowed_tools:g}]:void 0,b=await j.responses.create({model:s,input:h,stream:!0,litellm_trace_id:c,...p?{previous_response_id:p}:{},...d?{vector_store_ids:d}:{},...m?{guardrails:m}:{},...f?{tools:f,tool_choice:"required"}:{}},{signal:n}),v="";for await(let e of b)if(console.log("Response event:",e),"object"==typeof e&&null!==e){var w,S,N,k,P,C,I;if(((null===(w=e.type)||void 0===w?void 0:w.startsWith("response.mcp_"))||"response.output_item.done"===e.type&&((null===(S=e.item)||void 0===S?void 0:S.type)==="mcp_list_tools"||(null===(N=e.item)||void 0===N?void 0:N.type)==="mcp_call"))&&(console.log("MCP event received:",e),x)){let t={type:e.type,sequence_number:e.sequence_number,output_index:e.output_index,item_id:e.item_id||(null===(C=e.item)||void 0===C?void 0:C.id),item:e.item,delta:e.delta,arguments:e.arguments,timestamp:Date.now()};x(t)}if("response.output_item.done"===e.type&&(null===(k=e.item)||void 0===k?void 0:k.type)==="mcp_call"&&(null===(P=e.item)||void 0===P?void 0:P.name)&&(v=e.item.name,console.log("MCP tool used:",v)),"response.role.delta"===e.type)continue;if("response.output_text.delta"===e.type&&"string"==typeof e.delta){let n=e.delta;if(console.log("Text delta",n),n.trim().length>0&&(t("assistant",n,s),!a)){a=!0;let e=Date.now()-o;console.log("First token received! Time:",e,"ms"),r&&r(e)}}if("response.reasoning.delta"===e.type&&"delta"in e){let t=e.delta;"string"==typeof t&&l&&l(t)}if("response.completed"===e.type&&"response"in e){let t=e.response,s=t.usage;if(console.log("Usage data:",s),console.log("Response completed event:",t),t.id&&u&&(console.log("Response ID for session management:",t.id),u(t.id)),s&&i){console.log("Usage data:",s);let e={completionTokens:s.output_tokens,promptTokens:s.input_tokens,totalTokens:s.total_tokens};(null===(I=s.completion_tokens_details)||void 0===I?void 0:I.reasoning_tokens)&&(e.reasoningTokens=s.completion_tokens_details.reasoning_tokens),i(e,v)}}}return b}catch(e){throw(null==n?void 0:n.aborted)?console.log("Responses API request was cancelled"):v.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e)),e}}var S=s(85498);async function N(e,t,s,o){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],n=arguments.length>5?arguments[5]:void 0,l=arguments.length>6?arguments[6]:void 0,r=arguments.length>7?arguments[7]:void 0,i=arguments.length>8?arguments[8]:void 0,c=arguments.length>9?arguments[9]:void 0,d=arguments.length>10?arguments[10]:void 0,m=arguments.length>11?arguments[11]:void 0,g=arguments.length>12?arguments[12]:void 0;if(!o)throw Error("API key is required");console.log=function(){};let p=(0,f.getProxyBaseUrl)(),u={};a&&a.length>0&&(u["x-litellm-tags"]=a.join(","));let x=new S.ZP({apiKey:o,baseURL:p,dangerouslyAllowBrowser:!0,defaultHeaders:u});try{let a=Date.now(),u=!1,h=g&&g.length>0?[{type:"mcp",server_label:"litellm",server_url:"".concat(p,"/mcp"),require_approval:"never",allowed_tools:g,headers:{"x-litellm-api-key":"Bearer ".concat(o)}}]:void 0,f={model:s,messages:e.map(e=>({role:e.role,content:e.content})),stream:!0,max_tokens:1024,litellm_trace_id:c};for await(let e of(d&&(f.vector_store_ids=d),m&&(f.guardrails=m),h&&(f.tools=h,f.tool_choice="auto"),x.messages.stream(f,{signal:n}))){if(console.log("Stream event:",e),"content_block_delta"===e.type){let o=e.delta;if(!u){u=!0;let e=Date.now()-a;console.log("First token received! Time:",e,"ms"),r&&r(e)}"text_delta"===o.type?t("assistant",o.text,s):"reasoning_delta"===o.type&&l&&l(o.text)}if("message_delta"===e.type&&e.usage&&i){let t=e.usage;console.log("Usage data found:",t);let s={completionTokens:t.output_tokens,promptTokens:t.input_tokens,totalTokens:t.input_tokens+t.output_tokens};i(s)}}}catch(e){throw(null==n?void 0:n.aborted)?console.log("Anthropic messages request was cancelled"):v.Z.fromBackend("Error occurred while generating model response. Please try again. Error: ".concat(e)),e}}var k=s(51601);async function P(e){try{return(await (0,f.mcpToolsCall)(e)).tools||[]}catch(e){return console.error("Error fetching MCP tools:",e),[]}}var C=s(49817),I=s(17906),_=s(94263),T=s(92280),Z=e=>{let{endpointType:t,onEndpointChange:s,className:a}=e,n=[{value:C.KP.CHAT,label:"/v1/chat/completions"},{value:C.KP.RESPONSES,label:"/v1/responses"},{value:C.KP.ANTHROPIC_MESSAGES,label:"/v1/messages"},{value:C.KP.IMAGE,label:"/v1/images/generations"},{value:C.KP.IMAGE_EDITS,label:"/v1/images/edits"}];return(0,o.jsxs)("div",{className:a,children:[(0,o.jsx)(T.x,{children:"Endpoint Type:"}),(0,o.jsx)(m.default,{showSearch:!0,value:t,style:{width:"100%"},onChange:s,options:n,className:"rounded-md"})]})},E=e=>{let{onChange:t,value:s,className:n,accessToken:l}=e,[r,i]=(0,a.useState)([]),[c,d]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{(async()=>{if(l)try{let e=await (0,f.tagListCall)(l);console.log("List tags response:",e),i(Object.values(e))}catch(e){console.error("Error fetching tags:",e)}})()},[]),(0,o.jsx)(m.default,{mode:"multiple",placeholder:"Select tags",onChange:t,value:s,loading:c,className:n,options:r.map(e=>({label:e.name,value:e.name,title:e.description||e.name})),optionFilterProp:"label",showSearch:!0,style:{width:"100%"}})},A=s(97415),U=s(67479),R=s(88658),L=s(83322),M=s(70464),D=s(77565),K=e=>{let{reasoningContent:t}=e,[s,l]=(0,a.useState)(!0);return t?(0,o.jsxs)("div",{className:"reasoning-content mt-1 mb-2",children:[(0,o.jsxs)(x.ZP,{type:"text",className:"flex items-center text-xs text-gray-500 hover:text-gray-700",onClick:()=>l(!s),icon:(0,o.jsx)(L.Z,{}),children:[s?"Hide reasoning":"Show reasoning",s?(0,o.jsx)(M.Z,{className:"ml-1"}):(0,o.jsx)(D.Z,{className:"ml-1"})]}),s&&(0,o.jsx)("div",{className:"mt-2 p-3 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-700",children:(0,o.jsx)(n.U,{components:{code(e){let{node:t,inline:s,className:a,children:n,...l}=e,r=/language-(\w+)/.exec(a||"");return!s&&r?(0,o.jsx)(I.Z,{style:_.Z,language:r[1],PreTag:"div",className:"rounded-md my-2",...l,children:String(n).replace(/\n$/,"")}):(0,o.jsx)("code",{className:"".concat(a," px-1.5 py-0.5 rounded bg-gray-100 text-sm font-mono"),...l,children:n})}},children:t})})]}):null},z=s(5540),O=s(71282),F=s(11741),H=s(16601),B=s(58630),G=e=>{let{timeToFirstToken:t,usage:s,toolName:a}=e;return t||s?(0,o.jsxs)("div",{className:"response-metrics mt-2 pt-2 border-t border-gray-100 text-xs text-gray-500 flex flex-wrap gap-3",children:[void 0!==t&&(0,o.jsx)(g.Z,{title:"Time to first token",children:(0,o.jsxs)("div",{className:"flex items-center",children:[(0,o.jsx)(z.Z,{className:"mr-1"}),(0,o.jsxs)("span",{children:[(t/1e3).toFixed(2),"s"]})]})}),(null==s?void 0:s.promptTokens)!==void 0&&(0,o.jsx)(g.Z,{title:"Prompt tokens",children:(0,o.jsxs)("div",{className:"flex items-center",children:[(0,o.jsx)(O.Z,{className:"mr-1"}),(0,o.jsxs)("span",{children:["In: ",s.promptTokens]})]})}),(null==s?void 0:s.completionTokens)!==void 0&&(0,o.jsx)(g.Z,{title:"Completion tokens",children:(0,o.jsxs)("div",{className:"flex items-center",children:[(0,o.jsx)(F.Z,{className:"mr-1"}),(0,o.jsxs)("span",{children:["Out: ",s.completionTokens]})]})}),(null==s?void 0:s.reasoningTokens)!==void 0&&(0,o.jsx)(g.Z,{title:"Reasoning tokens",children:(0,o.jsxs)("div",{className:"flex items-center",children:[(0,o.jsx)(L.Z,{className:"mr-1"}),(0,o.jsxs)("span",{children:["Reasoning: ",s.reasoningTokens]})]})}),(null==s?void 0:s.totalTokens)!==void 0&&(0,o.jsx)(g.Z,{title:"Total tokens",children:(0,o.jsxs)("div",{className:"flex items-center",children:[(0,o.jsx)(H.Z,{className:"mr-1"}),(0,o.jsxs)("span",{children:["Total: ",s.totalTokens]})]})}),a&&(0,o.jsx)(g.Z,{title:"Tool used",children:(0,o.jsxs)("div",{className:"flex items-center",children:[(0,o.jsx)(B.Z,{className:"mr-1"}),(0,o.jsxs)("span",{children:["Tool: ",a]})]})})]}):null},q=s(53508);let{Dragger:J}=c.default;var W=e=>{let{responsesUploadedImage:t,responsesImagePreviewUrl:s,onImageUpload:a,onRemoveImage:n}=e;return(0,o.jsx)(o.Fragment,{children:!t&&(0,o.jsx)(J,{beforeUpload:a,accept:"image/*,.pdf",showUploadList:!1,className:"inline-block",style:{padding:0,border:"none",background:"none"},children:(0,o.jsx)(g.Z,{title:"Attach image or PDF",children:(0,o.jsx)("button",{type:"button",className:"flex items-center justify-center w-8 h-8 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-md transition-colors",children:(0,o.jsx)(q.Z,{style:{fontSize:"16px"}})})})})})};let V=e=>new Promise((t,s)=>{let o=new FileReader;o.onload=()=>{t(o.result.split(",")[1])},o.onerror=s,o.readAsDataURL(e)}),Y=async(e,t)=>{let s=await V(t),o=t.type||(t.name.toLowerCase().endsWith(".pdf")?"application/pdf":"image/jpeg");return{role:"user",content:[{type:"input_text",text:e},{type:"input_image",image_url:"data:".concat(o,";base64,").concat(s)}]}},X=(e,t,s,o)=>{let a="";t&&o&&(a=o.toLowerCase().endsWith(".pdf")?"[PDF attached]":"[Image attached]");let n={role:"user",content:t?"".concat(e," ").concat(a):e};return t&&s&&(n.imagePreviewUrl=s),n},$=e=>"user"===e.role&&"string"==typeof e.content&&(e.content.includes("[Image attached]")||e.content.includes("[PDF attached]"))&&!!e.imagePreviewUrl;var Q=s(50010),ee=e=>{let{message:t}=e;if(!$(t))return null;let s="string"==typeof t.content&&t.content.includes("[PDF attached]");return(0,o.jsx)("div",{className:"mb-2",children:s?(0,o.jsx)("div",{className:"w-64 h-32 rounded-md border border-gray-200 bg-red-50 flex items-center justify-center",children:(0,o.jsx)(Q.Z,{style:{fontSize:"48px",color:"#dc2626"}})}):(0,o.jsx)("img",{src:t.imagePreviewUrl,alt:"User uploaded image",className:"max-w-64 rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"200px"}})})};let{Dragger:et}=c.default;var es=e=>{let{chatUploadedImage:t,chatImagePreviewUrl:s,onImageUpload:a,onRemoveImage:n}=e;return(0,o.jsx)(o.Fragment,{children:!t&&(0,o.jsx)(et,{beforeUpload:a,accept:"image/*,.pdf",showUploadList:!1,className:"inline-block",style:{padding:0,border:"none",background:"none"},children:(0,o.jsx)(g.Z,{title:"Attach image or PDF",children:(0,o.jsx)("button",{type:"button",className:"flex items-center justify-center w-8 h-8 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-md transition-colors",children:(0,o.jsx)(q.Z,{style:{fontSize:"16px"}})})})})})};let eo=e=>new Promise((t,s)=>{let o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=s,o.readAsDataURL(e)}),ea=async(e,t)=>({role:"user",content:[{type:"text",text:e},{type:"image_url",image_url:{url:await eo(t)}}]}),en=(e,t,s,o)=>{let a="";t&&o&&(a=o.toLowerCase().endsWith(".pdf")?"[PDF attached]":"[Image attached]");let n={role:"user",content:t?"".concat(e," ").concat(a):e};return t&&s&&(n.imagePreviewUrl=s),n},el=e=>"user"===e.role&&"string"==typeof e.content&&(e.content.includes("[Image attached]")||e.content.includes("[PDF attached]"))&&!!e.imagePreviewUrl;var er=e=>{let{message:t}=e;if(!el(t))return null;let s="string"==typeof t.content&&t.content.includes("[PDF attached]");return(0,o.jsx)("div",{className:"mb-2",children:s?(0,o.jsx)("div",{className:"w-64 h-32 rounded-md border border-gray-200 bg-red-50 flex items-center justify-center",children:(0,o.jsx)(Q.Z,{style:{fontSize:"48px",color:"#dc2626"}})}):(0,o.jsx)("img",{src:t.imagePreviewUrl,alt:"User uploaded image",className:"max-w-64 rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"200px"}})})},ei=s(63709),ec=s(15424),ed=s(23639),em=e=>{let{endpointType:t,responsesSessionId:s,useApiSessionManagement:a,onToggleSessionManagement:n}=e;return t!==C.KP.RESPONSES?null:(0,o.jsxs)("div",{className:"mb-4",children:[(0,o.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Session Management"}),(0,o.jsx)(g.Z,{title:"Choose between LiteLLM API session management (using previous_response_id) or UI-based session management (using chat history)",children:(0,o.jsx)(ec.Z,{className:"text-gray-400",style:{fontSize:"12px"}})})]}),(0,o.jsx)(ei.Z,{checked:a,onChange:n,checkedChildren:"API",unCheckedChildren:"UI",size:"small"})]}),(0,o.jsxs)("div",{className:"text-xs p-2 rounded-md ".concat(s?"bg-green-50 text-green-700 border border-green-200":"bg-blue-50 text-blue-700 border border-blue-200"),children:[(0,o.jsxs)("div",{className:"flex items-center justify-between",children:[(0,o.jsxs)("div",{className:"flex items-center gap-1",children:[(0,o.jsx)(ec.Z,{style:{fontSize:"12px"}}),(()=>{if(!s)return a?"API Session: Ready":"UI Session: Ready";let e=a?"Response ID":"UI Session",t=s.slice(0,10);return"".concat(e,": ").concat(t,"...")})()]}),s&&(0,o.jsx)(g.Z,{title:(0,o.jsxs)("div",{className:"text-xs",children:[(0,o.jsx)("div",{className:"mb-1",children:"Copy response ID to continue session:"}),(0,o.jsx)("div",{className:"bg-gray-800 text-gray-100 p-2 rounded font-mono text-xs whitespace-pre-wrap",children:'curl -X POST "your-proxy-url/v1/responses" \\\n -H "Authorization: Bearer your-api-key" \\\n -H "Content-Type: application/json" \\\n -d \'{\n "model": "your-model",\n "input": [{"role": "user", "content": "your message", "type": "message"}],\n "previous_response_id": "'.concat(s,'",\n "stream": true\n }\'')})]}),overlayStyle:{maxWidth:"500px"},children:(0,o.jsx)("button",{onClick:()=>{s&&(navigator.clipboard.writeText(s),v.Z.success("Response ID copied to clipboard!"))},className:"ml-2 p-1 hover:bg-green-100 rounded transition-colors",children:(0,o.jsx)(ed.Z,{style:{fontSize:"12px"}})})})]}),(0,o.jsx)("div",{className:"text-xs opacity-75 mt-1",children:s?a?"LiteLLM API session active - context maintained server-side":"UI session active - context maintained client-side":a?"LiteLLM will manage session using previous_response_id":"UI will manage session using chat history"})]})]})},eg=s(29),ep=s.n(eg),eu=s(44851);let{Text:ex}=d.default,{Panel:eh}=eu.default;var ef=e=>{var t,s;let{events:a,className:n}=e;if(console.log("MCPEventsDisplay: Received events:",a),!a||0===a.length)return console.log("MCPEventsDisplay: No events, returning null"),null;let l=a.find(e=>{var t;return"response.output_item.done"===e.type&&(null===(t=e.item)||void 0===t?void 0:t.type)==="mcp_list_tools"&&e.item.tools&&e.item.tools.length>0}),r=a.filter(e=>{var t;return"response.output_item.done"===e.type&&(null===(t=e.item)||void 0===t?void 0:t.type)==="mcp_call"});return(console.log("MCPEventsDisplay: toolsEvent:",l),console.log("MCPEventsDisplay: mcpCallEvents:",r),l||0!==r.length)?(0,o.jsxs)("div",{className:"jsx-32b14b04f420f3ac "+"mcp-events-display ".concat(n||""),children:[(0,o.jsx)(ep(),{id:"32b14b04f420f3ac",children:'.openai-mcp-tools.jsx-32b14b04f420f3ac{position:relative;margin:0;padding:0}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse.jsx-32b14b04f420f3ac{background:transparent!important;border:none!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-item.jsx-32b14b04f420f3ac{border:none!important;background:transparent!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-header.jsx-32b14b04f420f3ac{padding:0 0 0 20px!important;background:transparent!important;border:none!important;font-size:14px!important;color:#9ca3af!important;font-weight:400!important;line-height:20px!important;min-height:20px!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-header.jsx-32b14b04f420f3ac:hover{background:transparent!important;color:#6b7280!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-content.jsx-32b14b04f420f3ac{border:none!important;background:transparent!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-content-box.jsx-32b14b04f420f3ac{padding:4px 0 0 20px!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-expand-icon.jsx-32b14b04f420f3ac{position:absolute!important;left:2px!important;top:2px!important;color:#9ca3af!important;font-size:10px!important;width:16px!important;height:16px!important;display:-webkit-box!important;display:-webkit-flex!important;display:-moz-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center!important;-webkit-align-items:center!important;-moz-box-align:center!important;-ms-flex-align:center!important;align-items:center!important;-webkit-box-pack:center!important;-webkit-justify-content:center!important;-moz-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.openai-mcp-tools.jsx-32b14b04f420f3ac .ant-collapse-expand-icon.jsx-32b14b04f420f3ac:hover{color:#6b7280!important}.openai-vertical-line.jsx-32b14b04f420f3ac{position:absolute;left:9px;top:18px;bottom:0;width:.5px;background-color:#f3f4f6;opacity:.8}.tool-item.jsx-32b14b04f420f3ac{font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:13px;color:#4b5563;line-height:18px;padding:0;margin:0;background:white;position:relative;z-index:1}.mcp-section.jsx-32b14b04f420f3ac{margin-bottom:12px;background:white;position:relative;z-index:1}.mcp-section.jsx-32b14b04f420f3ac:last-child{margin-bottom:0}.mcp-section-header.jsx-32b14b04f420f3ac{font-size:13px;color:#6b7280;font-weight:500;margin-bottom:4px}.mcp-code-block.jsx-32b14b04f420f3ac{background:#f9fafb;border:1px solid#f3f4f6;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;padding:8px;font-size:12px}.mcp-json.jsx-32b14b04f420f3ac{font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:#374151;margin:0;white-space:pre-wrap;word-wrap:break-word}.mcp-approved.jsx-32b14b04f420f3ac{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;font-size:13px;color:#6b7280}.mcp-checkmark.jsx-32b14b04f420f3ac{color:#10b981;margin-right:6px;font-weight:bold}.mcp-response-content.jsx-32b14b04f420f3ac{font-size:13px;color:#374151;line-height:1.5;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,"SF Mono",Monaco,Consolas,"Liberation Mono","Courier New",monospace}'}),(0,o.jsxs)("div",{className:"jsx-32b14b04f420f3ac openai-mcp-tools",children:[(0,o.jsx)("div",{className:"jsx-32b14b04f420f3ac openai-vertical-line"}),(0,o.jsxs)(eu.default,{ghost:!0,size:"small",expandIconPosition:"start",defaultActiveKey:l?["list-tools"]:r.map((e,t)=>"mcp-call-".concat(t)),children:[l&&(0,o.jsx)(eh,{header:"List tools",children:(0,o.jsx)("div",{className:"jsx-32b14b04f420f3ac",children:null===(s=l.item)||void 0===s?void 0:null===(t=s.tools)||void 0===t?void 0:t.map((e,t)=>(0,o.jsx)("div",{className:"jsx-32b14b04f420f3ac tool-item",children:e.name},t))})},"list-tools"),r.map((e,t)=>{var s,a,n;return(0,o.jsx)(eh,{header:(null===(s=e.item)||void 0===s?void 0:s.name)||"Tool call",children:(0,o.jsxs)("div",{className:"jsx-32b14b04f420f3ac",children:[(0,o.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:[(0,o.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section-header",children:"Request"}),(0,o.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-code-block",children:(null===(a=e.item)||void 0===a?void 0:a.arguments)&&(0,o.jsx)("pre",{className:"jsx-32b14b04f420f3ac mcp-json",children:(()=>{try{return JSON.stringify(JSON.parse(e.item.arguments),null,2)}catch(t){return e.item.arguments}})()})})]}),(0,o.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:(0,o.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-approved",children:[(0,o.jsx)("span",{className:"jsx-32b14b04f420f3ac mcp-checkmark",children:"✓"})," Approved"]})}),(null===(n=e.item)||void 0===n?void 0:n.output)&&(0,o.jsxs)("div",{className:"jsx-32b14b04f420f3ac mcp-section",children:[(0,o.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-section-header",children:"Response"}),(0,o.jsx)("div",{className:"jsx-32b14b04f420f3ac mcp-response-content",children:e.item.output})]})]})},"mcp-call-".concat(t))})]})]})]}):(console.log("MCPEventsDisplay: No valid events found, returning null"),null)},eb=s(61935),ev=s(92403),ey=s(69993),ej=s(12660),ew=s(71891),eS=s(44625),eN=s(57400),ek=s(26430),eP=s(11894),eC=s(15883),eI=s(99890),e_=s(26349),eT=s(79276);let{TextArea:eZ}=i.default,{Dragger:eE}=c.default;var eA=e=>{let{accessToken:t,token:s,userRole:i,userID:c,disabledPersonalKeyCreation:h}=e,[f,S]=(0,a.useState)(!1),[T,L]=(0,a.useState)([]),[M,D]=(0,a.useState)(()=>{let e=sessionStorage.getItem("selectedMCPTools");try{let t=e?JSON.parse(e):[];return Array.isArray(t)?t:t?[t]:[]}catch(e){return console.error("Error parsing selectedMCPTools from sessionStorage",e),[]}}),[z,O]=(0,a.useState)(!1),[F,H]=(0,a.useState)(()=>{let e=sessionStorage.getItem("apiKeySource");if(e)try{return JSON.parse(e)}catch(e){console.error("Error parsing apiKeySource from sessionStorage",e)}return h?"custom":"session"}),[q,J]=(0,a.useState)(()=>sessionStorage.getItem("apiKey")||""),[V,$]=(0,a.useState)(""),[et,eo]=(0,a.useState)(()=>{try{let e=sessionStorage.getItem("chatHistory");return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing chatHistory from sessionStorage",e),[]}}),[el,ei]=(0,a.useState)(()=>sessionStorage.getItem("selectedModel")||void 0),[ed,eg]=(0,a.useState)(!1),[ep,eu]=(0,a.useState)([]),ex=(0,a.useRef)(null),[eh,eA]=(0,a.useState)(()=>sessionStorage.getItem("endpointType")||C.KP.CHAT),[eU,eR]=(0,a.useState)(!1),eL=(0,a.useRef)(null),[eM,eD]=(0,a.useState)(()=>{let e=sessionStorage.getItem("selectedTags");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedTags from sessionStorage",e),[]}}),[eK,ez]=(0,a.useState)(()=>{let e=sessionStorage.getItem("selectedVectorStores");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedVectorStores from sessionStorage",e),[]}}),[eO,eF]=(0,a.useState)(()=>{let e=sessionStorage.getItem("selectedGuardrails");try{return e?JSON.parse(e):[]}catch(e){return console.error("Error parsing selectedGuardrails from sessionStorage",e),[]}}),[eH,eB]=(0,a.useState)(()=>sessionStorage.getItem("messageTraceId")||null),[eG,eq]=(0,a.useState)(()=>sessionStorage.getItem("responsesSessionId")||null),[eJ,eW]=(0,a.useState)(()=>{let e=sessionStorage.getItem("useApiSessionManagement");return!e||JSON.parse(e)}),[eV,eY]=(0,a.useState)([]),[eX,e$]=(0,a.useState)([]),[eQ,e0]=(0,a.useState)(null),[e1,e4]=(0,a.useState)(null),[e2,e3]=(0,a.useState)(null),[e6,e5]=(0,a.useState)(null),[e8,e7]=(0,a.useState)(!1),[e9,te]=(0,a.useState)(""),[tt,ts]=(0,a.useState)("openai"),[to,ta]=(0,a.useState)([]),tn=(0,a.useRef)(null),tl=async()=>{let e="session"===F?t:q;if(e){O(!0);try{let t=await P(e);L(t)}catch(e){console.error("Error fetching MCP tools:",e)}finally{O(!1)}}};(0,a.useEffect)(()=>{f&&tl()},[f,t,q,F]),(0,a.useEffect)(()=>{e8&&te((0,R.L)({apiKeySource:F,accessToken:t,apiKey:q,inputMessage:V,chatHistory:et,selectedTags:eM,selectedVectorStores:eK,selectedGuardrails:eO,selectedMCPTools:M,endpointType:eh,selectedModel:el,selectedSdk:tt}))},[e8,tt,F,t,q,V,et,eM,eK,eO,M,eh,el]),(0,a.useEffect)(()=>{let e=setTimeout(()=>{sessionStorage.setItem("chatHistory",JSON.stringify(et))},500);return()=>{clearTimeout(e)}},[et]),(0,a.useEffect)(()=>{sessionStorage.setItem("apiKeySource",JSON.stringify(F)),sessionStorage.setItem("apiKey",q),sessionStorage.setItem("endpointType",eh),sessionStorage.setItem("selectedTags",JSON.stringify(eM)),sessionStorage.setItem("selectedVectorStores",JSON.stringify(eK)),sessionStorage.setItem("selectedGuardrails",JSON.stringify(eO)),sessionStorage.setItem("selectedMCPTools",JSON.stringify(M)),el?sessionStorage.setItem("selectedModel",el):sessionStorage.removeItem("selectedModel"),eH?sessionStorage.setItem("messageTraceId",eH):sessionStorage.removeItem("messageTraceId"),eG?sessionStorage.setItem("responsesSessionId",eG):sessionStorage.removeItem("responsesSessionId"),sessionStorage.setItem("useApiSessionManagement",JSON.stringify(eJ))},[F,q,el,eh,eM,eK,eO,eH,eG,eJ,M]),(0,a.useEffect)(()=>{let e="session"===F?t:q;if(!e||!s||!i||!c){console.log("userApiKey or token or userRole or userID is missing = ",e,s,i,c);return}(async()=>{try{if(!e){console.log("userApiKey is missing");return}let t=await (0,k.p)(e);console.log("Fetched models:",t),eu(t);let s=t.some(e=>e.model_group===el);t.length?s||ei(t[0].model_group):ei(void 0)}catch(e){console.error("Error fetching model info:",e)}})(),tl()},[t,c,i,F,q,s]),(0,a.useEffect)(()=>{tn.current&&setTimeout(()=>{var e;null===(e=tn.current)||void 0===e||e.scrollIntoView({behavior:"smooth",block:"end"})},100)},[et]);let tr=(e,t,s)=>{console.log("updateTextUI called with:",e,t,s),eo(o=>{let a=o[o.length-1];if(!a||a.role!==e||a.isImage)return[...o,{role:e,content:t,model:s}];{var n;let e={...a,content:a.content+t,model:null!==(n=a.model)&&void 0!==n?n:s};return[...o.slice(0,-1),e]}})},ti=e=>{eo(t=>{let s=t[t.length-1];return s&&"assistant"===s.role&&!s.isImage?[...t.slice(0,t.length-1),{...s,reasoningContent:(s.reasoningContent||"")+e}]:t.length>0&&"user"===t[t.length-1].role?[...t,{role:"assistant",content:"",reasoningContent:e}]:t})},tc=e=>{console.log("updateTimingData called with:",e),eo(t=>{let s=t[t.length-1];if(console.log("Current last message:",s),s&&"assistant"===s.role){console.log("Updating assistant message with timeToFirstToken:",e);let o=[...t.slice(0,t.length-1),{...s,timeToFirstToken:e}];return console.log("Updated chat history:",o),o}return s&&"user"===s.role?(console.log("Creating new assistant message with timeToFirstToken:",e),[...t,{role:"assistant",content:"",timeToFirstToken:e}]):(console.log("No appropriate message found to update timing"),t)})},td=(e,t)=>{console.log("Received usage data:",e),eo(s=>{let o=s[s.length-1];if(o&&"assistant"===o.role){console.log("Updating message with usage data:",e);let a={...o,usage:e,toolName:t};return console.log("Updated message:",a),[...s.slice(0,s.length-1),a]}return s})},tm=e=>{console.log("Received response ID for session management:",e),eJ&&eq(e)},tg=e=>{console.log("ChatUI: Received MCP event:",e),ta(t=>{if(t.some(t=>t.item_id===e.item_id&&t.type===e.type&&t.sequence_number===e.sequence_number))return console.log("ChatUI: Duplicate MCP event, skipping"),t;let s=[...t,e];return console.log("ChatUI: Updated MCP events:",s),s})},tp=(e,t)=>{eo(s=>[...s,{role:"assistant",content:e,model:t,isImage:!0}])},tu=(e,t)=>{eo(s=>{let o=s[s.length-1];if(!o||"assistant"!==o.role||o.isImage)return[...s,{role:"assistant",content:"",model:t,image:{url:e,detail:"auto"}}];{var a;let n={...o,image:{url:e,detail:"auto"},model:null!==(a=o.model)&&void 0!==a?a:t};return[...s.slice(0,-1),n]}})},tx=e=>{eY(t=>[...t,e]);let t=URL.createObjectURL(e);return e$(e=>[...e,t]),!1},th=e=>{eX[e]&&URL.revokeObjectURL(eX[e]),eY(t=>t.filter((t,s)=>s!==e)),e$(t=>t.filter((t,s)=>s!==e))},tf=()=>{eX.forEach(e=>{URL.revokeObjectURL(e)}),eY([]),e$([])},tb=()=>{e1&&URL.revokeObjectURL(e1),e0(null),e4(null)},tv=()=>{e6&&URL.revokeObjectURL(e6),e3(null),e5(null)},ty=async()=>{let e;if(""===V.trim())return;if(eh===C.KP.IMAGE_EDITS&&0===eV.length){v.Z.fromBackend("Please upload at least one image for editing");return}if(!s||!i||!c)return;let o="session"===F?t:q;if(!o){v.Z.fromBackend("Please provide an API key or select Current UI Session");return}eL.current=new AbortController;let a=eL.current.signal;if(eh===C.KP.RESPONSES&&eQ)try{e=await Y(V,eQ)}catch(e){v.Z.fromBackend("Failed to process image. Please try again.");return}else if(eh===C.KP.CHAT&&e2)try{e=await ea(V,e2)}catch(e){v.Z.fromBackend("Failed to process image. Please try again.");return}else e={role:"user",content:V};let n=eH||(0,r.Z)();eH||eB(n),eo([...et,eh===C.KP.RESPONSES&&eQ?X(V,!0,e1||void 0,eQ.name):eh===C.KP.CHAT&&e2?en(V,!0,e6||void 0,e2.name):X(V,!1)]),ta([]),eR(!0);try{if(el){if(eh===C.KP.CHAT){let t=[...et.filter(e=>!e.isImage).map(e=>{let{role:t,content:s}=e;return{role:t,content:"string"==typeof s?s:""}}),e];await b(t,(e,t)=>tr("assistant",e,t),el,o,eM,a,ti,tc,td,n,eK.length>0?eK:void 0,eO.length>0?eO:void 0,M,tu)}else if(eh===C.KP.IMAGE)await y(V,(e,t)=>tp(e,t),el,o,eM,a);else if(eh===C.KP.IMAGE_EDITS)eV.length>0&&await j(1===eV.length?eV[0]:eV,V,(e,t)=>tp(e,t),el,o,eM,a);else if(eh===C.KP.RESPONSES){let t;t=eJ&&eG?[e]:[...et.filter(e=>!e.isImage).map(e=>{let{role:t,content:s}=e;return{role:t,content:s}}),e],await w(t,(e,t,s)=>tr(e,t,s),el,o,eM,a,ti,tc,td,n,eK.length>0?eK:void 0,eO.length>0?eO:void 0,M,eJ?eG:null,tm,tg)}else if(eh===C.KP.ANTHROPIC_MESSAGES){let t=[...et.filter(e=>!e.isImage).map(e=>{let{role:t,content:s}=e;return{role:t,content:s}}),e];await N(t,(e,t,s)=>tr(e,t,s),el,o,eM,a,ti,tc,td,n,eK.length>0?eK:void 0,eO.length>0?eO:void 0,M)}}}catch(e){a.aborted?console.log("Request was cancelled"):(console.error("Error fetching response",e),tr("assistant","Error fetching response:"+e))}finally{eR(!1),eL.current=null,eh===C.KP.IMAGE_EDITS&&tf(),eh===C.KP.RESPONSES&&eQ&&tb(),eh===C.KP.CHAT&&e2&&tv()}$("")};if(i&&"Admin Viewer"===i){let{Title:e,Paragraph:t}=d.default;return(0,o.jsxs)("div",{children:[(0,o.jsx)(e,{level:1,children:"Access Denied"}),(0,o.jsx)(t,{children:"Ask your proxy admin for access to test models"})]})}let tj=(0,o.jsx)(eb.Z,{style:{fontSize:24},spin:!0});return(0,o.jsxs)("div",{className:"w-full h-screen p-4 bg-white",children:[(0,o.jsx)(l.Zb,{className:"w-full rounded-xl shadow-md overflow-hidden",children:(0,o.jsxs)("div",{className:"flex h-[80vh] w-full gap-4",children:[(0,o.jsxs)("div",{className:"w-1/4 p-4 bg-gray-50 overflow-y-auto",children:[(0,o.jsx)(l.Dx,{className:"text-xl font-semibold mb-6 mt-2",children:"Configurations"}),(0,o.jsxs)("div",{className:"space-y-4",children:[(0,o.jsxs)("div",{children:[(0,o.jsxs)(l.xv,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,o.jsx)(ev.Z,{className:"mr-2"})," API Key Source"]}),(0,o.jsx)(m.default,{disabled:h,value:F,style:{width:"100%"},onChange:e=>{H(e)},options:[{value:"session",label:"Current UI Session"},{value:"custom",label:"Virtual Key"}],className:"rounded-md"}),"custom"===F&&(0,o.jsx)(l.oi,{className:"mt-2",placeholder:"Enter custom API key",type:"password",onValueChange:J,value:q,icon:ev.Z})]}),(0,o.jsxs)("div",{children:[(0,o.jsxs)(l.xv,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,o.jsx)(ey.Z,{className:"mr-2"})," Select Model"]}),(0,o.jsx)(m.default,{value:el,placeholder:"Select a Model",onChange:e=>{console.log("selected ".concat(e)),ei(e),eg("custom"===e)},options:[...Array.from(new Set(ep.map(e=>e.model_group))).map((e,t)=>({value:e,label:e,key:t})),{value:"custom",label:"Enter custom model",key:"custom"}],style:{width:"100%"},showSearch:!0,className:"rounded-md"}),ed&&(0,o.jsx)(l.oi,{className:"mt-2",placeholder:"Enter custom model name",onValueChange:e=>{ex.current&&clearTimeout(ex.current),ex.current=setTimeout(()=>{ei(e)},500)}})]}),(0,o.jsxs)("div",{children:[(0,o.jsxs)(l.xv,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,o.jsx)(ej.Z,{className:"mr-2"})," Endpoint Type"]}),(0,o.jsx)(Z,{endpointType:eh,onEndpointChange:e=>{eA(e)},className:"mb-4"}),(0,o.jsx)(em,{endpointType:eh,responsesSessionId:eG,useApiSessionManagement:eJ,onToggleSessionManagement:e=>{eW(e),e||eq(null)}})]}),(0,o.jsxs)("div",{children:[(0,o.jsxs)(l.xv,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,o.jsx)(ew.Z,{className:"mr-2"})," Tags"]}),(0,o.jsx)(E,{value:eM,onChange:eD,className:"mb-4",accessToken:t||""})]}),(0,o.jsxs)("div",{children:[(0,o.jsxs)(l.xv,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,o.jsx)(B.Z,{className:"mr-2"})," MCP Tool",(0,o.jsx)(g.Z,{className:"ml-1",title:"Select MCP tools to use in your conversation, only available for /v1/responses endpoint",children:(0,o.jsx)(ec.Z,{})})]}),(0,o.jsx)(m.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select MCP tools",value:M,onChange:e=>D(e),loading:z,className:"mb-4",allowClear:!0,optionLabelProp:"label",disabled:eh!==C.KP.RESPONSES,maxTagCount:"responsive",children:Array.isArray(T)&&T.map(e=>(0,o.jsx)(m.default.Option,{value:e.name,label:(0,o.jsx)("div",{className:"font-medium",children:e.name}),children:(0,o.jsxs)("div",{className:"flex flex-col py-1",children:[(0,o.jsx)("span",{className:"font-medium",children:e.name}),(0,o.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.description})]})},e.name))})]}),(0,o.jsxs)("div",{children:[(0,o.jsxs)(l.xv,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,o.jsx)(eS.Z,{className:"mr-2"})," Vector Store",(0,o.jsx)(g.Z,{className:"ml-1",title:(0,o.jsxs)("span",{children:["Select vector store(s) to use for this LLM API call. You can set up your vector store"," ",(0,o.jsx)("a",{href:"?page=vector-stores",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,o.jsx)(ec.Z,{})})]}),(0,o.jsx)(A.Z,{value:eK,onChange:ez,className:"mb-4",accessToken:t||""})]}),(0,o.jsxs)("div",{children:[(0,o.jsxs)(l.xv,{className:"font-medium block mb-2 text-gray-700 flex items-center",children:[(0,o.jsx)(eN.Z,{className:"mr-2"})," Guardrails",(0,o.jsx)(g.Z,{className:"ml-1",title:(0,o.jsxs)("span",{children:["Select guardrail(s) to use for this LLM API call. You can set up your guardrails"," ",(0,o.jsx)("a",{href:"?page=guardrails",style:{color:"#1890ff"},children:"here"}),"."]}),children:(0,o.jsx)(ec.Z,{})})]}),(0,o.jsx)(U.Z,{value:eO,onChange:eF,className:"mb-4",accessToken:t||""})]})]})]}),(0,o.jsxs)("div",{className:"w-3/4 flex flex-col bg-white",children:[(0,o.jsxs)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:[(0,o.jsx)(l.Dx,{className:"text-xl font-semibold mb-0",children:"Test Key"}),(0,o.jsxs)("div",{className:"flex gap-2",children:[(0,o.jsx)(l.zx,{onClick:()=>{eo([]),eB(null),eq(null),ta([]),tf(),tb(),tv(),sessionStorage.removeItem("chatHistory"),sessionStorage.removeItem("messageTraceId"),sessionStorage.removeItem("responsesSessionId"),v.Z.success("Chat history cleared.")},className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:ek.Z,children:"Clear Chat"}),(0,o.jsx)(l.zx,{onClick:()=>e7(!0),className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:eP.Z,children:"Get Code"})]})]}),(0,o.jsxs)("div",{className:"flex-1 overflow-auto p-4 pb-0",children:[0===et.length&&(0,o.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,o.jsx)(ey.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,o.jsx)(l.xv,{children:"Start a conversation or generate an image"})]}),et.map((e,t)=>(0,o.jsx)("div",{children:(0,o.jsx)("div",{className:"mb-4 ".concat("user"===e.role?"text-right":"text-left"),children:(0,o.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:"user"===e.role?"#f0f8ff":"#ffffff",border:"user"===e.role?"1px solid #e6f0fa":"1px solid #f0f0f0",textAlign:"left"},children:[(0,o.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,o.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:"user"===e.role?"#e6f0fa":"#f5f5f5"},children:"user"===e.role?(0,o.jsx)(eC.Z,{style:{fontSize:"12px",color:"#2563eb"}}):(0,o.jsx)(ey.Z,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,o.jsx)("strong",{className:"text-sm capitalize",children:e.role}),"assistant"===e.role&&e.model&&(0,o.jsx)("span",{className:"text-xs px-2 py-0.5 rounded bg-gray-100 text-gray-600 font-normal",children:e.model})]}),e.reasoningContent&&(0,o.jsx)(K,{reasoningContent:e.reasoningContent}),"assistant"===e.role&&t===et.length-1&&to.length>0&&eh===C.KP.RESPONSES&&(0,o.jsx)("div",{className:"mb-3",children:(0,o.jsx)(ef,{events:to})}),(0,o.jsxs)("div",{className:"whitespace-pre-wrap break-words max-w-full message-content",style:{wordWrap:"break-word",overflowWrap:"break-word",wordBreak:"break-word",hyphens:"auto"},children:[e.isImage?(0,o.jsx)("img",{src:"string"==typeof e.content?e.content:"",alt:"Generated image",className:"max-w-full rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"500px"}}):(0,o.jsxs)(o.Fragment,{children:[eh===C.KP.RESPONSES&&(0,o.jsx)(ee,{message:e}),eh===C.KP.CHAT&&(0,o.jsx)(er,{message:e}),(0,o.jsx)(n.U,{components:{code(e){let{node:t,inline:s,className:a,children:n,...l}=e,r=/language-(\w+)/.exec(a||"");return!s&&r?(0,o.jsx)(I.Z,{style:_.Z,language:r[1],PreTag:"div",className:"rounded-md my-2",wrapLines:!0,wrapLongLines:!0,...l,children:String(n).replace(/\n$/,"")}):(0,o.jsx)("code",{className:"".concat(a," px-1.5 py-0.5 rounded bg-gray-100 text-sm font-mono"),style:{wordBreak:"break-word"},...l,children:n})},pre:e=>{let{node:t,...s}=e;return(0,o.jsx)("pre",{style:{overflowX:"auto",maxWidth:"100%"},...s})}},children:"string"==typeof e.content?e.content:""}),e.image&&(0,o.jsx)("div",{className:"mt-3",children:(0,o.jsx)("img",{src:e.image.url,alt:"Generated image",className:"max-w-full rounded-md border border-gray-200 shadow-sm",style:{maxHeight:"500px"}})})]}),"assistant"===e.role&&(e.timeToFirstToken||e.usage)&&(0,o.jsx)(G,{timeToFirstToken:e.timeToFirstToken,usage:e.usage,toolName:e.toolName})]})]})})},t)),eU&&to.length>0&&eh===C.KP.RESPONSES&&et.length>0&&"user"===et[et.length-1].role&&(0,o.jsx)("div",{className:"text-left mb-4",children:(0,o.jsxs)("div",{className:"inline-block max-w-[80%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:"#ffffff",border:"1px solid #f0f0f0",textAlign:"left"},children:[(0,o.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,o.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:"#f5f5f5"},children:(0,o.jsx)(ey.Z,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,o.jsx)("strong",{className:"text-sm capitalize",children:"Assistant"})]}),(0,o.jsx)(ef,{events:to})]})}),eU&&(0,o.jsx)("div",{className:"flex justify-center items-center my-4",children:(0,o.jsx)(p.Z,{indicator:tj})}),(0,o.jsx)("div",{ref:tn,style:{height:"1px"}})]}),(0,o.jsxs)("div",{className:"p-4 border-t border-gray-200 bg-white",children:[eh===C.KP.IMAGE_EDITS&&(0,o.jsx)("div",{className:"mb-4",children:0===eV.length?(0,o.jsxs)(eE,{beforeUpload:tx,accept:"image/*",showUploadList:!1,className:"border-dashed border-2 border-gray-300 rounded-lg p-4",children:[(0,o.jsx)("p",{className:"ant-upload-drag-icon",children:(0,o.jsx)(eI.Z,{style:{fontSize:"24px",color:"#666"}})}),(0,o.jsx)("p",{className:"ant-upload-text text-sm",children:"Click or drag images to upload"}),(0,o.jsx)("p",{className:"ant-upload-hint text-xs text-gray-500",children:"Support for PNG, JPG, JPEG formats. Multiple images supported."})]}):(0,o.jsxs)("div",{className:"flex flex-wrap gap-2",children:[eV.map((e,t)=>(0,o.jsxs)("div",{className:"relative inline-block",children:[(0,o.jsx)("img",{src:eX[t]||"",alt:"Upload preview ".concat(t+1),className:"max-w-32 max-h-32 rounded-md border border-gray-200 object-cover"}),(0,o.jsx)("button",{className:"absolute top-1 right-1 bg-white shadow-sm border border-gray-200 rounded px-1 py-1 text-red-500 hover:bg-red-50 text-xs",onClick:()=>th(t),children:(0,o.jsx)(e_.Z,{})})]},t)),(0,o.jsxs)("div",{className:"flex items-center justify-center w-32 h-32 border-2 border-dashed border-gray-300 rounded-md hover:border-gray-400 cursor-pointer",onClick:()=>{var e;return null===(e=document.getElementById("additional-image-upload"))||void 0===e?void 0:e.click()},children:[(0,o.jsxs)("div",{className:"text-center",children:[(0,o.jsx)(eI.Z,{style:{fontSize:"24px",color:"#666"}}),(0,o.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:"Add more"})]}),(0,o.jsx)("input",{id:"additional-image-upload",type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:e=>{Array.from(e.target.files||[]).forEach(e=>tx(e))}})]})]})}),eh===C.KP.RESPONSES&&eQ&&(0,o.jsx)("div",{className:"mb-2",children:(0,o.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[(0,o.jsx)("div",{className:"relative inline-block",children:eQ.name.toLowerCase().endsWith(".pdf")?(0,o.jsx)("div",{className:"w-10 h-10 rounded-md bg-red-500 flex items-center justify-center",children:(0,o.jsx)(Q.Z,{style:{fontSize:"16px",color:"white"}})}):(0,o.jsx)("img",{src:e1||"",alt:"Upload preview",className:"w-10 h-10 rounded-md border border-gray-200 object-cover"})}),(0,o.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,o.jsx)("div",{className:"text-sm font-medium text-gray-900 truncate",children:eQ.name}),(0,o.jsx)("div",{className:"text-xs text-gray-500",children:eQ.name.toLowerCase().endsWith(".pdf")?"PDF":"Image"})]}),(0,o.jsx)("button",{className:"flex items-center justify-center w-6 h-6 text-gray-400 hover:text-gray-600 hover:bg-gray-200 rounded-full transition-colors",onClick:tb,children:(0,o.jsx)(e_.Z,{style:{fontSize:"12px"}})})]})}),eh===C.KP.CHAT&&e2&&(0,o.jsx)("div",{className:"mb-2",children:(0,o.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-200",children:[(0,o.jsx)("div",{className:"relative inline-block",children:e2.name.toLowerCase().endsWith(".pdf")?(0,o.jsx)("div",{className:"w-10 h-10 rounded-md bg-red-500 flex items-center justify-center",children:(0,o.jsx)(Q.Z,{style:{fontSize:"16px",color:"white"}})}):(0,o.jsx)("img",{src:e6||"",alt:"Upload preview",className:"w-10 h-10 rounded-md border border-gray-200 object-cover"})}),(0,o.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,o.jsx)("div",{className:"text-sm font-medium text-gray-900 truncate",children:e2.name}),(0,o.jsx)("div",{className:"text-xs text-gray-500",children:e2.name.toLowerCase().endsWith(".pdf")?"PDF":"Image"})]}),(0,o.jsx)("button",{className:"flex items-center justify-center w-6 h-6 text-gray-400 hover:text-gray-600 hover:bg-gray-200 rounded-full transition-colors",onClick:tv,children:(0,o.jsx)(e_.Z,{style:{fontSize:"12px"}})})]})}),(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsxs)("div",{className:"flex items-center flex-1 bg-white border border-gray-300 rounded-xl px-3 py-1 min-h-[44px]",children:[(0,o.jsxs)("div",{className:"flex-shrink-0 mr-2",children:[eh===C.KP.RESPONSES&&!eQ&&(0,o.jsx)(W,{responsesUploadedImage:eQ,responsesImagePreviewUrl:e1,onImageUpload:e=>(e0(e),e4(URL.createObjectURL(e)),!1),onRemoveImage:tb}),eh===C.KP.CHAT&&!e2&&(0,o.jsx)(es,{chatUploadedImage:e2,chatImagePreviewUrl:e6,onImageUpload:e=>(e3(e),e5(URL.createObjectURL(e)),!1),onRemoveImage:tv})]}),(0,o.jsx)(eZ,{value:V,onChange:e=>$(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),ty())},placeholder:eh===C.KP.CHAT||eh===C.KP.RESPONSES||eh===C.KP.ANTHROPIC_MESSAGES?"Type your message... (Shift+Enter for new line)":eh===C.KP.IMAGE_EDITS?"Describe how you want to edit the image...":"Describe the image you want to generate...",disabled:eU,className:"flex-1",autoSize:{minRows:1,maxRows:4},style:{resize:"none",border:"none",boxShadow:"none",background:"transparent",padding:"4px 0",fontSize:"14px",lineHeight:"20px"}}),(0,o.jsx)(l.zx,{onClick:ty,disabled:eU||!V.trim(),className:"flex-shrink-0 ml-2 !w-8 !h-8 !min-w-8 !p-0 !rounded-full !bg-blue-600 hover:!bg-blue-700 disabled:!bg-gray-300 !border-none !text-white disabled:!text-gray-500 !flex !items-center !justify-center",children:(0,o.jsx)(eT.Z,{style:{fontSize:"14px"}})})]}),eU&&(0,o.jsx)(l.zx,{onClick:()=>{eL.current&&(eL.current.abort(),eL.current=null,eR(!1),v.Z.info("Request cancelled"))},className:"bg-red-50 hover:bg-red-100 text-red-600 border-red-200",icon:e_.Z,children:"Cancel"})]})]})]})]})}),(0,o.jsxs)(u.Z,{title:"Generated Code",visible:e8,onCancel:()=>e7(!1),footer:null,width:800,children:[(0,o.jsxs)("div",{className:"flex justify-between items-end my-4",children:[(0,o.jsxs)("div",{children:[(0,o.jsx)(l.xv,{className:"font-medium block mb-1 text-gray-700",children:"SDK Type"}),(0,o.jsx)(m.default,{value:tt,onChange:e=>ts(e),style:{width:150},options:[{value:"openai",label:"OpenAI SDK"},{value:"azure",label:"Azure SDK"}]})]}),(0,o.jsx)(x.ZP,{onClick:()=>{navigator.clipboard.writeText(e9),v.Z.success("Copied to clipboard!")},children:"Copy to Clipboard"})]}),(0,o.jsx)(I.Z,{language:"python",style:_.Z,wrapLines:!0,wrapLongLines:!0,className:"rounded-md",customStyle:{maxHeight:"60vh",overflowY:"auto"},children:e9})]}),"custom"===F&&(0,o.jsx)(u.Z,{title:"Select MCP Tool",visible:f,onCancel:()=>S(!1),onOk:()=>{S(!1),v.Z.success("MCP tool selection updated")},width:800,children:z?(0,o.jsx)("div",{className:"flex justify-center items-center py-8",children:(0,o.jsx)(p.Z,{indicator:(0,o.jsx)(eb.Z,{style:{fontSize:24},spin:!0})})}):(0,o.jsxs)("div",{className:"space-y-4",children:[(0,o.jsx)(l.xv,{className:"text-gray-600 block mb-4",children:"Select the MCP tools you want to use in your conversation."}),(0,o.jsx)(m.default,{mode:"multiple",style:{width:"100%"},placeholder:"Select MCP tools",value:M,onChange:e=>D(e),optionLabelProp:"label",allowClear:!0,maxTagCount:"responsive",children:T.map(e=>(0,o.jsx)(m.default.Option,{value:e.name,label:(0,o.jsx)("div",{className:"font-medium",children:e.name}),children:(0,o.jsxs)("div",{className:"flex flex-col py-1",children:[(0,o.jsx)("span",{className:"font-medium",children:e.name}),(0,o.jsx)("span",{className:"text-xs text-gray-500 mt-1",children:e.description})]})},e.name))})]})})]})}}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/1160-3efb81c958413447.js b/litellm/proxy/_experimental/out/_next/static/chunks/1160-3efb81c958413447.js new file mode 100644 index 00000000000..2a26d9fe08b --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/1160-3efb81c958413447.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1160],{69993:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M300 328a60 60 0 10120 0 60 60 0 10-120 0zM852 64H172c-17.7 0-32 14.3-32 32v660c0 17.7 14.3 32 32 32h680c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-32 660H204V128h616v596zM604 328a60 60 0 10120 0 60 60 0 10-120 0zm250.2 556H169.8c-16.5 0-29.8 14.3-29.8 32v36c0 4.4 3.3 8 7.4 8h729.1c4.1 0 7.4-3.6 7.4-8v-36c.1-17.7-13.2-32-29.7-32zM664 508H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"}}]},name:"robot",theme:"outlined"},a=n(55015),c=o.forwardRef(function(e,t){return o.createElement(a.Z,(0,r.Z)({},e,{ref:t,icon:i}))})},14042:function(e,t,n){"use strict";n.d(t,{Z:function(){return eM}});var r=n(5853),o=n(7084),i=n(26898),a=n(97324),c=n(1153),l=n(2265),s=n(60474),u=n(47625),p=n(93765),f=n(86757),d=n.n(f),y=n(9841),m=n(81889),h=n(87602),v=n(82944),b=["points","className","baseLinePoints","connectNulls"];function g(){return(g=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&void 0!==arguments[0]?arguments[0]:[],t=[[]];return e.forEach(function(e){x(e)?t[t.length-1].push(e):t[t.length-1].length>0&&t.push([])}),x(e[0])&&t[t.length-1].push(e[0]),t[t.length-1].length<=0&&(t=t.slice(0,-1)),t},j=function(e,t){var n=k(e);t&&(n=[n.reduce(function(e,t){return[].concat(A(e),A(t))},[])]);var r=n.map(function(e){return e.reduce(function(e,t,n){return"".concat(e).concat(0===n?"M":"L").concat(t.x,",").concat(t.y)},"")}).join("");return 1===n.length?"".concat(r,"Z"):r},w=function(e,t,n){var r=j(e,n);return"".concat("Z"===r.slice(-1)?r.slice(0,-1):r,"L").concat(j(t.reverse(),n).slice(1))},P=function(e){var t=e.points,n=e.className,r=e.baseLinePoints,o=e.connectNulls,i=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,b);if(!t||!t.length)return null;var a=(0,h.Z)("recharts-polygon",n);if(r&&r.length){var c=i.stroke&&"none"!==i.stroke,s=w(t,r,o);return l.createElement("g",{className:a},l.createElement("path",g({},(0,v.L6)(i,!0),{fill:"Z"===s.slice(-1)?i.fill:"none",stroke:"none",d:s})),c?l.createElement("path",g({},(0,v.L6)(i,!0),{fill:"none",d:j(t,o)})):null,c?l.createElement("path",g({},(0,v.L6)(i,!0),{fill:"none",d:j(r,o)})):null)}var u=j(t,o);return l.createElement("path",g({},(0,v.L6)(i,!0),{fill:"Z"===u.slice(-1)?i.fill:"none",className:a,d:u}))},E=n(58811),S=n(41637),T=n(39206);function R(e){return(R="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function L(){return(L=Object.assign?Object.assign.bind():function(e){for(var t=1;t1e-5?"outer"===t?"start":"end":n<-.00001?"outer"===t?"end":"start":"middle"}},{key:"renderAxisLine",value:function(){var e=this.props,t=e.cx,n=e.cy,r=e.radius,o=e.axisLine,i=e.axisLineType,a=I(I({},(0,v.L6)(this.props,!1)),{},{fill:"none"},(0,v.L6)(o,!1));if("circle"===i)return l.createElement(m.o,L({className:"recharts-polar-angle-axis-line"},a,{cx:t,cy:n,r:r}));var c=this.props.ticks.map(function(e){return(0,T.op)(t,n,r,e.coordinate)});return l.createElement(P,L({className:"recharts-polar-angle-axis-line"},a,{points:c}))}},{key:"renderTicks",value:function(){var e=this,t=this.props,n=t.ticks,r=t.tick,o=t.tickLine,a=t.tickFormatter,c=t.stroke,s=(0,v.L6)(this.props,!1),u=(0,v.L6)(r,!1),p=I(I({},s),{},{fill:"none"},(0,v.L6)(o,!1)),f=n.map(function(t,n){var f=e.getTickLineCoord(t),d=I(I(I({textAnchor:e.getTickTextAnchor(t)},s),{},{stroke:"none",fill:c},u),{},{index:n,payload:t,x:f.x2,y:f.y2});return l.createElement(y.m,L({className:"recharts-polar-angle-axis-tick",key:"tick-".concat(t.coordinate)},(0,S.bw)(e.props,t,n)),o&&l.createElement("line",L({className:"recharts-polar-angle-axis-tick-line"},p,f)),r&&i.renderTickItem(r,d,a?a(t.value,n):t.value))});return l.createElement(y.m,{className:"recharts-polar-angle-axis-ticks"},f)}},{key:"render",value:function(){var e=this.props,t=e.ticks,n=e.radius,r=e.axisLine;return!(n<=0)&&t&&t.length?l.createElement(y.m,{className:"recharts-polar-angle-axis"},r&&this.renderAxisLine(),this.renderTicks()):null}}],r=[{key:"renderTickItem",value:function(e,t,n){return l.isValidElement(e)?l.cloneElement(e,t):d()(e)?e(t):l.createElement(E.x,L({},t,{className:"recharts-polar-angle-axis-tick-value"}),n)}}],n&&C(i.prototype,n),r&&C(i,r),Object.defineProperty(i,"prototype",{writable:!1}),i}(l.PureComponent);_(B,"displayName","PolarAngleAxis"),_(B,"axisType","angleAxis"),_(B,"defaultProps",{type:"category",angleAxisId:0,scale:"auto",cx:0,cy:0,orientation:"outer",axisLine:!0,tickLine:!0,tickSize:8,tick:!0,hide:!1,allowDuplicatedCategory:!0});var K=n(35802),V=n.n(K),z=n(37891),$=n.n(z),H=n(26680),q=["cx","cy","angle","ticks","axisLine"],G=["ticks","tick","angle","tickFormatter","stroke"];function Y(e){return(Y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function U(){return(U=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Q(e,t){for(var n=0;n0?ec()(e,"paddingAngle",0):0;if(n){var c=(0,eh.k4)(n.endAngle-n.startAngle,e.endAngle-e.startAngle),l=ek(ek({},e),{},{startAngle:i+a,endAngle:i+c(r)+a});o.push(l),i=l.endAngle}else{var s=e.endAngle,p=e.startAngle,f=(0,eh.k4)(0,s-p)(r),d=ek(ek({},e),{},{startAngle:i+a,endAngle:i+f+a});o.push(d),i=d.endAngle}}),l.createElement(y.m,null,e.renderSectorsStatically(o))})}},{key:"attachKeyboardHandlers",value:function(e){var t=this;e.onkeydown=function(e){if(!e.altKey)switch(e.key){case"ArrowLeft":var n=++t.state.sectorToFocus%t.sectorRefs.length;t.sectorRefs[n].focus(),t.setState({sectorToFocus:n});break;case"ArrowRight":var r=--t.state.sectorToFocus<0?t.sectorRefs.length-1:t.state.sectorToFocus%t.sectorRefs.length;t.sectorRefs[r].focus(),t.setState({sectorToFocus:r});break;case"Escape":t.sectorRefs[t.state.sectorToFocus].blur(),t.setState({sectorToFocus:0})}}}},{key:"renderSectors",value:function(){var e=this.props,t=e.sectors,n=e.isAnimationActive,r=this.state.prevSectors;return n&&t&&t.length&&(!r||!es()(r,t))?this.renderSectorsWithAnimation():this.renderSectorsStatically(t)}},{key:"componentDidMount",value:function(){this.pieRef&&this.attachKeyboardHandlers(this.pieRef)}},{key:"render",value:function(){var e=this,t=this.props,n=t.hide,r=t.sectors,o=t.className,i=t.label,a=t.cx,c=t.cy,s=t.innerRadius,u=t.outerRadius,p=t.isAnimationActive,f=this.state.isAnimationFinished;if(n||!r||!r.length||!(0,eh.hj)(a)||!(0,eh.hj)(c)||!(0,eh.hj)(s)||!(0,eh.hj)(u))return null;var d=(0,h.Z)("recharts-pie",o);return l.createElement(y.m,{tabIndex:this.props.rootTabIndex,className:d,ref:function(t){e.pieRef=t}},this.renderSectors(),i&&this.renderLabels(r),H._.renderCallByParent(this.props,null,!1),(!p||f)&&ed.e.renderCallByParent(this.props,r,!1))}}],r=[{key:"getDerivedStateFromProps",value:function(e,t){return t.prevIsAnimationActive!==e.isAnimationActive?{prevIsAnimationActive:e.isAnimationActive,prevAnimationId:e.animationId,curSectors:e.sectors,prevSectors:[],isAnimationFinished:!0}:e.isAnimationActive&&e.animationId!==t.prevAnimationId?{prevAnimationId:e.animationId,curSectors:e.sectors,prevSectors:t.curSectors,isAnimationFinished:!0}:e.sectors!==t.curSectors?{curSectors:e.sectors,isAnimationFinished:!0}:null}},{key:"getTextAnchor",value:function(e,t){return e>t?"start":e=360?A:A-1)*u,x=i.reduce(function(e,t){var n=(0,ev.F$)(t,g,0);return e+((0,eh.hj)(n)?n:0)},0);return x>0&&(t=i.map(function(e,t){var r,o=(0,ev.F$)(e,g,0),i=(0,ev.F$)(e,f,t),a=((0,eh.hj)(o)?o:0)/x,s=(r=t?n.endAngle+(0,eh.uY)(v)*u*(0!==o?1:0):l)+(0,eh.uY)(v)*((0!==o?m:0)+a*O),p=(r+s)/2,d=(h.innerRadius+h.outerRadius)/2,b=[{name:i,value:o,payload:e,dataKey:g,type:y}],A=(0,T.op)(h.cx,h.cy,d,p);return n=ek(ek(ek({percent:a,cornerRadius:c,name:i,tooltipPayload:b,midAngle:p,middleRadius:d,tooltipPosition:A},e),h),{},{value:(0,ev.F$)(e,g),startAngle:r,endAngle:s,payload:e,paddingAngle:(0,eh.uY)(v)*u})})),ek(ek({},h),{},{sectors:t,data:i})});var eL=(0,p.z)({chartName:"PieChart",GraphicalChild:eR,validateTooltipEventTypes:["item"],defaultTooltipEventType:"item",legendContent:"children",axisComponents:[{axisType:"angleAxis",AxisComp:B},{axisType:"radiusAxis",AxisComp:eo}],formatAxisMap:T.t9,defaultProps:{layout:"centric",startAngle:0,endAngle:360,cx:"50%",cy:"50%",innerRadius:0,outerRadius:"80%"}}),eN=n(8147),eI=n(69448),eC=n(98593);let eD=e=>{let{active:t,payload:n,valueFormatter:r}=e;if(t&&(null==n?void 0:n[0])){let e=null==n?void 0:n[0];return l.createElement(eC.$B,null,l.createElement("div",{className:(0,a.q)("px-4 py-2")},l.createElement(eC.zX,{value:r(e.value),name:e.name,color:e.payload.color})))}return null},eF=(e,t)=>e.map((e,n)=>{let r=ne||t((0,c.vP)(n.map(e=>e[r]))),eZ=e=>{let{cx:t,cy:n,innerRadius:r,outerRadius:o,startAngle:i,endAngle:a,className:c}=e;return l.createElement("g",null,l.createElement(s.L,{cx:t,cy:n,innerRadius:r,outerRadius:o,startAngle:i,endAngle:a,className:c,fill:"",opacity:.3,style:{outline:"none"}}))},eM=l.forwardRef((e,t)=>{let{data:n=[],category:s="value",index:p="name",colors:f=i.s,variant:d="donut",valueFormatter:y=c.Cj,label:m,showLabel:h=!0,animationDuration:v=900,showAnimation:b=!1,showTooltip:g=!0,noDataText:A,onValueChange:O,customTooltip:x,className:k}=e,j=(0,r._T)(e,["data","category","index","colors","variant","valueFormatter","label","showLabel","animationDuration","showAnimation","showTooltip","noDataText","onValueChange","customTooltip","className"]),w="donut"==d,P=e_(m,y,n,s),[E,S]=l.useState(void 0),T=!!O;return(0,l.useEffect)(()=>{let e=document.querySelectorAll(".recharts-pie-sector");e&&e.forEach(e=>{e.setAttribute("style","outline: none")})},[E]),l.createElement("div",Object.assign({ref:t,className:(0,a.q)("w-full h-40",k)},j),l.createElement(u.h,{className:"h-full w-full"},(null==n?void 0:n.length)?l.createElement(eL,{onClick:T&&E?()=>{S(void 0),null==O||O(null)}:void 0,margin:{top:0,left:0,right:0,bottom:0}},h&&w?l.createElement("text",{className:(0,a.q)("fill-tremor-content-emphasis","dark:fill-dark-tremor-content-emphasis"),x:"50%",y:"50%",textAnchor:"middle",dominantBaseline:"middle"},P):null,l.createElement(eR,{className:(0,a.q)("stroke-tremor-background dark:stroke-dark-tremor-background",O?"cursor-pointer":"cursor-default"),data:eF(n,f),cx:"50%",cy:"50%",startAngle:90,endAngle:-270,innerRadius:w?"75%":"0%",outerRadius:"100%",stroke:"",strokeLinejoin:"round",dataKey:s,nameKey:p,isAnimationActive:b,animationDuration:v,onClick:function(e,t,n){n.stopPropagation(),T&&(E===t?(S(void 0),null==O||O(null)):(S(t),null==O||O(Object.assign({eventType:"slice"},e.payload.payload))))},activeIndex:E,inactiveShape:eZ,style:{outline:"none"}}),l.createElement(eN.u,{wrapperStyle:{outline:"none"},isAnimationActive:!1,content:g?e=>{var t;let{active:n,payload:r}=e;return x?l.createElement(x,{payload:null==r?void 0:r.map(e=>{var t,n,i;return Object.assign(Object.assign({},e),{color:null!==(i=null===(n=null===(t=null==r?void 0:r[0])||void 0===t?void 0:t.payload)||void 0===n?void 0:n.color)&&void 0!==i?i:o.fr.Gray})}),active:n,label:null===(t=null==r?void 0:r[0])||void 0===t?void 0:t.name}):l.createElement(eD,{active:n,payload:r,valueFormatter:y})}:l.createElement(l.Fragment,null)})):l.createElement(eI.Z,{noDataText:A})))});eM.displayName="DonutChart"},7366:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(41154),o=n(25721),i=n(55463),a=n(99735),c=n(7656),l=n(47869);function s(e,t){if((0,c.Z)(2,arguments),!t||"object"!==(0,r.Z)(t))return new Date(NaN);var n=t.years?(0,l.Z)(t.years):0,s=t.months?(0,l.Z)(t.months):0,u=t.weeks?(0,l.Z)(t.weeks):0,p=t.days?(0,l.Z)(t.days):0,f=t.hours?(0,l.Z)(t.hours):0,d=t.minutes?(0,l.Z)(t.minutes):0,y=t.seconds?(0,l.Z)(t.seconds):0,m=(0,a.Z)(e),h=s||n?(0,i.Z)(m,s+12*n):m;return new Date((p||u?(0,o.Z)(h,p+7*u):h).getTime()+1e3*(y+60*(d+60*f)))}},35802:function(e,t,n){var r=n(67646),o=n(58905),i=n(88157);e.exports=function(e,t){return e&&e.length?r(e,i(t,2),o):void 0}},37891:function(e,t,n){var r=n(67646),o=n(88157),i=n(20121);e.exports=function(e,t){return e&&e.length?r(e,o(t,2),i):void 0}},58710:function(e,t,n){"use strict";var r=n(2265);let o=r.forwardRef(function(e,t){return r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:t},e),r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"}))});t.Z=o}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/117-6a9f6a591033d4a0.js b/litellm/proxy/_experimental/out/_next/static/chunks/117-6a9f6a591033d4a0.js deleted file mode 100644 index 54b5be82634..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/117-6a9f6a591033d4a0.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[117],{65157:function(e,t){"use strict";function n(){return""}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getDeploymentIdQueryOrEmptyString",{enumerable:!0,get:function(){return n}})},91572:function(){"trimStart"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),"trimEnd"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),"description"in Symbol.prototype||Object.defineProperty(Symbol.prototype,"description",{configurable:!0,get:function(){var e=/\((.*)\)/.exec(this.toString());return e?e[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(e,t){return t=this.concat.apply([],this),e>1&&t.some(Array.isArray)?t.flat(e-1):t},Array.prototype.flatMap=function(e,t){return this.map(e,t).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(e){if("function"!=typeof e)return this.then(e,e);var t=this.constructor||Promise;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){throw n})})}),Object.fromEntries||(Object.fromEntries=function(e){return Array.from(e).reduce(function(e,t){return e[t[0]]=t[1],e},{})}),Array.prototype.at||(Array.prototype.at=function(e){var t=Math.trunc(e)||0;if(t<0&&(t+=this.length),!(t<0||t>=this.length))return this[t]}),Object.hasOwn||(Object.hasOwn=function(e,t){if(null==e)throw TypeError("Cannot convert undefined or null to object");return Object.prototype.hasOwnProperty.call(Object(e),t)}),"canParse"in URL||(URL.canParse=function(e,t){try{return new URL(e,t),!0}catch(e){return!1}})},1634:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addBasePath",{enumerable:!0,get:function(){return u}});let r=n(68498),o=n(33068);function u(e,t){return(0,o.normalizePathTrailingSlash)((0,r.addPathPrefix)(e,""))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},75266:function(e,t){"use strict";function n(e){var t,n;t=self.__next_s,n=()=>{e()},t&&t.length?t.reduce((e,t)=>{let[n,r]=t;return e.then(()=>new Promise((e,t)=>{let o=document.createElement("script");if(r)for(let e in r)"children"!==e&&o.setAttribute(e,r[e]);n?(o.src=n,o.onload=()=>e(),o.onerror=t):r&&(o.innerHTML=r.children,setTimeout(e)),document.head.appendChild(o)}))},Promise.resolve()).catch(e=>{console.error(e)}).then(()=>{n()}):n()}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"appBootstrap",{enumerable:!0,get:function(){return n}}),window.next={version:"14.2.32",appDir:!0},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},83079:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"callServer",{enumerable:!0,get:function(){return o}});let r=n(12846);async function o(e,t){let n=(0,r.getServerActionDispatcher)();if(!n)throw Error("Invariant: missing action dispatcher.");return new Promise((r,o)=>{n({actionId:e,actionArgs:t,resolve:r,reject:o})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},92304:function(e,t,n){"use strict";let r,o;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hydrate",{enumerable:!0,get:function(){return x}});let u=n(47043),l=n(53099),a=n(57437);n(91572);let i=u._(n(34040)),c=l._(n(2265)),s=n(6671),f=n(48701),d=u._(n(61404)),p=n(83079),h=n(89721),y=n(2103);n(70647);let _=window.console.error;window.console.error=function(){for(var e=arguments.length,t=Array(e),n=0;n{if((0,h.isNextRouterError)(e.error)){e.preventDefault();return}});let v=document,b=new TextEncoder,g=!1,m=!1,R=null;function P(e){if(0===e[0])r=[];else if(1===e[0]){if(!r)throw Error("Unexpected server data: missing bootstrap script.");o?o.enqueue(b.encode(e[1])):r.push(e[1])}else 2===e[0]&&(R=e[1])}let j=function(){o&&!m&&(o.close(),m=!0,r=void 0),g=!0};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",j,!1):j();let O=self.__next_f=self.__next_f||[];O.forEach(P),O.push=P;let S=new ReadableStream({start(e){r&&(r.forEach(t=>{e.enqueue(b.encode(t))}),g&&!m&&(e.close(),m=!0,r=void 0)),o=e}}),E=(0,s.createFromReadableStream)(S,{callServer:p.callServer});function w(){return(0,c.use)(E)}let T=c.default.StrictMode;function M(e){let{children:t}=e;return t}function x(){let e=(0,y.createMutableActionQueue)(),t=(0,a.jsx)(T,{children:(0,a.jsx)(f.HeadManagerContext.Provider,{value:{appDir:!0},children:(0,a.jsx)(y.ActionQueueContext.Provider,{value:e,children:(0,a.jsx)(M,{children:(0,a.jsx)(w,{})})})})}),n=window.__next_root_layout_missing_tags,r=!!(null==n?void 0:n.length),o={onRecoverableError:d.default};"__next_error__"===document.documentElement.id||r?i.default.createRoot(v,o).render(t):c.default.startTransition(()=>i.default.hydrateRoot(v,t,{...o,formState:R}))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},54278:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(19506),(0,n(75266).appBootstrap)(()=>{let{hydrate:e}=n(92304);n(12846),n(4707),e()}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},19506:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(65157);{let e=n.u;n.u=function(){for(var t=arguments.length,n=Array(t),r=0;r(l(function(){var e;let t=document.getElementsByName(u)[0];if(null==t?void 0:null==(e=t.shadowRoot)?void 0:e.childNodes[0])return t.shadowRoot.childNodes[0];{let e=document.createElement(u);e.style.cssText="position:absolute";let t=document.createElement("div");return t.ariaLive="assertive",t.id="__next-route-announcer__",t.role="alert",t.style.cssText="position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal",e.attachShadow({mode:"open"}).appendChild(t),document.body.appendChild(e),t}}()),()=>{let e=document.getElementsByTagName(u)[0];(null==e?void 0:e.isConnected)&&document.body.removeChild(e)}),[]);let[a,i]=(0,r.useState)(""),c=(0,r.useRef)();return(0,r.useEffect)(()=>{let e="";if(document.title)e=document.title;else{let t=document.querySelector("h1");t&&(e=t.innerText||t.textContent||"")}void 0!==c.current&&c.current!==e&&i(e),c.current=e},[t]),n?(0,o.createPortal)(a,n):null}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6866:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ACTION:function(){return r},FLIGHT_PARAMETERS:function(){return i},NEXT_DID_POSTPONE_HEADER:function(){return s},NEXT_ROUTER_PREFETCH_HEADER:function(){return u},NEXT_ROUTER_STATE_TREE:function(){return o},NEXT_RSC_UNION_QUERY:function(){return c},NEXT_URL:function(){return l},RSC_CONTENT_TYPE_HEADER:function(){return a},RSC_HEADER:function(){return n}});let n="RSC",r="Next-Action",o="Next-Router-State-Tree",u="Next-Router-Prefetch",l="Next-Url",a="text/x-component",i=[[n],[o],[u]],c="_rsc",s="x-nextjs-postponed";("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},12846:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{createEmptyCacheNode:function(){return C},default:function(){return I},getServerActionDispatcher:function(){return E},urlToUrlWithoutFlightMarker:function(){return T}});let r=n(53099),o=n(57437),u=r._(n(2265)),l=n(61956),a=n(24673),i=n(33456),c=n(79060),s=n(47744),f=n(61060),d=n(82952),p=n(86146),h=n(1634),y=n(6495),_=n(4123),v=n(39320),b=n(38137),g=n(6866),m=n(35076),R=n(11283),P=n(84541),j="undefined"==typeof window,O=j?null:new Map,S=null;function E(){return S}let w={};function T(e){let t=new URL(e,location.origin);if(t.searchParams.delete(g.NEXT_RSC_UNION_QUERY),t.pathname.endsWith(".txt")){let{pathname:e}=t,n=e.endsWith("/index.txt")?10:4;t.pathname=e.slice(0,-n)}return t}function M(e){return e.origin!==window.location.origin}function x(e){let{appRouterState:t,sync:n}=e;return(0,u.useInsertionEffect)(()=>{let{tree:e,pushRef:r,canonicalUrl:o}=t,u={...r.preserveCustomHistoryState?window.history.state:{},__NA:!0,__PRIVATE_NEXTJS_INTERNALS_TREE:e};r.pendingPush&&(0,i.createHrefFromUrl)(new URL(window.location.href))!==o?(r.pendingPush=!1,window.history.pushState(u,"",o)):window.history.replaceState(u,"",o),n(t)},[t,n]),null}function C(){return{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null}}function A(e){null==e&&(e={});let t=window.history.state,n=null==t?void 0:t.__NA;n&&(e.__NA=n);let r=null==t?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;return r&&(e.__PRIVATE_NEXTJS_INTERNALS_TREE=r),e}function N(e){let{headCacheNode:t}=e,n=null!==t?t.head:null,r=null!==t?t.prefetchHead:null,o=null!==r?r:n;return(0,u.useDeferredValue)(n,o)}function D(e){let t,{buildId:n,initialHead:r,initialTree:i,urlParts:f,initialSeedData:g,couldBeIntercepted:E,assetPrefix:T,missingSlots:C}=e,D=(0,u.useMemo)(()=>(0,d.createInitialRouterState)({buildId:n,initialSeedData:g,urlParts:f,initialTree:i,initialParallelRoutes:O,location:j?null:window.location,initialHead:r,couldBeIntercepted:E}),[n,g,f,i,r,E]),[I,U,k]=(0,s.useReducerWithReduxDevtools)(D);(0,u.useEffect)(()=>{O=null},[]);let{canonicalUrl:F}=(0,s.useUnwrapState)(I),{searchParams:L,pathname:H}=(0,u.useMemo)(()=>{let e=new URL(F,"undefined"==typeof window?"http://n":window.location.href);return{searchParams:e.searchParams,pathname:(0,R.hasBasePath)(e.pathname)?(0,m.removeBasePath)(e.pathname):e.pathname}},[F]),$=(0,u.useCallback)(e=>{let{previousTree:t,serverResponse:n}=e;(0,u.startTransition)(()=>{U({type:a.ACTION_SERVER_PATCH,previousTree:t,serverResponse:n})})},[U]),G=(0,u.useCallback)((e,t,n)=>{let r=new URL((0,h.addBasePath)(e),location.href);return U({type:a.ACTION_NAVIGATE,url:r,isExternalUrl:M(r),locationSearch:location.search,shouldScroll:null==n||n,navigateType:t})},[U]);S=(0,u.useCallback)(e=>{(0,u.startTransition)(()=>{U({...e,type:a.ACTION_SERVER_ACTION})})},[U]);let z=(0,u.useMemo)(()=>({back:()=>window.history.back(),forward:()=>window.history.forward(),prefetch:(e,t)=>{let n;if(!(0,p.isBot)(window.navigator.userAgent)){try{n=new URL((0,h.addBasePath)(e),window.location.href)}catch(t){throw Error("Cannot prefetch '"+e+"' because it cannot be converted to a URL.")}M(n)||(0,u.startTransition)(()=>{var e;U({type:a.ACTION_PREFETCH,url:n,kind:null!=(e=null==t?void 0:t.kind)?e:a.PrefetchKind.FULL})})}},replace:(e,t)=>{void 0===t&&(t={}),(0,u.startTransition)(()=>{var n;G(e,"replace",null==(n=t.scroll)||n)})},push:(e,t)=>{void 0===t&&(t={}),(0,u.startTransition)(()=>{var n;G(e,"push",null==(n=t.scroll)||n)})},refresh:()=>{(0,u.startTransition)(()=>{U({type:a.ACTION_REFRESH,origin:window.location.origin})})},fastRefresh:()=>{throw Error("fastRefresh can only be used in development mode. Please use refresh instead.")}}),[U,G]);(0,u.useEffect)(()=>{window.next&&(window.next.router=z)},[z]),(0,u.useEffect)(()=>{function e(e){var t;e.persisted&&(null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE)&&(w.pendingMpaPath=void 0,U({type:a.ACTION_RESTORE,url:new URL(window.location.href),tree:window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE}))}return window.addEventListener("pageshow",e),()=>{window.removeEventListener("pageshow",e)}},[U]);let{pushRef:B}=(0,s.useUnwrapState)(I);if(B.mpaNavigation){if(w.pendingMpaPath!==F){let e=window.location;B.pendingPush?e.assign(F):e.replace(F),w.pendingMpaPath=F}(0,u.use)(b.unresolvedThenable)}(0,u.useEffect)(()=>{let e=window.history.pushState.bind(window.history),t=window.history.replaceState.bind(window.history),n=e=>{var t;let n=window.location.href,r=null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;(0,u.startTransition)(()=>{U({type:a.ACTION_RESTORE,url:new URL(null!=e?e:n,n),tree:r})})};window.history.pushState=function(t,r,o){return(null==t?void 0:t.__NA)||(null==t?void 0:t._N)||(t=A(t),o&&n(o)),e(t,r,o)},window.history.replaceState=function(e,r,o){return(null==e?void 0:e.__NA)||(null==e?void 0:e._N)||(e=A(e),o&&n(o)),t(e,r,o)};let r=e=>{let{state:t}=e;if(t){if(!t.__NA){window.location.reload();return}(0,u.startTransition)(()=>{U({type:a.ACTION_RESTORE,url:new URL(window.location.href),tree:t.__PRIVATE_NEXTJS_INTERNALS_TREE})})}};return window.addEventListener("popstate",r),()=>{window.history.pushState=e,window.history.replaceState=t,window.removeEventListener("popstate",r)}},[U]);let{cache:W,tree:K,nextUrl:V,focusAndScrollRef:Y}=(0,s.useUnwrapState)(I),X=(0,u.useMemo)(()=>(0,v.findHeadInCache)(W,K[1]),[W,K]),q=(0,u.useMemo)(()=>(function e(t,n){for(let r of(void 0===n&&(n={}),Object.values(t[1]))){let t=r[0],o=Array.isArray(t),u=o?t[1]:t;!u||u.startsWith(P.PAGE_SEGMENT_KEY)||(o&&("c"===t[2]||"oc"===t[2])?n[t[0]]=t[1].split("/"):o&&(n[t[0]]=t[1]),n=e(r,n))}return n})(K),[K]);if(null!==X){let[e,n]=X;t=(0,o.jsx)(N,{headCacheNode:e},n)}else t=null;let J=(0,o.jsxs)(_.RedirectBoundary,{children:[t,W.rsc,(0,o.jsx)(y.AppRouterAnnouncer,{tree:K})]});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(x,{appRouterState:(0,s.useUnwrapState)(I),sync:k}),(0,o.jsx)(c.PathParamsContext.Provider,{value:q,children:(0,o.jsx)(c.PathnameContext.Provider,{value:H,children:(0,o.jsx)(c.SearchParamsContext.Provider,{value:L,children:(0,o.jsx)(l.GlobalLayoutRouterContext.Provider,{value:{buildId:n,changeByServerResponse:$,tree:K,focusAndScrollRef:Y,nextUrl:V},children:(0,o.jsx)(l.AppRouterContext.Provider,{value:z,children:(0,o.jsx)(l.LayoutRouterContext.Provider,{value:{childNodes:W.parallelRoutes,tree:K,url:F,loading:W.loading},children:J})})})})})})]})}function I(e){let{globalErrorComponent:t,...n}=e;return(0,o.jsx)(f.ErrorBoundary,{errorComponent:t,children:(0,o.jsx)(D,{...n})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},96149:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"bailoutToClientRendering",{enumerable:!0,get:function(){return u}});let r=n(18993),o=n(51845);function u(e){let t=o.staticGenerationAsyncStorage.getStore();if((null==t||!t.forceStatic)&&(null==t?void 0:t.isStaticGeneration))throw new r.BailoutToCSRError(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},19107:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ClientPageRoot",{enumerable:!0,get:function(){return u}});let r=n(57437),o=n(54535);function u(e){let{Component:t,props:n}=e;return n.searchParams=(0,o.createDynamicallyTrackedSearchParams)(n.searchParams||{}),(0,r.jsx)(t,{...n})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},61060:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ErrorBoundary:function(){return h},ErrorBoundaryHandler:function(){return f},GlobalError:function(){return d},default:function(){return p}});let r=n(47043),o=n(57437),u=r._(n(2265)),l=n(35475),a=n(89721),i=n(51845),c={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},text:{fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"}};function s(e){let{error:t}=e,n=i.staticGenerationAsyncStorage.getStore();if((null==n?void 0:n.isRevalidate)||(null==n?void 0:n.isStaticGeneration))throw console.error(t),t;return null}class f extends u.default.Component{static getDerivedStateFromError(e){if((0,a.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s,{error:this.state.error}),this.props.errorStyles,this.props.errorScripts,(0,o.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset})]}):this.props.children}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.state={error:null,previousPathname:this.props.pathname}}}function d(e){let{error:t}=e,n=null==t?void 0:t.digest;return(0,o.jsxs)("html",{id:"__next_error__",children:[(0,o.jsx)("head",{}),(0,o.jsxs)("body",{children:[(0,o.jsx)(s,{error:t}),(0,o.jsx)("div",{style:c.error,children:(0,o.jsxs)("div",{children:[(0,o.jsx)("h2",{style:c.text,children:"Application error: a "+(n?"server":"client")+"-side exception has occurred (see the "+(n?"server logs":"browser console")+" for more information)."}),n?(0,o.jsx)("p",{style:c.text,children:"Digest: "+n}):null]})})]})]})}let p=d;function h(e){let{errorComponent:t,errorStyles:n,errorScripts:r,children:u}=e,a=(0,l.usePathname)();return t?(0,o.jsx)(f,{pathname:a,errorComponent:t,errorStyles:n,errorScripts:r,children:u}):(0,o.jsx)(o.Fragment,{children:u})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},46177:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{DynamicServerError:function(){return r},isDynamicServerError:function(){return o}});let n="DYNAMIC_SERVER_USAGE";class r extends Error{constructor(e){super("Dynamic server usage: "+e),this.description=e,this.digest=n}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest&&e.digest===n}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},89721:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNextRouterError",{enumerable:!0,get:function(){return u}});let r=n(98200),o=n(88968);function u(e){return e&&e.digest&&((0,o.isRedirectError)(e)||(0,r.isNotFoundError)(e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4707:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return S}});let r=n(47043),o=n(53099),u=n(57437),l=o._(n(2265)),a=r._(n(54887)),i=n(61956),c=n(44848),s=n(38137),f=n(61060),d=n(76015),p=n(7092),h=n(4123),y=n(80),_=n(73171),v=n(78505),b=n(28077),g=["bottom","height","left","right","top","width","x","y"];function m(e,t){let n=e.getBoundingClientRect();return n.top>=0&&n.top<=t}class R extends l.default.Component{componentDidMount(){this.handlePotentialScroll()}componentDidUpdate(){this.props.focusAndScrollRef.apply&&this.handlePotentialScroll()}render(){return this.props.children}constructor(...e){super(...e),this.handlePotentialScroll=()=>{let{focusAndScrollRef:e,segmentPath:t}=this.props;if(e.apply){var n;if(0!==e.segmentPaths.length&&!e.segmentPaths.some(e=>t.every((t,n)=>(0,d.matchSegment)(t,e[n]))))return;let r=null,o=e.hashFragment;if(o&&(r="top"===o?document.body:null!=(n=document.getElementById(o))?n:document.getElementsByName(o)[0]),r||(r="undefined"==typeof window?null:a.default.findDOMNode(this)),!(r instanceof Element))return;for(;!(r instanceof HTMLElement)||function(e){if(["sticky","fixed"].includes(getComputedStyle(e).position))return!0;let t=e.getBoundingClientRect();return g.every(e=>0===t[e])}(r);){if(null===r.nextElementSibling)return;r=r.nextElementSibling}e.apply=!1,e.hashFragment=null,e.segmentPaths=[],(0,p.handleSmoothScroll)(()=>{if(o){r.scrollIntoView();return}let e=document.documentElement,t=e.clientHeight;!m(r,t)&&(e.scrollTop=0,m(r,t)||r.scrollIntoView())},{dontForceLayout:!0,onlyHashChange:e.onlyHashChange}),e.onlyHashChange=!1,r.focus()}}}}function P(e){let{segmentPath:t,children:n}=e,r=(0,l.useContext)(i.GlobalLayoutRouterContext);if(!r)throw Error("invariant global layout router not mounted");return(0,u.jsx)(R,{segmentPath:t,focusAndScrollRef:r.focusAndScrollRef,children:n})}function j(e){let{parallelRouterKey:t,url:n,childNodes:r,segmentPath:o,tree:a,cacheKey:f}=e,p=(0,l.useContext)(i.GlobalLayoutRouterContext);if(!p)throw Error("invariant global layout router not mounted");let{buildId:h,changeByServerResponse:y,tree:_}=p,v=r.get(f);if(void 0===v){let e={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null};v=e,r.set(f,e)}let g=null!==v.prefetchRsc?v.prefetchRsc:v.rsc,m=(0,l.useDeferredValue)(v.rsc,g),R="object"==typeof m&&null!==m&&"function"==typeof m.then?(0,l.use)(m):m;if(!R){let e=v.lazyData;if(null===e){let t=function e(t,n){if(t){let[r,o]=t,u=2===t.length;if((0,d.matchSegment)(n[0],r)&&n[1].hasOwnProperty(o)){if(u){let t=e(void 0,n[1][o]);return[n[0],{...n[1],[o]:[t[0],t[1],t[2],"refetch"]}]}return[n[0],{...n[1],[o]:e(t.slice(2),n[1][o])}]}}return n}(["",...o],_),r=(0,b.hasInterceptionRouteInCurrentTree)(_);v.lazyData=e=(0,c.fetchServerResponse)(new URL(n,location.origin),t,r?p.nextUrl:null,h),v.lazyDataResolved=!1}let t=(0,l.use)(e);v.lazyDataResolved||(setTimeout(()=>{(0,l.startTransition)(()=>{y({previousTree:_,serverResponse:t})})}),v.lazyDataResolved=!0),(0,l.use)(s.unresolvedThenable)}return(0,u.jsx)(i.LayoutRouterContext.Provider,{value:{tree:a[1][t],childNodes:v.parallelRoutes,url:n,loading:v.loading},children:R})}function O(e){let{children:t,hasLoading:n,loading:r,loadingStyles:o,loadingScripts:a}=e;return n?(0,u.jsx)(l.Suspense,{fallback:(0,u.jsxs)(u.Fragment,{children:[o,a,r]}),children:t}):(0,u.jsx)(u.Fragment,{children:t})}function S(e){let{parallelRouterKey:t,segmentPath:n,error:r,errorStyles:o,errorScripts:a,templateStyles:c,templateScripts:s,template:d,notFound:p,notFoundStyles:b}=e,g=(0,l.useContext)(i.LayoutRouterContext);if(!g)throw Error("invariant expected layout router to be mounted");let{childNodes:m,tree:R,url:S,loading:E}=g,w=m.get(t);w||(w=new Map,m.set(t,w));let T=R[1][t][0],M=(0,_.getSegmentValue)(T),x=[T];return(0,u.jsx)(u.Fragment,{children:x.map(e=>{let l=(0,_.getSegmentValue)(e),g=(0,v.createRouterCacheKey)(e);return(0,u.jsxs)(i.TemplateContext.Provider,{value:(0,u.jsx)(P,{segmentPath:n,children:(0,u.jsx)(f.ErrorBoundary,{errorComponent:r,errorStyles:o,errorScripts:a,children:(0,u.jsx)(O,{hasLoading:!!E,loading:null==E?void 0:E[0],loadingStyles:null==E?void 0:E[1],loadingScripts:null==E?void 0:E[2],children:(0,u.jsx)(y.NotFoundBoundary,{notFound:p,notFoundStyles:b,children:(0,u.jsx)(h.RedirectBoundary,{children:(0,u.jsx)(j,{parallelRouterKey:t,url:S,tree:R,childNodes:w,segmentPath:n,cacheKey:g,isActive:M===l})})})})})}),children:[c,s,d]},(0,v.createRouterCacheKey)(e,!0))})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},76015:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{canSegmentBeOverridden:function(){return u},matchSegment:function(){return o}});let r=n(87417),o=(e,t)=>"string"==typeof e?"string"==typeof t&&e===t:"string"!=typeof t&&e[0]===t[0]&&e[1]===t[1],u=(e,t)=>{var n;return!Array.isArray(e)&&!!Array.isArray(t)&&(null==(n=(0,r.getSegmentParam)(e))?void 0:n.param)===t[0]};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},35475:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ReadonlyURLSearchParams:function(){return i.ReadonlyURLSearchParams},RedirectType:function(){return i.RedirectType},ServerInsertedHTMLContext:function(){return c.ServerInsertedHTMLContext},notFound:function(){return i.notFound},permanentRedirect:function(){return i.permanentRedirect},redirect:function(){return i.redirect},useParams:function(){return p},usePathname:function(){return f},useRouter:function(){return d},useSearchParams:function(){return s},useSelectedLayoutSegment:function(){return y},useSelectedLayoutSegments:function(){return h},useServerInsertedHTML:function(){return c.useServerInsertedHTML}});let r=n(2265),o=n(61956),u=n(79060),l=n(73171),a=n(84541),i=n(52646),c=n(55501);function s(){let e=(0,r.useContext)(u.SearchParamsContext),t=(0,r.useMemo)(()=>e?new i.ReadonlyURLSearchParams(e):null,[e]);if("undefined"==typeof window){let{bailoutToClientRendering:e}=n(96149);e("useSearchParams()")}return t}function f(){return(0,r.useContext)(u.PathnameContext)}function d(){let e=(0,r.useContext)(o.AppRouterContext);if(null===e)throw Error("invariant expected app router to be mounted");return e}function p(){return(0,r.useContext)(u.PathParamsContext)}function h(e){void 0===e&&(e="children");let t=(0,r.useContext)(o.LayoutRouterContext);return t?function e(t,n,r,o){let u;if(void 0===r&&(r=!0),void 0===o&&(o=[]),r)u=t[1][n];else{var i;let e=t[1];u=null!=(i=e.children)?i:Object.values(e)[0]}if(!u)return o;let c=u[0],s=(0,l.getSegmentValue)(c);return!s||s.startsWith(a.PAGE_SEGMENT_KEY)?o:(o.push(s),e(u,n,!1,o))}(t.tree,e):null}function y(e){void 0===e&&(e="children");let t=h(e);if(!t||0===t.length)return null;let n="children"===e?t[0]:t[t.length-1];return n===a.DEFAULT_SEGMENT_KEY?null:n}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},52646:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ReadonlyURLSearchParams:function(){return l},RedirectType:function(){return r.RedirectType},notFound:function(){return o.notFound},permanentRedirect:function(){return r.permanentRedirect},redirect:function(){return r.redirect}});let r=n(88968),o=n(98200);class u extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class l extends URLSearchParams{append(){throw new u}delete(){throw new u}set(){throw new u}sort(){throw new u}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},80:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"NotFoundBoundary",{enumerable:!0,get:function(){return s}});let r=n(53099),o=n(57437),u=r._(n(2265)),l=n(35475),a=n(98200);n(31765);let i=n(61956);class c extends u.default.Component{componentDidCatch(){}static getDerivedStateFromError(e){if((0,a.isNotFoundError)(e))return{notFoundTriggered:!0};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.notFoundTriggered?{notFoundTriggered:!1,previousPathname:e.pathname}:{notFoundTriggered:t.notFoundTriggered,previousPathname:e.pathname}}render(){return this.state.notFoundTriggered?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("meta",{name:"robots",content:"noindex"}),!1,this.props.notFoundStyles,this.props.notFound]}):this.props.children}constructor(e){super(e),this.state={notFoundTriggered:!!e.asNotFound,previousPathname:e.pathname}}}function s(e){let{notFound:t,notFoundStyles:n,asNotFound:r,children:a}=e,s=(0,l.usePathname)(),f=(0,u.useContext)(i.MissingSlotContext);return t?(0,o.jsx)(c,{pathname:s,notFound:t,notFoundStyles:n,asNotFound:r,missingSlots:f,children:a}):(0,o.jsx)(o.Fragment,{children:a})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},98200:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{isNotFoundError:function(){return o},notFound:function(){return r}});let n="NEXT_NOT_FOUND";function r(){let e=Error(n);throw e.digest=n,e}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===n}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},29744:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PromiseQueue",{enumerable:!0,get:function(){return c}});let r=n(2522),o=n(90675);var u=o._("_maxConcurrency"),l=o._("_runningCount"),a=o._("_queue"),i=o._("_processNext");class c{enqueue(e){let t,n;let o=new Promise((e,r)=>{t=e,n=r}),u=async()=>{try{r._(this,l)[l]++;let n=await e();t(n)}catch(e){n(e)}finally{r._(this,l)[l]--,r._(this,i)[i]()}};return r._(this,a)[a].push({promiseFn:o,task:u}),r._(this,i)[i](),o}bump(e){let t=r._(this,a)[a].findIndex(t=>t.promiseFn===e);if(t>-1){let e=r._(this,a)[a].splice(t,1)[0];r._(this,a)[a].unshift(e),r._(this,i)[i](!0)}}constructor(e=5){Object.defineProperty(this,i,{value:s}),Object.defineProperty(this,u,{writable:!0,value:void 0}),Object.defineProperty(this,l,{writable:!0,value:void 0}),Object.defineProperty(this,a,{writable:!0,value:void 0}),r._(this,u)[u]=e,r._(this,l)[l]=0,r._(this,a)[a]=[]}}function s(e){if(void 0===e&&(e=!1),(r._(this,l)[l]0){var t;null==(t=r._(this,a)[a].shift())||t.task()}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4123:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{RedirectBoundary:function(){return s},RedirectErrorBoundary:function(){return c}});let r=n(53099),o=n(57437),u=r._(n(2265)),l=n(35475),a=n(88968);function i(e){let{redirect:t,reset:n,redirectType:r}=e,o=(0,l.useRouter)();return(0,u.useEffect)(()=>{u.default.startTransition(()=>{r===a.RedirectType.push?o.push(t,{}):o.replace(t,{}),n()})},[t,r,n,o]),null}class c extends u.default.Component{static getDerivedStateFromError(e){if((0,a.isRedirectError)(e))return{redirect:(0,a.getURLFromRedirectError)(e),redirectType:(0,a.getRedirectTypeFromError)(e)};throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,o.jsx)(i,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}constructor(e){super(e),this.state={redirect:null,redirectType:null}}}function s(e){let{children:t}=e,n=(0,l.useRouter)();return(0,o.jsx)(c,{router:n,children:t})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5001:function(e,t){"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return n}}),(r=n||(n={}))[r.SeeOther=303]="SeeOther",r[r.TemporaryRedirect=307]="TemporaryRedirect",r[r.PermanentRedirect=308]="PermanentRedirect",("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},88968:function(e,t,n){"use strict";var r,o;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{RedirectType:function(){return r},getRedirectError:function(){return c},getRedirectStatusCodeFromError:function(){return y},getRedirectTypeFromError:function(){return h},getURLFromRedirectError:function(){return p},isRedirectError:function(){return d},permanentRedirect:function(){return f},redirect:function(){return s}});let u=n(20544),l=n(90295),a=n(5001),i="NEXT_REDIRECT";function c(e,t,n){void 0===n&&(n=a.RedirectStatusCode.TemporaryRedirect);let r=Error(i);r.digest=i+";"+t+";"+e+";"+n+";";let o=u.requestAsyncStorage.getStore();return o&&(r.mutableCookies=o.mutableCookies),r}function s(e,t){void 0===t&&(t="replace");let n=l.actionAsyncStorage.getStore();throw c(e,t,(null==n?void 0:n.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.TemporaryRedirect)}function f(e,t){void 0===t&&(t="replace");let n=l.actionAsyncStorage.getStore();throw c(e,t,(null==n?void 0:n.isAction)?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.PermanentRedirect)}function d(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,n,r,o]=e.digest.split(";",4),u=Number(o);return t===i&&("replace"===n||"push"===n)&&"string"==typeof r&&!isNaN(u)&&u in a.RedirectStatusCode}function p(e){return d(e)?e.digest.split(";",3)[2]:null}function h(e){if(!d(e))throw Error("Not a redirect error");return e.digest.split(";",2)[1]}function y(e){if(!d(e))throw Error("Not a redirect error");return Number(e.digest.split(";",4)[3])}(o=r||(r={})).push="push",o.replace="replace",("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},36423:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let r=n(53099),o=n(57437),u=r._(n(2265)),l=n(61956);function a(){let e=(0,u.useContext)(l.TemplateContext);return(0,o.jsx)(o.Fragment,{children:e})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},20544:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{getExpectedRequestStore:function(){return o},requestAsyncStorage:function(){return r.requestAsyncStorage}});let r=n(25575);function o(e){let t=r.requestAsyncStorage.getStore();if(t)return t;throw Error("`"+e+"` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},22356:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyFlightData",{enumerable:!0,get:function(){return u}});let r=n(27420),o=n(92576);function u(e,t,n,u){let[l,a,i]=n.slice(-3);if(null===a)return!1;if(3===n.length){let n=a[2],o=a[3];t.loading=o,t.rsc=n,t.prefetchRsc=null,(0,r.fillLazyItemsTillLeafWithHead)(t,e,l,a,i,u)}else t.rsc=e.rsc,t.prefetchRsc=e.prefetchRsc,t.parallelRoutes=new Map(e.parallelRoutes),t.loading=e.loading,(0,o.fillCacheWithNewSubTreeData)(t,e,n,u);return!0}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},81935:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyRouterStatePatchToTree",{enumerable:!0,get:function(){return function e(t,n,r,a){let i;let[c,s,f,d,p]=n;if(1===t.length){let e=l(n,r,t);return(0,u.addRefreshMarkerToActiveParallelSegments)(e,a),e}let[h,y]=t;if(!(0,o.matchSegment)(h,c))return null;if(2===t.length)i=l(s[y],r,t);else if(null===(i=e(t.slice(2),s[y],r,a)))return null;let _=[t[0],{...s,[y]:i},f,d];return p&&(_[4]=!0),(0,u.addRefreshMarkerToActiveParallelSegments)(_,a),_}}});let r=n(84541),o=n(76015),u=n(50232);function l(e,t,n){let[u,a]=e,[i,c]=t;if(i===r.DEFAULT_SEGMENT_KEY&&u!==r.DEFAULT_SEGMENT_KEY)return e;if((0,o.matchSegment)(u,i)){let t={};for(let e in a)void 0!==c[e]?t[e]=l(a[e],c[e],n):t[e]=a[e];for(let e in c)t[e]||(t[e]=c[e]);let r=[u,t];return e[2]&&(r[2]=e[2]),e[3]&&(r[3]=e[3]),e[4]&&(r[4]=e[4]),r}return t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},65556:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"clearCacheNodeDataForSegmentPath",{enumerable:!0,get:function(){return function e(t,n,o){let u=o.length<=2,[l,a]=o,i=(0,r.createRouterCacheKey)(a),c=n.parallelRoutes.get(l),s=t.parallelRoutes.get(l);s&&s!==c||(s=new Map(c),t.parallelRoutes.set(l,s));let f=null==c?void 0:c.get(i),d=s.get(i);if(u){d&&d.lazyData&&d!==f||s.set(i,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null});return}if(!d||!f){d||s.set(i,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null});return}return d===f&&(d={lazyData:d.lazyData,rsc:d.rsc,prefetchRsc:d.prefetchRsc,head:d.head,prefetchHead:d.prefetchHead,parallelRoutes:new Map(d.parallelRoutes),lazyDataResolved:d.lazyDataResolved,loading:d.loading},s.set(i,d)),e(d,f,o.slice(2))}}});let r=n(78505);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5410:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{computeChangedPath:function(){return s},extractPathFromFlightRouterState:function(){return c}});let r=n(91182),o=n(84541),u=n(76015),l=e=>"/"===e[0]?e.slice(1):e,a=e=>"string"==typeof e?"children"===e?"":e:e[1];function i(e){return e.reduce((e,t)=>""===(t=l(t))||(0,o.isGroupSegment)(t)?e:e+"/"+t,"")||"/"}function c(e){var t;let n=Array.isArray(e[0])?e[0][1]:e[0];if(n===o.DEFAULT_SEGMENT_KEY||r.INTERCEPTION_ROUTE_MARKERS.some(e=>n.startsWith(e)))return;if(n.startsWith(o.PAGE_SEGMENT_KEY))return"";let u=[a(n)],l=null!=(t=e[1])?t:{},s=l.children?c(l.children):void 0;if(void 0!==s)u.push(s);else for(let[e,t]of Object.entries(l)){if("children"===e)continue;let n=c(t);void 0!==n&&u.push(n)}return i(u)}function s(e,t){let n=function e(t,n){let[o,l]=t,[i,s]=n,f=a(o),d=a(i);if(r.INTERCEPTION_ROUTE_MARKERS.some(e=>f.startsWith(e)||d.startsWith(e)))return"";if(!(0,u.matchSegment)(o,i)){var p;return null!=(p=c(n))?p:""}for(let t in l)if(s[t]){let n=e(l[t],s[t]);if(null!==n)return a(i)+"/"+n}return null}(e,t);return null==n||"/"===n?n:i(n.split("/"))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},33456:function(e,t){"use strict";function n(e,t){return void 0===t&&(t=!0),e.pathname+e.search+(t?e.hash:"")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createHrefFromUrl",{enumerable:!0,get:function(){return n}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},82952:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createInitialRouterState",{enumerable:!0,get:function(){return c}});let r=n(33456),o=n(27420),u=n(5410),l=n(60305),a=n(24673),i=n(50232);function c(e){var t;let{buildId:n,initialTree:c,initialSeedData:s,urlParts:f,initialParallelRoutes:d,location:p,initialHead:h,couldBeIntercepted:y}=e,_=f.join("/"),v=!p,b={lazyData:null,rsc:s[2],prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:v?new Map:d,lazyDataResolved:!1,loading:s[3]},g=p?(0,r.createHrefFromUrl)(p):_;(0,i.addRefreshMarkerToActiveParallelSegments)(c,g);let m=new Map;(null===d||0===d.size)&&(0,o.fillLazyItemsTillLeafWithHead)(b,void 0,c,s,h);let R={buildId:n,tree:c,cache:b,prefetchCache:m,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:{apply:!1,onlyHashChange:!1,hashFragment:null,segmentPaths:[]},canonicalUrl:g,nextUrl:null!=(t=(0,u.extractPathFromFlightRouterState)(c)||(null==p?void 0:p.pathname))?t:null};if(p){let e=new URL(""+p.pathname+p.search,p.origin),t=[["",c,null,null]];(0,l.createPrefetchCacheEntryForInitialLoad)({url:e,kind:a.PrefetchKind.AUTO,data:[t,void 0,!1,y],tree:R.tree,prefetchCache:R.prefetchCache,nextUrl:R.nextUrl})}return R}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},78505:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let r=n(84541);function o(e,t){return(void 0===t&&(t=!1),Array.isArray(e))?e[0]+"|"+e[1]+"|"+e[2]:t&&e.startsWith(r.PAGE_SEGMENT_KEY)?r.PAGE_SEGMENT_KEY:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},44848:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fetchServerResponse",{enumerable:!0,get:function(){return s}});let r=n(6866),o=n(12846),u=n(83079),l=n(24673),a=n(37207),{createFromFetch:i}=n(6671);function c(e){return[(0,o.urlToUrlWithoutFlightMarker)(e).toString(),void 0,!1,!1]}async function s(e,t,n,s,f){let d={[r.RSC_HEADER]:"1",[r.NEXT_ROUTER_STATE_TREE]:encodeURIComponent(JSON.stringify(t))};f===l.PrefetchKind.AUTO&&(d[r.NEXT_ROUTER_PREFETCH_HEADER]="1"),n&&(d[r.NEXT_URL]=n);let p=(0,a.hexHash)([d[r.NEXT_ROUTER_PREFETCH_HEADER]||"0",d[r.NEXT_ROUTER_STATE_TREE],d[r.NEXT_URL]].join(","));try{var h;let t=new URL(e);t.pathname.endsWith("/")?t.pathname+="index.txt":t.pathname+=".txt",t.searchParams.set(r.NEXT_RSC_UNION_QUERY,p);let n=await fetch(t,{credentials:"same-origin",headers:d}),l=(0,o.urlToUrlWithoutFlightMarker)(n.url),a=n.redirected?l:void 0,f=n.headers.get("content-type")||"",y=!!n.headers.get(r.NEXT_DID_POSTPONE_HEADER),_=!!(null==(h=n.headers.get("vary"))?void 0:h.includes(r.NEXT_URL)),v=f===r.RSC_CONTENT_TYPE_HEADER;if(v||(v=f.startsWith("text/plain")),!v||!n.ok)return e.hash&&(l.hash=e.hash),c(l.toString());let[b,g]=await i(Promise.resolve(n),{callServer:u.callServer});if(s!==b)return c(n.url);return[g,a,y,_]}catch(t){return console.error("Failed to fetch RSC payload for "+e+". Falling back to browser navigation.",t),[e.toString(),void 0,!1,!1]}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},92576:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillCacheWithNewSubTreeData",{enumerable:!0,get:function(){return function e(t,n,l,a){let i=l.length<=5,[c,s]=l,f=(0,u.createRouterCacheKey)(s),d=n.parallelRoutes.get(c);if(!d)return;let p=t.parallelRoutes.get(c);p&&p!==d||(p=new Map(d),t.parallelRoutes.set(c,p));let h=d.get(f),y=p.get(f);if(i){if(!y||!y.lazyData||y===h){let e=l[3];y={lazyData:null,rsc:e[2],prefetchRsc:null,head:null,prefetchHead:null,loading:e[3],parallelRoutes:h?new Map(h.parallelRoutes):new Map,lazyDataResolved:!1},h&&(0,r.invalidateCacheByRouterState)(y,h,l[2]),(0,o.fillLazyItemsTillLeafWithHead)(y,h,l[2],e,l[4],a),p.set(f,y)}return}y&&h&&(y===h&&(y={lazyData:y.lazyData,rsc:y.rsc,prefetchRsc:y.prefetchRsc,head:y.head,prefetchHead:y.prefetchHead,parallelRoutes:new Map(y.parallelRoutes),lazyDataResolved:!1,loading:y.loading},p.set(f,y)),e(y,h,l.slice(2),a))}}});let r=n(94377),o=n(27420),u=n(78505);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},27420:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillLazyItemsTillLeafWithHead",{enumerable:!0,get:function(){return function e(t,n,u,l,a,i){if(0===Object.keys(u[1]).length){t.head=a;return}for(let c in u[1]){let s;let f=u[1][c],d=f[0],p=(0,r.createRouterCacheKey)(d),h=null!==l&&void 0!==l[1][c]?l[1][c]:null;if(n){let r=n.parallelRoutes.get(c);if(r){let n;let u=(null==i?void 0:i.kind)==="auto"&&i.status===o.PrefetchCacheEntryStatus.reusable,l=new Map(r),s=l.get(p);n=null!==h?{lazyData:null,rsc:h[2],prefetchRsc:null,head:null,prefetchHead:null,loading:h[3],parallelRoutes:new Map(null==s?void 0:s.parallelRoutes),lazyDataResolved:!1}:u&&s?{lazyData:s.lazyData,rsc:s.rsc,prefetchRsc:s.prefetchRsc,head:s.head,prefetchHead:s.prefetchHead,parallelRoutes:new Map(s.parallelRoutes),lazyDataResolved:s.lazyDataResolved,loading:s.loading}:{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map(null==s?void 0:s.parallelRoutes),lazyDataResolved:!1,loading:null},l.set(p,n),e(n,s,f,h||null,a,i),t.parallelRoutes.set(c,l);continue}}if(null!==h){let e=h[2],t=h[3];s={lazyData:null,rsc:e,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:t}}else s={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null};let y=t.parallelRoutes.get(c);y?y.set(p,s):t.parallelRoutes.set(c,new Map([[p,s]])),e(s,void 0,f,h,a,i)}}}});let r=n(78505),o=n(24673);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},44510:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleMutable",{enumerable:!0,get:function(){return u}});let r=n(5410);function o(e){return void 0!==e}function u(e,t){var n,u,l;let a=null==(u=t.shouldScroll)||u,i=e.nextUrl;if(o(t.patchedTree)){let n=(0,r.computeChangedPath)(e.tree,t.patchedTree);n?i=n:i||(i=e.canonicalUrl)}return{buildId:e.buildId,canonicalUrl:o(t.canonicalUrl)?t.canonicalUrl===e.canonicalUrl?e.canonicalUrl:t.canonicalUrl:e.canonicalUrl,pushRef:{pendingPush:o(t.pendingPush)?t.pendingPush:e.pushRef.pendingPush,mpaNavigation:o(t.mpaNavigation)?t.mpaNavigation:e.pushRef.mpaNavigation,preserveCustomHistoryState:o(t.preserveCustomHistoryState)?t.preserveCustomHistoryState:e.pushRef.preserveCustomHistoryState},focusAndScrollRef:{apply:!!a&&(!!o(null==t?void 0:t.scrollableSegments)||e.focusAndScrollRef.apply),onlyHashChange:!!t.hashFragment&&e.canonicalUrl.split("#",1)[0]===(null==(n=t.canonicalUrl)?void 0:n.split("#",1)[0]),hashFragment:a?t.hashFragment&&""!==t.hashFragment?decodeURIComponent(t.hashFragment.slice(1)):e.focusAndScrollRef.hashFragment:null,segmentPaths:a?null!=(l=null==t?void 0:t.scrollableSegments)?l:e.focusAndScrollRef.segmentPaths:[]},cache:t.cache?t.cache:e.cache,prefetchCache:t.prefetchCache?t.prefetchCache:e.prefetchCache,tree:o(t.patchedTree)?t.patchedTree:e.tree,nextUrl:i}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},77831:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSegmentMismatch",{enumerable:!0,get:function(){return o}});let r=n(95967);function o(e,t,n){return(0,r.handleExternalUrl)(e,{},e.canonicalUrl,!0)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},77058:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheBelowFlightSegmentPath",{enumerable:!0,get:function(){return function e(t,n,o){let u=o.length<=2,[l,a]=o,i=(0,r.createRouterCacheKey)(a),c=n.parallelRoutes.get(l);if(!c)return;let s=t.parallelRoutes.get(l);if(s&&s!==c||(s=new Map(c),t.parallelRoutes.set(l,s)),u){s.delete(i);return}let f=c.get(i),d=s.get(i);d&&f&&(d===f&&(d={lazyData:d.lazyData,rsc:d.rsc,prefetchRsc:d.prefetchRsc,head:d.head,prefetchHead:d.prefetchHead,parallelRoutes:new Map(d.parallelRoutes),lazyDataResolved:d.lazyDataResolved},s.set(i,d)),e(d,f,o.slice(2)))}}});let r=n(78505);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},94377:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheByRouterState",{enumerable:!0,get:function(){return o}});let r=n(78505);function o(e,t,n){for(let o in n[1]){let u=n[1][o][0],l=(0,r.createRouterCacheKey)(u),a=t.parallelRoutes.get(o);if(a){let t=new Map(a);t.delete(l),e.parallelRoutes.set(o,t)}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},63237:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNavigatingToNewRootLayout",{enumerable:!0,get:function(){return function e(t,n){let r=t[0],o=n[0];if(Array.isArray(r)&&Array.isArray(o)){if(r[0]!==o[0]||r[2]!==o[2])return!0}else if(r!==o)return!0;if(t[4])return!n[4];if(n[4])return!0;let u=Object.values(t[1])[0],l=Object.values(n[1])[0];return!u||!l||e(u,l)}}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},56118:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{abortTask:function(){return c},listenForDynamicRequest:function(){return a},updateCacheNodeOnNavigation:function(){return function e(t,n,a,c,s){let f=n[1],d=a[1],p=c[1],h=t.parallelRoutes,y=new Map(h),_={},v=null;for(let t in d){let n;let a=d[t],c=f[t],b=h.get(t),g=p[t],m=a[0],R=(0,u.createRouterCacheKey)(m),P=void 0!==c?c[0]:void 0,j=void 0!==b?b.get(R):void 0;if(null!==(n=m===r.PAGE_SEGMENT_KEY?l(a,void 0!==g?g:null,s):m===r.DEFAULT_SEGMENT_KEY?void 0!==c?{route:c,node:null,children:null}:l(a,void 0!==g?g:null,s):void 0!==P&&(0,o.matchSegment)(m,P)&&void 0!==j&&void 0!==c?null!=g?e(j,c,a,g,s):function(e){let t=i(e,null,null);return{route:e,node:t,children:null}}(a):l(a,void 0!==g?g:null,s))){null===v&&(v=new Map),v.set(t,n);let e=n.node;if(null!==e){let n=new Map(b);n.set(R,e),y.set(t,n)}_[t]=n.route}else _[t]=a}if(null===v)return null;let b={lazyData:null,rsc:t.rsc,prefetchRsc:t.prefetchRsc,head:t.head,prefetchHead:t.prefetchHead,loading:t.loading,parallelRoutes:y,lazyDataResolved:!1};return{route:function(e,t){let n=[e[0],t];return 2 in e&&(n[2]=e[2]),3 in e&&(n[3]=e[3]),4 in e&&(n[4]=e[4]),n}(a,_),node:b,children:v}}},updateCacheNodeOnPopstateRestoration:function(){return function e(t,n){let r=n[1],o=t.parallelRoutes,l=new Map(o);for(let t in r){let n=r[t],a=n[0],i=(0,u.createRouterCacheKey)(a),c=o.get(t);if(void 0!==c){let r=c.get(i);if(void 0!==r){let o=e(r,n),u=new Map(c);u.set(i,o),l.set(t,u)}}}let a=t.rsc,i=d(a)&&"pending"===a.status;return{lazyData:null,rsc:a,head:t.head,prefetchHead:i?t.prefetchHead:null,prefetchRsc:i?t.prefetchRsc:null,loading:i?t.loading:null,parallelRoutes:l,lazyDataResolved:!1}}}});let r=n(84541),o=n(76015),u=n(78505);function l(e,t,n){let r=i(e,t,n);return{route:e,node:r,children:null}}function a(e,t){t.then(t=>{for(let n of t[0]){let t=n.slice(0,-3),r=n[n.length-3],l=n[n.length-2],a=n[n.length-1];"string"!=typeof t&&function(e,t,n,r,l){let a=e;for(let e=0;e{c(e,t)})}function i(e,t,n){let r=e[1],o=null!==t?t[1]:null,l=new Map;for(let e in r){let t=r[e],a=null!==o?o[e]:null,c=t[0],s=(0,u.createRouterCacheKey)(c),f=i(t,void 0===a?null:a,n),d=new Map;d.set(s,f),l.set(e,d)}let a=0===l.size,c=null!==t?t[2]:null,s=null!==t?t[3]:null;return{lazyData:null,parallelRoutes:l,prefetchRsc:void 0!==c?c:null,prefetchHead:a?n:null,loading:void 0!==s?s:null,rsc:p(),head:a?p():null,lazyDataResolved:!1}}function c(e,t){let n=e.node;if(null===n)return;let r=e.children;if(null===r)s(e.route,n,t);else for(let e of r.values())c(e,t);e.node=null}function s(e,t,n){let r=e[1],o=t.parallelRoutes;for(let e in r){let t=r[e],l=o.get(e);if(void 0===l)continue;let a=t[0],i=(0,u.createRouterCacheKey)(a),c=l.get(i);void 0!==c&&s(t,c,n)}let l=t.rsc;d(l)&&(null===n?l.resolve(null):l.reject(n));let a=t.head;d(a)&&a.resolve(null)}let f=Symbol();function d(e){return e&&e.tag===f}function p(){let e,t;let n=new Promise((n,r)=>{e=n,t=r});return n.status="pending",n.resolve=t=>{"pending"===n.status&&(n.status="fulfilled",n.value=t,e(t))},n.reject=e=>{"pending"===n.status&&(n.status="rejected",n.reason=e,t(e))},n.tag=f,n}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},60305:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{createPrefetchCacheEntryForInitialLoad:function(){return c},getOrCreatePrefetchCacheEntry:function(){return i},prunePrefetchCache:function(){return f}});let r=n(33456),o=n(44848),u=n(24673),l=n(24819);function a(e,t){let n=(0,r.createHrefFromUrl)(e,!1);return t?t+"%"+n:n}function i(e){let t,{url:n,nextUrl:r,tree:o,buildId:l,prefetchCache:i,kind:c}=e,f=a(n,r),d=i.get(f);if(d)t=d;else{let e=a(n),r=i.get(e);r&&(t=r)}return t?(t.status=h(t),t.kind!==u.PrefetchKind.FULL&&c===u.PrefetchKind.FULL)?s({tree:o,url:n,buildId:l,nextUrl:r,prefetchCache:i,kind:null!=c?c:u.PrefetchKind.TEMPORARY}):(c&&t.kind===u.PrefetchKind.TEMPORARY&&(t.kind=c),t):s({tree:o,url:n,buildId:l,nextUrl:r,prefetchCache:i,kind:c||u.PrefetchKind.TEMPORARY})}function c(e){let{nextUrl:t,tree:n,prefetchCache:r,url:o,kind:l,data:i}=e,[,,,c]=i,s=c?a(o,t):a(o),f={treeAtTimeOfPrefetch:n,data:Promise.resolve(i),kind:l,prefetchTime:Date.now(),lastUsedTime:Date.now(),key:s,status:u.PrefetchCacheEntryStatus.fresh};return r.set(s,f),f}function s(e){let{url:t,kind:n,tree:r,nextUrl:i,buildId:c,prefetchCache:s}=e,f=a(t),d=l.prefetchQueue.enqueue(()=>(0,o.fetchServerResponse)(t,r,i,c,n).then(e=>{let[,,,n]=e;return n&&function(e){let{url:t,nextUrl:n,prefetchCache:r}=e,o=a(t),u=r.get(o);if(!u)return;let l=a(t,n);r.set(l,u),r.delete(o)}({url:t,nextUrl:i,prefetchCache:s}),e})),p={treeAtTimeOfPrefetch:r,data:d,kind:n,prefetchTime:Date.now(),lastUsedTime:null,key:f,status:u.PrefetchCacheEntryStatus.fresh};return s.set(f,p),p}function f(e){for(let[t,n]of e)h(n)===u.PrefetchCacheEntryStatus.expired&&e.delete(t)}let d=1e3*Number("30"),p=1e3*Number("300");function h(e){let{kind:t,prefetchTime:n,lastUsedTime:r}=e;return Date.now()<(null!=r?r:n)+d?r?u.PrefetchCacheEntryStatus.reusable:u.PrefetchCacheEntryStatus.fresh:"auto"===t&&Date.now(){let[n,f]=t,h=!1;if(S.lastUsedTime||(S.lastUsedTime=Date.now(),h=!0),"string"==typeof n)return _(e,R,n,O);if(document.getElementById("__next-page-redirect"))return _(e,R,j,O);let b=e.tree,g=e.cache,w=[];for(let t of n){let n=t.slice(0,-4),r=t.slice(-3)[0],c=["",...n],f=(0,u.applyRouterStatePatchToTree)(c,b,r,j);if(null===f&&(f=(0,u.applyRouterStatePatchToTree)(c,E,r,j)),null!==f){if((0,a.isNavigatingToNewRootLayout)(b,f))return _(e,R,j,O);let u=(0,d.createEmptyCacheNode)(),m=!1;for(let e of(S.status!==i.PrefetchCacheEntryStatus.stale||h?m=(0,s.applyFlightData)(g,u,t,S):(m=function(e,t,n,r){let o=!1;for(let u of(e.rsc=t.rsc,e.prefetchRsc=t.prefetchRsc,e.loading=t.loading,e.parallelRoutes=new Map(t.parallelRoutes),v(r).map(e=>[...n,...e])))(0,y.clearCacheNodeDataForSegmentPath)(e,t,u),o=!0;return o}(u,g,n,r),S.lastUsedTime=Date.now()),(0,l.shouldHardNavigate)(c,b)?(u.rsc=g.rsc,u.prefetchRsc=g.prefetchRsc,(0,o.invalidateCacheBelowFlightSegmentPath)(u,g,n),R.cache=u):m&&(R.cache=u,g=u),b=f,v(r))){let t=[...n,...e];t[t.length-1]!==p.DEFAULT_SEGMENT_KEY&&w.push(t)}}}return R.patchedTree=b,R.canonicalUrl=f?(0,r.createHrefFromUrl)(f):j,R.pendingPush=O,R.scrollableSegments=w,R.hashFragment=P,R.shouldScroll=m,(0,c.handleMutable)(e,R)},()=>e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},24819:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{prefetchQueue:function(){return l},prefetchReducer:function(){return a}});let r=n(6866),o=n(29744),u=n(60305),l=new o.PromiseQueue(5);function a(e,t){(0,u.prunePrefetchCache)(e.prefetchCache);let{url:n}=t;return n.searchParams.delete(r.NEXT_RSC_UNION_QUERY),(0,u.getOrCreatePrefetchCacheEntry)({url:n,nextUrl:e.nextUrl,prefetchCache:e.prefetchCache,kind:t.kind,tree:e.tree,buildId:e.buildId}),e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},99601:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"refreshReducer",{enumerable:!0,get:function(){return h}});let r=n(44848),o=n(33456),u=n(81935),l=n(63237),a=n(95967),i=n(44510),c=n(27420),s=n(12846),f=n(77831),d=n(28077),p=n(50232);function h(e,t){let{origin:n}=t,h={},y=e.canonicalUrl,_=e.tree;h.preserveCustomHistoryState=!1;let v=(0,s.createEmptyCacheNode)(),b=(0,d.hasInterceptionRouteInCurrentTree)(e.tree);return v.lazyData=(0,r.fetchServerResponse)(new URL(y,n),[_[0],_[1],_[2],"refetch"],b?e.nextUrl:null,e.buildId),v.lazyData.then(async n=>{let[r,s]=n;if("string"==typeof r)return(0,a.handleExternalUrl)(e,h,r,e.pushRef.pendingPush);for(let n of(v.lazyData=null,r)){if(3!==n.length)return console.log("REFRESH FAILED"),e;let[r]=n,i=(0,u.applyRouterStatePatchToTree)([""],_,r,e.canonicalUrl);if(null===i)return(0,f.handleSegmentMismatch)(e,t,r);if((0,l.isNavigatingToNewRootLayout)(_,i))return(0,a.handleExternalUrl)(e,h,y,e.pushRef.pendingPush);let d=s?(0,o.createHrefFromUrl)(s):void 0;s&&(h.canonicalUrl=d);let[g,m]=n.slice(-2);if(null!==g){let e=g[2];v.rsc=e,v.prefetchRsc=null,(0,c.fillLazyItemsTillLeafWithHead)(v,void 0,r,g,m),h.prefetchCache=new Map}await (0,p.refreshInactiveParallelSegments)({state:e,updatedTree:i,updatedCache:v,includeNextUrl:b,canonicalUrl:h.canonicalUrl||e.canonicalUrl}),h.cache=v,h.patchedTree=i,h.canonicalUrl=y,_=i}return(0,i.handleMutable)(e,h)},()=>e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},77784:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"restoreReducer",{enumerable:!0,get:function(){return u}});let r=n(33456),o=n(5410);function u(e,t){var n;let{url:u,tree:l}=t,a=(0,r.createHrefFromUrl)(u),i=l||e.tree,c=e.cache;return{buildId:e.buildId,canonicalUrl:a,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:e.focusAndScrollRef,cache:c,prefetchCache:e.prefetchCache,tree:i,nextUrl:null!=(n=(0,o.extractPathFromFlightRouterState)(i))?n:u.pathname}}n(56118),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},13722:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverActionReducer",{enumerable:!0,get:function(){return g}});let r=n(83079),o=n(6866),u=n(1634),l=n(33456),a=n(95967),i=n(81935),c=n(63237),s=n(44510),f=n(27420),d=n(12846),p=n(28077),h=n(77831),y=n(50232),{createFromFetch:_,encodeReply:v}=n(6671);async function b(e,t,n){let l,{actionId:a,actionArgs:i}=n,c=await v(i),s=await fetch("",{method:"POST",headers:{Accept:o.RSC_CONTENT_TYPE_HEADER,[o.ACTION]:a,[o.NEXT_ROUTER_STATE_TREE]:encodeURIComponent(JSON.stringify(e.tree)),...t?{[o.NEXT_URL]:t}:{}},body:c}),f=s.headers.get("x-action-redirect");try{let e=JSON.parse(s.headers.get("x-action-revalidated")||"[[],0,0]");l={paths:e[0]||[],tag:!!e[1],cookie:e[2]}}catch(e){l={paths:[],tag:!1,cookie:!1}}let d=f?new URL((0,u.addBasePath)(f),new URL(e.canonicalUrl,window.location.href)):void 0;if(s.headers.get("content-type")===o.RSC_CONTENT_TYPE_HEADER){let e=await _(Promise.resolve(s),{callServer:r.callServer});if(f){let[,t]=null!=e?e:[];return{actionFlightData:t,redirectLocation:d,revalidatedParts:l}}let[t,[,n]]=null!=e?e:[];return{actionResult:t,actionFlightData:n,redirectLocation:d,revalidatedParts:l}}return{redirectLocation:d,revalidatedParts:l}}function g(e,t){let{resolve:n,reject:r}=t,o={},u=e.canonicalUrl,_=e.tree;o.preserveCustomHistoryState=!1;let v=e.nextUrl&&(0,p.hasInterceptionRouteInCurrentTree)(e.tree)?e.nextUrl:null;return o.inFlightServerAction=b(e,v,t),o.inFlightServerAction.then(async r=>{let{actionResult:p,actionFlightData:b,redirectLocation:g}=r;if(g&&(e.pushRef.pendingPush=!0,o.pendingPush=!0),!b)return(n(p),g)?(0,a.handleExternalUrl)(e,o,g.href,e.pushRef.pendingPush):e;if("string"==typeof b)return(0,a.handleExternalUrl)(e,o,b,e.pushRef.pendingPush);if(o.inFlightServerAction=null,g){let e=(0,l.createHrefFromUrl)(g,!1);o.canonicalUrl=e}for(let n of b){if(3!==n.length)return console.log("SERVER ACTION APPLY FAILED"),e;let[r]=n,s=(0,i.applyRouterStatePatchToTree)([""],_,r,g?(0,l.createHrefFromUrl)(g):e.canonicalUrl);if(null===s)return(0,h.handleSegmentMismatch)(e,t,r);if((0,c.isNavigatingToNewRootLayout)(_,s))return(0,a.handleExternalUrl)(e,o,u,e.pushRef.pendingPush);let[p,b]=n.slice(-2),m=null!==p?p[2]:null;if(null!==m){let t=(0,d.createEmptyCacheNode)();t.rsc=m,t.prefetchRsc=null,(0,f.fillLazyItemsTillLeafWithHead)(t,void 0,r,p,b),await (0,y.refreshInactiveParallelSegments)({state:e,updatedTree:s,updatedCache:t,includeNextUrl:!!v,canonicalUrl:o.canonicalUrl||e.canonicalUrl}),o.cache=t,o.prefetchCache=new Map}o.patchedTree=s,_=s}return n(p),(0,s.handleMutable)(e,o)},t=>(r(t),e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},68448:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverPatchReducer",{enumerable:!0,get:function(){return f}});let r=n(33456),o=n(81935),u=n(63237),l=n(95967),a=n(22356),i=n(44510),c=n(12846),s=n(77831);function f(e,t){let{serverResponse:n}=t,[f,d]=n,p={};if(p.preserveCustomHistoryState=!1,"string"==typeof f)return(0,l.handleExternalUrl)(e,p,f,e.pushRef.pendingPush);let h=e.tree,y=e.cache;for(let n of f){let i=n.slice(0,-4),[f]=n.slice(-3,-2),_=(0,o.applyRouterStatePatchToTree)(["",...i],h,f,e.canonicalUrl);if(null===_)return(0,s.handleSegmentMismatch)(e,t,f);if((0,u.isNavigatingToNewRootLayout)(h,_))return(0,l.handleExternalUrl)(e,p,e.canonicalUrl,e.pushRef.pendingPush);let v=d?(0,r.createHrefFromUrl)(d):void 0;v&&(p.canonicalUrl=v);let b=(0,c.createEmptyCacheNode)();(0,a.applyFlightData)(y,b,n),p.patchedTree=_,p.cache=b,y=b,h=_}return(0,i.handleMutable)(e,p)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},50232:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{addRefreshMarkerToActiveParallelSegments:function(){return function e(t,n){let[r,o,,l]=t;for(let a in r.includes(u.PAGE_SEGMENT_KEY)&&"refresh"!==l&&(t[2]=n,t[3]="refresh"),o)e(o[a],n)}},refreshInactiveParallelSegments:function(){return l}});let r=n(22356),o=n(44848),u=n(84541);async function l(e){let t=new Set;await a({...e,rootTree:e.updatedTree,fetchedSegments:t})}async function a(e){let{state:t,updatedTree:n,updatedCache:u,includeNextUrl:l,fetchedSegments:i,rootTree:c=n,canonicalUrl:s}=e,[,f,d,p]=n,h=[];if(d&&d!==s&&"refresh"===p&&!i.has(d)){i.add(d);let e=(0,o.fetchServerResponse)(new URL(d,location.origin),[c[0],c[1],c[2],"refetch"],l?t.nextUrl:null,t.buildId).then(e=>{let t=e[0];if("string"!=typeof t)for(let e of t)(0,r.applyFlightData)(u,u,e)});h.push(e)}for(let e in f){let n=a({state:t,updatedTree:f[e],updatedCache:u,includeNextUrl:l,fetchedSegments:i,rootTree:c,canonicalUrl:s});h.push(n)}await Promise.all(h)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},24673:function(e,t){"use strict";var n,r,o,u;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ACTION_FAST_REFRESH:function(){return f},ACTION_NAVIGATE:function(){return a},ACTION_PREFETCH:function(){return s},ACTION_REFRESH:function(){return l},ACTION_RESTORE:function(){return i},ACTION_SERVER_ACTION:function(){return d},ACTION_SERVER_PATCH:function(){return c},PrefetchCacheEntryStatus:function(){return r},PrefetchKind:function(){return n},isThenable:function(){return p}});let l="refresh",a="navigate",i="restore",c="server-patch",s="prefetch",f="fast-refresh",d="server-action";function p(e){return e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof e.then}(o=n||(n={})).AUTO="auto",o.FULL="full",o.TEMPORARY="temporary",(u=r||(r={})).fresh="fresh",u.reusable="reusable",u.expired="expired",u.stale="stale",("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},91450:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reducer",{enumerable:!0,get:function(){return f}});let r=n(24673),o=n(95967),u=n(68448),l=n(77784),a=n(99601),i=n(24819),c=n(44529),s=n(13722),f="undefined"==typeof window?function(e,t){return e}:function(e,t){switch(t.type){case r.ACTION_NAVIGATE:return(0,o.navigateReducer)(e,t);case r.ACTION_SERVER_PATCH:return(0,u.serverPatchReducer)(e,t);case r.ACTION_RESTORE:return(0,l.restoreReducer)(e,t);case r.ACTION_REFRESH:return(0,a.refreshReducer)(e,t);case r.ACTION_FAST_REFRESH:return(0,c.fastRefreshReducer)(e,t);case r.ACTION_PREFETCH:return(0,i.prefetchReducer)(e,t);case r.ACTION_SERVER_ACTION:return(0,s.serverActionReducer)(e,t);default:throw Error("Unknown action")}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},53728:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"shouldHardNavigate",{enumerable:!0,get:function(){return function e(t,n){let[o,u]=n,[l,a]=t;return(0,r.matchSegment)(l,o)?!(t.length<=2)&&e(t.slice(2),u[a]):!!Array.isArray(l)}}});let r=n(76015);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},54535:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{createDynamicallyTrackedSearchParams:function(){return a},createUntrackedSearchParams:function(){return l}});let r=n(51845),o=n(86999),u=n(30650);function l(e){let t=r.staticGenerationAsyncStorage.getStore();return t&&t.forceStatic?{}:e}function a(e){let t=r.staticGenerationAsyncStorage.getStore();return t?t.forceStatic?{}:t.isStaticGeneration||t.dynamicShouldError?new Proxy({},{get:(e,n,r)=>("string"==typeof n&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+n),u.ReflectAdapter.get(e,n,r)),has:(e,n)=>("string"==typeof n&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+n),Reflect.has(e,n)),ownKeys:e=>((0,o.trackDynamicDataAccessed)(t,"searchParams"),Reflect.ownKeys(e))}):e:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},51845:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"staticGenerationAsyncStorage",{enumerable:!0,get:function(){return r.staticGenerationAsyncStorage}});let r=n(20030);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},36864:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{StaticGenBailoutError:function(){return r},isStaticGenBailoutError:function(){return o}});let n="NEXT_STATIC_GEN_BAILOUT";class r extends Error{constructor(...e){super(...e),this.code=n}}function o(e){return"object"==typeof e&&null!==e&&"code"in e&&e.code===n}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},38137:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unresolvedThenable",{enumerable:!0,get:function(){return n}});let n={then:()=>{}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},47744:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{useReducerWithReduxDevtools:function(){return i},useUnwrapState:function(){return a}});let r=n(53099)._(n(2265)),o=n(24673),u=n(2103);function l(e){if(e instanceof Map){let t={};for(let[n,r]of e.entries()){if("function"==typeof r){t[n]="fn()";continue}if("object"==typeof r&&null!==r){if(r.$$typeof){t[n]=r.$$typeof.toString();continue}if(r._bundlerConfig){t[n]="FlightData";continue}}t[n]=l(r)}return t}if("object"==typeof e&&null!==e){let t={};for(let n in e){let r=e[n];if("function"==typeof r){t[n]="fn()";continue}if("object"==typeof r&&null!==r){if(r.$$typeof){t[n]=r.$$typeof.toString();continue}if(r.hasOwnProperty("_bundlerConfig")){t[n]="FlightData";continue}}t[n]=l(r)}return t}return Array.isArray(e)?e.map(l):e}function a(e){return(0,o.isThenable)(e)?(0,r.use)(e):e}let i="undefined"!=typeof window?function(e){let[t,n]=r.default.useState(e),o=(0,r.useContext)(u.ActionQueueContext);if(!o)throw Error("Invariant: Missing ActionQueueContext");let a=(0,r.useRef)(),i=(0,r.useRef)();return(0,r.useEffect)(()=>{if(!a.current&&!1!==i.current){if(void 0===i.current&&void 0===window.__REDUX_DEVTOOLS_EXTENSION__){i.current=!1;return}return a.current=window.__REDUX_DEVTOOLS_EXTENSION__.connect({instanceId:8e3,name:"next-router"}),a.current&&(a.current.init(l(e)),o&&(o.devToolsInstance=a.current)),()=>{a.current=void 0}}},[e,o]),[t,(0,r.useCallback)(t=>{o.state||(o.state=e),o.dispatch(t,n)},[o,e]),(0,r.useCallback)(e=>{a.current&&a.current.send({type:"RENDER_SYNC"},l(e))},[])]}:function(e){return[e,()=>{},()=>{}]};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},11283:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasBasePath",{enumerable:!0,get:function(){return o}});let r=n(10580);function o(e){return(0,r.pathHasPrefix)(e,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},33068:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return u}});let r=n(26674),o=n(63381),u=e=>{if(!e.startsWith("/"))return e;let{pathname:t,query:n,hash:u}=(0,o.parsePath)(e);return""+(0,r.removeTrailingSlash)(t)+n+u};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},61404:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let r=n(18993);function o(e){let t="function"==typeof reportError?reportError:e=>{window.console.error(e)};(0,r.isBailoutToCSRError)(e)||t(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},35076:function(e,t,n){"use strict";function r(e){return e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return r}}),n(11283),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},12010:function(e,t){"use strict";function n(e,t){var n=e.length;for(e.push(t);0>>1,o=e[r];if(0>>1;ru(i,n))cu(s,i)?(e[r]=s,e[c]=n,r=c):(e[r]=i,e[a]=n,r=a);else if(cu(s,n))e[r]=s,e[c]=n,r=c;else break}}return t}function u(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var l,a=performance;t.unstable_now=function(){return a.now()}}else{var i=Date,c=i.now();t.unstable_now=function(){return i.now()-c}}var s=[],f=[],d=1,p=null,h=3,y=!1,_=!1,v=!1,b="function"==typeof setTimeout?setTimeout:null,g="function"==typeof clearTimeout?clearTimeout:null,m="undefined"!=typeof setImmediate?setImmediate:null;function R(e){for(var t=r(f);null!==t;){if(null===t.callback)o(f);else if(t.startTime<=e)o(f),t.sortIndex=t.expirationTime,n(s,t);else break;t=r(f)}}function P(e){if(v=!1,R(e),!_){if(null!==r(s))_=!0,C();else{var t=r(f);null!==t&&A(P,t.startTime-e)}}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var j=!1,O=-1,S=5,E=-1;function w(){return!(t.unstable_now()-Ee&&w());){var a=p.callback;if("function"==typeof a){p.callback=null,h=p.priorityLevel;var i=a(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof i){p.callback=i,R(e),n=!0;break t}p===r(s)&&o(s),R(e)}else o(s);p=r(s)}if(null!==p)n=!0;else{var c=r(f);null!==c&&A(P,c.startTime-e),n=!1}}break e}finally{p=null,h=u,y=!1}n=void 0}}finally{n?l():j=!1}}}if("function"==typeof m)l=function(){m(T)};else if("undefined"!=typeof MessageChannel){var M=new MessageChannel,x=M.port2;M.port1.onmessage=T,l=function(){x.postMessage(null)}}else l=function(){b(T,0)};function C(){j||(j=!0,l())}function A(e,n){O=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){_||y||(_=!0,C())},t.unstable_forceFrameRate=function(e){0>e||125l?(e.sortIndex=u,n(f,e),null===r(s)&&e===r(f)&&(v?(g(O),O=-1):v=!0,A(P,u-l))):(e.sortIndex=a,n(s,e),_||y||(_=!0,C())),e},t.unstable_shouldYield=w,t.unstable_wrapCallback=function(e){var t=h;return function(){var n=h;h=t;try{return e.apply(this,arguments)}finally{h=n}}}},71767:function(e,t,n){"use strict";e.exports=n(12010)},60934:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{getPathname:function(){return r},isFullStringUrl:function(){return o},parseUrl:function(){return u}});let n="http://n";function r(e){return new URL(e,n).pathname}function o(e){return/https?:\/\//.test(e)}function u(e){let t;try{t=new URL(e,n)}catch{}return t}},86999:function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{Postpone:function(){return d},createPostponedAbortSignal:function(){return b},createPrerenderState:function(){return c},formatDynamicAPIAccesses:function(){return _},markCurrentScopeAsDynamic:function(){return s},trackDynamicDataAccessed:function(){return f},trackDynamicFetch:function(){return p},usedDynamicAPIs:function(){return y}});let o=(r=n(2265))&&r.__esModule?r:{default:r},u=n(46177),l=n(36864),a=n(60934),i="function"==typeof o.default.unstable_postpone;function c(e){return{isDebugSkeleton:e,dynamicAccesses:[]}}function s(e,t){let n=(0,a.getPathname)(e.urlPathname);if(!e.isUnstableCacheCallback){if(e.dynamicShouldError)throw new l.StaticGenBailoutError(`Route ${n} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)h(e.prerenderState,t,n);else if(e.revalidate=0,e.isStaticGeneration){let r=new u.DynamicServerError(`Route ${n} couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=r.stack,r}}}function f(e,t){let n=(0,a.getPathname)(e.urlPathname);if(e.isUnstableCacheCallback)throw Error(`Route ${n} used "${t}" inside a function cached with "unstable_cache(...)". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use "${t}" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`);if(e.dynamicShouldError)throw new l.StaticGenBailoutError(`Route ${n} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)h(e.prerenderState,t,n);else if(e.revalidate=0,e.isStaticGeneration){let r=new u.DynamicServerError(`Route ${n} couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=r.stack,r}}function d({reason:e,prerenderState:t,pathname:n}){h(t,e,n)}function p(e,t){e.prerenderState&&h(e.prerenderState,t,e.urlPathname)}function h(e,t,n){v();let r=`Route ${n} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;e.dynamicAccesses.push({stack:e.isDebugSkeleton?Error().stack:void 0,expression:t}),o.default.unstable_postpone(r)}function y(e){return e.dynamicAccesses.length>0}function _(e){return e.dynamicAccesses.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" ()")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}: -${t}`))}function v(){if(!i)throw Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js")}function b(e){v();let t=new AbortController;try{o.default.unstable_postpone(e)}catch(e){t.abort(e)}return t.signal}},87417:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSegmentParam",{enumerable:!0,get:function(){return o}});let r=n(91182);function o(e){let t=r.INTERCEPTION_ROUTE_MARKERS.find(t=>e.startsWith(t));return(t&&(e=e.slice(t.length)),e.startsWith("[[...")&&e.endsWith("]]"))?{type:"optional-catchall",param:e.slice(5,-2)}:e.startsWith("[...")&&e.endsWith("]")?{type:t?"catchall-intercepted":"catchall",param:e.slice(4,-1)}:e.startsWith("[")&&e.endsWith("]")?{type:t?"dynamic-intercepted":"dynamic",param:e.slice(1,-1)}:null}},70647:function(e,t){"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HMR_ACTIONS_SENT_TO_BROWSER",{enumerable:!0,get:function(){return n}}),(r=n||(n={})).ADDED_PAGE="addedPage",r.REMOVED_PAGE="removedPage",r.RELOAD_PAGE="reloadPage",r.SERVER_COMPONENT_CHANGES="serverComponentChanges",r.MIDDLEWARE_CHANGES="middlewareChanges",r.CLIENT_CHANGES="clientChanges",r.SERVER_ONLY_CHANGES="serverOnlyChanges",r.SYNC="sync",r.BUILT="built",r.BUILDING="building",r.DEV_PAGES_MANIFEST_UPDATE="devPagesManifestUpdate",r.TURBOPACK_MESSAGE="turbopack-message",r.SERVER_ERROR="serverError",r.TURBOPACK_CONNECTED="turbopack-connected"},91182:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return l},isInterceptionRouteAppPath:function(){return u}});let r=n(20926),o=["(..)(..)","(.)","(..)","(...)"];function u(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function l(e){let t,n,u;for(let r of e.split("/"))if(n=o.find(e=>r.startsWith(e))){[t,u]=e.split(n,2);break}if(!t||!n||!u)throw Error(`Invalid interception route: ${e}. Must be in the format //(..|...|..)(..)/`);switch(t=(0,r.normalizeAppPath)(t),n){case"(.)":u="/"===t?`/${u}`:t+"/"+u;break;case"(..)":if("/"===t)throw Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`);u=t.split("/").slice(0,-1).concat(u).join("/");break;case"(...)":u="/"+u;break;case"(..)(..)":let l=t.split("/");if(l.length<=2)throw Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`);u=l.slice(0,-2).concat(u).join("/");break;default:throw Error("Invariant: unexpected marker")}return{interceptingRoute:t,interceptedRoute:u}}},30650:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,n){let r=Reflect.get(e,t,n);return"function"==typeof r?r.bind(e):r}static set(e,t,n,r){return Reflect.set(e,t,n,r)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},61956:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{AppRouterContext:function(){return o},GlobalLayoutRouterContext:function(){return l},LayoutRouterContext:function(){return u},MissingSlotContext:function(){return i},TemplateContext:function(){return a}});let r=n(47043)._(n(2265)),o=r.default.createContext(null),u=r.default.createContext(null),l=r.default.createContext(null),a=r.default.createContext(null),i=r.default.createContext(new Set)},37207:function(e,t){"use strict";function n(e){let t=5381;for(let n=0;n>>0}function r(e){return n(e).toString(36).slice(0,5)}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{djb2Hash:function(){return n},hexHash:function(){return r}})},48701:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HeadManagerContext",{enumerable:!0,get:function(){return r}});let r=n(47043)._(n(2265)).default.createContext({})},79060:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{PathParamsContext:function(){return l},PathnameContext:function(){return u},SearchParamsContext:function(){return o}});let r=n(2265),o=(0,r.createContext)(null),u=(0,r.createContext)(null),l=(0,r.createContext)(null)},18993:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{BailoutToCSRError:function(){return r},isBailoutToCSRError:function(){return o}});let n="BAILOUT_TO_CLIENT_SIDE_RENDERING";class r extends Error{constructor(e){super("Bail out to client-side rendering: "+e),this.reason=e,this.digest=n}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===n}},78162:function(e,t){"use strict";function n(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return n}})},2103:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ActionQueueContext:function(){return a},createMutableActionQueue:function(){return s}});let r=n(53099),o=n(24673),u=n(91450),l=r._(n(2265)),a=l.default.createContext(null);function i(e,t){null!==e.pending&&(e.pending=e.pending.next,null!==e.pending?c({actionQueue:e,action:e.pending,setState:t}):e.needsRefresh&&(e.needsRefresh=!1,e.dispatch({type:o.ACTION_REFRESH,origin:window.location.origin},t)))}async function c(e){let{actionQueue:t,action:n,setState:r}=e,u=t.state;if(!u)throw Error("Invariant: Router state not initialized");t.pending=n;let l=n.payload,a=t.action(u,l);function c(e){n.discarded||(t.state=e,t.devToolsInstance&&t.devToolsInstance.send(l,e),i(t,r),n.resolve(e))}(0,o.isThenable)(a)?a.then(c,e=>{i(t,r),n.reject(e)}):c(a)}function s(){let e={state:null,dispatch:(t,n)=>(function(e,t,n){let r={resolve:n,reject:()=>{}};if(t.type!==o.ACTION_RESTORE){let e=new Promise((e,t)=>{r={resolve:e,reject:t}});(0,l.startTransition)(()=>{n(e)})}let u={payload:t,next:null,resolve:r.resolve,reject:r.reject};null===e.pending?(e.last=u,c({actionQueue:e,action:u,setState:n})):t.type===o.ACTION_NAVIGATE||t.type===o.ACTION_RESTORE?(e.pending.discarded=!0,e.last=u,e.pending.payload.type===o.ACTION_SERVER_ACTION&&(e.needsRefresh=!0),c({actionQueue:e,action:u,setState:n})):(null!==e.last&&(e.last.next=u),e.last=u)})(e,t,n),action:async(e,t)=>{if(null===e)throw Error("Invariant: Router state not initialized");return(0,u.reducer)(e,t)},pending:null,last:null};return e}},68498:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathPrefix",{enumerable:!0,get:function(){return o}});let r=n(63381);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:n,query:o,hash:u}=(0,r.parsePath)(e);return""+t+n+o+u}},20926:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{normalizeAppPath:function(){return u},normalizeRscURL:function(){return l}});let r=n(78162),o=n(84541);function u(e){return(0,r.ensureLeadingSlash)(e.split("/").reduce((e,t,n,r)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&n===r.length-1?e:e+"/"+t,""))}function l(e){return e.replace(/\.rsc($|\?)/,"$1")}},7092:function(e,t){"use strict";function n(e,t){if(void 0===t&&(t={}),t.onlyHashChange){e();return}let n=document.documentElement,r=n.style.scrollBehavior;n.style.scrollBehavior="auto",t.dontForceLayout||n.getClientRects(),e(),n.style.scrollBehavior=r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSmoothScroll",{enumerable:!0,get:function(){return n}})},86146:function(e,t){"use strict";function n(e){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(e)}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isBot",{enumerable:!0,get:function(){return n}})},63381:function(e,t){"use strict";function n(e){let t=e.indexOf("#"),n=e.indexOf("?"),r=n>-1&&(t<0||n-1?{pathname:e.substring(0,r?n:t),query:r?e.substring(n,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parsePath",{enumerable:!0,get:function(){return n}})},10580:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return o}});let r=n(63381);function o(e,t){if("string"!=typeof e)return!1;let{pathname:n}=(0,r.parsePath)(e);return n===t||n.startsWith(t+"/")}},26674:function(e,t){"use strict";function n(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return n}})},84541:function(e,t){"use strict";function n(e){return"("===e[0]&&e.endsWith(")")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{DEFAULT_SEGMENT_KEY:function(){return o},PAGE_SEGMENT_KEY:function(){return r},isGroupSegment:function(){return n}});let r="__PAGE__",o="__DEFAULT__"},55501:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ServerInsertedHTMLContext:function(){return o},useServerInsertedHTML:function(){return u}});let r=n(53099)._(n(2265)),o=r.default.createContext(null);function u(e){let t=(0,r.useContext)(o);t&&t(e)}},31765:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},47149:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"actionAsyncStorage",{enumerable:!0,get:function(){return r}});let r=(0,n(54832).createAsyncLocalStorage)();("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},54832:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createAsyncLocalStorage",{enumerable:!0,get:function(){return u}});let n=Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available");class r{disable(){throw n}getStore(){}run(){throw n}exit(){throw n}enterWith(){throw n}}let o=globalThis.AsyncLocalStorage;function u(){return o?new o:new r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},25575:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"requestAsyncStorage",{enumerable:!0,get:function(){return r}});let r=(0,n(54832).createAsyncLocalStorage)();("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},20030:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"staticGenerationAsyncStorage",{enumerable:!0,get:function(){return r}});let r=(0,n(54832).createAsyncLocalStorage)();("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},34040:function(e,t,n){"use strict";var r=n(54887);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},54887:function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(84417)},97950:function(e,t,n){"use strict";var r=n(54887),o={stream:!0},u=new Map;function l(e){var t=n(e);return"function"!=typeof t.then||"fulfilled"===t.status?null:(t.then(function(e){t.status="fulfilled",t.value=e},function(e){t.status="rejected",t.reason=e}),t)}function a(){}var i=new Map,c=n.u;n.u=function(e){var t=i.get(e);return void 0!==t?t:c(e)};var s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Dispatcher,f=Symbol.for("react.element"),d=Symbol.for("react.lazy"),p=Symbol.iterator,h=Array.isArray,y=Object.getPrototypeOf,_=Object.prototype,v=new WeakMap;function b(e,t,n,r){this.status=e,this.value=t,this.reason=n,this._response=r}function g(e){switch(e.status){case"resolved_model":E(e);break;case"resolved_module":w(e)}switch(e.status){case"fulfilled":return e.value;case"pending":case"blocked":case"cyclic":throw e;default:throw e.reason}}function m(e,t){for(var n=0;nh?(_=h,h=3,p++):(_=0,h=3);continue;case 2:44===(m=d[p++])?h=4:v=v<<4|(96d.length&&(m=-1)}var O=d.byteOffset+p;if(-1{let{defaultValue:n,value:d,onValueChange:v,placeholder:b="Select...",disabled:g=!1,icon:h,enableClear:x=!0,children:O,className:I}=e,y=(0,o._T)(e,["defaultValue","value","onValueChange","placeholder","disabled","icon","enableClear","children","className"]),[S,R]=(0,r.useState)(""),[T,E]=(0,i.Z)(n,d),{reactElementChildren:C,valueToNameMapping:k}=(0,r.useMemo)(()=>{let e=r.Children.toArray(O).filter(r.isValidElement);return{reactElementChildren:e,valueToNameMapping:(0,f.sl)(e)}},[O]),M=(0,r.useMemo)(()=>(0,f.n0)(S,C),[S,C]);return r.createElement(l.h,Object.assign({as:"div",ref:t,defaultValue:T,value:T,onChange:e=>{null==v||v(e),E(e)},disabled:g,className:(0,c.q)("w-full min-w-[10rem] relative text-tremor-default",I)},y),e=>{let{value:t}=e;return r.createElement(r.Fragment,null,r.createElement(l.h.Button,{className:"w-full"},h&&r.createElement("span",{className:(0,c.q)("absolute inset-y-0 left-0 flex items-center ml-px pl-2.5")},r.createElement(h,{className:(0,c.q)(p("Icon"),"flex-none h-5 w-5","text-tremor-content-subtle","dark:text-dark-tremor-content-subtle")})),r.createElement(l.h.Input,{className:(0,c.q)("w-full outline-none text-left whitespace-nowrap truncate rounded-tremor-default focus:ring-2 transition duration-100 text-tremor-default pr-14 border py-2","border-tremor-border shadow-tremor-input focus:border-tremor-brand-subtle focus:ring-tremor-brand-muted","dark:border-dark-tremor-border dark:shadow-dark-tremor-input dark:focus:border-dark-tremor-brand-subtle dark:focus:ring-dark-tremor-brand-muted",h?"pl-10":"pl-3",g?"placeholder:text-tremor-content-subtle dark:placeholder:text-tremor-content-subtle":"placeholder:text-tremor-content dark:placeholder:text-tremor-content",(0,f.um)((0,f.Uh)(t),g)),placeholder:b,onChange:e=>R(e.target.value),displayValue:e=>{var t;return null!==(t=k.get(e))&&void 0!==t?t:""}}),r.createElement("div",{className:(0,c.q)("absolute inset-y-0 right-0 flex items-center pr-2.5")},r.createElement(u.Z,{className:(0,c.q)(p("arrowDownIcon"),"flex-none h-5 w-5","text-tremor-content-subtle","dark:text-dark-tremor-content-subtle")}))),x&&T?r.createElement("button",{type:"button",className:(0,c.q)("absolute inset-y-0 right-0 flex items-center mr-8"),onClick:e=>{e.preventDefault(),E(""),R(""),null==v||v("")}},r.createElement(s.Z,{className:(0,c.q)(m("clearIcon"),"flex-none h-4 w-4","text-tremor-content-subtle","dark:text-dark-tremor-content-subtle")})):null,M.length>0&&r.createElement(a.u,{className:"absolute z-10 w-full",enter:"transition ease duration-100 transform",enterFrom:"opacity-0 -translate-y-4",enterTo:"opacity-100 translate-y-0",leave:"transition ease duration-100 transform",leaveFrom:"opacity-100 translate-y-0",leaveTo:"opacity-0 -translate-y-4"},r.createElement(l.h.Options,{className:(0,c.q)("divide-y overflow-y-auto outline-none rounded-tremor-default text-tremor-default max-h-[228px] left-0 border my-1","bg-tremor-background border-tremor-border divide-tremor-border shadow-tremor-dropdown","dark:bg-dark-tremor-background dark:border-dark-tremor-border dark:divide-dark-tremor-border dark:shadow-dark-tremor-dropdown")},M)))})});v.displayName="SearchSelect"},70450:function(e,t,n){n.d(t,{Z:function(){return s}});var o=n(5853),r=n(2265),i=n(97324),l=n(1153),a=n(34237);let u=(0,l.fn)("SearchSelectItem"),s=r.forwardRef((e,t)=>{let{value:n,icon:l,className:s,children:c}=e,d=(0,o._T)(e,["value","icon","className","children"]);return r.createElement(a.h.Option,Object.assign({className:(0,i.q)(u("root"),"flex justify-start items-center cursor-default text-tremor-default p-2.5","ui-active:bg-tremor-background-muted ui-active:text-tremor-content-strong ui-selected:text-tremor-content-strong ui-selected:bg-tremor-background-muted text-tremor-content-emphasis","dark:ui-active:bg-dark-tremor-background-muted dark:ui-active:text-dark-tremor-content-strong dark:ui-selected:text-dark-tremor-content-strong dark:ui-selected:bg-dark-tremor-background-muted dark:text-dark-tremor-content-emphasis",s),ref:t,key:n,value:n},d),l&&r.createElement(l,{className:(0,i.q)(u("icon"),"flex-none h-5 w-5 mr-3","text-tremor-content-subtle","dark:text-dark-tremor-content-subtle")}),r.createElement("span",{className:"whitespace-nowrap truncate"},null!=c?c:n))});s.displayName="SearchSelectItem"},34237:function(e,t,n){let o,r,i,l;function a(){return(a=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0;i--){var l=e[i];if(!n.has(l.lane)){var a=r.get(l.lane);if(null==a||l.end>a.end?r.set(l.lane,l):l.end0?Math.min.apply(Math,o.pendingMeasuredCacheIndexes):0;o.pendingMeasuredCacheIndexes=[];for(var u=o.measurementsCache.slice(0,a),s=a;s0&&t>0?function(e){for(var t=e.measurements,n=e.outerSize,o=e.scrollOffset,r=t.length-1,i=O(0,r,function(e){return t[e].start},o),l=i;l=o.scrollOffset+n?"end":"start"),"start"===t||("end"===t?e-=n:"center"===t&&(e-=n/2));var r=o.options.horizontal?"scrollWidth":"scrollHeight";return Math.max(Math.min((o.scrollElement?"document"in o.scrollElement?o.scrollElement.document.documentElement[r]:o.scrollElement[r]:0)-o.getSize(),e),0)},this.getOffsetForIndex=function(e,t){void 0===t&&(t="auto"),e=Math.max(0,Math.min(e,o.options.count-1));var n=f(o.getMeasurements()[e]);if("auto"===t){if(n.end>=o.scrollOffset+o.getSize()-o.options.scrollPaddingEnd)t="end";else{if(!(n.start<=o.scrollOffset+o.options.scrollPaddingStart))return[o.scrollOffset,t];t="start"}}var r="end"===t?n.end+o.options.scrollPaddingEnd:n.start-o.options.scrollPaddingStart;return[o.getOffsetForAlignment(r,t),t]},this.isDynamicMode=function(){return o.measureElementCache.size>0},this.cancelScrollToIndex=function(){null!==o.scrollToIndexTimeoutId&&(clearTimeout(o.scrollToIndexTimeoutId),o.scrollToIndexTimeoutId=null)},this.scrollToOffset=function(e,t){var n=void 0===t?{}:t,r=n.align,i=n.behavior;o.cancelScrollToIndex(),"smooth"===i&&o.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),o._scrollToOffset(o.getOffsetForAlignment(e,void 0===r?"start":r),{adjustments:void 0,behavior:i})},this.scrollToIndex=function(e,t){var n=void 0===t?{}:t,r=n.align,i=n.behavior;e=Math.max(0,Math.min(e,o.options.count-1)),o.cancelScrollToIndex(),"smooth"===i&&o.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size.");var l=o.getOffsetForIndex(e,void 0===r?"auto":r),a=l[0],u=l[1];o._scrollToOffset(a,{adjustments:void 0,behavior:i}),"smooth"!==i&&o.isDynamicMode()&&(o.scrollToIndexTimeoutId=setTimeout(function(){o.scrollToIndexTimeoutId=null,o.measureElementCache.has(o.options.getItemKey(e))&&1>Math.abs(o.getOffsetForIndex(e,u)[0]-o.scrollOffset)||o.scrollToIndex(e,{align:u,behavior:i})}))},this.scrollBy=function(e,t){var n=(void 0===t?{}:t).behavior;o.cancelScrollToIndex(),"smooth"===n&&o.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),o._scrollToOffset(o.scrollOffset+e,{adjustments:void 0,behavior:n})},this.getTotalSize=function(){var e;return((null==(e=o.getMeasurements()[o.options.count-1])?void 0:e.end)||o.options.paddingStart)-o.options.scrollMargin+o.options.paddingEnd},this._scrollToOffset=function(e,t){var n=t.adjustments,r=t.behavior;o.options.scrollToFn(e,{behavior:r,adjustments:n},o)},this.measure=function(){o.itemSizeCache=new Map,o.notify(!1)},this.setOptions(e),this.scrollRect=this.options.initialRect,this.scrollOffset=this.options.initialOffset,this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(function(e){o.itemSizeCache.set(e.key,e.size)}),this.maybeNotify()},O=function(e,t,n,o){for(;e<=t;){var r=(e+t)/2|0,i=n(r);if(io))return r;t=r-1}}return e>0?e-1:0},I="undefined"!=typeof document?u.useLayoutEffect:u.useEffect,y=n(78138),S=n(62963),R=n(90945),T=n(13323),E=n(17684),C=n(64518),k=n(31948),M=n(32539),w=n(40048),z=n(80004),P=n(93689),F=n(15518),D=n(40293);function N(e,t){let n=(0,u.useRef)([]),o=(0,T.z)(e);(0,u.useEffect)(()=>{let e=[...n.current];for(let[r,i]of t.entries())if(n.current[r]!==i){let r=o(t,e);return n.current=t,r}},[o,...t])}var A=n(38198),_=n(37863);let L=[];!function(e){function t(){"loading"!==document.readyState&&(e(),document.removeEventListener("DOMContentLoaded",t))}"undefined"!=typeof window&&"undefined"!=typeof document&&(document.addEventListener("DOMContentLoaded",t),t())}(()=>{function e(e){e.target instanceof HTMLElement&&e.target!==document.body&&L[0]!==e.target&&(L.unshift(e.target),(L=L.filter(e=>null!=e&&e.isConnected)).splice(10))}window.addEventListener("click",e,{capture:!0}),window.addEventListener("mousedown",e,{capture:!0}),window.addEventListener("focus",e,{capture:!0}),document.body.addEventListener("click",e,{capture:!0}),document.body.addEventListener("mousedown",e,{capture:!0}),document.body.addEventListener("focus",e,{capture:!0})});var V=n(47634),j=n(34778),q=n(16015),B=n(37105),K=n(56314),U=n(24536),Z=n(52108),Y=n(27847),G=n(37388),H=n(40257),W=((o=W||{})[o.Open=0]="Open",o[o.Closed=1]="Closed",o),J=((r=J||{})[r.Single=0]="Single",r[r.Multi=1]="Multi",r),Q=((i=Q||{})[i.Pointer=0]="Pointer",i[i.Focus=1]="Focus",i[i.Other=2]="Other",i),X=((l=X||{})[l.OpenCombobox=0]="OpenCombobox",l[l.CloseCombobox=1]="CloseCombobox",l[l.GoToOption=2]="GoToOption",l[l.RegisterOption=3]="RegisterOption",l[l.UnregisterOption=4]="UnregisterOption",l[l.RegisterLabel=5]="RegisterLabel",l[l.SetActivationTrigger=6]="SetActivationTrigger",l[l.UpdateVirtualOptions=7]="UpdateVirtualOptions",l);function $(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>e,n=null!==e.activeOptionIndex?e.options[e.activeOptionIndex]:null,o=t(e.options.slice()),r=o.length>0&&null!==o[0].dataRef.current.order?o.sort((e,t)=>e.dataRef.current.order-t.dataRef.current.order):(0,B.z2)(o,e=>e.dataRef.current.domRef.current),i=n?r.indexOf(n):null;return -1===i&&(i=null),{options:r,activeOptionIndex:i}}let ee={1(e){var t;return null!=(t=e.dataRef.current)&&t.disabled||1===e.comboboxState?e:{...e,activeOptionIndex:null,comboboxState:1}},0(e){var t,n;if(null!=(t=e.dataRef.current)&&t.disabled||0===e.comboboxState)return e;if(null!=(n=e.dataRef.current)&&n.value){let t=e.dataRef.current.calculateIndex(e.dataRef.current.value);if(-1!==t)return{...e,activeOptionIndex:t,comboboxState:0}}return{...e,comboboxState:0}},2(e,t){var n,o,r,i,l;if(null!=(n=e.dataRef.current)&&n.disabled||null!=(o=e.dataRef.current)&&o.optionsRef.current&&!(null!=(r=e.dataRef.current)&&r.optionsPropsRef.current.static)&&1===e.comboboxState)return e;if(e.virtual){let n=t.focus===j.T.Specific?t.idx:(0,j.d)(t,{resolveItems:()=>e.virtual.options,resolveActiveIndex:()=>{var t,n;return null!=(n=null!=(t=e.activeOptionIndex)?t:e.virtual.options.findIndex(t=>!e.virtual.disabled(t)))?n:null},resolveDisabled:e.virtual.disabled,resolveId(){throw Error("Function not implemented.")}}),o=null!=(i=t.trigger)?i:2;return e.activeOptionIndex===n&&e.activationTrigger===o?e:{...e,activeOptionIndex:n,activationTrigger:o}}let a=$(e);if(null===a.activeOptionIndex){let e=a.options.findIndex(e=>!e.dataRef.current.disabled);-1!==e&&(a.activeOptionIndex=e)}let u=t.focus===j.T.Specific?t.idx:(0,j.d)(t,{resolveItems:()=>a.options,resolveActiveIndex:()=>a.activeOptionIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.current.disabled}),s=null!=(l=t.trigger)?l:2;return e.activeOptionIndex===u&&e.activationTrigger===s?e:{...e,...a,activeOptionIndex:u,activationTrigger:s}},3:(e,t)=>{var n,o,r;if(null!=(n=e.dataRef.current)&&n.virtual)return{...e,options:[...e.options,t.payload]};let i=t.payload,l=$(e,e=>(e.push(i),e));null===e.activeOptionIndex&&null!=(o=e.dataRef.current)&&o.isSelected(t.payload.dataRef.current.value)&&(l.activeOptionIndex=l.options.indexOf(i));let a={...e,...l,activationTrigger:2};return null!=(r=e.dataRef.current)&&r.__demoMode&&void 0===e.dataRef.current.value&&(a.activeOptionIndex=0),a},4:(e,t)=>{var n;if(null!=(n=e.dataRef.current)&&n.virtual)return{...e,options:e.options.filter(e=>e.id!==t.id)};let o=$(e,e=>{let n=e.findIndex(e=>e.id===t.id);return -1!==n&&e.splice(n,1),e});return{...e,...o,activationTrigger:2}},5:(e,t)=>e.labelId===t.id?e:{...e,labelId:t.id},6:(e,t)=>e.activationTrigger===t.trigger?e:{...e,activationTrigger:t.trigger},7:(e,t)=>{var n;if((null==(n=e.virtual)?void 0:n.options)===t.options)return e;let o=e.activeOptionIndex;if(null!==e.activeOptionIndex){let n=t.options.indexOf(e.virtual.options[e.activeOptionIndex]);o=-1!==n?n:null}return{...e,activeOptionIndex:o,virtual:Object.assign({},e.virtual,{options:t.options})}}},et=(0,u.createContext)(null);function en(e){let t=(0,u.useContext)(et);if(null===t){let t=Error("<".concat(e," /> is missing a parent component."));throw Error.captureStackTrace&&Error.captureStackTrace(t,en),t}return t}et.displayName="ComboboxActionsContext";let eo=(0,u.createContext)(null);function er(e){var t,n,o,r,i,l;let c=el("VirtualProvider"),[d,f]=(0,u.useMemo)(()=>{let e=c.optionsRef.current;if(!e)return[0,0];let t=window.getComputedStyle(e);return[parseFloat(t.paddingBlockStart||t.paddingTop),parseFloat(t.paddingBlockEnd||t.paddingBottom)]},[c.optionsRef.current]),p=(n={scrollPaddingStart:d,scrollPaddingEnd:f,count:c.virtual.options.length,estimateSize:()=>40,getScrollElement(){var e;return null!=(e=c.optionsRef.current)?e:null},overscan:12},o=a({observeElementRect:v,observeElementOffset:b,scrollToFn:h},n),r=u.useReducer(function(){return{}},{})[1],i=a({},o,{onChange:function(e,t){t?(0,s.flushSync)(r):r(),null==o.onChange||o.onChange(e,t)}}),(l=u.useState(function(){return new x(i)})[0]).setOptions(i),u.useEffect(function(){return l._didMount()},[]),I(function(){return l._willUpdate()}),l),[m,g]=(0,u.useState)(0);return(0,C.e)(()=>{g(e=>e+1)},[null==(t=c.virtual)?void 0:t.options]),u.createElement(eo.Provider,{value:p},u.createElement("div",{style:{position:"relative",width:"100%",height:"".concat(p.getTotalSize(),"px")},ref:e=>{e&&(void 0===H||void 0===H.env.JEST_WORKER_ID)&&0!==c.activationTrigger&&null!==c.activeOptionIndex&&c.virtual.options.length>c.activeOptionIndex&&p.scrollToIndex(c.activeOptionIndex)}},p.getVirtualItems().map(t=>{var n;return u.createElement(u.Fragment,{key:t.key},u.cloneElement(null==(n=e.children)?void 0:n.call(e,{option:c.virtual.options[t.index],open:0===c.comboboxState}),{key:"".concat(m,"-").concat(t.key),"data-index":t.index,"aria-setsize":c.virtual.options.length,"aria-posinset":t.index+1,style:{position:"absolute",top:0,left:0,transform:"translateY(".concat(t.start,"px)"),overflowAnchor:"none"}}))})))}let ei=(0,u.createContext)(null);function el(e){let t=(0,u.useContext)(ei);if(null===t){let t=Error("<".concat(e," /> is missing a parent component."));throw Error.captureStackTrace&&Error.captureStackTrace(t,el),t}return t}function ea(e,t){return(0,U.E)(t.type,ee,e,t)}ei.displayName="ComboboxDataContext";let eu=u.Fragment,es=Y.AN.RenderStrategy|Y.AN.Static,ec=(0,Y.yV)(function(e,t){let{value:n,defaultValue:o,onChange:r,form:i,name:l,by:a=null,disabled:s=!1,__demoMode:c=!1,nullable:d=!1,multiple:f=!1,immediate:p=!1,virtual:m=null,...v}=e,[b=f?[]:void 0,g]=(0,S.q)(n,r,o),[h,x]=(0,u.useReducer)(ea,{dataRef:(0,u.createRef)(),comboboxState:c?0:1,options:[],virtual:null,activeOptionIndex:null,activationTrigger:2,labelId:null}),O=(0,u.useRef)(!1),I=(0,u.useRef)({static:!1,hold:!1}),y=(0,u.useRef)(null),E=(0,u.useRef)(null),k=(0,u.useRef)(null),w=(0,u.useRef)(null),z=(0,T.z)("string"==typeof a?(e,t)=>(null==e?void 0:e[a])===(null==t?void 0:t[a]):null!=a?a:(e,t)=>e===t),P=(0,T.z)(e=>h.options.findIndex(t=>z(t.dataRef.current.value,e))),F=(0,u.useCallback)(e=>(0,U.E)(N.mode,{1:()=>b.some(t=>z(t,e)),0:()=>z(b,e)}),[b]),D=(0,T.z)(e=>h.activeOptionIndex===P(e)),N=(0,u.useMemo)(()=>({...h,immediate:!1,optionsPropsRef:I,labelRef:y,inputRef:E,buttonRef:k,optionsRef:w,value:b,defaultValue:o,disabled:s,mode:f?1:0,virtual:h.virtual,get activeOptionIndex(){if(O.current&&null===h.activeOptionIndex&&h.options.length>0){let e=h.options.findIndex(e=>!e.dataRef.current.disabled);if(-1!==e)return e}return h.activeOptionIndex},calculateIndex:P,compare:z,isSelected:F,isActive:D,nullable:d,__demoMode:c}),[b,o,s,f,d,c,h,null]);(0,C.e)(()=>{},[null,void 0]),(0,C.e)(()=>{h.dataRef.current=N},[N]),(0,M.O)([N.buttonRef,N.inputRef,N.optionsRef],()=>Q.closeCombobox(),0===N.comboboxState);let L=(0,u.useMemo)(()=>{var e,t,n;return{open:0===N.comboboxState,disabled:s,activeIndex:N.activeOptionIndex,activeOption:null===N.activeOptionIndex?null:N.virtual?N.virtual.options[null!=(e=N.activeOptionIndex)?e:0]:null!=(n=null==(t=N.options[N.activeOptionIndex])?void 0:t.dataRef.current.value)?n:null,value:b}},[N,s,b]),V=(0,T.z)(()=>{if(null!==N.activeOptionIndex){if(N.virtual)W(N.virtual.options[N.activeOptionIndex]);else{let{dataRef:e}=N.options[N.activeOptionIndex];W(e.current.value)}Q.goToOption(j.T.Specific,N.activeOptionIndex)}}),q=(0,T.z)(()=>{x({type:0}),O.current=!0}),B=(0,T.z)(()=>{x({type:1}),O.current=!1}),Z=(0,T.z)((e,t,n)=>(O.current=!1,e===j.T.Specific?x({type:2,focus:j.T.Specific,idx:t,trigger:n}):x({type:2,focus:e,trigger:n}))),G=(0,T.z)((e,t)=>(x({type:3,payload:{id:e,dataRef:t}}),()=>{N.isActive(t.current.value)&&(O.current=!0),x({type:4,id:e})})),H=(0,T.z)(e=>(x({type:5,id:e}),()=>x({type:5,id:null}))),W=(0,T.z)(e=>(0,U.E)(N.mode,{0:()=>null==g?void 0:g(e),1(){let t=N.value.slice(),n=t.findIndex(t=>z(t,e));return -1===n?t.push(e):t.splice(n,1),null==g?void 0:g(t)}})),J=(0,T.z)(e=>{x({type:6,trigger:e})}),Q=(0,u.useMemo)(()=>({onChange:W,registerOption:G,registerLabel:H,goToOption:Z,closeCombobox:B,openCombobox:q,setActivationTrigger:J,selectActiveOption:V}),[]),X=(0,u.useRef)(null),$=(0,R.G)();return(0,u.useEffect)(()=>{X.current&&void 0!==o&&$.addEventListener(X.current,"reset",()=>{null==g||g(o)})},[X,g]),u.createElement(et.Provider,{value:Q},u.createElement(ei.Provider,{value:N},u.createElement(_.up,{value:(0,U.E)(N.comboboxState,{0:_.ZM.Open,1:_.ZM.Closed})},null!=l&&null!=b&&(0,K.t)({[l]:b}).map((e,t)=>{let[n,o]=e;return u.createElement(A._,{features:A.A.Hidden,ref:0===t?e=>{var t;X.current=null!=(t=null==e?void 0:e.closest("form"))?t:null}:void 0,...(0,Y.oA)({key:n,as:"input",type:"hidden",hidden:!0,readOnly:!0,form:i,name:n,value:o})})}),(0,Y.sY)({ourProps:null===t?{}:{ref:t},theirProps:v,slot:L,defaultTag:eu,name:"Combobox"}))))}),ed=(0,Y.yV)(function(e,t){var n;let o=el("Combobox.Button"),r=en("Combobox.Button"),i=(0,P.T)(o.buttonRef,t),l=(0,E.M)(),{id:a="headlessui-combobox-button-".concat(l),...s}=e,c=(0,R.G)(),d=(0,T.z)(e=>{switch(e.key){case G.R.ArrowDown:return e.preventDefault(),e.stopPropagation(),1===o.comboboxState&&r.openCombobox(),c.nextFrame(()=>{var e;return null==(e=o.inputRef.current)?void 0:e.focus({preventScroll:!0})});case G.R.ArrowUp:return e.preventDefault(),e.stopPropagation(),1===o.comboboxState&&(r.openCombobox(),c.nextFrame(()=>{o.value||r.goToOption(j.T.Last)})),c.nextFrame(()=>{var e;return null==(e=o.inputRef.current)?void 0:e.focus({preventScroll:!0})});case G.R.Escape:return 0!==o.comboboxState?void 0:(e.preventDefault(),o.optionsRef.current&&!o.optionsPropsRef.current.static&&e.stopPropagation(),r.closeCombobox(),c.nextFrame(()=>{var e;return null==(e=o.inputRef.current)?void 0:e.focus({preventScroll:!0})}));default:return}}),f=(0,T.z)(e=>{if((0,V.P)(e.currentTarget))return e.preventDefault();0===o.comboboxState?r.closeCombobox():(e.preventDefault(),r.openCombobox()),c.nextFrame(()=>{var e;return null==(e=o.inputRef.current)?void 0:e.focus({preventScroll:!0})})}),p=(0,y.v)(()=>{if(o.labelId)return[o.labelId,a].join(" ")},[o.labelId,a]),m=(0,u.useMemo)(()=>({open:0===o.comboboxState,disabled:o.disabled,value:o.value}),[o]),v={ref:i,id:a,type:(0,z.f)(e,o.buttonRef),tabIndex:-1,"aria-haspopup":"listbox","aria-controls":null==(n=o.optionsRef.current)?void 0:n.id,"aria-expanded":0===o.comboboxState,"aria-labelledby":p,disabled:o.disabled,onClick:f,onKeyDown:d};return(0,Y.sY)({ourProps:v,theirProps:s,slot:m,defaultTag:"button",name:"Combobox.Button"})}),ef=Object.assign(ec,{Input:(0,Y.yV)(function(e,t){var n,o,r,i,l,a;let s=(0,E.M)(),{id:c="headlessui-combobox-input-".concat(s),onChange:d,displayValue:f,type:p="text",...m}=e,v=el("Combobox.Input"),b=en("Combobox.Input"),g=(0,P.T)(v.inputRef,t),h=(0,w.i)(v.inputRef),x=(0,u.useRef)(!1),O=(0,R.G)(),I=(0,T.z)(()=>{b.onChange(null),v.optionsRef.current&&(v.optionsRef.current.scrollTop=0),b.goToOption(j.T.Nothing)});N((e,t)=>{let[n,o]=e,[r,i]=t;if(x.current)return;let l=v.inputRef.current;l&&((0===i&&1===o||n!==r)&&(l.value=n),requestAnimationFrame(()=>{if(x.current||!l||(null==h?void 0:h.activeElement)!==l)return;let{selectionStart:e,selectionEnd:t}=l;0===Math.abs((null!=t?t:0)-(null!=e?e:0))&&0===e&&l.setSelectionRange(l.value.length,l.value.length)}))},["function"==typeof f&&void 0!==v.value?null!=(a=f(v.value))?a:"":"string"==typeof v.value?v.value:"",v.comboboxState,h]),N((e,t)=>{let[n]=e,[o]=t;if(0===n&&1===o){if(x.current)return;let e=v.inputRef.current;if(!e)return;let t=e.value,{selectionStart:n,selectionEnd:o,selectionDirection:r}=e;e.value="",e.value=t,null!==r?e.setSelectionRange(n,o,r):e.setSelectionRange(n,o)}},[v.comboboxState]);let S=(0,u.useRef)(!1),C=(0,T.z)(()=>{S.current=!0}),k=(0,T.z)(()=>{O.nextFrame(()=>{S.current=!1})}),M=(0,T.z)(e=>{switch(x.current=!0,e.key){case G.R.Enter:if(x.current=!1,0!==v.comboboxState||S.current)return;if(e.preventDefault(),e.stopPropagation(),null===v.activeOptionIndex){b.closeCombobox();return}b.selectActiveOption(),0===v.mode&&b.closeCombobox();break;case G.R.ArrowDown:return x.current=!1,e.preventDefault(),e.stopPropagation(),(0,U.E)(v.comboboxState,{0:()=>b.goToOption(j.T.Next),1:()=>b.openCombobox()});case G.R.ArrowUp:return x.current=!1,e.preventDefault(),e.stopPropagation(),(0,U.E)(v.comboboxState,{0:()=>b.goToOption(j.T.Previous),1:()=>{b.openCombobox(),O.nextFrame(()=>{v.value||b.goToOption(j.T.Last)})}});case G.R.Home:if(e.shiftKey)break;return x.current=!1,e.preventDefault(),e.stopPropagation(),b.goToOption(j.T.First);case G.R.PageUp:return x.current=!1,e.preventDefault(),e.stopPropagation(),b.goToOption(j.T.First);case G.R.End:if(e.shiftKey)break;return x.current=!1,e.preventDefault(),e.stopPropagation(),b.goToOption(j.T.Last);case G.R.PageDown:return x.current=!1,e.preventDefault(),e.stopPropagation(),b.goToOption(j.T.Last);case G.R.Escape:return x.current=!1,0!==v.comboboxState?void 0:(e.preventDefault(),v.optionsRef.current&&!v.optionsPropsRef.current.static&&e.stopPropagation(),v.nullable&&0===v.mode&&null===v.value&&I(),b.closeCombobox());case G.R.Tab:if(x.current=!1,0!==v.comboboxState)return;0===v.mode&&1!==v.activationTrigger&&b.selectActiveOption(),b.closeCombobox()}}),z=(0,T.z)(e=>{null==d||d(e),v.nullable&&0===v.mode&&""===e.target.value&&I(),b.openCombobox()}),F=(0,T.z)(e=>{var t,n,o;let r=null!=(t=e.relatedTarget)?t:L.find(t=>t!==e.currentTarget);if(x.current=!1,!(null!=(n=v.optionsRef.current)&&n.contains(r))&&!(null!=(o=v.buttonRef.current)&&o.contains(r))&&0===v.comboboxState)return e.preventDefault(),0===v.mode&&(v.nullable&&null===v.value?I():1!==v.activationTrigger&&b.selectActiveOption()),b.closeCombobox()}),D=(0,T.z)(e=>{var t,n,o;let r=null!=(t=e.relatedTarget)?t:L.find(t=>t!==e.currentTarget);null!=(n=v.buttonRef.current)&&n.contains(r)||null!=(o=v.optionsRef.current)&&o.contains(r)||v.disabled||v.immediate&&0!==v.comboboxState&&(b.openCombobox(),O.nextFrame(()=>{b.setActivationTrigger(1)}))}),A=(0,y.v)(()=>{if(v.labelId)return[v.labelId].join(" ")},[v.labelId]),_=(0,u.useMemo)(()=>({open:0===v.comboboxState,disabled:v.disabled}),[v]),V={ref:g,id:c,role:"combobox",type:p,"aria-controls":null==(n=v.optionsRef.current)?void 0:n.id,"aria-expanded":0===v.comboboxState,"aria-activedescendant":null===v.activeOptionIndex?void 0:v.virtual?null==(o=v.options.find(e=>{var t;return!(null!=(t=v.virtual)&&t.disabled(e.dataRef.current.value))&&v.compare(e.dataRef.current.value,v.virtual.options[v.activeOptionIndex])}))?void 0:o.id:null==(r=v.options[v.activeOptionIndex])?void 0:r.id,"aria-labelledby":A,"aria-autocomplete":"list",defaultValue:null!=(l=null!=(i=e.defaultValue)?i:void 0!==v.defaultValue?null==f?void 0:f(v.defaultValue):null)?l:v.defaultValue,disabled:v.disabled,onCompositionStart:C,onCompositionEnd:k,onKeyDown:M,onChange:z,onFocus:D,onBlur:F};return(0,Y.sY)({ourProps:V,theirProps:m,slot:_,defaultTag:"input",name:"Combobox.Input"})}),Button:ed,Label:(0,Y.yV)(function(e,t){let n=(0,E.M)(),{id:o="headlessui-combobox-label-".concat(n),...r}=e,i=el("Combobox.Label"),l=en("Combobox.Label"),a=(0,P.T)(i.labelRef,t);(0,C.e)(()=>l.registerLabel(o),[o]);let s=(0,T.z)(()=>{var e;return null==(e=i.inputRef.current)?void 0:e.focus({preventScroll:!0})}),c=(0,u.useMemo)(()=>({open:0===i.comboboxState,disabled:i.disabled}),[i]);return(0,Y.sY)({ourProps:{ref:a,id:o,onClick:s},theirProps:r,slot:c,defaultTag:"label",name:"Combobox.Label"})}),Options:(0,Y.yV)(function(e,t){let n=(0,E.M)(),{id:o="headlessui-combobox-options-".concat(n),hold:r=!1,...i}=e,l=el("Combobox.Options"),a=(0,P.T)(l.optionsRef,t),s=(0,_.oJ)(),c=null!==s?(s&_.ZM.Open)===_.ZM.Open:0===l.comboboxState;(0,C.e)(()=>{var t;l.optionsPropsRef.current.static=null!=(t=e.static)&&t},[l.optionsPropsRef,e.static]),(0,C.e)(()=>{l.optionsPropsRef.current.hold=r},[l.optionsPropsRef,r]),function(e){let{container:t,accept:n,walk:o,enabled:r=!0}=e,i=(0,u.useRef)(n),l=(0,u.useRef)(o);(0,u.useEffect)(()=>{i.current=n,l.current=o},[n,o]),(0,C.e)(()=>{if(!t||!r)return;let e=(0,D.r)(t);if(!e)return;let n=i.current,o=l.current,a=Object.assign(e=>n(e),{acceptNode:n}),u=e.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,a,!1);for(;u.nextNode();)o(u.currentNode)},[t,r,i,l])}({container:l.optionsRef.current,enabled:0===l.comboboxState,accept:e=>"option"===e.getAttribute("role")?NodeFilter.FILTER_REJECT:e.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT,walk(e){e.setAttribute("role","none")}});let d=(0,y.v)(()=>{var e,t;return null!=(t=l.labelId)?t:null==(e=l.buttonRef.current)?void 0:e.id},[l.labelId,l.buttonRef.current]),f=(0,u.useMemo)(()=>({open:0===l.comboboxState,option:void 0}),[l]),p={"aria-labelledby":d,role:"listbox","aria-multiselectable":1===l.mode||void 0,id:o,ref:a};return l.virtual&&0===l.comboboxState&&Object.assign(i,{children:u.createElement(er,null,i.children)}),(0,Y.sY)({ourProps:p,theirProps:i,slot:f,defaultTag:"ul",features:es,visible:c,name:"Combobox.Options"})}),Option:(0,Y.yV)(function(e,t){var n;let o=(0,E.M)(),{id:r="headlessui-combobox-option-".concat(o),disabled:i=!1,value:l,order:a=null,...s}=e,c=el("Combobox.Option"),d=en("Combobox.Option"),f=c.virtual?c.activeOptionIndex===c.calculateIndex(l):null!==c.activeOptionIndex&&(null==(n=c.options[c.activeOptionIndex])?void 0:n.id)===r,p=c.isSelected(l),m=(0,u.useRef)(null),v=(0,k.E)({disabled:i,value:l,domRef:m,order:a}),b=(0,u.useContext)(eo),g=(0,P.T)(t,m,b?b.measureElement:null),h=(0,T.z)(()=>d.onChange(l));(0,C.e)(()=>d.registerOption(r,v),[v,r]);let x=(0,u.useRef)(!(c.virtual||c.__demoMode));(0,C.e)(()=>{if(!c.virtual||!c.__demoMode)return;let e=(0,q.k)();return e.requestAnimationFrame(()=>{x.current=!0}),e.dispose},[c.virtual,c.__demoMode]),(0,C.e)(()=>{if(!x.current||0!==c.comboboxState||!f||0===c.activationTrigger)return;let e=(0,q.k)();return e.requestAnimationFrame(()=>{var e,t;null==(t=null==(e=m.current)?void 0:e.scrollIntoView)||t.call(e,{block:"nearest"})}),e.dispose},[m,f,c.comboboxState,c.activationTrigger,c.activeOptionIndex]);let O=(0,T.z)(e=>{var t;if(i||null!=(t=c.virtual)&&t.disabled(l))return e.preventDefault();h(),(0,Z.tq)()||requestAnimationFrame(()=>{var e;return null==(e=c.inputRef.current)?void 0:e.focus({preventScroll:!0})}),0===c.mode&&requestAnimationFrame(()=>d.closeCombobox())}),I=(0,T.z)(()=>{var e;if(i||null!=(e=c.virtual)&&e.disabled(l))return d.goToOption(j.T.Nothing);let t=c.calculateIndex(l);d.goToOption(j.T.Specific,t)}),y=(0,F.g)(),S=(0,T.z)(e=>y.update(e)),R=(0,T.z)(e=>{var t;if(!y.wasMoved(e)||i||null!=(t=c.virtual)&&t.disabled(l)||f)return;let n=c.calculateIndex(l);d.goToOption(j.T.Specific,n,0)}),M=(0,T.z)(e=>{var t;y.wasMoved(e)&&(i||null!=(t=c.virtual)&&t.disabled(l)||f&&(c.optionsPropsRef.current.hold||d.goToOption(j.T.Nothing)))}),w=(0,u.useMemo)(()=>({active:f,selected:p,disabled:i}),[f,p,i]);return(0,Y.sY)({ourProps:{id:r,ref:g,role:"option",tabIndex:!0===i?void 0:-1,"aria-disabled":!0===i||void 0,"aria-selected":p,disabled:void 0,onClick:O,onFocus:I,onPointerEnter:S,onMouseEnter:S,onPointerMove:R,onMouseMove:R,onPointerLeave:M,onMouseLeave:M},theirProps:s,slot:w,defaultTag:"li",name:"Combobox.Option"})})})}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/1264-2979d95e0b56a75c.js b/litellm/proxy/_experimental/out/_next/static/chunks/1264-2979d95e0b56a75c.js new file mode 100644 index 00000000000..fd249f9de97 --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/1264-2979d95e0b56a75c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1264],{87045:function(t,e,s){s.d(e,{j:function(){return n}});var i=s(24112),r=s(45345),n=new class extends i.l{#t;#e;#s;constructor(){super(),this.#s=t=>{if(!r.sk&&window.addEventListener){let e=()=>t();return window.addEventListener("visibilitychange",e,!1),()=>{window.removeEventListener("visibilitychange",e)}}}}onSubscribe(){this.#e||this.setEventListener(this.#s)}onUnsubscribe(){this.hasListeners()||(this.#e?.(),this.#e=void 0)}setEventListener(t){this.#s=t,this.#e?.(),this.#e=t(t=>{"boolean"==typeof t?this.setFocused(t):this.onFocus()})}setFocused(t){this.#t!==t&&(this.#t=t,this.onFocus())}onFocus(){let t=this.isFocused();this.listeners.forEach(e=>{e(t)})}isFocused(){return"boolean"==typeof this.#t?this.#t:globalThis.document?.visibilityState!=="hidden"}}},2894:function(t,e,s){s.d(e,{R:function(){return u},m:function(){return a}});var i=s(18238),r=s(7989),n=s(11255),a=class extends r.F{#i;#r;#n;constructor(t){super(),this.mutationId=t.mutationId,this.#r=t.mutationCache,this.#i=[],this.state=t.state||u(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){this.#i.includes(t)||(this.#i.push(t),this.clearGcTimeout(),this.#r.notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){this.#i=this.#i.filter(e=>e!==t),this.scheduleGc(),this.#r.notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){this.#i.length||("pending"===this.state.status?this.scheduleGc():this.#r.remove(this))}continue(){return this.#n?.continue()??this.execute(this.state.variables)}async execute(t){this.#n=(0,n.Mz)({fn:()=>this.options.mutationFn?this.options.mutationFn(t):Promise.reject(Error("No mutationFn found")),onFail:(t,e)=>{this.#a({type:"failed",failureCount:t,error:e})},onPause:()=>{this.#a({type:"pause"})},onContinue:()=>{this.#a({type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#r.canRun(this)});let e="pending"===this.state.status,s=!this.#n.canStart();try{if(!e){this.#a({type:"pending",variables:t,isPaused:s}),await this.#r.config.onMutate?.(t,this);let e=await this.options.onMutate?.(t);e!==this.state.context&&this.#a({type:"pending",context:e,variables:t,isPaused:s})}let i=await this.#n.start();return await this.#r.config.onSuccess?.(i,t,this.state.context,this),await this.options.onSuccess?.(i,t,this.state.context),await this.#r.config.onSettled?.(i,null,this.state.variables,this.state.context,this),await this.options.onSettled?.(i,null,t,this.state.context),this.#a({type:"success",data:i}),i}catch(e){try{throw await this.#r.config.onError?.(e,t,this.state.context,this),await this.options.onError?.(e,t,this.state.context),await this.#r.config.onSettled?.(void 0,e,this.state.variables,this.state.context,this),await this.options.onSettled?.(void 0,e,t,this.state.context),e}finally{this.#a({type:"error",error:e})}}finally{this.#r.runNext(this)}}#a(t){this.state=(e=>{switch(t.type){case"failed":return{...e,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...e,isPaused:!0};case"continue":return{...e,isPaused:!1};case"pending":return{...e,context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:t.isPaused,status:"pending",variables:t.variables,submittedAt:Date.now()};case"success":return{...e,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...e,data:void 0,error:t.error,failureCount:e.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}})(this.state),i.V.batch(()=>{this.#i.forEach(e=>{e.onMutationUpdate(t)}),this.#r.notify({mutation:this,type:"updated",action:t})})}};function u(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}},18238:function(t,e,s){s.d(e,{V:function(){return i}});var i=function(){let t=[],e=0,s=t=>{t()},i=t=>{t()},r=t=>setTimeout(t,0),n=i=>{e?t.push(i):r(()=>{s(i)})},a=()=>{let e=t;t=[],e.length&&r(()=>{i(()=>{e.forEach(t=>{s(t)})})})};return{batch:t=>{let s;e++;try{s=t()}finally{--e||a()}return s},batchCalls:t=>(...e)=>{n(()=>{t(...e)})},schedule:n,setNotifyFunction:t=>{s=t},setBatchNotifyFunction:t=>{i=t},setScheduler:t=>{r=t}}}()},57853:function(t,e,s){s.d(e,{N:function(){return n}});var i=s(24112),r=s(45345),n=new class extends i.l{#u=!0;#e;#s;constructor(){super(),this.#s=t=>{if(!r.sk&&window.addEventListener){let e=()=>t(!0),s=()=>t(!1);return window.addEventListener("online",e,!1),window.addEventListener("offline",s,!1),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",s)}}}}onSubscribe(){this.#e||this.setEventListener(this.#s)}onUnsubscribe(){this.hasListeners()||(this.#e?.(),this.#e=void 0)}setEventListener(t){this.#s=t,this.#e?.(),this.#e=t(this.setOnline.bind(this))}setOnline(t){this.#u!==t&&(this.#u=t,this.listeners.forEach(e=>{e(t)}))}isOnline(){return this.#u}}},21733:function(t,e,s){s.d(e,{A:function(){return u},z:function(){return o}});var i=s(45345),r=s(18238),n=s(11255),a=s(7989),u=class extends a.F{#o;#h;#c;#n;#l;#d;constructor(t){super(),this.#d=!1,this.#l=t.defaultOptions,this.setOptions(t.options),this.observers=[],this.#c=t.cache,this.queryKey=t.queryKey,this.queryHash=t.queryHash,this.#o=function(t){let e="function"==typeof t.initialData?t.initialData():t.initialData,s=void 0!==e,i=s?"function"==typeof t.initialDataUpdatedAt?t.initialDataUpdatedAt():t.initialDataUpdatedAt:0;return{data:e,dataUpdateCount:0,dataUpdatedAt:s?i??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:s?"success":"pending",fetchStatus:"idle"}}(this.options),this.state=t.state??this.#o,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#n?.promise}setOptions(t){this.options={...this.#l,...t},this.updateGcTime(this.options.gcTime)}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.#c.remove(this)}setData(t,e){let s=(0,i.oE)(this.state.data,t,this.options);return this.#a({data:s,type:"success",dataUpdatedAt:e?.updatedAt,manual:e?.manual}),s}setState(t,e){this.#a({type:"setState",state:t,setStateOptions:e})}cancel(t){let e=this.#n?.promise;return this.#n?.cancel(t),e?e.then(i.ZT).catch(i.ZT):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#o)}isActive(){return this.observers.some(t=>!1!==(0,i.Nc)(t.options.enabled,this))}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===i.CN||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStale(){return!!this.state.isInvalidated||(this.getObserversCount()>0?this.observers.some(t=>t.getCurrentResult().isStale):void 0===this.state.data)}isStaleByTime(t=0){return this.state.isInvalidated||void 0===this.state.data||!(0,i.Kp)(this.state.dataUpdatedAt,t)}onFocus(){let t=this.observers.find(t=>t.shouldFetchOnWindowFocus());t?.refetch({cancelRefetch:!1}),this.#n?.continue()}onOnline(){let t=this.observers.find(t=>t.shouldFetchOnReconnect());t?.refetch({cancelRefetch:!1}),this.#n?.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),this.#c.notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){this.observers.includes(t)&&(this.observers=this.observers.filter(e=>e!==t),this.observers.length||(this.#n&&(this.#d?this.#n.cancel({revert:!0}):this.#n.cancelRetry()),this.scheduleGc()),this.#c.notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#a({type:"invalidate"})}fetch(t,e){if("idle"!==this.state.fetchStatus){if(void 0!==this.state.data&&e?.cancelRefetch)this.cancel({silent:!0});else if(this.#n)return this.#n.continueRetry(),this.#n.promise}if(t&&this.setOptions(t),!this.options.queryFn){let t=this.observers.find(t=>t.options.queryFn);t&&this.setOptions(t.options)}let s=new AbortController,r=t=>{Object.defineProperty(t,"signal",{enumerable:!0,get:()=>(this.#d=!0,s.signal)})},a={fetchOptions:e,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:()=>{let t=(0,i.cG)(this.options,e),s={queryKey:this.queryKey,meta:this.meta};return(r(s),this.#d=!1,this.options.persister)?this.options.persister(t,s,this):t(s)}};r(a),this.options.behavior?.onFetch(a,this),this.#h=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#a({type:"fetch",meta:a.fetchOptions?.meta});let u=t=>{(0,n.DV)(t)&&t.silent||this.#a({type:"error",error:t}),(0,n.DV)(t)||(this.#c.config.onError?.(t,this),this.#c.config.onSettled?.(this.state.data,t,this)),this.scheduleGc()};return this.#n=(0,n.Mz)({initialPromise:e?.initialPromise,fn:a.fetchFn,abort:s.abort.bind(s),onSuccess:t=>{if(void 0===t){u(Error(`${this.queryHash} data is undefined`));return}try{this.setData(t)}catch(t){u(t);return}this.#c.config.onSuccess?.(t,this),this.#c.config.onSettled?.(t,this.state.error,this),this.scheduleGc()},onError:u,onFail:(t,e)=>{this.#a({type:"failed",failureCount:t,error:e})},onPause:()=>{this.#a({type:"pause"})},onContinue:()=>{this.#a({type:"continue"})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0}),this.#n.start()}#a(t){this.state=(e=>{switch(t.type){case"failed":return{...e,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...e,fetchStatus:"paused"};case"continue":return{...e,fetchStatus:"fetching"};case"fetch":return{...e,...o(e.data,this.options),fetchMeta:t.meta??null};case"success":return{...e,data:t.data,dataUpdateCount:e.dataUpdateCount+1,dataUpdatedAt:t.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":let s=t.error;if((0,n.DV)(s)&&s.revert&&this.#h)return{...this.#h,fetchStatus:"idle"};return{...e,error:s,errorUpdateCount:e.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:e.fetchFailureCount+1,fetchFailureReason:s,fetchStatus:"idle",status:"error"};case"invalidate":return{...e,isInvalidated:!0};case"setState":return{...e,...t.state}}})(this.state),r.V.batch(()=>{this.observers.forEach(t=>{t.onQueryUpdate()}),this.#c.notify({query:this,type:"updated",action:t})})}};function o(t,e){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:(0,n.Kw)(e.networkMode)?"fetching":"paused",...void 0===t&&{error:null,status:"pending"}}}},21623:function(t,e,s){s.d(e,{S:function(){return y}});var i=s(45345),r=s(21733),n=s(18238),a=s(24112),u=class extends a.l{constructor(t={}){super(),this.config=t,this.#f=new Map}#f;build(t,e,s){let n=e.queryKey,a=e.queryHash??(0,i.Rm)(n,e),u=this.get(a);return u||(u=new r.A({cache:this,queryKey:n,queryHash:a,options:t.defaultQueryOptions(e),state:s,defaultOptions:t.getQueryDefaults(n)}),this.add(u)),u}add(t){this.#f.has(t.queryHash)||(this.#f.set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){let e=this.#f.get(t.queryHash);e&&(t.destroy(),e===t&&this.#f.delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){n.V.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return this.#f.get(t)}getAll(){return[...this.#f.values()]}find(t){let e={exact:!0,...t};return this.getAll().find(t=>(0,i._x)(e,t))}findAll(t={}){let e=this.getAll();return Object.keys(t).length>0?e.filter(e=>(0,i._x)(t,e)):e}notify(t){n.V.batch(()=>{this.listeners.forEach(e=>{e(t)})})}onFocus(){n.V.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){n.V.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},o=s(2894),h=class extends a.l{constructor(t={}){super(),this.config=t,this.#p=new Set,this.#y=new Map,this.#m=0}#p;#y;#m;build(t,e,s){let i=new o.m({mutationCache:this,mutationId:++this.#m,options:t.defaultMutationOptions(e),state:s});return this.add(i),i}add(t){this.#p.add(t);let e=c(t);if("string"==typeof e){let s=this.#y.get(e);s?s.push(t):this.#y.set(e,[t])}this.notify({type:"added",mutation:t})}remove(t){if(this.#p.delete(t)){let e=c(t);if("string"==typeof e){let s=this.#y.get(e);if(s){if(s.length>1){let e=s.indexOf(t);-1!==e&&s.splice(e,1)}else s[0]===t&&this.#y.delete(e)}}}this.notify({type:"removed",mutation:t})}canRun(t){let e=c(t);if("string"!=typeof e)return!0;{let s=this.#y.get(e),i=s?.find(t=>"pending"===t.state.status);return!i||i===t}}runNext(t){let e=c(t);if("string"!=typeof e)return Promise.resolve();{let s=this.#y.get(e)?.find(e=>e!==t&&e.state.isPaused);return s?.continue()??Promise.resolve()}}clear(){n.V.batch(()=>{this.#p.forEach(t=>{this.notify({type:"removed",mutation:t})}),this.#p.clear(),this.#y.clear()})}getAll(){return Array.from(this.#p)}find(t){let e={exact:!0,...t};return this.getAll().find(t=>(0,i.X7)(e,t))}findAll(t={}){return this.getAll().filter(e=>(0,i.X7)(t,e))}notify(t){n.V.batch(()=>{this.listeners.forEach(e=>{e(t)})})}resumePausedMutations(){let t=this.getAll().filter(t=>t.state.isPaused);return n.V.batch(()=>Promise.all(t.map(t=>t.continue().catch(i.ZT))))}};function c(t){return t.options.scope?.id}var l=s(87045),d=s(57853);function f(t){return{onFetch:(e,s)=>{let r=e.options,n=e.fetchOptions?.meta?.fetchMore?.direction,a=e.state.data?.pages||[],u=e.state.data?.pageParams||[],o={pages:[],pageParams:[]},h=0,c=async()=>{let s=!1,c=t=>{Object.defineProperty(t,"signal",{enumerable:!0,get:()=>(e.signal.aborted?s=!0:e.signal.addEventListener("abort",()=>{s=!0}),e.signal)})},l=(0,i.cG)(e.options,e.fetchOptions),d=async(t,r,n)=>{if(s)return Promise.reject();if(null==r&&t.pages.length)return Promise.resolve(t);let a={queryKey:e.queryKey,pageParam:r,direction:n?"backward":"forward",meta:e.options.meta};c(a);let u=await l(a),{maxPages:o}=e.options,h=n?i.Ht:i.VX;return{pages:h(t.pages,u,o),pageParams:h(t.pageParams,r,o)}};if(n&&a.length){let t="backward"===n,e={pages:a,pageParams:u},s=(t?function(t,{pages:e,pageParams:s}){return e.length>0?t.getPreviousPageParam?.(e[0],e,s[0],s):void 0}:p)(r,e);o=await d(e,s,t)}else{let e=t??a.length;do{let t=0===h?u[0]??r.initialPageParam:p(r,o);if(h>0&&null==t)break;o=await d(o,t),h++}while(he.options.persister?.(c,{queryKey:e.queryKey,meta:e.options.meta,signal:e.signal},s):e.fetchFn=c}}}function p(t,{pages:e,pageParams:s}){let i=e.length-1;return e.length>0?t.getNextPageParam(e[i],e,s[i],s):void 0}var y=class{#v;#r;#l;#b;#g;#C;#O;#R;constructor(t={}){this.#v=t.queryCache||new u,this.#r=t.mutationCache||new h,this.#l=t.defaultOptions||{},this.#b=new Map,this.#g=new Map,this.#C=0}mount(){this.#C++,1===this.#C&&(this.#O=l.j.subscribe(async t=>{t&&(await this.resumePausedMutations(),this.#v.onFocus())}),this.#R=d.N.subscribe(async t=>{t&&(await this.resumePausedMutations(),this.#v.onOnline())}))}unmount(){this.#C--,0===this.#C&&(this.#O?.(),this.#O=void 0,this.#R?.(),this.#R=void 0)}isFetching(t){return this.#v.findAll({...t,fetchStatus:"fetching"}).length}isMutating(t){return this.#r.findAll({...t,status:"pending"}).length}getQueryData(t){let e=this.defaultQueryOptions({queryKey:t});return this.#v.get(e.queryHash)?.state.data}ensureQueryData(t){let e=this.defaultQueryOptions(t),s=this.#v.build(this,e),r=s.state.data;return void 0===r?this.fetchQuery(t):(t.revalidateIfStale&&s.isStaleByTime((0,i.KC)(e.staleTime,s))&&this.prefetchQuery(e),Promise.resolve(r))}getQueriesData(t){return this.#v.findAll(t).map(({queryKey:t,state:e})=>[t,e.data])}setQueryData(t,e,s){let r=this.defaultQueryOptions({queryKey:t}),n=this.#v.get(r.queryHash),a=n?.state.data,u=(0,i.SE)(e,a);if(void 0!==u)return this.#v.build(this,r).setData(u,{...s,manual:!0})}setQueriesData(t,e,s){return n.V.batch(()=>this.#v.findAll(t).map(({queryKey:t})=>[t,this.setQueryData(t,e,s)]))}getQueryState(t){let e=this.defaultQueryOptions({queryKey:t});return this.#v.get(e.queryHash)?.state}removeQueries(t){let e=this.#v;n.V.batch(()=>{e.findAll(t).forEach(t=>{e.remove(t)})})}resetQueries(t,e){let s=this.#v,i={type:"active",...t};return n.V.batch(()=>(s.findAll(t).forEach(t=>{t.reset()}),this.refetchQueries(i,e)))}cancelQueries(t,e={}){let s={revert:!0,...e};return Promise.all(n.V.batch(()=>this.#v.findAll(t).map(t=>t.cancel(s)))).then(i.ZT).catch(i.ZT)}invalidateQueries(t,e={}){return n.V.batch(()=>{if(this.#v.findAll(t).forEach(t=>{t.invalidate()}),t?.refetchType==="none")return Promise.resolve();let s={...t,type:t?.refetchType??t?.type??"active"};return this.refetchQueries(s,e)})}refetchQueries(t,e={}){let s={...e,cancelRefetch:e.cancelRefetch??!0};return Promise.all(n.V.batch(()=>this.#v.findAll(t).filter(t=>!t.isDisabled()).map(t=>{let e=t.fetch(void 0,s);return s.throwOnError||(e=e.catch(i.ZT)),"paused"===t.state.fetchStatus?Promise.resolve():e}))).then(i.ZT)}fetchQuery(t){let e=this.defaultQueryOptions(t);void 0===e.retry&&(e.retry=!1);let s=this.#v.build(this,e);return s.isStaleByTime((0,i.KC)(e.staleTime,s))?s.fetch(e):Promise.resolve(s.state.data)}prefetchQuery(t){return this.fetchQuery(t).then(i.ZT).catch(i.ZT)}fetchInfiniteQuery(t){return t.behavior=f(t.pages),this.fetchQuery(t)}prefetchInfiniteQuery(t){return this.fetchInfiniteQuery(t).then(i.ZT).catch(i.ZT)}ensureInfiniteQueryData(t){return t.behavior=f(t.pages),this.ensureQueryData(t)}resumePausedMutations(){return d.N.isOnline()?this.#r.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#v}getMutationCache(){return this.#r}getDefaultOptions(){return this.#l}setDefaultOptions(t){this.#l=t}setQueryDefaults(t,e){this.#b.set((0,i.Ym)(t),{queryKey:t,defaultOptions:e})}getQueryDefaults(t){let e=[...this.#b.values()],s={};return e.forEach(e=>{(0,i.to)(t,e.queryKey)&&Object.assign(s,e.defaultOptions)}),s}setMutationDefaults(t,e){this.#g.set((0,i.Ym)(t),{mutationKey:t,defaultOptions:e})}getMutationDefaults(t){let e=[...this.#g.values()],s={};return e.forEach(e=>{(0,i.to)(t,e.mutationKey)&&(s={...s,...e.defaultOptions})}),s}defaultQueryOptions(t){if(t._defaulted)return t;let e={...this.#l.queries,...this.getQueryDefaults(t.queryKey),...t,_defaulted:!0};return e.queryHash||(e.queryHash=(0,i.Rm)(e.queryKey,e)),void 0===e.refetchOnReconnect&&(e.refetchOnReconnect="always"!==e.networkMode),void 0===e.throwOnError&&(e.throwOnError=!!e.suspense),!e.networkMode&&e.persister&&(e.networkMode="offlineFirst"),e.queryFn===i.CN&&(e.enabled=!1),e}defaultMutationOptions(t){return t?._defaulted?t:{...this.#l.mutations,...t?.mutationKey&&this.getMutationDefaults(t.mutationKey),...t,_defaulted:!0}}clear(){this.#v.clear(),this.#r.clear()}}},7989:function(t,e,s){s.d(e,{F:function(){return r}});var i=s(45345),r=class{#w;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),(0,i.PN)(this.gcTime)&&(this.#w=setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(t){this.gcTime=Math.max(this.gcTime||0,t??(i.sk?1/0:3e5))}clearGcTimeout(){this.#w&&(clearTimeout(this.#w),this.#w=void 0)}}},11255:function(t,e,s){s.d(e,{DV:function(){return c},Kw:function(){return o},Mz:function(){return l}});var i=s(87045),r=s(57853),n=s(16803),a=s(45345);function u(t){return Math.min(1e3*2**t,3e4)}function o(t){return(t??"online")!=="online"||r.N.isOnline()}var h=class extends Error{constructor(t){super("CancelledError"),this.revert=t?.revert,this.silent=t?.silent}};function c(t){return t instanceof h}function l(t){let e,s=!1,c=0,l=!1,d=(0,n.O)(),f=()=>i.j.isFocused()&&("always"===t.networkMode||r.N.isOnline())&&t.canRun(),p=()=>o(t.networkMode)&&t.canRun(),y=s=>{l||(l=!0,t.onSuccess?.(s),e?.(),d.resolve(s))},m=s=>{l||(l=!0,t.onError?.(s),e?.(),d.reject(s))},v=()=>new Promise(s=>{e=t=>{(l||f())&&s(t)},t.onPause?.()}).then(()=>{e=void 0,l||t.onContinue?.()}),b=()=>{let e;if(l)return;let i=0===c?t.initialPromise:void 0;try{e=i??t.fn()}catch(t){e=Promise.reject(t)}Promise.resolve(e).then(y).catch(e=>{if(l)return;let i=t.retry??(a.sk?0:3),r=t.retryDelay??u,n="function"==typeof r?r(c,e):r,o=!0===i||"number"==typeof i&&cf()?void 0:v()).then(()=>{s?m(e):b()})})};return{promise:d,cancel:e=>{l||(m(new h(e)),t.abort?.())},continue:()=>(e?.(),d),cancelRetry:()=>{s=!0},continueRetry:()=>{s=!1},canStart:p,start:()=>(p()?b():v().then(b),d)}}},24112:function(t,e,s){s.d(e,{l:function(){return i}});var i=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(t){return this.listeners.add(t),this.onSubscribe(),()=>{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}}},16803:function(t,e,s){s.d(e,{O:function(){return i}});function i(){let t,e;let s=new Promise((s,i)=>{t=s,e=i});function i(t){Object.assign(s,t),delete s.resolve,delete s.reject}return s.status="pending",s.catch(()=>{}),s.resolve=e=>{i({status:"fulfilled",value:e}),t(e)},s.reject=t=>{i({status:"rejected",reason:t}),e(t)},s}},45345:function(t,e,s){s.d(e,{CN:function(){return w},Ht:function(){return R},KC:function(){return o},Kp:function(){return u},Nc:function(){return h},PN:function(){return a},Rm:function(){return d},SE:function(){return n},VS:function(){return y},VX:function(){return O},X7:function(){return l},Ym:function(){return f},ZT:function(){return r},_v:function(){return g},_x:function(){return c},cG:function(){return S},oE:function(){return C},sk:function(){return i},to:function(){return p}});var i="undefined"==typeof window||"Deno"in globalThis;function r(){}function n(t,e){return"function"==typeof t?t(e):t}function a(t){return"number"==typeof t&&t>=0&&t!==1/0}function u(t,e){return Math.max(t+(e||0)-Date.now(),0)}function o(t,e){return"function"==typeof t?t(e):t}function h(t,e){return"function"==typeof t?t(e):t}function c(t,e){let{type:s="all",exact:i,fetchStatus:r,predicate:n,queryKey:a,stale:u}=t;if(a){if(i){if(e.queryHash!==d(a,e.options))return!1}else if(!p(e.queryKey,a))return!1}if("all"!==s){let t=e.isActive();if("active"===s&&!t||"inactive"===s&&t)return!1}return("boolean"!=typeof u||e.isStale()===u)&&(!r||r===e.state.fetchStatus)&&(!n||!!n(e))}function l(t,e){let{exact:s,status:i,predicate:r,mutationKey:n}=t;if(n){if(!e.options.mutationKey)return!1;if(s){if(f(e.options.mutationKey)!==f(n))return!1}else if(!p(e.options.mutationKey,n))return!1}return(!i||e.state.status===i)&&(!r||!!r(e))}function d(t,e){return(e?.queryKeyHashFn||f)(t)}function f(t){return JSON.stringify(t,(t,e)=>v(e)?Object.keys(e).sort().reduce((t,s)=>(t[s]=e[s],t),{}):e)}function p(t,e){return t===e||typeof t==typeof e&&!!t&&!!e&&"object"==typeof t&&"object"==typeof e&&!Object.keys(e).some(s=>!p(t[s],e[s]))}function y(t,e){if(!e||Object.keys(t).length!==Object.keys(e).length)return!1;for(let s in t)if(t[s]!==e[s])return!1;return!0}function m(t){return Array.isArray(t)&&t.length===Object.keys(t).length}function v(t){if(!b(t))return!1;let e=t.constructor;if(void 0===e)return!0;let s=e.prototype;return!!(b(s)&&s.hasOwnProperty("isPrototypeOf"))&&Object.getPrototypeOf(t)===Object.prototype}function b(t){return"[object Object]"===Object.prototype.toString.call(t)}function g(t){return new Promise(e=>{setTimeout(e,t)})}function C(t,e,s){return"function"==typeof s.structuralSharing?s.structuralSharing(t,e):!1!==s.structuralSharing?function t(e,s){if(e===s)return e;let i=m(e)&&m(s);if(i||v(e)&&v(s)){let r=i?e:Object.keys(e),n=r.length,a=i?s:Object.keys(s),u=a.length,o=i?[]:{},h=0;for(let n=0;ns?i.slice(1):i}function R(t,e,s=0){let i=[e,...t];return s&&i.length>s?i.slice(0,-1):i}var w=Symbol();function S(t,e){return!t.queryFn&&e?.initialPromise?()=>e.initialPromise:t.queryFn&&t.queryFn!==w?t.queryFn:()=>Promise.reject(Error(`Missing queryFn: '${t.queryHash}'`))}},16593:function(t,e,s){let i;s.d(e,{a:function(){return E}});var r=s(87045),n=s(18238),a=s(21733),u=s(24112),o=s(16803),h=s(45345),c=class extends u.l{constructor(t,e){super(),this.options=e,this.#S=t,this.#Q=null,this.#q=(0,o.O)(),this.options.experimental_prefetchInRender||this.#q.reject(Error("experimental_prefetchInRender feature flag is not enabled")),this.bindMethods(),this.setOptions(e)}#S;#F=void 0;#P=void 0;#E=void 0;#T;#D;#q;#Q;#I;#x;#A;#M;#k;#U;#j=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#F.addObserver(this),l(this.#F,this.options)?this.#K():this.updateResult(),this.#N())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return d(this.#F,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return d(this.#F,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#V(),this.#L(),this.#F.removeObserver(this)}setOptions(t,e){let s=this.options,i=this.#F;if(this.options=this.#S.defaultQueryOptions(t),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled&&"function"!=typeof this.options.enabled&&"boolean"!=typeof(0,h.Nc)(this.options.enabled,this.#F))throw Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#_(),this.#F.setOptions(this.options),s._defaulted&&!(0,h.VS)(this.options,s)&&this.#S.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#F,observer:this});let r=this.hasListeners();r&&f(this.#F,i,this.options,s)&&this.#K(),this.updateResult(e),r&&(this.#F!==i||(0,h.Nc)(this.options.enabled,this.#F)!==(0,h.Nc)(s.enabled,this.#F)||(0,h.KC)(this.options.staleTime,this.#F)!==(0,h.KC)(s.staleTime,this.#F))&&this.#H();let n=this.#G();r&&(this.#F!==i||(0,h.Nc)(this.options.enabled,this.#F)!==(0,h.Nc)(s.enabled,this.#F)||n!==this.#U)&&this.#Z(n)}getOptimisticResult(t){let e=this.#S.getQueryCache().build(this.#S,t),s=this.createResult(e,t);return(0,h.VS)(this.getCurrentResult(),s)||(this.#E=s,this.#D=this.options,this.#T=this.#F.state),s}getCurrentResult(){return this.#E}trackResult(t,e){let s={};return Object.keys(t).forEach(i=>{Object.defineProperty(s,i,{configurable:!1,enumerable:!0,get:()=>(this.trackProp(i),e?.(i),t[i])})}),s}trackProp(t){this.#j.add(t)}getCurrentQuery(){return this.#F}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){let e=this.#S.defaultQueryOptions(t),s=this.#S.getQueryCache().build(this.#S,e);return s.fetch().then(()=>this.createResult(s,e))}fetch(t){return this.#K({...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#E))}#K(t){this.#_();let e=this.#F.fetch(this.options,t);return t?.throwOnError||(e=e.catch(h.ZT)),e}#H(){this.#V();let t=(0,h.KC)(this.options.staleTime,this.#F);if(h.sk||this.#E.isStale||!(0,h.PN)(t))return;let e=(0,h.Kp)(this.#E.dataUpdatedAt,t);this.#M=setTimeout(()=>{this.#E.isStale||this.updateResult()},e+1)}#G(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#F):this.options.refetchInterval)??!1}#Z(t){this.#L(),this.#U=t,!h.sk&&!1!==(0,h.Nc)(this.options.enabled,this.#F)&&(0,h.PN)(this.#U)&&0!==this.#U&&(this.#k=setInterval(()=>{(this.options.refetchIntervalInBackground||r.j.isFocused())&&this.#K()},this.#U))}#N(){this.#H(),this.#Z(this.#G())}#V(){this.#M&&(clearTimeout(this.#M),this.#M=void 0)}#L(){this.#k&&(clearInterval(this.#k),this.#k=void 0)}createResult(t,e){let s;let i=this.#F,r=this.options,n=this.#E,u=this.#T,c=this.#D,d=t!==i?t.state:this.#P,{state:y}=t,m={...y},v=!1;if(e._optimisticResults){let s=this.hasListeners(),n=!s&&l(t,e),u=s&&f(t,i,e,r);(n||u)&&(m={...m,...(0,a.z)(y.data,t.options)}),"isRestoring"===e._optimisticResults&&(m.fetchStatus="idle")}let{error:b,errorUpdatedAt:g,status:C}=m;if(e.select&&void 0!==m.data){if(n&&m.data===u?.data&&e.select===this.#I)s=this.#x;else try{this.#I=e.select,s=e.select(m.data),s=(0,h.oE)(n?.data,s,e),this.#x=s,this.#Q=null}catch(t){this.#Q=t}}else s=m.data;if(void 0!==e.placeholderData&&void 0===s&&"pending"===C){let t;if(n?.isPlaceholderData&&e.placeholderData===c?.placeholderData)t=n.data;else if(t="function"==typeof e.placeholderData?e.placeholderData(this.#A?.state.data,this.#A):e.placeholderData,e.select&&void 0!==t)try{t=e.select(t),this.#Q=null}catch(t){this.#Q=t}void 0!==t&&(C="success",s=(0,h.oE)(n?.data,t,e),v=!0)}this.#Q&&(b=this.#Q,s=this.#x,g=Date.now(),C="error");let O="fetching"===m.fetchStatus,R="pending"===C,w="error"===C,S=R&&O,Q=void 0!==s,q={status:C,fetchStatus:m.fetchStatus,isPending:R,isSuccess:"success"===C,isError:w,isInitialLoading:S,isLoading:S,data:s,dataUpdatedAt:m.dataUpdatedAt,error:b,errorUpdatedAt:g,failureCount:m.fetchFailureCount,failureReason:m.fetchFailureReason,errorUpdateCount:m.errorUpdateCount,isFetched:m.dataUpdateCount>0||m.errorUpdateCount>0,isFetchedAfterMount:m.dataUpdateCount>d.dataUpdateCount||m.errorUpdateCount>d.errorUpdateCount,isFetching:O,isRefetching:O&&!R,isLoadingError:w&&!Q,isPaused:"paused"===m.fetchStatus,isPlaceholderData:v,isRefetchError:w&&Q,isStale:p(t,e),refetch:this.refetch,promise:this.#q};if(this.options.experimental_prefetchInRender){let e=t=>{"error"===q.status?t.reject(q.error):void 0!==q.data&&t.resolve(q.data)},s=()=>{e(this.#q=q.promise=(0,o.O)())},r=this.#q;switch(r.status){case"pending":t.queryHash===i.queryHash&&e(r);break;case"fulfilled":("error"===q.status||q.data!==r.value)&&s();break;case"rejected":("error"!==q.status||q.error!==r.reason)&&s()}}return q}updateResult(t){let e=this.#E,s=this.createResult(this.#F,this.options);if(this.#T=this.#F.state,this.#D=this.options,void 0!==this.#T.data&&(this.#A=this.#F),(0,h.VS)(s,e))return;this.#E=s;let i={};t?.listeners!==!1&&(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,s="function"==typeof t?t():t;if("all"===s||!s&&!this.#j.size)return!0;let i=new Set(s??this.#j);return this.options.throwOnError&&i.add("error"),Object.keys(this.#E).some(t=>this.#E[t]!==e[t]&&i.has(t))})()&&(i.listeners=!0),this.#z({...i,...t})}#_(){let t=this.#S.getQueryCache().build(this.#S,this.options);if(t===this.#F)return;let e=this.#F;this.#F=t,this.#P=t.state,this.hasListeners()&&(e?.removeObserver(this),t.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#N()}#z(t){n.V.batch(()=>{t.listeners&&this.listeners.forEach(t=>{t(this.#E)}),this.#S.getQueryCache().notify({query:this.#F,type:"observerResultsUpdated"})})}};function l(t,e){return!1!==(0,h.Nc)(e.enabled,t)&&void 0===t.state.data&&!("error"===t.state.status&&!1===e.retryOnMount)||void 0!==t.state.data&&d(t,e,e.refetchOnMount)}function d(t,e,s){if(!1!==(0,h.Nc)(e.enabled,t)){let i="function"==typeof s?s(t):s;return"always"===i||!1!==i&&p(t,e)}return!1}function f(t,e,s,i){return(t!==e||!1===(0,h.Nc)(i.enabled,t))&&(!s.suspense||"error"!==t.state.status)&&p(t,s)}function p(t,e){return!1!==(0,h.Nc)(e.enabled,t)&&t.isStaleByTime((0,h.KC)(e.staleTime,t))}var y=s(2265),m=s(29827);s(57437);var v=y.createContext((i=!1,{clearReset:()=>{i=!1},reset:()=>{i=!0},isReset:()=>i})),b=()=>y.useContext(v),g=s(51172),C=(t,e)=>{(t.suspense||t.throwOnError||t.experimental_prefetchInRender)&&!e.isReset()&&(t.retryOnMount=!1)},O=t=>{y.useEffect(()=>{t.clearReset()},[t])},R=t=>{let{result:e,errorResetBoundary:s,throwOnError:i,query:r}=t;return e.isError&&!s.isReset()&&!e.isFetching&&r&&(0,g.L)(i,[e.error,r])},w=y.createContext(!1),S=()=>y.useContext(w);w.Provider;var Q=t=>{let e=t.staleTime;t.suspense&&(t.staleTime="function"==typeof e?(...t)=>Math.max(e(...t),1e3):Math.max(e??1e3,1e3),"number"==typeof t.gcTime&&(t.gcTime=Math.max(t.gcTime,1e3)))},q=(t,e)=>t.isLoading&&t.isFetching&&!e,F=(t,e)=>t?.suspense&&e.isPending,P=(t,e,s)=>e.fetchOptimistic(t).catch(()=>{s.clearReset()});function E(t,e){return function(t,e,s){var i,r,a,u,o;let c=(0,m.NL)(s),l=S(),d=b(),f=c.defaultQueryOptions(t);null===(r=c.getDefaultOptions().queries)||void 0===r||null===(i=r._experimental_beforeQuery)||void 0===i||i.call(r,f),f._optimisticResults=l?"isRestoring":"optimistic",Q(f),C(f,d),O(d);let p=!c.getQueryCache().get(f.queryHash),[v]=y.useState(()=>new e(c,f)),w=v.getOptimisticResult(f),E=!l&&!1!==t.subscribed;if(y.useSyncExternalStore(y.useCallback(t=>{let e=E?v.subscribe(n.V.batchCalls(t)):g.Z;return v.updateResult(),e},[v,E]),()=>v.getCurrentResult(),()=>v.getCurrentResult()),y.useEffect(()=>{v.setOptions(f,{listeners:!1})},[f,v]),F(f,w))throw P(f,v,d);if(R({result:w,errorResetBoundary:d,throwOnError:f.throwOnError,query:c.getQueryCache().get(f.queryHash)}))throw w.error;if(null===(u=c.getDefaultOptions().queries)||void 0===u||null===(a=u._experimental_afterQuery)||void 0===a||a.call(u,f,w),f.experimental_prefetchInRender&&!h.sk&&q(w,l)){let t=p?P(f,v,d):null===(o=c.getQueryCache().get(f.queryHash))||void 0===o?void 0:o.promise;null==t||t.catch(g.Z).finally(()=>{v.updateResult()})}return f.notifyOnChangeProps?w:v.trackResult(w)}(t,c,e)}},51172:function(t,e,s){function i(t,e){return"function"==typeof t?t(...e):!!t}function r(){}s.d(e,{L:function(){return i},Z:function(){return r}})}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/1307-6b882871684ce94c.js b/litellm/proxy/_experimental/out/_next/static/chunks/1307-6b882871684ce94c.js new file mode 100644 index 00000000000..40149428caa --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/1307-6b882871684ce94c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1307],{21307:function(e,s,r){r.d(s,{d:function(){return eR},o:function(){return eY}});var l=r(57437),t=r(2265),a=r(16593),n=r(52787),i=r(82680),o=r(89970),c=r(20831),d=r(12485),m=r(18135),x=r(35242),u=r(29706),h=r(77991),p=r(49804),j=r(67101),g=r(84264),v=r(96761),f=r(12322),b=r(47323),y=r(53410),N=r(74998);let _=e=>{try{let s=e.indexOf("/mcp/");if(-1===s)return{token:null,baseUrl:e};let r=e.split("/mcp/");if(2!==r.length)return{token:null,baseUrl:e};let l=r[0]+"/mcp/",t=r[1];if(!t)return{token:null,baseUrl:e};return{token:t,baseUrl:l}}catch(s){return console.error("Error parsing MCP URL:",s),{token:null,baseUrl:e}}},Z=e=>{let{token:s,baseUrl:r}=_(e);return s?r+"...":e},w=e=>{let{token:s}=_(e);return{maskedUrl:Z(e),hasToken:!!s}},C=e=>e?/^https?:\/\/[^\s/$.?#].[^\s]*$/i.test(e)?Promise.resolve():Promise.reject("Please enter a valid URL (e.g., http://service-name.domain:1234/path or https://example.com)"):Promise.resolve(),S=e=>e&&e.includes("-")?Promise.reject("Server name cannot contain '-' (hyphen). Please use '_' (underscore) instead."):Promise.resolve(),k=(e,s,r,t)=>[{accessorKey:"server_id",header:"Server ID",cell:e=>{let{row:r}=e;return(0,l.jsxs)("button",{onClick:()=>s(r.original.server_id),className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[15ch]",children:[r.original.server_id.slice(0,7),"..."]})}},{accessorKey:"server_name",header:"Name"},{accessorKey:"alias",header:"Alias"},{id:"url",header:"URL",cell:e=>{let{row:s}=e,{maskedUrl:r}=w(s.original.url);return(0,l.jsx)("span",{className:"font-mono text-sm",children:r})}},{accessorKey:"transport",header:"Transport",cell:e=>{let{getValue:s}=e;return(0,l.jsx)("span",{children:(s()||"http").toUpperCase()})}},{accessorKey:"auth_type",header:"Auth Type",cell:e=>{let{getValue:s}=e;return(0,l.jsx)("span",{children:s()||"none"})}},{id:"health_status",header:"Health Status",cell:e=>{let{row:s}=e,r=s.original,t=r.status||"unknown",a=r.last_health_check,n=r.health_check_error,i=(0,l.jsxs)("div",{className:"max-w-xs",children:[(0,l.jsxs)("div",{className:"font-semibold mb-1",children:["Health Status: ",t]}),a&&(0,l.jsxs)("div",{className:"text-xs mb-1",children:["Last Check: ",new Date(a).toLocaleString()]}),n&&(0,l.jsxs)("div",{className:"text-xs",children:[(0,l.jsx)("div",{className:"font-medium text-red-400 mb-1",children:"Error:"}),(0,l.jsx)("div",{className:"break-words",children:n})]}),!a&&!n&&(0,l.jsx)("div",{className:"text-xs text-gray-400",children:"No health check data available"})]});return(0,l.jsx)(o.Z,{title:i,placement:"top",children:(0,l.jsxs)("button",{className:"font-mono text-xs font-normal px-2 py-0.5 text-left w-full truncate whitespace-nowrap cursor-pointer max-w-[10ch] ".concat((e=>{switch(e){case"healthy":return"text-green-500 bg-green-50 hover:bg-green-100";case"unhealthy":return"text-red-500 bg-red-50 hover:bg-red-100";default:return"text-gray-500 bg-gray-50 hover:bg-gray-100"}})(t)),children:[(0,l.jsx)("span",{className:"mr-1",children:"●"}),t.charAt(0).toUpperCase()+t.slice(1)]})})}},{id:"mcp_access_groups",header:"Access Groups",cell:e=>{let{row:s}=e,r=s.original.mcp_access_groups;if(Array.isArray(r)&&r.length>0&&"string"==typeof r[0]){let e=r.join(", ");return(0,l.jsx)(o.Z,{title:e,children:(0,l.jsx)("span",{className:"max-w-[200px] truncate block",children:e.length>30?"".concat(e.slice(0,30),"..."):e})})}return(0,l.jsx)("span",{className:"text-gray-400 italic",children:"None"})}},{header:"Created At",accessorKey:"created_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,r=s.original;return(0,l.jsx)("span",{className:"text-xs",children:r.created_at?new Date(r.created_at).toLocaleDateString():"-"})}},{header:"Updated At",accessorKey:"updated_at",sortingFn:"datetime",cell:e=>{let{row:s}=e,r=s.original;return(0,l.jsx)("span",{className:"text-xs",children:r.updated_at?new Date(r.updated_at).toLocaleDateString():"-"})}},{id:"actions",header:"Actions",cell:e=>{let{row:s}=e;return(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(b.Z,{icon:y.Z,size:"sm",onClick:()=>r(s.original.server_id),className:"cursor-pointer"}),(0,l.jsx)(b.Z,{icon:N.Z,size:"sm",onClick:()=>t(s.original.server_id),className:"cursor-pointer"})]})}}];var P=r(19250),A=r(20347),L=r(10900),M=r(82376),T=r(71437),I=r(12514);let E={NONE:"none",API_KEY:"api_key",BEARER_TOKEN:"bearer_token",BASIC:"basic"},z={SSE:"sse"},q=e=>(console.log(e),null==e)?z.SSE:e,O=e=>null==e?E.NONE:e,R=e=>O(e)!==E.NONE;var U=r(13634),F=r(73002),B=r(49566),K=r(20577),V=r(44851),D=r(33866),H=r(62670),G=r(15424),Y=r(58630),J=e=>{let{value:s={},onChange:r,tools:t=[],disabled:a=!1}=e,n=(e,l)=>{let t={...s,tool_name_to_cost_per_query:{...s.tool_name_to_cost_per_query,[e]:l}};null==r||r(t)};return(0,l.jsx)(I.Z,{children:(0,l.jsxs)("div",{className:"space-y-6",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,l.jsx)(H.Z,{className:"text-green-600"}),(0,l.jsx)(v.Z,{children:"Cost Configuration"}),(0,l.jsx)(o.Z,{title:"Configure costs for this MCP server's tool calls. Set a default rate and per-tool overrides.",children:(0,l.jsx)(G.Z,{className:"text-gray-400"})})]}),(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsxs)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:["Default Cost per Query ($)",(0,l.jsx)(o.Z,{title:"Default cost charged for each tool call to this server.",children:(0,l.jsx)(G.Z,{className:"ml-1 text-gray-400"})})]}),(0,l.jsx)(K.Z,{min:0,step:1e-4,precision:4,placeholder:"0.0000",value:s.default_cost_per_query,onChange:e=>{let l={...s,default_cost_per_query:e};null==r||r(l)},disabled:a,style:{width:"200px"},addonBefore:"$"}),(0,l.jsx)(g.Z,{className:"block mt-1 text-gray-500 text-sm",children:"Set a default cost for all tool calls to this server"})]}),t.length>0&&(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsxs)("label",{className:"block text-sm font-medium text-gray-700",children:["Tool-Specific Costs ($)",(0,l.jsx)(o.Z,{title:"Override the default cost for specific tools. Leave blank to use the default rate.",children:(0,l.jsx)(G.Z,{className:"ml-1 text-gray-400"})})]}),(0,l.jsx)(V.default,{items:[{key:"1",label:(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)(Y.Z,{className:"mr-2 text-blue-500"}),(0,l.jsx)("span",{className:"font-medium",children:"Available Tools"}),(0,l.jsx)(D.Z,{count:t.length,style:{backgroundColor:"#52c41a",marginLeft:"8px"}})]}),children:(0,l.jsx)("div",{className:"space-y-3 max-h-64 overflow-y-auto",children:t.map((e,r)=>{var t;return(0,l.jsxs)("div",{className:"flex items-center justify-between p-3 bg-gray-50 rounded-lg",children:[(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)(g.Z,{className:"font-medium text-gray-900",children:e.name}),e.description&&(0,l.jsx)(g.Z,{className:"text-gray-500 text-sm block mt-1",children:e.description})]}),(0,l.jsx)("div",{className:"ml-4",children:(0,l.jsx)(K.Z,{min:0,step:1e-4,precision:4,placeholder:"Use default",value:null===(t=s.tool_name_to_cost_per_query)||void 0===t?void 0:t[e.name],onChange:s=>n(e.name,s),disabled:a,style:{width:"120px"},addonBefore:"$"})})]},r)})})}]})]})]}),(s.default_cost_per_query||s.tool_name_to_cost_per_query&&Object.keys(s.tool_name_to_cost_per_query).length>0)&&(0,l.jsxs)("div",{className:"mt-6 p-4 bg-blue-50 border border-blue-200 rounded-lg",children:[(0,l.jsx)(g.Z,{className:"text-blue-800 font-medium",children:"Cost Summary:"}),(0,l.jsxs)("div",{className:"mt-2 space-y-1",children:[s.default_cost_per_query&&(0,l.jsxs)(g.Z,{className:"text-blue-700",children:["• Default cost: $",s.default_cost_per_query.toFixed(4)," per query"]}),s.tool_name_to_cost_per_query&&Object.entries(s.tool_name_to_cost_per_query).map(e=>{let[s,r]=e;return null!=r&&(0,l.jsxs)(g.Z,{className:"text-blue-700",children:["• ",s,": $",r.toFixed(4)," per query"]},s)})]})]})]})})};let{Panel:$}=V.default;var W=e=>{let{availableAccessGroups:s,mcpServer:r,searchValue:a,setSearchValue:i,getAccessGroupOptions:c}=e,d=U.Z.useFormInstance();return(0,t.useEffect)(()=>{r&&r.extra_headers&&d.setFieldValue("extra_headers",r.extra_headers)},[r,d]),(0,l.jsx)(V.default,{className:"bg-gray-50 border border-gray-200 rounded-lg",expandIconPosition:"end",ghost:!1,children:(0,l.jsx)($,{header:(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,l.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,l.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Permission Management / Access Control"})]}),(0,l.jsx)("p",{className:"text-sm text-gray-600 ml-4",children:"Configure access permissions and security settings (Optional)"})]}),className:"border-0",children:(0,l.jsxs)("div",{className:"space-y-6 pt-4",children:[(0,l.jsx)(U.Z.Item,{label:(0,l.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["MCP Access Groups",(0,l.jsx)(o.Z,{title:"Specify access groups for this MCP server. Users must be in at least one of these groups to access the server.",children:(0,l.jsx)(G.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"mcp_access_groups",className:"mb-4",children:(0,l.jsx)(n.default,{mode:"tags",showSearch:!0,placeholder:"Select existing groups or type to create new ones",optionFilterProp:"value",filterOption:(e,s)=>{var r;return(null!==(r=null==s?void 0:s.value)&&void 0!==r?r:"").toLowerCase().includes(e.toLowerCase())},onSearch:e=>i(e),tokenSeparators:[","],options:c(),maxTagCount:"responsive",allowClear:!0})}),(0,l.jsx)(U.Z.Item,{label:(0,l.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Extra Headers",(0,l.jsx)(o.Z,{title:"Forward custom headers from incoming requests to this MCP server (e.g., Authorization, X-Custom-Header, User-Agent)",children:(0,l.jsx)(G.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})}),(null==r?void 0:r.extra_headers)&&r.extra_headers.length>0&&(0,l.jsxs)("span",{className:"ml-2 text-xs bg-blue-100 text-blue-700 px-2 py-1 rounded-full",children:[r.extra_headers.length," configured"]})]}),name:"extra_headers",children:(0,l.jsx)(n.default,{mode:"tags",placeholder:(null==r?void 0:r.extra_headers)&&r.extra_headers.length>0?"Currently: ".concat(r.extra_headers.join(", ")):"Enter header names (e.g., Authorization, X-Custom-Header)",className:"rounded-lg",size:"large",tokenSeparators:[","],allowClear:!0})})]})},"permissions")})},Q=r(83669),X=r(87908),ee=r(61994);let es=e=>{let{accessToken:s,formValues:r,enabled:l=!0}=e,[a,n]=(0,t.useState)([]),[i,o]=(0,t.useState)(!1),[c,d]=(0,t.useState)(null),[m,x]=(0,t.useState)(!1),u=!!(r.url&&r.transport&&r.auth_type&&s),h=async()=>{if(s&&r.url){o(!0),d(null);try{let e={server_id:r.server_id||"",server_name:r.server_name||"",url:r.url,transport:r.transport,auth_type:r.auth_type,mcp_info:r.mcp_info},l=await (0,P.testMCPToolsListRequest)(s,e);if(l.tools&&!l.error)n(l.tools),d(null),l.tools.length>0&&!m&&x(!0);else{let e=l.message||"Failed to retrieve tools list";d(e),n([]),x(!1)}}catch(e){console.error("Tools fetch error:",e),d(e instanceof Error?e.message:String(e)),n([]),x(!1)}finally{o(!1)}}},p=()=>{n([]),d(null),x(!1)};return(0,t.useEffect)(()=>{l&&(u?h():p())},[r.url,r.transport,r.auth_type,s,l,u]),{tools:a,isLoadingTools:i,toolsError:c,hasShownSuccessMessage:m,canFetchTools:u,fetchTools:h,clearTools:p}};var er=e=>{let{accessToken:s,formValues:r,allowedTools:a,existingAllowedTools:n,onAllowedToolsChange:i}=e,o=(0,t.useRef)(0),{tools:c,isLoadingTools:d,toolsError:m,canFetchTools:x}=es({accessToken:s,formValues:r,enabled:!0});(0,t.useEffect)(()=>{if(c.length>0&&c.length!==o.current&&0===a.length){if(n&&n.length>0){let e=c.map(e=>e.name);i(n.filter(s=>e.includes(s)))}else i(c.map(e=>e.name))}o.current=c.length},[c,a.length,n,i]);let u=e=>{a.includes(e)?i(a.filter(s=>s!==e)):i([...a,e])};return x||r.url?(0,l.jsx)(I.Z,{children:(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsx)("div",{className:"flex items-center justify-between",children:(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(Y.Z,{className:"text-blue-600"}),(0,l.jsx)(v.Z,{children:"Tool Configuration"}),c.length>0&&(0,l.jsx)(D.Z,{count:c.length,style:{backgroundColor:"#52c41a"}})]})}),(0,l.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-3",children:(0,l.jsxs)(g.Z,{className:"text-blue-800 text-sm",children:[(0,l.jsx)("strong",{children:"Select which tools users can call:"})," Only checked tools will be available for users to invoke. Unchecked tools will be blocked from execution."]})}),d&&(0,l.jsxs)("div",{className:"flex items-center justify-center py-6",children:[(0,l.jsx)(X.Z,{size:"large"}),(0,l.jsx)(g.Z,{className:"ml-3",children:"Loading tools..."})]}),m&&!d&&(0,l.jsxs)("div",{className:"text-center py-6 text-red-500 border rounded-lg border-dashed border-red-300 bg-red-50",children:[(0,l.jsx)(Y.Z,{className:"text-2xl mb-2"}),(0,l.jsx)(g.Z,{className:"text-red-600 font-medium",children:"Unable to load tools"}),(0,l.jsx)("br",{}),(0,l.jsx)(g.Z,{className:"text-sm text-red-500",children:m})]}),!d&&!m&&0===c.length&&x&&(0,l.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,l.jsx)(Y.Z,{className:"text-2xl mb-2"}),(0,l.jsx)(g.Z,{children:"No tools available for configuration"}),(0,l.jsx)("br",{}),(0,l.jsx)(g.Z,{className:"text-sm",children:"Connect to an MCP server with tools to configure them"})]}),!x&&r.url&&(0,l.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,l.jsx)(Y.Z,{className:"text-2xl mb-2"}),(0,l.jsx)(g.Z,{children:"Complete required fields to configure tools"}),(0,l.jsx)("br",{}),(0,l.jsx)(g.Z,{className:"text-sm",children:"Fill in URL, Transport, and Authentication to load available tools"})]}),!d&&!m&&c.length>0&&(0,l.jsxs)("div",{className:"space-y-3",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-green-50 rounded-lg border border-green-200 flex-1",children:[(0,l.jsx)(Q.Z,{className:"text-green-600"}),(0,l.jsxs)(g.Z,{className:"text-green-700 font-medium",children:[a.length," of ",c.length," ",1===c.length?"tool":"tools"," enabled for user access"]})]}),(0,l.jsxs)("div",{className:"flex gap-2 ml-3",children:[(0,l.jsx)("button",{type:"button",onClick:()=>{i(c.map(e=>e.name))},className:"px-3 py-1.5 text-sm text-blue-600 hover:text-blue-700 hover:bg-blue-50 rounded-md transition-colors",children:"Enable All"}),(0,l.jsx)("button",{type:"button",onClick:()=>{i([])},className:"px-3 py-1.5 text-sm text-gray-600 hover:text-gray-700 hover:bg-gray-100 rounded-md transition-colors",children:"Disable All"})]})]}),(0,l.jsx)("div",{className:"space-y-2",children:c.map((e,s)=>(0,l.jsx)("div",{className:"p-4 rounded-lg border transition-colors cursor-pointer ".concat(a.includes(e.name)?"bg-blue-50 border-blue-300 hover:border-blue-400":"bg-gray-50 border-gray-200 hover:border-gray-300"),onClick:()=>u(e.name),children:(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)(ee.Z,{checked:a.includes(e.name),onChange:()=>u(e.name)}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(g.Z,{className:"font-medium text-gray-900",children:e.name}),(0,l.jsx)("span",{className:"px-2 py-0.5 text-xs rounded-full font-medium ".concat(a.includes(e.name)?"bg-green-100 text-green-800":"bg-red-100 text-red-800"),children:a.includes(e.name)?"Enabled":"Disabled"})]}),e.description&&(0,l.jsx)(g.Z,{className:"text-gray-500 text-sm block mt-1",children:e.description}),(0,l.jsx)(g.Z,{className:"text-gray-400 text-xs block mt-1",children:a.includes(e.name)?"✓ Users can call this tool":"✗ Users cannot call this tool"})]})]})},s))})]})]})}):null},el=r(9114),et=e=>{let{mcpServer:s,accessToken:r,onCancel:a,onSuccess:i,availableAccessGroups:o}=e,[p]=U.Z.useForm(),[j,g]=(0,t.useState)({}),[v,f]=(0,t.useState)([]),[b,y]=(0,t.useState)(!1),[N,_]=(0,t.useState)(""),[Z,w]=(0,t.useState)(!1),[k,A]=(0,t.useState)([]);(0,t.useEffect)(()=>{var e;(null===(e=s.mcp_info)||void 0===e?void 0:e.mcp_server_cost_info)&&g(s.mcp_info.mcp_server_cost_info)},[s]),(0,t.useEffect)(()=>{s.allowed_tools&&A(s.allowed_tools)},[s]),(0,t.useEffect)(()=>{if(s.mcp_access_groups){let e=s.mcp_access_groups.map(e=>"string"==typeof e?e:e.name||String(e));p.setFieldValue("mcp_access_groups",e)}},[s]),(0,t.useEffect)(()=>{L()},[s,r]);let L=async()=>{if(r&&s.url){y(!0);try{let e={server_id:s.server_id,server_name:s.server_name,url:s.url,transport:s.transport,auth_type:s.auth_type,mcp_info:s.mcp_info},l=await (0,P.testMCPToolsListRequest)(r,e);l.tools&&!l.error?f(l.tools):(console.error("Failed to fetch tools:",l.message),f([]))}catch(e){console.error("Tools fetch error:",e),f([])}finally{y(!1)}}},M=async e=>{if(r)try{let l=(e.mcp_access_groups||[]).map(e=>"string"==typeof e?e:e.name||String(e)),t={...e,server_id:s.server_id,mcp_info:{server_name:e.server_name||e.url,description:e.description,mcp_server_cost_info:Object.keys(j).length>0?j:null},mcp_access_groups:l,alias:e.alias,extra_headers:e.extra_headers||[],allowed_tools:k.length>0?k:null,disallowed_tools:e.disallowed_tools||[]},a=await (0,P.updateMCPServer)(r,t);el.Z.success("MCP Server updated successfully"),i(a)}catch(e){el.Z.fromBackend("Failed to update MCP Server"+((null==e?void 0:e.message)?": ".concat(e.message):""))}};return(0,l.jsxs)(m.Z,{children:[(0,l.jsxs)(x.Z,{className:"grid w-full grid-cols-2",children:[(0,l.jsx)(d.Z,{children:"Server Configuration"}),(0,l.jsx)(d.Z,{children:"Cost Configuration"})]}),(0,l.jsxs)(h.Z,{className:"mt-6",children:[(0,l.jsx)(u.Z,{children:(0,l.jsxs)(U.Z,{form:p,onFinish:M,initialValues:s,layout:"vertical",children:[(0,l.jsx)(U.Z.Item,{label:"MCP Server Name",name:"server_name",rules:[{validator:(e,s)=>S(s)}],children:(0,l.jsx)(B.Z,{})}),(0,l.jsx)(U.Z.Item,{label:"Alias",name:"alias",rules:[{validator:(e,s)=>S(s)}],children:(0,l.jsx)(B.Z,{onChange:()=>w(!0)})}),(0,l.jsx)(U.Z.Item,{label:"Description",name:"description",children:(0,l.jsx)(B.Z,{})}),(0,l.jsx)(U.Z.Item,{label:"MCP Server URL",name:"url",rules:[{required:!0,message:"Please enter a server URL"},{validator:(e,s)=>C(s)}],children:(0,l.jsx)(B.Z,{})}),(0,l.jsx)(U.Z.Item,{label:"Transport Type",name:"transport",rules:[{required:!0}],children:(0,l.jsxs)(n.default,{children:[(0,l.jsx)(n.default.Option,{value:"sse",children:"Server-Sent Events (SSE)"}),(0,l.jsx)(n.default.Option,{value:"http",children:"HTTP"})]})}),(0,l.jsx)(U.Z.Item,{label:"Authentication",name:"auth_type",rules:[{required:!0}],children:(0,l.jsxs)(n.default,{children:[(0,l.jsx)(n.default.Option,{value:"none",children:"None"}),(0,l.jsx)(n.default.Option,{value:"api_key",children:"API Key"}),(0,l.jsx)(n.default.Option,{value:"bearer_token",children:"Bearer Token"}),(0,l.jsx)(n.default.Option,{value:"basic",children:"Basic Auth"})]})}),(0,l.jsx)("div",{className:"mt-6",children:(0,l.jsx)(W,{availableAccessGroups:o,mcpServer:s,searchValue:N,setSearchValue:_,getAccessGroupOptions:()=>{let e=o.map(e=>({value:e,label:(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,l.jsx)("span",{className:"font-medium",children:e})]})}));return N&&!o.some(e=>e.toLowerCase().includes(N.toLowerCase()))&&e.push({value:N,label:(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,l.jsx)("span",{className:"font-medium",children:N}),(0,l.jsx)("span",{className:"text-gray-400 text-xs ml-1",children:"create new group"})]})}),e}})}),(0,l.jsx)("div",{className:"mt-6",children:(0,l.jsx)(er,{accessToken:r,formValues:{server_id:s.server_id,server_name:s.server_name,url:s.url,transport:s.transport,auth_type:s.auth_type,mcp_info:s.mcp_info},allowedTools:k,existingAllowedTools:s.allowed_tools||null,onAllowedToolsChange:A})}),(0,l.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,l.jsx)(F.ZP,{onClick:a,children:"Cancel"}),(0,l.jsx)(c.Z,{type:"submit",children:"Save Changes"})]})]})}),(0,l.jsx)(u.Z,{children:(0,l.jsxs)("div",{className:"space-y-6",children:[(0,l.jsx)(J,{value:j,onChange:g,tools:v,disabled:b}),(0,l.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,l.jsx)(F.ZP,{onClick:a,children:"Cancel"}),(0,l.jsx)(c.Z,{onClick:()=>p.submit(),children:"Save Changes"})]})]})})]})]})},ea=r(92280),en=e=>{let{costConfig:s}=e,r=(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null,t=(null==s?void 0:s.tool_name_to_cost_per_query)&&Object.keys(s.tool_name_to_cost_per_query).length>0;return r||t?(0,l.jsx)("div",{className:"mt-6 pt-6 border-t border-gray-200",children:(0,l.jsxs)("div",{className:"space-y-4",children:[r&&(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null&&(0,l.jsxs)("div",{children:[(0,l.jsx)(ea.x,{className:"font-medium",children:"Default Cost per Query"}),(0,l.jsxs)("div",{className:"text-green-600 font-mono",children:["$",s.default_cost_per_query.toFixed(4)]})]}),t&&(null==s?void 0:s.tool_name_to_cost_per_query)&&(0,l.jsxs)("div",{children:[(0,l.jsx)(ea.x,{className:"font-medium",children:"Tool-Specific Costs"}),(0,l.jsx)("div",{className:"mt-2 space-y-2",children:Object.entries(s.tool_name_to_cost_per_query).map(e=>{let[s,r]=e;return null!=r&&(0,l.jsxs)("div",{className:"flex justify-between items-center p-3 bg-gray-50 rounded-lg",children:[(0,l.jsx)(ea.x,{className:"font-medium",children:s}),(0,l.jsxs)(ea.x,{className:"text-green-600 font-mono",children:["$",r.toFixed(4)," per query"]})]},s)})})]}),(0,l.jsxs)("div",{className:"mt-4 p-4 bg-blue-50 border border-blue-200 rounded-lg",children:[(0,l.jsx)(ea.x,{className:"text-blue-800 font-medium",children:"Cost Summary:"}),(0,l.jsxs)("div",{className:"mt-2 space-y-1",children:[r&&(null==s?void 0:s.default_cost_per_query)!==void 0&&(null==s?void 0:s.default_cost_per_query)!==null&&(0,l.jsxs)(ea.x,{className:"text-blue-700",children:["• Default cost: $",s.default_cost_per_query.toFixed(4)," per query"]}),t&&(null==s?void 0:s.tool_name_to_cost_per_query)&&(0,l.jsxs)(ea.x,{className:"text-blue-700",children:["• ",Object.keys(s.tool_name_to_cost_per_query).length," tool(s) with custom pricing"]})]})]})]})}):(0,l.jsx)("div",{className:"mt-6 pt-6 border-t border-gray-200",children:(0,l.jsx)("div",{className:"space-y-4",children:(0,l.jsx)("div",{className:"p-4 bg-gray-50 border border-gray-200 rounded-lg",children:(0,l.jsx)(ea.x,{className:"text-gray-600",children:"No cost configuration set for this server. Tool calls will be charged at $0.00 per tool call."})})})})},ei=r(59872),eo=r(30401),ec=r(78867);let ed=e=>{var s,r,a,n,i;let{mcpServer:o,onBack:p,isEditing:f,isProxyAdmin:y,accessToken:N,userRole:_,userID:Z,availableAccessGroups:C}=e,[S,k]=(0,t.useState)(f),[P,A]=(0,t.useState)(!1),[E,z]=(0,t.useState)({}),{maskedUrl:R,hasToken:U}=w(o.url),B=(e,s)=>U?s?e:R:e,K=async(e,s)=>{await (0,ei.vQ)(e)&&(z(e=>({...e,[s]:!0})),setTimeout(()=>{z(e=>({...e,[s]:!1}))},2e3))};return(0,l.jsxs)("div",{className:"p-4 max-w-full",children:[(0,l.jsx)("div",{className:"flex justify-between items-center mb-6",children:(0,l.jsxs)("div",{children:[(0,l.jsx)(c.Z,{icon:L.Z,variant:"light",className:"mb-4",onClick:p,children:"Back to All Servers"}),(0,l.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,l.jsx)(v.Z,{children:o.server_name}),(0,l.jsx)(F.ZP,{type:"text",size:"small",icon:E["mcp-server_name"]?(0,l.jsx)(eo.Z,{size:12}):(0,l.jsx)(ec.Z,{size:12}),onClick:()=>K(o.server_name,"mcp-server_name"),className:"left-2 z-10 transition-all duration-200 ".concat(E["mcp-server_name"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")}),o.alias&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("span",{className:"ml-4 text-gray-500",children:"Alias:"}),(0,l.jsx)("span",{className:"ml-1 font-mono text-blue-600",children:o.alias}),(0,l.jsx)(F.ZP,{type:"text",size:"small",icon:E["mcp-alias"]?(0,l.jsx)(eo.Z,{size:12}):(0,l.jsx)(ec.Z,{size:12}),onClick:()=>K(o.alias,"mcp-alias"),className:"left-2 z-10 transition-all duration-200 ".concat(E["mcp-alias"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]}),(0,l.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,l.jsx)(g.Z,{className:"text-gray-500 font-mono",children:o.server_id}),(0,l.jsx)(F.ZP,{type:"text",size:"small",icon:E["mcp-server-id"]?(0,l.jsx)(eo.Z,{size:12}):(0,l.jsx)(ec.Z,{size:12}),onClick:()=>K(o.server_id,"mcp-server-id"),className:"left-2 z-10 transition-all duration-200 ".concat(E["mcp-server-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")})]})]})}),(0,l.jsxs)(m.Z,{defaultIndex:S?2:0,children:[(0,l.jsx)(x.Z,{className:"mb-4",children:[(0,l.jsx)(d.Z,{children:"Overview"},"overview"),(0,l.jsx)(d.Z,{children:"MCP Tools"},"tools"),...y?[(0,l.jsx)(d.Z,{children:"Settings"},"settings")]:[]]}),(0,l.jsxs)(h.Z,{children:[(0,l.jsxs)(u.Z,{children:[(0,l.jsxs)(j.Z,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,l.jsxs)(I.Z,{children:[(0,l.jsx)(g.Z,{children:"Transport"}),(0,l.jsx)("div",{className:"mt-2",children:(0,l.jsx)(v.Z,{children:q(null!==(n=o.transport)&&void 0!==n?n:void 0)})})]}),(0,l.jsxs)(I.Z,{children:[(0,l.jsx)(g.Z,{children:"Auth Type"}),(0,l.jsx)("div",{className:"mt-2",children:(0,l.jsx)(g.Z,{children:O(null!==(i=o.auth_type)&&void 0!==i?i:void 0)})})]}),(0,l.jsxs)(I.Z,{children:[(0,l.jsx)(g.Z,{children:"Host Url"}),(0,l.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,l.jsx)(g.Z,{className:"break-all overflow-wrap-anywhere",children:B(o.url,P)}),U&&(0,l.jsx)("button",{onClick:()=>A(!P),className:"p-1 hover:bg-gray-100 rounded",children:(0,l.jsx)(b.Z,{icon:P?M.Z:T.Z,size:"sm",className:"text-gray-500"})})]})]})]}),(0,l.jsxs)(I.Z,{className:"mt-2",children:[(0,l.jsx)(v.Z,{children:"Cost Configuration"}),(0,l.jsx)(en,{costConfig:null===(s=o.mcp_info)||void 0===s?void 0:s.mcp_server_cost_info})]})]}),(0,l.jsx)(u.Z,{children:(0,l.jsx)(eY,{serverId:o.server_id,accessToken:N,auth_type:o.auth_type,userRole:_,userID:Z,serverAlias:o.alias})}),(0,l.jsx)(u.Z,{children:(0,l.jsxs)(I.Z,{children:[(0,l.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,l.jsx)(v.Z,{children:"MCP Server Settings"}),S?null:(0,l.jsx)(c.Z,{variant:"light",onClick:()=>k(!0),children:"Edit Settings"})]}),S?(0,l.jsx)(et,{mcpServer:o,accessToken:N,onCancel:()=>k(!1),onSuccess:e=>{k(!1),p()},availableAccessGroups:C}):(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(g.Z,{className:"font-medium",children:"Server Name"}),(0,l.jsx)("div",{children:o.server_name})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(g.Z,{className:"font-medium",children:"Alias"}),(0,l.jsx)("div",{children:o.alias})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(g.Z,{className:"font-medium",children:"Description"}),(0,l.jsx)("div",{children:o.description})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(g.Z,{className:"font-medium",children:"URL"}),(0,l.jsxs)("div",{className:"font-mono break-all overflow-wrap-anywhere max-w-full flex items-center gap-2",children:[B(o.url,P),U&&(0,l.jsx)("button",{onClick:()=>A(!P),className:"p-1 hover:bg-gray-100 rounded",children:(0,l.jsx)(b.Z,{icon:P?M.Z:T.Z,size:"sm",className:"text-gray-500"})})]})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(g.Z,{className:"font-medium",children:"Transport"}),(0,l.jsx)("div",{children:q(o.transport)})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(g.Z,{className:"font-medium",children:"Extra Headers"}),(0,l.jsx)("div",{children:null===(r=o.extra_headers)||void 0===r?void 0:r.join(", ")})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(g.Z,{className:"font-medium",children:"Auth Type"}),(0,l.jsx)("div",{children:O(o.auth_type)})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(g.Z,{className:"font-medium",children:"Access Groups"}),(0,l.jsx)("div",{children:o.mcp_access_groups&&o.mcp_access_groups.length>0?(0,l.jsx)("div",{className:"flex flex-wrap gap-2",children:o.mcp_access_groups.map((e,s)=>{var r;return(0,l.jsx)("span",{className:"px-2 py-1 bg-gray-100 rounded-md text-sm",children:"string"==typeof e?e:null!==(r=null==e?void 0:e.name)&&void 0!==r?r:""},s)})}):(0,l.jsx)(g.Z,{className:"text-gray-500",children:"No access groups defined"})})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(g.Z,{className:"font-medium",children:"Allowed Tools"}),(0,l.jsx)("div",{children:o.allowed_tools&&o.allowed_tools.length>0?(0,l.jsx)("div",{className:"flex flex-wrap gap-2",children:o.allowed_tools.map((e,s)=>(0,l.jsx)("span",{className:"px-2 py-1 bg-blue-50 border border-blue-200 rounded-md text-sm",children:e},s))}):(0,l.jsx)(g.Z,{className:"text-gray-500",children:"All tools enabled"})})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)(g.Z,{className:"font-medium",children:"Cost Configuration"}),(0,l.jsx)(en,{costConfig:null===(a=o.mcp_info)||void 0===a?void 0:a.mcp_server_cost_info})]})]})]})})]})]})]})};var em=r(64504),ex=r(61778),eu=r(29271),eh=r(89245),ep=e=>{let{accessToken:s,formValues:r,onToolsLoaded:a}=e,{tools:n,isLoadingTools:i,toolsError:o,canFetchTools:c,fetchTools:d}=es({accessToken:s,formValues:r,enabled:!0});return((0,t.useEffect)(()=>{null==a||a(n)},[n,a]),c||r.url)?(0,l.jsx)(I.Z,{children:(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(Q.Z,{className:"text-blue-600"}),(0,l.jsx)(v.Z,{children:"Connection Status"})]}),!c&&r.url&&(0,l.jsxs)("div",{className:"text-center py-6 text-gray-400 border rounded-lg border-dashed",children:[(0,l.jsx)(Y.Z,{className:"text-2xl mb-2"}),(0,l.jsx)(g.Z,{children:"Complete required fields to test connection"}),(0,l.jsx)("br",{}),(0,l.jsx)(g.Z,{className:"text-sm",children:"Fill in URL, Transport, and Authentication to test MCP server connection"})]}),c&&(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(g.Z,{className:"text-gray-700 font-medium",children:i?"Testing connection to MCP server...":n.length>0?"Connection successful":o?"Connection failed":"Ready to test connection"}),(0,l.jsx)("br",{}),(0,l.jsxs)(g.Z,{className:"text-gray-500 text-sm",children:["Server: ",r.url]})]}),i&&(0,l.jsxs)("div",{className:"flex items-center text-blue-600",children:[(0,l.jsx)(X.Z,{size:"small",className:"mr-2"}),(0,l.jsx)(g.Z,{className:"text-blue-600",children:"Connecting..."})]}),!i&&!o&&n.length>0&&(0,l.jsxs)("div",{className:"flex items-center text-green-600",children:[(0,l.jsx)(Q.Z,{className:"mr-1"}),(0,l.jsx)(g.Z,{className:"text-green-600 font-medium",children:"Connected"})]}),o&&(0,l.jsxs)("div",{className:"flex items-center text-red-600",children:[(0,l.jsx)(eu.Z,{className:"mr-1"}),(0,l.jsx)(g.Z,{className:"text-red-600 font-medium",children:"Failed"})]})]}),i&&(0,l.jsxs)("div",{className:"flex items-center justify-center py-6",children:[(0,l.jsx)(X.Z,{size:"large"}),(0,l.jsx)(g.Z,{className:"ml-3",children:"Testing connection and loading tools..."})]}),o&&(0,l.jsx)(ex.Z,{message:"Connection Failed",description:o,type:"error",showIcon:!0,action:(0,l.jsx)(F.ZP,{icon:(0,l.jsx)(eh.Z,{}),onClick:d,size:"small",children:"Retry"})}),!i&&0===n.length&&!o&&(0,l.jsxs)("div",{className:"text-center py-6 text-gray-500 border rounded-lg border-dashed",children:[(0,l.jsx)(Q.Z,{className:"text-2xl mb-2 text-green-500"}),(0,l.jsx)(g.Z,{className:"text-green-600 font-medium",children:"Connection successful!"}),(0,l.jsx)("br",{}),(0,l.jsx)(g.Z,{className:"text-gray-500",children:"No tools found for this MCP server"})]})]})]})}):null},ej=r(64482),eg=e=>{let{isVisible:s}=e;return s?(0,l.jsx)(U.Z.Item,{label:(0,l.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Stdio Configuration (JSON)",(0,l.jsx)(o.Z,{title:"Paste your stdio MCP server configuration in JSON format. You can use the full mcpServers structure from config.yaml or just the inner server configuration.",children:(0,l.jsx)(G.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"stdio_config",rules:[{required:!0,message:"Please enter stdio configuration"},{validator:(e,s)=>{if(!s)return Promise.resolve();try{return JSON.parse(s),Promise.resolve()}catch(e){return Promise.reject("Please enter valid JSON")}}}],children:(0,l.jsx)(ej.default.TextArea,{placeholder:'{\n "mcpServers": {\n "circleci-mcp-server": {\n "command": "npx",\n "args": ["-y", "@circleci/mcp-server-circleci"],\n "env": {\n "CIRCLECI_TOKEN": "your-circleci-token",\n "CIRCLECI_BASE_URL": "https://circleci.com"\n }\n }\n }\n}',rows:12,className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500 font-mono text-sm"})}):null};let ev="".concat("../ui/assets/logos/","mcp_logo.png");var ef=e=>{let{userRole:s,accessToken:r,onCreateSuccess:a,isModalVisible:c,setModalVisible:d,availableAccessGroups:m}=e,[x]=U.Z.useForm(),[u,h]=(0,t.useState)(!1),[p,j]=(0,t.useState)({}),[g,v]=(0,t.useState)({}),[f,b]=(0,t.useState)(!1),[y,N]=(0,t.useState)([]),[_,Z]=(0,t.useState)([]),[w,k]=(0,t.useState)(""),[L,M]=(0,t.useState)(""),[T,I]=(0,t.useState)(""),E=(e,s)=>{if(!e){I("");return}"sse"!==s||e.endsWith("/sse")?"http"!==s||e.endsWith("/mcp")?I(""):I("Typically MCP HTTP URLs end with /mcp. You can add this url but this is a warning."):I("Typically MCP SSE URLs end with /sse. You can add this url but this is a warning.")},z=async e=>{h(!0);try{let s=e.mcp_access_groups,l={};if(e.stdio_config&&"stdio"===w)try{let s=JSON.parse(e.stdio_config),r=s;if(s.mcpServers&&"object"==typeof s.mcpServers){let l=Object.keys(s.mcpServers);if(l.length>0){let t=l[0];r=s.mcpServers[t],e.server_name||(e.server_name=t.replace(/-/g,"_"))}}l={command:r.command,args:r.args,env:r.env},console.log("Parsed stdio config:",l)}catch(e){el.Z.fromBackend("Invalid JSON in stdio configuration");return}let t={...e,...l,stdio_config:void 0,mcp_info:{server_name:e.server_name||e.url,description:e.description,mcp_server_cost_info:Object.keys(p).length>0?p:null},mcp_access_groups:s,alias:e.alias,allowed_tools:_.length>0?_:null};if(console.log("Payload: ".concat(JSON.stringify(t))),null!=r){let e=await (0,P.createMCPServer)(r,t);el.Z.success("MCP Server created successfully"),x.resetFields(),j({}),N([]),Z([]),I(""),b(!1),d(!1),a(e)}}catch(e){el.Z.fromBackend("Error creating MCP Server: "+e)}finally{h(!1)}},q=()=>{x.resetFields(),j({}),N([]),Z([]),I(""),b(!1),d(!1)};return(t.useEffect(()=>{if(!f&&g.server_name){let e=g.server_name.replace(/\s+/g,"_");x.setFieldsValue({alias:e}),v(s=>({...s,alias:e}))}},[g.server_name]),t.useEffect(()=>{c||v({})},[c]),(0,A.tY)(s))?(0,l.jsx)(i.Z,{title:(0,l.jsxs)("div",{className:"flex items-center space-x-3 pb-4 border-b border-gray-100",children:[(0,l.jsx)("img",{src:ev,alt:"MCP Logo",className:"w-8 h-8 object-contain",style:{height:"20px",width:"20px",marginRight:"8px",objectFit:"contain"}}),(0,l.jsx)("h2",{className:"text-xl font-semibold text-gray-900",children:"Add New MCP Server"})]}),open:c,width:1e3,onCancel:q,footer:null,className:"top-8",styles:{body:{padding:"24px"},header:{padding:"24px 24px 0 24px",border:"none"}},children:(0,l.jsx)("div",{className:"mt-6",children:(0,l.jsxs)(U.Z,{form:x,onFinish:z,onValuesChange:(e,s)=>v(s),layout:"vertical",className:"space-y-6",children:[(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-6",children:[(0,l.jsx)(U.Z.Item,{label:(0,l.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["MCP Server Name",(0,l.jsx)(o.Z,{title:"Best practice: Use a descriptive name that indicates the server's purpose (e.g., 'GitHub_MCP', 'Email_Service'). Hyphens '-' are not allowed; use underscores '_' instead.",children:(0,l.jsx)(G.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"server_name",rules:[{required:!1,message:"Please enter a server name"},{validator:(e,s)=>S(s)}],children:(0,l.jsx)(em.o,{placeholder:"e.g., GitHub_MCP, Zapier_MCP, etc.",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})}),(0,l.jsx)(U.Z.Item,{label:(0,l.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:["Alias",(0,l.jsx)(o.Z,{title:"A short, unique identifier for this server. Defaults to the server name with spaces replaced by underscores.",children:(0,l.jsx)(G.Z,{className:"ml-2 text-blue-400 hover:text-blue-600 cursor-help"})})]}),name:"alias",rules:[{required:!1},{validator:(e,s)=>s&&s.includes("-")?Promise.reject("Alias cannot contain '-' (hyphen). Please use '_' (underscore) instead."):Promise.resolve()}],children:(0,l.jsx)(em.o,{placeholder:"e.g., GitHub_MCP, Zapier_MCP, etc.",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500",onChange:()=>b(!0)})}),(0,l.jsx)(U.Z.Item,{label:(0,l.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Description"}),name:"description",rules:[{required:!1,message:"Please enter a server description!!!!!!!!!"}],children:(0,l.jsx)(em.o,{placeholder:"Brief description of what this server does",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})}),(0,l.jsx)(U.Z.Item,{label:(0,l.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Transport Type"}),name:"transport",rules:[{required:!0,message:"Please select a transport type"}],children:(0,l.jsxs)(n.default,{placeholder:"Select transport",className:"rounded-lg",size:"large",onChange:e=>{if(k(e),"stdio"===e)x.setFieldsValue({url:void 0,auth_type:void 0}),I("");else{x.setFieldsValue({command:void 0,args:void 0,env:void 0});let s=x.getFieldValue("url");s&&E(s,e)}},value:w,children:[(0,l.jsx)(n.default.Option,{value:"http",children:"HTTP"}),(0,l.jsx)(n.default.Option,{value:"sse",children:"Server-Sent Events (SSE)"}),(0,l.jsx)(n.default.Option,{value:"stdio",children:"Standard Input/Output (stdio)"})]})}),"stdio"!==w&&(0,l.jsx)(U.Z.Item,{label:(0,l.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"MCP Server URL"}),name:"url",rules:[{required:!0,message:"Please enter a server URL"},{validator:(e,s)=>C(s)}],children:(0,l.jsxs)("div",{children:[(0,l.jsx)(em.o,{placeholder:"https://your-mcp-server.com",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500",onChange:e=>E(e.target.value,w)}),T&&(0,l.jsx)("div",{className:"mt-1 text-red-500 text-sm font-medium",children:T})]})}),"stdio"!==w&&(0,l.jsx)(U.Z.Item,{label:(0,l.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Authentication"}),name:"auth_type",rules:[{required:!0,message:"Please select an auth type"}],children:(0,l.jsxs)(n.default,{placeholder:"Select auth type",className:"rounded-lg",size:"large",children:[(0,l.jsx)(n.default.Option,{value:"none",children:"None"}),(0,l.jsx)(n.default.Option,{value:"api_key",children:"API Key"}),(0,l.jsx)(n.default.Option,{value:"bearer_token",children:"Bearer Token"}),(0,l.jsx)(n.default.Option,{value:"basic",children:"Basic Auth"})]})}),(0,l.jsx)(eg,{isVisible:"stdio"===w})]}),(0,l.jsx)("div",{className:"mt-8",children:(0,l.jsx)(W,{availableAccessGroups:m,mcpServer:null,searchValue:L,setSearchValue:M,getAccessGroupOptions:()=>{let e=m.map(e=>({value:e,label:(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,l.jsx)("span",{className:"font-medium",children:e})]})}));return L&&!m.some(e=>e.toLowerCase().includes(L.toLowerCase()))&&e.push({value:L,label:(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,l.jsx)("span",{className:"font-medium",children:L}),(0,l.jsx)("span",{className:"text-gray-400 text-xs ml-1",children:"create new group"})]})}),e}})}),(0,l.jsx)("div",{className:"mt-8 pt-6 border-t border-gray-200",children:(0,l.jsx)(ep,{accessToken:r,formValues:g,onToolsLoaded:N})}),(0,l.jsx)("div",{className:"mt-6",children:(0,l.jsx)(er,{accessToken:r,formValues:g,allowedTools:_,existingAllowedTools:null,onAllowedToolsChange:Z})}),(0,l.jsx)("div",{className:"mt-6",children:(0,l.jsx)(J,{value:p,onChange:j,tools:y.filter(e=>_.includes(e.name)),disabled:!1})}),(0,l.jsxs)("div",{className:"flex items-center justify-end space-x-3 pt-6 border-t border-gray-100",children:[(0,l.jsx)(em.z,{variant:"secondary",onClick:q,children:"Cancel"}),(0,l.jsx)(em.z,{variant:"primary",loading:u,children:u?"Creating...":"Add MCP Server"})]})]})})}):null},eb=r(93192),ey=r(67960),eN=r(63709),e_=r(93142),eZ=r(64935),ew=r(11239),eC=r(54001),eS=r(96137),ek=r(96362),eP=r(80221),eA=r(29202);let{Title:eL,Text:eM}=eb.default,{Panel:eT}=V.default,eI=e=>{let{icon:s,title:r,description:a,children:n,serverName:i,accessGroups:o=["dev"]}=e,[c,d]=(0,t.useState)(!1),m=()=>{let e={"x-litellm-api-key":"Bearer YOUR_LITELLM_API_KEY"};if(c&&i){let s=[i.replace(/\s+/g,"_"),...o].join(",");e["x-mcp-servers"]=[s]}return e};return(0,l.jsxs)(ey.Z,{className:"border border-gray-200",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,l.jsx)("span",{className:"p-2 rounded-lg bg-gray-50",children:s}),(0,l.jsxs)("div",{children:[(0,l.jsx)(eL,{level:5,className:"mb-0",children:r}),(0,l.jsx)(eM,{className:"text-gray-600",children:a})]})]}),i&&("Implementation Example"===r||"Configuration"===r)&&(0,l.jsxs)(U.Z.Item,{className:"mb-4",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,l.jsx)(eN.Z,{size:"small",checked:c,onChange:d}),(0,l.jsxs)(eM,{className:"text-sm",children:["Limit tools to specific MCP servers or MCP groups by passing the ",(0,l.jsx)("code",{children:"x-mcp-servers"})," header"]})]}),c&&(0,l.jsx)(ex.Z,{className:"mt-2",type:"info",showIcon:!0,message:"Two Options",description:(0,l.jsxs)("div",{children:[(0,l.jsxs)("p",{children:[(0,l.jsx)("strong",{children:"Option 1:"})," Get a specific server: ",(0,l.jsxs)("code",{children:['["',i.replace(/\s+/g,"_"),'"]']})]}),(0,l.jsxs)("p",{children:[(0,l.jsx)("strong",{children:"Option 2:"})," Get a group of MCPs: ",(0,l.jsx)("code",{children:'["dev-group"]'})]}),(0,l.jsxs)("p",{className:"mt-2 text-sm text-gray-600",children:["You can also mix both: ",(0,l.jsx)("code",{children:'["Server1,dev-group"]'})]})]})})]}),t.Children.map(n,e=>{if(t.isValidElement(e)&&e.props.hasOwnProperty("code")&&e.props.hasOwnProperty("copyKey")){let s=e.props.code;if(s&&s.includes('"headers":'))return t.cloneElement(e,{code:s.replace(/"headers":\s*{[^}]*}/,'"headers": '.concat(JSON.stringify(m(),null,8)))})}return e})]})};var eE=e=>{let{currentServerAccessGroups:s=[]}=e,r=(0,P.getProxyBaseUrl)(),[a,n]=(0,t.useState)({}),[i,o]=(0,t.useState)({openai:[],litellm:[],cursor:[],http:[]}),[c]=(0,t.useState)("Zapier_MCP"),p=async(e,s)=>{await (0,ei.vQ)(e)&&(n(e=>({...e,[s]:!0})),setTimeout(()=>{n(e=>({...e,[s]:!1}))},2e3))},j=e=>{let{code:s,copyKey:r,title:t,className:n=""}=e;return(0,l.jsxs)("div",{className:"relative group",children:[t&&(0,l.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,l.jsx)(eZ.Z,{size:16,className:"text-blue-600"}),(0,l.jsx)(eM,{strong:!0,className:"text-gray-700",children:t})]}),(0,l.jsxs)(ey.Z,{className:"bg-gray-50 border border-gray-200 relative ".concat(n),children:[(0,l.jsx)(F.ZP,{type:"text",size:"small",icon:a[r]?(0,l.jsx)(eo.Z,{size:12}):(0,l.jsx)(ec.Z,{size:12}),onClick:()=>p(s,r),className:"absolute top-2 right-2 z-10 transition-all duration-200 ".concat(a[r]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100")}),(0,l.jsx)("pre",{className:"text-sm overflow-x-auto pr-10 text-gray-800 font-mono leading-relaxed",children:s})]})]})},f=e=>{let{step:s,title:r,children:t}=e;return(0,l.jsxs)("div",{className:"flex gap-4",children:[(0,l.jsx)("div",{className:"flex-shrink-0",children:(0,l.jsx)("div",{className:"w-8 h-8 bg-blue-600 text-white rounded-full flex items-center justify-center text-sm font-semibold",children:s})}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)(eM,{strong:!0,className:"text-gray-800 block mb-2",children:r}),t]})]})};return(0,l.jsx)("div",{children:(0,l.jsxs)(e_.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(v.Z,{className:"text-3xl font-bold text-gray-900 mb-3",children:"Connect to your MCP client"}),(0,l.jsx)(g.Z,{className:"text-lg text-gray-600",children:"Use tools directly from any MCP client with LiteLLM MCP. Enable your AI assistant to perform real-world tasks through a simple, secure connection."})]}),(0,l.jsxs)(m.Z,{className:"w-full",children:[(0,l.jsx)(x.Z,{className:"flex justify-start mt-8 mb-6",children:(0,l.jsxs)("div",{className:"flex bg-gray-100 p-1 rounded-lg",children:[(0,l.jsx)(d.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,l.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,l.jsx)(eZ.Z,{size:18}),"OpenAI API"]})}),(0,l.jsx)(d.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,l.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,l.jsx)(ew.Z,{size:18}),"LiteLLM Proxy"]})}),(0,l.jsx)(d.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,l.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,l.jsx)(eP.Z,{size:18}),"Cursor"]})}),(0,l.jsx)(d.Z,{className:"px-6 py-3 rounded-md transition-all duration-200",children:(0,l.jsxs)("span",{className:"flex items-center gap-2 font-medium",children:[(0,l.jsx)(eA.Z,{size:18}),"Streamable HTTP"]})})]})}),(0,l.jsxs)(h.Z,{children:[(0,l.jsx)(u.Z,{className:"mt-6",children:(0,l.jsx)(()=>(0,l.jsxs)(e_.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,l.jsxs)("div",{className:"bg-gradient-to-r from-blue-50 to-indigo-50 p-6 rounded-lg border border-blue-100",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,l.jsx)(eZ.Z,{className:"text-blue-600",size:24}),(0,l.jsx)(eL,{level:4,className:"mb-0 text-blue-900",children:"OpenAI Responses API Integration"})]}),(0,l.jsx)(eM,{className:"text-blue-700",children:"Connect OpenAI Responses API to your LiteLLM MCP server for seamless tool integration"})]}),(0,l.jsxs)(e_.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,l.jsx)(eI,{icon:(0,l.jsx)(eC.Z,{className:"text-blue-600",size:16}),title:"API Key Setup",description:"Configure your OpenAI API key for authentication",children:(0,l.jsxs)(e_.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,l.jsx)("div",{children:(0,l.jsxs)(eM,{children:["Get your API key from the"," ",(0,l.jsxs)("a",{href:"https://platform.openai.com/api-keys",target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-700 inline-flex items-center gap-1",children:["OpenAI platform ",(0,l.jsx)(ek.Z,{size:12})]})]})}),(0,l.jsx)(j,{title:"Environment Variable",code:'export OPENAI_API_KEY="sk-..."',copyKey:"openai-env"})]})}),(0,l.jsx)(eI,{icon:(0,l.jsx)(eS.Z,{className:"text-blue-600",size:16}),title:"MCP Server Information",description:"Connection details for your LiteLLM MCP server",children:(0,l.jsx)(j,{title:"Server URL",code:"".concat(r,"/mcp"),copyKey:"openai-server-url"})}),(0,l.jsx)(eI,{icon:(0,l.jsx)(eZ.Z,{className:"text-blue-600",size:16}),title:"Implementation Example",description:"Complete cURL example for using the Responses API",serverName:"Zapier Gmail",accessGroups:["dev"],children:(0,l.jsx)(j,{code:'curl --location \'https://api.openai.com/v1/responses\' \\\n--header \'Content-Type: application/json\' \\\n--header "Authorization: Bearer $OPENAI_API_KEY" \\\n--data \'{\n "model": "gpt-4.1",\n "tools": [\n {\n "type": "mcp",\n "server_label": "litellm",\n "server_url": "'.concat(r,'/mcp",\n "require_approval": "never",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n ],\n "input": "Run available tools",\n "tool_choice": "required"\n}\''),copyKey:"openai-curl",className:"text-xs"})})]})]}),{})}),(0,l.jsx)(u.Z,{className:"mt-6",children:(0,l.jsx)(()=>(0,l.jsxs)(e_.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,l.jsxs)("div",{className:"bg-gradient-to-r from-emerald-50 to-green-50 p-6 rounded-lg border border-emerald-100",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,l.jsx)(ew.Z,{className:"text-emerald-600",size:24}),(0,l.jsx)(eL,{level:4,className:"mb-0 text-emerald-900",children:"LiteLLM Proxy API Integration"})]}),(0,l.jsx)(eM,{className:"text-emerald-700",children:"Connect to LiteLLM Proxy Responses API for seamless tool integration with multiple model providers"})]}),(0,l.jsxs)(e_.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,l.jsx)(eI,{icon:(0,l.jsx)(eC.Z,{className:"text-emerald-600",size:16}),title:"API Key Setup",description:"Configure your LiteLLM Proxy API key for authentication",children:(0,l.jsxs)(e_.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,l.jsx)("div",{children:(0,l.jsx)(eM,{children:"Get your API key from your LiteLLM Proxy dashboard or contact your administrator"})}),(0,l.jsx)(j,{title:"Environment Variable",code:'export LITELLM_API_KEY="sk-..."',copyKey:"litellm-env"})]})}),(0,l.jsx)(eI,{icon:(0,l.jsx)(eS.Z,{className:"text-emerald-600",size:16}),title:"MCP Server Information",description:"Connection details for your LiteLLM MCP server",children:(0,l.jsx)(j,{title:"Server URL",code:"".concat(r,"/mcp"),copyKey:"litellm-server-url"})}),(0,l.jsx)(eI,{icon:(0,l.jsx)(eZ.Z,{className:"text-emerald-600",size:16}),title:"Implementation Example",description:"Complete cURL example for using the LiteLLM Proxy Responses API",serverName:c,accessGroups:["dev"],children:(0,l.jsx)(j,{code:"curl --location '".concat(r,'/v1/responses\' \\\n--header \'Content-Type: application/json\' \\\n--header "Authorization: Bearer $LITELLM_API_KEY" \\\n--data \'{\n "model": "gpt-4",\n "tools": [\n {\n "type": "mcp",\n "server_label": "litellm",\n "server_url": "').concat(r,'/mcp",\n "require_approval": "never",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n ],\n "input": "Run available tools",\n "tool_choice": "required"\n}\''),copyKey:"litellm-curl",className:"text-xs"})})]})]}),{})}),(0,l.jsx)(u.Z,{className:"mt-6",children:(0,l.jsx)(()=>(0,l.jsxs)(e_.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,l.jsxs)("div",{className:"bg-gradient-to-r from-purple-50 to-blue-50 p-6 rounded-lg border border-purple-100",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,l.jsx)(eP.Z,{className:"text-purple-600",size:24}),(0,l.jsx)(eL,{level:4,className:"mb-0 text-purple-900",children:"Cursor IDE Integration"})]}),(0,l.jsx)(eM,{className:"text-purple-700",children:"Use tools directly from Cursor IDE with LiteLLM MCP. Enable your AI assistant to perform real-world tasks without leaving your coding environment."})]}),(0,l.jsxs)(ey.Z,{className:"border border-gray-200",children:[(0,l.jsx)(eL,{level:5,className:"mb-4 text-gray-800",children:"Setup Instructions"}),(0,l.jsxs)(e_.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,l.jsx)(f,{step:1,title:"Open Cursor Settings",children:(0,l.jsxs)(eM,{className:"text-gray-600",children:["Use the keyboard shortcut ",(0,l.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"⇧+⌘+J"})," (Mac) or"," ",(0,l.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Ctrl+Shift+J"})," (Windows/Linux)"]})}),(0,l.jsx)(f,{step:2,title:"Navigate to MCP Tools",children:(0,l.jsx)(eM,{className:"text-gray-600",children:'Go to the "MCP Tools" tab and click "New MCP Server"'})}),(0,l.jsxs)(f,{step:3,title:"Add Configuration",children:[(0,l.jsxs)(eM,{className:"text-gray-600 mb-3",children:["Copy the JSON configuration below and paste it into Cursor, then save with"," ",(0,l.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Cmd+S"})," or"," ",(0,l.jsx)("code",{className:"bg-gray-100 px-2 py-1 rounded",children:"Ctrl+S"})]}),(0,l.jsx)(eI,{icon:(0,l.jsx)(eZ.Z,{className:"text-purple-600",size:16}),title:"Configuration",description:"Cursor MCP configuration",serverName:"Zapier Gmail",accessGroups:["dev"],children:(0,l.jsx)(j,{code:'{\n "mcpServers": {\n "Zapier_MCP": {\n "server_url": "'.concat(r,'/mcp",\n "headers": {\n "x-litellm-api-key": "Bearer YOUR_LITELLM_API_KEY",\n "x-mcp-servers": ["Zapier_MCP,dev"]\n }\n }\n }\n}'),copyKey:"cursor-config",className:"text-xs"})})]})]})]})]}),{})}),(0,l.jsx)(u.Z,{className:"mt-6",children:(0,l.jsx)(()=>(0,l.jsxs)(e_.Z,{direction:"vertical",size:"large",className:"w-full",children:[(0,l.jsxs)("div",{className:"bg-gradient-to-r from-green-50 to-teal-50 p-6 rounded-lg border border-green-100",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,l.jsx)(eA.Z,{className:"text-green-600",size:24}),(0,l.jsx)(eL,{level:4,className:"mb-0 text-green-900",children:"Streamable HTTP Transport"})]}),(0,l.jsx)(eM,{className:"text-green-700",children:"Connect to LiteLLM MCP using HTTP transport. Compatible with any MCP client that supports HTTP streaming."})]}),(0,l.jsx)(eI,{icon:(0,l.jsx)(eA.Z,{className:"text-green-600",size:16}),title:"Universal MCP Connection",description:"Use this URL with any MCP client that supports HTTP transport",children:(0,l.jsxs)(e_.Z,{direction:"vertical",size:"middle",className:"w-full",children:[(0,l.jsx)("div",{children:(0,l.jsx)(eM,{children:"Each MCP client supports different transports. Refer to your client documentation to determine the appropriate transport method."})}),(0,l.jsx)(j,{title:"Server URL",code:"".concat(r,"/mcp"),copyKey:"http-server-url"}),(0,l.jsx)(j,{title:"Headers Configuration",code:JSON.stringify({"x-litellm-api-key":"Bearer YOUR_LITELLM_API_KEY"},null,2),copyKey:"http-headers"}),(0,l.jsx)("div",{className:"mt-4",children:(0,l.jsx)(F.ZP,{type:"link",className:"p-0 h-auto text-blue-600 hover:text-blue-700",href:"https://modelcontextprotocol.io/docs/concepts/transports",icon:(0,l.jsx)(ek.Z,{size:14}),children:"Learn more about MCP transports"})})]})})]}),{})})]})]})]})})},ez=r(67187);let{Option:eq}=n.default,eO=e=>{let{isModalOpen:s,title:r,confirmDelete:t,cancelDelete:a}=e;return s?(0,l.jsx)(i.Z,{open:s,onOk:t,okType:"danger",onCancel:a,children:(0,l.jsxs)(j.Z,{numItems:1,className:"gap-2 w-full",children:[(0,l.jsx)(v.Z,{children:r}),(0,l.jsx)(p.Z,{numColSpan:1,children:(0,l.jsx)("p",{children:"Are you sure you want to delete this MCP Server?"})})]})}):null};var eR=e=>{let{accessToken:s,userRole:r,userID:i}=e,{data:p,isLoading:j,refetch:b,dataUpdatedAt:y}=(0,a.a)({queryKey:["mcpServers"],queryFn:()=>{if(!s)throw Error("Access Token required");return(0,P.fetchMCPServers)(s)},enabled:!!s});t.useEffect(()=>{p&&(console.log("MCP Servers fetched:",p),p.forEach(e=>{console.log("Server: ".concat(e.server_name||e.server_id)),console.log(" allowed_tools:",e.allowed_tools)}))},[p]);let[N,_]=(0,t.useState)(null),[Z,w]=(0,t.useState)(!1),[C,S]=(0,t.useState)(null),[L,M]=(0,t.useState)(!1),[T,I]=(0,t.useState)("all"),[E,z]=(0,t.useState)("all"),[q,O]=(0,t.useState)([]),[R,U]=(0,t.useState)(!1),F="Internal User"===r,B=t.useMemo(()=>{if(!p)return[];let e=new Set,s=[];return p.forEach(r=>{r.teams&&r.teams.forEach(r=>{let l=r.team_id;e.has(l)||(e.add(l),s.push(r))})}),s},[p]),K=t.useMemo(()=>p?Array.from(new Set(p.flatMap(e=>e.mcp_access_groups).filter(e=>null!=e))):[],[p]),V=e=>{I(e),H(e,E)},D=e=>{z(e),H(T,e)},H=(e,s)=>{if(!p)return O([]);let r=p;if("personal"===e){O([]);return}"all"!==e&&(r=r.filter(s=>{var r;return null===(r=s.teams)||void 0===r?void 0:r.some(s=>s.team_id===e)})),"all"!==s&&(r=r.filter(e=>{var r;return null===(r=e.mcp_access_groups)||void 0===r?void 0:r.some(e=>"string"==typeof e?e===s:e&&e.name===s)})),O(r)};(0,t.useEffect)(()=>{H(T,E)},[y]);let G=t.useMemo(()=>k(null!=r?r:"",e=>{S(e),M(!1)},e=>{S(e),M(!0)},Y),[r]);function Y(e){_(e),w(!0)}let J=async()=>{if(null!=N&&null!=s){try{await (0,P.deleteMCPServer)(s,N),el.Z.success("Deleted MCP Server successfully"),b()}catch(e){console.error("Error deleting the mcp server:",e)}w(!1),_(null)}};return s&&r&&i?(0,l.jsxs)("div",{className:"w-full h-full p-6",children:[(0,l.jsx)(eO,{isModalOpen:Z,title:"Delete MCP Server",confirmDelete:J,cancelDelete:()=>{w(!1),_(null)}}),(0,l.jsx)(ef,{userRole:r,accessToken:s,onCreateSuccess:e=>{O(s=>[...s,e]),U(!1)},isModalVisible:R,setModalVisible:U,availableAccessGroups:K}),(0,l.jsx)(v.Z,{children:"MCP Servers"}),(0,l.jsx)(g.Z,{className:"text-tremor-content mt-2",children:"Configure and manage your MCP servers"}),(0,A.tY)(r)&&(0,l.jsx)(c.Z,{className:"mt-4 mb-4",onClick:()=>U(!0),children:"+ Add New MCP Server"}),(0,l.jsxs)(m.Z,{className:"w-full h-full",children:[(0,l.jsx)(x.Z,{className:"flex justify-between mt-2 w-full items-center",children:(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)(d.Z,{children:"All Servers"}),(0,l.jsx)(d.Z,{children:"Connect"})]})}),(0,l.jsxs)(h.Z,{children:[(0,l.jsx)(u.Z,{children:(0,l.jsx)(()=>C?(0,l.jsx)(ed,{mcpServer:q.find(e=>e.server_id===C)||{server_id:"",server_name:"",alias:"",url:"",transport:"",auth_type:"",created_at:"",created_by:"",updated_at:"",updated_by:""},onBack:()=>{M(!1),S(null),b()},isProxyAdmin:(0,A.tY)(r),isEditing:L,accessToken:s,userID:i,userRole:r,availableAccessGroups:K}):(0,l.jsxs)("div",{className:"w-full h-full",children:[(0,l.jsx)("div",{className:"w-full px-6",children:(0,l.jsx)("div",{className:"flex flex-col space-y-4",children:(0,l.jsx)("div",{className:"flex items-center justify-between bg-gray-50 rounded-lg p-4 border-2 border-gray-200",children:(0,l.jsxs)("div",{className:"flex items-center gap-4",children:[(0,l.jsx)(g.Z,{className:"text-lg font-semibold text-gray-900",children:"Current Team:"}),(0,l.jsxs)(n.default,{value:T,onChange:V,style:{width:300},children:[(0,l.jsx)(eq,{value:"all",children:(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,l.jsx)("span",{className:"font-medium",children:F?"All Available Servers":"All Servers"})]})}),(0,l.jsx)(eq,{value:"personal",children:(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,l.jsx)("span",{className:"font-medium",children:"Personal"})]})}),B.map(e=>(0,l.jsx)(eq,{value:e.team_id,children:(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,l.jsx)("span",{className:"font-medium",children:e.team_alias||e.team_id})]})},e.team_id))]}),(0,l.jsxs)(g.Z,{className:"text-lg font-semibold text-gray-900 ml-6",children:["Access Group:",(0,l.jsx)(o.Z,{title:"An MCP Access Group is a set of users or teams that have permission to access specific MCP servers. Use access groups to control and organize who can connect to which servers.",children:(0,l.jsx)(ez.Z,{style:{marginLeft:4,color:"#888"}})})]}),(0,l.jsxs)(n.default,{value:E,onChange:D,style:{width:300},children:[(0,l.jsx)(eq,{value:"all",children:(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full"}),(0,l.jsx)("span",{className:"font-medium",children:"All Access Groups"})]})}),K.map(e=>(0,l.jsx)(eq,{value:e,children:(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),(0,l.jsx)("span",{className:"font-medium",children:e})]})},e))]})]})})})}),(0,l.jsx)("div",{className:"w-full px-6 mt-6",children:(0,l.jsx)(f.w,{data:q,columns:G,renderSubComponent:()=>(0,l.jsx)("div",{}),getRowCanExpand:()=>!1,isLoading:j,noDataMessage:"No MCP servers configured"})})]}),{})}),(0,l.jsx)(u.Z,{children:(0,l.jsx)(eE,{})})]})]})]}):(console.log("Missing required authentication parameters",{accessToken:s,userRole:r,userID:i}),(0,l.jsx)("div",{className:"p-6 text-center text-gray-500",children:"Missing required authentication parameters."}))},eU=r(21770);function eF(e){let{tool:s,needsAuth:r,authValue:a,onSubmit:n,isLoading:i,result:c,error:d,onClose:m}=e,[x]=U.Z.useForm(),[u,h]=t.useState("formatted"),[p,j]=t.useState(null),[g,v]=t.useState(null),f=t.useMemo(()=>"string"==typeof s.inputSchema?{type:"object",properties:{input:{type:"string",description:"Input for this tool"}},required:["input"]}:s.inputSchema,[s.inputSchema]),b=t.useMemo(()=>f.properties&&f.properties.params&&"object"===f.properties.params.type&&f.properties.params.properties?{type:"object",properties:f.properties.params.properties,required:f.properties.params.required||[]}:f,[f]);t.useEffect(()=>{p&&(c||d)&&v(Date.now()-p)},[c,d,p]);let y=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let s=document.createElement("textarea");s.value=e,s.style.position="fixed",s.style.opacity="0",document.body.appendChild(s),s.focus(),s.select();let r=document.execCommand("copy");if(document.body.removeChild(s),!r)throw Error("execCommand failed");return!0}}catch(e){return console.error("Copy failed:",e),!1}},N=async()=>{await y(JSON.stringify(c,null,2))?el.Z.success("Result copied to clipboard"):el.Z.fromBackend("Failed to copy result")},_=async()=>{await y(s.name)?el.Z.success("Tool name copied to clipboard"):el.Z.fromBackend("Failed to copy tool name")};return(0,l.jsxs)("div",{className:"space-y-4 h-full",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between pb-3 border-b border-gray-200",children:[(0,l.jsxs)("div",{className:"flex items-center space-x-3",children:[s.mcp_info.logo_url&&(0,l.jsx)("img",{src:s.mcp_info.logo_url,alt:"".concat(s.mcp_info.server_name," logo"),className:"w-6 h-6 object-contain"}),(0,l.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center space-x-2 mb-1",children:[(0,l.jsx)("h2",{className:"text-lg font-semibold text-gray-900",children:"Test Tool:"}),(0,l.jsxs)("div",{className:"group inline-flex items-center space-x-1 bg-slate-50 hover:bg-slate-100 px-3 py-1 rounded-md cursor-pointer transition-colors border border-slate-200",onClick:_,title:"Click to copy tool name",children:[(0,l.jsx)("span",{className:"font-mono text-slate-700 font-medium text-sm",children:s.name}),(0,l.jsx)("svg",{className:"w-3 h-3 text-slate-400 group-hover:text-slate-600 transition-colors",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,l.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})]})]}),(0,l.jsx)("p",{className:"text-xs text-gray-600",children:s.description}),(0,l.jsxs)("p",{className:"text-xs text-gray-500",children:["Provider: ",s.mcp_info.server_name]})]})]}),(0,l.jsx)(em.z,{onClick:m,variant:"light",size:"sm",className:"text-gray-500 hover:text-gray-700",children:(0,l.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,l.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,l.jsxs)("div",{className:"grid grid-cols-2 gap-4 h-full",children:[(0,l.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg",children:[(0,l.jsx)("div",{className:"border-b border-gray-100 px-4 py-2",children:(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:"Input Parameters"}),(0,l.jsx)(o.Z,{title:"Configure the input parameters for this tool call",children:(0,l.jsx)(G.Z,{className:"text-gray-400 hover:text-gray-600"})})]})}),(0,l.jsx)("div",{className:"p-4",children:(0,l.jsxs)(U.Z,{form:x,onFinish:e=>{j(Date.now()),v(null);let s={};Object.entries(e).forEach(e=>{var r;let[l,t]=e,a=null===(r=b.properties)||void 0===r?void 0:r[l];if(a&&null!=t&&""!==t)switch(a.type){case"boolean":s[l]="true"===t||!0===t;break;case"number":s[l]=Number(t);break;case"string":s[l]=String(t);break;default:s[l]=t}else null!=t&&""!==t&&(s[l]=t)}),n(f.properties&&f.properties.params&&"object"===f.properties.params.type&&f.properties.params.properties?{params:s}:s)},layout:"vertical",className:"space-y-3",children:["string"==typeof s.inputSchema?(0,l.jsx)("div",{className:"space-y-3",children:(0,l.jsx)(U.Z.Item,{label:(0,l.jsxs)("span",{className:"text-sm font-medium text-gray-700",children:["Input ",(0,l.jsx)("span",{className:"text-red-500",children:"*"})]}),name:"input",rules:[{required:!0,message:"Please enter input for this tool"}],className:"mb-3",children:(0,l.jsx)(em.o,{placeholder:"Enter input for this tool",className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"})})}):void 0===b.properties?(0,l.jsx)("div",{className:"text-center py-6 bg-gray-50 rounded-lg border border-gray-200",children:(0,l.jsxs)("div",{className:"max-w-sm mx-auto",children:[(0,l.jsx)("h4",{className:"text-sm font-medium text-gray-900 mb-1",children:"No Parameters Required"}),(0,l.jsx)("p",{className:"text-xs text-gray-500",children:"This tool can be called without any input parameters."})]})}):(0,l.jsx)("div",{className:"space-y-3",children:Object.entries(b.properties).map(e=>{var s,r,t,a,n;let[i,c]=e;return(0,l.jsxs)(U.Z.Item,{label:(0,l.jsxs)("span",{className:"text-sm font-medium text-gray-700 flex items-center",children:[i," ",(null===(s=b.required)||void 0===s?void 0:s.includes(i))&&(0,l.jsx)("span",{className:"text-red-500",children:"*"}),c.description&&(0,l.jsx)(o.Z,{title:c.description,children:(0,l.jsx)(G.Z,{className:"ml-2 text-gray-400 hover:text-gray-600"})})]}),name:i,rules:[{required:null===(r=b.required)||void 0===r?void 0:r.includes(i),message:"Please enter ".concat(i)}],className:"mb-3",children:["string"===c.type&&c.enum&&(0,l.jsxs)("select",{className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors",defaultValue:c.default,children:[!(null===(t=b.required)||void 0===t?void 0:t.includes(i))&&(0,l.jsxs)("option",{value:"",children:["Select ",i]}),c.enum.map(e=>(0,l.jsx)("option",{value:e,children:e},e))]}),"string"===c.type&&!c.enum&&(0,l.jsx)(em.o,{placeholder:c.description||"Enter ".concat(i),className:"rounded-lg border-gray-300 focus:border-blue-500 focus:ring-blue-500"}),"number"===c.type&&(0,l.jsx)("input",{type:"number",placeholder:c.description||"Enter ".concat(i),className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors"}),"boolean"===c.type&&(0,l.jsxs)("select",{className:"w-full px-3 py-2 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm transition-colors",defaultValue:(null===(a=c.default)||void 0===a?void 0:a.toString())||"",children:[!(null===(n=b.required)||void 0===n?void 0:n.includes(i))&&(0,l.jsxs)("option",{value:"",children:["Select ",i]}),(0,l.jsx)("option",{value:"true",children:"True"}),(0,l.jsx)("option",{value:"false",children:"False"})]})]},i)})}),(0,l.jsx)("div",{className:"pt-3 border-t border-gray-100",children:(0,l.jsx)(em.z,{onClick:()=>x.submit(),disabled:i,variant:"primary",className:"w-full",loading:i,children:i?"Calling Tool...":c||d?"Call Again":"Call Tool"})})]})})]}),(0,l.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg",children:[(0,l.jsx)("div",{className:"border-b border-gray-100 px-4 py-2",children:(0,l.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:"Tool Result"})}),(0,l.jsx)("div",{className:"p-4",children:c||d||i?(0,l.jsxs)("div",{className:"space-y-3",children:[c&&!i&&!d&&(0,l.jsx)("div",{className:"p-2 bg-green-50 border border-green-200 rounded-lg",children:(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,l.jsx)("svg",{className:"h-4 w-4 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,l.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}),(0,l.jsx)("h4",{className:"text-xs font-medium text-green-900",children:"Tool executed successfully"}),null!==g&&(0,l.jsxs)("span",{className:"text-xs text-green-600 ml-1",children:["• ",(g/1e3).toFixed(2),"s"]})]}),(0,l.jsxs)("div",{className:"flex items-center space-x-1",children:[(0,l.jsxs)("div",{className:"flex bg-white rounded border border-green-300 p-0.5",children:[(0,l.jsx)("button",{onClick:()=>h("formatted"),className:"px-2 py-1 text-xs font-medium rounded transition-colors ".concat("formatted"===u?"bg-green-100 text-green-800":"text-green-600 hover:text-green-800"),children:"Formatted"}),(0,l.jsx)("button",{onClick:()=>h("json"),className:"px-2 py-1 text-xs font-medium rounded transition-colors ".concat("json"===u?"bg-green-100 text-green-800":"text-green-600 hover:text-green-800"),children:"JSON"})]}),(0,l.jsx)("button",{onClick:N,className:"p-1 hover:bg-green-100 rounded text-green-700",title:"Copy response",children:(0,l.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,l.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,l.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]})]})}),(0,l.jsxs)("div",{className:"max-h-96 overflow-y-auto",children:[i&&(0,l.jsxs)("div",{className:"flex flex-col justify-center items-center h-48 text-gray-500",children:[(0,l.jsxs)("div",{className:"relative",children:[(0,l.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-gray-200"}),(0,l.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-blue-600 border-t-transparent absolute top-0"})]}),(0,l.jsx)("p",{className:"text-sm font-medium mt-3",children:"Calling tool..."}),(0,l.jsx)("p",{className:"text-xs text-gray-400 mt-1",children:"Please wait while we process your request"})]}),d&&(0,l.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-lg p-3",children:(0,l.jsxs)("div",{className:"flex items-start space-x-2",children:[(0,l.jsx)("div",{className:"flex-shrink-0",children:(0,l.jsx)("svg",{className:"h-4 w-4 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,l.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center space-x-2 mb-1",children:[(0,l.jsx)("h4",{className:"text-xs font-medium text-red-900",children:"Tool Call Failed"}),null!==g&&(0,l.jsxs)("span",{className:"text-xs text-red-600",children:["• ",(g/1e3).toFixed(2),"s"]})]}),(0,l.jsx)("div",{className:"bg-white border border-red-200 rounded p-2 max-h-48 overflow-y-auto",children:(0,l.jsx)("pre",{className:"text-xs whitespace-pre-wrap text-red-700 font-mono",children:d.message})})]})]})}),c&&!i&&!d&&(0,l.jsx)("div",{className:"space-y-3",children:"formatted"===u?c.map((e,s)=>(0,l.jsxs)("div",{className:"border border-gray-200 rounded-lg overflow-hidden",children:["text"===e.type&&(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,l.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Text Response"})}),(0,l.jsx)("div",{className:"p-3",children:(0,l.jsx)("div",{className:"bg-white rounded border border-gray-200 max-h-64 overflow-y-auto",children:(0,l.jsx)("div",{className:"p-3 space-y-2",children:e.text.split("\n\n").map((e,s)=>{if(""===e.trim())return null;if(e.startsWith("##")){let r=e.replace(/^#+\s/,"");return(0,l.jsx)("div",{className:"border-b border-gray-200 pb-1 mb-2",children:(0,l.jsx)("h3",{className:"text-sm font-semibold text-gray-900",children:r})},s)}let r=/(https?:\/\/[^\s\)]+)/g;if(r.test(e)){let t=e.split(r);return(0,l.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded p-2",children:(0,l.jsx)("div",{className:"text-xs text-gray-700 leading-relaxed whitespace-pre-wrap",children:t.map((e,s)=>r.test(e)?(0,l.jsx)("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-800 underline break-all",children:e},s):e)})},s)}return e.includes("Score:")?(0,l.jsx)("div",{className:"bg-green-50 border-l-4 border-green-400 p-2 rounded-r",children:(0,l.jsx)("p",{className:"text-xs text-green-800 font-medium whitespace-pre-wrap",children:e})},s):(0,l.jsx)("div",{className:"bg-gray-50 rounded p-2 border border-gray-200",children:(0,l.jsx)("div",{className:"text-xs text-gray-700 leading-relaxed whitespace-pre-wrap font-mono",children:e})},s)}).filter(Boolean)})})})]}),"image"===e.type&&e.url&&(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,l.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Image Response"})}),(0,l.jsx)("div",{className:"p-3",children:(0,l.jsx)("div",{className:"bg-gray-50 rounded p-3 border border-gray-200",children:(0,l.jsx)("img",{src:e.url,alt:"Tool result",className:"max-w-full h-auto rounded shadow-sm"})})})]}),"embedded_resource"===e.type&&(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:"bg-gray-50 px-3 py-1 border-b border-gray-200",children:(0,l.jsx)("span",{className:"text-xs font-medium text-gray-700 uppercase tracking-wide",children:"Embedded Resource"})}),(0,l.jsx)("div",{className:"p-3",children:(0,l.jsxs)("div",{className:"flex items-center space-x-2 p-3 bg-blue-50 border border-blue-200 rounded",children:[(0,l.jsx)("div",{className:"flex-shrink-0",children:(0,l.jsx)("svg",{className:"h-5 w-5 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,l.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})})}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsxs)("p",{className:"text-xs font-medium text-blue-900",children:["Resource Type: ",e.resource_type]}),e.url&&(0,l.jsxs)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center text-xs text-blue-600 hover:text-blue-800 hover:underline mt-1 transition-colors",children:["View Resource",(0,l.jsxs)("svg",{className:"ml-1 h-3 w-3",fill:"currentColor",viewBox:"0 0 20 20",children:[(0,l.jsx)("path",{d:"M11 3a1 1 0 100 2h2.586l-6.293 6.293a1 1 0 101.414 1.414L15 6.414V9a1 1 0 102 0V4a1 1 0 00-1-1h-5z"}),(0,l.jsx)("path",{d:"M5 5a2 2 0 00-2 2v8a2 2 0 002 2h8a2 2 0 002-2v-3a1 1 0 10-2 0v3H5V7h3a1 1 0 000-2H5z"})]})]})]})]})})]})]},s)):(0,l.jsx)("div",{className:"bg-white rounded border border-gray-200",children:(0,l.jsx)("div",{className:"p-3 overflow-auto max-h-80 bg-gray-50",children:(0,l.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-all text-gray-800",children:JSON.stringify(c,null,2)})})})})]})]}):(0,l.jsx)("div",{className:"flex flex-col justify-center items-center h-48 text-gray-500",children:(0,l.jsxs)("div",{className:"text-center max-w-sm",children:[(0,l.jsx)("div",{className:"mb-3",children:(0,l.jsx)("svg",{className:"mx-auto h-12 w-12 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,l.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1,d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,l.jsx)("h4",{className:"text-sm font-medium text-gray-900 mb-1",children:"Ready to Call Tool"}),(0,l.jsx)("p",{className:"text-xs text-gray-500 leading-relaxed",children:'Configure the input parameters and click "Call Tool" to see the results here.'})]})})})]})]})]})}var eB=r(29488),eK=r(36724),eV=r(57400),eD=r(69993);let eH=e=>{let s,{visible:r,onOk:t,onCancel:a,authType:n}=e,[o]=U.Z.useForm();if(n===E.API_KEY||n===E.BEARER_TOKEN){let e=n===E.API_KEY?"API Key":"Bearer Token";s=(0,l.jsx)(U.Z.Item,{name:"authValue",label:e,rules:[{required:!0,message:"Please input your ".concat(e)}],children:(0,l.jsx)(ej.default.Password,{})})}else n===E.BASIC&&(s=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(U.Z.Item,{name:"username",label:"Username",rules:[{required:!0,message:"Please input your username"}],children:(0,l.jsx)(ej.default,{})}),(0,l.jsx)(U.Z.Item,{name:"password",label:"Password",rules:[{required:!0,message:"Please input your password"}],children:(0,l.jsx)(ej.default.Password,{})})]}));return(0,l.jsx)(i.Z,{open:r,title:"Authentication",onOk:()=>{o.validateFields().then(e=>{n===E.BASIC?t("".concat(e.username.trim(),":").concat(e.password.trim())):t(e.authValue.trim())})},onCancel:a,destroyOnClose:!0,children:(0,l.jsx)(U.Z,{form:o,layout:"vertical",children:s})})},eG=e=>{let{authType:s,onAuthSubmit:r,onClearAuth:a,hasAuth:n}=e,[i,o]=(0,t.useState)(!1);return(0,l.jsxs)("div",{className:"space-y-3",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsxs)(eK.xv,{className:"text-sm font-medium text-gray-700",children:["Authentication ",n?"✓":""]}),(0,l.jsxs)("div",{className:"flex gap-2",children:[n&&(0,l.jsx)(eK.zx,{onClick:()=>{a()},size:"sm",variant:"secondary",className:"text-xs text-red-600 hover:text-red-700",children:"Clear"}),(0,l.jsx)(eK.zx,{onClick:()=>o(!0),size:"sm",variant:"secondary",className:"text-xs",children:n?"Update":"Add Auth"})]})]}),(0,l.jsx)(eK.xv,{className:"text-xs text-gray-500",children:n?"Authentication configured and saved locally":"Some tools may require authentication"}),(0,l.jsx)(eH,{visible:i,onOk:e=>{r(e),o(!1)},onCancel:()=>o(!1),authType:s})]})};var eY=e=>{let{serverId:s,accessToken:r,auth_type:n,userRole:i,userID:o,serverAlias:c}=e,[d,m]=(0,t.useState)(""),[x,u]=(0,t.useState)(null),[h,p]=(0,t.useState)(null),[j,g]=(0,t.useState)(null);(0,t.useEffect)(()=>{if(R(n)){let e=(0,eB.Ui)(s,c||void 0);e&&m(e)}},[s,c,n]);let v=e=>{m(e),e&&R(n)&&((0,eB.Hc)(s,e,n||"none",c||void 0),el.Z.success("Authentication token saved locally"))},f=()=>{m(""),(0,eB.e4)(s),el.Z.info("Authentication token cleared")},{data:b,isLoading:y,error:N}=(0,a.a)({queryKey:["mcpTools",s,d,c],queryFn:()=>{if(!r)throw Error("Access Token required");return(0,P.listMCPTools)(r,s,d,c||void 0)},enabled:!!r,staleTime:3e4}),{mutate:_,isPending:Z}=(0,eU.D)({mutationFn:async e=>{if(!r)throw Error("Access Token required");try{return await (0,P.callMCPTool)(r,e.tool.name,e.arguments,e.authValue,c||void 0)}catch(e){throw e}},onSuccess:e=>{p(e),g(null)},onError:e=>{g(e),p(null)}}),w=(null==b?void 0:b.tools)||[],C=""!==d;return(0,l.jsx)("div",{className:"w-full h-screen p-4 bg-white",children:(0,l.jsx)(eK.Zb,{className:"w-full rounded-xl shadow-md overflow-hidden",children:(0,l.jsxs)("div",{className:"flex h-auto w-full gap-4",children:[(0,l.jsxs)("div",{className:"w-1/4 p-4 bg-gray-50 flex flex-col",children:[(0,l.jsx)(eK.Dx,{className:"text-xl font-semibold mb-6 mt-2",children:"MCP Tools"}),(0,l.jsxs)("div",{className:"flex flex-col flex-1",children:[(0,l.jsxs)("div",{className:"flex flex-col flex-1 min-h-0",children:[(0,l.jsxs)(eK.xv,{className:"font-medium block mb-3 text-gray-700 flex items-center",children:[(0,l.jsx)(Y.Z,{className:"mr-2"})," Available Tools",w.length>0&&(0,l.jsx)("span",{className:"ml-2 bg-blue-100 text-blue-800 text-xs font-medium px-2 py-0.5 rounded-full",children:w.length})]}),y&&(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 bg-white border border-gray-200 rounded-lg",children:[(0,l.jsxs)("div",{className:"relative mb-3",children:[(0,l.jsx)("div",{className:"animate-spin rounded-full h-6 w-6 border-2 border-gray-200"}),(0,l.jsx)("div",{className:"animate-spin rounded-full h-6 w-6 border-2 border-blue-600 border-t-transparent absolute top-0"})]}),(0,l.jsx)("p",{className:"text-xs font-medium text-gray-700",children:"Loading tools..."})]}),(null==b?void 0:b.error)&&!y&&!w.length&&(0,l.jsx)("div",{className:"p-3 text-xs text-red-800 rounded-lg bg-red-50 border border-red-200",children:(0,l.jsxs)("p",{className:"font-medium",children:["Error: ",b.message]})}),!y&&!(null==b?void 0:b.error)&&(!w||0===w.length)&&(0,l.jsxs)("div",{className:"p-4 text-center bg-white border border-gray-200 rounded-lg",children:[(0,l.jsx)("div",{className:"mx-auto w-8 h-8 bg-gray-200 rounded-full flex items-center justify-center mb-2",children:(0,l.jsx)("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,l.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 8.172V5L8 4z"})})}),(0,l.jsx)("p",{className:"text-xs font-medium text-gray-700 mb-1",children:"No tools available"}),(0,l.jsx)("p",{className:"text-xs text-gray-500",children:"No tools found for this server"})]}),!y&&!(null==b?void 0:b.error)&&w.length>0&&(0,l.jsx)("div",{className:"space-y-2 flex-1 overflow-y-auto min-h-0 mcp-tools-scrollable",style:{maxHeight:"400px",scrollbarWidth:"auto",scrollbarColor:"#cbd5e0 #f7fafc"},children:w.map(e=>(0,l.jsxs)("div",{className:"border rounded-lg p-3 cursor-pointer transition-all hover:shadow-sm ".concat((null==x?void 0:x.name)===e.name?"border-blue-500 bg-blue-50 ring-1 ring-blue-200":"border-gray-200 bg-white hover:border-gray-300"),onClick:()=>{u(e),p(null),g(null)},children:[(0,l.jsxs)("div",{className:"flex items-start space-x-2",children:[e.mcp_info.logo_url&&(0,l.jsx)("img",{src:e.mcp_info.logo_url,alt:"".concat(e.mcp_info.server_name," logo"),className:"w-4 h-4 object-contain flex-shrink-0 mt-0.5"}),(0,l.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,l.jsx)("h4",{className:"font-mono text-xs font-medium text-gray-900 truncate",children:e.name}),(0,l.jsx)("p",{className:"text-xs text-gray-500 truncate",children:e.mcp_info.server_name}),(0,l.jsx)("p",{className:"text-xs text-gray-600 mt-1 line-clamp-2 leading-relaxed",children:e.description})]})]}),(null==x?void 0:x.name)===e.name&&(0,l.jsx)("div",{className:"mt-2 pt-2 border-t border-blue-200",children:(0,l.jsxs)("div",{className:"flex items-center text-xs font-medium text-blue-700",children:[(0,l.jsx)("svg",{className:"w-3 h-3 mr-1",fill:"currentColor",viewBox:"0 0 20 20",children:(0,l.jsx)("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})}),"Selected"]})})]},e.name))})]}),R(n)&&(0,l.jsx)("div",{className:"pt-4 border-t border-gray-200 flex-shrink-0 mt-6",children:C?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(eK.xv,{className:"font-medium block mb-3 text-gray-700 flex items-center",children:[(0,l.jsx)(eV.Z,{className:"mr-2"})," Authentication"]}),(0,l.jsx)(eG,{authType:n,onAuthSubmit:v,onClearAuth:f,hasAuth:C})]}):(0,l.jsxs)("div",{className:"p-4 bg-gradient-to-r from-orange-50 to-red-50 border border-orange-200 rounded-lg",children:[(0,l.jsxs)("div",{className:"flex items-center mb-3",children:[(0,l.jsx)(eV.Z,{className:"mr-2 text-orange-600 text-lg"}),(0,l.jsx)(eK.xv,{className:"font-semibold text-orange-800",children:"Authentication Required"})]}),(0,l.jsx)(eK.xv,{className:"text-sm text-orange-700 mb-4",children:"This MCP server requires authentication. You must add your credentials below to access the tools."}),(0,l.jsx)(eG,{authType:n,onAuthSubmit:v,onClearAuth:f,hasAuth:C})]})})]})]}),(0,l.jsxs)("div",{className:"w-3/4 flex flex-col bg-white",children:[(0,l.jsx)("div",{className:"p-4 border-b border-gray-200 flex justify-between items-center",children:(0,l.jsx)(eK.Dx,{className:"text-xl font-semibold mb-0",children:"Tool Testing Playground"})}),(0,l.jsx)("div",{className:"flex-1 overflow-auto p-4",children:x?(0,l.jsx)("div",{className:"h-full",children:(0,l.jsx)(eF,{tool:x,needsAuth:R(n),authValue:d,onSubmit:e=>{_({tool:x,arguments:e,authValue:d})},result:h,error:j,isLoading:Z,onClose:()=>u(null)})}):(0,l.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,l.jsx)(eD.Z,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,l.jsx)(eK.xv,{className:"text-lg font-medium text-gray-600 mb-2",children:"Select a Tool to Test"}),(0,l.jsx)(eK.xv,{className:"text-center text-gray-500 max-w-md",children:"Choose a tool from the left sidebar to start testing its functionality with custom inputs."})]})})]})]})})})}}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/13b76428-e1bf383848c17260.js b/litellm/proxy/_experimental/out/_next/static/chunks/13b76428-e1bf383848c17260.js new file mode 100644 index 00000000000..76cea35732a --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/13b76428-e1bf383848c17260.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6990],{77398:function(e,t,n){var s;e=n.nmd(e),s=function(){"use strict";function t(){return V.apply(null,arguments)}function n(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function s(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function r(e){var t;if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(t in e)if(i(e,t))return!1;return!0}function a(e){return void 0===e}function o(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function l(e,t){var n,s=[],i=e.length;for(n=0;n>>0;for(t=0;t0)for(n=0;n=0?n?"+":"":"-")+Math.pow(10,Math.max(0,t-s.length)).toString().substr(1)+s}t.suppressDeprecationWarnings=!1,t.deprecationHandler=null,A=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)i(e,t)&&n.push(t);return n};var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,W=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,P={},R={};function C(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(R[e]=i),t&&(R[t[0]]=function(){return x(i.apply(this,arguments),t[1],t[2])}),n&&(R[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function U(e,t){return e.isValid()?(P[t=H(t,e.localeData())]=P[t]||function(e){var t,n,s,i=e.match(N);for(n=0,s=i.length;n=0&&W.test(e);)e=e.replace(W,s),W.lastIndex=0,n-=1;return e}var F={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function L(e){return"string"==typeof e?F[e]||F[e.toLowerCase()]:void 0}function E(e){var t,n,s={};for(n in e)i(e,n)&&(t=L(n))&&(s[t]=e[n]);return s}var V,G,A,I,j={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1},Z=/\d/,z=/\d\d/,$=/\d{3}/,q=/\d{4}/,B=/[+-]?\d{6}/,J=/\d\d?/,Q=/\d\d\d\d?/,X=/\d\d\d\d\d\d?/,K=/\d{1,3}/,ee=/\d{1,4}/,et=/[+-]?\d{1,6}/,en=/\d+/,es=/[+-]?\d+/,ei=/Z|[+-]\d\d:?\d\d/gi,er=/Z|[+-]\d\d(?::?\d\d)?/gi,ea=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,eo=/^[1-9]\d?/,eu=/^([1-9]\d|\d)/;function el(e,t,n){I[e]=O(t)?t:function(e,s){return e&&n?n:t}}function eh(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ed(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function ec(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=ed(t)),n}I={};var ef={};function em(e,t){var n,s,i=t;for("string"==typeof e&&(e=[e]),o(t)&&(i=function(e,n){n[t]=ec(e)}),s=e.length,n=0;n68?1900:2e3)};var ew=ep("FullYear",!0);function ep(e,n){return function(s){return null!=s?(ek(this,e,s),t.updateOffset(this,n),this):ev(this,e)}}function ev(e,t){if(!e.isValid())return NaN;var n=e._d,s=e._isUTC;switch(t){case"Milliseconds":return s?n.getUTCMilliseconds():n.getMilliseconds();case"Seconds":return s?n.getUTCSeconds():n.getSeconds();case"Minutes":return s?n.getUTCMinutes():n.getMinutes();case"Hours":return s?n.getUTCHours():n.getHours();case"Date":return s?n.getUTCDate():n.getDate();case"Day":return s?n.getUTCDay():n.getDay();case"Month":return s?n.getUTCMonth():n.getMonth();case"FullYear":return s?n.getUTCFullYear():n.getFullYear();default:return NaN}}function ek(e,t,n){var s,i,r,a;if(!(!e.isValid()||isNaN(n))){switch(s=e._d,i=e._isUTC,t){case"Milliseconds":return void(i?s.setUTCMilliseconds(n):s.setMilliseconds(n));case"Seconds":return void(i?s.setUTCSeconds(n):s.setSeconds(n));case"Minutes":return void(i?s.setUTCMinutes(n):s.setMinutes(n));case"Hours":return void(i?s.setUTCHours(n):s.setHours(n));case"Date":return void(i?s.setUTCDate(n):s.setDate(n));case"FullYear":break;default:return}r=e.month(),a=29!==(a=e.date())||1!==r||ey(n)?a:28,i?s.setUTCFullYear(n,r,a):s.setFullYear(n,r,a)}}function eM(e,t){if(isNaN(e)||isNaN(t))return NaN;var n=(t%12+12)%12;return e+=(t-n)/12,1===n?ey(e)?29:28:31-n%7%2}eA=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t=0?isFinite((o=new Date(e+400,t,n,s,i,r,a)).getFullYear())&&o.setFullYear(e):o=new Date(e,t,n,s,i,r,a),o}function eN(e){var t,n;return e<100&&e>=0?(n=Array.prototype.slice.call(arguments),n[0]=e+400,isFinite((t=new Date(Date.UTC.apply(null,n))).getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function eW(e,t,n){var s=7+t-n;return-((7+eN(e,0,s).getUTCDay()-t)%7)+s-1}function eP(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+eW(e,s,i);return o<=0?a=eg(r=e-1)+o:o>eg(e)?(r=e+1,a=o-eg(e)):(r=e,a=o),{year:r,dayOfYear:a}}function eR(e,t,n){var s,i,r=eW(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+eC(i=e.year()-1,t,n):a>eC(e.year(),t,n)?(s=a-eC(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function eC(e,t,n){var s=eW(e,t,n),i=eW(e+1,t,n);return(eg(e)-s+i)/7}function eU(e,t){return e.slice(t,7).concat(e.slice(0,t))}C("w",["ww",2],"wo","week"),C("W",["WW",2],"Wo","isoWeek"),el("w",J,eo),el("ww",J,z),el("W",J,eo),el("WW",J,z),e_(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=ec(e)}),C("d",0,"do","day"),C("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),C("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),C("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),C("e",0,0,"weekday"),C("E",0,0,"isoWeekday"),el("d",J),el("e",J),el("E",J),el("dd",function(e,t){return t.weekdaysMinRegex(e)}),el("ddd",function(e,t){return t.weekdaysShortRegex(e)}),el("dddd",function(e,t){return t.weekdaysRegex(e)}),e_(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:c(n).invalidWeekday=e}),e_(["d","e","E"],function(e,t,n,s){t[s]=ec(e)});var eH="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");function eF(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(s=0,this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[];s<7;++s)r=d([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=eA.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=eA.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=eA.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=eA.call(this._weekdaysParse,a))||-1!==(i=eA.call(this._shortWeekdaysParse,a))?i:-1!==(i=eA.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=eA.call(this._shortWeekdaysParse,a))||-1!==(i=eA.call(this._weekdaysParse,a))?i:-1!==(i=eA.call(this._minWeekdaysParse,a))?i:null:-1!==(i=eA.call(this._minWeekdaysParse,a))||-1!==(i=eA.call(this._weekdaysParse,a))?i:-1!==(i=eA.call(this._shortWeekdaysParse,a))?i:null}function eL(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=d([2e3,1]).day(t),s=eh(this.weekdaysMin(n,"")),i=eh(this.weekdaysShort(n,"")),r=eh(this.weekdays(n,"")),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);a.sort(e),o.sort(e),u.sort(e),l.sort(e),this._weekdaysRegex=RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=RegExp("^("+a.join("|")+")","i")}function eE(){return this.hours()%12||12}function eV(e,t){C(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function eG(e,t){return t._meridiemParse}C("H",["HH",2],0,"hour"),C("h",["hh",2],0,eE),C("k",["kk",2],0,function(){return this.hours()||24}),C("hmm",0,0,function(){return""+eE.apply(this)+x(this.minutes(),2)}),C("hmmss",0,0,function(){return""+eE.apply(this)+x(this.minutes(),2)+x(this.seconds(),2)}),C("Hmm",0,0,function(){return""+this.hours()+x(this.minutes(),2)}),C("Hmmss",0,0,function(){return""+this.hours()+x(this.minutes(),2)+x(this.seconds(),2)}),eV("a",!0),eV("A",!1),el("a",eG),el("A",eG),el("H",J,eu),el("h",J,eo),el("k",J,eo),el("HH",J,z),el("hh",J,z),el("kk",J,z),el("hmm",Q),el("hmmss",X),el("Hmm",Q),el("Hmmss",X),em(["H","HH"],3),em(["k","kk"],function(e,t,n){var s=ec(e);t[3]=24===s?0:s}),em(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),em(["h","hh"],function(e,t,n){t[3]=ec(e),c(n).bigHour=!0}),em("hmm",function(e,t,n){var s=e.length-2;t[3]=ec(e.substr(0,s)),t[4]=ec(e.substr(s)),c(n).bigHour=!0}),em("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[3]=ec(e.substr(0,s)),t[4]=ec(e.substr(s,2)),t[5]=ec(e.substr(i)),c(n).bigHour=!0}),em("Hmm",function(e,t,n){var s=e.length-2;t[3]=ec(e.substr(0,s)),t[4]=ec(e.substr(s))}),em("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[3]=ec(e.substr(0,s)),t[4]=ec(e.substr(s,2)),t[5]=ec(e.substr(i))});var eA,eI,ej=ep("Hours",!0),eZ={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:eD,week:{dow:0,doy:6},weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysShort:eH,meridiemParse:/[ap]\.?m?\.?/i},ez={},e$={};function eq(e){return e?e.toLowerCase().replace("_","-"):e}function eB(t){var n=null;if(void 0===ez[t]&&e&&e.exports&&t&&t.match("^[^/\\\\]*$"))try{n=eI._abbr,function(){var e=Error("Cannot find module 'undefined'");throw e.code="MODULE_NOT_FOUND",e}(),eJ(n)}catch(e){ez[t]=null}return ez[t]}function eJ(e,t){var n;return e&&((n=a(t)?eX(e):eQ(e,t))?eI=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),eI._abbr}function eQ(e,t){if(null===t)return delete ez[e],null;var n,s=eZ;if(t.abbr=e,null!=ez[e])S("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=ez[e]._config;else if(null!=t.parentLocale){if(null!=ez[t.parentLocale])s=ez[t.parentLocale]._config;else{if(null==(n=eB(t.parentLocale)))return e$[t.parentLocale]||(e$[t.parentLocale]=[]),e$[t.parentLocale].push({name:e,config:t}),null;s=n._config}}return ez[e]=new T(b(s,t)),e$[e]&&e$[e].forEach(function(e){eQ(e.name,e.config)}),eJ(e),ez[e]}function eX(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return eI;if(!n(e)){if(t=eB(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r0;){if(s=eB(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&function(e,t){var n,s=Math.min(e.length,t.length);for(n=0;n=t-1)break;t--}r++}return eI}(e)}function eK(e){var t,n=e._a;return n&&-2===c(e).overflow&&(t=n[1]<0||n[1]>11?1:n[2]<1||n[2]>eM(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,c(e)._overflowDayOfYear&&(t<0||t>2)&&(t=2),c(e)._overflowWeeks&&-1===t&&(t=7),c(e)._overflowWeekday&&-1===t&&(t=8),c(e).overflow=t),e}var e0=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,e1=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,e2=/Z|[+-]\d\d(?::?\d\d)?/,e4=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],e6=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],e3=/^\/?Date\((-?\d+)/i,e5=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,e7={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function e9(e){var t,n,s,i,r,a,o=e._i,u=e0.exec(o)||e1.exec(o),l=e4.length,h=e6.length;if(u){for(t=0,c(e).iso=!0,n=l;t7)&&(l=!0)):(a=e._locale._week.dow,o=e._locale._week.doy,h=eR(tr(),a,o),s=te(n.gg,e._a[0],h.year),i=te(n.w,h.week),null!=n.d?((r=n.d)<0||r>6)&&(l=!0):null!=n.e?(r=n.e+a,(n.e<0||n.e>6)&&(l=!0)):r=a),i<1||i>eC(s,a,o)?c(e)._overflowWeeks=!0:null!=l?c(e)._overflowWeekday=!0:(u=eP(s,i,r,a,o),e._a[0]=u.year,e._dayOfYear=u.dayOfYear)),null!=e._dayOfYear&&(g=te(e._a[0],_[0]),(e._dayOfYear>eg(g)||0===e._dayOfYear)&&(c(e)._overflowDayOfYear=!0),m=eN(g,0,e._dayOfYear),e._a[1]=m.getUTCMonth(),e._a[2]=m.getUTCDate()),f=0;f<3&&null==e._a[f];++f)e._a[f]=w[f]=_[f];for(;f<7;f++)e._a[f]=w[f]=null==e._a[f]?2===f?1:0:e._a[f];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?eN:ex).apply(null,w),y=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==y&&(c(e).weekdayMismatch=!0)}}function tn(e){if(e._f===t.ISO_8601){e9(e);return}if(e._f===t.RFC_2822){e8(e);return}e._a=[],c(e).empty=!0;var n,s,r,a,o,u,l,h,d,f,m,_=""+e._i,y=_.length,g=0;for(o=0,m=(l=H(e._f,e._locale).match(N)||[]).length;o0&&c(e).unusedInput.push(d),_=_.slice(_.indexOf(u)+u.length),g+=u.length),R[h])?(u?c(e).empty=!1:c(e).unusedTokens.push(h),null!=u&&i(ef,h)&&ef[h](u,e._a,e,h)):e._strict&&!u&&c(e).unusedTokens.push(h);c(e).charsLeftOver=y-g,_.length>0&&c(e).unusedInput.push(_),e._a[3]<=12&&!0===c(e).bigHour&&e._a[3]>0&&(c(e).bigHour=void 0),c(e).parsedDateParts=e._a.slice(0),c(e).meridiem=e._meridiem,e._a[3]=(n=e._locale,s=e._a[3],null==(r=e._meridiem)?s:null!=n.meridiemHour?n.meridiemHour(s,r):(null!=n.isPM&&((a=n.isPM(r))&&s<12&&(s+=12),a||12!==s||(s=0)),s)),null!==(f=c(e).era)&&(e._a[0]=e._locale.erasConvertYear(f,e._a[0])),tt(e),eK(e)}function ts(e){var i,r=e._i,d=e._f;return(e._locale=e._locale||eX(e._l),null===r||void 0===d&&""===r)?m({nullInput:!0}):("string"==typeof r&&(e._i=r=e._locale.preparse(r)),k(r))?new v(eK(r)):(u(r)?e._d=r:n(d)?function(e){var t,n,s,i,r,a,o=!1,u=e._f.length;if(0===u){c(e).invalidFormat=!0,e._d=new Date(NaN);return}for(i=0;ithis?this:e:m()});function tu(e,t){var s,i;if(1===t.length&&n(t[0])&&(t=t[0]),!t.length)return tr();for(i=1,s=t[0];i=0?new Date(e+400,t,n)-126227808e5:new Date(e,t,n).valueOf()}function tC(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-126227808e5:Date.UTC(e,t,n)}function tU(e,t){return t.erasAbbrRegex(e)}function tH(){var e,t,n,s,i,r=[],a=[],o=[],u=[],l=this.eras();for(e=0,t=l.length;e(r=eC(e,s,i))&&(t=r),tE.call(this,e,t,n,s,i))}function tE(e,t,n,s,i){var r=eP(e,t,n,s,i),a=eN(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}C("N",0,0,"eraAbbr"),C("NN",0,0,"eraAbbr"),C("NNN",0,0,"eraAbbr"),C("NNNN",0,0,"eraName"),C("NNNNN",0,0,"eraNarrow"),C("y",["y",1],"yo","eraYear"),C("y",["yy",2],0,"eraYear"),C("y",["yyy",3],0,"eraYear"),C("y",["yyyy",4],0,"eraYear"),el("N",tU),el("NN",tU),el("NNN",tU),el("NNNN",function(e,t){return t.erasNameRegex(e)}),el("NNNNN",function(e,t){return t.erasNarrowRegex(e)}),em(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,s){var i=n._locale.erasParse(e,s,n._strict);i?c(n).era=i:c(n).invalidEra=e}),el("y",en),el("yy",en),el("yyy",en),el("yyyy",en),el("yo",function(e,t){return t._eraYearOrdinalRegex||en}),em(["y","yy","yyy","yyyy"],0),em(["yo"],function(e,t,n,s){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[0]=n._locale.eraYearOrdinalParse(e,i):t[0]=parseInt(e,10)}),C(0,["gg",2],0,function(){return this.weekYear()%100}),C(0,["GG",2],0,function(){return this.isoWeekYear()%100}),tF("gggg","weekYear"),tF("ggggg","weekYear"),tF("GGGG","isoWeekYear"),tF("GGGGG","isoWeekYear"),el("G",es),el("g",es),el("GG",J,z),el("gg",J,z),el("GGGG",ee,q),el("gggg",ee,q),el("GGGGG",et,B),el("ggggg",et,B),e_(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=ec(e)}),e_(["gg","GG"],function(e,n,s,i){n[i]=t.parseTwoDigitYear(e)}),C("Q",0,"Qo","quarter"),el("Q",Z),em("Q",function(e,t){t[1]=(ec(e)-1)*3}),C("D",["DD",2],"Do","date"),el("D",J,eo),el("DD",J,z),el("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),em(["D","DD"],2),em("Do",function(e,t){t[2]=ec(e.match(J)[0])});var tV=ep("Date",!0);C("DDD",["DDDD",3],"DDDo","dayOfYear"),el("DDD",K),el("DDDD",$),em(["DDD","DDDD"],function(e,t,n){n._dayOfYear=ec(e)}),C("m",["mm",2],0,"minute"),el("m",J,eu),el("mm",J,z),em(["m","mm"],4);var tG=ep("Minutes",!1);C("s",["ss",2],0,"second"),el("s",J,eu),el("ss",J,z),em(["s","ss"],5);var tA=ep("Seconds",!1);for(C("S",0,0,function(){return~~(this.millisecond()/100)}),C(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),C(0,["SSS",3],0,"millisecond"),C(0,["SSSS",4],0,function(){return 10*this.millisecond()}),C(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),C(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),C(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),C(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),C(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),el("S",K,Z),el("SS",K,z),el("SSS",K,$),_="SSSS";_.length<=9;_+="S")el(_,en);function tI(e,t){t[6]=ec(("0."+e)*1e3)}for(_="S";_.length<=9;_+="S")em(_,tI);y=ep("Milliseconds",!1),C("z",0,0,"zoneAbbr"),C("zz",0,0,"zoneName");var tj=v.prototype;function tZ(e){return e}tj.add=tO,tj.calendar=function(e,a){if(1==arguments.length){if(arguments[0]){var l,h,d;(l=arguments[0],k(l)||u(l)||tT(l)||o(l)||(h=n(l),d=!1,h&&(d=0===l.filter(function(e){return!o(e)&&tT(l)}).length),h&&d)||function(e){var t,n,a=s(e)&&!r(e),o=!1,u=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],l=u.length;for(t=0;tn.valueOf():n.valueOf()n.year()||n.year()>9999?U(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):O(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+6e4*this.utcOffset()).toISOString().replace("Z",U(n,"Z")):U(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},tj.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,s,i="moment",r="";return this.isLocal()||(i=0===this.utcOffset()?"moment.utc":"moment.parseZone",r="Z"),e="["+i+'("]',t=0<=this.year()&&9999>=this.year()?"YYYY":"YYYYYY",n="-MM-DD[T]HH:mm:ss.SSS",s=r+'[")]',this.format(e+t+n+s)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(tj[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),tj.toJSON=function(){return this.isValid()?this.toISOString():null},tj.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},tj.unix=function(){return Math.floor(this.valueOf()/1e3)},tj.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},tj.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},tj.eraName=function(){var e,t,n,s=this.localeData().eras();for(e=0,t=s.length;eMath.abs(e)&&!s&&(e*=60);return!this._isUTC&&n&&(i=tg(this)),this._offset=e,this._isUTC=!0,null!=i&&this.add(i,"m"),r===e||(!n||this._changeInProgress?tS(this,tk(e-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,t.updateOffset(this,!0),this._changeInProgress=null)),this},tj.utc=function(e){return this.utcOffset(0,e)},tj.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(tg(this),"m")),this},tj.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=t_(ei,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},tj.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?tr(e).utcOffset():0,(this.utcOffset()-e)%60==0)},tj.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},tj.isLocal=function(){return!!this.isValid()&&!this._isUTC},tj.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},tj.isUtc=tw,tj.isUTC=tw,tj.zoneAbbr=function(){return this._isUTC?"UTC":""},tj.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},tj.dates=D("dates accessor is deprecated. Use date instead.",tV),tj.months=D("months accessor is deprecated. Use month instead",eb),tj.years=D("years accessor is deprecated. Use year instead",ew),tj.zone=D("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),tj.isDSTShifted=D("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!a(this._isDSTShifted))return this._isDSTShifted;var e,t={};return p(t,this),(t=ts(t))._a?(e=t._isUTC?d(t._a):tr(t._a),this._isDSTShifted=this.isValid()&&function(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s0):this._isDSTShifted=!1,this._isDSTShifted});var tz=T.prototype;function t$(e,t,n,s){var i=eX(),r=d().set(s,t);return i[n](r,e)}function tq(e,t,n){if(o(e)&&(t=e,e=void 0),e=e||"",null!=t)return t$(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=t$(e,s,n,"month");return i}function tB(e,t,n,s){"boolean"==typeof e||(n=t=e,e=!1),o(t)&&(n=t,t=void 0),t=t||"";var i,r=eX(),a=e?r._week.dow:0,u=[];if(null!=n)return t$(t,(n+a)%7,s,"day");for(i=0;i<7;i++)u[i]=t$(t,(i+a)%7,s,"day");return u}tz.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return O(s)?s.call(t,n):s},tz.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(N).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])},tz.invalidDate=function(){return this._invalidDate},tz.ordinal=function(e){return this._ordinal.replace("%d",e)},tz.preparse=tZ,tz.postformat=tZ,tz.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return O(i)?i(e,t,n,s):i.replace(/%d/i,e)},tz.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return O(n)?n(t):n.replace(/%s/i,t)},tz.set=function(e){var t,n;for(n in e)i(e,n)&&(O(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},tz.eras=function(e,n){var s,i,r,a=this._eras||eX("en")._eras;for(s=0,i=a.length;s=0)return u[s]},tz.erasConvertYear=function(e,n){var s=e.since<=e.until?1:-1;return void 0===n?t(e.since).year():t(e.since).year()+(n-e.offset)*s},tz.erasAbbrRegex=function(e){return i(this,"_erasAbbrRegex")||tH.call(this),e?this._erasAbbrRegex:this._erasRegex},tz.erasNameRegex=function(e){return i(this,"_erasNameRegex")||tH.call(this),e?this._erasNameRegex:this._erasRegex},tz.erasNarrowRegex=function(e){return i(this,"_erasNarrowRegex")||tH.call(this),e?this._erasNarrowRegex:this._erasRegex},tz.months=function(e,t){return e?n(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||eY).test(t)?"format":"standalone"][e.month()]:n(this._months)?this._months:this._months.standalone},tz.monthsShort=function(e,t){return e?n(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[eY.test(t)?"format":"standalone"][e.month()]:n(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},tz.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return eS.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++)if(i=d([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e)||n&&"MMM"===t&&this._shortMonthsParse[s].test(e)||!n&&this._monthsParse[s].test(e))return s},tz.monthsRegex=function(e){return this._monthsParseExact?(i(this,"_monthsRegex")||eT.call(this),e)?this._monthsStrictRegex:this._monthsRegex:(i(this,"_monthsRegex")||(this._monthsRegex=ea),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},tz.monthsShortRegex=function(e){return this._monthsParseExact?(i(this,"_monthsRegex")||eT.call(this),e)?this._monthsShortStrictRegex:this._monthsShortRegex:(i(this,"_monthsShortRegex")||(this._monthsShortRegex=ea),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},tz.week=function(e){return eR(e,this._week.dow,this._week.doy).week},tz.firstDayOfYear=function(){return this._week.doy},tz.firstDayOfWeek=function(){return this._week.dow},tz.weekdays=function(e,t){var s=n(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?eU(s,this._week.dow):e?s[e.day()]:s},tz.weekdaysMin=function(e){return!0===e?eU(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},tz.weekdaysShort=function(e){return!0===e?eU(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},tz.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return eF.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=d([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e)||n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},tz.weekdaysRegex=function(e){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||eL.call(this),e)?this._weekdaysStrictRegex:this._weekdaysRegex:(i(this,"_weekdaysRegex")||(this._weekdaysRegex=ea),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},tz.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||eL.call(this),e)?this._weekdaysShortStrictRegex:this._weekdaysShortRegex:(i(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ea),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},tz.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||eL.call(this),e)?this._weekdaysMinStrictRegex:this._weekdaysMinRegex:(i(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=ea),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},tz.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},tz.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},eJ("en",{eras:[{since:"0001-01-01",until:Infinity,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=1===ec(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+n}}),t.lang=D("moment.lang is deprecated. Use moment.locale instead.",eJ),t.langData=D("moment.langData is deprecated. Use moment.localeData instead.",eX);var tJ=Math.abs;function tQ(e,t,n,s){var i=tk(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function tX(e){return e<0?Math.floor(e):Math.ceil(e)}function tK(e){return 4800*e/146097}function t0(e){return 146097*e/4800}function t1(e){return function(){return this.as(e)}}var t2=t1("ms"),t4=t1("s"),t6=t1("m"),t3=t1("h"),t5=t1("d"),t7=t1("w"),t9=t1("M"),t8=t1("Q"),ne=t1("y");function nt(e){return function(){return this.isValid()?this._data[e]:NaN}}var nn=nt("milliseconds"),ns=nt("seconds"),ni=nt("minutes"),nr=nt("hours"),na=nt("days"),no=nt("months"),nu=nt("years"),nl=Math.round,nh={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function nd(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}var nc=Math.abs;function nf(e){return(e>0)-(e<0)||+e}function nm(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,s,i,r,a,o,u=nc(this._milliseconds)/1e3,l=nc(this._days),h=nc(this._months),d=this.asSeconds();return d?(e=ed(u/60),t=ed(e/60),u%=60,e%=60,n=ed(h/12),h%=12,s=u?u.toFixed(3).replace(/\.?0+$/,""):"",i=d<0?"-":"",r=nf(this._months)!==nf(d)?"-":"",a=nf(this._days)!==nf(d)?"-":"",o=nf(this._milliseconds)!==nf(d)?"-":"",i+"P"+(n?r+n+"Y":"")+(h?r+h+"M":"")+(l?a+l+"D":"")+(t||e||u?"T":"")+(t?o+t+"H":"")+(e?o+e+"M":"")+(u?o+s+"S":"")):"P0D"}var n_=th.prototype;return n_.isValid=function(){return this._isValid},n_.abs=function(){var e=this._data;return this._milliseconds=tJ(this._milliseconds),this._days=tJ(this._days),this._months=tJ(this._months),e.milliseconds=tJ(e.milliseconds),e.seconds=tJ(e.seconds),e.minutes=tJ(e.minutes),e.hours=tJ(e.hours),e.months=tJ(e.months),e.years=tJ(e.years),this},n_.add=function(e,t){return tQ(this,e,t,1)},n_.subtract=function(e,t){return tQ(this,e,t,-1)},n_.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=L(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+tK(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(t0(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw Error("Unknown unit "+e)}},n_.asMilliseconds=t2,n_.asSeconds=t4,n_.asMinutes=t6,n_.asHours=t3,n_.asDays=t5,n_.asWeeks=t7,n_.asMonths=t9,n_.asQuarters=t8,n_.asYears=ne,n_.valueOf=t2,n_._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return r>=0&&a>=0&&o>=0||r<=0&&a<=0&&o<=0||(r+=864e5*tX(t0(o)+a),a=0,o=0),u.milliseconds=r%1e3,e=ed(r/1e3),u.seconds=e%60,t=ed(e/60),u.minutes=t%60,n=ed(t/60),u.hours=n%24,a+=ed(n/24),o+=i=ed(tK(a)),a-=tX(t0(i)),s=ed(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},n_.clone=function(){return tk(this)},n_.get=function(e){return e=L(e),this.isValid()?this[e+"s"]():NaN},n_.milliseconds=nn,n_.seconds=ns,n_.minutes=ni,n_.hours=nr,n_.days=na,n_.weeks=function(){return ed(this.days()/7)},n_.months=no,n_.years=nu,n_.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,s,i,r,a,o,u,l,h,d,c,f,m,_=!1,y=nh;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(_=e),"object"==typeof t&&(y=Object.assign({},nh,t),null!=t.s&&null==t.ss&&(y.ss=t.s-1)),f=this.localeData(),n=!_,s=y,i=tk(this).abs(),r=nl(i.as("s")),a=nl(i.as("m")),o=nl(i.as("h")),u=nl(i.as("d")),l=nl(i.as("M")),h=nl(i.as("w")),d=nl(i.as("y")),c=r<=s.ss&&["s",r]||r0,c[4]=f,m=nd.apply(null,c),_&&(m=f.pastFuture(+this,m)),f.postformat(m)},n_.toISOString=nm,n_.toString=nm,n_.toJSON=nm,n_.locale=tN,n_.localeData=tP,n_.toIsoString=D("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",nm),n_.lang=tW,C("X",0,0,"unix"),C("x",0,0,"valueOf"),el("x",es),el("X",/[+-]?\d+(\.\d{1,3})?/),em("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e))}),em("x",function(e,t,n){n._d=new Date(ec(e))}),t.version="2.30.1",V=tr,t.fn=tj,t.min=function(){var e=[].slice.call(arguments,0);return tu("isBefore",e)},t.max=function(){var e=[].slice.call(arguments,0);return tu("isAfter",e)},t.now=function(){return Date.now?Date.now():+new Date},t.utc=d,t.unix=function(e){return tr(1e3*e)},t.months=function(e,t){return tq(e,t,"months")},t.isDate=u,t.locale=eJ,t.invalid=m,t.duration=tk,t.isMoment=k,t.weekdays=function(e,t,n){return tB(e,t,n,"weekdays")},t.parseZone=function(){return tr.apply(null,arguments).parseZone()},t.localeData=eX,t.isDuration=td,t.monthsShort=function(e,t){return tq(e,t,"monthsShort")},t.weekdaysMin=function(e,t,n){return tB(e,t,n,"weekdaysMin")},t.defineLocale=eQ,t.updateLocale=function(e,t){if(null!=t){var n,s,i=eZ;null!=ez[e]&&null!=ez[e].parentLocale?ez[e].set(b(ez[e]._config,t)):(null!=(s=eB(e))&&(i=s._config),t=b(i,t),null==s&&(t.abbr=e),(n=new T(t)).parentLocale=ez[e],ez[e]=n),eJ(e)}else null!=ez[e]&&(null!=ez[e].parentLocale?(ez[e]=ez[e].parentLocale,e===eJ()&&eJ(e)):null!=ez[e]&&delete ez[e]);return ez[e]},t.locales=function(){return A(ez)},t.weekdaysShort=function(e,t,n){return tB(e,t,n,"weekdaysShort")},t.normalizeUnits=L,t.relativeTimeRounding=function(e){return void 0===e?nl:"function"==typeof e&&(nl=e,!0)},t.relativeTimeThreshold=function(e,t){return void 0!==nh[e]&&(void 0===t?nh[e]:(nh[e]=t,"s"===e&&(nh.ss=t-1),!0))},t.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},t.prototype=tj,t.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},t},e.exports=s()}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/13b76428-ebdf3012af0e4489.js b/litellm/proxy/_experimental/out/_next/static/chunks/13b76428-ebdf3012af0e4489.js deleted file mode 100644 index 307379053b6..00000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/13b76428-ebdf3012af0e4489.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[990],{77398:function(e,t,n){var s;e=n.nmd(e),s=function(){"use strict";function t(){return V.apply(null,arguments)}function n(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function s(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function r(e){var t;if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(t in e)if(i(e,t))return!1;return!0}function a(e){return void 0===e}function o(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function l(e,t){var n,s=[],i=e.length;for(n=0;n>>0;for(t=0;t0)for(n=0;n=0?n?"+":"":"-")+Math.pow(10,Math.max(0,t-s.length)).toString().substr(1)+s}t.suppressDeprecationWarnings=!1,t.deprecationHandler=null,A=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)i(e,t)&&n.push(t);return n};var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,W=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,P={},R={};function C(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(R[e]=i),t&&(R[t[0]]=function(){return x(i.apply(this,arguments),t[1],t[2])}),n&&(R[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function U(e,t){return e.isValid()?(P[t=H(t,e.localeData())]=P[t]||function(e){var t,n,s,i=e.match(N);for(n=0,s=i.length;n=0&&W.test(e);)e=e.replace(W,s),W.lastIndex=0,n-=1;return e}var F={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function L(e){return"string"==typeof e?F[e]||F[e.toLowerCase()]:void 0}function E(e){var t,n,s={};for(n in e)i(e,n)&&(t=L(n))&&(s[t]=e[n]);return s}var V,G,A,I,j={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1},Z=/\d/,z=/\d\d/,$=/\d{3}/,q=/\d{4}/,B=/[+-]?\d{6}/,J=/\d\d?/,Q=/\d\d\d\d?/,X=/\d\d\d\d\d\d?/,K=/\d{1,3}/,ee=/\d{1,4}/,et=/[+-]?\d{1,6}/,en=/\d+/,es=/[+-]?\d+/,ei=/Z|[+-]\d\d:?\d\d/gi,er=/Z|[+-]\d\d(?::?\d\d)?/gi,ea=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,eo=/^[1-9]\d?/,eu=/^([1-9]\d|\d)/;function el(e,t,n){I[e]=O(t)?t:function(e,s){return e&&n?n:t}}function eh(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ed(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function ec(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=ed(t)),n}I={};var ef={};function em(e,t){var n,s,i=t;for("string"==typeof e&&(e=[e]),o(t)&&(i=function(e,n){n[t]=ec(e)}),s=e.length,n=0;n68?1900:2e3)};var ew=ep("FullYear",!0);function ep(e,n){return function(s){return null!=s?(ek(this,e,s),t.updateOffset(this,n),this):ev(this,e)}}function ev(e,t){if(!e.isValid())return NaN;var n=e._d,s=e._isUTC;switch(t){case"Milliseconds":return s?n.getUTCMilliseconds():n.getMilliseconds();case"Seconds":return s?n.getUTCSeconds():n.getSeconds();case"Minutes":return s?n.getUTCMinutes():n.getMinutes();case"Hours":return s?n.getUTCHours():n.getHours();case"Date":return s?n.getUTCDate():n.getDate();case"Day":return s?n.getUTCDay():n.getDay();case"Month":return s?n.getUTCMonth():n.getMonth();case"FullYear":return s?n.getUTCFullYear():n.getFullYear();default:return NaN}}function ek(e,t,n){var s,i,r,a;if(!(!e.isValid()||isNaN(n))){switch(s=e._d,i=e._isUTC,t){case"Milliseconds":return void(i?s.setUTCMilliseconds(n):s.setMilliseconds(n));case"Seconds":return void(i?s.setUTCSeconds(n):s.setSeconds(n));case"Minutes":return void(i?s.setUTCMinutes(n):s.setMinutes(n));case"Hours":return void(i?s.setUTCHours(n):s.setHours(n));case"Date":return void(i?s.setUTCDate(n):s.setDate(n));case"FullYear":break;default:return}r=e.month(),a=29!==(a=e.date())||1!==r||ey(n)?a:28,i?s.setUTCFullYear(n,r,a):s.setFullYear(n,r,a)}}function eM(e,t){if(isNaN(e)||isNaN(t))return NaN;var n=(t%12+12)%12;return e+=(t-n)/12,1===n?ey(e)?29:28:31-n%7%2}eA=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t=0?isFinite((o=new Date(e+400,t,n,s,i,r,a)).getFullYear())&&o.setFullYear(e):o=new Date(e,t,n,s,i,r,a),o}function eN(e){var t,n;return e<100&&e>=0?(n=Array.prototype.slice.call(arguments),n[0]=e+400,isFinite((t=new Date(Date.UTC.apply(null,n))).getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function eW(e,t,n){var s=7+t-n;return-((7+eN(e,0,s).getUTCDay()-t)%7)+s-1}function eP(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+eW(e,s,i);return o<=0?a=eg(r=e-1)+o:o>eg(e)?(r=e+1,a=o-eg(e)):(r=e,a=o),{year:r,dayOfYear:a}}function eR(e,t,n){var s,i,r=eW(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+eC(i=e.year()-1,t,n):a>eC(e.year(),t,n)?(s=a-eC(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function eC(e,t,n){var s=eW(e,t,n),i=eW(e+1,t,n);return(eg(e)-s+i)/7}function eU(e,t){return e.slice(t,7).concat(e.slice(0,t))}C("w",["ww",2],"wo","week"),C("W",["WW",2],"Wo","isoWeek"),el("w",J,eo),el("ww",J,z),el("W",J,eo),el("WW",J,z),e_(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=ec(e)}),C("d",0,"do","day"),C("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),C("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),C("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),C("e",0,0,"weekday"),C("E",0,0,"isoWeekday"),el("d",J),el("e",J),el("E",J),el("dd",function(e,t){return t.weekdaysMinRegex(e)}),el("ddd",function(e,t){return t.weekdaysShortRegex(e)}),el("dddd",function(e,t){return t.weekdaysRegex(e)}),e_(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:c(n).invalidWeekday=e}),e_(["d","e","E"],function(e,t,n,s){t[s]=ec(e)});var eH="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");function eF(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(s=0,this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[];s<7;++s)r=d([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=eA.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=eA.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=eA.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=eA.call(this._weekdaysParse,a))||-1!==(i=eA.call(this._shortWeekdaysParse,a))?i:-1!==(i=eA.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=eA.call(this._shortWeekdaysParse,a))||-1!==(i=eA.call(this._weekdaysParse,a))?i:-1!==(i=eA.call(this._minWeekdaysParse,a))?i:null:-1!==(i=eA.call(this._minWeekdaysParse,a))||-1!==(i=eA.call(this._weekdaysParse,a))?i:-1!==(i=eA.call(this._shortWeekdaysParse,a))?i:null}function eL(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=d([2e3,1]).day(t),s=eh(this.weekdaysMin(n,"")),i=eh(this.weekdaysShort(n,"")),r=eh(this.weekdays(n,"")),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);a.sort(e),o.sort(e),u.sort(e),l.sort(e),this._weekdaysRegex=RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=RegExp("^("+a.join("|")+")","i")}function eE(){return this.hours()%12||12}function eV(e,t){C(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function eG(e,t){return t._meridiemParse}C("H",["HH",2],0,"hour"),C("h",["hh",2],0,eE),C("k",["kk",2],0,function(){return this.hours()||24}),C("hmm",0,0,function(){return""+eE.apply(this)+x(this.minutes(),2)}),C("hmmss",0,0,function(){return""+eE.apply(this)+x(this.minutes(),2)+x(this.seconds(),2)}),C("Hmm",0,0,function(){return""+this.hours()+x(this.minutes(),2)}),C("Hmmss",0,0,function(){return""+this.hours()+x(this.minutes(),2)+x(this.seconds(),2)}),eV("a",!0),eV("A",!1),el("a",eG),el("A",eG),el("H",J,eu),el("h",J,eo),el("k",J,eo),el("HH",J,z),el("hh",J,z),el("kk",J,z),el("hmm",Q),el("hmmss",X),el("Hmm",Q),el("Hmmss",X),em(["H","HH"],3),em(["k","kk"],function(e,t,n){var s=ec(e);t[3]=24===s?0:s}),em(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),em(["h","hh"],function(e,t,n){t[3]=ec(e),c(n).bigHour=!0}),em("hmm",function(e,t,n){var s=e.length-2;t[3]=ec(e.substr(0,s)),t[4]=ec(e.substr(s)),c(n).bigHour=!0}),em("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[3]=ec(e.substr(0,s)),t[4]=ec(e.substr(s,2)),t[5]=ec(e.substr(i)),c(n).bigHour=!0}),em("Hmm",function(e,t,n){var s=e.length-2;t[3]=ec(e.substr(0,s)),t[4]=ec(e.substr(s))}),em("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[3]=ec(e.substr(0,s)),t[4]=ec(e.substr(s,2)),t[5]=ec(e.substr(i))});var eA,eI,ej=ep("Hours",!0),eZ={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:eD,week:{dow:0,doy:6},weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysShort:eH,meridiemParse:/[ap]\.?m?\.?/i},ez={},e$={};function eq(e){return e?e.toLowerCase().replace("_","-"):e}function eB(t){var n=null;if(void 0===ez[t]&&e&&e.exports&&t&&t.match("^[^/\\\\]*$"))try{n=eI._abbr,function(){var e=Error("Cannot find module 'undefined'");throw e.code="MODULE_NOT_FOUND",e}(),eJ(n)}catch(e){ez[t]=null}return ez[t]}function eJ(e,t){var n;return e&&((n=a(t)?eX(e):eQ(e,t))?eI=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),eI._abbr}function eQ(e,t){if(null===t)return delete ez[e],null;var n,s=eZ;if(t.abbr=e,null!=ez[e])S("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=ez[e]._config;else if(null!=t.parentLocale){if(null!=ez[t.parentLocale])s=ez[t.parentLocale]._config;else{if(null==(n=eB(t.parentLocale)))return e$[t.parentLocale]||(e$[t.parentLocale]=[]),e$[t.parentLocale].push({name:e,config:t}),null;s=n._config}}return ez[e]=new T(b(s,t)),e$[e]&&e$[e].forEach(function(e){eQ(e.name,e.config)}),eJ(e),ez[e]}function eX(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return eI;if(!n(e)){if(t=eB(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r0;){if(s=eB(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&function(e,t){var n,s=Math.min(e.length,t.length);for(n=0;n=t-1)break;t--}r++}return eI}(e)}function eK(e){var t,n=e._a;return n&&-2===c(e).overflow&&(t=n[1]<0||n[1]>11?1:n[2]<1||n[2]>eM(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,c(e)._overflowDayOfYear&&(t<0||t>2)&&(t=2),c(e)._overflowWeeks&&-1===t&&(t=7),c(e)._overflowWeekday&&-1===t&&(t=8),c(e).overflow=t),e}var e0=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,e1=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,e2=/Z|[+-]\d\d(?::?\d\d)?/,e4=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],e3=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],e6=/^\/?Date\((-?\d+)/i,e5=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,e7={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function e9(e){var t,n,s,i,r,a,o=e._i,u=e0.exec(o)||e1.exec(o),l=e4.length,h=e3.length;if(u){for(t=0,c(e).iso=!0,n=l;t7)&&(l=!0)):(a=e._locale._week.dow,o=e._locale._week.doy,h=eR(tr(),a,o),s=te(n.gg,e._a[0],h.year),i=te(n.w,h.week),null!=n.d?((r=n.d)<0||r>6)&&(l=!0):null!=n.e?(r=n.e+a,(n.e<0||n.e>6)&&(l=!0)):r=a),i<1||i>eC(s,a,o)?c(e)._overflowWeeks=!0:null!=l?c(e)._overflowWeekday=!0:(u=eP(s,i,r,a,o),e._a[0]=u.year,e._dayOfYear=u.dayOfYear)),null!=e._dayOfYear&&(g=te(e._a[0],_[0]),(e._dayOfYear>eg(g)||0===e._dayOfYear)&&(c(e)._overflowDayOfYear=!0),m=eN(g,0,e._dayOfYear),e._a[1]=m.getUTCMonth(),e._a[2]=m.getUTCDate()),f=0;f<3&&null==e._a[f];++f)e._a[f]=w[f]=_[f];for(;f<7;f++)e._a[f]=w[f]=null==e._a[f]?2===f?1:0:e._a[f];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?eN:ex).apply(null,w),y=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==y&&(c(e).weekdayMismatch=!0)}}function tn(e){if(e._f===t.ISO_8601){e9(e);return}if(e._f===t.RFC_2822){e8(e);return}e._a=[],c(e).empty=!0;var n,s,r,a,o,u,l,h,d,f,m,_=""+e._i,y=_.length,g=0;for(o=0,m=(l=H(e._f,e._locale).match(N)||[]).length;o0&&c(e).unusedInput.push(d),_=_.slice(_.indexOf(u)+u.length),g+=u.length),R[h])?(u?c(e).empty=!1:c(e).unusedTokens.push(h),null!=u&&i(ef,h)&&ef[h](u,e._a,e,h)):e._strict&&!u&&c(e).unusedTokens.push(h);c(e).charsLeftOver=y-g,_.length>0&&c(e).unusedInput.push(_),e._a[3]<=12&&!0===c(e).bigHour&&e._a[3]>0&&(c(e).bigHour=void 0),c(e).parsedDateParts=e._a.slice(0),c(e).meridiem=e._meridiem,e._a[3]=(n=e._locale,s=e._a[3],null==(r=e._meridiem)?s:null!=n.meridiemHour?n.meridiemHour(s,r):(null!=n.isPM&&((a=n.isPM(r))&&s<12&&(s+=12),a||12!==s||(s=0)),s)),null!==(f=c(e).era)&&(e._a[0]=e._locale.erasConvertYear(f,e._a[0])),tt(e),eK(e)}function ts(e){var i,r=e._i,d=e._f;return(e._locale=e._locale||eX(e._l),null===r||void 0===d&&""===r)?m({nullInput:!0}):("string"==typeof r&&(e._i=r=e._locale.preparse(r)),k(r))?new v(eK(r)):(u(r)?e._d=r:n(d)?function(e){var t,n,s,i,r,a,o=!1,u=e._f.length;if(0===u){c(e).invalidFormat=!0,e._d=new Date(NaN);return}for(i=0;ithis?this:e:m()});function tu(e,t){var s,i;if(1===t.length&&n(t[0])&&(t=t[0]),!t.length)return tr();for(i=1,s=t[0];i=0?new Date(e+400,t,n)-126227808e5:new Date(e,t,n).valueOf()}function tC(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-126227808e5:Date.UTC(e,t,n)}function tU(e,t){return t.erasAbbrRegex(e)}function tH(){var e,t,n,s,i,r=[],a=[],o=[],u=[],l=this.eras();for(e=0,t=l.length;e(r=eC(e,s,i))&&(t=r),tE.call(this,e,t,n,s,i))}function tE(e,t,n,s,i){var r=eP(e,t,n,s,i),a=eN(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}C("N",0,0,"eraAbbr"),C("NN",0,0,"eraAbbr"),C("NNN",0,0,"eraAbbr"),C("NNNN",0,0,"eraName"),C("NNNNN",0,0,"eraNarrow"),C("y",["y",1],"yo","eraYear"),C("y",["yy",2],0,"eraYear"),C("y",["yyy",3],0,"eraYear"),C("y",["yyyy",4],0,"eraYear"),el("N",tU),el("NN",tU),el("NNN",tU),el("NNNN",function(e,t){return t.erasNameRegex(e)}),el("NNNNN",function(e,t){return t.erasNarrowRegex(e)}),em(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,s){var i=n._locale.erasParse(e,s,n._strict);i?c(n).era=i:c(n).invalidEra=e}),el("y",en),el("yy",en),el("yyy",en),el("yyyy",en),el("yo",function(e,t){return t._eraYearOrdinalRegex||en}),em(["y","yy","yyy","yyyy"],0),em(["yo"],function(e,t,n,s){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[0]=n._locale.eraYearOrdinalParse(e,i):t[0]=parseInt(e,10)}),C(0,["gg",2],0,function(){return this.weekYear()%100}),C(0,["GG",2],0,function(){return this.isoWeekYear()%100}),tF("gggg","weekYear"),tF("ggggg","weekYear"),tF("GGGG","isoWeekYear"),tF("GGGGG","isoWeekYear"),el("G",es),el("g",es),el("GG",J,z),el("gg",J,z),el("GGGG",ee,q),el("gggg",ee,q),el("GGGGG",et,B),el("ggggg",et,B),e_(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=ec(e)}),e_(["gg","GG"],function(e,n,s,i){n[i]=t.parseTwoDigitYear(e)}),C("Q",0,"Qo","quarter"),el("Q",Z),em("Q",function(e,t){t[1]=(ec(e)-1)*3}),C("D",["DD",2],"Do","date"),el("D",J,eo),el("DD",J,z),el("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),em(["D","DD"],2),em("Do",function(e,t){t[2]=ec(e.match(J)[0])});var tV=ep("Date",!0);C("DDD",["DDDD",3],"DDDo","dayOfYear"),el("DDD",K),el("DDDD",$),em(["DDD","DDDD"],function(e,t,n){n._dayOfYear=ec(e)}),C("m",["mm",2],0,"minute"),el("m",J,eu),el("mm",J,z),em(["m","mm"],4);var tG=ep("Minutes",!1);C("s",["ss",2],0,"second"),el("s",J,eu),el("ss",J,z),em(["s","ss"],5);var tA=ep("Seconds",!1);for(C("S",0,0,function(){return~~(this.millisecond()/100)}),C(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),C(0,["SSS",3],0,"millisecond"),C(0,["SSSS",4],0,function(){return 10*this.millisecond()}),C(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),C(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),C(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),C(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),C(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),el("S",K,Z),el("SS",K,z),el("SSS",K,$),_="SSSS";_.length<=9;_+="S")el(_,en);function tI(e,t){t[6]=ec(("0."+e)*1e3)}for(_="S";_.length<=9;_+="S")em(_,tI);y=ep("Milliseconds",!1),C("z",0,0,"zoneAbbr"),C("zz",0,0,"zoneName");var tj=v.prototype;function tZ(e){return e}tj.add=tO,tj.calendar=function(e,a){if(1==arguments.length){if(arguments[0]){var l,h,d;(l=arguments[0],k(l)||u(l)||tT(l)||o(l)||(h=n(l),d=!1,h&&(d=0===l.filter(function(e){return!o(e)&&tT(l)}).length),h&&d)||function(e){var t,n,a=s(e)&&!r(e),o=!1,u=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],l=u.length;for(t=0;tn.valueOf():n.valueOf()n.year()||n.year()>9999?U(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):O(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+6e4*this.utcOffset()).toISOString().replace("Z",U(n,"Z")):U(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},tj.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,s,i="moment",r="";return this.isLocal()||(i=0===this.utcOffset()?"moment.utc":"moment.parseZone",r="Z"),e="["+i+'("]',t=0<=this.year()&&9999>=this.year()?"YYYY":"YYYYYY",n="-MM-DD[T]HH:mm:ss.SSS",s=r+'[")]',this.format(e+t+n+s)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(tj[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),tj.toJSON=function(){return this.isValid()?this.toISOString():null},tj.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},tj.unix=function(){return Math.floor(this.valueOf()/1e3)},tj.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},tj.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},tj.eraName=function(){var e,t,n,s=this.localeData().eras();for(e=0,t=s.length;eMath.abs(e)&&!s&&(e*=60);return!this._isUTC&&n&&(i=tg(this)),this._offset=e,this._isUTC=!0,null!=i&&this.add(i,"m"),r===e||(!n||this._changeInProgress?tS(this,tk(e-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,t.updateOffset(this,!0),this._changeInProgress=null)),this},tj.utc=function(e){return this.utcOffset(0,e)},tj.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(tg(this),"m")),this},tj.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=t_(ei,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},tj.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?tr(e).utcOffset():0,(this.utcOffset()-e)%60==0)},tj.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},tj.isLocal=function(){return!!this.isValid()&&!this._isUTC},tj.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},tj.isUtc=tw,tj.isUTC=tw,tj.zoneAbbr=function(){return this._isUTC?"UTC":""},tj.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},tj.dates=D("dates accessor is deprecated. Use date instead.",tV),tj.months=D("months accessor is deprecated. Use month instead",eb),tj.years=D("years accessor is deprecated. Use year instead",ew),tj.zone=D("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),tj.isDSTShifted=D("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!a(this._isDSTShifted))return this._isDSTShifted;var e,t={};return p(t,this),(t=ts(t))._a?(e=t._isUTC?d(t._a):tr(t._a),this._isDSTShifted=this.isValid()&&function(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s0):this._isDSTShifted=!1,this._isDSTShifted});var tz=T.prototype;function t$(e,t,n,s){var i=eX(),r=d().set(s,t);return i[n](r,e)}function tq(e,t,n){if(o(e)&&(t=e,e=void 0),e=e||"",null!=t)return t$(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=t$(e,s,n,"month");return i}function tB(e,t,n,s){"boolean"==typeof e||(n=t=e,e=!1),o(t)&&(n=t,t=void 0),t=t||"";var i,r=eX(),a=e?r._week.dow:0,u=[];if(null!=n)return t$(t,(n+a)%7,s,"day");for(i=0;i<7;i++)u[i]=t$(t,(i+a)%7,s,"day");return u}tz.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return O(s)?s.call(t,n):s},tz.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(N).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])},tz.invalidDate=function(){return this._invalidDate},tz.ordinal=function(e){return this._ordinal.replace("%d",e)},tz.preparse=tZ,tz.postformat=tZ,tz.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return O(i)?i(e,t,n,s):i.replace(/%d/i,e)},tz.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return O(n)?n(t):n.replace(/%s/i,t)},tz.set=function(e){var t,n;for(n in e)i(e,n)&&(O(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},tz.eras=function(e,n){var s,i,r,a=this._eras||eX("en")._eras;for(s=0,i=a.length;s=0)return u[s]},tz.erasConvertYear=function(e,n){var s=e.since<=e.until?1:-1;return void 0===n?t(e.since).year():t(e.since).year()+(n-e.offset)*s},tz.erasAbbrRegex=function(e){return i(this,"_erasAbbrRegex")||tH.call(this),e?this._erasAbbrRegex:this._erasRegex},tz.erasNameRegex=function(e){return i(this,"_erasNameRegex")||tH.call(this),e?this._erasNameRegex:this._erasRegex},tz.erasNarrowRegex=function(e){return i(this,"_erasNarrowRegex")||tH.call(this),e?this._erasNarrowRegex:this._erasRegex},tz.months=function(e,t){return e?n(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||eY).test(t)?"format":"standalone"][e.month()]:n(this._months)?this._months:this._months.standalone},tz.monthsShort=function(e,t){return e?n(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[eY.test(t)?"format":"standalone"][e.month()]:n(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},tz.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return eS.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++)if(i=d([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e)||n&&"MMM"===t&&this._shortMonthsParse[s].test(e)||!n&&this._monthsParse[s].test(e))return s},tz.monthsRegex=function(e){return this._monthsParseExact?(i(this,"_monthsRegex")||eT.call(this),e)?this._monthsStrictRegex:this._monthsRegex:(i(this,"_monthsRegex")||(this._monthsRegex=ea),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},tz.monthsShortRegex=function(e){return this._monthsParseExact?(i(this,"_monthsRegex")||eT.call(this),e)?this._monthsShortStrictRegex:this._monthsShortRegex:(i(this,"_monthsShortRegex")||(this._monthsShortRegex=ea),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},tz.week=function(e){return eR(e,this._week.dow,this._week.doy).week},tz.firstDayOfYear=function(){return this._week.doy},tz.firstDayOfWeek=function(){return this._week.dow},tz.weekdays=function(e,t){var s=n(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?eU(s,this._week.dow):e?s[e.day()]:s},tz.weekdaysMin=function(e){return!0===e?eU(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},tz.weekdaysShort=function(e){return!0===e?eU(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},tz.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return eF.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=d([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e)||n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},tz.weekdaysRegex=function(e){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||eL.call(this),e)?this._weekdaysStrictRegex:this._weekdaysRegex:(i(this,"_weekdaysRegex")||(this._weekdaysRegex=ea),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},tz.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||eL.call(this),e)?this._weekdaysShortStrictRegex:this._weekdaysShortRegex:(i(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ea),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},tz.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||eL.call(this),e)?this._weekdaysMinStrictRegex:this._weekdaysMinRegex:(i(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=ea),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},tz.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},tz.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},eJ("en",{eras:[{since:"0001-01-01",until:Infinity,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=1===ec(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+n}}),t.lang=D("moment.lang is deprecated. Use moment.locale instead.",eJ),t.langData=D("moment.langData is deprecated. Use moment.localeData instead.",eX);var tJ=Math.abs;function tQ(e,t,n,s){var i=tk(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function tX(e){return e<0?Math.floor(e):Math.ceil(e)}function tK(e){return 4800*e/146097}function t0(e){return 146097*e/4800}function t1(e){return function(){return this.as(e)}}var t2=t1("ms"),t4=t1("s"),t3=t1("m"),t6=t1("h"),t5=t1("d"),t7=t1("w"),t9=t1("M"),t8=t1("Q"),ne=t1("y");function nt(e){return function(){return this.isValid()?this._data[e]:NaN}}var nn=nt("milliseconds"),ns=nt("seconds"),ni=nt("minutes"),nr=nt("hours"),na=nt("days"),no=nt("months"),nu=nt("years"),nl=Math.round,nh={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function nd(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}var nc=Math.abs;function nf(e){return(e>0)-(e<0)||+e}function nm(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,s,i,r,a,o,u=nc(this._milliseconds)/1e3,l=nc(this._days),h=nc(this._months),d=this.asSeconds();return d?(e=ed(u/60),t=ed(e/60),u%=60,e%=60,n=ed(h/12),h%=12,s=u?u.toFixed(3).replace(/\.?0+$/,""):"",i=d<0?"-":"",r=nf(this._months)!==nf(d)?"-":"",a=nf(this._days)!==nf(d)?"-":"",o=nf(this._milliseconds)!==nf(d)?"-":"",i+"P"+(n?r+n+"Y":"")+(h?r+h+"M":"")+(l?a+l+"D":"")+(t||e||u?"T":"")+(t?o+t+"H":"")+(e?o+e+"M":"")+(u?o+s+"S":"")):"P0D"}var n_=th.prototype;return n_.isValid=function(){return this._isValid},n_.abs=function(){var e=this._data;return this._milliseconds=tJ(this._milliseconds),this._days=tJ(this._days),this._months=tJ(this._months),e.milliseconds=tJ(e.milliseconds),e.seconds=tJ(e.seconds),e.minutes=tJ(e.minutes),e.hours=tJ(e.hours),e.months=tJ(e.months),e.years=tJ(e.years),this},n_.add=function(e,t){return tQ(this,e,t,1)},n_.subtract=function(e,t){return tQ(this,e,t,-1)},n_.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=L(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+tK(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(t0(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw Error("Unknown unit "+e)}},n_.asMilliseconds=t2,n_.asSeconds=t4,n_.asMinutes=t3,n_.asHours=t6,n_.asDays=t5,n_.asWeeks=t7,n_.asMonths=t9,n_.asQuarters=t8,n_.asYears=ne,n_.valueOf=t2,n_._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return r>=0&&a>=0&&o>=0||r<=0&&a<=0&&o<=0||(r+=864e5*tX(t0(o)+a),a=0,o=0),u.milliseconds=r%1e3,e=ed(r/1e3),u.seconds=e%60,t=ed(e/60),u.minutes=t%60,n=ed(t/60),u.hours=n%24,a+=ed(n/24),o+=i=ed(tK(a)),a-=tX(t0(i)),s=ed(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},n_.clone=function(){return tk(this)},n_.get=function(e){return e=L(e),this.isValid()?this[e+"s"]():NaN},n_.milliseconds=nn,n_.seconds=ns,n_.minutes=ni,n_.hours=nr,n_.days=na,n_.weeks=function(){return ed(this.days()/7)},n_.months=no,n_.years=nu,n_.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,s,i,r,a,o,u,l,h,d,c,f,m,_=!1,y=nh;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(_=e),"object"==typeof t&&(y=Object.assign({},nh,t),null!=t.s&&null==t.ss&&(y.ss=t.s-1)),f=this.localeData(),n=!_,s=y,i=tk(this).abs(),r=nl(i.as("s")),a=nl(i.as("m")),o=nl(i.as("h")),u=nl(i.as("d")),l=nl(i.as("M")),h=nl(i.as("w")),d=nl(i.as("y")),c=r<=s.ss&&["s",r]||r0,c[4]=f,m=nd.apply(null,c),_&&(m=f.pastFuture(+this,m)),f.postformat(m)},n_.toISOString=nm,n_.toString=nm,n_.toJSON=nm,n_.locale=tN,n_.localeData=tP,n_.toIsoString=D("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",nm),n_.lang=tW,C("X",0,0,"unix"),C("x",0,0,"valueOf"),el("x",es),el("X",/[+-]?\d+(\.\d{1,3})?/),em("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e))}),em("x",function(e,t,n){n._d=new Date(ec(e))}),t.version="2.30.1",V=tr,t.fn=tj,t.min=function(){var e=[].slice.call(arguments,0);return tu("isBefore",e)},t.max=function(){var e=[].slice.call(arguments,0);return tu("isAfter",e)},t.now=function(){return Date.now?Date.now():+new Date},t.utc=d,t.unix=function(e){return tr(1e3*e)},t.months=function(e,t){return tq(e,t,"months")},t.isDate=u,t.locale=eJ,t.invalid=m,t.duration=tk,t.isMoment=k,t.weekdays=function(e,t,n){return tB(e,t,n,"weekdays")},t.parseZone=function(){return tr.apply(null,arguments).parseZone()},t.localeData=eX,t.isDuration=td,t.monthsShort=function(e,t){return tq(e,t,"monthsShort")},t.weekdaysMin=function(e,t,n){return tB(e,t,n,"weekdaysMin")},t.defineLocale=eQ,t.updateLocale=function(e,t){if(null!=t){var n,s,i=eZ;null!=ez[e]&&null!=ez[e].parentLocale?ez[e].set(b(ez[e]._config,t)):(null!=(s=eB(e))&&(i=s._config),t=b(i,t),null==s&&(t.abbr=e),(n=new T(t)).parentLocale=ez[e],ez[e]=n),eJ(e)}else null!=ez[e]&&(null!=ez[e].parentLocale?(ez[e]=ez[e].parentLocale,e===eJ()&&eJ(e)):null!=ez[e]&&delete ez[e]);return ez[e]},t.locales=function(){return A(ez)},t.weekdaysShort=function(e,t,n){return tB(e,t,n,"weekdaysShort")},t.normalizeUnits=L,t.relativeTimeRounding=function(e){return void 0===e?nl:"function"==typeof e&&(nl=e,!0)},t.relativeTimeThreshold=function(e,t){return void 0!==nh[e]&&(void 0===t?nh[e]:(nh[e]=t,"s"===e&&(nh.ss=t-1),!0))},t.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},t.prototype=tj,t.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},t},e.exports=s()}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/1487-ada9ecf7dd9bca97.js b/litellm/proxy/_experimental/out/_next/static/chunks/1487-ada9ecf7dd9bca97.js new file mode 100644 index 00000000000..dddce2ff9a2 --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/1487-ada9ecf7dd9bca97.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1487],{21487:function(e,t,n){let r,o,a;n.d(t,{Z:function(){return nU}});var i,l,u,s,d=n(5853),c=n(2265),f=n(54887),m=n(13323),v=n(64518),h=n(96822),p=n(40048),g=n(72238),b=n(93689);let y=(0,c.createContext)(!1);var w=n(61424),x=n(27847);let k=c.Fragment,M=c.Fragment,C=(0,c.createContext)(null),D=(0,c.createContext)(null);Object.assign((0,x.yV)(function(e,t){var n;let r,o,a=(0,c.useRef)(null),i=(0,b.T)((0,b.h)(e=>{a.current=e}),t),l=(0,p.i)(a),u=function(e){let t=(0,c.useContext)(y),n=(0,c.useContext)(C),r=(0,p.i)(e),[o,a]=(0,c.useState)(()=>{if(!t&&null!==n||w.O.isServer)return null;let e=null==r?void 0:r.getElementById("headlessui-portal-root");if(e)return e;if(null===r)return null;let o=r.createElement("div");return o.setAttribute("id","headlessui-portal-root"),r.body.appendChild(o)});return(0,c.useEffect)(()=>{null!==o&&(null!=r&&r.body.contains(o)||null==r||r.body.appendChild(o))},[o,r]),(0,c.useEffect)(()=>{t||null!==n&&a(n.current)},[n,a,t]),o}(a),[s]=(0,c.useState)(()=>{var e;return w.O.isServer?null:null!=(e=null==l?void 0:l.createElement("div"))?e:null}),d=(0,c.useContext)(D),M=(0,g.H)();return(0,v.e)(()=>{!u||!s||u.contains(s)||(s.setAttribute("data-headlessui-portal",""),u.appendChild(s))},[u,s]),(0,v.e)(()=>{if(s&&d)return d.register(s)},[d,s]),n=()=>{var e;u&&s&&(s instanceof Node&&u.contains(s)&&u.removeChild(s),u.childNodes.length<=0&&(null==(e=u.parentElement)||e.removeChild(u)))},r=(0,m.z)(n),o=(0,c.useRef)(!1),(0,c.useEffect)(()=>(o.current=!1,()=>{o.current=!0,(0,h.Y)(()=>{o.current&&r()})}),[r]),M&&u&&s?(0,f.createPortal)((0,x.sY)({ourProps:{ref:i},theirProps:e,defaultTag:k,name:"Portal"}),s):null}),{Group:(0,x.yV)(function(e,t){let{target:n,...r}=e,o={ref:(0,b.T)(t)};return c.createElement(C.Provider,{value:n},(0,x.sY)({ourProps:o,theirProps:r,defaultTag:M,name:"Popover.Group"}))})});var T=n(31948),N=n(17684),P=n(32539),E=n(80004),S=n(38198),_=n(3141),j=((r=j||{})[r.Forwards=0]="Forwards",r[r.Backwards=1]="Backwards",r);function O(){let e=(0,c.useRef)(0);return(0,_.s)("keydown",t=>{"Tab"===t.key&&(e.current=t.shiftKey?1:0)},!0),e}var Z=n(37863),L=n(47634),Y=n(37105),F=n(24536),W=n(40293),R=n(37388),I=((o=I||{})[o.Open=0]="Open",o[o.Closed=1]="Closed",o),U=((a=U||{})[a.TogglePopover=0]="TogglePopover",a[a.ClosePopover=1]="ClosePopover",a[a.SetButton=2]="SetButton",a[a.SetButtonId=3]="SetButtonId",a[a.SetPanel=4]="SetPanel",a[a.SetPanelId=5]="SetPanelId",a);let H={0:e=>{let t={...e,popoverState:(0,F.E)(e.popoverState,{0:1,1:0})};return 0===t.popoverState&&(t.__demoMode=!1),t},1:e=>1===e.popoverState?e:{...e,popoverState:1},2:(e,t)=>e.button===t.button?e:{...e,button:t.button},3:(e,t)=>e.buttonId===t.buttonId?e:{...e,buttonId:t.buttonId},4:(e,t)=>e.panel===t.panel?e:{...e,panel:t.panel},5:(e,t)=>e.panelId===t.panelId?e:{...e,panelId:t.panelId}},B=(0,c.createContext)(null);function z(e){let t=(0,c.useContext)(B);if(null===t){let t=Error("<".concat(e," /> is missing a parent component."));throw Error.captureStackTrace&&Error.captureStackTrace(t,z),t}return t}B.displayName="PopoverContext";let A=(0,c.createContext)(null);function q(e){let t=(0,c.useContext)(A);if(null===t){let t=Error("<".concat(e," /> is missing a parent component."));throw Error.captureStackTrace&&Error.captureStackTrace(t,q),t}return t}A.displayName="PopoverAPIContext";let V=(0,c.createContext)(null);function G(){return(0,c.useContext)(V)}V.displayName="PopoverGroupContext";let X=(0,c.createContext)(null);function K(e,t){return(0,F.E)(t.type,H,e,t)}X.displayName="PopoverPanelContext";let Q=x.AN.RenderStrategy|x.AN.Static,J=x.AN.RenderStrategy|x.AN.Static,$=Object.assign((0,x.yV)(function(e,t){var n,r,o,a;let i,l,u,s,d,f;let{__demoMode:v=!1,...h}=e,g=(0,c.useRef)(null),y=(0,b.T)(t,(0,b.h)(e=>{g.current=e})),w=(0,c.useRef)([]),k=(0,c.useReducer)(K,{__demoMode:v,popoverState:v?0:1,buttons:w,button:null,buttonId:null,panel:null,panelId:null,beforePanelSentinel:(0,c.createRef)(),afterPanelSentinel:(0,c.createRef)()}),[{popoverState:M,button:C,buttonId:N,panel:E,panelId:_,beforePanelSentinel:j,afterPanelSentinel:O},L]=k,W=(0,p.i)(null!=(n=g.current)?n:C),R=(0,c.useMemo)(()=>{if(!C||!E)return!1;for(let e of document.querySelectorAll("body > *"))if(Number(null==e?void 0:e.contains(C))^Number(null==e?void 0:e.contains(E)))return!0;let e=(0,Y.GO)(),t=e.indexOf(C),n=(t+e.length-1)%e.length,r=(t+1)%e.length,o=e[n],a=e[r];return!E.contains(o)&&!E.contains(a)},[C,E]),I=(0,T.E)(N),U=(0,T.E)(_),H=(0,c.useMemo)(()=>({buttonId:I,panelId:U,close:()=>L({type:1})}),[I,U,L]),z=G(),q=null==z?void 0:z.registerPopover,V=(0,m.z)(()=>{var e;return null!=(e=null==z?void 0:z.isFocusWithinPopoverGroup())?e:(null==W?void 0:W.activeElement)&&((null==C?void 0:C.contains(W.activeElement))||(null==E?void 0:E.contains(W.activeElement)))});(0,c.useEffect)(()=>null==q?void 0:q(H),[q,H]);let[Q,J]=(i=(0,c.useContext)(D),l=(0,c.useRef)([]),u=(0,m.z)(e=>(l.current.push(e),i&&i.register(e),()=>s(e))),s=(0,m.z)(e=>{let t=l.current.indexOf(e);-1!==t&&l.current.splice(t,1),i&&i.unregister(e)}),d=(0,c.useMemo)(()=>({register:u,unregister:s,portals:l}),[u,s,l]),[l,(0,c.useMemo)(()=>function(e){let{children:t}=e;return c.createElement(D.Provider,{value:d},t)},[d])]),$=function(){var e;let{defaultContainers:t=[],portals:n,mainTreeNodeRef:r}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=(0,c.useRef)(null!=(e=null==r?void 0:r.current)?e:null),a=(0,p.i)(o),i=(0,m.z)(()=>{var e,r,i;let l=[];for(let e of t)null!==e&&(e instanceof HTMLElement?l.push(e):"current"in e&&e.current instanceof HTMLElement&&l.push(e.current));if(null!=n&&n.current)for(let e of n.current)l.push(e);for(let t of null!=(e=null==a?void 0:a.querySelectorAll("html > *, body > *"))?e:[])t!==document.body&&t!==document.head&&t instanceof HTMLElement&&"headlessui-portal-root"!==t.id&&(t.contains(o.current)||t.contains(null==(i=null==(r=o.current)?void 0:r.getRootNode())?void 0:i.host)||l.some(e=>t.contains(e))||l.push(t));return l});return{resolveContainers:i,contains:(0,m.z)(e=>i().some(t=>t.contains(e))),mainTreeNodeRef:o,MainTreeNode:(0,c.useMemo)(()=>function(){return null!=r?null:c.createElement(S._,{features:S.A.Hidden,ref:o})},[o,r])}}({mainTreeNodeRef:null==z?void 0:z.mainTreeNodeRef,portals:Q,defaultContainers:[C,E]});r=null==W?void 0:W.defaultView,o="focus",a=e=>{var t,n,r,o;e.target!==window&&e.target instanceof HTMLElement&&0===M&&(V()||C&&E&&($.contains(e.target)||null!=(n=null==(t=j.current)?void 0:t.contains)&&n.call(t,e.target)||null!=(o=null==(r=O.current)?void 0:r.contains)&&o.call(r,e.target)||L({type:1})))},f=(0,T.E)(a),(0,c.useEffect)(()=>{function e(e){f.current(e)}return(r=null!=r?r:window).addEventListener(o,e,!0),()=>r.removeEventListener(o,e,!0)},[r,o,!0]),(0,P.O)($.resolveContainers,(e,t)=>{L({type:1}),(0,Y.sP)(t,Y.tJ.Loose)||(e.preventDefault(),null==C||C.focus())},0===M);let ee=(0,m.z)(e=>{L({type:1});let t=e?e instanceof HTMLElement?e:"current"in e&&e.current instanceof HTMLElement?e.current:C:C;null==t||t.focus()}),et=(0,c.useMemo)(()=>({close:ee,isPortalled:R}),[ee,R]),en=(0,c.useMemo)(()=>({open:0===M,close:ee}),[M,ee]);return c.createElement(X.Provider,{value:null},c.createElement(B.Provider,{value:k},c.createElement(A.Provider,{value:et},c.createElement(Z.up,{value:(0,F.E)(M,{0:Z.ZM.Open,1:Z.ZM.Closed})},c.createElement(J,null,(0,x.sY)({ourProps:{ref:y},theirProps:h,slot:en,defaultTag:"div",name:"Popover"}),c.createElement($.MainTreeNode,null))))))}),{Button:(0,x.yV)(function(e,t){let n=(0,N.M)(),{id:r="headlessui-popover-button-".concat(n),...o}=e,[a,i]=z("Popover.Button"),{isPortalled:l}=q("Popover.Button"),u=(0,c.useRef)(null),s="headlessui-focus-sentinel-".concat((0,N.M)()),d=G(),f=null==d?void 0:d.closeOthers,v=null!==(0,c.useContext)(X);(0,c.useEffect)(()=>{if(!v)return i({type:3,buttonId:r}),()=>{i({type:3,buttonId:null})}},[v,r,i]);let[h]=(0,c.useState)(()=>Symbol()),g=(0,b.T)(u,t,v?null:e=>{if(e)a.buttons.current.push(h);else{let e=a.buttons.current.indexOf(h);-1!==e&&a.buttons.current.splice(e,1)}a.buttons.current.length>1&&console.warn("You are already using a but only 1 is supported."),e&&i({type:2,button:e})}),y=(0,b.T)(u,t),w=(0,p.i)(u),k=(0,m.z)(e=>{var t,n,r;if(v){if(1===a.popoverState)return;switch(e.key){case R.R.Space:case R.R.Enter:e.preventDefault(),null==(n=(t=e.target).click)||n.call(t),i({type:1}),null==(r=a.button)||r.focus()}}else switch(e.key){case R.R.Space:case R.R.Enter:e.preventDefault(),e.stopPropagation(),1===a.popoverState&&(null==f||f(a.buttonId)),i({type:0});break;case R.R.Escape:if(0!==a.popoverState)return null==f?void 0:f(a.buttonId);if(!u.current||null!=w&&w.activeElement&&!u.current.contains(w.activeElement))return;e.preventDefault(),e.stopPropagation(),i({type:1})}}),M=(0,m.z)(e=>{v||e.key===R.R.Space&&e.preventDefault()}),C=(0,m.z)(t=>{var n,r;(0,L.P)(t.currentTarget)||e.disabled||(v?(i({type:1}),null==(n=a.button)||n.focus()):(t.preventDefault(),t.stopPropagation(),1===a.popoverState&&(null==f||f(a.buttonId)),i({type:0}),null==(r=a.button)||r.focus()))}),D=(0,m.z)(e=>{e.preventDefault(),e.stopPropagation()}),T=0===a.popoverState,P=(0,c.useMemo)(()=>({open:T}),[T]),_=(0,E.f)(e,u),Z=v?{ref:y,type:_,onKeyDown:k,onClick:C}:{ref:g,id:a.buttonId,type:_,"aria-expanded":0===a.popoverState,"aria-controls":a.panel?a.panelId:void 0,onKeyDown:k,onKeyUp:M,onClick:C,onMouseDown:D},W=O(),I=(0,m.z)(()=>{let e=a.panel;e&&(0,F.E)(W.current,{[j.Forwards]:()=>(0,Y.jA)(e,Y.TO.First),[j.Backwards]:()=>(0,Y.jA)(e,Y.TO.Last)})===Y.fE.Error&&(0,Y.jA)((0,Y.GO)().filter(e=>"true"!==e.dataset.headlessuiFocusGuard),(0,F.E)(W.current,{[j.Forwards]:Y.TO.Next,[j.Backwards]:Y.TO.Previous}),{relativeTo:a.button})});return c.createElement(c.Fragment,null,(0,x.sY)({ourProps:Z,theirProps:o,slot:P,defaultTag:"button",name:"Popover.Button"}),T&&!v&&l&&c.createElement(S._,{id:s,features:S.A.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:I}))}),Overlay:(0,x.yV)(function(e,t){let n=(0,N.M)(),{id:r="headlessui-popover-overlay-".concat(n),...o}=e,[{popoverState:a},i]=z("Popover.Overlay"),l=(0,b.T)(t),u=(0,Z.oJ)(),s=null!==u?(u&Z.ZM.Open)===Z.ZM.Open:0===a,d=(0,m.z)(e=>{if((0,L.P)(e.currentTarget))return e.preventDefault();i({type:1})}),f=(0,c.useMemo)(()=>({open:0===a}),[a]);return(0,x.sY)({ourProps:{ref:l,id:r,"aria-hidden":!0,onClick:d},theirProps:o,slot:f,defaultTag:"div",features:Q,visible:s,name:"Popover.Overlay"})}),Panel:(0,x.yV)(function(e,t){let n=(0,N.M)(),{id:r="headlessui-popover-panel-".concat(n),focus:o=!1,...a}=e,[i,l]=z("Popover.Panel"),{close:u,isPortalled:s}=q("Popover.Panel"),d="headlessui-focus-sentinel-before-".concat((0,N.M)()),f="headlessui-focus-sentinel-after-".concat((0,N.M)()),h=(0,c.useRef)(null),g=(0,b.T)(h,t,e=>{l({type:4,panel:e})}),y=(0,p.i)(h),w=(0,x.Y2)();(0,v.e)(()=>(l({type:5,panelId:r}),()=>{l({type:5,panelId:null})}),[r,l]);let k=(0,Z.oJ)(),M=null!==k?(k&Z.ZM.Open)===Z.ZM.Open:0===i.popoverState,C=(0,m.z)(e=>{var t;if(e.key===R.R.Escape){if(0!==i.popoverState||!h.current||null!=y&&y.activeElement&&!h.current.contains(y.activeElement))return;e.preventDefault(),e.stopPropagation(),l({type:1}),null==(t=i.button)||t.focus()}});(0,c.useEffect)(()=>{var t;e.static||1===i.popoverState&&(null==(t=e.unmount)||t)&&l({type:4,panel:null})},[i.popoverState,e.unmount,e.static,l]),(0,c.useEffect)(()=>{if(i.__demoMode||!o||0!==i.popoverState||!h.current)return;let e=null==y?void 0:y.activeElement;h.current.contains(e)||(0,Y.jA)(h.current,Y.TO.First)},[i.__demoMode,o,h,i.popoverState]);let D=(0,c.useMemo)(()=>({open:0===i.popoverState,close:u}),[i,u]),T={ref:g,id:r,onKeyDown:C,onBlur:o&&0===i.popoverState?e=>{var t,n,r,o,a;let u=e.relatedTarget;u&&h.current&&(null!=(t=h.current)&&t.contains(u)||(l({type:1}),(null!=(r=null==(n=i.beforePanelSentinel.current)?void 0:n.contains)&&r.call(n,u)||null!=(a=null==(o=i.afterPanelSentinel.current)?void 0:o.contains)&&a.call(o,u))&&u.focus({preventScroll:!0})))}:void 0,tabIndex:-1},P=O(),E=(0,m.z)(()=>{let e=h.current;e&&(0,F.E)(P.current,{[j.Forwards]:()=>{var t;(0,Y.jA)(e,Y.TO.First)===Y.fE.Error&&(null==(t=i.afterPanelSentinel.current)||t.focus())},[j.Backwards]:()=>{var e;null==(e=i.button)||e.focus({preventScroll:!0})}})}),_=(0,m.z)(()=>{let e=h.current;e&&(0,F.E)(P.current,{[j.Forwards]:()=>{var e;if(!i.button)return;let t=(0,Y.GO)(),n=t.indexOf(i.button),r=t.slice(0,n+1),o=[...t.slice(n+1),...r];for(let t of o.slice())if("true"===t.dataset.headlessuiFocusGuard||null!=(e=i.panel)&&e.contains(t)){let e=o.indexOf(t);-1!==e&&o.splice(e,1)}(0,Y.jA)(o,Y.TO.First,{sorted:!1})},[j.Backwards]:()=>{var t;(0,Y.jA)(e,Y.TO.Previous)===Y.fE.Error&&(null==(t=i.button)||t.focus())}})});return c.createElement(X.Provider,{value:r},M&&s&&c.createElement(S._,{id:d,ref:i.beforePanelSentinel,features:S.A.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:E}),(0,x.sY)({mergeRefs:w,ourProps:T,theirProps:a,slot:D,defaultTag:"div",features:J,visible:M,name:"Popover.Panel"}),M&&s&&c.createElement(S._,{id:f,ref:i.afterPanelSentinel,features:S.A.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:_}))}),Group:(0,x.yV)(function(e,t){let n;let r=(0,c.useRef)(null),o=(0,b.T)(r,t),[a,i]=(0,c.useState)([]),l={mainTreeNodeRef:n=(0,c.useRef)(null),MainTreeNode:(0,c.useMemo)(()=>function(){return c.createElement(S._,{features:S.A.Hidden,ref:n})},[n])},u=(0,m.z)(e=>{i(t=>{let n=t.indexOf(e);if(-1!==n){let e=t.slice();return e.splice(n,1),e}return t})}),s=(0,m.z)(e=>(i(t=>[...t,e]),()=>u(e))),d=(0,m.z)(()=>{var e;let t=(0,W.r)(r);if(!t)return!1;let n=t.activeElement;return!!(null!=(e=r.current)&&e.contains(n))||a.some(e=>{var r,o;return(null==(r=t.getElementById(e.buttonId.current))?void 0:r.contains(n))||(null==(o=t.getElementById(e.panelId.current))?void 0:o.contains(n))})}),f=(0,m.z)(e=>{for(let t of a)t.buttonId.current!==e&&t.close()}),v=(0,c.useMemo)(()=>({registerPopover:s,unregisterPopover:u,isFocusWithinPopoverGroup:d,closeOthers:f,mainTreeNodeRef:l.mainTreeNodeRef}),[s,u,d,f,l.mainTreeNodeRef]),h=(0,c.useMemo)(()=>({}),[]);return c.createElement(V.Provider,{value:v},(0,x.sY)({ourProps:{ref:o},theirProps:e,slot:h,defaultTag:"div",name:"Popover.Group"}),c.createElement(l.MainTreeNode,null))})});var ee=n(33044),et=n(9528);let en=e=>{var t=(0,d._T)(e,[]);return c.createElement("svg",Object.assign({},t,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor"}),c.createElement("path",{fillRule:"evenodd",d:"M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z",clipRule:"evenodd"}))};var er=n(4537),eo=n(99735),ea=n(7656);function ei(e){(0,ea.Z)(1,arguments);var t=(0,eo.Z)(e);return t.setHours(0,0,0,0),t}function el(){return ei(Date.now())}function eu(e){(0,ea.Z)(1,arguments);var t=(0,eo.Z)(e);return t.setDate(1),t.setHours(0,0,0,0),t}var es=n(97324),ed=n(96398),ec=n(41154);function ef(e){var t,n;if((0,ea.Z)(1,arguments),e&&"function"==typeof e.forEach)t=e;else{if("object"!==(0,ec.Z)(e)||null===e)return new Date(NaN);t=Array.prototype.slice.call(e)}return t.forEach(function(e){var t=(0,eo.Z)(e);(void 0===n||nt||isNaN(t.getDate()))&&(n=t)}),n||new Date(NaN)}var ev=n(25721),eh=n(47869);function ep(e,t){(0,ea.Z)(2,arguments);var n=(0,eh.Z)(t);return(0,ev.Z)(e,-n)}var eg=n(55463);function eb(e,t){if((0,ea.Z)(2,arguments),!t||"object"!==(0,ec.Z)(t))return new Date(NaN);var n=t.years?(0,eh.Z)(t.years):0,r=t.months?(0,eh.Z)(t.months):0,o=t.weeks?(0,eh.Z)(t.weeks):0,a=t.days?(0,eh.Z)(t.days):0,i=t.hours?(0,eh.Z)(t.hours):0,l=t.minutes?(0,eh.Z)(t.minutes):0,u=t.seconds?(0,eh.Z)(t.seconds):0;return new Date(ep(function(e,t){(0,ea.Z)(2,arguments);var n=(0,eh.Z)(t);return(0,eg.Z)(e,-n)}(e,r+12*n),a+7*o).getTime()-1e3*(u+60*(l+60*i)))}function ey(e){(0,ea.Z)(1,arguments);var t=(0,eo.Z)(e),n=new Date(0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}function ew(e){return(0,ea.Z)(1,arguments),e instanceof Date||"object"===(0,ec.Z)(e)&&"[object Date]"===Object.prototype.toString.call(e)}function ex(e){(0,ea.Z)(1,arguments);var t=(0,eo.Z)(e),n=t.getUTCDay();return t.setUTCDate(t.getUTCDate()-((n<1?7:0)+n-1)),t.setUTCHours(0,0,0,0),t}function ek(e){(0,ea.Z)(1,arguments);var t=(0,eo.Z)(e),n=t.getUTCFullYear(),r=new Date(0);r.setUTCFullYear(n+1,0,4),r.setUTCHours(0,0,0,0);var o=ex(r),a=new Date(0);a.setUTCFullYear(n,0,4),a.setUTCHours(0,0,0,0);var i=ex(a);return t.getTime()>=o.getTime()?n+1:t.getTime()>=i.getTime()?n:n-1}var eM={};function eC(e,t){(0,ea.Z)(1,arguments);var n,r,o,a,i,l,u,s,d=(0,eh.Z)(null!==(n=null!==(r=null!==(o=null!==(a=null==t?void 0:t.weekStartsOn)&&void 0!==a?a:null==t?void 0:null===(i=t.locale)||void 0===i?void 0:null===(l=i.options)||void 0===l?void 0:l.weekStartsOn)&&void 0!==o?o:eM.weekStartsOn)&&void 0!==r?r:null===(u=eM.locale)||void 0===u?void 0:null===(s=u.options)||void 0===s?void 0:s.weekStartsOn)&&void 0!==n?n:0);if(!(d>=0&&d<=6))throw RangeError("weekStartsOn must be between 0 and 6 inclusively");var c=(0,eo.Z)(e),f=c.getUTCDay();return c.setUTCDate(c.getUTCDate()-((f=1&&f<=7))throw RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var m=new Date(0);m.setUTCFullYear(c+1,0,f),m.setUTCHours(0,0,0,0);var v=eC(m,t),h=new Date(0);h.setUTCFullYear(c,0,f),h.setUTCHours(0,0,0,0);var p=eC(h,t);return d.getTime()>=v.getTime()?c+1:d.getTime()>=p.getTime()?c:c-1}function eT(e,t){for(var n=Math.abs(e).toString();n.length0?n:1-n;return eT("yy"===t?r%100:r,t.length)},M:function(e,t){var n=e.getUTCMonth();return"M"===t?String(n+1):eT(n+1,2)},d:function(e,t){return eT(e.getUTCDate(),t.length)},h:function(e,t){return eT(e.getUTCHours()%12||12,t.length)},H:function(e,t){return eT(e.getUTCHours(),t.length)},m:function(e,t){return eT(e.getUTCMinutes(),t.length)},s:function(e,t){return eT(e.getUTCSeconds(),t.length)},S:function(e,t){var n=t.length;return eT(Math.floor(e.getUTCMilliseconds()*Math.pow(10,n-3)),t.length)}},eP={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"};function eE(e,t){var n=e>0?"-":"+",r=Math.abs(e),o=Math.floor(r/60),a=r%60;return 0===a?n+String(o):n+String(o)+(t||"")+eT(a,2)}function eS(e,t){return e%60==0?(e>0?"-":"+")+eT(Math.abs(e)/60,2):e_(e,t)}function e_(e,t){var n=Math.abs(e);return(e>0?"-":"+")+eT(Math.floor(n/60),2)+(t||"")+eT(n%60,2)}var ej={G:function(e,t,n){var r=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});default:return n.era(r,{width:"wide"})}},y:function(e,t,n){if("yo"===t){var r=e.getUTCFullYear();return n.ordinalNumber(r>0?r:1-r,{unit:"year"})}return eN.y(e,t)},Y:function(e,t,n,r){var o=eD(e,r),a=o>0?o:1-o;return"YY"===t?eT(a%100,2):"Yo"===t?n.ordinalNumber(a,{unit:"year"}):eT(a,t.length)},R:function(e,t){return eT(ek(e),t.length)},u:function(e,t){return eT(e.getUTCFullYear(),t.length)},Q:function(e,t,n){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return eT(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,t,n){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return eT(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,t,n){var r=e.getUTCMonth();switch(t){case"M":case"MM":return eN.M(e,t);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(e,t,n){var r=e.getUTCMonth();switch(t){case"L":return String(r+1);case"LL":return eT(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(e,t,n,r){var o=function(e,t){(0,ea.Z)(1,arguments);var n=(0,eo.Z)(e);return Math.round((eC(n,t).getTime()-(function(e,t){(0,ea.Z)(1,arguments);var n,r,o,a,i,l,u,s,d=(0,eh.Z)(null!==(n=null!==(r=null!==(o=null!==(a=null==t?void 0:t.firstWeekContainsDate)&&void 0!==a?a:null==t?void 0:null===(i=t.locale)||void 0===i?void 0:null===(l=i.options)||void 0===l?void 0:l.firstWeekContainsDate)&&void 0!==o?o:eM.firstWeekContainsDate)&&void 0!==r?r:null===(u=eM.locale)||void 0===u?void 0:null===(s=u.options)||void 0===s?void 0:s.firstWeekContainsDate)&&void 0!==n?n:1),c=eD(e,t),f=new Date(0);return f.setUTCFullYear(c,0,d),f.setUTCHours(0,0,0,0),eC(f,t)})(n,t).getTime())/6048e5)+1}(e,r);return"wo"===t?n.ordinalNumber(o,{unit:"week"}):eT(o,t.length)},I:function(e,t,n){var r=function(e){(0,ea.Z)(1,arguments);var t=(0,eo.Z)(e);return Math.round((ex(t).getTime()-(function(e){(0,ea.Z)(1,arguments);var t=ek(e),n=new Date(0);return n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0),ex(n)})(t).getTime())/6048e5)+1}(e);return"Io"===t?n.ordinalNumber(r,{unit:"week"}):eT(r,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getUTCDate(),{unit:"date"}):eN.d(e,t)},D:function(e,t,n){var r=function(e){(0,ea.Z)(1,arguments);var t=(0,eo.Z)(e),n=t.getTime();return t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0),Math.floor((n-t.getTime())/864e5)+1}(e);return"Do"===t?n.ordinalNumber(r,{unit:"dayOfYear"}):eT(r,t.length)},E:function(e,t,n){var r=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(e,t,n,r){var o=e.getUTCDay(),a=(o-r.weekStartsOn+8)%7||7;switch(t){case"e":return String(a);case"ee":return eT(a,2);case"eo":return n.ordinalNumber(a,{unit:"day"});case"eee":return n.day(o,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(o,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(o,{width:"short",context:"formatting"});default:return n.day(o,{width:"wide",context:"formatting"})}},c:function(e,t,n,r){var o=e.getUTCDay(),a=(o-r.weekStartsOn+8)%7||7;switch(t){case"c":return String(a);case"cc":return eT(a,t.length);case"co":return n.ordinalNumber(a,{unit:"day"});case"ccc":return n.day(o,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(o,{width:"narrow",context:"standalone"});case"cccccc":return n.day(o,{width:"short",context:"standalone"});default:return n.day(o,{width:"wide",context:"standalone"})}},i:function(e,t,n){var r=e.getUTCDay(),o=0===r?7:r;switch(t){case"i":return String(o);case"ii":return eT(o,t.length);case"io":return n.ordinalNumber(o,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(e,t,n){var r=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(e,t,n){var r,o=e.getUTCHours();switch(r=12===o?eP.noon:0===o?eP.midnight:o/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(e,t,n){var r,o=e.getUTCHours();switch(r=o>=17?eP.evening:o>=12?eP.afternoon:o>=4?eP.morning:eP.night,t){case"B":case"BB":case"BBB":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){var r=e.getUTCHours()%12;return 0===r&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return eN.h(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getUTCHours(),{unit:"hour"}):eN.H(e,t)},K:function(e,t,n){var r=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(r,{unit:"hour"}):eT(r,t.length)},k:function(e,t,n){var r=e.getUTCHours();return(0===r&&(r=24),"ko"===t)?n.ordinalNumber(r,{unit:"hour"}):eT(r,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):eN.m(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):eN.s(e,t)},S:function(e,t){return eN.S(e,t)},X:function(e,t,n,r){var o=(r._originalDate||e).getTimezoneOffset();if(0===o)return"Z";switch(t){case"X":return eS(o);case"XXXX":case"XX":return e_(o);default:return e_(o,":")}},x:function(e,t,n,r){var o=(r._originalDate||e).getTimezoneOffset();switch(t){case"x":return eS(o);case"xxxx":case"xx":return e_(o);default:return e_(o,":")}},O:function(e,t,n,r){var o=(r._originalDate||e).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+eE(o,":");default:return"GMT"+e_(o,":")}},z:function(e,t,n,r){var o=(r._originalDate||e).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+eE(o,":");default:return"GMT"+e_(o,":")}},t:function(e,t,n,r){return eT(Math.floor((r._originalDate||e).getTime()/1e3),t.length)},T:function(e,t,n,r){return eT((r._originalDate||e).getTime(),t.length)}},eO=function(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},eZ=function(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},eL={p:eZ,P:function(e,t){var n,r=e.match(/(P+)(p+)?/)||[],o=r[1],a=r[2];if(!a)return eO(e,t);switch(o){case"P":n=t.dateTime({width:"short"});break;case"PP":n=t.dateTime({width:"medium"});break;case"PPP":n=t.dateTime({width:"long"});break;default:n=t.dateTime({width:"full"})}return n.replace("{{date}}",eO(o,t)).replace("{{time}}",eZ(a,t))}};function eY(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}var eF=["D","DD"],eW=["YY","YYYY"];function eR(e,t,n){if("YYYY"===e)throw RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("YY"===e)throw RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("D"===e)throw RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("DD"===e)throw RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var eI={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function eU(e){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}var eH={date:eU({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:eU({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:eU({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},eB={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function ez(e){return function(t,n){var r;if("formatting"===(null!=n&&n.context?String(n.context):"standalone")&&e.formattingValues){var o=e.defaultFormattingWidth||e.defaultWidth,a=null!=n&&n.width?String(n.width):o;r=e.formattingValues[a]||e.formattingValues[o]}else{var i=e.defaultWidth,l=null!=n&&n.width?String(n.width):e.defaultWidth;r=e.values[l]||e.values[i]}return r[e.argumentCallback?e.argumentCallback(t):t]}}function eA(e){return function(t){var n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=r.width,a=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],i=t.match(a);if(!i)return null;var l=i[0],u=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth],s=Array.isArray(u)?function(e,t){for(var n=0;n0?"in "+r:r+" ago":r},formatLong:eH,formatRelative:function(e,t,n,r){return eB[e]},localize:{ordinalNumber:function(e,t){var n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:ez({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:ez({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:ez({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:ez({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:ez({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(i={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}},function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.match(i.matchPattern);if(!n)return null;var r=n[0],o=e.match(i.parsePattern);if(!o)return null;var a=i.valueCallback?i.valueCallback(o[0]):o[0];return{value:a=t.valueCallback?t.valueCallback(a):a,rest:e.slice(r.length)}}),era:eA({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:eA({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:eA({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:eA({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:eA({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}},eV=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,eG=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,eX=/^'([^]*?)'?$/,eK=/''/g,eQ=/[a-zA-Z]/;function eJ(e,t,n){(0,ea.Z)(2,arguments);var r,o,a,i,l,u,s,d,c,f,m,v,h,p,g,b,y,w,x=String(t),k=null!==(r=null!==(o=null==n?void 0:n.locale)&&void 0!==o?o:eM.locale)&&void 0!==r?r:eq,M=(0,eh.Z)(null!==(a=null!==(i=null!==(l=null!==(u=null==n?void 0:n.firstWeekContainsDate)&&void 0!==u?u:null==n?void 0:null===(s=n.locale)||void 0===s?void 0:null===(d=s.options)||void 0===d?void 0:d.firstWeekContainsDate)&&void 0!==l?l:eM.firstWeekContainsDate)&&void 0!==i?i:null===(c=eM.locale)||void 0===c?void 0:null===(f=c.options)||void 0===f?void 0:f.firstWeekContainsDate)&&void 0!==a?a:1);if(!(M>=1&&M<=7))throw RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var C=(0,eh.Z)(null!==(m=null!==(v=null!==(h=null!==(p=null==n?void 0:n.weekStartsOn)&&void 0!==p?p:null==n?void 0:null===(g=n.locale)||void 0===g?void 0:null===(b=g.options)||void 0===b?void 0:b.weekStartsOn)&&void 0!==h?h:eM.weekStartsOn)&&void 0!==v?v:null===(y=eM.locale)||void 0===y?void 0:null===(w=y.options)||void 0===w?void 0:w.weekStartsOn)&&void 0!==m?m:0);if(!(C>=0&&C<=6))throw RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!k.localize)throw RangeError("locale must contain localize property");if(!k.formatLong)throw RangeError("locale must contain formatLong property");var D=(0,eo.Z)(e);if(!function(e){return(0,ea.Z)(1,arguments),(!!ew(e)||"number"==typeof e)&&!isNaN(Number((0,eo.Z)(e)))}(D))throw RangeError("Invalid time value");var T=eY(D),N=function(e,t){return(0,ea.Z)(2,arguments),function(e,t){return(0,ea.Z)(2,arguments),new Date((0,eo.Z)(e).getTime()+(0,eh.Z)(t))}(e,-(0,eh.Z)(t))}(D,T),P={firstWeekContainsDate:M,weekStartsOn:C,locale:k,_originalDate:D};return x.match(eG).map(function(e){var t=e[0];return"p"===t||"P"===t?(0,eL[t])(e,k.formatLong):e}).join("").match(eV).map(function(r){if("''"===r)return"'";var o,a=r[0];if("'"===a)return(o=r.match(eX))?o[1].replace(eK,"'"):r;var i=ej[a];if(i)return null!=n&&n.useAdditionalWeekYearTokens||-1===eW.indexOf(r)||eR(r,t,String(e)),null!=n&&n.useAdditionalDayOfYearTokens||-1===eF.indexOf(r)||eR(r,t,String(e)),i(N,r,k.localize,P);if(a.match(eQ))throw RangeError("Format string contains an unescaped latin alphabet character `"+a+"`");return r}).join("")}var e$=n(1153);let e0=(0,e$.fn)("DateRangePicker"),e1=(e,t,n,r)=>{var o;if(n&&(e=null===(o=r.get(n))||void 0===o?void 0:o.from),e)return ei(e&&!t?e:ef([e,t]))},e2=(e,t,n,r)=>{var o,a;if(n&&(e=ei(null!==(a=null===(o=r.get(n))||void 0===o?void 0:o.to)&&void 0!==a?a:el())),e)return ei(e&&!t?e:em([e,t]))},e4=[{value:"tdy",text:"Today",from:el()},{value:"w",text:"Last 7 days",from:eb(el(),{days:7})},{value:"t",text:"Last 30 days",from:eb(el(),{days:30})},{value:"m",text:"Month to Date",from:eu(el())},{value:"y",text:"Year to Date",from:ey(el())}],e3=(e,t,n,r)=>{let o=(null==n?void 0:n.code)||"en-US";if(!e&&!t)return"";if(e&&!t)return r?eJ(e,r):e.toLocaleDateString(o,{year:"numeric",month:"short",day:"numeric"});if(e&&t){if(function(e,t){(0,ea.Z)(2,arguments);var n=(0,eo.Z)(e),r=(0,eo.Z)(t);return n.getTime()===r.getTime()}(e,t))return r?eJ(e,r):e.toLocaleDateString(o,{year:"numeric",month:"short",day:"numeric"});if(e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear())return r?"".concat(eJ(e,r)," - ").concat(eJ(t,r)):"".concat(e.toLocaleDateString(o,{month:"short",day:"numeric"})," - \n ").concat(t.getDate(),", ").concat(t.getFullYear());{if(r)return"".concat(eJ(e,r)," - ").concat(eJ(t,r));let n={year:"numeric",month:"short",day:"numeric"};return"".concat(e.toLocaleDateString(o,n)," - \n ").concat(t.toLocaleDateString(o,n))}}return""};function e5(e){(0,ea.Z)(1,arguments);var t=(0,eo.Z)(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}function e6(e,t){(0,ea.Z)(2,arguments);var n=(0,eo.Z)(e),r=(0,eh.Z)(t),o=n.getFullYear(),a=n.getDate(),i=new Date(0);i.setFullYear(o,r,15),i.setHours(0,0,0,0);var l=function(e){(0,ea.Z)(1,arguments);var t=(0,eo.Z)(e),n=t.getFullYear(),r=t.getMonth(),o=new Date(0);return o.setFullYear(n,r+1,0),o.setHours(0,0,0,0),o.getDate()}(i);return n.setMonth(r,Math.min(a,l)),n}function e8(e,t){(0,ea.Z)(2,arguments);var n=(0,eo.Z)(e),r=(0,eh.Z)(t);return isNaN(n.getTime())?new Date(NaN):(n.setFullYear(r),n)}function e7(e,t){(0,ea.Z)(2,arguments);var n=(0,eo.Z)(e),r=(0,eo.Z)(t);return 12*(n.getFullYear()-r.getFullYear())+(n.getMonth()-r.getMonth())}function e9(e,t){(0,ea.Z)(2,arguments);var n=(0,eo.Z)(e),r=(0,eo.Z)(t);return n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()}function te(e,t){(0,ea.Z)(2,arguments);var n=(0,eo.Z)(e),r=(0,eo.Z)(t);return n.getTime()=0&&d<=6))throw RangeError("weekStartsOn must be between 0 and 6 inclusively");var c=(0,eo.Z)(e),f=c.getDay();return c.setDate(c.getDate()-((fr.getTime()}function ta(e,t){(0,ea.Z)(2,arguments);var n=ei(e),r=ei(t);return Math.round((n.getTime()-eY(n)-(r.getTime()-eY(r)))/864e5)}function ti(e,t){(0,ea.Z)(2,arguments);var n=(0,eh.Z)(t);return(0,ev.Z)(e,7*n)}function tl(e,t){(0,ea.Z)(2,arguments);var n=(0,eh.Z)(t);return(0,eg.Z)(e,12*n)}function tu(e,t){(0,ea.Z)(1,arguments);var n,r,o,a,i,l,u,s,d=(0,eh.Z)(null!==(n=null!==(r=null!==(o=null!==(a=null==t?void 0:t.weekStartsOn)&&void 0!==a?a:null==t?void 0:null===(i=t.locale)||void 0===i?void 0:null===(l=i.options)||void 0===l?void 0:l.weekStartsOn)&&void 0!==o?o:eM.weekStartsOn)&&void 0!==r?r:null===(u=eM.locale)||void 0===u?void 0:null===(s=u.options)||void 0===s?void 0:s.weekStartsOn)&&void 0!==n?n:0);if(!(d>=0&&d<=6))throw RangeError("weekStartsOn must be between 0 and 6 inclusively");var c=(0,eo.Z)(e),f=c.getDay();return c.setDate(c.getDate()+((fe7(l,i)&&(i=(0,eg.Z)(l,-1*((void 0===s?1:s)-1))),u&&0>e7(i,u)&&(i=u),d=eu(i),f=t.month,v=(m=(0,c.useState)(d))[0],h=[void 0===f?v:f,m[1]])[0],g=h[1],[p,function(e){if(!t.disableNavigation){var n,r=eu(e);g(r),null===(n=t.onMonthChange)||void 0===n||n.call(t,r)}}]),w=y[0],x=y[1],k=function(e,t){for(var n=t.reverseMonths,r=t.numberOfMonths,o=eu(e),a=e7(eu((0,eg.Z)(o,r)),o),i=[],l=0;l=e7(a,n)))return(0,eg.Z)(a,-(r?void 0===o?1:o:1))}}(w,b),D=function(e){return k.some(function(t){return e9(e,t)})};return tv.jsx(tE.Provider,{value:{currentMonth:w,displayMonths:k,goToMonth:x,goToDate:function(e,t){D(e)||(t&&te(e,t)?x((0,eg.Z)(e,1+-1*b.numberOfMonths)):x(e))},previousMonth:C,nextMonth:M,isDateDisplayed:D},children:e.children})}function t_(){var e=(0,c.useContext)(tE);if(!e)throw Error("useNavigation must be used within a NavigationProvider");return e}function tj(e){var t,n=tM(),r=n.classNames,o=n.styles,a=n.components,i=t_().goToMonth,l=function(t){i((0,eg.Z)(t,e.displayIndex?-e.displayIndex:0))},u=null!==(t=null==a?void 0:a.CaptionLabel)&&void 0!==t?t:tC,s=tv.jsx(u,{id:e.id,displayMonth:e.displayMonth});return tv.jsxs("div",{className:r.caption_dropdowns,style:o.caption_dropdowns,children:[tv.jsx("div",{className:r.vhidden,children:s}),tv.jsx(tN,{onChange:l,displayMonth:e.displayMonth}),tv.jsx(tP,{onChange:l,displayMonth:e.displayMonth})]})}function tO(e){return tv.jsx("svg",td({width:"16px",height:"16px",viewBox:"0 0 120 120"},e,{children:tv.jsx("path",{d:"M69.490332,3.34314575 C72.6145263,0.218951416 77.6798462,0.218951416 80.8040405,3.34314575 C83.8617626,6.40086786 83.9268205,11.3179931 80.9992143,14.4548388 L80.8040405,14.6568542 L35.461,60 L80.8040405,105.343146 C83.8617626,108.400868 83.9268205,113.317993 80.9992143,116.454839 L80.8040405,116.656854 C77.7463184,119.714576 72.8291931,119.779634 69.6923475,116.852028 L69.490332,116.656854 L18.490332,65.6568542 C15.4326099,62.5991321 15.367552,57.6820069 18.2951583,54.5451612 L18.490332,54.3431458 L69.490332,3.34314575 Z",fill:"currentColor",fillRule:"nonzero"})}))}function tZ(e){return tv.jsx("svg",td({width:"16px",height:"16px",viewBox:"0 0 120 120"},e,{children:tv.jsx("path",{d:"M49.8040405,3.34314575 C46.6798462,0.218951416 41.6145263,0.218951416 38.490332,3.34314575 C35.4326099,6.40086786 35.367552,11.3179931 38.2951583,14.4548388 L38.490332,14.6568542 L83.8333725,60 L38.490332,105.343146 C35.4326099,108.400868 35.367552,113.317993 38.2951583,116.454839 L38.490332,116.656854 C41.5480541,119.714576 46.4651794,119.779634 49.602025,116.852028 L49.8040405,116.656854 L100.804041,65.6568542 C103.861763,62.5991321 103.926821,57.6820069 100.999214,54.5451612 L100.804041,54.3431458 L49.8040405,3.34314575 Z",fill:"currentColor"})}))}var tL=(0,c.forwardRef)(function(e,t){var n=tM(),r=n.classNames,o=n.styles,a=[r.button_reset,r.button];e.className&&a.push(e.className);var i=a.join(" "),l=td(td({},o.button_reset),o.button);return e.style&&Object.assign(l,e.style),tv.jsx("button",td({},e,{ref:t,type:"button",className:i,style:l}))});function tY(e){var t,n,r=tM(),o=r.dir,a=r.locale,i=r.classNames,l=r.styles,u=r.labels,s=u.labelPrevious,d=u.labelNext,c=r.components;if(!e.nextMonth&&!e.previousMonth)return tv.jsx(tv.Fragment,{});var f=s(e.previousMonth,{locale:a}),m=[i.nav_button,i.nav_button_previous].join(" "),v=d(e.nextMonth,{locale:a}),h=[i.nav_button,i.nav_button_next].join(" "),p=null!==(t=null==c?void 0:c.IconRight)&&void 0!==t?t:tZ,g=null!==(n=null==c?void 0:c.IconLeft)&&void 0!==n?n:tO;return tv.jsxs("div",{className:i.nav,style:l.nav,children:[!e.hidePrevious&&tv.jsx(tL,{name:"previous-month","aria-label":f,className:m,style:l.nav_button_previous,disabled:!e.previousMonth,onClick:e.onPreviousClick,children:"rtl"===o?tv.jsx(p,{className:i.nav_icon,style:l.nav_icon}):tv.jsx(g,{className:i.nav_icon,style:l.nav_icon})}),!e.hideNext&&tv.jsx(tL,{name:"next-month","aria-label":v,className:h,style:l.nav_button_next,disabled:!e.nextMonth,onClick:e.onNextClick,children:"rtl"===o?tv.jsx(g,{className:i.nav_icon,style:l.nav_icon}):tv.jsx(p,{className:i.nav_icon,style:l.nav_icon})})]})}function tF(e){var t=tM().numberOfMonths,n=t_(),r=n.previousMonth,o=n.nextMonth,a=n.goToMonth,i=n.displayMonths,l=i.findIndex(function(t){return e9(e.displayMonth,t)}),u=0===l,s=l===i.length-1;return tv.jsx(tY,{displayMonth:e.displayMonth,hideNext:t>1&&(u||!s),hidePrevious:t>1&&(s||!u),nextMonth:o,previousMonth:r,onPreviousClick:function(){r&&a(r)},onNextClick:function(){o&&a(o)}})}function tW(e){var t,n,r=tM(),o=r.classNames,a=r.disableNavigation,i=r.styles,l=r.captionLayout,u=r.components,s=null!==(t=null==u?void 0:u.CaptionLabel)&&void 0!==t?t:tC;return n=a?tv.jsx(s,{id:e.id,displayMonth:e.displayMonth}):"dropdown"===l?tv.jsx(tj,{displayMonth:e.displayMonth,id:e.id}):"dropdown-buttons"===l?tv.jsxs(tv.Fragment,{children:[tv.jsx(tj,{displayMonth:e.displayMonth,displayIndex:e.displayIndex,id:e.id}),tv.jsx(tF,{displayMonth:e.displayMonth,displayIndex:e.displayIndex,id:e.id})]}):tv.jsxs(tv.Fragment,{children:[tv.jsx(s,{id:e.id,displayMonth:e.displayMonth,displayIndex:e.displayIndex}),tv.jsx(tF,{displayMonth:e.displayMonth,id:e.id})]}),tv.jsx("div",{className:o.caption,style:i.caption,children:n})}function tR(e){var t=tM(),n=t.footer,r=t.styles,o=t.classNames.tfoot;return n?tv.jsx("tfoot",{className:o,style:r.tfoot,children:tv.jsx("tr",{children:tv.jsx("td",{colSpan:8,children:n})})}):tv.jsx(tv.Fragment,{})}function tI(){var e=tM(),t=e.classNames,n=e.styles,r=e.showWeekNumber,o=e.locale,a=e.weekStartsOn,i=e.ISOWeek,l=e.formatters.formatWeekdayName,u=e.labels.labelWeekday,s=function(e,t,n){for(var r=n?tn(new Date):tt(new Date,{locale:e,weekStartsOn:t}),o=[],a=0;a<7;a++){var i=(0,ev.Z)(r,a);o.push(i)}return o}(o,a,i);return tv.jsxs("tr",{style:n.head_row,className:t.head_row,children:[r&&tv.jsx("td",{style:n.head_cell,className:t.head_cell}),s.map(function(e,r){return tv.jsx("th",{scope:"col",className:t.head_cell,style:n.head_cell,"aria-label":u(e,{locale:o}),children:l(e,{locale:o})},r)})]})}function tU(){var e,t=tM(),n=t.classNames,r=t.styles,o=t.components,a=null!==(e=null==o?void 0:o.HeadRow)&&void 0!==e?e:tI;return tv.jsx("thead",{style:r.head,className:n.head,children:tv.jsx(a,{})})}function tH(e){var t=tM(),n=t.locale,r=t.formatters.formatDay;return tv.jsx(tv.Fragment,{children:r(e.date,{locale:n})})}var tB=(0,c.createContext)(void 0);function tz(e){return th(e.initialProps)?tv.jsx(tA,{initialProps:e.initialProps,children:e.children}):tv.jsx(tB.Provider,{value:{selected:void 0,modifiers:{disabled:[]}},children:e.children})}function tA(e){var t=e.initialProps,n=e.children,r=t.selected,o=t.min,a=t.max,i={disabled:[]};return r&&i.disabled.push(function(e){var t=a&&r.length>a-1,n=r.some(function(t){return tr(t,e)});return!!(t&&!n)}),tv.jsx(tB.Provider,{value:{selected:r,onDayClick:function(e,n,i){if(null===(l=t.onDayClick)||void 0===l||l.call(t,e,n,i),(!n.selected||!o||(null==r?void 0:r.length)!==o)&&(n.selected||!a||(null==r?void 0:r.length)!==a)){var l,u,s=r?tc([],r,!0):[];if(n.selected){var d=s.findIndex(function(t){return tr(e,t)});s.splice(d,1)}else s.push(e);null===(u=t.onSelect)||void 0===u||u.call(t,s,e,n,i)}},modifiers:i},children:n})}function tq(){var e=(0,c.useContext)(tB);if(!e)throw Error("useSelectMultiple must be used within a SelectMultipleProvider");return e}var tV=(0,c.createContext)(void 0);function tG(e){return tp(e.initialProps)?tv.jsx(tX,{initialProps:e.initialProps,children:e.children}):tv.jsx(tV.Provider,{value:{selected:void 0,modifiers:{range_start:[],range_end:[],range_middle:[],disabled:[]}},children:e.children})}function tX(e){var t=e.initialProps,n=e.children,r=t.selected,o=r||{},a=o.from,i=o.to,l=t.min,u=t.max,s={range_start:[],range_end:[],range_middle:[],disabled:[]};if(a?(s.range_start=[a],i?(s.range_end=[i],tr(a,i)||(s.range_middle=[{after:a,before:i}])):s.range_end=[a]):i&&(s.range_start=[i],s.range_end=[i]),l&&(a&&!i&&s.disabled.push({after:ep(a,l-1),before:(0,ev.Z)(a,l-1)}),a&&i&&s.disabled.push({after:a,before:(0,ev.Z)(a,l-1)}),!a&&i&&s.disabled.push({after:ep(i,l-1),before:(0,ev.Z)(i,l-1)})),u){if(a&&!i&&(s.disabled.push({before:(0,ev.Z)(a,-u+1)}),s.disabled.push({after:(0,ev.Z)(a,u-1)})),a&&i){var d=u-(ta(i,a)+1);s.disabled.push({before:ep(a,d)}),s.disabled.push({after:(0,ev.Z)(i,d)})}!a&&i&&(s.disabled.push({before:(0,ev.Z)(i,-u+1)}),s.disabled.push({after:(0,ev.Z)(i,u-1)}))}return tv.jsx(tV.Provider,{value:{selected:r,onDayClick:function(e,n,o){null===(u=t.onDayClick)||void 0===u||u.call(t,e,n,o);var a,i,l,u,s,d=(i=(a=r||{}).from,l=a.to,i&&l?tr(l,e)&&tr(i,e)?void 0:tr(l,e)?{from:l,to:void 0}:tr(i,e)?void 0:to(i,e)?{from:e,to:l}:{from:i,to:e}:l?to(e,l)?{from:l,to:e}:{from:e,to:l}:i?te(e,i)?{from:e,to:i}:{from:i,to:e}:{from:e,to:void 0});null===(s=t.onSelect)||void 0===s||s.call(t,d,e,n,o)},modifiers:s},children:n})}function tK(){var e=(0,c.useContext)(tV);if(!e)throw Error("useSelectRange must be used within a SelectRangeProvider");return e}function tQ(e){return Array.isArray(e)?tc([],e,!0):void 0!==e?[e]:[]}(l=s||(s={})).Outside="outside",l.Disabled="disabled",l.Selected="selected",l.Hidden="hidden",l.Today="today",l.RangeStart="range_start",l.RangeEnd="range_end",l.RangeMiddle="range_middle";var tJ=s.Selected,t$=s.Disabled,t0=s.Hidden,t1=s.Today,t2=s.RangeEnd,t4=s.RangeMiddle,t3=s.RangeStart,t5=s.Outside,t6=(0,c.createContext)(void 0);function t8(e){var t,n,r,o=tM(),a=tq(),i=tK(),l=((t={})[tJ]=tQ(o.selected),t[t$]=tQ(o.disabled),t[t0]=tQ(o.hidden),t[t1]=[o.today],t[t2]=[],t[t4]=[],t[t3]=[],t[t5]=[],o.fromDate&&t[t$].push({before:o.fromDate}),o.toDate&&t[t$].push({after:o.toDate}),th(o)?t[t$]=t[t$].concat(a.modifiers[t$]):tp(o)&&(t[t$]=t[t$].concat(i.modifiers[t$]),t[t3]=i.modifiers[t3],t[t4]=i.modifiers[t4],t[t2]=i.modifiers[t2]),t),u=(n=o.modifiers,r={},Object.entries(n).forEach(function(e){var t=e[0],n=e[1];r[t]=tQ(n)}),r),s=td(td({},l),u);return tv.jsx(t6.Provider,{value:s,children:e.children})}function t7(){var e=(0,c.useContext)(t6);if(!e)throw Error("useModifiers must be used within a ModifiersProvider");return e}function t9(e,t,n){var r=Object.keys(t).reduce(function(n,r){return t[r].some(function(t){if("boolean"==typeof t)return t;if(ew(t))return tr(e,t);if(Array.isArray(t)&&t.every(ew))return t.includes(e);if(t&&"object"==typeof t&&"from"in t)return r=t.from,o=t.to,r&&o?(0>ta(o,r)&&(r=(n=[o,r])[0],o=n[1]),ta(e,r)>=0&&ta(o,e)>=0):o?tr(o,e):!!r&&tr(r,e);if(t&&"object"==typeof t&&"dayOfWeek"in t)return t.dayOfWeek.includes(e.getDay());if(t&&"object"==typeof t&&"before"in t&&"after"in t){var n,r,o,a=ta(t.before,e),i=ta(t.after,e),l=a>0,u=i<0;return to(t.before,t.after)?u&&l:l||u}return t&&"object"==typeof t&&"after"in t?ta(e,t.after)>0:t&&"object"==typeof t&&"before"in t?ta(t.before,e)>0:"function"==typeof t&&t(e)})&&n.push(r),n},[]),o={};return r.forEach(function(e){return o[e]=!0}),n&&!e9(e,n)&&(o.outside=!0),o}var ne=(0,c.createContext)(void 0);function nt(e){var t=t_(),n=t7(),r=(0,c.useState)(),o=r[0],a=r[1],i=(0,c.useState)(),l=i[0],u=i[1],s=function(e,t){for(var n,r,o=eu(e[0]),a=e5(e[e.length-1]),i=o;i<=a;){var l=t9(i,t);if(!(!l.disabled&&!l.hidden)){i=(0,ev.Z)(i,1);continue}if(l.selected)return i;l.today&&!r&&(r=i),n||(n=i),i=(0,ev.Z)(i,1)}return r||n}(t.displayMonths,n),d=(null!=o?o:l&&t.isDateDisplayed(l))?l:s,f=function(e){a(e)},m=tM(),v=function(e,r){if(o){var a=function e(t,n){var r=n.moveBy,o=n.direction,a=n.context,i=n.modifiers,l=n.retry,u=void 0===l?{count:0,lastFocused:t}:l,s=a.weekStartsOn,d=a.fromDate,c=a.toDate,f=a.locale,m=({day:ev.Z,week:ti,month:eg.Z,year:tl,startOfWeek:function(e){return a.ISOWeek?tn(e):tt(e,{locale:f,weekStartsOn:s})},endOfWeek:function(e){return a.ISOWeek?ts(e):tu(e,{locale:f,weekStartsOn:s})}})[r](t,"after"===o?1:-1);"before"===o&&d?m=ef([d,m]):"after"===o&&c&&(m=em([c,m]));var v=!0;if(i){var h=t9(m,i);v=!h.disabled&&!h.hidden}return v?m:u.count>365?u.lastFocused:e(m,{moveBy:r,direction:o,context:a,modifiers:i,retry:td(td({},u),{count:u.count+1})})}(o,{moveBy:e,direction:r,context:m,modifiers:n});tr(o,a)||(t.goToDate(a,o),f(a))}};return tv.jsx(ne.Provider,{value:{focusedDay:o,focusTarget:d,blur:function(){u(o),a(void 0)},focus:f,focusDayAfter:function(){return v("day","after")},focusDayBefore:function(){return v("day","before")},focusWeekAfter:function(){return v("week","after")},focusWeekBefore:function(){return v("week","before")},focusMonthBefore:function(){return v("month","before")},focusMonthAfter:function(){return v("month","after")},focusYearBefore:function(){return v("year","before")},focusYearAfter:function(){return v("year","after")},focusStartOfWeek:function(){return v("startOfWeek","before")},focusEndOfWeek:function(){return v("endOfWeek","after")}},children:e.children})}function nn(){var e=(0,c.useContext)(ne);if(!e)throw Error("useFocusContext must be used within a FocusProvider");return e}var nr=(0,c.createContext)(void 0);function no(e){return tg(e.initialProps)?tv.jsx(na,{initialProps:e.initialProps,children:e.children}):tv.jsx(nr.Provider,{value:{selected:void 0},children:e.children})}function na(e){var t=e.initialProps,n=e.children,r={selected:t.selected,onDayClick:function(e,n,r){var o,a,i;if(null===(o=t.onDayClick)||void 0===o||o.call(t,e,n,r),n.selected&&!t.required){null===(a=t.onSelect)||void 0===a||a.call(t,void 0,e,n,r);return}null===(i=t.onSelect)||void 0===i||i.call(t,e,e,n,r)}};return tv.jsx(nr.Provider,{value:r,children:n})}function ni(){var e=(0,c.useContext)(nr);if(!e)throw Error("useSelectSingle must be used within a SelectSingleProvider");return e}function nl(e){var t,n,r,o,a,i,l,u,d,f,m,v,h,p,g,b,y,w,x,k,M,C,D,T,N,P,E,S,_,j,O,Z,L,Y,F,W,R,I,U,H,B,z,A=(0,c.useRef)(null),q=(t=e.date,n=e.displayMonth,i=tM(),l=nn(),u=t9(t,t7(),n),d=tM(),f=ni(),m=tq(),v=tK(),p=(h=nn()).focusDayAfter,g=h.focusDayBefore,b=h.focusWeekAfter,y=h.focusWeekBefore,w=h.blur,x=h.focus,k=h.focusMonthBefore,M=h.focusMonthAfter,C=h.focusYearBefore,D=h.focusYearAfter,T=h.focusStartOfWeek,N=h.focusEndOfWeek,P={onClick:function(e){var n,r,o,a;tg(d)?null===(n=f.onDayClick)||void 0===n||n.call(f,t,u,e):th(d)?null===(r=m.onDayClick)||void 0===r||r.call(m,t,u,e):tp(d)?null===(o=v.onDayClick)||void 0===o||o.call(v,t,u,e):null===(a=d.onDayClick)||void 0===a||a.call(d,t,u,e)},onFocus:function(e){var n;x(t),null===(n=d.onDayFocus)||void 0===n||n.call(d,t,u,e)},onBlur:function(e){var n;w(),null===(n=d.onDayBlur)||void 0===n||n.call(d,t,u,e)},onKeyDown:function(e){var n;switch(e.key){case"ArrowLeft":e.preventDefault(),e.stopPropagation(),"rtl"===d.dir?p():g();break;case"ArrowRight":e.preventDefault(),e.stopPropagation(),"rtl"===d.dir?g():p();break;case"ArrowDown":e.preventDefault(),e.stopPropagation(),b();break;case"ArrowUp":e.preventDefault(),e.stopPropagation(),y();break;case"PageUp":e.preventDefault(),e.stopPropagation(),e.shiftKey?C():k();break;case"PageDown":e.preventDefault(),e.stopPropagation(),e.shiftKey?D():M();break;case"Home":e.preventDefault(),e.stopPropagation(),T();break;case"End":e.preventDefault(),e.stopPropagation(),N()}null===(n=d.onDayKeyDown)||void 0===n||n.call(d,t,u,e)},onKeyUp:function(e){var n;null===(n=d.onDayKeyUp)||void 0===n||n.call(d,t,u,e)},onMouseEnter:function(e){var n;null===(n=d.onDayMouseEnter)||void 0===n||n.call(d,t,u,e)},onMouseLeave:function(e){var n;null===(n=d.onDayMouseLeave)||void 0===n||n.call(d,t,u,e)},onPointerEnter:function(e){var n;null===(n=d.onDayPointerEnter)||void 0===n||n.call(d,t,u,e)},onPointerLeave:function(e){var n;null===(n=d.onDayPointerLeave)||void 0===n||n.call(d,t,u,e)},onTouchCancel:function(e){var n;null===(n=d.onDayTouchCancel)||void 0===n||n.call(d,t,u,e)},onTouchEnd:function(e){var n;null===(n=d.onDayTouchEnd)||void 0===n||n.call(d,t,u,e)},onTouchMove:function(e){var n;null===(n=d.onDayTouchMove)||void 0===n||n.call(d,t,u,e)},onTouchStart:function(e){var n;null===(n=d.onDayTouchStart)||void 0===n||n.call(d,t,u,e)}},E=tM(),S=ni(),_=tq(),j=tK(),O=tg(E)?S.selected:th(E)?_.selected:tp(E)?j.selected:void 0,Z=!!(i.onDayClick||"default"!==i.mode),(0,c.useEffect)(function(){var e;!u.outside&&l.focusedDay&&Z&&tr(l.focusedDay,t)&&(null===(e=A.current)||void 0===e||e.focus())},[l.focusedDay,t,A,Z,u.outside]),Y=(L=[i.classNames.day],Object.keys(u).forEach(function(e){var t=i.modifiersClassNames[e];if(t)L.push(t);else if(Object.values(s).includes(e)){var n=i.classNames["day_".concat(e)];n&&L.push(n)}}),L).join(" "),F=td({},i.styles.day),Object.keys(u).forEach(function(e){var t;F=td(td({},F),null===(t=i.modifiersStyles)||void 0===t?void 0:t[e])}),W=F,R=!!(u.outside&&!i.showOutsideDays||u.hidden),I=null!==(a=null===(o=i.components)||void 0===o?void 0:o.DayContent)&&void 0!==a?a:tH,U={style:W,className:Y,children:tv.jsx(I,{date:t,displayMonth:n,activeModifiers:u}),role:"gridcell"},H=l.focusTarget&&tr(l.focusTarget,t)&&!u.outside,B=l.focusedDay&&tr(l.focusedDay,t),z=td(td(td({},U),((r={disabled:u.disabled,role:"gridcell"})["aria-selected"]=u.selected,r.tabIndex=B||H?0:-1,r)),P),{isButton:Z,isHidden:R,activeModifiers:u,selectedDays:O,buttonProps:z,divProps:U});return q.isHidden?tv.jsx("div",{role:"gridcell"}):q.isButton?tv.jsx(tL,td({name:"day",ref:A},q.buttonProps)):tv.jsx("div",td({},q.divProps))}function nu(e){var t=e.number,n=e.dates,r=tM(),o=r.onWeekNumberClick,a=r.styles,i=r.classNames,l=r.locale,u=r.labels.labelWeekNumber,s=(0,r.formatters.formatWeekNumber)(Number(t),{locale:l});if(!o)return tv.jsx("span",{className:i.weeknumber,style:a.weeknumber,children:s});var d=u(Number(t),{locale:l});return tv.jsx(tL,{name:"week-number","aria-label":d,className:i.weeknumber,style:a.weeknumber,onClick:function(e){o(t,n,e)},children:s})}function ns(e){var t,n,r,o=tM(),a=o.styles,i=o.classNames,l=o.showWeekNumber,u=o.components,s=null!==(t=null==u?void 0:u.Day)&&void 0!==t?t:nl,d=null!==(n=null==u?void 0:u.WeekNumber)&&void 0!==n?n:nu;return l&&(r=tv.jsx("td",{className:i.cell,style:a.cell,children:tv.jsx(d,{number:e.weekNumber,dates:e.dates})})),tv.jsxs("tr",{className:i.row,style:a.row,children:[r,e.dates.map(function(t){return tv.jsx("td",{className:i.cell,style:a.cell,role:"presentation",children:tv.jsx(s,{displayMonth:e.displayMonth,date:t})},function(e){return(0,ea.Z)(1,arguments),Math.floor(function(e){return(0,ea.Z)(1,arguments),(0,eo.Z)(e).getTime()}(e)/1e3)}(t))})]})}function nd(e,t,n){for(var r=(null==n?void 0:n.ISOWeek)?ts(t):tu(t,n),o=(null==n?void 0:n.ISOWeek)?tn(e):tt(e,n),a=ta(r,o),i=[],l=0;l<=a;l++)i.push((0,ev.Z)(o,l));return i.reduce(function(e,t){var r=(null==n?void 0:n.ISOWeek)?function(e){(0,ea.Z)(1,arguments);var t=(0,eo.Z)(e);return Math.round((tn(t).getTime()-(function(e){(0,ea.Z)(1,arguments);var t=function(e){(0,ea.Z)(1,arguments);var t=(0,eo.Z)(e),n=t.getFullYear(),r=new Date(0);r.setFullYear(n+1,0,4),r.setHours(0,0,0,0);var o=tn(r),a=new Date(0);a.setFullYear(n,0,4),a.setHours(0,0,0,0);var i=tn(a);return t.getTime()>=o.getTime()?n+1:t.getTime()>=i.getTime()?n:n-1}(e),n=new Date(0);return n.setFullYear(t,0,4),n.setHours(0,0,0,0),tn(n)})(t).getTime())/6048e5)+1}(t):function(e,t){(0,ea.Z)(1,arguments);var n=(0,eo.Z)(e);return Math.round((tt(n,t).getTime()-(function(e,t){(0,ea.Z)(1,arguments);var n,r,o,a,i,l,u,s,d=(0,eh.Z)(null!==(n=null!==(r=null!==(o=null!==(a=null==t?void 0:t.firstWeekContainsDate)&&void 0!==a?a:null==t?void 0:null===(i=t.locale)||void 0===i?void 0:null===(l=i.options)||void 0===l?void 0:l.firstWeekContainsDate)&&void 0!==o?o:eM.firstWeekContainsDate)&&void 0!==r?r:null===(u=eM.locale)||void 0===u?void 0:null===(s=u.options)||void 0===s?void 0:s.firstWeekContainsDate)&&void 0!==n?n:1),c=function(e,t){(0,ea.Z)(1,arguments);var n,r,o,a,i,l,u,s,d=(0,eo.Z)(e),c=d.getFullYear(),f=(0,eh.Z)(null!==(n=null!==(r=null!==(o=null!==(a=null==t?void 0:t.firstWeekContainsDate)&&void 0!==a?a:null==t?void 0:null===(i=t.locale)||void 0===i?void 0:null===(l=i.options)||void 0===l?void 0:l.firstWeekContainsDate)&&void 0!==o?o:eM.firstWeekContainsDate)&&void 0!==r?r:null===(u=eM.locale)||void 0===u?void 0:null===(s=u.options)||void 0===s?void 0:s.firstWeekContainsDate)&&void 0!==n?n:1);if(!(f>=1&&f<=7))throw RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var m=new Date(0);m.setFullYear(c+1,0,f),m.setHours(0,0,0,0);var v=tt(m,t),h=new Date(0);h.setFullYear(c,0,f),h.setHours(0,0,0,0);var p=tt(h,t);return d.getTime()>=v.getTime()?c+1:d.getTime()>=p.getTime()?c:c-1}(e,t),f=new Date(0);return f.setFullYear(c,0,d),f.setHours(0,0,0,0),tt(f,t)})(n,t).getTime())/6048e5)+1}(t,n),o=e.find(function(e){return e.weekNumber===r});return o?o.dates.push(t):e.push({weekNumber:r,dates:[t]}),e},[])}function nc(e){var t,n,r,o=tM(),a=o.locale,i=o.classNames,l=o.styles,u=o.hideHead,s=o.fixedWeeks,d=o.components,c=o.weekStartsOn,f=o.firstWeekContainsDate,m=o.ISOWeek,v=function(e,t){var n=nd(eu(e),e5(e),t);if(null==t?void 0:t.useFixedWeeks){var r=function(e,t){return(0,ea.Z)(1,arguments),function(e,t,n){(0,ea.Z)(2,arguments);var r=tt(e,n),o=tt(t,n);return Math.round((r.getTime()-eY(r)-(o.getTime()-eY(o)))/6048e5)}(function(e){(0,ea.Z)(1,arguments);var t=(0,eo.Z)(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(0,0,0,0),t}(e),eu(e),t)+1}(e,t);if(r<6){var o=n[n.length-1],a=o.dates[o.dates.length-1],i=ti(a,6-r),l=nd(ti(a,1),i,t);n.push.apply(n,l)}}return n}(e.displayMonth,{useFixedWeeks:!!s,ISOWeek:m,locale:a,weekStartsOn:c,firstWeekContainsDate:f}),h=null!==(t=null==d?void 0:d.Head)&&void 0!==t?t:tU,p=null!==(n=null==d?void 0:d.Row)&&void 0!==n?n:ns,g=null!==(r=null==d?void 0:d.Footer)&&void 0!==r?r:tR;return tv.jsxs("table",{id:e.id,className:i.table,style:l.table,role:"grid","aria-labelledby":e["aria-labelledby"],children:[!u&&tv.jsx(h,{}),tv.jsx("tbody",{className:i.tbody,style:l.tbody,children:v.map(function(t){return tv.jsx(p,{displayMonth:e.displayMonth,dates:t.dates,weekNumber:t.weekNumber},t.weekNumber)})}),tv.jsx(g,{displayMonth:e.displayMonth})]})}var nf="undefined"!=typeof window&&window.document&&window.document.createElement?c.useLayoutEffect:c.useEffect,nm=!1,nv=0;function nh(){return"react-day-picker-".concat(++nv)}function np(e){var t,n,r,o,a,i,l,u,s=tM(),d=s.dir,f=s.classNames,m=s.styles,v=s.components,h=t_().displayMonths,p=(r=null!=(t=s.id?"".concat(s.id,"-").concat(e.displayIndex):void 0)?t:nm?nh():null,a=(o=(0,c.useState)(r))[0],i=o[1],nf(function(){null===a&&i(nh())},[]),(0,c.useEffect)(function(){!1===nm&&(nm=!0)},[]),null!==(n=null!=t?t:a)&&void 0!==n?n:void 0),g=s.id?"".concat(s.id,"-grid-").concat(e.displayIndex):void 0,b=[f.month],y=m.month,w=0===e.displayIndex,x=e.displayIndex===h.length-1,k=!w&&!x;"rtl"===d&&(x=(l=[w,x])[0],w=l[1]),w&&(b.push(f.caption_start),y=td(td({},y),m.caption_start)),x&&(b.push(f.caption_end),y=td(td({},y),m.caption_end)),k&&(b.push(f.caption_between),y=td(td({},y),m.caption_between));var M=null!==(u=null==v?void 0:v.Caption)&&void 0!==u?u:tW;return tv.jsxs("div",{className:b.join(" "),style:y,children:[tv.jsx(M,{id:p,displayMonth:e.displayMonth,displayIndex:e.displayIndex}),tv.jsx(nc,{id:g,"aria-labelledby":p,displayMonth:e.displayMonth})]},e.displayIndex)}function ng(e){var t=tM(),n=t.classNames,r=t.styles;return tv.jsx("div",{className:n.months,style:r.months,children:e.children})}function nb(e){var t,n,r=e.initialProps,o=tM(),a=nn(),i=t_(),l=(0,c.useState)(!1),u=l[0],s=l[1];(0,c.useEffect)(function(){o.initialFocus&&a.focusTarget&&(u||(a.focus(a.focusTarget),s(!0)))},[o.initialFocus,u,a.focus,a.focusTarget,a]);var d=[o.classNames.root,o.className];o.numberOfMonths>1&&d.push(o.classNames.multiple_months),o.showWeekNumber&&d.push(o.classNames.with_weeknumber);var f=td(td({},o.styles.root),o.style),m=Object.keys(r).filter(function(e){return e.startsWith("data-")}).reduce(function(e,t){var n;return td(td({},e),((n={})[t]=r[t],n))},{}),v=null!==(n=null===(t=r.components)||void 0===t?void 0:t.Months)&&void 0!==n?n:ng;return tv.jsx("div",td({className:d.join(" "),style:f,dir:o.dir,id:o.id,nonce:r.nonce,title:r.title,lang:r.lang},m,{children:tv.jsx(v,{children:i.displayMonths.map(function(e,t){return tv.jsx(np,{displayIndex:t,displayMonth:e},t)})})}))}function ny(e){var t=e.children,n=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n}(e,["children"]);return tv.jsx(tk,{initialProps:n,children:tv.jsx(tS,{children:tv.jsx(no,{initialProps:n,children:tv.jsx(tz,{initialProps:n,children:tv.jsx(tG,{initialProps:n,children:tv.jsx(t8,{children:tv.jsx(nt,{children:t})})})})})})})}function nw(e){return tv.jsx(ny,td({},e,{children:tv.jsx(nb,{initialProps:e})}))}let nx=e=>{var t=(0,d._T)(e,[]);return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),c.createElement("path",{d:"M10.8284 12.0007L15.7782 16.9504L14.364 18.3646L8 12.0007L14.364 5.63672L15.7782 7.05093L10.8284 12.0007Z"}))},nk=e=>{var t=(0,d._T)(e,[]);return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),c.createElement("path",{d:"M13.1717 12.0007L8.22192 7.05093L9.63614 5.63672L16.0001 12.0007L9.63614 18.3646L8.22192 16.9504L13.1717 12.0007Z"}))},nM=e=>{var t=(0,d._T)(e,[]);return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),c.createElement("path",{d:"M4.83582 12L11.0429 18.2071L12.4571 16.7929L7.66424 12L12.4571 7.20712L11.0429 5.79291L4.83582 12ZM10.4857 12L16.6928 18.2071L18.107 16.7929L13.3141 12L18.107 7.20712L16.6928 5.79291L10.4857 12Z"}))},nC=e=>{var t=(0,d._T)(e,[]);return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),c.createElement("path",{d:"M19.1642 12L12.9571 5.79291L11.5429 7.20712L16.3358 12L11.5429 16.7929L12.9571 18.2071L19.1642 12ZM13.5143 12L7.30722 5.79291L5.89301 7.20712L10.6859 12L5.89301 16.7929L7.30722 18.2071L13.5143 12Z"}))};var nD=n(84264);n(41649);var nT=n(1526),nN=n(7084),nP=n(26898);let nE={xs:{paddingX:"px-2",paddingY:"py-0.5",fontSize:"text-xs"},sm:{paddingX:"px-2.5",paddingY:"py-1",fontSize:"text-sm"},md:{paddingX:"px-3",paddingY:"py-1.5",fontSize:"text-md"},lg:{paddingX:"px-3.5",paddingY:"py-1.5",fontSize:"text-lg"},xl:{paddingX:"px-3.5",paddingY:"py-1.5",fontSize:"text-xl"}},nS={xs:{paddingX:"px-2",paddingY:"py-0.5",fontSize:"text-xs"},sm:{paddingX:"px-2.5",paddingY:"py-0.5",fontSize:"text-sm"},md:{paddingX:"px-3",paddingY:"py-0.5",fontSize:"text-md"},lg:{paddingX:"px-3.5",paddingY:"py-0.5",fontSize:"text-lg"},xl:{paddingX:"px-4",paddingY:"py-1",fontSize:"text-xl"}},n_={xs:{height:"h-4",width:"w-4"},sm:{height:"h-4",width:"w-4"},md:{height:"h-4",width:"w-4"},lg:{height:"h-5",width:"w-5"},xl:{height:"h-6",width:"w-6"}},nj={[nN.wu.Increase]:{bgColor:(0,e$.bM)(nN.fr.Emerald,nP.K.background).bgColor,textColor:(0,e$.bM)(nN.fr.Emerald,nP.K.text).textColor},[nN.wu.ModerateIncrease]:{bgColor:(0,e$.bM)(nN.fr.Emerald,nP.K.background).bgColor,textColor:(0,e$.bM)(nN.fr.Emerald,nP.K.text).textColor},[nN.wu.Decrease]:{bgColor:(0,e$.bM)(nN.fr.Rose,nP.K.background).bgColor,textColor:(0,e$.bM)(nN.fr.Rose,nP.K.text).textColor},[nN.wu.ModerateDecrease]:{bgColor:(0,e$.bM)(nN.fr.Rose,nP.K.background).bgColor,textColor:(0,e$.bM)(nN.fr.Rose,nP.K.text).textColor},[nN.wu.Unchanged]:{bgColor:(0,e$.bM)(nN.fr.Orange,nP.K.background).bgColor,textColor:(0,e$.bM)(nN.fr.Orange,nP.K.text).textColor}},nO={[nN.wu.Increase]:e=>{var t=(0,d._T)(e,[]);return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),c.createElement("path",{d:"M13.0001 7.82843V20H11.0001V7.82843L5.63614 13.1924L4.22192 11.7782L12.0001 4L19.7783 11.7782L18.3641 13.1924L13.0001 7.82843Z"}))},[nN.wu.ModerateIncrease]:e=>{var t=(0,d._T)(e,[]);return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),c.createElement("path",{d:"M16.0037 9.41421L7.39712 18.0208L5.98291 16.6066L14.5895 8H7.00373V6H18.0037V17H16.0037V9.41421Z"}))},[nN.wu.Decrease]:e=>{var t=(0,d._T)(e,[]);return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),c.createElement("path",{d:"M13.0001 16.1716L18.3641 10.8076L19.7783 12.2218L12.0001 20L4.22192 12.2218L5.63614 10.8076L11.0001 16.1716V4H13.0001V16.1716Z"}))},[nN.wu.ModerateDecrease]:e=>{var t=(0,d._T)(e,[]);return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),c.createElement("path",{d:"M14.5895 16.0032L5.98291 7.39664L7.39712 5.98242L16.0037 14.589V7.00324H18.0037V18.0032H7.00373V16.0032H14.5895Z"}))},[nN.wu.Unchanged]:e=>{var t=(0,d._T)(e,[]);return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),c.createElement("path",{d:"M16.1716 10.9999L10.8076 5.63589L12.2218 4.22168L20 11.9999L12.2218 19.778L10.8076 18.3638L16.1716 12.9999H4V10.9999H16.1716Z"}))}},nZ=(0,e$.fn)("BadgeDelta");c.forwardRef((e,t)=>{let{deltaType:n=nN.wu.Increase,isIncreasePositive:r=!0,size:o=nN.u8.SM,tooltip:a,children:i,className:l}=e,u=(0,d._T)(e,["deltaType","isIncreasePositive","size","tooltip","children","className"]),s=nO[n],f=(0,e$.Fo)(n,r),m=i?nS:nE,{tooltipProps:v,getReferenceProps:h}=(0,nT.l)();return c.createElement("span",Object.assign({ref:(0,e$.lq)([t,v.refs.setReference]),className:(0,es.q)(nZ("root"),"w-max flex-shrink-0 inline-flex justify-center items-center cursor-default rounded-tremor-full bg-opacity-20 dark:bg-opacity-25",nj[f].bgColor,nj[f].textColor,m[o].paddingX,m[o].paddingY,m[o].fontSize,l)},h,u),c.createElement(nT.Z,Object.assign({text:a},v)),c.createElement(s,{className:(0,es.q)(nZ("icon"),"shrink-0",i?(0,es.q)("-ml-1 mr-1.5"):n_[o].height,n_[o].width)}),i?c.createElement("p",{className:(0,es.q)(nZ("text"),"text-sm whitespace-nowrap")},i):null)}).displayName="BadgeDelta";var nL=n(47323);let nY=e=>{var{onClick:t,icon:n}=e,r=(0,d._T)(e,["onClick","icon"]);return c.createElement("button",Object.assign({type:"button",className:(0,es.q)("flex items-center justify-center p-1 h-7 w-7 outline-none focus:ring-2 transition duration-100 border border-tremor-border dark:border-dark-tremor-border hover:bg-tremor-background-muted dark:hover:bg-dark-tremor-background-muted rounded-tremor-small focus:border-tremor-brand-subtle select-none dark:focus:border-dark-tremor-brand-subtle focus:ring-tremor-brand-muted dark:focus:ring-dark-tremor-brand-muted text-tremor-content-subtle dark:text-dark-tremor-content-subtle hover:text-tremor-content dark:hover:text-dark-tremor-content")},r),c.createElement(nL.Z,{onClick:t,icon:n,variant:"simple",color:"slate",size:"sm"}))};function nF(e){var{mode:t,defaultMonth:n,selected:r,onSelect:o,locale:a,disabled:i,enableYearNavigation:l,classNames:u,weekStartsOn:s=0}=e,f=(0,d._T)(e,["mode","defaultMonth","selected","onSelect","locale","disabled","enableYearNavigation","classNames","weekStartsOn"]);return c.createElement(nw,Object.assign({showOutsideDays:!0,mode:t,defaultMonth:n,selected:r,onSelect:o,locale:a,disabled:i,weekStartsOn:s,classNames:Object.assign({months:"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",month:"space-y-4",caption:"flex justify-center pt-2 relative items-center",caption_label:"text-tremor-default text-tremor-content-emphasis dark:text-dark-tremor-content-emphasis font-medium",nav:"space-x-1 flex items-center",nav_button:"flex items-center justify-center p-1 h-7 w-7 outline-none focus:ring-2 transition duration-100 border border-tremor-border dark:border-dark-tremor-border hover:bg-tremor-background-muted dark:hover:bg-dark-tremor-background-muted rounded-tremor-small focus:border-tremor-brand-subtle dark:focus:border-dark-tremor-brand-subtle focus:ring-tremor-brand-muted dark:focus:ring-dark-tremor-brand-muted text-tremor-content-subtle dark:text-dark-tremor-content-subtle hover:text-tremor-content dark:hover:text-dark-tremor-content",nav_button_previous:"absolute left-1",nav_button_next:"absolute right-1",table:"w-full border-collapse space-y-1",head_row:"flex",head_cell:"w-9 font-normal text-center text-tremor-content-subtle dark:text-dark-tremor-content-subtle",row:"flex w-full mt-0.5",cell:"text-center p-0 relative focus-within:relative text-tremor-default text-tremor-content-emphasis dark:text-dark-tremor-content-emphasis",day:"h-9 w-9 p-0 hover:bg-tremor-background-subtle dark:hover:bg-dark-tremor-background-subtle outline-tremor-brand dark:outline-dark-tremor-brand rounded-tremor-default",day_today:"font-bold",day_selected:"aria-selected:bg-tremor-background-emphasis aria-selected:text-tremor-content-inverted dark:aria-selected:bg-dark-tremor-background-emphasis dark:aria-selected:text-dark-tremor-content-inverted ",day_disabled:"text-tremor-content-subtle dark:text-dark-tremor-content-subtle disabled:hover:bg-transparent",day_outside:"text-tremor-content-subtle dark:text-dark-tremor-content-subtle"},u),components:{IconLeft:e=>{var t=(0,d._T)(e,[]);return c.createElement(nx,Object.assign({className:"h-4 w-4"},t))},IconRight:e=>{var t=(0,d._T)(e,[]);return c.createElement(nk,Object.assign({className:"h-4 w-4"},t))},Caption:e=>{var t=(0,d._T)(e,[]);let{goToMonth:n,nextMonth:r,previousMonth:o,currentMonth:i}=t_();return c.createElement("div",{className:"flex justify-between items-center"},c.createElement("div",{className:"flex items-center space-x-1"},l&&c.createElement(nY,{onClick:()=>i&&n(tl(i,-1)),icon:nM}),c.createElement(nY,{onClick:()=>o&&n(o),icon:nx})),c.createElement(nD.Z,{className:"text-tremor-default tabular-nums capitalize text-tremor-content-emphasis dark:text-dark-tremor-content-emphasis font-medium"},eJ(t.displayMonth,"LLLL yyy",{locale:a})),c.createElement("div",{className:"flex items-center space-x-1"},c.createElement(nY,{onClick:()=>r&&n(r),icon:nk}),l&&c.createElement(nY,{onClick:()=>i&&n(tl(i,1)),icon:nC})))}}},f))}nF.displayName="DateRangePicker",n(27281);var nW=n(57365),nR=n(44140);let nI=el(),nU=c.forwardRef((e,t)=>{var n,r;let{value:o,defaultValue:a,onValueChange:i,enableSelect:l=!0,minDate:u,maxDate:s,placeholder:f="Select range",selectPlaceholder:m="Select range",disabled:v=!1,locale:h=eq,enableClear:p=!0,displayFormat:g,children:b,className:y,enableYearNavigation:w=!1,weekStartsOn:x=0,disabledDates:k}=e,M=(0,d._T)(e,["value","defaultValue","onValueChange","enableSelect","minDate","maxDate","placeholder","selectPlaceholder","disabled","locale","enableClear","displayFormat","children","className","enableYearNavigation","weekStartsOn","disabledDates"]),[C,D]=(0,nR.Z)(a,o),[T,N]=(0,c.useState)(!1),[P,E]=(0,c.useState)(!1),S=(0,c.useMemo)(()=>{let e=[];return u&&e.push({before:u}),s&&e.push({after:s}),[...e,...null!=k?k:[]]},[u,s,k]),_=(0,c.useMemo)(()=>{let e=new Map;return b?c.Children.forEach(b,t=>{var n;e.set(t.props.value,{text:null!==(n=(0,ed.qg)(t))&&void 0!==n?n:t.props.value,from:t.props.from,to:t.props.to})}):e4.forEach(t=>{e.set(t.value,{text:t.text,from:t.from,to:nI})}),e},[b]),j=(0,c.useMemo)(()=>{if(b)return(0,ed.sl)(b);let e=new Map;return e4.forEach(t=>e.set(t.value,t.text)),e},[b]),O=(null==C?void 0:C.selectValue)||"",Z=e1(null==C?void 0:C.from,u,O,_),L=e2(null==C?void 0:C.to,s,O,_),Y=Z||L?e3(Z,L,h,g):f,F=eu(null!==(r=null!==(n=null!=L?L:Z)&&void 0!==n?n:s)&&void 0!==r?r:nI),W=p&&!v;return c.createElement("div",Object.assign({ref:t,className:(0,es.q)("w-full min-w-[10rem] relative flex justify-between text-tremor-default max-w-sm shadow-tremor-input dark:shadow-dark-tremor-input rounded-tremor-default",y)},M),c.createElement($,{as:"div",className:(0,es.q)("w-full",l?"rounded-l-tremor-default":"rounded-tremor-default",T&&"ring-2 ring-tremor-brand-muted dark:ring-dark-tremor-brand-muted z-10")},c.createElement("div",{className:"relative w-full"},c.createElement($.Button,{onFocus:()=>N(!0),onBlur:()=>N(!1),disabled:v,className:(0,es.q)("w-full outline-none text-left whitespace-nowrap truncate focus:ring-2 transition duration-100 rounded-l-tremor-default flex flex-nowrap border pl-3 py-2","rounded-l-tremor-default border-tremor-border text-tremor-content-emphasis focus:border-tremor-brand-subtle focus:ring-tremor-brand-muted","dark:border-dark-tremor-border dark:text-dark-tremor-content-emphasis dark:focus:border-dark-tremor-brand-subtle dark:focus:ring-dark-tremor-brand-muted",l?"rounded-l-tremor-default":"rounded-tremor-default",W?"pr-8":"pr-4",(0,ed.um)((0,ed.Uh)(Z||L),v))},c.createElement(en,{className:(0,es.q)(e0("calendarIcon"),"flex-none shrink-0 h-5 w-5 -ml-0.5 mr-2","text-tremor-content-subtle","dark:text-dark-tremor-content-subtle"),"aria-hidden":"true"}),c.createElement("p",{className:"truncate"},Y)),W&&Z?c.createElement("button",{type:"button",className:(0,es.q)("absolute outline-none inset-y-0 right-0 flex items-center transition duration-100 mr-4"),onClick:e=>{e.preventDefault(),null==i||i({}),D({})}},c.createElement(er.Z,{className:(0,es.q)(e0("clearIcon"),"flex-none h-4 w-4","text-tremor-content-subtle","dark:text-dark-tremor-content-subtle")})):null),c.createElement(ee.u,{className:"absolute z-10 min-w-min left-0",enter:"transition ease duration-100 transform",enterFrom:"opacity-0 -translate-y-4",enterTo:"opacity-100 translate-y-0",leave:"transition ease duration-100 transform",leaveFrom:"opacity-100 translate-y-0",leaveTo:"opacity-0 -translate-y-4"},c.createElement($.Panel,{focus:!0,className:(0,es.q)("divide-y overflow-y-auto outline-none rounded-tremor-default p-3 border my-1","bg-tremor-background border-tremor-border divide-tremor-border shadow-tremor-dropdown","dark:bg-dark-tremor-background dark:border-dark-tremor-border dark:divide-dark-tremor-border dark:shadow-dark-tremor-dropdown")},c.createElement(nF,Object.assign({mode:"range",showOutsideDays:!0,defaultMonth:F,selected:{from:Z,to:L},onSelect:e=>{null==i||i({from:null==e?void 0:e.from,to:null==e?void 0:e.to}),D({from:null==e?void 0:e.from,to:null==e?void 0:e.to})},locale:h,disabled:S,enableYearNavigation:w,classNames:{day_range_middle:(0,es.q)("!rounded-none aria-selected:!bg-tremor-background-subtle aria-selected:dark:!bg-dark-tremor-background-subtle aria-selected:!text-tremor-content aria-selected:dark:!bg-dark-tremor-background-subtle"),day_range_start:"rounded-r-none rounded-l-tremor-small aria-selected:text-tremor-brand-inverted dark:aria-selected:text-dark-tremor-brand-inverted",day_range_end:"rounded-l-none rounded-r-tremor-small aria-selected:text-tremor-brand-inverted dark:aria-selected:text-dark-tremor-brand-inverted"},weekStartsOn:x},e))))),l&&c.createElement(et.R,{as:"div",className:(0,es.q)("w-48 -ml-px rounded-r-tremor-default",P&&"ring-2 ring-tremor-brand-muted dark:ring-dark-tremor-brand-muted z-10"),value:O,onChange:e=>{let{from:t,to:n}=_.get(e),r=null!=n?n:nI;null==i||i({from:t,to:r,selectValue:e}),D({from:t,to:r,selectValue:e})},disabled:v},e=>{var t;let{value:n}=e;return c.createElement(c.Fragment,null,c.createElement(et.R.Button,{onFocus:()=>E(!0),onBlur:()=>E(!1),className:(0,es.q)("w-full outline-none text-left whitespace-nowrap truncate rounded-r-tremor-default transition duration-100 border px-4 py-2","border-tremor-border shadow-tremor-input text-tremor-content-emphasis focus:border-tremor-brand-subtle","dark:border-dark-tremor-border dark:shadow-dark-tremor-input dark:text-dark-tremor-content-emphasis dark:focus:border-dark-tremor-brand-subtle",(0,ed.um)((0,ed.Uh)(n),v))},n&&null!==(t=j.get(n))&&void 0!==t?t:m),c.createElement(ee.u,{className:"absolute z-10 w-full inset-x-0 right-0",enter:"transition ease duration-100 transform",enterFrom:"opacity-0 -translate-y-4",enterTo:"opacity-100 translate-y-0",leave:"transition ease duration-100 transform",leaveFrom:"opacity-100 translate-y-0",leaveTo:"opacity-0 -translate-y-4"},c.createElement(et.R.Options,{className:(0,es.q)("divide-y overflow-y-auto outline-none border my-1","shadow-tremor-dropdown bg-tremor-background border-tremor-border divide-tremor-border rounded-tremor-default","dark:shadow-dark-tremor-dropdown dark:bg-dark-tremor-background dark:border-dark-tremor-border dark:divide-dark-tremor-border")},null!=b?b:e4.map(e=>c.createElement(nW.Z,{key:e.value,value:e.value},e.text)))))}))});nU.displayName="DateRangePicker"},40048:function(e,t,n){n.d(t,{i:function(){return a}});var r=n(2265),o=n(40293);function a(){for(var e=arguments.length,t=Array(e),n=0;n(0,o.r)(...t),[...t])}}}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/1491-80fe911f18f4631c.js b/litellm/proxy/_experimental/out/_next/static/chunks/1491-80fe911f18f4631c.js new file mode 100644 index 00000000000..f2f6a5f9bde --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/1491-80fe911f18f4631c.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1491],{31373:function(e,t,n){"use strict";n.d(t,{iN:function(){return h},R_:function(){return d},EV:function(){return g},ez:function(){return f}});var r=n(82082),o=n(96021),a=[{index:7,opacity:.15},{index:6,opacity:.25},{index:5,opacity:.3},{index:5,opacity:.45},{index:5,opacity:.65},{index:5,opacity:.85},{index:4,opacity:.9},{index:3,opacity:.95},{index:2,opacity:.97},{index:1,opacity:.98}];function i(e){var t=e.r,n=e.g,o=e.b,a=(0,r.py)(t,n,o);return{h:360*a.h,s:a.s,v:a.v}}function c(e){var t=e.r,n=e.g,o=e.b;return"#".concat((0,r.vq)(t,n,o,!1))}function l(e,t,n){var r;return(r=Math.round(e.h)>=60&&240>=Math.round(e.h)?n?Math.round(e.h)-2*t:Math.round(e.h)+2*t:n?Math.round(e.h)+2*t:Math.round(e.h)-2*t)<0?r+=360:r>=360&&(r-=360),r}function s(e,t,n){var r;return 0===e.h&&0===e.s?e.s:((r=n?e.s-.16*t:4===t?e.s+.16:e.s+.05*t)>1&&(r=1),n&&5===t&&r>.1&&(r=.1),r<.06&&(r=.06),Number(r.toFixed(2)))}function u(e,t,n){var r;return(r=n?e.v+.05*t:e.v-.15*t)>1&&(r=1),Number(r.toFixed(2))}function d(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[],r=(0,o.uA)(e),d=5;d>0;d-=1){var f=i(r),p=c((0,o.uA)({h:l(f,d,!0),s:s(f,d,!0),v:u(f,d,!0)}));n.push(p)}n.push(c(r));for(var m=1;m<=4;m+=1){var g=i(r),h=c((0,o.uA)({h:l(g,m),s:s(g,m),v:u(g,m)}));n.push(h)}return"dark"===t.theme?a.map(function(e){var r,a,i,l=e.index,s=e.opacity;return c((r=(0,o.uA)(t.backgroundColor||"#141414"),a=(0,o.uA)(n[l]),i=100*s/100,{r:(a.r-r.r)*i+r.r,g:(a.g-r.g)*i+r.g,b:(a.b-r.b)*i+r.b}))}):n}var f={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1677FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},p={},m={};Object.keys(f).forEach(function(e){p[e]=d(f[e]),p[e].primary=p[e][5],m[e]=d(f[e],{theme:"dark",backgroundColor:"#141414"}),m[e].primary=m[e][5]}),p.red,p.volcano;var g=p.gold;p.orange,p.yellow,p.lime,p.green,p.cyan;var h=p.blue;p.geekblue,p.purple,p.magenta,p.grey,p.grey},352:function(e,t,n){"use strict";n.d(t,{E4:function(){return eL},jG:function(){return M},ks:function(){return H},bf:function(){return z},CI:function(){return eA},fp:function(){return Y},xy:function(){return eF}});var r,o,a=n(11993),i=n(26365),c=n(83145),l=n(31686),s=function(e){for(var t,n=0,r=0,o=e.length;o>=4;++r,o-=4)t=(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))*1540483477+((t>>>16)*59797<<16),t^=t>>>24,n=(65535&t)*1540483477+((t>>>16)*59797<<16)^(65535&n)*1540483477+((n>>>16)*59797<<16);switch(o){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n^=255&e.charCodeAt(r),n=(65535&n)*1540483477+((n>>>16)*59797<<16)}return n^=n>>>13,(((n=(65535&n)*1540483477+((n>>>16)*59797<<16))^n>>>15)>>>0).toString(36)},u=n(21717),d=n(2265),f=n.t(d,2);n(6397),n(16671);var p=n(76405),m=n(25049);function g(e){return e.join("%")}var h=function(){function e(t){(0,p.Z)(this,e),(0,a.Z)(this,"instanceId",void 0),(0,a.Z)(this,"cache",new Map),this.instanceId=t}return(0,m.Z)(e,[{key:"get",value:function(e){return this.opGet(g(e))}},{key:"opGet",value:function(e){return this.cache.get(e)||null}},{key:"update",value:function(e,t){return this.opUpdate(g(e),t)}},{key:"opUpdate",value:function(e,t){var n=t(this.cache.get(e));null===n?this.cache.delete(e):this.cache.set(e,n)}}]),e}(),v="data-token-hash",b="data-css-hash",y="__cssinjs_instance__",w=d.createContext({hashPriority:"low",cache:function(){var e=Math.random().toString(12).slice(2);if("undefined"!=typeof document&&document.head&&document.body){var t=document.body.querySelectorAll("style[".concat(b,"]"))||[],n=document.head.firstChild;Array.from(t).forEach(function(t){t[y]=t[y]||e,t[y]===e&&document.head.insertBefore(t,n)});var r={};Array.from(document.querySelectorAll("style[".concat(b,"]"))).forEach(function(t){var n,o=t.getAttribute(b);r[o]?t[y]===e&&(null===(n=t.parentNode)||void 0===n||n.removeChild(t)):r[o]=!0})}return new h(e)}(),defaultCache:!0}),x=n(41154),E=n(94981),S=function(){function e(){(0,p.Z)(this,e),(0,a.Z)(this,"cache",void 0),(0,a.Z)(this,"keys",void 0),(0,a.Z)(this,"cacheCallTimes",void 0),this.cache=new Map,this.keys=[],this.cacheCallTimes=0}return(0,m.Z)(e,[{key:"size",value:function(){return this.keys.length}},{key:"internalGet",value:function(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o={map:this.cache};return e.forEach(function(e){if(o){var t;o=null===(t=o)||void 0===t||null===(t=t.map)||void 0===t?void 0:t.get(e)}else o=void 0}),null!==(t=o)&&void 0!==t&&t.value&&r&&(o.value[1]=this.cacheCallTimes++),null===(n=o)||void 0===n?void 0:n.value}},{key:"get",value:function(e){var t;return null===(t=this.internalGet(e,!0))||void 0===t?void 0:t[0]}},{key:"has",value:function(e){return!!this.internalGet(e)}},{key:"set",value:function(t,n){var r=this;if(!this.has(t)){if(this.size()+1>e.MAX_CACHE_SIZE+e.MAX_CACHE_OFFSET){var o=this.keys.reduce(function(e,t){var n=(0,i.Z)(e,2)[1];return r.internalGet(t)[1]0,"[Ant Design CSS-in-JS] Theme should have at least one derivative function."),Z+=1}return(0,m.Z)(e,[{key:"getDerivativeToken",value:function(e){return this.derivatives.reduce(function(t,n){return n(e,t)},void 0)}}]),e}(),k=new S;function M(e){var t=Array.isArray(e)?e:[e];return k.has(t)||k.set(t,new O(t)),k.get(t)}var j=new WeakMap,I={},R=new WeakMap;function N(e){var t=R.get(e)||"";return t||(Object.keys(e).forEach(function(n){var r=e[n];t+=n,r instanceof O?t+=r.id:r&&"object"===(0,x.Z)(r)?t+=N(r):t+=r}),R.set(e,t)),t}function P(e,t){return s("".concat(t,"_").concat(N(e)))}var F="random-".concat(Date.now(),"-").concat(Math.random()).replace(/\./g,""),T="_bAmBoO_",A=void 0,L=(0,E.Z)();function z(e){return"number"==typeof e?"".concat(e,"px"):e}function _(e,t,n){var r,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(i)return e;var c=(0,l.Z)((0,l.Z)({},o),{},(r={},(0,a.Z)(r,v,t),(0,a.Z)(r,b,n),r)),s=Object.keys(c).map(function(e){var t=c[e];return t?"".concat(e,'="').concat(t,'"'):null}).filter(function(e){return e}).join(" ");return"")}var H=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"--".concat(t?"".concat(t,"-"):"").concat(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/([A-Z]+)([A-Z][a-z0-9]+)/g,"$1-$2").replace(/([a-z])([A-Z0-9])/g,"$1-$2").toLowerCase()},B=function(e,t,n){var r,o={},a={};return Object.entries(e).forEach(function(e){var t=(0,i.Z)(e,2),r=t[0],c=t[1];if(null!=n&&null!==(l=n.preserve)&&void 0!==l&&l[r])a[r]=c;else if(("string"==typeof c||"number"==typeof c)&&!(null!=n&&null!==(s=n.ignore)&&void 0!==s&&s[r])){var l,s,u,d=H(r,null==n?void 0:n.prefix);o[d]="number"!=typeof c||null!=n&&null!==(u=n.unitless)&&void 0!==u&&u[r]?String(c):"".concat(c,"px"),a[r]="var(".concat(d,")")}}),[a,(r={scope:null==n?void 0:n.scope},Object.keys(o).length?".".concat(t).concat(null!=r&&r.scope?".".concat(r.scope):"","{").concat(Object.entries(o).map(function(e){var t=(0,i.Z)(e,2),n=t[0],r=t[1];return"".concat(n,":").concat(r,";")}).join(""),"}"):"")]},D=n(27380),W=(0,l.Z)({},f).useInsertionEffect,V=W?function(e,t,n){return W(function(){return e(),t()},n)}:function(e,t,n){d.useMemo(e,n),(0,D.Z)(function(){return t(!0)},n)},q=void 0!==(0,l.Z)({},f).useInsertionEffect?function(e){var t=[],n=!1;return d.useEffect(function(){return n=!1,function(){n=!0,t.length&&t.forEach(function(e){return e()})}},e),function(e){n||t.push(e)}}:function(){return function(e){e()}};function G(e,t,n,r,o){var a=d.useContext(w).cache,l=g([e].concat((0,c.Z)(t))),s=q([l]),u=function(e){a.opUpdate(l,function(t){var r=(0,i.Z)(t||[void 0,void 0],2),o=r[0],a=[void 0===o?0:o,r[1]||n()];return e?e(a):a})};d.useMemo(function(){u()},[l]);var f=a.opGet(l)[1];return V(function(){null==o||o(f)},function(e){return u(function(t){var n=(0,i.Z)(t,2),r=n[0],a=n[1];return e&&0===r&&(null==o||o(f)),[r+1,a]}),function(){a.opUpdate(l,function(t){var n=(0,i.Z)(t||[],2),o=n[0],c=void 0===o?0:o,u=n[1];return 0==c-1?(s(function(){(e||!a.opGet(l))&&(null==r||r(u,!1))}),null):[c-1,u]})}},[l]),f}var X={},U=new Map,$=function(e,t,n,r){var o=n.getDerivativeToken(e),a=(0,l.Z)((0,l.Z)({},o),t);return r&&(a=r(a)),a},K="token";function Y(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=(0,d.useContext)(w),o=r.cache.instanceId,a=r.container,f=n.salt,p=void 0===f?"":f,m=n.override,g=void 0===m?X:m,h=n.formatToken,x=n.getComputedToken,E=n.cssVar,S=function(e,t){for(var n=j,r=0;r=(U.get(e)||0)}),n.length-r.length>0&&r.forEach(function(e){"undefined"!=typeof document&&document.querySelectorAll("style[".concat(v,'="').concat(e,'"]')).forEach(function(e){if(e[y]===o){var t;null===(t=e.parentNode)||void 0===t||t.removeChild(e)}}),U.delete(e)})},function(e){var t=(0,i.Z)(e,4),n=t[0],r=t[3];if(E&&r){var c=(0,u.hq)(r,s("css-variables-".concat(n._themeKey)),{mark:b,prepend:"queue",attachTo:a,priority:-999});c[y]=o,c.setAttribute(v,n._themeKey)}})}var Q=n(1119),J={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},ee="comm",et="rule",en="decl",er=Math.abs,eo=String.fromCharCode;function ea(e,t,n){return e.replace(t,n)}function ei(e,t){return 0|e.charCodeAt(t)}function ec(e,t,n){return e.slice(t,n)}function el(e){return e.length}function es(e,t){return t.push(e),e}function eu(e,t){for(var n="",r=0;r0?p[b]+" "+y:ea(y,/&\f/g,p[b])).trim())&&(l[v++]=w);return eb(e,t,n,0===o?et:c,l,s,u,d)}function eC(e,t,n,r,o){return eb(e,t,n,en,ec(e,0,r),ec(e,r+1,-1),r,o)}var eZ="data-ant-cssinjs-cache-path",eO="_FILE_STYLE__",ek=!0,eM="_multi_value_";function ej(e){var t,n,r;return eu((r=function e(t,n,r,o,a,i,c,l,s){for(var u,d,f,p=0,m=0,g=c,h=0,v=0,b=0,y=1,w=1,x=1,E=0,S="",C=a,Z=i,O=o,k=S;w;)switch(b=E,E=ey()){case 40:if(108!=b&&58==ei(k,g-1)){-1!=(d=k+=ea(eE(E),"&","&\f"),f=er(p?l[p-1]:0),d.indexOf("&\f",f))&&(x=-1);break}case 34:case 39:case 91:k+=eE(E);break;case 9:case 10:case 13:case 32:k+=function(e){for(;eh=ew();)if(eh<33)ey();else break;return ex(e)>2||ex(eh)>3?"":" "}(b);break;case 92:k+=function(e,t){for(var n;--t&&ey()&&!(eh<48)&&!(eh>102)&&(!(eh>57)||!(eh<65))&&(!(eh>70)||!(eh<97)););return n=eg+(t<6&&32==ew()&&32==ey()),ec(ev,e,n)}(eg-1,7);continue;case 47:switch(ew()){case 42:case 47:es(eb(u=function(e,t){for(;ey();)if(e+eh===57)break;else if(e+eh===84&&47===ew())break;return"/*"+ec(ev,t,eg-1)+"*"+eo(47===e?e:ey())}(ey(),eg),n,r,ee,eo(eh),ec(u,2,-2),0,s),s),(5==ex(b||1)||5==ex(ew()||1))&&el(k)&&" "!==ec(k,-1,void 0)&&(k+=" ");break;default:k+="/"}break;case 123*y:l[p++]=el(k)*x;case 125*y:case 59:case 0:switch(E){case 0:case 125:w=0;case 59+m:-1==x&&(k=ea(k,/\f/g,"")),v>0&&(el(k)-g||0===y&&47===b)&&es(v>32?eC(k+";",o,r,g-1,s):eC(ea(k," ","")+";",o,r,g-2,s),s);break;case 59:k+=";";default:if(es(O=eS(k,n,r,p,m,a,l,S,C=[],Z=[],g,i),i),123===E){if(0===m)e(k,n,O,O,C,i,g,l,Z);else{switch(h){case 99:if(110===ei(k,3))break;case 108:if(97===ei(k,2))break;default:m=0;case 100:case 109:case 115:}m?e(t,O,O,o&&es(eS(t,O,O,0,0,a,l,S,a,C=[],g,Z),Z),a,Z,g,l,o?C:Z):e(k,O,O,O,[""],Z,0,l,Z)}}}p=m=v=0,y=x=1,S=k="",g=c;break;case 58:g=1+el(k),v=b;default:if(y<1){if(123==E)--y;else if(125==E&&0==y++&&125==(eh=eg>0?ei(ev,--eg):0,ep--,10===eh&&(ep=1,ef--),eh))continue}switch(k+=eo(E),E*y){case 38:x=m>0?1:(k+="\f",-1);break;case 44:l[p++]=(el(k)-1)*x,x=1;break;case 64:45===ew()&&(k+=eE(ey())),h=ew(),m=g=el(S=k+=function(e){for(;!ex(ew());)ey();return ec(ev,e,eg)}(eg)),E++;break;case 45:45===b&&2==el(k)&&(y=0)}}return i}("",null,null,null,[""],(n=t=e,ef=ep=1,em=el(ev=n),eg=0,t=[]),0,[0],t),ev="",r),ed).replace(/\{%%%\:[^;];}/g,";")}var eI=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{root:!0,parentSelectors:[]},o=r.root,a=r.injectHash,s=r.parentSelectors,d=n.hashId,f=n.layer,p=(n.path,n.hashPriority),m=n.transformers,g=void 0===m?[]:m;n.linters;var h="",v={};function b(t){var r=t.getName(d);if(!v[r]){var o=e(t.style,n,{root:!1,parentSelectors:s}),a=(0,i.Z)(o,1)[0];v[r]="@keyframes ".concat(t.getName(d)).concat(a)}}if((function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t.forEach(function(t){Array.isArray(t)?e(t,n):t&&n.push(t)}),n})(Array.isArray(t)?t:[t]).forEach(function(t){var r="string"!=typeof t||o?t:{};if("string"==typeof r)h+="".concat(r,"\n");else if(r._keyframe)b(r);else{var u=g.reduce(function(e,t){var n;return(null==t||null===(n=t.visit)||void 0===n?void 0:n.call(t,e))||e},r);Object.keys(u).forEach(function(t){var r=u[t];if("object"!==(0,x.Z)(r)||!r||"animationName"===t&&r._keyframe||"object"===(0,x.Z)(r)&&r&&("_skip_check_"in r||eM in r)){function f(e,t){var n=e.replace(/[A-Z]/g,function(e){return"-".concat(e.toLowerCase())}),r=t;J[e]||"number"!=typeof r||0===r||(r="".concat(r,"px")),"animationName"===e&&null!=t&&t._keyframe&&(b(t),r=t.getName(d)),h+="".concat(n,":").concat(r,";")}var m,g=null!==(m=null==r?void 0:r.value)&&void 0!==m?m:r;"object"===(0,x.Z)(r)&&null!=r&&r[eM]&&Array.isArray(g)?g.forEach(function(e){f(t,e)}):f(t,g)}else{var y=!1,w=t.trim(),E=!1;(o||a)&&d?w.startsWith("@")?y=!0:w=function(e,t,n){if(!t)return e;var r=".".concat(t),o="low"===n?":where(".concat(r,")"):r;return e.split(",").map(function(e){var t,n=e.trim().split(/\s+/),r=n[0]||"",a=(null===(t=r.match(/^\w+/))||void 0===t?void 0:t[0])||"";return[r="".concat(a).concat(o).concat(r.slice(a.length))].concat((0,c.Z)(n.slice(1))).join(" ")}).join(",")}(t,d,p):o&&!d&&("&"===w||""===w)&&(w="",E=!0);var S=e(r,n,{root:E,injectHash:y,parentSelectors:[].concat((0,c.Z)(s),[w])}),C=(0,i.Z)(S,2),Z=C[0],O=C[1];v=(0,l.Z)((0,l.Z)({},v),O),h+="".concat(w).concat(Z)}})}}),o){if(f&&(void 0===A&&(A=function(e,t,n){if((0,E.Z)()){(0,u.hq)(e,F);var r,o,a=document.createElement("div");a.style.position="fixed",a.style.left="0",a.style.top="0",null==t||t(a),document.body.appendChild(a);var i=null===(r=getComputedStyle(a).content)||void 0===r?void 0:r.includes(T);return null===(o=a.parentNode)||void 0===o||o.removeChild(a),(0,u.jL)(F),i}return!1}("@layer ".concat(F," { .").concat(F,' { content: "').concat(T,'"!important; } }'),function(e){e.className=F})),A)){var y=f.split(","),w=y[y.length-1].trim();h="@layer ".concat(w," {").concat(h,"}"),y.length>1&&(h="@layer ".concat(f,"{%%%:%}").concat(h))}}else h="{".concat(h,"}");return[h,v]};function eR(e,t){return s("".concat(e.join("%")).concat(t))}function eN(){return null}var eP="style";function eF(e,t){var n=e.token,o=e.path,l=e.hashId,s=e.layer,f=e.nonce,p=e.clientOnly,m=e.order,g=void 0===m?0:m,h=d.useContext(w),x=h.autoClear,S=(h.mock,h.defaultCache),C=h.hashPriority,Z=h.container,O=h.ssrInline,k=h.transformers,M=h.linters,j=h.cache,I=n._tokenKey,R=[I].concat((0,c.Z)(o)),N=G(eP,R,function(){var e=R.join("|");if(!function(){if(!r&&(r={},(0,E.Z)())){var e,t=document.createElement("div");t.className=eZ,t.style.position="fixed",t.style.visibility="hidden",t.style.top="-9999px",document.body.appendChild(t);var n=getComputedStyle(t).content||"";(n=n.replace(/^"/,"").replace(/"$/,"")).split(";").forEach(function(e){var t=e.split(":"),n=(0,i.Z)(t,2),o=n[0],a=n[1];r[o]=a});var o=document.querySelector("style[".concat(eZ,"]"));o&&(ek=!1,null===(e=o.parentNode)||void 0===e||e.removeChild(o)),document.body.removeChild(t)}}(),r[e]){var n=function(e){var t=r[e],n=null;if(t&&(0,E.Z)()){if(ek)n=eO;else{var o=document.querySelector("style[".concat(b,'="').concat(r[e],'"]'));o?n=o.innerHTML:delete r[e]}}return[n,t]}(e),a=(0,i.Z)(n,2),c=a[0],u=a[1];if(c)return[c,I,u,{},p,g]}var d=eI(t(),{hashId:l,hashPriority:C,layer:s,path:o.join("-"),transformers:k,linters:M}),f=(0,i.Z)(d,2),m=f[0],h=f[1],v=ej(m),y=eR(R,v);return[v,I,y,h,p,g]},function(e,t){var n=(0,i.Z)(e,3)[2];(t||x)&&L&&(0,u.jL)(n,{mark:b})},function(e){var t=(0,i.Z)(e,4),n=t[0],r=(t[1],t[2]),o=t[3];if(L&&n!==eO){var a={mark:b,prepend:"queue",attachTo:Z,priority:g},c="function"==typeof f?f():f;c&&(a.csp={nonce:c});var l=(0,u.hq)(n,r,a);l[y]=j.instanceId,l.setAttribute(v,I),Object.keys(o).forEach(function(e){(0,u.hq)(ej(o[e]),"_effect-".concat(e),a)})}}),P=(0,i.Z)(N,3),F=P[0],T=P[1],A=P[2];return function(e){var t,n;return t=O&&!L&&S?d.createElement("style",(0,Q.Z)({},(n={},(0,a.Z)(n,v,T),(0,a.Z)(n,b,A),n),{dangerouslySetInnerHTML:{__html:F}})):d.createElement(eN,null),d.createElement(d.Fragment,null,t,e)}}var eT="cssVar",eA=function(e,t){var n=e.key,r=e.prefix,o=e.unitless,a=e.ignore,l=e.token,s=e.scope,f=void 0===s?"":s,p=(0,d.useContext)(w),m=p.cache.instanceId,g=p.container,h=l._tokenKey,x=[].concat((0,c.Z)(e.path),[n,f,h]);return G(eT,x,function(){var e=B(t(),n,{prefix:r,unitless:o,ignore:a,scope:f}),c=(0,i.Z)(e,2),l=c[0],s=c[1],u=eR(x,s);return[l,s,u,n]},function(e){var t=(0,i.Z)(e,3)[2];L&&(0,u.jL)(t,{mark:b})},function(e){var t=(0,i.Z)(e,3),r=t[1],o=t[2];if(r){var a=(0,u.hq)(r,o,{mark:b,prepend:"queue",attachTo:g,priority:-999});a[y]=m,a.setAttribute(v,n)}})};o={},(0,a.Z)(o,eP,function(e,t,n){var r=(0,i.Z)(e,6),o=r[0],a=r[1],c=r[2],l=r[3],s=r[4],u=r[5],d=(n||{}).plain;if(s)return null;var f=o,p={"data-rc-order":"prependQueue","data-rc-priority":"".concat(u)};return f=_(o,a,c,p,d),l&&Object.keys(l).forEach(function(e){if(!t[e]){t[e]=!0;var n=ej(l[e]);f+=_(n,a,"_effect-".concat(e),p,d)}}),[u,c,f]}),(0,a.Z)(o,K,function(e,t,n){var r=(0,i.Z)(e,5),o=r[2],a=r[3],c=r[4],l=(n||{}).plain;if(!a)return null;var s=o._tokenKey,u=_(a,c,s,{"data-rc-order":"prependQueue","data-rc-priority":"".concat(-999)},l);return[-999,s,u]}),(0,a.Z)(o,eT,function(e,t,n){var r=(0,i.Z)(e,4),o=r[1],a=r[2],c=r[3],l=(n||{}).plain;if(!o)return null;var s=_(o,c,a,{"data-rc-order":"prependQueue","data-rc-priority":"".concat(-999)},l);return[-999,a,s]});var eL=function(){function e(t,n){(0,p.Z)(this,e),(0,a.Z)(this,"name",void 0),(0,a.Z)(this,"style",void 0),(0,a.Z)(this,"_keyframe",!0),this.name=t,this.style=n}return(0,m.Z)(e,[{key:"getName",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e?"".concat(e,"-").concat(this.name):this.name}}]),e}();function ez(e){return e.notSplit=!0,e}ez(["borderTop","borderBottom"]),ez(["borderTop"]),ez(["borderBottom"]),ez(["borderLeft","borderRight"]),ez(["borderLeft"]),ez(["borderRight"])},55015:function(e,t,n){"use strict";n.d(t,{Z:function(){return M}});var r=n(1119),o=n(26365),a=n(11993),i=n(6989),c=n(2265),l=n(36760),s=n.n(l),u=n(31373),d=n(20902),f=n(31686),p=n(41154),m=n(21717),g=n(13211),h=n(32559);function v(e){return"object"===(0,p.Z)(e)&&"string"==typeof e.name&&"string"==typeof e.theme&&("object"===(0,p.Z)(e.icon)||"function"==typeof e.icon)}function b(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).reduce(function(t,n){var r=e[n];return"class"===n?(t.className=r,delete t.class):(delete t[n],t[n.replace(/-(.)/g,function(e,t){return t.toUpperCase()})]=r),t},{})}function y(e){return(0,u.R_)(e)[0]}function w(e){return e?Array.isArray(e)?e:[e]:[]}var x=function(e){var t=(0,c.useContext)(d.Z),n=t.csp,r=t.prefixCls,o="\n.anticon {\n display: inline-block;\n color: inherit;\n font-style: normal;\n line-height: 0;\n text-align: center;\n text-transform: none;\n vertical-align: -0.125em;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.anticon > * {\n line-height: 1;\n}\n\n.anticon svg {\n display: inline-block;\n}\n\n.anticon::before {\n display: none;\n}\n\n.anticon .anticon-icon {\n display: block;\n}\n\n.anticon[tabindex] {\n cursor: pointer;\n}\n\n.anticon-spin::before,\n.anticon-spin {\n display: inline-block;\n -webkit-animation: loadingCircle 1s infinite linear;\n animation: loadingCircle 1s infinite linear;\n}\n\n@-webkit-keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n";r&&(o=o.replace(/anticon/g,r)),(0,c.useEffect)(function(){var t=e.current,r=(0,g.A)(t);(0,m.hq)(o,"@ant-design-icons",{prepend:!0,csp:n,attachTo:r})},[])},E=["icon","className","onClick","style","primaryColor","secondaryColor"],S={primaryColor:"#333",secondaryColor:"#E6E6E6",calculated:!1},C=function(e){var t,n,r=e.icon,o=e.className,a=e.onClick,l=e.style,s=e.primaryColor,u=e.secondaryColor,d=(0,i.Z)(e,E),p=c.useRef(),m=S;if(s&&(m={primaryColor:s,secondaryColor:u||y(s)}),x(p),t=v(r),n="icon should be icon definiton, but got ".concat(r),(0,h.ZP)(t,"[@ant-design/icons] ".concat(n)),!v(r))return null;var g=r;return g&&"function"==typeof g.icon&&(g=(0,f.Z)((0,f.Z)({},g),{},{icon:g.icon(m.primaryColor,m.secondaryColor)})),function e(t,n,r){return r?c.createElement(t.tag,(0,f.Z)((0,f.Z)({key:n},b(t.attrs)),r),(t.children||[]).map(function(r,o){return e(r,"".concat(n,"-").concat(t.tag,"-").concat(o))})):c.createElement(t.tag,(0,f.Z)({key:n},b(t.attrs)),(t.children||[]).map(function(r,o){return e(r,"".concat(n,"-").concat(t.tag,"-").concat(o))}))}(g.icon,"svg-".concat(g.name),(0,f.Z)((0,f.Z)({className:o,onClick:a,style:l,"data-icon":g.name,width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true"},d),{},{ref:p}))};function Z(e){var t=w(e),n=(0,o.Z)(t,2),r=n[0],a=n[1];return C.setTwoToneColors({primaryColor:r,secondaryColor:a})}C.displayName="IconReact",C.getTwoToneColors=function(){return(0,f.Z)({},S)},C.setTwoToneColors=function(e){var t=e.primaryColor,n=e.secondaryColor;S.primaryColor=t,S.secondaryColor=n||y(t),S.calculated=!!n};var O=["className","icon","spin","rotate","tabIndex","onClick","twoToneColor"];Z(u.iN.primary);var k=c.forwardRef(function(e,t){var n,l=e.className,u=e.icon,f=e.spin,p=e.rotate,m=e.tabIndex,g=e.onClick,h=e.twoToneColor,v=(0,i.Z)(e,O),b=c.useContext(d.Z),y=b.prefixCls,x=void 0===y?"anticon":y,E=b.rootClassName,S=s()(E,x,(n={},(0,a.Z)(n,"".concat(x,"-").concat(u.name),!!u.name),(0,a.Z)(n,"".concat(x,"-spin"),!!f||"loading"===u.name),n),l),Z=m;void 0===Z&&g&&(Z=-1);var k=w(h),M=(0,o.Z)(k,2),j=M[0],I=M[1];return c.createElement("span",(0,r.Z)({role:"img","aria-label":u.name},v,{ref:t,tabIndex:Z,onClick:g,className:S}),c.createElement(C,{icon:u,primaryColor:j,secondaryColor:I,style:p?{msTransform:"rotate(".concat(p,"deg)"),transform:"rotate(".concat(p,"deg)")}:void 0}))});k.displayName="AntdIcon",k.getTwoToneColor=function(){var e=C.getTwoToneColors();return e.calculated?[e.primaryColor,e.secondaryColor]:e.primaryColor},k.setTwoToneColor=Z;var M=k},20902:function(e,t,n){"use strict";var r=(0,n(2265).createContext)({});t.Z=r},8900:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z"}}]},name:"check-circle",theme:"filled"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},9738:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"}}]},name:"check",theme:"outlined"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},39725:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z"}}]},name:"close-circle",theme:"filled"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},49638:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z"}}]},name:"close",theme:"outlined"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},70464:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},54537:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"exclamation-circle",theme:"filled"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},97416:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z"}},{tag:"path",attrs:{d:"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z"}}]},name:"eye-invisible",theme:"outlined"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},6520:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"}}]},name:"eye",theme:"outlined"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},55726:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},name:"info-circle",theme:"filled"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},15424:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z"}}]},name:"info-circle",theme:"outlined"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},61935:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},67187:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z"}}]},name:"question-circle",theme:"outlined"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},29436:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(1119),o=n(2265),a={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}}]},name:"search",theme:"outlined"},i=n(55015),c=o.forwardRef(function(e,t){return o.createElement(i.Z,(0,r.Z)({},e,{ref:t,icon:a}))})},82082:function(e,t,n){"use strict";n.d(t,{T6:function(){return f},VD:function(){return p},WE:function(){return s},Yt:function(){return m},lC:function(){return a},py:function(){return l},rW:function(){return o},s:function(){return d},ve:function(){return c},vq:function(){return u}});var r=n(58317);function o(e,t,n){return{r:255*(0,r.sh)(e,255),g:255*(0,r.sh)(t,255),b:255*(0,r.sh)(n,255)}}function a(e,t,n){var o=Math.max(e=(0,r.sh)(e,255),t=(0,r.sh)(t,255),n=(0,r.sh)(n,255)),a=Math.min(e,t,n),i=0,c=0,l=(o+a)/2;if(o===a)c=0,i=0;else{var s=o-a;switch(c=l>.5?s/(2-o-a):s/(o+a),o){case e:i=(t-n)/s+(t1&&(n-=1),n<1/6)?e+6*n*(t-e):n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function c(e,t,n){if(e=(0,r.sh)(e,360),t=(0,r.sh)(t,100),n=(0,r.sh)(n,100),0===t)a=n,c=n,o=n;else{var o,a,c,l=n<.5?n*(1+t):n+t-n*t,s=2*n-l;o=i(s,l,e+1/3),a=i(s,l,e),c=i(s,l,e-1/3)}return{r:255*o,g:255*a,b:255*c}}function l(e,t,n){var o=Math.max(e=(0,r.sh)(e,255),t=(0,r.sh)(t,255),n=(0,r.sh)(n,255)),a=Math.min(e,t,n),i=0,c=o-a;if(o===a)i=0;else{switch(o){case e:i=(t-n)/c+(t>16,g:(65280&e)>>8,b:255&e}}},28052:function(e,t,n){"use strict";n.d(t,{R:function(){return r}});var r={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}},96021:function(e,t,n){"use strict";n.d(t,{uA:function(){return i}});var r=n(82082),o=n(28052),a=n(58317);function i(e){var t={r:0,g:0,b:0},n=1,i=null,c=null,l=null,s=!1,f=!1;return"string"==typeof e&&(e=function(e){if(0===(e=e.trim().toLowerCase()).length)return!1;var t=!1;if(o.R[e])e=o.R[e],t=!0;else if("transparent"===e)return{r:0,g:0,b:0,a:0,format:"name"};var n=u.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=u.rgba.exec(e))?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=u.hsl.exec(e))?{h:n[1],s:n[2],l:n[3]}:(n=u.hsla.exec(e))?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=u.hsv.exec(e))?{h:n[1],s:n[2],v:n[3]}:(n=u.hsva.exec(e))?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=u.hex8.exec(e))?{r:(0,r.VD)(n[1]),g:(0,r.VD)(n[2]),b:(0,r.VD)(n[3]),a:(0,r.T6)(n[4]),format:t?"name":"hex8"}:(n=u.hex6.exec(e))?{r:(0,r.VD)(n[1]),g:(0,r.VD)(n[2]),b:(0,r.VD)(n[3]),format:t?"name":"hex"}:(n=u.hex4.exec(e))?{r:(0,r.VD)(n[1]+n[1]),g:(0,r.VD)(n[2]+n[2]),b:(0,r.VD)(n[3]+n[3]),a:(0,r.T6)(n[4]+n[4]),format:t?"name":"hex8"}:!!(n=u.hex3.exec(e))&&{r:(0,r.VD)(n[1]+n[1]),g:(0,r.VD)(n[2]+n[2]),b:(0,r.VD)(n[3]+n[3]),format:t?"name":"hex"}}(e)),"object"==typeof e&&(d(e.r)&&d(e.g)&&d(e.b)?(t=(0,r.rW)(e.r,e.g,e.b),s=!0,f="%"===String(e.r).substr(-1)?"prgb":"rgb"):d(e.h)&&d(e.s)&&d(e.v)?(i=(0,a.JX)(e.s),c=(0,a.JX)(e.v),t=(0,r.WE)(e.h,i,c),s=!0,f="hsv"):d(e.h)&&d(e.s)&&d(e.l)&&(i=(0,a.JX)(e.s),l=(0,a.JX)(e.l),t=(0,r.ve)(e.h,i,l),s=!0,f="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=(0,a.Yq)(n),{ok:s,format:e.format||f,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var c="(?:".concat("[-\\+]?\\d*\\.\\d+%?",")|(?:").concat("[-\\+]?\\d+%?",")"),l="[\\s|\\(]+(".concat(c,")[,|\\s]+(").concat(c,")[,|\\s]+(").concat(c,")\\s*\\)?"),s="[\\s|\\(]+(".concat(c,")[,|\\s]+(").concat(c,")[,|\\s]+(").concat(c,")[,|\\s]+(").concat(c,")\\s*\\)?"),u={CSS_UNIT:new RegExp(c),rgb:RegExp("rgb"+l),rgba:RegExp("rgba"+s),hsl:RegExp("hsl"+l),hsla:RegExp("hsla"+s),hsv:RegExp("hsv"+l),hsva:RegExp("hsva"+s),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function d(e){return!!u.CSS_UNIT.exec(String(e))}},36360:function(e,t,n){"use strict";n.d(t,{C:function(){return c}});var r=n(82082),o=n(28052),a=n(96021),i=n(58317),c=function(){function e(t,n){if(void 0===t&&(t=""),void 0===n&&(n={}),t instanceof e)return t;"number"==typeof t&&(t=(0,r.Yt)(t)),this.originalInput=t;var o,i=(0,a.uA)(t);this.originalInput=t,this.r=i.r,this.g=i.g,this.b=i.b,this.a=i.a,this.roundA=Math.round(100*this.a)/100,this.format=null!==(o=n.format)&&void 0!==o?o:i.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=i.ok}return e.prototype.isDark=function(){return 128>this.getBrightness()},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},e.prototype.getLuminance=function(){var e=this.toRgb(),t=e.r/255,n=e.g/255,r=e.b/255;return .2126*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.7152*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))+.0722*(r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4))},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(e){return this.a=(0,i.Yq)(e),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){return 0===this.toHsl().s},e.prototype.toHsv=function(){var e=(0,r.py)(this.r,this.g,this.b);return{h:360*e.h,s:e.s,v:e.v,a:this.a}},e.prototype.toHsvString=function(){var e=(0,r.py)(this.r,this.g,this.b),t=Math.round(360*e.h),n=Math.round(100*e.s),o=Math.round(100*e.v);return 1===this.a?"hsv(".concat(t,", ").concat(n,"%, ").concat(o,"%)"):"hsva(".concat(t,", ").concat(n,"%, ").concat(o,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var e=(0,r.lC)(this.r,this.g,this.b);return{h:360*e.h,s:e.s,l:e.l,a:this.a}},e.prototype.toHslString=function(){var e=(0,r.lC)(this.r,this.g,this.b),t=Math.round(360*e.h),n=Math.round(100*e.s),o=Math.round(100*e.l);return 1===this.a?"hsl(".concat(t,", ").concat(n,"%, ").concat(o,"%)"):"hsla(".concat(t,", ").concat(n,"%, ").concat(o,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(e){return void 0===e&&(e=!1),(0,r.vq)(this.r,this.g,this.b,e)},e.prototype.toHexString=function(e){return void 0===e&&(e=!1),"#"+this.toHex(e)},e.prototype.toHex8=function(e){return void 0===e&&(e=!1),(0,r.s)(this.r,this.g,this.b,this.a,e)},e.prototype.toHex8String=function(e){return void 0===e&&(e=!1),"#"+this.toHex8(e)},e.prototype.toHexShortString=function(e){return void 0===e&&(e=!1),1===this.a?this.toHexString(e):this.toHex8String(e)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var e=Math.round(this.r),t=Math.round(this.g),n=Math.round(this.b);return 1===this.a?"rgb(".concat(e,", ").concat(t,", ").concat(n,")"):"rgba(".concat(e,", ").concat(t,", ").concat(n,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var e=function(e){return"".concat(Math.round(100*(0,i.sh)(e,255)),"%")};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var e=function(e){return Math.round(100*(0,i.sh)(e,255))};return 1===this.a?"rgb(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%)"):"rgba(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(0===this.a)return"transparent";if(this.a<1)return!1;for(var e="#"+(0,r.vq)(this.r,this.g,this.b,!1),t=0,n=Object.entries(o.R);t=0;return!t&&r&&(e.startsWith("hex")||"name"===e)?"name"===e&&0===this.a?this.toName():this.toRgbString():("rgb"===e&&(n=this.toRgbString()),"prgb"===e&&(n=this.toPercentageRgbString()),("hex"===e||"hex6"===e)&&(n=this.toHexString()),"hex3"===e&&(n=this.toHexString(!0)),"hex4"===e&&(n=this.toHex8String(!0)),"hex8"===e&&(n=this.toHex8String()),"name"===e&&(n=this.toName()),"hsl"===e&&(n=this.toHslString()),"hsv"===e&&(n=this.toHsvString()),n||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){void 0===t&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=(0,i.V2)(n.l),new e(n)},e.prototype.brighten=function(t){void 0===t&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(-(t/100*255)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(-(t/100*255)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(-(t/100*255)))),new e(n)},e.prototype.darken=function(t){void 0===t&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=(0,i.V2)(n.l),new e(n)},e.prototype.tint=function(e){return void 0===e&&(e=10),this.mix("white",e)},e.prototype.shade=function(e){return void 0===e&&(e=10),this.mix("black",e)},e.prototype.desaturate=function(t){void 0===t&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=(0,i.V2)(n.s),new e(n)},e.prototype.saturate=function(t){void 0===t&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=(0,i.V2)(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,new e(n)},e.prototype.mix=function(t,n){void 0===n&&(n=50);var r=this.toRgb(),o=new e(t).toRgb(),a=n/100;return new e({r:(o.r-r.r)*a+r.r,g:(o.g-r.g)*a+r.g,b:(o.b-r.b)*a+r.b,a:(o.a-r.a)*a+r.a})},e.prototype.analogous=function(t,n){void 0===t&&(t=6),void 0===n&&(n=30);var r=this.toHsl(),o=360/n,a=[this];for(r.h=(r.h-(o*t>>1)+720)%360;--t;)r.h=(r.h+o)%360,a.push(new e(r));return a},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){void 0===t&&(t=6);for(var n=this.toHsv(),r=n.h,o=n.s,a=n.v,i=[],c=1/t;t--;)i.push(new e({h:r,s:o,v:a})),a=(a+c)%1;return i},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),r=new e(t).toRgb(),o=n.a+r.a*(1-n.a);return new e({r:(n.r*n.a+r.r*r.a*(1-n.a))/o,g:(n.g*n.a+r.g*r.a*(1-n.a))/o,b:(n.b*n.a+r.b*r.a*(1-n.a))/o,a:o})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),r=n.h,o=[this],a=360/t,i=1;iMath.abs(e-t))?1:e=360===t?(e<0?e%t+t:e%t)/parseFloat(String(t)):e%t/parseFloat(String(t))}function o(e){return Math.min(1,Math.max(0,e))}function a(e){return(isNaN(e=parseFloat(e))||e<0||e>1)&&(e=1),e}function i(e){return e<=1?"".concat(100*Number(e),"%"):e}function c(e){return 1===e.length?"0"+e:String(e)}n.d(t,{FZ:function(){return c},JX:function(){return i},V2:function(){return o},Yq:function(){return a},sh:function(){return r}})},28036:function(e,t,n){"use strict";n.d(t,{Z:function(){return v}});var r=n(26365),o=n(2265),a=n(54887),i=n(94981);n(32559);var c=n(28791),l=o.createContext(null),s=n(83145),u=n(27380),d=[],f=n(21717),p=n(3208),m="rc-util-locker-".concat(Date.now()),g=0,h=function(e){return!1!==e&&((0,i.Z)()&&e?"string"==typeof e?document.querySelector(e):"function"==typeof e?e():e:null)},v=o.forwardRef(function(e,t){var n,v,b,y=e.open,w=e.autoLock,x=e.getContainer,E=(e.debug,e.autoDestroy),S=void 0===E||E,C=e.children,Z=o.useState(y),O=(0,r.Z)(Z,2),k=O[0],M=O[1],j=k||y;o.useEffect(function(){(S||y)&&M(y)},[y,S]);var I=o.useState(function(){return h(x)}),R=(0,r.Z)(I,2),N=R[0],P=R[1];o.useEffect(function(){var e=h(x);P(null!=e?e:null)});var F=function(e,t){var n=o.useState(function(){return(0,i.Z)()?document.createElement("div"):null}),a=(0,r.Z)(n,1)[0],c=o.useRef(!1),f=o.useContext(l),p=o.useState(d),m=(0,r.Z)(p,2),g=m[0],h=m[1],v=f||(c.current?void 0:function(e){h(function(t){return[e].concat((0,s.Z)(t))})});function b(){a.parentElement||document.body.appendChild(a),c.current=!0}function y(){var e;null===(e=a.parentElement)||void 0===e||e.removeChild(a),c.current=!1}return(0,u.Z)(function(){return e?f?f(b):b():y(),y},[e]),(0,u.Z)(function(){g.length&&(g.forEach(function(e){return e()}),h(d))},[g]),[a,v]}(j&&!N,0),T=(0,r.Z)(F,2),A=T[0],L=T[1],z=null!=N?N:A;n=!!(w&&y&&(0,i.Z)()&&(z===A||z===document.body)),v=o.useState(function(){return g+=1,"".concat(m,"_").concat(g)}),b=(0,r.Z)(v,1)[0],(0,u.Z)(function(){if(n){var e=(0,p.o)(document.body).width,t=document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth;(0,f.hq)("\nhtml body {\n overflow-y: hidden;\n ".concat(t?"width: calc(100% - ".concat(e,"px);"):"","\n}"),b)}else(0,f.jL)(b);return function(){(0,f.jL)(b)}},[n,b]);var _=null;C&&(0,c.Yr)(C)&&t&&(_=C.ref);var H=(0,c.x1)(_,t);if(!j||!(0,i.Z)()||void 0===N)return null;var B=!1===z,D=C;return t&&(D=o.cloneElement(C,{ref:H})),o.createElement(l.Provider,{value:L},B?D:(0,a.createPortal)(D,z))})},97821:function(e,t,n){"use strict";n.d(t,{Z:function(){return D}});var r=n(31686),o=n(26365),a=n(6989),i=n(28036),c=n(36760),l=n.n(c),s=n(31474),u=n(2868),d=n(13211),f=n(58525),p=n(92491),m=n(27380),g=n(79267),h=n(2265),v=n(1119),b=n(47970),y=n(28791);function w(e){var t=e.prefixCls,n=e.align,r=e.arrow,o=e.arrowPos,a=r||{},i=a.className,c=a.content,s=o.x,u=o.y,d=h.useRef();if(!n||!n.points)return null;var f={position:"absolute"};if(!1!==n.autoArrow){var p=n.points[0],m=n.points[1],g=p[0],v=p[1],b=m[0],y=m[1];g!==b&&["t","b"].includes(g)?"t"===g?f.top=0:f.bottom=0:f.top=void 0===u?0:u,v!==y&&["l","r"].includes(v)?"l"===v?f.left=0:f.right=0:f.left=void 0===s?0:s}return h.createElement("div",{ref:d,className:l()("".concat(t,"-arrow"),i),style:f},c)}function x(e){var t=e.prefixCls,n=e.open,r=e.zIndex,o=e.mask,a=e.motion;return o?h.createElement(b.ZP,(0,v.Z)({},a,{motionAppear:!0,visible:n,removeOnLeave:!0}),function(e){var n=e.className;return h.createElement("div",{style:{zIndex:r},className:l()("".concat(t,"-mask"),n)})}):null}var E=h.memo(function(e){return e.children},function(e,t){return t.cache}),S=h.forwardRef(function(e,t){var n=e.popup,a=e.className,i=e.prefixCls,c=e.style,u=e.target,d=e.onVisibleChanged,f=e.open,p=e.keepDom,g=e.fresh,S=e.onClick,C=e.mask,Z=e.arrow,O=e.arrowPos,k=e.align,M=e.motion,j=e.maskMotion,I=e.forceRender,R=e.getPopupContainer,N=e.autoDestroy,P=e.portal,F=e.zIndex,T=e.onMouseEnter,A=e.onMouseLeave,L=e.onPointerEnter,z=e.ready,_=e.offsetX,H=e.offsetY,B=e.offsetR,D=e.offsetB,W=e.onAlign,V=e.onPrepare,q=e.stretch,G=e.targetWidth,X=e.targetHeight,U="function"==typeof n?n():n,$=f||p,K=(null==R?void 0:R.length)>0,Y=h.useState(!R||!K),Q=(0,o.Z)(Y,2),J=Q[0],ee=Q[1];if((0,m.Z)(function(){!J&&K&&u&&ee(!0)},[J,K,u]),!J)return null;var et="auto",en={left:"-1000vw",top:"-1000vh",right:et,bottom:et};if(z||!f){var er,eo=k.points,ea=k.dynamicInset||(null===(er=k._experimental)||void 0===er?void 0:er.dynamicInset),ei=ea&&"r"===eo[0][1],ec=ea&&"b"===eo[0][0];ei?(en.right=B,en.left=et):(en.left=_,en.right=et),ec?(en.bottom=D,en.top=et):(en.top=H,en.bottom=et)}var el={};return q&&(q.includes("height")&&X?el.height=X:q.includes("minHeight")&&X&&(el.minHeight=X),q.includes("width")&&G?el.width=G:q.includes("minWidth")&&G&&(el.minWidth=G)),f||(el.pointerEvents="none"),h.createElement(P,{open:I||$,getContainer:R&&function(){return R(u)},autoDestroy:N},h.createElement(x,{prefixCls:i,open:f,zIndex:F,mask:C,motion:j}),h.createElement(s.Z,{onResize:W,disabled:!f},function(e){return h.createElement(b.ZP,(0,v.Z)({motionAppear:!0,motionEnter:!0,motionLeave:!0,removeOnLeave:!1,forceRender:I,leavedClassName:"".concat(i,"-hidden")},M,{onAppearPrepare:V,onEnterPrepare:V,visible:f,onVisibleChanged:function(e){var t;null==M||null===(t=M.onVisibleChanged)||void 0===t||t.call(M,e),d(e)}}),function(n,o){var s=n.className,u=n.style,d=l()(i,s,a);return h.createElement("div",{ref:(0,y.sQ)(e,t,o),className:d,style:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({"--arrow-x":"".concat(O.x||0,"px"),"--arrow-y":"".concat(O.y||0,"px")},en),el),u),{},{boxSizing:"border-box",zIndex:F},c),onMouseEnter:T,onMouseLeave:A,onPointerEnter:L,onClick:S},Z&&h.createElement(w,{prefixCls:i,arrow:Z,arrowPos:O,align:k}),h.createElement(E,{cache:!f&&!g},U))})}))}),C=h.forwardRef(function(e,t){var n=e.children,r=e.getTriggerDOMNode,o=(0,y.Yr)(n),a=h.useCallback(function(e){(0,y.mH)(t,r?r(e):e)},[r]),i=(0,y.x1)(a,n.ref);return o?h.cloneElement(n,{ref:i}):n}),Z=h.createContext(null);function O(e){return e?Array.isArray(e)?e:[e]:[]}var k=n(2857);function M(e,t,n,r){return t||(n?{motionName:"".concat(e,"-").concat(n)}:r?{motionName:r}:null)}function j(e){return e.ownerDocument.defaultView}function I(e){for(var t=[],n=null==e?void 0:e.parentElement,r=["hidden","scroll","clip","auto"];n;){var o=j(n).getComputedStyle(n);[o.overflowX,o.overflowY,o.overflow].some(function(e){return r.includes(e)})&&t.push(n),n=n.parentElement}return t}function R(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Number.isNaN(e)?t:e}function N(e){return R(parseFloat(e),0)}function P(e,t){var n=(0,r.Z)({},e);return(t||[]).forEach(function(e){if(!(e instanceof HTMLBodyElement||e instanceof HTMLHtmlElement)){var t=j(e).getComputedStyle(e),r=t.overflow,o=t.overflowClipMargin,a=t.borderTopWidth,i=t.borderBottomWidth,c=t.borderLeftWidth,l=t.borderRightWidth,s=e.getBoundingClientRect(),u=e.offsetHeight,d=e.clientHeight,f=e.offsetWidth,p=e.clientWidth,m=N(a),g=N(i),h=N(c),v=N(l),b=R(Math.round(s.width/f*1e3)/1e3),y=R(Math.round(s.height/u*1e3)/1e3),w=m*y,x=h*b,E=0,S=0;if("clip"===r){var C=N(o);E=C*b,S=C*y}var Z=s.x+x-E,O=s.y+w-S,k=Z+s.width+2*E-x-v*b-(f-p-h-v)*b,M=O+s.height+2*S-w-g*y-(u-d-m-g)*y;n.left=Math.max(n.left,Z),n.top=Math.max(n.top,O),n.right=Math.min(n.right,k),n.bottom=Math.min(n.bottom,M)}}),n}function F(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n="".concat(t),r=n.match(/^(.*)\%$/);return r?parseFloat(r[1])/100*e:parseFloat(n)}function T(e,t){var n=(0,o.Z)(t||[],2),r=n[0],a=n[1];return[F(e.width,r),F(e.height,a)]}function A(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return[e[0],e[1]]}function L(e,t){var n,r=t[0],o=t[1];return n="t"===r?e.y:"b"===r?e.y+e.height:e.y+e.height/2,{x:"l"===o?e.x:"r"===o?e.x+e.width:e.x+e.width/2,y:n}}function z(e,t){var n={t:"b",b:"t",l:"r",r:"l"};return e.map(function(e,r){return r===t?n[e]||"c":e}).join("")}var _=n(83145);n(32559);var H=n(53346),B=["prefixCls","children","action","showAction","hideAction","popupVisible","defaultPopupVisible","onPopupVisibleChange","afterPopupVisibleChange","mouseEnterDelay","mouseLeaveDelay","focusDelay","blurDelay","mask","maskClosable","getPopupContainer","forceRender","autoDestroy","destroyPopupOnHide","popup","popupClassName","popupStyle","popupPlacement","builtinPlacements","popupAlign","zIndex","stretch","getPopupClassNameFromAlign","fresh","alignPoint","onPopupClick","onPopupAlign","arrow","popupMotion","maskMotion","popupTransitionName","popupAnimation","maskTransitionName","maskAnimation","className","getTriggerDOMNode"],D=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i.Z;return h.forwardRef(function(t,n){var i,c,v,b,y,w,x,E,N,F,D,W,V,q,G,X,U,$=t.prefixCls,K=void 0===$?"rc-trigger-popup":$,Y=t.children,Q=t.action,J=t.showAction,ee=t.hideAction,et=t.popupVisible,en=t.defaultPopupVisible,er=t.onPopupVisibleChange,eo=t.afterPopupVisibleChange,ea=t.mouseEnterDelay,ei=t.mouseLeaveDelay,ec=void 0===ei?.1:ei,el=t.focusDelay,es=t.blurDelay,eu=t.mask,ed=t.maskClosable,ef=t.getPopupContainer,ep=t.forceRender,em=t.autoDestroy,eg=t.destroyPopupOnHide,eh=t.popup,ev=t.popupClassName,eb=t.popupStyle,ey=t.popupPlacement,ew=t.builtinPlacements,ex=void 0===ew?{}:ew,eE=t.popupAlign,eS=t.zIndex,eC=t.stretch,eZ=t.getPopupClassNameFromAlign,eO=t.fresh,ek=t.alignPoint,eM=t.onPopupClick,ej=t.onPopupAlign,eI=t.arrow,eR=t.popupMotion,eN=t.maskMotion,eP=t.popupTransitionName,eF=t.popupAnimation,eT=t.maskTransitionName,eA=t.maskAnimation,eL=t.className,ez=t.getTriggerDOMNode,e_=(0,a.Z)(t,B),eH=h.useState(!1),eB=(0,o.Z)(eH,2),eD=eB[0],eW=eB[1];(0,m.Z)(function(){eW((0,g.Z)())},[]);var eV=h.useRef({}),eq=h.useContext(Z),eG=h.useMemo(function(){return{registerSubPopup:function(e,t){eV.current[e]=t,null==eq||eq.registerSubPopup(e,t)}}},[eq]),eX=(0,p.Z)(),eU=h.useState(null),e$=(0,o.Z)(eU,2),eK=e$[0],eY=e$[1],eQ=(0,f.Z)(function(e){(0,u.S)(e)&&eK!==e&&eY(e),null==eq||eq.registerSubPopup(eX,e)}),eJ=h.useState(null),e0=(0,o.Z)(eJ,2),e1=e0[0],e2=e0[1],e6=h.useRef(null),e5=(0,f.Z)(function(e){(0,u.S)(e)&&e1!==e&&(e2(e),e6.current=e)}),e4=h.Children.only(Y),e3=(null==e4?void 0:e4.props)||{},e8={},e9=(0,f.Z)(function(e){var t,n;return(null==e1?void 0:e1.contains(e))||(null===(t=(0,d.A)(e1))||void 0===t?void 0:t.host)===e||e===e1||(null==eK?void 0:eK.contains(e))||(null===(n=(0,d.A)(eK))||void 0===n?void 0:n.host)===e||e===eK||Object.values(eV.current).some(function(t){return(null==t?void 0:t.contains(e))||e===t})}),e7=M(K,eR,eF,eP),te=M(K,eN,eA,eT),tt=h.useState(en||!1),tn=(0,o.Z)(tt,2),tr=tn[0],to=tn[1],ta=null!=et?et:tr,ti=(0,f.Z)(function(e){void 0===et&&to(e)});(0,m.Z)(function(){to(et||!1)},[et]);var tc=h.useRef(ta);tc.current=ta;var tl=h.useRef([]);tl.current=[];var ts=(0,f.Z)(function(e){var t;ti(e),(null!==(t=tl.current[tl.current.length-1])&&void 0!==t?t:ta)!==e&&(tl.current.push(e),null==er||er(e))}),tu=h.useRef(),td=function(){clearTimeout(tu.current)},tf=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;td(),0===t?ts(e):tu.current=setTimeout(function(){ts(e)},1e3*t)};h.useEffect(function(){return td},[]);var tp=h.useState(!1),tm=(0,o.Z)(tp,2),tg=tm[0],th=tm[1];(0,m.Z)(function(e){(!e||ta)&&th(!0)},[ta]);var tv=h.useState(null),tb=(0,o.Z)(tv,2),ty=tb[0],tw=tb[1],tx=h.useState([0,0]),tE=(0,o.Z)(tx,2),tS=tE[0],tC=tE[1],tZ=function(e){tC([e.clientX,e.clientY])},tO=(i=ek?tS:e1,c=h.useState({ready:!1,offsetX:0,offsetY:0,offsetR:0,offsetB:0,arrowX:0,arrowY:0,scaleX:1,scaleY:1,align:ex[ey]||{}}),b=(v=(0,o.Z)(c,2))[0],y=v[1],w=h.useRef(0),x=h.useMemo(function(){return eK?I(eK):[]},[eK]),E=h.useRef({}),ta||(E.current={}),N=(0,f.Z)(function(){if(eK&&i&&ta){var e,t,n,a,c,l,s,d=eK.ownerDocument,f=j(eK).getComputedStyle(eK),p=f.width,m=f.height,g=f.position,h=eK.style.left,v=eK.style.top,b=eK.style.right,w=eK.style.bottom,S=eK.style.overflow,C=(0,r.Z)((0,r.Z)({},ex[ey]),eE),Z=d.createElement("div");if(null===(e=eK.parentElement)||void 0===e||e.appendChild(Z),Z.style.left="".concat(eK.offsetLeft,"px"),Z.style.top="".concat(eK.offsetTop,"px"),Z.style.position=g,Z.style.height="".concat(eK.offsetHeight,"px"),Z.style.width="".concat(eK.offsetWidth,"px"),eK.style.left="0",eK.style.top="0",eK.style.right="auto",eK.style.bottom="auto",eK.style.overflow="hidden",Array.isArray(i))n={x:i[0],y:i[1],width:0,height:0};else{var O=i.getBoundingClientRect();n={x:O.x,y:O.y,width:O.width,height:O.height}}var M=eK.getBoundingClientRect(),I=d.documentElement,N=I.clientWidth,F=I.clientHeight,_=I.scrollWidth,H=I.scrollHeight,B=I.scrollTop,D=I.scrollLeft,W=M.height,V=M.width,q=n.height,G=n.width,X=C.htmlRegion,U="visible",$="visibleFirst";"scroll"!==X&&X!==$&&(X=U);var K=X===$,Y=P({left:-D,top:-B,right:_-D,bottom:H-B},x),Q=P({left:0,top:0,right:N,bottom:F},x),J=X===U?Q:Y,ee=K?Q:J;eK.style.left="auto",eK.style.top="auto",eK.style.right="0",eK.style.bottom="0";var et=eK.getBoundingClientRect();eK.style.left=h,eK.style.top=v,eK.style.right=b,eK.style.bottom=w,eK.style.overflow=S,null===(t=eK.parentElement)||void 0===t||t.removeChild(Z);var en=R(Math.round(V/parseFloat(p)*1e3)/1e3),er=R(Math.round(W/parseFloat(m)*1e3)/1e3);if(!(0===en||0===er||(0,u.S)(i)&&!(0,k.Z)(i))){var eo=C.offset,ea=C.targetOffset,ei=T(M,eo),ec=(0,o.Z)(ei,2),el=ec[0],es=ec[1],eu=T(n,ea),ed=(0,o.Z)(eu,2),ef=ed[0],ep=ed[1];n.x-=ef,n.y-=ep;var em=C.points||[],eg=(0,o.Z)(em,2),eh=eg[0],ev=A(eg[1]),eb=A(eh),ew=L(n,ev),eS=L(M,eb),eC=(0,r.Z)({},C),eZ=ew.x-eS.x+el,eO=ew.y-eS.y+es,ek=tt(eZ,eO),eM=tt(eZ,eO,Q),eI=L(n,["t","l"]),eR=L(M,["t","l"]),eN=L(n,["b","r"]),eP=L(M,["b","r"]),eF=C.overflow||{},eT=eF.adjustX,eA=eF.adjustY,eL=eF.shiftX,ez=eF.shiftY,e_=function(e){return"boolean"==typeof e?e:e>=0};tn();var eH=e_(eA),eB=eb[0]===ev[0];if(eH&&"t"===eb[0]&&(c>ee.bottom||E.current.bt)){var eD=eO;eB?eD-=W-q:eD=eI.y-eP.y-es;var eW=tt(eZ,eD),eV=tt(eZ,eD,Q);eW>ek||eW===ek&&(!K||eV>=eM)?(E.current.bt=!0,eO=eD,es=-es,eC.points=[z(eb,0),z(ev,0)]):E.current.bt=!1}if(eH&&"b"===eb[0]&&(aek||eG===ek&&(!K||eX>=eM)?(E.current.tb=!0,eO=eq,es=-es,eC.points=[z(eb,0),z(ev,0)]):E.current.tb=!1}var eU=e_(eT),e$=eb[1]===ev[1];if(eU&&"l"===eb[1]&&(s>ee.right||E.current.rl)){var eY=eZ;e$?eY-=V-G:eY=eI.x-eP.x-el;var eQ=tt(eY,eO),eJ=tt(eY,eO,Q);eQ>ek||eQ===ek&&(!K||eJ>=eM)?(E.current.rl=!0,eZ=eY,el=-el,eC.points=[z(eb,1),z(ev,1)]):E.current.rl=!1}if(eU&&"r"===eb[1]&&(lek||e1===ek&&(!K||e2>=eM)?(E.current.lr=!0,eZ=e0,el=-el,eC.points=[z(eb,1),z(ev,1)]):E.current.lr=!1}tn();var e6=!0===eL?0:eL;"number"==typeof e6&&(lQ.right&&(eZ-=s-Q.right-el,n.x>Q.right-e6&&(eZ+=n.x-Q.right+e6)));var e5=!0===ez?0:ez;"number"==typeof e5&&(aQ.bottom&&(eO-=c-Q.bottom-es,n.y>Q.bottom-e5&&(eO+=n.y-Q.bottom+e5)));var e4=M.x+eZ,e3=M.y+eO,e8=n.x,e9=n.y;null==ej||ej(eK,eC);var e7=et.right-M.x-(eZ+M.width),te=et.bottom-M.y-(eO+M.height);y({ready:!0,offsetX:eZ/en,offsetY:eO/er,offsetR:e7/en,offsetB:te/er,arrowX:((Math.max(e4,e8)+Math.min(e4+V,e8+G))/2-e4)/en,arrowY:((Math.max(e3,e9)+Math.min(e3+W,e9+q))/2-e3)/er,scaleX:en,scaleY:er,align:eC})}function tt(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:J,r=M.x+e,o=M.y+t,a=Math.max(r,n.left),i=Math.max(o,n.top);return Math.max(0,(Math.min(r+V,n.right)-a)*(Math.min(o+W,n.bottom)-i))}function tn(){c=(a=M.y+eO)+W,s=(l=M.x+eZ)+V}}}),F=function(){y(function(e){return(0,r.Z)((0,r.Z)({},e),{},{ready:!1})})},(0,m.Z)(F,[ey]),(0,m.Z)(function(){ta||F()},[ta]),[b.ready,b.offsetX,b.offsetY,b.offsetR,b.offsetB,b.arrowX,b.arrowY,b.scaleX,b.scaleY,b.align,function(){w.current+=1;var e=w.current;Promise.resolve().then(function(){w.current===e&&N()})}]),tk=(0,o.Z)(tO,11),tM=tk[0],tj=tk[1],tI=tk[2],tR=tk[3],tN=tk[4],tP=tk[5],tF=tk[6],tT=tk[7],tA=tk[8],tL=tk[9],tz=tk[10],t_=(D=void 0===Q?"hover":Q,h.useMemo(function(){var e=O(null!=J?J:D),t=O(null!=ee?ee:D),n=new Set(e),r=new Set(t);return eD&&(n.has("hover")&&(n.delete("hover"),n.add("click")),r.has("hover")&&(r.delete("hover"),r.add("click"))),[n,r]},[eD,D,J,ee])),tH=(0,o.Z)(t_,2),tB=tH[0],tD=tH[1],tW=tB.has("click"),tV=tD.has("click")||tD.has("contextMenu"),tq=(0,f.Z)(function(){tg||tz()});W=function(){tc.current&&ek&&tV&&tf(!1)},(0,m.Z)(function(){if(ta&&e1&&eK){var e=I(e1),t=I(eK),n=j(eK),r=new Set([n].concat((0,_.Z)(e),(0,_.Z)(t)));function o(){tq(),W()}return r.forEach(function(e){e.addEventListener("scroll",o,{passive:!0})}),n.addEventListener("resize",o,{passive:!0}),tq(),function(){r.forEach(function(e){e.removeEventListener("scroll",o),n.removeEventListener("resize",o)})}}},[ta,e1,eK]),(0,m.Z)(function(){tq()},[tS,ey]),(0,m.Z)(function(){ta&&!(null!=ex&&ex[ey])&&tq()},[JSON.stringify(eE)]);var tG=h.useMemo(function(){var e=function(e,t,n,r){for(var o=n.points,a=Object.keys(e),i=0;i0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2?arguments[2]:void 0;return n?e[0]===t[0]:e[0]===t[0]&&e[1]===t[1]}(null===(c=e[l])||void 0===c?void 0:c.points,o,r))return"".concat(t,"-placement-").concat(l)}return""}(ex,K,tL,ek);return l()(e,null==eZ?void 0:eZ(tL))},[tL,eZ,ex,K,ek]);h.useImperativeHandle(n,function(){return{nativeElement:e6.current,forceAlign:tq}});var tX=h.useState(0),tU=(0,o.Z)(tX,2),t$=tU[0],tK=tU[1],tY=h.useState(0),tQ=(0,o.Z)(tY,2),tJ=tQ[0],t0=tQ[1],t1=function(){if(eC&&e1){var e=e1.getBoundingClientRect();tK(e.width),t0(e.height)}};function t2(e,t,n,r){e8[e]=function(o){var a;null==r||r(o),tf(t,n);for(var i=arguments.length,c=Array(i>1?i-1:0),l=1;l1?n-1:0),o=1;o1?n-1:0),o=1;o{var t=(0,r._T)(e,[]);return o.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),o.createElement("path",{d:"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM11 15V17H13V15H11ZM11 7V13H13V7H11Z"}))},i=e=>{var t=(0,r._T)(e,[]);return o.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),o.createElement("path",{d:"M1.18164 12C2.12215 6.87976 6.60812 3 12.0003 3C17.3924 3 21.8784 6.87976 22.8189 12C21.8784 17.1202 17.3924 21 12.0003 21C6.60812 21 2.12215 17.1202 1.18164 12ZM12.0003 17C14.7617 17 17.0003 14.7614 17.0003 12C17.0003 9.23858 14.7617 7 12.0003 7C9.23884 7 7.00026 9.23858 7.00026 12C7.00026 14.7614 9.23884 17 12.0003 17ZM12.0003 15C10.3434 15 9.00026 13.6569 9.00026 12C9.00026 10.3431 10.3434 9 12.0003 9C13.6571 9 15.0003 10.3431 15.0003 12C15.0003 13.6569 13.6571 15 12.0003 15Z"}))},c=e=>{var t=(0,r._T)(e,[]);return o.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor"},t),o.createElement("path",{d:"M4.52047 5.93457L1.39366 2.80777L2.80788 1.39355L22.6069 21.1925L21.1927 22.6068L17.8827 19.2968C16.1814 20.3755 14.1638 21.0002 12.0003 21.0002C6.60812 21.0002 2.12215 17.1204 1.18164 12.0002C1.61832 9.62282 2.81932 7.5129 4.52047 5.93457ZM14.7577 16.1718L13.2937 14.7078C12.902 14.8952 12.4634 15.0002 12.0003 15.0002C10.3434 15.0002 9.00026 13.657 9.00026 12.0002C9.00026 11.537 9.10522 11.0984 9.29263 10.7067L7.82866 9.24277C7.30514 10.0332 7.00026 10.9811 7.00026 12.0002C7.00026 14.7616 9.23884 17.0002 12.0003 17.0002C13.0193 17.0002 13.9672 16.6953 14.7577 16.1718ZM7.97446 3.76015C9.22127 3.26959 10.5793 3.00016 12.0003 3.00016C17.3924 3.00016 21.8784 6.87992 22.8189 12.0002C22.5067 13.6998 21.8038 15.2628 20.8068 16.5925L16.947 12.7327C16.9821 12.4936 17.0003 12.249 17.0003 12.0002C17.0003 9.23873 14.7617 7.00016 12.0003 7.00016C11.7514 7.00016 11.5068 7.01833 11.2677 7.05343L7.97446 3.76015Z"}))};var l=n(96398),s=n(97324),u=n(1153);let d=o.forwardRef((e,t)=>{let{value:n,defaultValue:d,type:f,placeholder:p="Type...",icon:m,error:g=!1,errorMessage:h,disabled:v=!1,stepper:b,makeInputClassName:y,className:w,onChange:x,onValueChange:E,autoFocus:S}=e,C=(0,r._T)(e,["value","defaultValue","type","placeholder","icon","error","errorMessage","disabled","stepper","makeInputClassName","className","onChange","onValueChange","autoFocus"]),[Z,O]=(0,o.useState)(S||!1),[k,M]=(0,o.useState)(!1),j=(0,o.useCallback)(()=>M(!k),[k,M]),I=(0,o.useRef)(null),R=(0,l.Uh)(n||d);return o.useEffect(()=>{let e=()=>O(!0),t=()=>O(!1),n=I.current;return n&&(n.addEventListener("focus",e),n.addEventListener("blur",t),S&&n.focus()),()=>{n&&(n.removeEventListener("focus",e),n.removeEventListener("blur",t))}},[S]),o.createElement(o.Fragment,null,o.createElement("div",{className:(0,s.q)(y("root"),"relative w-full flex items-center min-w-[10rem] outline-none rounded-tremor-default transition duration-100 border","shadow-tremor-input","dark:shadow-dark-tremor-input",(0,l.um)(R,v,g),Z&&(0,s.q)("ring-2","border-tremor-brand-subtle ring-tremor-brand-muted","dark:border-dark-tremor-brand-subtle dark:ring-dark-tremor-brand-muted"),w)},m?o.createElement(m,{className:(0,s.q)(y("icon"),"shrink-0 h-5 w-5 ml-2.5","text-tremor-content-subtle","dark:text-dark-tremor-content-subtle")}):null,o.createElement("input",Object.assign({ref:(0,u.lq)([I,t]),defaultValue:d,value:n,type:k?"text":f,className:(0,s.q)(y("input"),"w-full focus:outline-none focus:ring-0 border-none bg-transparent text-tremor-default rounded-tremor-default transition duration-100 py-2","text-tremor-content-emphasis","dark:text-dark-tremor-content-emphasis","[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none",m?"pl-2":"pl-3",g?"pr-3":"pr-4",v?"placeholder:text-tremor-content-subtle dark:placeholder:text-dark-tremor-content-subtle":"placeholder:text-tremor-content dark:placeholder:text-dark-tremor-content"),placeholder:p,disabled:v,"data-testid":"base-input",onChange:e=>{null==x||x(e),null==E||E(e.target.value)}},C)),"password"!==f||v?null:o.createElement("button",{className:(0,s.q)(y("toggleButton"),"mr-2"),type:"button",onClick:()=>j(),"aria-label":k?"Hide password":"Show Password"},k?o.createElement(c,{className:(0,s.q)("flex-none h-5 w-5 transition","text-tremor-content-subtle hover:text-tremor-content","dark:text-dark-tremor-content-subtle hover:dark:text-dark-tremor-content"),"aria-hidden":!0}):o.createElement(i,{className:(0,s.q)("flex-none h-5 w-5 transition","text-tremor-content-subtle hover:text-tremor-content","dark:text-dark-tremor-content-subtle hover:dark:text-dark-tremor-content"),"aria-hidden":!0})),g?o.createElement(a,{className:(0,s.q)(y("errorIcon"),"text-red-500 shrink-0 w-5 h-5 mr-2.5")}):null,null!=b?b:null),g&&h?o.createElement("p",{className:(0,s.q)(y("errorMessage"),"text-sm text-red-500 mt-1")},h):null)});d.displayName="BaseInput"},49566:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var r=n(5853),o=n(2265);n(97324);var a=n(1153),i=n(69262);let c=(0,a.fn)("TextInput"),l=o.forwardRef((e,t)=>{let{type:n="text"}=e,a=(0,r._T)(e,["type"]);return o.createElement(i.Z,Object.assign({ref:t,type:n,makeInputClassName:c},a))});l.displayName="TextInput"},96398:function(e,t,n){"use strict";n.d(t,{Uh:function(){return s},n0:function(){return c},qg:function(){return a},sl:function(){return i},um:function(){return l}});var r=n(97324),o=n(2265);let a=e=>["string","number"].includes(typeof e)?e:e instanceof Array?e.map(a).join(""):"object"==typeof e&&e?a(e.props.children):void 0;function i(e){let t=new Map;return o.Children.map(e,e=>{var n;t.set(e.props.value,null!==(n=a(e))&&void 0!==n?n:e.props.value)}),t}function c(e,t){return o.Children.map(t,t=>{var n;if((null!==(n=a(t))&&void 0!==n?n:t.props.value).toLowerCase().includes(e.toLowerCase()))return t})}let l=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return(0,r.q)(t?"bg-tremor-background-subtle dark:bg-dark-tremor-background-subtle":"bg-tremor-background dark:bg-dark-tremor-background",!t&&"hover:bg-tremor-background-muted dark:hover:bg-dark-tremor-background-muted",e?"text-tremor-content-emphasis dark:text-dark-tremor-content-emphasis":"text-tremor-content dark:text-dark-tremor-content",t&&"text-tremor-content-subtle dark:text-dark-tremor-content-subtle",n&&"text-red-500",n?"border-red-500":"border-tremor-border dark:border-dark-tremor-border")};function s(e){return null!=e&&""!==e}},93942:function(e,t,n){"use strict";n.d(t,{i:function(){return c}});var r=n(2265),o=n(50506),a=n(13959),i=n(71744);function c(e){return t=>r.createElement(a.ZP,{theme:{token:{motion:!1,zIndexPopupBase:0}}},r.createElement(e,Object.assign({},t)))}t.Z=(e,t,n,a)=>c(c=>{let{prefixCls:l,style:s}=c,u=r.useRef(null),[d,f]=r.useState(0),[p,m]=r.useState(0),[g,h]=(0,o.Z)(!1,{value:c.open}),{getPrefixCls:v}=r.useContext(i.E_),b=v(t||"select",l);r.useEffect(()=>{if(h(!0),"undefined"!=typeof ResizeObserver){let e=new ResizeObserver(e=>{let t=e[0].target;f(t.offsetHeight+8),m(t.offsetWidth)}),t=setInterval(()=>{var r;let o=n?".".concat(n(b)):".".concat(b,"-dropdown"),a=null===(r=u.current)||void 0===r?void 0:r.querySelector(o);a&&(clearInterval(t),e.observe(a))},10);return()=>{clearInterval(t),e.disconnect()}}},[]);let y=Object.assign(Object.assign({},c),{style:Object.assign(Object.assign({},s),{margin:0}),open:g,visible:g,getPopupContainer:()=>u.current});return a&&(y=a(y)),r.createElement("div",{ref:u,style:{paddingBottom:d,position:"relative",minWidth:p}},r.createElement(e,Object.assign({},y)))})},93350:function(e,t,n){"use strict";n.d(t,{o2:function(){return c},yT:function(){return l}});var r=n(83145),o=n(53454);let a=o.i.map(e=>"".concat(e,"-inverse")),i=["success","processing","error","default","warning"];function c(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return t?[].concat((0,r.Z)(a),(0,r.Z)(o.i)).includes(e):o.i.includes(e)}function l(e){return i.includes(e)}},62236:function(e,t,n){"use strict";n.d(t,{Cn:function(){return s},u6:function(){return i}});var r=n(2265),o=n(29961),a=n(95140);let i=1e3,c={Modal:100,Drawer:100,Popover:100,Popconfirm:100,Tooltip:100,Tour:100},l={SelectLike:50,Dropdown:50,DatePicker:50,Menu:50,ImagePreview:1};function s(e,t){let[,n]=(0,o.ZP)(),s=r.useContext(a.Z);if(void 0!==t)return[t,t];let u=null!=s?s:0;return e in c?(u+=(s?0:n.zIndexPopupBase)+c[e],u=Math.min(u,n.zIndexPopupBase+i)):u+=l[e],[void 0===s?t:u,u]}},68710:function(e,t,n){"use strict";n.d(t,{m:function(){return c}});let r=()=>({height:0,opacity:0}),o=e=>{let{scrollHeight:t}=e;return{height:t,opacity:1}},a=e=>({height:e?e.offsetHeight:0}),i=(e,t)=>(null==t?void 0:t.deadline)===!0||"height"===t.propertyName,c=(e,t,n)=>void 0!==n?n:"".concat(e,"-").concat(t);t.Z=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"ant";return{motionName:"".concat(e,"-motion-collapse"),onAppearStart:r,onEnterStart:r,onAppearActive:o,onEnterActive:o,onLeaveStart:a,onLeaveActive:r,onAppearEnd:i,onEnterEnd:i,onLeaveEnd:i,motionDeadline:500}}},92736:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(88260);let o={left:{points:["cr","cl"]},right:{points:["cl","cr"]},top:{points:["bc","tc"]},bottom:{points:["tc","bc"]},topLeft:{points:["bl","tl"]},leftTop:{points:["tr","tl"]},topRight:{points:["br","tr"]},rightTop:{points:["tl","tr"]},bottomRight:{points:["tr","br"]},rightBottom:{points:["bl","br"]},bottomLeft:{points:["tl","bl"]},leftBottom:{points:["br","bl"]}},a={topLeft:{points:["bl","tc"]},leftTop:{points:["tr","cl"]},topRight:{points:["br","tc"]},rightTop:{points:["tl","cr"]},bottomRight:{points:["tr","bc"]},rightBottom:{points:["bl","cr"]},bottomLeft:{points:["tl","bc"]},leftBottom:{points:["br","cl"]}},i=new Set(["topLeft","topRight","bottomLeft","bottomRight","leftTop","leftBottom","rightTop","rightBottom"]);function c(e){let{arrowWidth:t,autoAdjustOverflow:n,arrowPointAtCenter:c,offset:l,borderRadius:s,visibleFirst:u}=e,d=t/2,f={};return Object.keys(o).forEach(e=>{let p=Object.assign(Object.assign({},c&&a[e]||o[e]),{offset:[0,0],dynamicInset:!0});switch(f[e]=p,i.has(e)&&(p.autoArrow=!1),e){case"top":case"topLeft":case"topRight":p.offset[1]=-d-l;break;case"bottom":case"bottomLeft":case"bottomRight":p.offset[1]=d+l;break;case"left":case"leftTop":case"leftBottom":p.offset[0]=-d-l;break;case"right":case"rightTop":case"rightBottom":p.offset[0]=d+l}let m=(0,r.wZ)({contentRadius:s,limitVerticalRadius:!0});if(c)switch(e){case"topLeft":case"bottomLeft":p.offset[0]=-m.arrowOffsetHorizontal-d;break;case"topRight":case"bottomRight":p.offset[0]=m.arrowOffsetHorizontal+d;break;case"leftTop":case"rightTop":p.offset[1]=-m.arrowOffsetHorizontal-d;break;case"leftBottom":case"rightBottom":p.offset[1]=m.arrowOffsetHorizontal+d}p.overflow=function(e,t,n,r){if(!1===r)return{adjustX:!1,adjustY:!1};let o={};switch(e){case"top":case"bottom":o.shiftX=2*t.arrowOffsetHorizontal+n,o.shiftY=!0,o.adjustY=!0;break;case"left":case"right":o.shiftY=2*t.arrowOffsetVertical+n,o.shiftX=!0,o.adjustX=!0}let a=Object.assign(Object.assign({},o),r&&"object"==typeof r?r:{});return a.shiftX||(a.adjustX=!0),a.shiftY||(a.adjustY=!0),a}(e,m,t,n),u&&(p.htmlRegion="visibleFirst")}),f}},19722:function(e,t,n){"use strict";n.d(t,{M2:function(){return i},Tm:function(){return l},l$:function(){return a},wm:function(){return c}});var r,o=n(2265);let{isValidElement:a}=r||(r=n.t(o,2));function i(e){return e&&a(e)&&e.type===o.Fragment}function c(e,t,n){return a(e)?o.cloneElement(e,"function"==typeof n?n(e.props||{}):n):t}function l(e,t){return c(e,e,t)}},6543:function(e,t,n){"use strict";n.d(t,{ZP:function(){return l},c4:function(){return a}});var r=n(2265),o=n(29961);let a=["xxl","xl","lg","md","sm","xs"],i=e=>({xs:"(max-width: ".concat(e.screenXSMax,"px)"),sm:"(min-width: ".concat(e.screenSM,"px)"),md:"(min-width: ".concat(e.screenMD,"px)"),lg:"(min-width: ".concat(e.screenLG,"px)"),xl:"(min-width: ".concat(e.screenXL,"px)"),xxl:"(min-width: ".concat(e.screenXXL,"px)")}),c=e=>{let t=[].concat(a).reverse();return t.forEach((n,r)=>{let o=n.toUpperCase(),a="screen".concat(o,"Min"),i="screen".concat(o);if(!(e[a]<=e[i]))throw Error("".concat(a,"<=").concat(i," fails : !(").concat(e[a],"<=").concat(e[i],")"));if(r{let e=new Map,n=-1,r={};return{matchHandlers:{},dispatch:t=>(r=t,e.forEach(e=>e(r)),e.size>=1),subscribe(t){return e.size||this.register(),n+=1,e.set(n,t),t(r),n},unsubscribe(t){e.delete(t),e.size||this.unregister()},unregister(){Object.keys(t).forEach(e=>{let n=t[e],r=this.matchHandlers[n];null==r||r.mql.removeListener(null==r?void 0:r.listener)}),e.clear()},register(){Object.keys(t).forEach(e=>{let n=t[e],o=t=>{let{matches:n}=t;this.dispatch(Object.assign(Object.assign({},r),{[e]:n}))},a=window.matchMedia(n);a.addListener(o),this.matchHandlers[n]={mql:a,listener:o},o(a)})},responsiveMap:t}},[e])}},12757:function(e,t,n){"use strict";n.d(t,{F:function(){return i},Z:function(){return a}});var r=n(36760),o=n.n(r);function a(e,t,n){return o()({["".concat(e,"-status-success")]:"success"===t,["".concat(e,"-status-warning")]:"warning"===t,["".concat(e,"-status-error")]:"error"===t,["".concat(e,"-status-validating")]:"validating"===t,["".concat(e,"-has-feedback")]:n})}let i=(e,t)=>t||e},13613:function(e,t,n){"use strict";n.d(t,{G8:function(){return a},ln:function(){return i}});var r=n(2265);function o(){}n(32559);let a=r.createContext({}),i=()=>{let e=()=>{};return e.deprecated=o,e}},6694:function(e,t,n){"use strict";n.d(t,{Z:function(){return S}});var r=n(36760),o=n.n(r),a=n(28791),i=n(2857),c=n(2265),l=n(71744),s=n(19722),u=n(80669);let d=e=>{let{componentCls:t,colorPrimary:n}=e;return{[t]:{position:"absolute",background:"transparent",pointerEvents:"none",boxSizing:"border-box",color:"var(--wave-color, ".concat(n,")"),boxShadow:"0 0 0 0 currentcolor",opacity:.2,"&.wave-motion-appear":{transition:["box-shadow 0.4s ".concat(e.motionEaseOutCirc),"opacity 2s ".concat(e.motionEaseOutCirc)].join(","),"&-active":{boxShadow:"0 0 0 6px currentcolor",opacity:0},"&.wave-quick":{transition:["box-shadow 0.3s ".concat(e.motionEaseInOut),"opacity 0.35s ".concat(e.motionEaseInOut)].join(",")}}}}};var f=(0,u.ZP)("Wave",e=>[d(e)]),p=n(74126),m=n(53346),g=n(47970),h=n(18404);function v(e){return e&&"#fff"!==e&&"#ffffff"!==e&&"rgb(255, 255, 255)"!==e&&"rgba(255, 255, 255, 1)"!==e&&function(e){let t=(e||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/);return!t||!t[1]||!t[2]||!t[3]||!(t[1]===t[2]&&t[2]===t[3])}(e)&&!/rgba\((?:\d*, ){3}0\)/.test(e)&&"transparent"!==e}var b=n(34709);function y(e){return Number.isNaN(e)?0:e}let w=e=>{let{className:t,target:n,component:r}=e,a=c.useRef(null),[i,l]=c.useState(null),[s,u]=c.useState([]),[d,f]=c.useState(0),[p,w]=c.useState(0),[x,E]=c.useState(0),[S,C]=c.useState(0),[Z,O]=c.useState(!1),k={left:d,top:p,width:x,height:S,borderRadius:s.map(e=>"".concat(e,"px")).join(" ")};function M(){let e=getComputedStyle(n);l(function(e){let{borderTopColor:t,borderColor:n,backgroundColor:r}=getComputedStyle(e);return v(t)?t:v(n)?n:v(r)?r:null}(n));let t="static"===e.position,{borderLeftWidth:r,borderTopWidth:o}=e;f(t?n.offsetLeft:y(-parseFloat(r))),w(t?n.offsetTop:y(-parseFloat(o))),E(n.offsetWidth),C(n.offsetHeight);let{borderTopLeftRadius:a,borderTopRightRadius:i,borderBottomLeftRadius:c,borderBottomRightRadius:s}=e;u([a,i,s,c].map(e=>y(parseFloat(e))))}if(i&&(k["--wave-color"]=i),c.useEffect(()=>{if(n){let e;let t=(0,m.Z)(()=>{M(),O(!0)});return"undefined"!=typeof ResizeObserver&&(e=new ResizeObserver(M)).observe(n),()=>{m.Z.cancel(t),null==e||e.disconnect()}}},[]),!Z)return null;let j=("Checkbox"===r||"Radio"===r)&&(null==n?void 0:n.classList.contains(b.A));return c.createElement(g.ZP,{visible:!0,motionAppear:!0,motionName:"wave-motion",motionDeadline:5e3,onAppearEnd:(e,t)=>{var n;if(t.deadline||"opacity"===t.propertyName){let e=null===(n=a.current)||void 0===n?void 0:n.parentElement;(0,h.v)(e).then(()=>{null==e||e.remove()})}return!1}},e=>{let{className:n}=e;return c.createElement("div",{ref:a,className:o()(t,{"wave-quick":j},n),style:k})})};var x=(e,t)=>{var n;let{component:r}=t;if("Checkbox"===r&&!(null===(n=e.querySelector("input"))||void 0===n?void 0:n.checked))return;let o=document.createElement("div");o.style.position="absolute",o.style.left="0px",o.style.top="0px",null==e||e.insertBefore(o,null==e?void 0:e.firstChild),(0,h.s)(c.createElement(w,Object.assign({},t,{target:e})),o)},E=n(29961),S=e=>{let{children:t,disabled:n,component:r}=e,{getPrefixCls:u}=(0,c.useContext)(l.E_),d=(0,c.useRef)(null),g=u("wave"),[,h]=f(g),v=function(e,t,n){let{wave:r}=c.useContext(l.E_),[,o,a]=(0,E.ZP)(),i=(0,p.zX)(i=>{let c=e.current;if((null==r?void 0:r.disabled)||!c)return;let l=c.querySelector(".".concat(b.A))||c,{showEffect:s}=r||{};(s||x)(l,{className:t,token:o,component:n,event:i,hashId:a})}),s=c.useRef();return e=>{m.Z.cancel(s.current),s.current=(0,m.Z)(()=>{i(e)})}}(d,o()(g,h),r);if(c.useEffect(()=>{let e=d.current;if(!e||1!==e.nodeType||n)return;let t=t=>{!(0,i.Z)(t.target)||!e.getAttribute||e.getAttribute("disabled")||e.disabled||e.className.includes("disabled")||e.className.includes("-leave")||v(t)};return e.addEventListener("click",t,!0),()=>{e.removeEventListener("click",t,!0)}},[n]),!c.isValidElement(t))return null!=t?t:null;let y=(0,a.Yr)(t)?(0,a.sQ)(t.ref,d):d;return(0,s.Tm)(t,{ref:y})}},34709:function(e,t,n){"use strict";n.d(t,{A:function(){return r}});let r="ant-wave-target"},95140:function(e,t,n){"use strict";let r=n(2265).createContext(void 0);t.Z=r},52402:function(e,t,n){"use strict";n.d(t,{J:function(){return r}});let r=n(2265).createContext({})},51248:function(e,t,n){"use strict";n.d(t,{Te:function(){return s},aG:function(){return i},hU:function(){return u},nx:function(){return c}});var r=n(2265),o=n(19722);let a=/^[\u4e00-\u9fa5]{2}$/,i=a.test.bind(a);function c(e){return"danger"===e?{danger:!0}:{type:e}}function l(e){return"string"==typeof e}function s(e){return"text"===e||"link"===e}function u(e,t){let n=!1,a=[];return r.Children.forEach(e,e=>{let t=typeof e,r="string"===t||"number"===t;if(n&&r){let t=a.length-1,n=a[t];a[t]="".concat(n).concat(e)}else a.push(e);n=r}),r.Children.map(a,e=>(function(e,t){if(null==e)return;let n=t?" ":"";return"string"!=typeof e&&"number"!=typeof e&&l(e.type)&&i(e.props.children)?(0,o.Tm)(e,{children:e.props.children.split("").join(n)}):l(e)?i(e)?r.createElement("span",null,e.split("").join(n)):r.createElement("span",null,e):(0,o.M2)(e)?r.createElement("span",null,e):e})(e,t))}},73002:function(e,t,n){"use strict";n.d(t,{ZP:function(){return ea}});var r=n(2265),o=n(36760),a=n.n(o),i=n(18694),c=n(28791),l=n(6694),s=n(71744),u=n(86586),d=n(33759),f=n(65658),p=n(29961),m=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let g=r.createContext(void 0);var h=n(51248);let v=(0,r.forwardRef)((e,t)=>{let{className:n,style:o,children:i,prefixCls:c}=e,l=a()("".concat(c,"-icon"),n);return r.createElement("span",{ref:t,className:l,style:o},i)});var b=n(61935),y=n(47970);let w=(0,r.forwardRef)((e,t)=>{let{prefixCls:n,className:o,style:i,iconClassName:c}=e,l=a()("".concat(n,"-loading-icon"),o);return r.createElement(v,{prefixCls:n,className:l,style:i,ref:t},r.createElement(b.Z,{className:c}))}),x=()=>({width:0,opacity:0,transform:"scale(0)"}),E=e=>({width:e.scrollWidth,opacity:1,transform:"scale(1)"});var S=e=>{let{prefixCls:t,loading:n,existIcon:o,className:a,style:i}=e,c=!!n;return o?r.createElement(w,{prefixCls:t,className:a,style:i}):r.createElement(y.ZP,{visible:c,motionName:"".concat(t,"-loading-icon-motion"),motionLeave:c,removeOnLeave:!0,onAppearStart:x,onAppearActive:E,onEnterStart:x,onEnterActive:E,onLeaveStart:E,onLeaveActive:x},(e,n)=>{let{className:o,style:c}=e;return r.createElement(w,{prefixCls:t,className:a,style:Object.assign(Object.assign({},i),c),ref:n,iconClassName:o})})},C=n(352),Z=n(12918),O=n(3104),k=n(80669);let M=(e,t)=>({["> span, > ".concat(e)]:{"&:not(:last-child)":{["&, & > ".concat(e)]:{"&:not(:disabled)":{borderInlineEndColor:t}}},"&:not(:first-child)":{["&, & > ".concat(e)]:{"&:not(:disabled)":{borderInlineStartColor:t}}}}});var j=e=>{let{componentCls:t,fontSize:n,lineWidth:r,groupBorderColor:o,colorErrorHover:a}=e;return{["".concat(t,"-group")]:[{position:"relative",display:"inline-flex",["> span, > ".concat(t)]:{"&:not(:last-child)":{["&, & > ".concat(t)]:{borderStartEndRadius:0,borderEndEndRadius:0}},"&:not(:first-child)":{marginInlineStart:e.calc(r).mul(-1).equal(),["&, & > ".concat(t)]:{borderStartStartRadius:0,borderEndStartRadius:0}}},[t]:{position:"relative",zIndex:1,"&:hover,\n &:focus,\n &:active":{zIndex:2},"&[disabled]":{zIndex:0}},["".concat(t,"-icon-only")]:{fontSize:n}},M("".concat(t,"-primary"),o),M("".concat(t,"-danger"),a)]}},I=n(1319);let R=e=>{let{paddingInline:t,onlyIconSize:n,paddingBlock:r}=e;return(0,O.TS)(e,{buttonPaddingHorizontal:t,buttonPaddingVertical:r,buttonIconOnlyFontSize:n})},N=e=>{var t,n,r,o,a,i;let c=null!==(t=e.contentFontSize)&&void 0!==t?t:e.fontSize,l=null!==(n=e.contentFontSizeSM)&&void 0!==n?n:e.fontSize,s=null!==(r=e.contentFontSizeLG)&&void 0!==r?r:e.fontSizeLG,u=null!==(o=e.contentLineHeight)&&void 0!==o?o:(0,I.D)(c),d=null!==(a=e.contentLineHeightSM)&&void 0!==a?a:(0,I.D)(l),f=null!==(i=e.contentLineHeightLG)&&void 0!==i?i:(0,I.D)(s);return{fontWeight:400,defaultShadow:"0 ".concat(e.controlOutlineWidth,"px 0 ").concat(e.controlTmpOutline),primaryShadow:"0 ".concat(e.controlOutlineWidth,"px 0 ").concat(e.controlOutline),dangerShadow:"0 ".concat(e.controlOutlineWidth,"px 0 ").concat(e.colorErrorOutline),primaryColor:e.colorTextLightSolid,dangerColor:e.colorTextLightSolid,borderColorDisabled:e.colorBorder,defaultGhostColor:e.colorBgContainer,ghostBg:"transparent",defaultGhostBorderColor:e.colorBgContainer,paddingInline:e.paddingContentHorizontal-e.lineWidth,paddingInlineLG:e.paddingContentHorizontal-e.lineWidth,paddingInlineSM:8-e.lineWidth,onlyIconSize:e.fontSizeLG,onlyIconSizeSM:e.fontSizeLG-2,onlyIconSizeLG:e.fontSizeLG+2,groupBorderColor:e.colorPrimaryHover,linkHoverBg:"transparent",textHoverBg:e.colorBgTextHover,defaultColor:e.colorText,defaultBg:e.colorBgContainer,defaultBorderColor:e.colorBorder,defaultBorderColorDisabled:e.colorBorder,contentFontSize:c,contentFontSizeSM:l,contentFontSizeLG:s,contentLineHeight:u,contentLineHeightSM:d,contentLineHeightLG:f,paddingBlock:Math.max((e.controlHeight-c*u)/2-e.lineWidth,0),paddingBlockSM:Math.max((e.controlHeightSM-l*d)/2-e.lineWidth,0),paddingBlockLG:Math.max((e.controlHeightLG-s*f)/2-e.lineWidth,0)}},P=e=>{let{componentCls:t,iconCls:n,fontWeight:r}=e;return{[t]:{outline:"none",position:"relative",display:"inline-block",fontWeight:r,whiteSpace:"nowrap",textAlign:"center",backgroundImage:"none",background:"transparent",border:"".concat((0,C.bf)(e.lineWidth)," ").concat(e.lineType," transparent"),cursor:"pointer",transition:"all ".concat(e.motionDurationMid," ").concat(e.motionEaseInOut),userSelect:"none",touchAction:"manipulation",color:e.colorText,"&:disabled > *":{pointerEvents:"none"},"> span":{display:"inline-block"},["".concat(t,"-icon")]:{lineHeight:0},["> ".concat(n," + span, > span + ").concat(n)]:{marginInlineStart:e.marginXS},["&:not(".concat(t,"-icon-only) > ").concat(t,"-icon")]:{["&".concat(t,"-loading-icon, &:not(:last-child)")]:{marginInlineEnd:e.marginXS}},"> a":{color:"currentColor"},"&:not(:disabled)":Object.assign({},(0,Z.Qy)(e)),["&".concat(t,"-two-chinese-chars::first-letter")]:{letterSpacing:"0.34em"},["&".concat(t,"-two-chinese-chars > *:not(").concat(n,")")]:{marginInlineEnd:"-0.34em",letterSpacing:"0.34em"},["&-icon-only".concat(t,"-compact-item")]:{flex:"none"}}}},F=(e,t,n)=>({["&:not(:disabled):not(".concat(e,"-disabled)")]:{"&:hover":t,"&:active":n}}),T=e=>({minWidth:e.controlHeight,paddingInlineStart:0,paddingInlineEnd:0,borderRadius:"50%"}),A=e=>({borderRadius:e.controlHeight,paddingInlineStart:e.calc(e.controlHeight).div(2).equal(),paddingInlineEnd:e.calc(e.controlHeight).div(2).equal()}),L=e=>({cursor:"not-allowed",borderColor:e.borderColorDisabled,color:e.colorTextDisabled,background:e.colorBgContainerDisabled,boxShadow:"none"}),z=(e,t,n,r,o,a,i,c)=>({["&".concat(e,"-background-ghost")]:Object.assign(Object.assign({color:n||void 0,background:t,borderColor:r||void 0,boxShadow:"none"},F(e,Object.assign({background:t},i),Object.assign({background:t},c))),{"&:disabled":{cursor:"not-allowed",color:o||void 0,borderColor:a||void 0}})}),_=e=>({["&:disabled, &".concat(e.componentCls,"-disabled")]:Object.assign({},L(e))}),H=e=>Object.assign({},_(e)),B=e=>({["&:disabled, &".concat(e.componentCls,"-disabled")]:{cursor:"not-allowed",color:e.colorTextDisabled}}),D=e=>Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},H(e)),{background:e.defaultBg,borderColor:e.defaultBorderColor,color:e.defaultColor,boxShadow:e.defaultShadow}),F(e.componentCls,{color:e.colorPrimaryHover,borderColor:e.colorPrimaryHover},{color:e.colorPrimaryActive,borderColor:e.colorPrimaryActive})),z(e.componentCls,e.ghostBg,e.defaultGhostColor,e.defaultGhostBorderColor,e.colorTextDisabled,e.colorBorder)),{["&".concat(e.componentCls,"-dangerous")]:Object.assign(Object.assign(Object.assign({color:e.colorError,borderColor:e.colorError},F(e.componentCls,{color:e.colorErrorHover,borderColor:e.colorErrorBorderHover},{color:e.colorErrorActive,borderColor:e.colorErrorActive})),z(e.componentCls,e.ghostBg,e.colorError,e.colorError,e.colorTextDisabled,e.colorBorder)),_(e))}),W=e=>Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},H(e)),{color:e.primaryColor,background:e.colorPrimary,boxShadow:e.primaryShadow}),F(e.componentCls,{color:e.colorTextLightSolid,background:e.colorPrimaryHover},{color:e.colorTextLightSolid,background:e.colorPrimaryActive})),z(e.componentCls,e.ghostBg,e.colorPrimary,e.colorPrimary,e.colorTextDisabled,e.colorBorder,{color:e.colorPrimaryHover,borderColor:e.colorPrimaryHover},{color:e.colorPrimaryActive,borderColor:e.colorPrimaryActive})),{["&".concat(e.componentCls,"-dangerous")]:Object.assign(Object.assign(Object.assign({background:e.colorError,boxShadow:e.dangerShadow,color:e.dangerColor},F(e.componentCls,{background:e.colorErrorHover},{background:e.colorErrorActive})),z(e.componentCls,e.ghostBg,e.colorError,e.colorError,e.colorTextDisabled,e.colorBorder,{color:e.colorErrorHover,borderColor:e.colorErrorHover},{color:e.colorErrorActive,borderColor:e.colorErrorActive})),_(e))}),V=e=>Object.assign(Object.assign({},D(e)),{borderStyle:"dashed"}),q=e=>Object.assign(Object.assign(Object.assign({color:e.colorLink},F(e.componentCls,{color:e.colorLinkHover,background:e.linkHoverBg},{color:e.colorLinkActive})),B(e)),{["&".concat(e.componentCls,"-dangerous")]:Object.assign(Object.assign({color:e.colorError},F(e.componentCls,{color:e.colorErrorHover},{color:e.colorErrorActive})),B(e))}),G=e=>Object.assign(Object.assign(Object.assign({},F(e.componentCls,{color:e.colorText,background:e.textHoverBg},{color:e.colorText,background:e.colorBgTextActive})),B(e)),{["&".concat(e.componentCls,"-dangerous")]:Object.assign(Object.assign({color:e.colorError},B(e)),F(e.componentCls,{color:e.colorErrorHover,background:e.colorErrorBg},{color:e.colorErrorHover,background:e.colorErrorBg}))}),X=e=>{let{componentCls:t}=e;return{["".concat(t,"-default")]:D(e),["".concat(t,"-primary")]:W(e),["".concat(t,"-dashed")]:V(e),["".concat(t,"-link")]:q(e),["".concat(t,"-text")]:G(e),["".concat(t,"-ghost")]:z(e.componentCls,e.ghostBg,e.colorBgContainer,e.colorBgContainer,e.colorTextDisabled,e.colorBorder)}},U=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",{componentCls:n,controlHeight:r,fontSize:o,lineHeight:a,borderRadius:i,buttonPaddingHorizontal:c,iconCls:l,buttonPaddingVertical:s}=e,u="".concat(n,"-icon-only");return[{["".concat(n).concat(t)]:{fontSize:o,lineHeight:a,height:r,padding:"".concat((0,C.bf)(s)," ").concat((0,C.bf)(c)),borderRadius:i,["&".concat(u)]:{width:r,paddingInlineStart:0,paddingInlineEnd:0,["&".concat(n,"-round")]:{width:"auto"},[l]:{fontSize:e.buttonIconOnlyFontSize}},["&".concat(n,"-loading")]:{opacity:e.opacityLoading,cursor:"default"},["".concat(n,"-loading-icon")]:{transition:"width ".concat(e.motionDurationSlow," ").concat(e.motionEaseInOut,", opacity ").concat(e.motionDurationSlow," ").concat(e.motionEaseInOut)}}},{["".concat(n).concat(n,"-circle").concat(t)]:T(e)},{["".concat(n).concat(n,"-round").concat(t)]:A(e)}]},$=e=>U((0,O.TS)(e,{fontSize:e.contentFontSize,lineHeight:e.contentLineHeight})),K=e=>U((0,O.TS)(e,{controlHeight:e.controlHeightSM,fontSize:e.contentFontSizeSM,lineHeight:e.contentLineHeightSM,padding:e.paddingXS,buttonPaddingHorizontal:e.paddingInlineSM,buttonPaddingVertical:e.paddingBlockSM,borderRadius:e.borderRadiusSM,buttonIconOnlyFontSize:e.onlyIconSizeSM}),"".concat(e.componentCls,"-sm")),Y=e=>U((0,O.TS)(e,{controlHeight:e.controlHeightLG,fontSize:e.contentFontSizeLG,lineHeight:e.contentLineHeightLG,buttonPaddingHorizontal:e.paddingInlineLG,buttonPaddingVertical:e.paddingBlockLG,borderRadius:e.borderRadiusLG,buttonIconOnlyFontSize:e.onlyIconSizeLG}),"".concat(e.componentCls,"-lg")),Q=e=>{let{componentCls:t}=e;return{[t]:{["&".concat(t,"-block")]:{width:"100%"}}}};var J=(0,k.I$)("Button",e=>{let t=R(e);return[P(t),K(t),$(t),Y(t),Q(t),X(t),j(t)]},N,{unitless:{fontWeight:!0,contentLineHeight:!0,contentLineHeightSM:!0,contentLineHeightLG:!0}}),ee=n(17691);let et=e=>{let{componentCls:t,calc:n}=e;return{[t]:{["&-compact-item".concat(t,"-primary")]:{["&:not([disabled]) + ".concat(t,"-compact-item").concat(t,"-primary:not([disabled])")]:{position:"relative","&:before":{position:"absolute",top:n(e.lineWidth).mul(-1).equal(),insetInlineStart:n(e.lineWidth).mul(-1).equal(),display:"inline-block",width:e.lineWidth,height:"calc(100% + ".concat((0,C.bf)(e.lineWidth)," * 2)"),backgroundColor:e.colorPrimaryHover,content:'""'}}},"&-compact-vertical-item":{["&".concat(t,"-primary")]:{["&:not([disabled]) + ".concat(t,"-compact-vertical-item").concat(t,"-primary:not([disabled])")]:{position:"relative","&:before":{position:"absolute",top:n(e.lineWidth).mul(-1).equal(),insetInlineStart:n(e.lineWidth).mul(-1).equal(),display:"inline-block",width:"calc(100% + ".concat((0,C.bf)(e.lineWidth)," * 2)"),height:e.lineWidth,backgroundColor:e.colorPrimaryHover,content:'""'}}}}}}};var en=(0,k.bk)(["Button","compact"],e=>{let t=R(e);return[(0,ee.c)(t),function(e){var t;let n="".concat(e.componentCls,"-compact-vertical");return{[n]:Object.assign(Object.assign({},{["&-item:not(".concat(n,"-last-item)")]:{marginBottom:e.calc(e.lineWidth).mul(-1).equal()},"&-item":{"&:hover,&:focus,&:active":{zIndex:2},"&[disabled]":{zIndex:0}}}),(t=e.componentCls,{["&-item:not(".concat(n,"-first-item):not(").concat(n,"-last-item)")]:{borderRadius:0},["&-item".concat(n,"-first-item:not(").concat(n,"-last-item)")]:{["&, &".concat(t,"-sm, &").concat(t,"-lg")]:{borderEndEndRadius:0,borderEndStartRadius:0}},["&-item".concat(n,"-last-item:not(").concat(n,"-first-item)")]:{["&, &".concat(t,"-sm, &").concat(t,"-lg")]:{borderStartStartRadius:0,borderStartEndRadius:0}}}))}}(t),et(t)]},N),er=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let eo=(0,r.forwardRef)((e,t)=>{var n,o;let{loading:p=!1,prefixCls:m,type:b="default",danger:y,shape:w="default",size:x,styles:E,disabled:C,className:Z,rootClassName:O,children:k,icon:M,ghost:j=!1,block:I=!1,htmlType:R="button",classNames:N,style:P={}}=e,F=er(e,["loading","prefixCls","type","danger","shape","size","styles","disabled","className","rootClassName","children","icon","ghost","block","htmlType","classNames","style"]),{getPrefixCls:T,autoInsertSpaceInButton:A,direction:L,button:z}=(0,r.useContext)(s.E_),_=T("btn",m),[H,B,D]=J(_),W=(0,r.useContext)(u.Z),V=null!=C?C:W,q=(0,r.useContext)(g),G=(0,r.useMemo)(()=>(function(e){if("object"==typeof e&&e){let t=null==e?void 0:e.delay;return{loading:(t=Number.isNaN(t)||"number"!=typeof t?0:t)<=0,delay:t}}return{loading:!!e,delay:0}})(p),[p]),[X,U]=(0,r.useState)(G.loading),[$,K]=(0,r.useState)(!1),Y=(0,r.createRef)(),Q=(0,c.sQ)(t,Y),ee=1===r.Children.count(k)&&!M&&!(0,h.Te)(b);(0,r.useEffect)(()=>{let e=null;return G.delay>0?e=setTimeout(()=>{e=null,U(!0)},G.delay):U(G.loading),function(){e&&(clearTimeout(e),e=null)}},[G]),(0,r.useEffect)(()=>{if(!Q||!Q.current||!1===A)return;let e=Q.current.textContent;ee&&(0,h.aG)(e)?$||K(!0):$&&K(!1)},[Q]);let et=t=>{let{onClick:n}=e;if(X||V){t.preventDefault();return}null==n||n(t)},eo=!1!==A,{compactSize:ea,compactItemClassnames:ei}=(0,f.ri)(_,L),ec=(0,d.Z)(e=>{var t,n;return null!==(n=null!==(t=null!=x?x:ea)&&void 0!==t?t:q)&&void 0!==n?n:e}),el=ec&&({large:"lg",small:"sm",middle:void 0})[ec]||"",es=X?"loading":M,eu=(0,i.Z)(F,["navigate"]),ed=a()(_,B,D,{["".concat(_,"-").concat(w)]:"default"!==w&&w,["".concat(_,"-").concat(b)]:b,["".concat(_,"-").concat(el)]:el,["".concat(_,"-icon-only")]:!k&&0!==k&&!!es,["".concat(_,"-background-ghost")]:j&&!(0,h.Te)(b),["".concat(_,"-loading")]:X,["".concat(_,"-two-chinese-chars")]:$&&eo&&!X,["".concat(_,"-block")]:I,["".concat(_,"-dangerous")]:!!y,["".concat(_,"-rtl")]:"rtl"===L},ei,Z,O,null==z?void 0:z.className),ef=Object.assign(Object.assign({},null==z?void 0:z.style),P),ep=a()(null==N?void 0:N.icon,null===(n=null==z?void 0:z.classNames)||void 0===n?void 0:n.icon),em=Object.assign(Object.assign({},(null==E?void 0:E.icon)||{}),(null===(o=null==z?void 0:z.styles)||void 0===o?void 0:o.icon)||{}),eg=M&&!X?r.createElement(v,{prefixCls:_,className:ep,style:em},M):r.createElement(S,{existIcon:!!M,prefixCls:_,loading:!!X}),eh=k||0===k?(0,h.hU)(k,ee&&eo):null;if(void 0!==eu.href)return H(r.createElement("a",Object.assign({},eu,{className:a()(ed,{["".concat(_,"-disabled")]:V}),href:V?void 0:eu.href,style:ef,onClick:et,ref:Q,tabIndex:V?-1:0}),eg,eh));let ev=r.createElement("button",Object.assign({},F,{type:R,className:ed,style:ef,onClick:et,disabled:V,ref:Q}),eg,eh,!!ei&&r.createElement(en,{key:"compact",prefixCls:_}));return(0,h.Te)(b)||(ev=r.createElement(l.Z,{component:"Button",disabled:!!X},ev)),H(ev)});eo.Group=e=>{let{getPrefixCls:t,direction:n}=r.useContext(s.E_),{prefixCls:o,size:i,className:c}=e,l=m(e,["prefixCls","size","className"]),u=t("btn-group",o),[,,d]=(0,p.ZP)(),f="";switch(i){case"large":f="lg";break;case"small":f="sm"}let h=a()(u,{["".concat(u,"-").concat(f)]:f,["".concat(u,"-rtl")]:"rtl"===n},c,d);return r.createElement(g.Provider,{value:i},r.createElement("div",Object.assign({},l,{className:h})))},eo.__ANT_BUTTON=!0;var ea=eo},86586:function(e,t,n){"use strict";n.d(t,{n:function(){return a}});var r=n(2265);let o=r.createContext(!1),a=e=>{let{children:t,disabled:n}=e,a=r.useContext(o);return r.createElement(o.Provider,{value:null!=n?n:a},t)};t.Z=o},59189:function(e,t,n){"use strict";n.d(t,{q:function(){return a}});var r=n(2265);let o=r.createContext(void 0),a=e=>{let{children:t,size:n}=e,a=r.useContext(o);return r.createElement(o.Provider,{value:n||a},t)};t.Z=o},71744:function(e,t,n){"use strict";n.d(t,{E_:function(){return a},oR:function(){return o}});var r=n(2265);let o="anticon",a=r.createContext({getPrefixCls:(e,t)=>t||(e?"ant-".concat(e):"ant"),iconPrefixCls:o}),{Consumer:i}=a},91086:function(e,t,n){"use strict";var r=n(2265),o=n(71744),a=n(85180);t.Z=e=>{let{componentName:t}=e,{getPrefixCls:n}=(0,r.useContext)(o.E_),i=n("empty");switch(t){case"Table":case"List":return r.createElement(a.Z,{image:a.Z.PRESENTED_IMAGE_SIMPLE});case"Select":case"TreeSelect":case"Cascader":case"Transfer":case"Mentions":return r.createElement(a.Z,{image:a.Z.PRESENTED_IMAGE_SIMPLE,className:"".concat(i,"-small")});default:return r.createElement(a.Z,null)}}},64024:function(e,t,n){"use strict";var r=n(29961);t.Z=e=>{let[,,,,t]=(0,r.ZP)();return t?"".concat(e,"-css-var"):""}},33759:function(e,t,n){"use strict";var r=n(2265),o=n(59189);t.Z=e=>{let t=r.useContext(o.Z);return r.useMemo(()=>e?"string"==typeof e?null!=e?e:t:e instanceof Function?e(t):t:t,[e,t])}},13959:function(e,t,n){"use strict";let r,o,a,i;n.d(t,{ZP:function(){return V},w6:function(){return B}});var c=n(2265),l=n.t(c,2),s=n(352),u=n(20902),d=n(6397),f=n(23789),p=n(13613),m=n(77360),g=n(92246),h=n(91325),v=e=>{let{locale:t={},children:n,_ANT_MARK__:r}=e;c.useEffect(()=>(0,g.f)(t&&t.Modal),[t]);let o=c.useMemo(()=>Object.assign(Object.assign({},t),{exist:!0}),[t]);return c.createElement(h.Z.Provider,{value:o},n)},b=n(13823),y=n(37516),w=n(70774),x=n(71744),E=n(31373),S=n(36360),C=n(94981),Z=n(21717);let O="-ant-".concat(Date.now(),"-").concat(Math.random());var k=n(86586),M=n(59189),j=n(16671);let{useId:I}=Object.assign({},l);var R=void 0===I?()=>"":I,N=n(47970),P=n(29961);function F(e){let{children:t}=e,[,n]=(0,P.ZP)(),{motion:r}=n,o=c.useRef(!1);return(o.current=o.current||!1===r,o.current)?c.createElement(N.zt,{motion:r},t):t}var T=()=>null,A=n(36198),L=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let z=["getTargetContainer","getPopupContainer","renderEmpty","pageHeader","input","pagination","form","select","button"];function _(){return r||"ant"}function H(){return o||x.oR}let B=()=>({getPrefixCls:(e,t)=>t||(e?"".concat(_(),"-").concat(e):_()),getIconPrefixCls:H,getRootPrefixCls:()=>r||_(),getTheme:()=>a,holderRender:i}),D=e=>{let{children:t,csp:n,autoInsertSpaceInButton:r,alert:o,anchor:a,form:i,locale:l,componentSize:g,direction:h,space:E,virtual:S,dropdownMatchSelectWidth:C,popupMatchSelectWidth:Z,popupOverflow:O,legacyLocale:I,parentContext:N,iconPrefixCls:P,theme:_,componentDisabled:H,segmented:B,statistic:D,spin:W,calendar:V,carousel:q,cascader:G,collapse:X,typography:U,checkbox:$,descriptions:K,divider:Y,drawer:Q,skeleton:J,steps:ee,image:et,layout:en,list:er,mentions:eo,modal:ea,progress:ei,result:ec,slider:el,breadcrumb:es,menu:eu,pagination:ed,input:ef,empty:ep,badge:em,radio:eg,rate:eh,switch:ev,transfer:eb,avatar:ey,message:ew,tag:ex,table:eE,card:eS,tabs:eC,timeline:eZ,timePicker:eO,upload:ek,notification:eM,tree:ej,colorPicker:eI,datePicker:eR,rangePicker:eN,flex:eP,wave:eF,dropdown:eT,warning:eA}=e,eL=c.useCallback((t,n)=>{let{prefixCls:r}=e;if(n)return n;let o=r||N.getPrefixCls("");return t?"".concat(o,"-").concat(t):o},[N.getPrefixCls,e.prefixCls]),ez=P||N.iconPrefixCls||x.oR,e_=n||N.csp;(0,A.Z)(ez,e_);let eH=function(e,t){(0,p.ln)("ConfigProvider");let n=e||{},r=!1!==n.inherit&&t?t:y.u_,o=R();return(0,d.Z)(()=>{var a,i;if(!e)return t;let c=Object.assign({},r.components);Object.keys(e.components||{}).forEach(t=>{c[t]=Object.assign(Object.assign({},c[t]),e.components[t])});let l="css-var-".concat(o.replace(/:/g,"")),s=(null!==(a=n.cssVar)&&void 0!==a?a:r.cssVar)&&Object.assign(Object.assign(Object.assign({prefix:"ant"},"object"==typeof r.cssVar?r.cssVar:{}),"object"==typeof n.cssVar?n.cssVar:{}),{key:"object"==typeof n.cssVar&&(null===(i=n.cssVar)||void 0===i?void 0:i.key)||l});return Object.assign(Object.assign(Object.assign({},r),n),{token:Object.assign(Object.assign({},r.token),n.token),components:c,cssVar:s})},[n,r],(e,t)=>e.some((e,n)=>{let r=t[n];return!(0,j.Z)(e,r,!0)}))}(_,N.theme),eB={csp:e_,autoInsertSpaceInButton:r,alert:o,anchor:a,locale:l||I,direction:h,space:E,virtual:S,popupMatchSelectWidth:null!=Z?Z:C,popupOverflow:O,getPrefixCls:eL,iconPrefixCls:ez,theme:eH,segmented:B,statistic:D,spin:W,calendar:V,carousel:q,cascader:G,collapse:X,typography:U,checkbox:$,descriptions:K,divider:Y,drawer:Q,skeleton:J,steps:ee,image:et,input:ef,layout:en,list:er,mentions:eo,modal:ea,progress:ei,result:ec,slider:el,breadcrumb:es,menu:eu,pagination:ed,empty:ep,badge:em,radio:eg,rate:eh,switch:ev,transfer:eb,avatar:ey,message:ew,tag:ex,table:eE,card:eS,tabs:eC,timeline:eZ,timePicker:eO,upload:ek,notification:eM,tree:ej,colorPicker:eI,datePicker:eR,rangePicker:eN,flex:eP,wave:eF,dropdown:eT,warning:eA},eD=Object.assign({},N);Object.keys(eB).forEach(e=>{void 0!==eB[e]&&(eD[e]=eB[e])}),z.forEach(t=>{let n=e[t];n&&(eD[t]=n)});let eW=(0,d.Z)(()=>eD,eD,(e,t)=>{let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length||n.some(n=>e[n]!==t[n])}),eV=c.useMemo(()=>({prefixCls:ez,csp:e_}),[ez,e_]),eq=c.createElement(c.Fragment,null,c.createElement(T,{dropdownMatchSelectWidth:C}),t),eG=c.useMemo(()=>{var e,t,n,r;return(0,f.T)((null===(e=b.Z.Form)||void 0===e?void 0:e.defaultValidateMessages)||{},(null===(n=null===(t=eW.locale)||void 0===t?void 0:t.Form)||void 0===n?void 0:n.defaultValidateMessages)||{},(null===(r=eW.form)||void 0===r?void 0:r.validateMessages)||{},(null==i?void 0:i.validateMessages)||{})},[eW,null==i?void 0:i.validateMessages]);Object.keys(eG).length>0&&(eq=c.createElement(m.Z.Provider,{value:eG},eq)),l&&(eq=c.createElement(v,{locale:l,_ANT_MARK__:"internalMark"},eq)),(ez||e_)&&(eq=c.createElement(u.Z.Provider,{value:eV},eq)),g&&(eq=c.createElement(M.q,{size:g},eq)),eq=c.createElement(F,null,eq);let eX=c.useMemo(()=>{let e=eH||{},{algorithm:t,token:n,components:r,cssVar:o}=e,a=L(e,["algorithm","token","components","cssVar"]),i=t&&(!Array.isArray(t)||t.length>0)?(0,s.jG)(t):y.uH,c={};Object.entries(r||{}).forEach(e=>{let[t,n]=e,r=Object.assign({},n);"algorithm"in r&&(!0===r.algorithm?r.theme=i:(Array.isArray(r.algorithm)||"function"==typeof r.algorithm)&&(r.theme=(0,s.jG)(r.algorithm)),delete r.algorithm),c[t]=r});let l=Object.assign(Object.assign({},w.Z),n);return Object.assign(Object.assign({},a),{theme:i,token:l,components:c,override:Object.assign({override:l},c),cssVar:o})},[eH]);return _&&(eq=c.createElement(y.Mj.Provider,{value:eX},eq)),eW.warning&&(eq=c.createElement(p.G8.Provider,{value:eW.warning},eq)),void 0!==H&&(eq=c.createElement(k.n,{disabled:H},eq)),c.createElement(x.E_.Provider,{value:eW},eq)},W=e=>{let t=c.useContext(x.E_),n=c.useContext(h.Z);return c.createElement(D,Object.assign({parentContext:t,legacyLocale:n},e))};W.ConfigContext=x.E_,W.SizeContext=M.Z,W.config=e=>{let{prefixCls:t,iconPrefixCls:n,theme:c,holderRender:l}=e;void 0!==t&&(r=t),void 0!==n&&(o=n),"holderRender"in e&&(i=l),c&&(Object.keys(c).some(e=>e.endsWith("Color"))?function(e,t){let n=function(e,t){let n={},r=(e,t)=>{let n=e.clone();return(n=(null==t?void 0:t(n))||n).toRgbString()},o=(e,t)=>{let o=new S.C(e),a=(0,E.R_)(o.toRgbString());n["".concat(t,"-color")]=r(o),n["".concat(t,"-color-disabled")]=a[1],n["".concat(t,"-color-hover")]=a[4],n["".concat(t,"-color-active")]=a[6],n["".concat(t,"-color-outline")]=o.clone().setAlpha(.2).toRgbString(),n["".concat(t,"-color-deprecated-bg")]=a[0],n["".concat(t,"-color-deprecated-border")]=a[2]};if(t.primaryColor){o(t.primaryColor,"primary");let e=new S.C(t.primaryColor),a=(0,E.R_)(e.toRgbString());a.forEach((e,t)=>{n["primary-".concat(t+1)]=e}),n["primary-color-deprecated-l-35"]=r(e,e=>e.lighten(35)),n["primary-color-deprecated-l-20"]=r(e,e=>e.lighten(20)),n["primary-color-deprecated-t-20"]=r(e,e=>e.tint(20)),n["primary-color-deprecated-t-50"]=r(e,e=>e.tint(50)),n["primary-color-deprecated-f-12"]=r(e,e=>e.setAlpha(.12*e.getAlpha()));let i=new S.C(a[0]);n["primary-color-active-deprecated-f-30"]=r(i,e=>e.setAlpha(.3*e.getAlpha())),n["primary-color-active-deprecated-d-02"]=r(i,e=>e.darken(2))}t.successColor&&o(t.successColor,"success"),t.warningColor&&o(t.warningColor,"warning"),t.errorColor&&o(t.errorColor,"error"),t.infoColor&&o(t.infoColor,"info");let a=Object.keys(n).map(t=>"--".concat(e,"-").concat(t,": ").concat(n[t],";"));return"\n :root {\n ".concat(a.join("\n"),"\n }\n ").trim()}(e,t);(0,C.Z)()&&(0,Z.hq)(n,"".concat(O,"-dynamic-theme"))}(_(),c):a=c)},W.useConfig=function(){return{componentDisabled:(0,c.useContext)(k.Z),componentSize:(0,c.useContext)(M.Z)}},Object.defineProperty(W,"SizeContext",{get:()=>M.Z});var V=W},85180:function(e,t,n){"use strict";n.d(t,{Z:function(){return b}});var r=n(36760),o=n.n(r),a=n(2265),i=n(71744),c=n(55274),l=n(36360),s=n(29961),u=n(80669),d=n(3104);let f=e=>{let{componentCls:t,margin:n,marginXS:r,marginXL:o,fontSize:a,lineHeight:i}=e;return{[t]:{marginInline:r,fontSize:a,lineHeight:i,textAlign:"center",["".concat(t,"-image")]:{height:e.emptyImgHeight,marginBottom:r,opacity:e.opacityImage,img:{height:"100%"},svg:{maxWidth:"100%",height:"100%",margin:"auto"}},["".concat(t,"-description")]:{color:e.colorText},["".concat(t,"-footer")]:{marginTop:n},"&-normal":{marginBlock:o,color:e.colorTextDisabled,["".concat(t,"-description")]:{color:e.colorTextDisabled},["".concat(t,"-image")]:{height:e.emptyImgHeightMD}},"&-small":{marginBlock:r,color:e.colorTextDisabled,["".concat(t,"-image")]:{height:e.emptyImgHeightSM}}}}};var p=(0,u.I$)("Empty",e=>{let{componentCls:t,controlHeightLG:n,calc:r}=e;return[f((0,d.TS)(e,{emptyImgCls:"".concat(t,"-img"),emptyImgHeight:r(n).mul(2.5).equal(),emptyImgHeightMD:n,emptyImgHeightSM:r(n).mul(.875).equal()}))]}),m=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let g=a.createElement(()=>{let[,e]=(0,s.ZP)(),t=new l.C(e.colorBgBase).toHsl().l<.5?{opacity:.65}:{};return a.createElement("svg",{style:t,width:"184",height:"152",viewBox:"0 0 184 152",xmlns:"http://www.w3.org/2000/svg"},a.createElement("g",{fill:"none",fillRule:"evenodd"},a.createElement("g",{transform:"translate(24 31.67)"},a.createElement("ellipse",{fillOpacity:".8",fill:"#F5F5F7",cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"}),a.createElement("path",{d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z",fill:"#AEB8C2"}),a.createElement("path",{d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",fill:"url(#linearGradient-1)",transform:"translate(13.56)"}),a.createElement("path",{d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z",fill:"#F5F5F7"}),a.createElement("path",{d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z",fill:"#DCE0E6"})),a.createElement("path",{d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z",fill:"#DCE0E6"}),a.createElement("g",{transform:"translate(149.65 15.383)",fill:"#FFF"},a.createElement("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"}),a.createElement("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"}))))},null),h=a.createElement(()=>{let[,e]=(0,s.ZP)(),{colorFill:t,colorFillTertiary:n,colorFillQuaternary:r,colorBgContainer:o}=e,{borderColor:i,shadowColor:c,contentColor:u}=(0,a.useMemo)(()=>({borderColor:new l.C(t).onBackground(o).toHexShortString(),shadowColor:new l.C(n).onBackground(o).toHexShortString(),contentColor:new l.C(r).onBackground(o).toHexShortString()}),[t,n,r,o]);return a.createElement("svg",{width:"64",height:"41",viewBox:"0 0 64 41",xmlns:"http://www.w3.org/2000/svg"},a.createElement("g",{transform:"translate(0 1)",fill:"none",fillRule:"evenodd"},a.createElement("ellipse",{fill:c,cx:"32",cy:"33",rx:"32",ry:"7"}),a.createElement("g",{fillRule:"nonzero",stroke:i},a.createElement("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"}),a.createElement("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",fill:u}))))},null),v=e=>{var{className:t,rootClassName:n,prefixCls:r,image:l=g,description:s,children:u,imageStyle:d,style:f}=e,v=m(e,["className","rootClassName","prefixCls","image","description","children","imageStyle","style"]);let{getPrefixCls:b,direction:y,empty:w}=a.useContext(i.E_),x=b("empty",r),[E,S,C]=p(x),[Z]=(0,c.Z)("Empty"),O=void 0!==s?s:null==Z?void 0:Z.description,k=null;return k="string"==typeof l?a.createElement("img",{alt:"string"==typeof O?O:"empty",src:l}):l,E(a.createElement("div",Object.assign({className:o()(S,C,x,null==w?void 0:w.className,{["".concat(x,"-normal")]:l===h,["".concat(x,"-rtl")]:"rtl"===y},t,n),style:Object.assign(Object.assign({},null==w?void 0:w.style),f)},v),a.createElement("div",{className:"".concat(x,"-image"),style:d},k),O&&a.createElement("div",{className:"".concat(x,"-description")},O),u&&a.createElement("div",{className:"".concat(x,"-footer")},u)))};v.PRESENTED_IMAGE_DEFAULT=g,v.PRESENTED_IMAGE_SIMPLE=h;var b=v},14605:function(e,t,n){"use strict";var r=n(83145),o=n(36760),a=n.n(o),i=n(47970),c=n(2265),l=n(68710),s=n(39109),u=n(4064),d=n(47713),f=n(64024);let p=[];function m(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return{key:"string"==typeof e?e:"".concat(t,"-").concat(r),error:e,errorStatus:n}}t.Z=e=>{let{help:t,helpStatus:n,errors:o=p,warnings:g=p,className:h,fieldId:v,onVisibleChanged:b}=e,{prefixCls:y}=c.useContext(s.Rk),w="".concat(y,"-item-explain"),x=(0,f.Z)(y),[E,S,C]=(0,d.ZP)(y,x),Z=(0,c.useMemo)(()=>(0,l.Z)(y),[y]),O=(0,u.Z)(o),k=(0,u.Z)(g),M=c.useMemo(()=>null!=t?[m(t,"help",n)]:[].concat((0,r.Z)(O.map((e,t)=>m(e,"error","error",t))),(0,r.Z)(k.map((e,t)=>m(e,"warning","warning",t)))),[t,n,O,k]),j={};return v&&(j.id="".concat(v,"_help")),E(c.createElement(i.ZP,{motionDeadline:Z.motionDeadline,motionName:"".concat(y,"-show-help"),visible:!!M.length,onVisibleChanged:b},e=>{let{className:t,style:n}=e;return c.createElement("div",Object.assign({},j,{className:a()(w,t,C,x,h,S),style:n,role:"alert"}),c.createElement(i.V4,Object.assign({keys:M},(0,l.Z)(y),{motionName:"".concat(y,"-show-help-item"),component:!1}),e=>{let{key:t,error:n,errorStatus:r,className:o,style:i}=e;return c.createElement("div",{key:t,className:a()(o,{["".concat(w,"-").concat(r)]:r}),style:i},n)}))}))}},38994:function(e,t,n){"use strict";n.d(t,{Z:function(){return U}});var r=n(83145),o=n(2265),a=n(36760),i=n.n(a),c=n(64834),l=n(69819),s=n(28791),u=n(19722),d=n(13613),f=n(71744),p=n(64024),m=n(39109),g=n(45287);let h=()=>{let{status:e,errors:t=[],warnings:n=[]}=(0,o.useContext)(m.aM);return{status:e,errors:t,warnings:n}};h.Context=m.aM;var v=n(53346),b=n(47713),y=n(13861),w=n(2857),x=n(27380),E=n(18694),S=n(10295),C=n(54998),Z=n(14605),O=n(80669);let k=e=>{let{formItemCls:t}=e;return{"@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none)":{["".concat(t,"-control")]:{display:"flex"}}}};var M=(0,O.bk)(["Form","item-item"],(e,t)=>{let{rootPrefixCls:n}=t;return[k((0,b.B4)(e,n))]}),j=e=>{let{prefixCls:t,status:n,wrapperCol:r,children:a,errors:c,warnings:l,_internalItemRender:s,extra:u,help:d,fieldId:f,marginBottom:p,onErrorVisibleChanged:g}=e,h="".concat(t,"-item"),v=o.useContext(m.q3),b=r||v.wrapperCol||{},y=i()("".concat(h,"-control"),b.className),w=o.useMemo(()=>Object.assign({},v),[v]);delete w.labelCol,delete w.wrapperCol;let x=o.createElement("div",{className:"".concat(h,"-control-input")},o.createElement("div",{className:"".concat(h,"-control-input-content")},a)),E=o.useMemo(()=>({prefixCls:t,status:n}),[t,n]),S=null!==p||c.length||l.length?o.createElement("div",{style:{display:"flex",flexWrap:"nowrap"}},o.createElement(m.Rk.Provider,{value:E},o.createElement(Z.Z,{fieldId:f,errors:c,warnings:l,help:d,helpStatus:n,className:"".concat(h,"-explain-connected"),onVisibleChanged:g})),!!p&&o.createElement("div",{style:{width:0,height:p}})):null,O={};f&&(O.id="".concat(f,"_extra"));let k=u?o.createElement("div",Object.assign({},O,{className:"".concat(h,"-extra")}),u):null,j=s&&"pro_table_render"===s.mark&&s.render?s.render(e,{input:x,errorList:S,extra:k}):o.createElement(o.Fragment,null,x,S,k);return o.createElement(m.q3.Provider,{value:w},o.createElement(C.Z,Object.assign({},b,{className:y}),j),o.createElement(M,{prefixCls:t}))},I=n(67187),R=n(13823),N=n(55274),P=n(89970),F=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n},T=e=>{var t;let{prefixCls:n,label:r,htmlFor:a,labelCol:c,labelAlign:l,colon:s,required:u,requiredMark:d,tooltip:f}=e,[p]=(0,N.Z)("Form"),{vertical:g,labelAlign:h,labelCol:v,labelWrap:b,colon:y}=o.useContext(m.q3);if(!r)return null;let w=c||v||{},x="".concat(n,"-item-label"),E=i()(x,"left"===(l||h)&&"".concat(x,"-left"),w.className,{["".concat(x,"-wrap")]:!!b}),S=r,Z=!0===s||!1!==y&&!1!==s;Z&&!g&&"string"==typeof r&&""!==r.trim()&&(S=r.replace(/[:|:]\s*$/,""));let O=f?"object"!=typeof f||o.isValidElement(f)?{title:f}:f:null;if(O){let{icon:e=o.createElement(I.Z,null)}=O,t=F(O,["icon"]),r=o.createElement(P.Z,Object.assign({},t),o.cloneElement(e,{className:"".concat(n,"-item-tooltip"),title:"",onClick:e=>{e.preventDefault()},tabIndex:null}));S=o.createElement(o.Fragment,null,S,r)}let k="optional"===d,M="function"==typeof d;M?S=d(S,{required:!!u}):k&&!u&&(S=o.createElement(o.Fragment,null,S,o.createElement("span",{className:"".concat(n,"-item-optional"),title:""},(null==p?void 0:p.optional)||(null===(t=R.Z.Form)||void 0===t?void 0:t.optional))));let j=i()({["".concat(n,"-item-required")]:u,["".concat(n,"-item-required-mark-optional")]:k||M,["".concat(n,"-item-no-colon")]:!Z});return o.createElement(C.Z,Object.assign({},w,{className:E}),o.createElement("label",{htmlFor:a,className:j,title:"string"==typeof r?r:""},S))},A=n(4064),L=n(8900),z=n(39725),_=n(54537),H=n(61935);let B={success:L.Z,warning:_.Z,error:z.Z,validating:H.Z};function D(e){let{children:t,errors:n,warnings:r,hasFeedback:a,validateStatus:c,prefixCls:l,meta:s,noStyle:u}=e,d="".concat(l,"-item"),{feedbackIcons:f}=o.useContext(m.q3),p=(0,y.lR)(n,r,s,null,!!a,c),{isFormItemInput:g,status:h,hasFeedback:v,feedbackIcon:b}=o.useContext(m.aM),w=o.useMemo(()=>{var e;let t;if(a){let c=!0!==a&&a.icons||f,l=p&&(null===(e=null==c?void 0:c({status:p,errors:n,warnings:r}))||void 0===e?void 0:e[p]),s=p&&B[p];t=!1!==l&&s?o.createElement("span",{className:i()("".concat(d,"-feedback-icon"),"".concat(d,"-feedback-icon-").concat(p))},l||o.createElement(s,null)):null}let c={status:p||"",errors:n,warnings:r,hasFeedback:!!a,feedbackIcon:t,isFormItemInput:!0};return u&&(c.status=(null!=p?p:h)||"",c.isFormItemInput=g,c.hasFeedback=!!(null!=a?a:v),c.feedbackIcon=void 0!==a?c.feedbackIcon:b),c},[p,a,u,g,h]);return o.createElement(m.aM.Provider,{value:w},t)}var W=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};function V(e){let{prefixCls:t,className:n,rootClassName:r,style:a,help:c,errors:l,warnings:s,validateStatus:u,meta:d,hasFeedback:f,hidden:p,children:g,fieldId:h,required:v,isRequired:b,onSubItemMetaChange:C}=e,Z=W(e,["prefixCls","className","rootClassName","style","help","errors","warnings","validateStatus","meta","hasFeedback","hidden","children","fieldId","required","isRequired","onSubItemMetaChange"]),O="".concat(t,"-item"),{requiredMark:k}=o.useContext(m.q3),M=o.useRef(null),I=(0,A.Z)(l),R=(0,A.Z)(s),N=null!=c,P=!!(N||l.length||s.length),F=!!M.current&&(0,w.Z)(M.current),[L,z]=o.useState(null);(0,x.Z)(()=>{P&&M.current&&z(parseInt(getComputedStyle(M.current).marginBottom,10))},[P,F]);let _=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=e?I:d.errors,n=e?R:d.warnings;return(0,y.lR)(t,n,d,"",!!f,u)}(),H=i()(O,n,r,{["".concat(O,"-with-help")]:N||I.length||R.length,["".concat(O,"-has-feedback")]:_&&f,["".concat(O,"-has-success")]:"success"===_,["".concat(O,"-has-warning")]:"warning"===_,["".concat(O,"-has-error")]:"error"===_,["".concat(O,"-is-validating")]:"validating"===_,["".concat(O,"-hidden")]:p});return o.createElement("div",{className:H,style:a,ref:M},o.createElement(S.Z,Object.assign({className:"".concat(O,"-row")},(0,E.Z)(Z,["_internalItemRender","colon","dependencies","extra","fieldKey","getValueFromEvent","getValueProps","htmlFor","id","initialValue","isListField","label","labelAlign","labelCol","labelWrap","messageVariables","name","normalize","noStyle","preserve","requiredMark","rules","shouldUpdate","trigger","tooltip","validateFirst","validateTrigger","valuePropName","wrapperCol","validateDebounce"])),o.createElement(T,Object.assign({htmlFor:h},e,{requiredMark:k,required:null!=v?v:b,prefixCls:t})),o.createElement(j,Object.assign({},e,d,{errors:I,warnings:R,prefixCls:t,status:_,help:c,marginBottom:L,onErrorVisibleChanged:e=>{e||z(null)}}),o.createElement(m.qI.Provider,{value:C},o.createElement(D,{prefixCls:t,meta:d,errors:d.errors,warnings:d.warnings,hasFeedback:f,validateStatus:_},g)))),!!L&&o.createElement("div",{className:"".concat(O,"-margin-offset"),style:{marginBottom:-L}}))}let q=o.memo(e=>{let{children:t}=e;return t},(e,t)=>(function(e,t){let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(n=>{let r=e[n],o=t[n];return r===o||"function"==typeof r||"function"==typeof o})})(e.control,t.control)&&e.update===t.update&&e.childProps.length===t.childProps.length&&e.childProps.every((e,n)=>e===t.childProps[n]));function G(){return{errors:[],warnings:[],touched:!1,validating:!1,name:[],validated:!1}}let X=function(e){let{name:t,noStyle:n,className:a,dependencies:h,prefixCls:w,shouldUpdate:x,rules:E,children:S,required:C,label:Z,messageVariables:O,trigger:k="onChange",validateTrigger:M,hidden:j,help:I}=e,{getPrefixCls:R}=o.useContext(f.E_),{name:N}=o.useContext(m.q3),P=function(e){if("function"==typeof e)return e;let t=(0,g.Z)(e);return t.length<=1?t[0]:t}(S),F="function"==typeof P,T=o.useContext(m.qI),{validateTrigger:A}=o.useContext(c.zb),L=void 0!==M?M:A,z=null!=t,_=R("form",w),H=(0,p.Z)(_),[B,W,X]=(0,b.ZP)(_,H);(0,d.ln)("Form.Item");let U=o.useContext(c.ZM),$=o.useRef(),[K,Y]=function(e){let[t,n]=o.useState(e),r=(0,o.useRef)(null),a=(0,o.useRef)([]),i=(0,o.useRef)(!1);return o.useEffect(()=>(i.current=!1,()=>{i.current=!0,v.Z.cancel(r.current),r.current=null}),[]),[t,function(e){i.current||(null===r.current&&(a.current=[],r.current=(0,v.Z)(()=>{r.current=null,n(e=>{let t=e;return a.current.forEach(e=>{t=e(t)}),t})})),a.current.push(e))}]}({}),[Q,J]=(0,l.Z)(()=>G()),ee=(e,t)=>{Y(n=>{let o=Object.assign({},n),a=[].concat((0,r.Z)(e.name.slice(0,-1)),(0,r.Z)(t)).join("__SPLIT__");return e.destroy?delete o[a]:o[a]=e,o})},[et,en]=o.useMemo(()=>{let e=(0,r.Z)(Q.errors),t=(0,r.Z)(Q.warnings);return Object.values(K).forEach(n=>{e.push.apply(e,(0,r.Z)(n.errors||[])),t.push.apply(t,(0,r.Z)(n.warnings||[]))}),[e,t]},[K,Q.errors,Q.warnings]),er=function(){let{itemRef:e}=o.useContext(m.q3),t=o.useRef({});return function(n,r){let o=r&&"object"==typeof r&&r.ref,a=n.join("_");return(t.current.name!==a||t.current.originRef!==o)&&(t.current.name=a,t.current.originRef=o,t.current.ref=(0,s.sQ)(e(n),o)),t.current.ref}}();function eo(t,r,c){return n&&!j?o.createElement(D,{prefixCls:_,hasFeedback:e.hasFeedback,validateStatus:e.validateStatus,meta:Q,errors:et,warnings:en,noStyle:!0},t):o.createElement(V,Object.assign({key:"row"},e,{className:i()(a,X,H,W),prefixCls:_,fieldId:r,isRequired:c,errors:et,warnings:en,meta:Q,onSubItemMetaChange:ee}),t)}if(!z&&!F&&!h)return B(eo(P));let ea={};return"string"==typeof Z?ea.label=Z:t&&(ea.label=String(t)),O&&(ea=Object.assign(Object.assign({},ea),O)),B(o.createElement(c.gN,Object.assign({},e,{messageVariables:ea,trigger:k,validateTrigger:L,onMetaChange:e=>{let t=null==U?void 0:U.getKey(e.name);if(J(e.destroy?G():e,!0),n&&!1!==I&&T){let n=e.name;if(e.destroy)n=$.current||n;else if(void 0!==t){let[e,o]=t;n=[e].concat((0,r.Z)(o)),$.current=n}T(e,n)}}}),(n,a,i)=>{let c=(0,y.qo)(t).length&&a?a.name:[],l=(0,y.dD)(c,N),d=void 0!==C?C:!!(E&&E.some(e=>{if(e&&"object"==typeof e&&e.required&&!e.warningOnly)return!0;if("function"==typeof e){let t=e(i);return t&&t.required&&!t.warningOnly}return!1})),f=Object.assign({},n),p=null;if(Array.isArray(P)&&z)p=P;else if(F&&(!(x||h)||z));else if(!h||F||z){if((0,u.l$)(P)){let t=Object.assign(Object.assign({},P.props),f);if(t.id||(t.id=l),I||et.length>0||en.length>0||e.extra){let n=[];(I||et.length>0)&&n.push("".concat(l,"_help")),e.extra&&n.push("".concat(l,"_extra")),t["aria-describedby"]=n.join(" ")}et.length>0&&(t["aria-invalid"]="true"),d&&(t["aria-required"]="true"),(0,s.Yr)(P)&&(t.ref=er(c,P)),new Set([].concat((0,r.Z)((0,y.qo)(k)),(0,r.Z)((0,y.qo)(L)))).forEach(e=>{t[e]=function(){for(var t,n,r,o=arguments.length,a=Array(o),i=0;i{}}),c=r.createContext(null),l=e=>{let t=(0,a.Z)(e,["prefixCls"]);return r.createElement(o.RV,Object.assign({},t))},s=r.createContext({prefixCls:""}),u=r.createContext({}),d=e=>{let{children:t,status:n,override:o}=e,a=(0,r.useContext)(u),i=(0,r.useMemo)(()=>{let e=Object.assign({},a);return o&&delete e.isFormItemInput,n&&(delete e.status,delete e.hasFeedback,delete e.feedbackIcon),e},[n,o,a]);return r.createElement(u.Provider,{value:i},t)},f=(0,r.createContext)(void 0)},4064:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(2265);function o(e){let[t,n]=r.useState(e);return r.useEffect(()=>{let t=setTimeout(()=>{n(e)},e.length?0:10);return()=>{clearTimeout(t)}},[e]),t}},56250:function(e,t,n){"use strict";var r=n(2265),o=n(39109);let a=["outlined","borderless","filled"];t.Z=function(e){let t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=(0,r.useContext)(o.pg);t=void 0!==e?e:!1===n?"borderless":null!=i?i:"outlined";let c=a.includes(t);return[t,c]}},13634:function(e,t,n){"use strict";n.d(t,{Z:function(){return I}});var r=n(14605),o=n(2265),a=n(36760),i=n.n(a),c=n(64834),l=n(71744),s=n(86586),u=n(64024),d=n(33759),f=n(59189),p=n(39109);let m=e=>"object"==typeof e&&null!=e&&1===e.nodeType,g=(e,t)=>(!t||"hidden"!==e)&&"visible"!==e&&"clip"!==e,h=(e,t)=>{if(e.clientHeight{let t=(e=>{if(!e.ownerDocument||!e.ownerDocument.defaultView)return null;try{return e.ownerDocument.defaultView.frameElement}catch(e){return null}})(e);return!!t&&(t.clientHeightat||a>e&&i=t&&c>=n?a-e-r:i>t&&cn?i-t+o:0,b=e=>{let t=e.parentElement;return null==t?e.getRootNode().host||null:t},y=(e,t)=>{var n,r,o,a;if("undefined"==typeof document)return[];let{scrollMode:i,block:c,inline:l,boundary:s,skipOverflowHiddenElements:u}=t,d="function"==typeof s?s:e=>e!==s;if(!m(e))throw TypeError("Invalid target");let f=document.scrollingElement||document.documentElement,p=[],g=e;for(;m(g)&&d(g);){if((g=b(g))===f){p.push(g);break}null!=g&&g===document.body&&h(g)&&!h(document.documentElement)||null!=g&&h(g,u)&&p.push(g)}let y=null!=(r=null==(n=window.visualViewport)?void 0:n.width)?r:innerWidth,w=null!=(a=null==(o=window.visualViewport)?void 0:o.height)?a:innerHeight,{scrollX:x,scrollY:E}=window,{height:S,width:C,top:Z,right:O,bottom:k,left:M}=e.getBoundingClientRect(),{top:j,right:I,bottom:R,left:N}=(e=>{let t=window.getComputedStyle(e);return{top:parseFloat(t.scrollMarginTop)||0,right:parseFloat(t.scrollMarginRight)||0,bottom:parseFloat(t.scrollMarginBottom)||0,left:parseFloat(t.scrollMarginLeft)||0}})(e),P="start"===c||"nearest"===c?Z-j:"end"===c?k+R:Z+S/2-j+R,F="center"===l?M+C/2-N+I:"end"===l?O+I:M-N,T=[];for(let e=0;e=0&&M>=0&&k<=w&&O<=y&&Z>=o&&k<=s&&M>=u&&O<=a)break;let d=getComputedStyle(t),m=parseInt(d.borderLeftWidth,10),g=parseInt(d.borderTopWidth,10),h=parseInt(d.borderRightWidth,10),b=parseInt(d.borderBottomWidth,10),j=0,I=0,R="offsetWidth"in t?t.offsetWidth-t.clientWidth-m-h:0,N="offsetHeight"in t?t.offsetHeight-t.clientHeight-g-b:0,A="offsetWidth"in t?0===t.offsetWidth?0:r/t.offsetWidth:0,L="offsetHeight"in t?0===t.offsetHeight?0:n/t.offsetHeight:0;if(f===t)j="start"===c?P:"end"===c?P-w:"nearest"===c?v(E,E+w,w,g,b,E+P,E+P+S,S):P-w/2,I="start"===l?F:"center"===l?F-y/2:"end"===l?F-y:v(x,x+y,y,m,h,x+F,x+F+C,C),j=Math.max(0,j+E),I=Math.max(0,I+x);else{j="start"===c?P-o-g:"end"===c?P-s+b+N:"nearest"===c?v(o,s,n,g,b+N,P,P+S,S):P-(o+n/2)+N/2,I="start"===l?F-u-m:"center"===l?F-(u+r/2)+R/2:"end"===l?F-a+h+R:v(u,a,r,m,h+R,F,F+C,C);let{scrollLeft:e,scrollTop:i}=t;j=0===L?0:Math.max(0,Math.min(i+j/L,t.scrollHeight-n/L+N)),I=0===A?0:Math.max(0,Math.min(e+I/A,t.scrollWidth-r/A+R)),P+=i-j,F+=e-I}T.push({el:t,top:j,left:I})}return T},w=e=>!1===e?{block:"end",inline:"nearest"}:e===Object(e)&&0!==Object.keys(e).length?e:{block:"start",inline:"nearest"};var x=n(13861);function E(e){return(0,x.qo)(e).join("_")}function S(e){let[t]=(0,c.cI)(),n=o.useRef({}),r=o.useMemo(()=>null!=e?e:Object.assign(Object.assign({},t),{__INTERNAL__:{itemRef:e=>t=>{let r=E(e);t?n.current[r]=t:delete n.current[r]}},scrollToField:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(0,x.qo)(e),o=(0,x.dD)(n,r.__INTERNAL__.name),a=o?document.getElementById(o):null;a&&function(e,t){if(!e.isConnected||!(e=>{let t=e;for(;t&&t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof ShadowRoot?t.parentNode.host:t.parentNode}return!1})(e))return;let n=(e=>{let t=window.getComputedStyle(e);return{top:parseFloat(t.scrollMarginTop)||0,right:parseFloat(t.scrollMarginRight)||0,bottom:parseFloat(t.scrollMarginBottom)||0,left:parseFloat(t.scrollMarginLeft)||0}})(e);if("object"==typeof t&&"function"==typeof t.behavior)return t.behavior(y(e,t));let r="boolean"==typeof t||null==t?void 0:t.behavior;for(let{el:o,top:a,left:i}of y(e,w(t))){let e=a-n.top+n.bottom,t=i-n.left+n.right;o.scroll({top:e,left:t,behavior:r})}}(a,Object.assign({scrollMode:"if-needed",block:"nearest"},t))},getFieldInstance:e=>{let t=E(e);return n.current[t]}}),[e,t]);return[r]}var C=n(47713),Z=n(77360),O=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let k=o.forwardRef((e,t)=>{let n=o.useContext(s.Z),{getPrefixCls:r,direction:a,form:m}=o.useContext(l.E_),{prefixCls:g,className:h,rootClassName:v,size:b,disabled:y=n,form:w,colon:x,labelAlign:E,labelWrap:k,labelCol:M,wrapperCol:j,hideRequiredMark:I,layout:R="horizontal",scrollToFirstError:N,requiredMark:P,onFinishFailed:F,name:T,style:A,feedbackIcons:L,variant:z}=e,_=O(e,["prefixCls","className","rootClassName","size","disabled","form","colon","labelAlign","labelWrap","labelCol","wrapperCol","hideRequiredMark","layout","scrollToFirstError","requiredMark","onFinishFailed","name","style","feedbackIcons","variant"]),H=(0,d.Z)(b),B=o.useContext(Z.Z),D=(0,o.useMemo)(()=>void 0!==P?P:!I&&(!m||void 0===m.requiredMark||m.requiredMark),[I,P,m]),W=null!=x?x:null==m?void 0:m.colon,V=r("form",g),q=(0,u.Z)(V),[G,X,U]=(0,C.ZP)(V,q),$=i()(V,"".concat(V,"-").concat(R),{["".concat(V,"-hide-required-mark")]:!1===D,["".concat(V,"-rtl")]:"rtl"===a,["".concat(V,"-").concat(H)]:H},U,q,X,null==m?void 0:m.className,h,v),[K]=S(w),{__INTERNAL__:Y}=K;Y.name=T;let Q=(0,o.useMemo)(()=>({name:T,labelAlign:E,labelCol:M,labelWrap:k,wrapperCol:j,vertical:"vertical"===R,colon:W,requiredMark:D,itemRef:Y.itemRef,form:K,feedbackIcons:L}),[T,E,M,j,R,W,D,K,L]);o.useImperativeHandle(t,()=>K);let J=(e,t)=>{if(e){let n={block:"nearest"};"object"==typeof e&&(n=e),K.scrollToField(t,n)}};return G(o.createElement(p.pg.Provider,{value:z},o.createElement(s.n,{disabled:y},o.createElement(f.Z.Provider,{value:H},o.createElement(p.RV,{validateMessages:B},o.createElement(p.q3.Provider,{value:Q},o.createElement(c.ZP,Object.assign({id:T},_,{name:T,onFinishFailed:e=>{if(null==F||F(e),e.errorFields.length){let t=e.errorFields[0].name;if(void 0!==N){J(N,t);return}m&&void 0!==m.scrollToFirstError&&J(m.scrollToFirstError,t)}},form:K,style:Object.assign(Object.assign({},null==m?void 0:m.style),A),className:$}))))))))});var M=n(38994),j=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};k.Item=M.Z,k.List=e=>{var{prefixCls:t,children:n}=e,r=j(e,["prefixCls","children"]);let{getPrefixCls:a}=o.useContext(l.E_),i=a("form",t),s=o.useMemo(()=>({prefixCls:i,status:"error"}),[i]);return o.createElement(c.aV,Object.assign({},r),(e,t,r)=>o.createElement(p.Rk.Provider,{value:s},n(e.map(e=>Object.assign(Object.assign({},e),{fieldKey:e.key})),t,{errors:r.errors,warnings:r.warnings})))},k.ErrorList=r.Z,k.useForm=S,k.useFormInstance=function(){let{form:e}=(0,o.useContext)(p.q3);return e},k.useWatch=c.qo,k.Provider=p.RV,k.create=()=>{};var I=k},47713:function(e,t,n){"use strict";n.d(t,{ZP:function(){return w},B4:function(){return y}});var r=n(352),o=n(12918),a=n(691),i=n(63074),c=n(3104),l=n(80669),s=e=>{let{componentCls:t}=e,n="".concat(t,"-show-help"),r="".concat(t,"-show-help-item");return{[n]:{transition:"opacity ".concat(e.motionDurationSlow," ").concat(e.motionEaseInOut),"&-appear, &-enter":{opacity:0,"&-active":{opacity:1}},"&-leave":{opacity:1,"&-active":{opacity:0}},[r]:{overflow:"hidden",transition:"height ".concat(e.motionDurationSlow," ").concat(e.motionEaseInOut,",\n opacity ").concat(e.motionDurationSlow," ").concat(e.motionEaseInOut,",\n transform ").concat(e.motionDurationSlow," ").concat(e.motionEaseInOut," !important"),["&".concat(r,"-appear, &").concat(r,"-enter")]:{transform:"translateY(-5px)",opacity:0,"&-active":{transform:"translateY(0)",opacity:1}},["&".concat(r,"-leave-active")]:{transform:"translateY(-5px)"}}}}};let u=e=>({legend:{display:"block",width:"100%",marginBottom:e.marginLG,padding:0,color:e.colorTextDescription,fontSize:e.fontSizeLG,lineHeight:"inherit",border:0,borderBottom:"".concat((0,r.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.colorBorder)},'input[type="search"]':{boxSizing:"border-box"},'input[type="radio"], input[type="checkbox"]':{lineHeight:"normal"},'input[type="file"]':{display:"block"},'input[type="range"]':{display:"block",width:"100%"},"select[multiple], select[size]":{height:"auto"},"input[type='file']:focus,\n input[type='radio']:focus,\n input[type='checkbox']:focus":{outline:0,boxShadow:"0 0 0 ".concat((0,r.bf)(e.controlOutlineWidth)," ").concat(e.controlOutline)},output:{display:"block",paddingTop:15,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight}}),d=(e,t)=>{let{formItemCls:n}=e;return{[n]:{["".concat(n,"-label > label")]:{height:t},["".concat(n,"-control-input")]:{minHeight:t}}}},f=e=>{let{componentCls:t}=e;return{[e.componentCls]:Object.assign(Object.assign(Object.assign({},(0,o.Wf)(e)),u(e)),{["".concat(t,"-text")]:{display:"inline-block",paddingInlineEnd:e.paddingSM},"&-small":Object.assign({},d(e,e.controlHeightSM)),"&-large":Object.assign({},d(e,e.controlHeightLG))})}},p=e=>{let{formItemCls:t,iconCls:n,componentCls:r,rootPrefixCls:i,labelRequiredMarkColor:c,labelColor:l,labelFontSize:s,labelHeight:u,labelColonMarginInlineStart:d,labelColonMarginInlineEnd:f,itemMarginBottom:p}=e;return{[t]:Object.assign(Object.assign({},(0,o.Wf)(e)),{marginBottom:p,verticalAlign:"top","&-with-help":{transition:"none"},["&-hidden,\n &-hidden.".concat(i,"-row")]:{display:"none"},"&-has-warning":{["".concat(t,"-split")]:{color:e.colorError}},"&-has-error":{["".concat(t,"-split")]:{color:e.colorWarning}},["".concat(t,"-label")]:{flexGrow:0,overflow:"hidden",whiteSpace:"nowrap",textAlign:"end",verticalAlign:"middle","&-left":{textAlign:"start"},"&-wrap":{overflow:"unset",lineHeight:e.lineHeight,whiteSpace:"unset"},"> label":{position:"relative",display:"inline-flex",alignItems:"center",maxWidth:"100%",height:u,color:l,fontSize:s,["> ".concat(n)]:{fontSize:e.fontSize,verticalAlign:"top"},["&".concat(t,"-required:not(").concat(t,"-required-mark-optional)::before")]:{display:"inline-block",marginInlineEnd:e.marginXXS,color:c,fontSize:e.fontSize,fontFamily:"SimSun, sans-serif",lineHeight:1,content:'"*"',["".concat(r,"-hide-required-mark &")]:{display:"none"}},["".concat(t,"-optional")]:{display:"inline-block",marginInlineStart:e.marginXXS,color:e.colorTextDescription,["".concat(r,"-hide-required-mark &")]:{display:"none"}},["".concat(t,"-tooltip")]:{color:e.colorTextDescription,cursor:"help",writingMode:"horizontal-tb",marginInlineStart:e.marginXXS},"&::after":{content:'":"',position:"relative",marginBlock:0,marginInlineStart:d,marginInlineEnd:f},["&".concat(t,"-no-colon::after")]:{content:'"\\a0"'}}},["".concat(t,"-control")]:{"--ant-display":"flex",flexDirection:"column",flexGrow:1,["&:first-child:not([class^=\"'".concat(i,"-col-'\"]):not([class*=\"' ").concat(i,"-col-'\"])")]:{width:"100%"},"&-input":{position:"relative",display:"flex",alignItems:"center",minHeight:e.controlHeight,"&-content":{flex:"auto",maxWidth:"100%"}}},[t]:{"&-explain, &-extra":{clear:"both",color:e.colorTextDescription,fontSize:e.fontSize,lineHeight:e.lineHeight},"&-explain-connected":{width:"100%"},"&-extra":{minHeight:e.controlHeightSM,transition:"color ".concat(e.motionDurationMid," ").concat(e.motionEaseOut)},"&-explain":{"&-error":{color:e.colorError},"&-warning":{color:e.colorWarning}}},["&-with-help ".concat(t,"-explain")]:{height:"auto",opacity:1},["".concat(t,"-feedback-icon")]:{fontSize:e.fontSize,textAlign:"center",visibility:"visible",animationName:a.kr,animationDuration:e.motionDurationMid,animationTimingFunction:e.motionEaseOutBack,pointerEvents:"none","&-success":{color:e.colorSuccess},"&-error":{color:e.colorError},"&-warning":{color:e.colorWarning},"&-validating":{color:e.colorPrimary}}})}},m=e=>{let{componentCls:t,formItemCls:n}=e;return{["".concat(t,"-horizontal")]:{["".concat(n,"-label")]:{flexGrow:0},["".concat(n,"-control")]:{flex:"1 1 0",minWidth:0},["".concat(n,"-label[class$='-24'], ").concat(n,"-label[class*='-24 ']")]:{["& + ".concat(n,"-control")]:{minWidth:"unset"}}}}},g=e=>{let{componentCls:t,formItemCls:n}=e;return{["".concat(t,"-inline")]:{display:"flex",flexWrap:"wrap",[n]:{flex:"none",marginInlineEnd:e.margin,marginBottom:0,"&-row":{flexWrap:"nowrap"},["> ".concat(n,"-label,\n > ").concat(n,"-control")]:{display:"inline-block",verticalAlign:"top"},["> ".concat(n,"-label")]:{flex:"none"},["".concat(t,"-text")]:{display:"inline-block"},["".concat(n,"-has-feedback")]:{display:"inline-block"}}}}},h=e=>({padding:e.verticalLabelPadding,margin:e.verticalLabelMargin,whiteSpace:"initial",textAlign:"start","> label":{margin:0,"&::after":{visibility:"hidden"}}}),v=e=>{let{componentCls:t,formItemCls:n,rootPrefixCls:r}=e;return{["".concat(n," ").concat(n,"-label")]:h(e),["".concat(t,":not(").concat(t,"-inline)")]:{[n]:{flexWrap:"wrap",["".concat(n,"-label, ").concat(n,"-control")]:{['&:not([class*=" '.concat(r,'-col-xs"])')]:{flex:"0 0 100%",maxWidth:"100%"}}}}}},b=e=>{let{componentCls:t,formItemCls:n,rootPrefixCls:o}=e;return{["".concat(t,"-vertical")]:{[n]:{"&-row":{flexDirection:"column"},"&-label > label":{height:"auto"},["".concat(t,"-item-control")]:{width:"100%"}}},["".concat(t,"-vertical ").concat(n,"-label,\n .").concat(o,"-col-24").concat(n,"-label,\n .").concat(o,"-col-xl-24").concat(n,"-label")]:h(e),["@media (max-width: ".concat((0,r.bf)(e.screenXSMax),")")]:[v(e),{[t]:{[".".concat(o,"-col-xs-24").concat(n,"-label")]:h(e)}}],["@media (max-width: ".concat((0,r.bf)(e.screenSMMax),")")]:{[t]:{[".".concat(o,"-col-sm-24").concat(n,"-label")]:h(e)}},["@media (max-width: ".concat((0,r.bf)(e.screenMDMax),")")]:{[t]:{[".".concat(o,"-col-md-24").concat(n,"-label")]:h(e)}},["@media (max-width: ".concat((0,r.bf)(e.screenLGMax),")")]:{[t]:{[".".concat(o,"-col-lg-24").concat(n,"-label")]:h(e)}}}},y=(e,t)=>(0,c.TS)(e,{formItemCls:"".concat(e.componentCls,"-item"),rootPrefixCls:t});var w=(0,l.I$)("Form",(e,t)=>{let{rootPrefixCls:n}=t,r=y(e,n);return[f(r),p(r),s(r),m(r),g(r),b(r),(0,i.Z)(r),a.kr]},e=>({labelRequiredMarkColor:e.colorError,labelColor:e.colorTextHeading,labelFontSize:e.fontSize,labelHeight:e.controlHeight,labelColonMarginInlineStart:e.marginXXS/2,labelColonMarginInlineEnd:e.marginXS,itemMarginBottom:e.marginLG,verticalLabelPadding:"0 0 ".concat(e.paddingXS,"px"),verticalLabelMargin:0}),{order:-1e3})},13861:function(e,t,n){"use strict";n.d(t,{dD:function(){return a},lR:function(){return i},qo:function(){return o}});let r=["parentNode"];function o(e){return void 0===e||!1===e?[]:Array.isArray(e)?e:[e]}function a(e,t){if(!e.length)return;let n=e.join("_");return t?"".concat(t,"_").concat(n):r.includes(n)?"".concat("form_item","_").concat(n):n}function i(e,t,n,r,o,a){let i=r;return void 0!==a?i=a:n.validating?i="validating":e.length?i="error":t.length?i="warning":(n.touched||o&&n.validated)&&(i="success"),i}},77360:function(e,t,n){"use strict";var r=n(2265);t.Z=(0,r.createContext)(void 0)},62807:function(e,t,n){"use strict";let r=(0,n(2265).createContext)({});t.Z=r},54998:function(e,t,n){"use strict";var r=n(2265),o=n(36760),a=n.n(o),i=n(71744),c=n(62807),l=n(96776),s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let u=["xs","sm","md","lg","xl","xxl"],d=r.forwardRef((e,t)=>{let{getPrefixCls:n,direction:o}=r.useContext(i.E_),{gutter:d,wrap:f}=r.useContext(c.Z),{prefixCls:p,span:m,order:g,offset:h,push:v,pull:b,className:y,children:w,flex:x,style:E}=e,S=s(e,["prefixCls","span","order","offset","push","pull","className","children","flex","style"]),C=n("col",p),[Z,O,k]=(0,l.cG)(C),M={};u.forEach(t=>{let n={},r=e[t];"number"==typeof r?n.span=r:"object"==typeof r&&(n=r||{}),delete S[t],M=Object.assign(Object.assign({},M),{["".concat(C,"-").concat(t,"-").concat(n.span)]:void 0!==n.span,["".concat(C,"-").concat(t,"-order-").concat(n.order)]:n.order||0===n.order,["".concat(C,"-").concat(t,"-offset-").concat(n.offset)]:n.offset||0===n.offset,["".concat(C,"-").concat(t,"-push-").concat(n.push)]:n.push||0===n.push,["".concat(C,"-").concat(t,"-pull-").concat(n.pull)]:n.pull||0===n.pull,["".concat(C,"-").concat(t,"-flex-").concat(n.flex)]:n.flex||"auto"===n.flex,["".concat(C,"-rtl")]:"rtl"===o})});let j=a()(C,{["".concat(C,"-").concat(m)]:void 0!==m,["".concat(C,"-order-").concat(g)]:g,["".concat(C,"-offset-").concat(h)]:h,["".concat(C,"-push-").concat(v)]:v,["".concat(C,"-pull-").concat(b)]:b},y,M,O,k),I={};if(d&&d[0]>0){let e=d[0]/2;I.paddingLeft=e,I.paddingRight=e}return x&&(I.flex="number"==typeof x?"".concat(x," ").concat(x," auto"):/^\d+(\.\d+)?(px|em|rem|%)$/.test(x)?"0 0 ".concat(x):x,!1!==f||I.minWidth||(I.minWidth=0)),Z(r.createElement("div",Object.assign({},S,{style:Object.assign(Object.assign({},I),E),className:j,ref:t}),w))});t.Z=d},10295:function(e,t,n){"use strict";var r=n(2265),o=n(36760),a=n.n(o),i=n(6543),c=n(71744),l=n(62807),s=n(96776),u=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};function d(e,t){let[n,o]=r.useState("string"==typeof e?e:""),a=()=>{if("string"==typeof e&&o(e),"object"==typeof e)for(let n=0;n{a()},[JSON.stringify(e),t]),n}let f=r.forwardRef((e,t)=>{let{prefixCls:n,justify:o,align:f,className:p,style:m,children:g,gutter:h=0,wrap:v}=e,b=u(e,["prefixCls","justify","align","className","style","children","gutter","wrap"]),{getPrefixCls:y,direction:w}=r.useContext(c.E_),[x,E]=r.useState({xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0}),[S,C]=r.useState({xs:!1,sm:!1,md:!1,lg:!1,xl:!1,xxl:!1}),Z=d(f,S),O=d(o,S),k=r.useRef(h),M=(0,i.ZP)();r.useEffect(()=>{let e=M.subscribe(e=>{C(e);let t=k.current||0;(!Array.isArray(t)&&"object"==typeof t||Array.isArray(t)&&("object"==typeof t[0]||"object"==typeof t[1]))&&E(e)});return()=>M.unsubscribe(e)},[]);let j=y("row",n),[I,R,N]=(0,s.VM)(j),P=(()=>{let e=[void 0,void 0];return(Array.isArray(h)?h:[h,void 0]).forEach((t,n)=>{if("object"==typeof t)for(let r=0;r0?-(P[0]/2):void 0;A&&(T.marginLeft=A,T.marginRight=A),[,T.rowGap]=P;let[L,z]=P,_=r.useMemo(()=>({gutter:[L,z],wrap:v}),[L,z,v]);return I(r.createElement(l.Z.Provider,{value:_},r.createElement("div",Object.assign({},b,{className:F,style:Object.assign(Object.assign({},T),m),ref:t}),g)))});t.Z=f},96776:function(e,t,n){"use strict";n.d(t,{VM:function(){return u},cG:function(){return d}});var r=n(352),o=n(80669),a=n(3104);let i=e=>{let{componentCls:t}=e;return{[t]:{position:"relative",maxWidth:"100%",minHeight:1}}},c=(e,t)=>{let{componentCls:n,gridColumns:r}=e,o={};for(let e=r;e>=0;e--)0===e?(o["".concat(n).concat(t,"-").concat(e)]={display:"none"},o["".concat(n,"-push-").concat(e)]={insetInlineStart:"auto"},o["".concat(n,"-pull-").concat(e)]={insetInlineEnd:"auto"},o["".concat(n).concat(t,"-push-").concat(e)]={insetInlineStart:"auto"},o["".concat(n).concat(t,"-pull-").concat(e)]={insetInlineEnd:"auto"},o["".concat(n).concat(t,"-offset-").concat(e)]={marginInlineStart:0},o["".concat(n).concat(t,"-order-").concat(e)]={order:0}):(o["".concat(n).concat(t,"-").concat(e)]=[{"--ant-display":"block",display:"block"},{display:"var(--ant-display)",flex:"0 0 ".concat(e/r*100,"%"),maxWidth:"".concat(e/r*100,"%")}],o["".concat(n).concat(t,"-push-").concat(e)]={insetInlineStart:"".concat(e/r*100,"%")},o["".concat(n).concat(t,"-pull-").concat(e)]={insetInlineEnd:"".concat(e/r*100,"%")},o["".concat(n).concat(t,"-offset-").concat(e)]={marginInlineStart:"".concat(e/r*100,"%")},o["".concat(n).concat(t,"-order-").concat(e)]={order:e});return o},l=(e,t)=>c(e,t),s=(e,t,n)=>({["@media (min-width: ".concat((0,r.bf)(t),")")]:Object.assign({},l(e,n))}),u=(0,o.I$)("Grid",e=>{let{componentCls:t}=e;return{[t]:{display:"flex",flexFlow:"row wrap",minWidth:0,"&::before, &::after":{display:"flex"},"&-no-wrap":{flexWrap:"nowrap"},"&-start":{justifyContent:"flex-start"},"&-center":{justifyContent:"center"},"&-end":{justifyContent:"flex-end"},"&-space-between":{justifyContent:"space-between"},"&-space-around":{justifyContent:"space-around"},"&-space-evenly":{justifyContent:"space-evenly"},"&-top":{alignItems:"flex-start"},"&-middle":{alignItems:"center"},"&-bottom":{alignItems:"flex-end"}}}},()=>({})),d=(0,o.I$)("Grid",e=>{let t=(0,a.TS)(e,{gridColumns:24}),n={"-sm":t.screenSMMin,"-md":t.screenMDMin,"-lg":t.screenLGMin,"-xl":t.screenXLMin,"-xxl":t.screenXXLMin};return[i(t),l(t,""),l(t,"-xs"),Object.keys(n).map(e=>s(t,n[e],e)).reduce((e,t)=>Object.assign(Object.assign({},e),t),{})]},()=>({}))},20577:function(e,t,n){"use strict";n.d(t,{Z:function(){return eg}});var r=n(2265),o=n(70464),a=n(1119),i={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z"}}]},name:"up",theme:"outlined"},c=n(55015),l=r.forwardRef(function(e,t){return r.createElement(c.Z,(0,a.Z)({},e,{ref:t,icon:i}))}),s=n(36760),u=n.n(s),d=n(11993),f=n(41154),p=n(26365),m=n(6989),g=n(76405),h=n(25049);function v(){return"function"==typeof BigInt}function b(e){return!e&&0!==e&&!Number.isNaN(e)||!String(e).trim()}function y(e){var t=e.trim(),n=t.startsWith("-");n&&(t=t.slice(1)),(t=t.replace(/(\.\d*[^0])0*$/,"$1").replace(/\.0*$/,"").replace(/^0+/,"")).startsWith(".")&&(t="0".concat(t));var r=t||"0",o=r.split("."),a=o[0]||"0",i=o[1]||"0";"0"===a&&"0"===i&&(n=!1);var c=n?"-":"";return{negative:n,negativeStr:c,trimStr:r,integerStr:a,decimalStr:i,fullStr:"".concat(c).concat(r)}}function w(e){var t=String(e);return!Number.isNaN(Number(t))&&t.includes("e")}function x(e){var t=String(e);if(w(e)){var n=Number(t.slice(t.indexOf("e-")+2)),r=t.match(/\.(\d+)/);return null!=r&&r[1]&&(n+=r[1].length),n}return t.includes(".")&&S(t)?t.length-t.indexOf(".")-1:0}function E(e){var t=String(e);if(w(e)){if(e>Number.MAX_SAFE_INTEGER)return String(v()?BigInt(e).toString():Number.MAX_SAFE_INTEGER);if(e=this.add(e.negate().toString()).toNumber()}},{key:"toNumber",value:function(){return this.isNaN()?NaN:Number(this.toString())}},{key:"toString",value:function(){var e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return e?this.isInvalidate()?"":y("".concat(this.getMark()).concat(this.getIntegerStr(),".").concat(this.getDecimalStr())).fullStr:this.origin}}]),e}(),Z=function(){function e(t){if((0,g.Z)(this,e),(0,d.Z)(this,"origin",""),(0,d.Z)(this,"number",void 0),(0,d.Z)(this,"empty",void 0),b(t)){this.empty=!0;return}this.origin=String(t),this.number=Number(t)}return(0,h.Z)(e,[{key:"negate",value:function(){return new e(-this.toNumber())}},{key:"add",value:function(t){if(this.isInvalidate())return new e(t);var n=Number(t);if(Number.isNaN(n))return this;var r=this.number+n;if(r>Number.MAX_SAFE_INTEGER)return new e(Number.MAX_SAFE_INTEGER);if(rNumber.MAX_SAFE_INTEGER)return new e(Number.MAX_SAFE_INTEGER);if(r=this.add(e.negate().toString()).toNumber()}},{key:"toNumber",value:function(){return this.number}},{key:"toString",value:function(){var e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return e?this.isInvalidate()?"":E(this.number):this.origin}}]),e}();function O(e){return v()?new C(e):new Z(e)}function k(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(""===e)return"";var o=y(e),a=o.negativeStr,i=o.integerStr,c=o.decimalStr,l="".concat(t).concat(c),s="".concat(a).concat(i);if(n>=0){var u=Number(c[n]);return u>=5&&!r?k(O(e).add("".concat(a,"0.").concat("0".repeat(n)).concat(10-u)).toString(),t,n,r):0===n?s:"".concat(s).concat(t).concat(c.padEnd(n,"0").slice(0,n))}return".0"===l?s:"".concat(s).concat(l)}var M=n(2027),j=n(27380),I=n(28791),R=n(32559),N=n(79267),P=function(){var e=(0,r.useState)(!1),t=(0,p.Z)(e,2),n=t[0],o=t[1];return(0,j.Z)(function(){o((0,N.Z)())},[]),n},F=n(53346);function T(e){var t=e.prefixCls,n=e.upNode,o=e.downNode,i=e.upDisabled,c=e.downDisabled,l=e.onStep,s=r.useRef(),f=r.useRef([]),p=r.useRef();p.current=l;var m=function(){clearTimeout(s.current)},g=function(e,t){e.preventDefault(),m(),p.current(t),s.current=setTimeout(function e(){p.current(t),s.current=setTimeout(e,200)},600)};if(r.useEffect(function(){return function(){m(),f.current.forEach(function(e){return F.Z.cancel(e)})}},[]),P())return null;var h="".concat(t,"-handler"),v=u()(h,"".concat(h,"-up"),(0,d.Z)({},"".concat(h,"-up-disabled"),i)),b=u()(h,"".concat(h,"-down"),(0,d.Z)({},"".concat(h,"-down-disabled"),c)),y=function(){return f.current.push((0,F.Z)(m))},w={unselectable:"on",role:"button",onMouseUp:y,onMouseLeave:y};return r.createElement("div",{className:"".concat(h,"-wrap")},r.createElement("span",(0,a.Z)({},w,{onMouseDown:function(e){g(e,!0)},"aria-label":"Increase Value","aria-disabled":i,className:v}),n||r.createElement("span",{unselectable:"on",className:"".concat(t,"-handler-up-inner")})),r.createElement("span",(0,a.Z)({},w,{onMouseDown:function(e){g(e,!1)},"aria-label":"Decrease Value","aria-disabled":c,className:b}),o||r.createElement("span",{unselectable:"on",className:"".concat(t,"-handler-down-inner")})))}function A(e){var t="number"==typeof e?E(e):y(e).fullStr;return t.includes(".")?y(t.replace(/(\d)\.(\d)/g,"$1$2.")).fullStr:e+"0"}var L=n(55041),z=function(){var e=(0,r.useRef)(0),t=function(){F.Z.cancel(e.current)};return(0,r.useEffect)(function(){return t},[]),function(n){t(),e.current=(0,F.Z)(function(){n()})}},_=["prefixCls","className","style","min","max","step","defaultValue","value","disabled","readOnly","upHandler","downHandler","keyboard","wheel","controls","classNames","stringMode","parser","formatter","precision","decimalSeparator","onChange","onInput","onPressEnter","onStep","changeOnBlur"],H=["disabled","style","prefixCls","value","prefix","suffix","addonBefore","addonAfter","className","classNames"],B=function(e,t){return e||t.isEmpty()?t.toString():t.toNumber()},D=function(e){var t=O(e);return t.isInvalidate()?null:t},W=r.forwardRef(function(e,t){var n,o,i,c=e.prefixCls,l=void 0===c?"rc-input-number":c,s=e.className,g=e.style,h=e.min,v=e.max,b=e.step,y=void 0===b?1:b,w=e.defaultValue,C=e.value,Z=e.disabled,M=e.readOnly,N=e.upHandler,P=e.downHandler,F=e.keyboard,L=e.wheel,H=e.controls,W=(e.classNames,e.stringMode),V=e.parser,q=e.formatter,G=e.precision,X=e.decimalSeparator,U=e.onChange,$=e.onInput,K=e.onPressEnter,Y=e.onStep,Q=e.changeOnBlur,J=void 0===Q||Q,ee=(0,m.Z)(e,_),et="".concat(l,"-input"),en=r.useRef(null),er=r.useState(!1),eo=(0,p.Z)(er,2),ea=eo[0],ei=eo[1],ec=r.useRef(!1),el=r.useRef(!1),es=r.useRef(!1),eu=r.useState(function(){return O(null!=C?C:w)}),ed=(0,p.Z)(eu,2),ef=ed[0],ep=ed[1],em=r.useCallback(function(e,t){return t?void 0:G>=0?G:Math.max(x(e),x(y))},[G,y]),eg=r.useCallback(function(e){var t=String(e);if(V)return V(t);var n=t;return X&&(n=n.replace(X,".")),n.replace(/[^\w.-]+/g,"")},[V,X]),eh=r.useRef(""),ev=r.useCallback(function(e,t){if(q)return q(e,{userTyping:t,input:String(eh.current)});var n="number"==typeof e?E(e):e;if(!t){var r=em(n,t);S(n)&&(X||r>=0)&&(n=k(n,X||".",r))}return n},[q,em,X]),eb=r.useState(function(){var e=null!=w?w:C;return ef.isInvalidate()&&["string","number"].includes((0,f.Z)(e))?Number.isNaN(e)?"":e:ev(ef.toString(),!1)}),ey=(0,p.Z)(eb,2),ew=ey[0],ex=ey[1];function eE(e,t){ex(ev(e.isInvalidate()?e.toString(!1):e.toString(!t),t))}eh.current=ew;var eS=r.useMemo(function(){return D(v)},[v,G]),eC=r.useMemo(function(){return D(h)},[h,G]),eZ=r.useMemo(function(){return!(!eS||!ef||ef.isInvalidate())&&eS.lessEquals(ef)},[eS,ef]),eO=r.useMemo(function(){return!(!eC||!ef||ef.isInvalidate())&&ef.lessEquals(eC)},[eC,ef]),ek=(n=en.current,o=(0,r.useRef)(null),[function(){try{var e=n.selectionStart,t=n.selectionEnd,r=n.value,a=r.substring(0,e),i=r.substring(t);o.current={start:e,end:t,value:r,beforeTxt:a,afterTxt:i}}catch(e){}},function(){if(n&&o.current&&ea)try{var e=n.value,t=o.current,r=t.beforeTxt,a=t.afterTxt,i=t.start,c=e.length;if(e.endsWith(a))c=e.length-o.current.afterTxt.length;else if(e.startsWith(r))c=r.length;else{var l=r[i-1],s=e.indexOf(l,i-1);-1!==s&&(c=s+1)}n.setSelectionRange(c,c)}catch(e){(0,R.ZP)(!1,"Something warning of cursor restore. Please fire issue about this: ".concat(e.message))}}]),eM=(0,p.Z)(ek,2),ej=eM[0],eI=eM[1],eR=function(e){return eS&&!e.lessEquals(eS)?eS:eC&&!eC.lessEquals(e)?eC:null},eN=function(e){return!eR(e)},eP=function(e,t){var n=e,r=eN(n)||n.isEmpty();if(n.isEmpty()||t||(n=eR(n)||n,r=!0),!M&&!Z&&r){var o,a=n.toString(),i=em(a,t);return i>=0&&!eN(n=O(k(a,".",i)))&&(n=O(k(a,".",i,!0))),n.equals(ef)||(o=n,void 0===C&&ep(o),null==U||U(n.isEmpty()?null:B(W,n)),void 0===C&&eE(n,t)),n}return ef},eF=z(),eT=function e(t){if(ej(),eh.current=t,ex(t),!el.current){var n=O(eg(t));n.isNaN()||eP(n,!0)}null==$||$(t),eF(function(){var n=t;V||(n=t.replace(/。/g,".")),n!==t&&e(n)})},eA=function(e){if((!e||!eZ)&&(e||!eO)){ec.current=!1;var t,n=O(es.current?A(y):y);e||(n=n.negate());var r=eP((ef||O(0)).add(n.toString()),!1);null==Y||Y(B(W,r),{offset:es.current?A(y):y,type:e?"up":"down"}),null===(t=en.current)||void 0===t||t.focus()}},eL=function(e){var t=O(eg(ew)),n=t;n=t.isNaN()?eP(ef,e):eP(t,e),void 0!==C?eE(ef,!1):n.isNaN()||eE(n,!1)};return r.useEffect(function(){var e=function(e){!1!==L&&(eA(e.deltaY<0),e.preventDefault())},t=en.current;if(t)return t.addEventListener("wheel",e),function(){return t.removeEventListener("wheel",e)}},[eA]),(0,j.o)(function(){ef.isInvalidate()||eE(ef,!1)},[G,q]),(0,j.o)(function(){var e=O(C);ep(e);var t=O(eg(ew));e.equals(t)&&ec.current&&!q||eE(e,ec.current)},[C]),(0,j.o)(function(){q&&eI()},[ew]),r.createElement("div",{className:u()(l,s,(i={},(0,d.Z)(i,"".concat(l,"-focused"),ea),(0,d.Z)(i,"".concat(l,"-disabled"),Z),(0,d.Z)(i,"".concat(l,"-readonly"),M),(0,d.Z)(i,"".concat(l,"-not-a-number"),ef.isNaN()),(0,d.Z)(i,"".concat(l,"-out-of-range"),!ef.isInvalidate()&&!eN(ef)),i)),style:g,onFocus:function(){ei(!0)},onBlur:function(){J&&eL(!1),ei(!1),ec.current=!1},onKeyDown:function(e){var t=e.key,n=e.shiftKey;ec.current=!0,es.current=n,"Enter"===t&&(el.current||(ec.current=!1),eL(!1),null==K||K(e)),!1!==F&&!el.current&&["Up","ArrowUp","Down","ArrowDown"].includes(t)&&(eA("Up"===t||"ArrowUp"===t),e.preventDefault())},onKeyUp:function(){ec.current=!1,es.current=!1},onCompositionStart:function(){el.current=!0},onCompositionEnd:function(){el.current=!1,eT(en.current.value)},onBeforeInput:function(){ec.current=!0}},(void 0===H||H)&&r.createElement(T,{prefixCls:l,upNode:N,downNode:P,upDisabled:eZ,downDisabled:eO,onStep:eA}),r.createElement("div",{className:"".concat(et,"-wrap")},r.createElement("input",(0,a.Z)({autoComplete:"off",role:"spinbutton","aria-valuemin":h,"aria-valuemax":v,"aria-valuenow":ef.isInvalidate()?null:ef.toString(),step:y},ee,{ref:(0,I.sQ)(en,t),className:et,value:ew,onChange:function(e){eT(e.target.value)},disabled:Z,readOnly:M}))))}),V=r.forwardRef(function(e,t){var n=e.disabled,o=e.style,i=e.prefixCls,c=e.value,l=e.prefix,s=e.suffix,u=e.addonBefore,d=e.addonAfter,f=e.className,p=e.classNames,g=(0,m.Z)(e,H),h=r.useRef(null);return r.createElement(M.Q,{className:f,triggerFocus:function(e){h.current&&(0,L.nH)(h.current,e)},prefixCls:i,value:c,disabled:n,style:o,prefix:l,suffix:s,addonAfter:d,addonBefore:u,classNames:p,components:{affixWrapper:"div",groupWrapper:"div",wrapper:"div",groupAddon:"div"}},r.createElement(W,(0,a.Z)({prefixCls:i,disabled:n,ref:(0,I.sQ)(h,t),className:null==p?void 0:p.input},g)))});V.displayName="InputNumber";var q=n(12757),G=n(71744),X=n(13959),U=n(86586),$=n(64024),K=n(33759),Y=n(39109),Q=n(56250),J=n(65658),ee=n(352),et=n(31282),en=n(37433),er=n(65265),eo=n(12918),ea=n(17691),ei=n(80669),ec=n(3104),el=n(36360);let es=(e,t)=>{let{componentCls:n,borderRadiusSM:r,borderRadiusLG:o}=e,a="lg"===t?o:r;return{["&-".concat(t)]:{["".concat(n,"-handler-wrap")]:{borderStartEndRadius:a,borderEndEndRadius:a},["".concat(n,"-handler-up")]:{borderStartEndRadius:a},["".concat(n,"-handler-down")]:{borderEndEndRadius:a}}}},eu=e=>{let{componentCls:t,lineWidth:n,lineType:r,borderRadius:o,fontSizeLG:a,controlHeightLG:i,controlHeightSM:c,colorError:l,paddingInlineSM:s,paddingBlockSM:u,paddingBlockLG:d,paddingInlineLG:f,colorTextDescription:p,motionDurationMid:m,handleHoverColor:g,paddingInline:h,paddingBlock:v,handleBg:b,handleActiveBg:y,colorTextDisabled:w,borderRadiusSM:x,borderRadiusLG:E,controlWidth:S,handleOpacity:C,handleBorderColor:Z,filledHandleBg:O,lineHeightLG:k,calc:M}=e;return[{[t]:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},(0,eo.Wf)(e)),(0,et.ik)(e)),{display:"inline-block",width:S,margin:0,padding:0,borderRadius:o}),(0,er.qG)(e,{["".concat(t,"-handler-wrap")]:{background:b,["".concat(t,"-handler-down")]:{borderBlockStart:"".concat((0,ee.bf)(n)," ").concat(r," ").concat(Z)}}})),(0,er.H8)(e,{["".concat(t,"-handler-wrap")]:{background:O,["".concat(t,"-handler-down")]:{borderBlockStart:"".concat((0,ee.bf)(n)," ").concat(r," ").concat(Z)}},"&:focus-within":{["".concat(t,"-handler-wrap")]:{background:b}}})),(0,er.Mu)(e)),{"&-rtl":{direction:"rtl",["".concat(t,"-input")]:{direction:"rtl"}},"&-lg":{padding:0,fontSize:a,lineHeight:k,borderRadius:E,["input".concat(t,"-input")]:{height:M(i).sub(M(n).mul(2)).equal(),padding:"".concat((0,ee.bf)(d)," ").concat((0,ee.bf)(f))}},"&-sm":{padding:0,borderRadius:x,["input".concat(t,"-input")]:{height:M(c).sub(M(n).mul(2)).equal(),padding:"".concat((0,ee.bf)(u)," ").concat((0,ee.bf)(s))}},"&-out-of-range":{["".concat(t,"-input-wrap")]:{input:{color:l}}},"&-group":Object.assign(Object.assign(Object.assign({},(0,eo.Wf)(e)),(0,et.s7)(e)),{"&-wrapper":Object.assign(Object.assign(Object.assign({display:"inline-block",textAlign:"start",verticalAlign:"top",["".concat(t,"-affix-wrapper")]:{width:"100%"},"&-lg":{["".concat(t,"-group-addon")]:{borderRadius:E,fontSize:e.fontSizeLG}},"&-sm":{["".concat(t,"-group-addon")]:{borderRadius:x}}},(0,er.ir)(e)),(0,er.S5)(e)),{["&:not(".concat(t,"-compact-first-item):not(").concat(t,"-compact-last-item)").concat(t,"-compact-item")]:{["".concat(t,", ").concat(t,"-group-addon")]:{borderRadius:0}},["&:not(".concat(t,"-compact-last-item)").concat(t,"-compact-first-item")]:{["".concat(t,", ").concat(t,"-group-addon")]:{borderStartEndRadius:0,borderEndEndRadius:0}},["&:not(".concat(t,"-compact-first-item)").concat(t,"-compact-last-item")]:{["".concat(t,", ").concat(t,"-group-addon")]:{borderStartStartRadius:0,borderEndStartRadius:0}}})}),["&-disabled ".concat(t,"-input")]:{cursor:"not-allowed"},[t]:{"&-input":Object.assign(Object.assign(Object.assign(Object.assign({},(0,eo.Wf)(e)),{width:"100%",padding:"".concat((0,ee.bf)(v)," ").concat((0,ee.bf)(h)),textAlign:"start",backgroundColor:"transparent",border:0,borderRadius:o,outline:0,transition:"all ".concat(m," linear"),appearance:"textfield",fontSize:"inherit"}),(0,et.nz)(e.colorTextPlaceholder)),{'&[type="number"]::-webkit-inner-spin-button, &[type="number"]::-webkit-outer-spin-button':{margin:0,webkitAppearance:"none",appearance:"none"}})}})},{[t]:Object.assign(Object.assign(Object.assign({["&:hover ".concat(t,"-handler-wrap, &-focused ").concat(t,"-handler-wrap")]:{opacity:1},["".concat(t,"-handler-wrap")]:{position:"absolute",insetBlockStart:0,insetInlineEnd:0,width:e.handleWidth,height:"100%",borderStartStartRadius:0,borderStartEndRadius:o,borderEndEndRadius:o,borderEndStartRadius:0,opacity:C,display:"flex",flexDirection:"column",alignItems:"stretch",transition:"opacity ".concat(m," linear ").concat(m),["".concat(t,"-handler")]:{display:"flex",alignItems:"center",justifyContent:"center",flex:"auto",height:"40%",["\n ".concat(t,"-handler-up-inner,\n ").concat(t,"-handler-down-inner\n ")]:{marginInlineEnd:0,fontSize:e.handleFontSize}}},["".concat(t,"-handler")]:{height:"50%",overflow:"hidden",color:p,fontWeight:"bold",lineHeight:0,textAlign:"center",cursor:"pointer",borderInlineStart:"".concat((0,ee.bf)(n)," ").concat(r," ").concat(Z),transition:"all ".concat(m," linear"),"&:active":{background:y},"&:hover":{height:"60%",["\n ".concat(t,"-handler-up-inner,\n ").concat(t,"-handler-down-inner\n ")]:{color:g}},"&-up-inner, &-down-inner":Object.assign(Object.assign({},(0,eo.Ro)()),{color:p,transition:"all ".concat(m," linear"),userSelect:"none"})},["".concat(t,"-handler-up")]:{borderStartEndRadius:o},["".concat(t,"-handler-down")]:{borderEndEndRadius:o}},es(e,"lg")),es(e,"sm")),{"&-disabled, &-readonly":{["".concat(t,"-handler-wrap")]:{display:"none"},["".concat(t,"-input")]:{color:"inherit"}},["\n ".concat(t,"-handler-up-disabled,\n ").concat(t,"-handler-down-disabled\n ")]:{cursor:"not-allowed"},["\n ".concat(t,"-handler-up-disabled:hover &-handler-up-inner,\n ").concat(t,"-handler-down-disabled:hover &-handler-down-inner\n ")]:{color:w}})}]},ed=e=>{let{componentCls:t,paddingBlock:n,paddingInline:r,inputAffixPadding:o,controlWidth:a,borderRadiusLG:i,borderRadiusSM:c,paddingInlineLG:l,paddingInlineSM:s,paddingBlockLG:u,paddingBlockSM:d}=e;return{["".concat(t,"-affix-wrapper")]:Object.assign(Object.assign({["input".concat(t,"-input")]:{padding:"".concat((0,ee.bf)(n)," 0")}},(0,et.ik)(e)),{position:"relative",display:"inline-flex",width:a,padding:0,paddingInlineStart:r,"&-lg":{borderRadius:i,paddingInlineStart:l,["input".concat(t,"-input")]:{padding:"".concat((0,ee.bf)(u)," 0")}},"&-sm":{borderRadius:c,paddingInlineStart:s,["input".concat(t,"-input")]:{padding:"".concat((0,ee.bf)(d)," 0")}},["&:not(".concat(t,"-disabled):hover")]:{zIndex:1},"&-focused, &:focus":{zIndex:1},["&-disabled > ".concat(t,"-disabled")]:{background:"transparent"},["> div".concat(t)]:{width:"100%",border:"none",outline:"none",["&".concat(t,"-focused")]:{boxShadow:"none !important"}},"&::before":{display:"inline-block",width:0,visibility:"hidden",content:'"\\a0"'},["".concat(t,"-handler-wrap")]:{zIndex:2},[t]:{color:"inherit","&-prefix, &-suffix":{display:"flex",flex:"none",alignItems:"center",pointerEvents:"none"},"&-prefix":{marginInlineEnd:o},"&-suffix":{position:"absolute",insetBlockStart:0,insetInlineEnd:0,zIndex:1,height:"100%",marginInlineEnd:r,marginInlineStart:o}}})}};var ef=(0,ei.I$)("InputNumber",e=>{let t=(0,ec.TS)(e,(0,en.e)(e));return[eu(t),ed(t),(0,ea.c)(t)]},e=>{var t;let n=null!==(t=e.handleVisible)&&void 0!==t?t:"auto";return Object.assign(Object.assign({},(0,en.T)(e)),{controlWidth:90,handleWidth:e.controlHeightSM-2*e.lineWidth,handleFontSize:e.fontSize/2,handleVisible:n,handleActiveBg:e.colorFillAlter,handleBg:e.colorBgContainer,filledHandleBg:new el.C(e.colorFillSecondary).onBackground(e.colorBgContainer).toHexString(),handleHoverColor:e.colorPrimary,handleBorderColor:e.colorBorder,handleOpacity:!0===n?1:0})},{unitless:{handleOpacity:!0}}),ep=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let em=r.forwardRef((e,t)=>{let{getPrefixCls:n,direction:a}=r.useContext(G.E_),i=r.useRef(null);r.useImperativeHandle(t,()=>i.current);let{className:c,rootClassName:s,size:d,disabled:f,prefixCls:p,addonBefore:m,addonAfter:g,prefix:h,bordered:v,readOnly:b,status:y,controls:w,variant:x}=e,E=ep(e,["className","rootClassName","size","disabled","prefixCls","addonBefore","addonAfter","prefix","bordered","readOnly","status","controls","variant"]),S=n("input-number",p),C=(0,$.Z)(S),[Z,O,k]=ef(S,C),{compactSize:M,compactItemClassnames:j}=(0,J.ri)(S,a),I=r.createElement(l,{className:"".concat(S,"-handler-up-inner")}),R=r.createElement(o.Z,{className:"".concat(S,"-handler-down-inner")});"object"==typeof w&&(I=void 0===w.upIcon?I:r.createElement("span",{className:"".concat(S,"-handler-up-inner")},w.upIcon),R=void 0===w.downIcon?R:r.createElement("span",{className:"".concat(S,"-handler-down-inner")},w.downIcon));let{hasFeedback:N,status:P,isFormItemInput:F,feedbackIcon:T}=r.useContext(Y.aM),A=(0,q.F)(P,y),L=(0,K.Z)(e=>{var t;return null!==(t=null!=d?d:M)&&void 0!==t?t:e}),z=r.useContext(U.Z),[_,H]=(0,Q.Z)(x,v),B=N&&r.createElement(r.Fragment,null,T),D=u()({["".concat(S,"-lg")]:"large"===L,["".concat(S,"-sm")]:"small"===L,["".concat(S,"-rtl")]:"rtl"===a,["".concat(S,"-in-form-item")]:F},O),W="".concat(S,"-group");return Z(r.createElement(V,Object.assign({ref:i,disabled:null!=f?f:z,className:u()(k,C,c,s,j),upHandler:I,downHandler:R,prefixCls:S,readOnly:b,controls:"boolean"==typeof w?w:void 0,prefix:h,suffix:B,addonAfter:g&&r.createElement(J.BR,null,r.createElement(Y.Ux,{override:!0,status:!0},g)),addonBefore:m&&r.createElement(J.BR,null,r.createElement(Y.Ux,{override:!0,status:!0},m)),classNames:{input:D,variant:u()({["".concat(S,"-").concat(_)]:H},(0,q.Z)(S,A,N)),affixWrapper:u()({["".concat(S,"-affix-wrapper-sm")]:"small"===L,["".concat(S,"-affix-wrapper-lg")]:"large"===L,["".concat(S,"-affix-wrapper-rtl")]:"rtl"===a},O),wrapper:u()({["".concat(W,"-rtl")]:"rtl"===a},O),groupWrapper:u()({["".concat(S,"-group-wrapper-sm")]:"small"===L,["".concat(S,"-group-wrapper-lg")]:"large"===L,["".concat(S,"-group-wrapper-rtl")]:"rtl"===a,["".concat(S,"-group-wrapper-").concat(_)]:H},(0,q.Z)("".concat(S,"-group-wrapper"),A,N),O)}},E)))});em._InternalPanelDoNotUseOrYouWillBeFired=e=>r.createElement(X.ZP,{theme:{components:{InputNumber:{handleVisible:!0}}}},r.createElement(em,Object.assign({},e)));var eg=em},65863:function(e,t,n){"use strict";n.d(t,{Z:function(){return E},n:function(){return x}});var r=n(2265),o=n(36760),a=n.n(o),i=n(2027),c=n(28791),l=n(12757),s=n(71744),u=n(86586),d=n(33759),f=n(39109),p=n(65658),m=n(39164),g=n(31282),h=n(64024),v=n(56250),b=n(39725),y=e=>{let t;return"object"==typeof e&&(null==e?void 0:e.clearIcon)?t=e:e&&(t={clearIcon:r.createElement(b.Z,null)}),t},w=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};function x(e,t){if(!e)return;e.focus(t);let{cursor:n}=t||{};if(n){let t=e.value.length;switch(n){case"start":e.setSelectionRange(0,0);break;case"end":e.setSelectionRange(t,t);break;default:e.setSelectionRange(0,t)}}}var E=(0,r.forwardRef)((e,t)=>{var n;let{prefixCls:o,bordered:b=!0,status:x,size:E,disabled:S,onBlur:C,onFocus:Z,suffix:O,allowClear:k,addonAfter:M,addonBefore:j,className:I,style:R,styles:N,rootClassName:P,onChange:F,classNames:T,variant:A}=e,L=w(e,["prefixCls","bordered","status","size","disabled","onBlur","onFocus","suffix","allowClear","addonAfter","addonBefore","className","style","styles","rootClassName","onChange","classNames","variant"]),{getPrefixCls:z,direction:_,input:H}=r.useContext(s.E_),B=z("input",o),D=(0,r.useRef)(null),W=(0,h.Z)(B),[V,q,G]=(0,g.ZP)(B,W),{compactSize:X,compactItemClassnames:U}=(0,p.ri)(B,_),$=(0,d.Z)(e=>{var t;return null!==(t=null!=E?E:X)&&void 0!==t?t:e}),K=r.useContext(u.Z),{status:Y,hasFeedback:Q,feedbackIcon:J}=(0,r.useContext)(f.aM),ee=(0,l.F)(Y,x),et=!!(e.prefix||e.suffix||e.allowClear||e.showCount)||!!Q;(0,r.useRef)(et);let en=(0,m.Z)(D,!0),er=(Q||O)&&r.createElement(r.Fragment,null,O,Q&&J),eo=y(k),[ea,ei]=(0,v.Z)(A,b);return V(r.createElement(i.Z,Object.assign({ref:(0,c.sQ)(t,D),prefixCls:B,autoComplete:null==H?void 0:H.autoComplete},L,{disabled:null!=S?S:K,onBlur:e=>{en(),null==C||C(e)},onFocus:e=>{en(),null==Z||Z(e)},style:Object.assign(Object.assign({},null==H?void 0:H.style),R),styles:Object.assign(Object.assign({},null==H?void 0:H.styles),N),suffix:er,allowClear:eo,className:a()(I,P,G,W,U,null==H?void 0:H.className),onChange:e=>{en(),null==F||F(e)},addonAfter:M&&r.createElement(p.BR,null,r.createElement(f.Ux,{override:!0,status:!0},M)),addonBefore:j&&r.createElement(p.BR,null,r.createElement(f.Ux,{override:!0,status:!0},j)),classNames:Object.assign(Object.assign(Object.assign({},T),null==H?void 0:H.classNames),{input:a()({["".concat(B,"-sm")]:"small"===$,["".concat(B,"-lg")]:"large"===$,["".concat(B,"-rtl")]:"rtl"===_},null==T?void 0:T.input,null===(n=null==H?void 0:H.classNames)||void 0===n?void 0:n.input,q),variant:a()({["".concat(B,"-").concat(ea)]:ei},(0,l.Z)(B,ee)),affixWrapper:a()({["".concat(B,"-affix-wrapper-sm")]:"small"===$,["".concat(B,"-affix-wrapper-lg")]:"large"===$,["".concat(B,"-affix-wrapper-rtl")]:"rtl"===_},q),wrapper:a()({["".concat(B,"-group-rtl")]:"rtl"===_},q),groupWrapper:a()({["".concat(B,"-group-wrapper-sm")]:"small"===$,["".concat(B,"-group-wrapper-lg")]:"large"===$,["".concat(B,"-group-wrapper-rtl")]:"rtl"===_,["".concat(B,"-group-wrapper-").concat(ea)]:ei},(0,l.Z)("".concat(B,"-group-wrapper"),ee,Q),q)})})))})},90464:function(e,t,n){"use strict";n.d(t,{Z:function(){return z}});var r,o=n(2265),a=n(39725),i=n(36760),c=n.n(i),l=n(1119),s=n(11993),u=n(31686),d=n(83145),f=n(26365),p=n(6989),m=n(2027),g=n(96032),h=n(55041),v=n(50506),b=n(41154),y=n(31474),w=n(27380),x=n(53346),E=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","font-variant","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break","white-space"],S={},C=["prefixCls","onPressEnter","defaultValue","value","autoSize","onResize","className","style","disabled","onChange","onInternalAutoSize"],Z=o.forwardRef(function(e,t){var n=e.prefixCls,a=(e.onPressEnter,e.defaultValue),i=e.value,d=e.autoSize,m=e.onResize,g=e.className,h=e.style,Z=e.disabled,O=e.onChange,k=(e.onInternalAutoSize,(0,p.Z)(e,C)),M=(0,v.Z)(a,{value:i,postState:function(e){return null!=e?e:""}}),j=(0,f.Z)(M,2),I=j[0],R=j[1],N=o.useRef();o.useImperativeHandle(t,function(){return{textArea:N.current}});var P=o.useMemo(function(){return d&&"object"===(0,b.Z)(d)?[d.minRows,d.maxRows]:[]},[d]),F=(0,f.Z)(P,2),T=F[0],A=F[1],L=!!d,z=function(){try{if(document.activeElement===N.current){var e=N.current,t=e.selectionStart,n=e.selectionEnd,r=e.scrollTop;N.current.setSelectionRange(t,n),N.current.scrollTop=r}}catch(e){}},_=o.useState(2),H=(0,f.Z)(_,2),B=H[0],D=H[1],W=o.useState(),V=(0,f.Z)(W,2),q=V[0],G=V[1],X=function(){D(0)};(0,w.Z)(function(){L&&X()},[i,T,A,L]),(0,w.Z)(function(){if(0===B)D(1);else if(1===B){var e=function(e){var t,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;r||((r=document.createElement("textarea")).setAttribute("tab-index","-1"),r.setAttribute("aria-hidden","true"),document.body.appendChild(r)),e.getAttribute("wrap")?r.setAttribute("wrap",e.getAttribute("wrap")):r.removeAttribute("wrap");var i=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.getAttribute("id")||e.getAttribute("data-reactid")||e.getAttribute("name");if(t&&S[n])return S[n];var r=window.getComputedStyle(e),o=r.getPropertyValue("box-sizing")||r.getPropertyValue("-moz-box-sizing")||r.getPropertyValue("-webkit-box-sizing"),a=parseFloat(r.getPropertyValue("padding-bottom"))+parseFloat(r.getPropertyValue("padding-top")),i=parseFloat(r.getPropertyValue("border-bottom-width"))+parseFloat(r.getPropertyValue("border-top-width")),c={sizingStyle:E.map(function(e){return"".concat(e,":").concat(r.getPropertyValue(e))}).join(";"),paddingSize:a,borderSize:i,boxSizing:o};return t&&n&&(S[n]=c),c}(e,n),c=i.paddingSize,l=i.borderSize,s=i.boxSizing,u=i.sizingStyle;r.setAttribute("style","".concat(u,";").concat("\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n pointer-events: none !important;\n")),r.value=e.value||e.placeholder||"";var d=void 0,f=void 0,p=r.scrollHeight;if("border-box"===s?p+=l:"content-box"===s&&(p-=c),null!==o||null!==a){r.value=" ";var m=r.scrollHeight-c;null!==o&&(d=m*o,"border-box"===s&&(d=d+c+l),p=Math.max(d,p)),null!==a&&(f=m*a,"border-box"===s&&(f=f+c+l),t=p>f?"":"hidden",p=Math.min(f,p))}var g={height:p,overflowY:t,resize:"none"};return d&&(g.minHeight=d),f&&(g.maxHeight=f),g}(N.current,!1,T,A);D(2),G(e)}else z()},[B]);var U=o.useRef(),$=function(){x.Z.cancel(U.current)};o.useEffect(function(){return $},[]);var K=(0,u.Z)((0,u.Z)({},h),L?q:null);return(0===B||1===B)&&(K.overflowY="hidden",K.overflowX="hidden"),o.createElement(y.Z,{onResize:function(e){2===B&&(null==m||m(e),d&&($(),U.current=(0,x.Z)(function(){X()})))},disabled:!(d||m)},o.createElement("textarea",(0,l.Z)({},k,{ref:N,style:K,className:c()(n,g,(0,s.Z)({},"".concat(n,"-disabled"),Z)),disabled:Z,value:I,onChange:function(e){R(e.target.value),null==O||O(e)}})))}),O=["defaultValue","value","onFocus","onBlur","onChange","allowClear","maxLength","onCompositionStart","onCompositionEnd","suffix","prefixCls","showCount","count","className","style","disabled","hidden","classNames","styles","onResize"],k=o.forwardRef(function(e,t){var n,r,a,i=e.defaultValue,b=e.value,y=e.onFocus,w=e.onBlur,x=e.onChange,E=e.allowClear,S=e.maxLength,C=e.onCompositionStart,k=e.onCompositionEnd,M=e.suffix,j=e.prefixCls,I=void 0===j?"rc-textarea":j,R=e.showCount,N=e.count,P=e.className,F=e.style,T=e.disabled,A=e.hidden,L=e.classNames,z=e.styles,_=e.onResize,H=(0,p.Z)(e,O),B=(0,v.Z)(i,{value:b,defaultValue:i}),D=(0,f.Z)(B,2),W=D[0],V=D[1],q=null==W?"":String(W),G=o.useState(!1),X=(0,f.Z)(G,2),U=X[0],$=X[1],K=o.useRef(!1),Y=o.useState(null),Q=(0,f.Z)(Y,2),J=Q[0],ee=Q[1],et=(0,o.useRef)(null),en=function(){var e;return null===(e=et.current)||void 0===e?void 0:e.textArea},er=function(){en().focus()};(0,o.useImperativeHandle)(t,function(){return{resizableTextArea:et.current,focus:er,blur:function(){en().blur()}}}),(0,o.useEffect)(function(){$(function(e){return!T&&e})},[T]);var eo=o.useState(null),ea=(0,f.Z)(eo,2),ei=ea[0],ec=ea[1];o.useEffect(function(){if(ei){var e;(e=en()).setSelectionRange.apply(e,(0,d.Z)(ei))}},[ei]);var el=(0,g.Z)(N,R),es=null!==(n=el.max)&&void 0!==n?n:S,eu=Number(es)>0,ed=el.strategy(q),ef=!!es&&ed>es,ep=function(e,t){var n=t;!K.current&&el.exceedFormatter&&el.max&&el.strategy(t)>el.max&&(n=el.exceedFormatter(t,{max:el.max}),t!==n&&ec([en().selectionStart||0,en().selectionEnd||0])),V(n),(0,h.rJ)(e.currentTarget,e,x,n)},em=M;el.show&&(a=el.showFormatter?el.showFormatter({value:q,count:ed,maxLength:es}):"".concat(ed).concat(eu?" / ".concat(es):""),em=o.createElement(o.Fragment,null,em,o.createElement("span",{className:c()("".concat(I,"-data-count"),null==L?void 0:L.count),style:null==z?void 0:z.count},a)));var eg=!H.autoSize&&!R&&!E;return o.createElement(m.Q,{value:q,allowClear:E,handleReset:function(e){V(""),er(),(0,h.rJ)(en(),e,x)},suffix:em,prefixCls:I,classNames:(0,u.Z)((0,u.Z)({},L),{},{affixWrapper:c()(null==L?void 0:L.affixWrapper,(r={},(0,s.Z)(r,"".concat(I,"-show-count"),R),(0,s.Z)(r,"".concat(I,"-textarea-allow-clear"),E),r))}),disabled:T,focused:U,className:c()(P,ef&&"".concat(I,"-out-of-range")),style:(0,u.Z)((0,u.Z)({},F),J&&!eg?{height:"auto"}:{}),dataAttrs:{affixWrapper:{"data-count":"string"==typeof a?a:void 0}},hidden:A},o.createElement(Z,(0,l.Z)({},H,{maxLength:S,onKeyDown:function(e){var t=H.onPressEnter,n=H.onKeyDown;"Enter"===e.key&&t&&t(e),null==n||n(e)},onChange:function(e){ep(e,e.target.value)},onFocus:function(e){$(!0),null==y||y(e)},onBlur:function(e){$(!1),null==w||w(e)},onCompositionStart:function(e){K.current=!0,null==C||C(e)},onCompositionEnd:function(e){K.current=!1,ep(e,e.currentTarget.value),null==k||k(e)},className:c()(null==L?void 0:L.textarea),style:(0,u.Z)((0,u.Z)({},null==z?void 0:z.textarea),{},{resize:null==F?void 0:F.resize}),disabled:T,prefixCls:I,onResize:function(e){var t;null==_||_(e),null!==(t=en())&&void 0!==t&&t.style.height&&ee(!0)},ref:et})))}),M=n(12757),j=n(71744),I=n(86586),R=n(33759),N=n(39109),P=n(65863),F=n(31282),T=n(64024),A=n(56250),L=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n},z=(0,o.forwardRef)((e,t)=>{var n;let r;let{prefixCls:i,bordered:l=!0,size:s,disabled:u,status:d,allowClear:f,classNames:p,rootClassName:m,className:g,variant:h}=e,v=L(e,["prefixCls","bordered","size","disabled","status","allowClear","classNames","rootClassName","className","variant"]),{getPrefixCls:b,direction:y}=o.useContext(j.E_),w=(0,R.Z)(s),x=o.useContext(I.Z),{status:E,hasFeedback:S,feedbackIcon:C}=o.useContext(N.aM),Z=(0,M.F)(E,d),O=o.useRef(null);o.useImperativeHandle(t,()=>{var e;return{resizableTextArea:null===(e=O.current)||void 0===e?void 0:e.resizableTextArea,focus:e=>{var t,n;(0,P.n)(null===(n=null===(t=O.current)||void 0===t?void 0:t.resizableTextArea)||void 0===n?void 0:n.textArea,e)},blur:()=>{var e;return null===(e=O.current)||void 0===e?void 0:e.blur()}}});let z=b("input",i);"object"==typeof f&&(null==f?void 0:f.clearIcon)?r=f:f&&(r={clearIcon:o.createElement(a.Z,null)});let _=(0,T.Z)(z),[H,B,D]=(0,F.ZP)(z,_),[W,V]=(0,A.Z)(h,l);return H(o.createElement(k,Object.assign({},v,{disabled:null!=u?u:x,allowClear:r,className:c()(D,_,g,m),classNames:Object.assign(Object.assign({},p),{textarea:c()({["".concat(z,"-sm")]:"small"===w,["".concat(z,"-lg")]:"large"===w},B,null==p?void 0:p.textarea),variant:c()({["".concat(z,"-").concat(W)]:V},(0,M.Z)(z,Z)),affixWrapper:c()("".concat(z,"-textarea-affix-wrapper"),{["".concat(z,"-affix-wrapper-rtl")]:"rtl"===y,["".concat(z,"-affix-wrapper-sm")]:"small"===w,["".concat(z,"-affix-wrapper-lg")]:"large"===w,["".concat(z,"-textarea-show-count")]:e.showCount||(null===(n=e.count)||void 0===n?void 0:n.show)},B)}),prefixCls:z,suffix:S&&o.createElement("span",{className:"".concat(z,"-textarea-suffix")},C),ref:O})))})},39164:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(2265);function o(e,t){let n=(0,r.useRef)([]),o=()=>{n.current.push(setTimeout(()=>{var t,n,r,o;(null===(t=e.current)||void 0===t?void 0:t.input)&&(null===(n=e.current)||void 0===n?void 0:n.input.getAttribute("type"))==="password"&&(null===(r=e.current)||void 0===r?void 0:r.input.hasAttribute("value"))&&(null===(o=e.current)||void 0===o||o.input.removeAttribute("value"))}))};return(0,r.useEffect)(()=>(t&&o(),()=>n.current.forEach(e=>{e&&clearTimeout(e)})),[]),o}},64482:function(e,t,n){"use strict";n.d(t,{default:function(){return M}});var r=n(2265),o=n(36760),a=n.n(o),i=n(71744),c=n(39109),l=n(31282),s=n(65863),u=n(97416),d=n(6520),f=n(18694),p=n(28791),m=n(39164),g=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let h=e=>e?r.createElement(d.Z,null):r.createElement(u.Z,null),v={click:"onClick",hover:"onMouseOver"},b=r.forwardRef((e,t)=>{let{visibilityToggle:n=!0}=e,o="object"==typeof n&&void 0!==n.visible,[c,l]=(0,r.useState)(()=>!!o&&n.visible),u=(0,r.useRef)(null);r.useEffect(()=>{o&&l(n.visible)},[o,n]);let d=(0,m.Z)(u),b=()=>{let{disabled:t}=e;t||(c&&d(),l(e=>{var t;let r=!e;return"object"==typeof n&&(null===(t=n.onVisibleChange)||void 0===t||t.call(n,r)),r}))},{className:y,prefixCls:w,inputPrefixCls:x,size:E}=e,S=g(e,["className","prefixCls","inputPrefixCls","size"]),{getPrefixCls:C}=r.useContext(i.E_),Z=C("input",x),O=C("input-password",w),k=n&&(t=>{let{action:n="click",iconRender:o=h}=e,a=v[n]||"",i=o(c);return r.cloneElement(r.isValidElement(i)?i:r.createElement("span",null,i),{[a]:b,className:"".concat(t,"-icon"),key:"passwordIcon",onMouseDown:e=>{e.preventDefault()},onMouseUp:e=>{e.preventDefault()}})})(O),M=a()(O,y,{["".concat(O,"-").concat(E)]:!!E}),j=Object.assign(Object.assign({},(0,f.Z)(S,["suffix","iconRender","visibilityToggle"])),{type:c?"text":"password",className:M,prefixCls:Z,suffix:k});return E&&(j.size=E),r.createElement(s.Z,Object.assign({ref:(0,p.sQ)(t,u)},j))});var y=n(29436),w=n(19722),x=n(73002),E=n(33759),S=n(65658),C=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let Z=r.forwardRef((e,t)=>{let n;let{prefixCls:o,inputPrefixCls:c,className:l,size:u,suffix:d,enterButton:f=!1,addonAfter:m,loading:g,disabled:h,onSearch:v,onChange:b,onCompositionStart:Z,onCompositionEnd:O}=e,k=C(e,["prefixCls","inputPrefixCls","className","size","suffix","enterButton","addonAfter","loading","disabled","onSearch","onChange","onCompositionStart","onCompositionEnd"]),{getPrefixCls:M,direction:j}=r.useContext(i.E_),I=r.useRef(!1),R=M("input-search",o),N=M("input",c),{compactSize:P}=(0,S.ri)(R,j),F=(0,E.Z)(e=>{var t;return null!==(t=null!=u?u:P)&&void 0!==t?t:e}),T=r.useRef(null),A=e=>{var t;document.activeElement===(null===(t=T.current)||void 0===t?void 0:t.input)&&e.preventDefault()},L=e=>{var t,n;v&&v(null===(n=null===(t=T.current)||void 0===t?void 0:t.input)||void 0===n?void 0:n.value,e,{source:"input"})},z="boolean"==typeof f?r.createElement(y.Z,null):null,_="".concat(R,"-button"),H=f||{},B=H.type&&!0===H.type.__ANT_BUTTON;n=B||"button"===H.type?(0,w.Tm)(H,Object.assign({onMouseDown:A,onClick:e=>{var t,n;null===(n=null===(t=null==H?void 0:H.props)||void 0===t?void 0:t.onClick)||void 0===n||n.call(t,e),L(e)},key:"enterButton"},B?{className:_,size:F}:{})):r.createElement(x.ZP,{className:_,type:f?"primary":void 0,size:F,disabled:h,key:"enterButton",onMouseDown:A,onClick:L,loading:g,icon:z},f),m&&(n=[n,(0,w.Tm)(m,{key:"addonAfter"})]);let D=a()(R,{["".concat(R,"-rtl")]:"rtl"===j,["".concat(R,"-").concat(F)]:!!F,["".concat(R,"-with-button")]:!!f},l);return r.createElement(s.Z,Object.assign({ref:(0,p.sQ)(T,t),onPressEnter:e=>{I.current||g||L(e)}},k,{size:F,onCompositionStart:e=>{I.current=!0,null==Z||Z(e)},onCompositionEnd:e=>{I.current=!1,null==O||O(e)},prefixCls:N,addonAfter:n,suffix:d,onChange:e=>{e&&e.target&&"click"===e.type&&v&&v(e.target.value,e,{source:"clear"}),b&&b(e)},className:D,disabled:h}))});var O=n(90464);let k=s.Z;k.Group=e=>{let{getPrefixCls:t,direction:n}=(0,r.useContext)(i.E_),{prefixCls:o,className:s}=e,u=t("input-group",o),d=t("input"),[f,p]=(0,l.ZP)(d),m=a()(u,{["".concat(u,"-lg")]:"large"===e.size,["".concat(u,"-sm")]:"small"===e.size,["".concat(u,"-compact")]:e.compact,["".concat(u,"-rtl")]:"rtl"===n},p,s),g=(0,r.useContext)(c.aM),h=(0,r.useMemo)(()=>Object.assign(Object.assign({},g),{isFormItemInput:!1}),[g]);return f(r.createElement("span",{className:m,style:e.style,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,onFocus:e.onFocus,onBlur:e.onBlur},r.createElement(c.aM.Provider,{value:h},e.children)))},k.Search=Z,k.TextArea=O.Z,k.Password=b;var M=k},31282:function(e,t,n){"use strict";n.d(t,{ik:function(){return p},nz:function(){return u},s7:function(){return m},x0:function(){return f}});var r=n(352),o=n(12918),a=n(17691),i=n(80669),c=n(3104),l=n(37433),s=n(65265);let u=e=>({"&::-moz-placeholder":{opacity:1},"&::placeholder":{color:e,userSelect:"none"},"&:placeholder-shown":{textOverflow:"ellipsis"}}),d=e=>{let{paddingBlockLG:t,lineHeightLG:n,borderRadiusLG:o,paddingInlineLG:a}=e;return{padding:"".concat((0,r.bf)(t)," ").concat((0,r.bf)(a)),fontSize:e.inputFontSizeLG,lineHeight:n,borderRadius:o}},f=e=>({padding:"".concat((0,r.bf)(e.paddingBlockSM)," ").concat((0,r.bf)(e.paddingInlineSM)),fontSize:e.inputFontSizeSM,borderRadius:e.borderRadiusSM}),p=e=>Object.assign(Object.assign({position:"relative",display:"inline-block",width:"100%",minWidth:0,padding:"".concat((0,r.bf)(e.paddingBlock)," ").concat((0,r.bf)(e.paddingInline)),color:e.colorText,fontSize:e.inputFontSize,lineHeight:e.lineHeight,borderRadius:e.borderRadius,transition:"all ".concat(e.motionDurationMid)},u(e.colorTextPlaceholder)),{"textarea&":{maxWidth:"100%",height:"auto",minHeight:e.controlHeight,lineHeight:e.lineHeight,verticalAlign:"bottom",transition:"all ".concat(e.motionDurationSlow,", height 0s"),resize:"vertical"},"&-lg":Object.assign({},d(e)),"&-sm":Object.assign({},f(e)),"&-rtl":{direction:"rtl"},"&-textarea-rtl":{direction:"rtl"}}),m=e=>{let{componentCls:t,antCls:n}=e;return{position:"relative",display:"table",width:"100%",borderCollapse:"separate",borderSpacing:0,"&[class*='col-']":{paddingInlineEnd:e.paddingXS,"&:last-child":{paddingInlineEnd:0}},["&-lg ".concat(t,", &-lg > ").concat(t,"-group-addon")]:Object.assign({},d(e)),["&-sm ".concat(t,", &-sm > ").concat(t,"-group-addon")]:Object.assign({},f(e)),["&-lg ".concat(n,"-select-single ").concat(n,"-select-selector")]:{height:e.controlHeightLG},["&-sm ".concat(n,"-select-single ").concat(n,"-select-selector")]:{height:e.controlHeightSM},["> ".concat(t)]:{display:"table-cell","&:not(:first-child):not(:last-child)":{borderRadius:0}},["".concat(t,"-group")]:{"&-addon, &-wrap":{display:"table-cell",width:1,whiteSpace:"nowrap",verticalAlign:"middle","&:not(:first-child):not(:last-child)":{borderRadius:0}},"&-wrap > *":{display:"block !important"},"&-addon":{position:"relative",padding:"0 ".concat((0,r.bf)(e.paddingInline)),color:e.colorText,fontWeight:"normal",fontSize:e.inputFontSize,textAlign:"center",borderRadius:e.borderRadius,transition:"all ".concat(e.motionDurationSlow),lineHeight:1,["".concat(n,"-select")]:{margin:"".concat((0,r.bf)(e.calc(e.paddingBlock).add(1).mul(-1).equal())," ").concat((0,r.bf)(e.calc(e.paddingInline).mul(-1).equal())),["&".concat(n,"-select-single:not(").concat(n,"-select-customize-input):not(").concat(n,"-pagination-size-changer)")]:{["".concat(n,"-select-selector")]:{backgroundColor:"inherit",border:"".concat((0,r.bf)(e.lineWidth)," ").concat(e.lineType," transparent"),boxShadow:"none"}},"&-open, &-focused":{["".concat(n,"-select-selector")]:{color:e.colorPrimary}}},["".concat(n,"-cascader-picker")]:{margin:"-9px ".concat((0,r.bf)(e.calc(e.paddingInline).mul(-1).equal())),backgroundColor:"transparent",["".concat(n,"-cascader-input")]:{textAlign:"start",border:0,boxShadow:"none"}}}},["".concat(t)]:{width:"100%",marginBottom:0,textAlign:"inherit","&:focus":{zIndex:1,borderInlineEndWidth:1},"&:hover":{zIndex:1,borderInlineEndWidth:1,["".concat(t,"-search-with-button &")]:{zIndex:0}}},["> ".concat(t,":first-child, ").concat(t,"-group-addon:first-child")]:{borderStartEndRadius:0,borderEndEndRadius:0,["".concat(n,"-select ").concat(n,"-select-selector")]:{borderStartEndRadius:0,borderEndEndRadius:0}},["> ".concat(t,"-affix-wrapper")]:{["&:not(:first-child) ".concat(t)]:{borderStartStartRadius:0,borderEndStartRadius:0},["&:not(:last-child) ".concat(t)]:{borderStartEndRadius:0,borderEndEndRadius:0}},["> ".concat(t,":last-child, ").concat(t,"-group-addon:last-child")]:{borderStartStartRadius:0,borderEndStartRadius:0,["".concat(n,"-select ").concat(n,"-select-selector")]:{borderStartStartRadius:0,borderEndStartRadius:0}},["".concat(t,"-affix-wrapper")]:{"&:not(:last-child)":{borderStartEndRadius:0,borderEndEndRadius:0,["".concat(t,"-search &")]:{borderStartStartRadius:e.borderRadius,borderEndStartRadius:e.borderRadius}},["&:not(:first-child), ".concat(t,"-search &:not(:first-child)")]:{borderStartStartRadius:0,borderEndStartRadius:0}},["&".concat(t,"-group-compact")]:Object.assign(Object.assign({display:"block"},(0,o.dF)()),{["".concat(t,"-group-addon, ").concat(t,"-group-wrap, > ").concat(t)]:{"&:not(:first-child):not(:last-child)":{borderInlineEndWidth:e.lineWidth,"&:hover":{zIndex:1},"&:focus":{zIndex:1}}},"& > *":{display:"inline-block",float:"none",verticalAlign:"top",borderRadius:0},["\n & > ".concat(t,"-affix-wrapper,\n & > ").concat(t,"-number-affix-wrapper,\n & > ").concat(n,"-picker-range\n ")]:{display:"inline-flex"},"& > *:not(:last-child)":{marginInlineEnd:e.calc(e.lineWidth).mul(-1).equal(),borderInlineEndWidth:e.lineWidth},["".concat(t)]:{float:"none"},["& > ".concat(n,"-select > ").concat(n,"-select-selector,\n & > ").concat(n,"-select-auto-complete ").concat(t,",\n & > ").concat(n,"-cascader-picker ").concat(t,",\n & > ").concat(t,"-group-wrapper ").concat(t)]:{borderInlineEndWidth:e.lineWidth,borderRadius:0,"&:hover":{zIndex:1},"&:focus":{zIndex:1}},["& > ".concat(n,"-select-focused")]:{zIndex:1},["& > ".concat(n,"-select > ").concat(n,"-select-arrow")]:{zIndex:1},["& > *:first-child,\n & > ".concat(n,"-select:first-child > ").concat(n,"-select-selector,\n & > ").concat(n,"-select-auto-complete:first-child ").concat(t,",\n & > ").concat(n,"-cascader-picker:first-child ").concat(t)]:{borderStartStartRadius:e.borderRadius,borderEndStartRadius:e.borderRadius},["& > *:last-child,\n & > ".concat(n,"-select:last-child > ").concat(n,"-select-selector,\n & > ").concat(n,"-cascader-picker:last-child ").concat(t,",\n & > ").concat(n,"-cascader-picker-focused:last-child ").concat(t)]:{borderInlineEndWidth:e.lineWidth,borderStartEndRadius:e.borderRadius,borderEndEndRadius:e.borderRadius},["& > ".concat(n,"-select-auto-complete ").concat(t)]:{verticalAlign:"top"},["".concat(t,"-group-wrapper + ").concat(t,"-group-wrapper")]:{marginInlineStart:e.calc(e.lineWidth).mul(-1).equal(),["".concat(t,"-affix-wrapper")]:{borderRadius:0}},["".concat(t,"-group-wrapper:not(:last-child)")]:{["&".concat(t,"-search > ").concat(t,"-group")]:{["& > ".concat(t,"-group-addon > ").concat(t,"-search-button")]:{borderRadius:0},["& > ".concat(t)]:{borderStartStartRadius:e.borderRadius,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:e.borderRadius}}}})}},g=e=>{let{componentCls:t,controlHeightSM:n,lineWidth:r,calc:a}=e,i=a(n).sub(a(r).mul(2)).sub(16).div(2).equal();return{[t]:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},(0,o.Wf)(e)),p(e)),(0,s.qG)(e)),(0,s.H8)(e)),(0,s.Mu)(e)),{'&[type="color"]':{height:e.controlHeight,["&".concat(t,"-lg")]:{height:e.controlHeightLG},["&".concat(t,"-sm")]:{height:n,paddingTop:i,paddingBottom:i}},'&[type="search"]::-webkit-search-cancel-button, &[type="search"]::-webkit-search-decoration':{"-webkit-appearance":"none"}})}},h=e=>{let{componentCls:t}=e;return{["".concat(t,"-clear-icon")]:{margin:0,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,verticalAlign:-1,cursor:"pointer",transition:"color ".concat(e.motionDurationSlow),"&:hover":{color:e.colorTextTertiary},"&:active":{color:e.colorText},"&-hidden":{visibility:"hidden"},"&-has-suffix":{margin:"0 ".concat((0,r.bf)(e.inputAffixPadding))}}}},v=e=>{let{componentCls:t,inputAffixPadding:n,colorTextDescription:r,motionDurationSlow:o,colorIcon:a,colorIconHover:i,iconCls:c}=e;return{["".concat(t,"-affix-wrapper")]:Object.assign(Object.assign(Object.assign(Object.assign({},p(e)),{display:"inline-flex",["&:not(".concat(t,"-disabled):hover")]:{zIndex:1,["".concat(t,"-search-with-button &")]:{zIndex:0}},"&-focused, &:focus":{zIndex:1},["> input".concat(t)]:{padding:0,fontSize:"inherit",border:"none",borderRadius:0,outline:"none",background:"transparent",color:"inherit","&::-ms-reveal":{display:"none"},"&:focus":{boxShadow:"none !important"}},"&::before":{display:"inline-block",width:0,visibility:"hidden",content:'"\\a0"'},["".concat(t)]:{"&-prefix, &-suffix":{display:"flex",flex:"none",alignItems:"center","> *:not(:last-child)":{marginInlineEnd:e.paddingXS}},"&-show-count-suffix":{color:r},"&-show-count-has-suffix":{marginInlineEnd:e.paddingXXS},"&-prefix":{marginInlineEnd:n},"&-suffix":{marginInlineStart:n}}}),h(e)),{["".concat(c).concat(t,"-password-icon")]:{color:a,cursor:"pointer",transition:"all ".concat(o),"&:hover":{color:i}}})}},b=e=>{let{componentCls:t,borderRadiusLG:n,borderRadiusSM:r}=e;return{["".concat(t,"-group")]:Object.assign(Object.assign(Object.assign({},(0,o.Wf)(e)),m(e)),{"&-rtl":{direction:"rtl"},"&-wrapper":Object.assign(Object.assign(Object.assign({display:"inline-block",width:"100%",textAlign:"start",verticalAlign:"top","&-rtl":{direction:"rtl"},"&-lg":{["".concat(t,"-group-addon")]:{borderRadius:n,fontSize:e.inputFontSizeLG}},"&-sm":{["".concat(t,"-group-addon")]:{borderRadius:r}}},(0,s.ir)(e)),(0,s.S5)(e)),{["&:not(".concat(t,"-compact-first-item):not(").concat(t,"-compact-last-item)").concat(t,"-compact-item")]:{["".concat(t,", ").concat(t,"-group-addon")]:{borderRadius:0}},["&:not(".concat(t,"-compact-last-item)").concat(t,"-compact-first-item")]:{["".concat(t,", ").concat(t,"-group-addon")]:{borderStartEndRadius:0,borderEndEndRadius:0}},["&:not(".concat(t,"-compact-first-item)").concat(t,"-compact-last-item")]:{["".concat(t,", ").concat(t,"-group-addon")]:{borderStartStartRadius:0,borderEndStartRadius:0}}})})}},y=e=>{let{componentCls:t,antCls:n}=e,r="".concat(t,"-search");return{[r]:{["".concat(t)]:{"&:hover, &:focus":{borderColor:e.colorPrimaryHover,["+ ".concat(t,"-group-addon ").concat(r,"-button:not(").concat(n,"-btn-primary)")]:{borderInlineStartColor:e.colorPrimaryHover}}},["".concat(t,"-affix-wrapper")]:{borderRadius:0},["".concat(t,"-lg")]:{lineHeight:e.calc(e.lineHeightLG).sub(2e-4).equal({unit:!1})},["> ".concat(t,"-group")]:{["> ".concat(t,"-group-addon:last-child")]:{insetInlineStart:-1,padding:0,border:0,["".concat(r,"-button")]:{paddingTop:0,paddingBottom:0,borderStartStartRadius:0,borderStartEndRadius:e.borderRadius,borderEndEndRadius:e.borderRadius,borderEndStartRadius:0,boxShadow:"none"},["".concat(r,"-button:not(").concat(n,"-btn-primary)")]:{color:e.colorTextDescription,"&:hover":{color:e.colorPrimaryHover},"&:active":{color:e.colorPrimaryActive},["&".concat(n,"-btn-loading::before")]:{insetInlineStart:0,insetInlineEnd:0,insetBlockStart:0,insetBlockEnd:0}}}},["".concat(r,"-button")]:{height:e.controlHeight,"&:hover, &:focus":{zIndex:1}},["&-large ".concat(r,"-button")]:{height:e.controlHeightLG},["&-small ".concat(r,"-button")]:{height:e.controlHeightSM},"&-rtl":{direction:"rtl"},["&".concat(t,"-compact-item")]:{["&:not(".concat(t,"-compact-last-item)")]:{["".concat(t,"-group-addon")]:{["".concat(t,"-search-button")]:{marginInlineEnd:e.calc(e.lineWidth).mul(-1).equal(),borderRadius:0}}},["&:not(".concat(t,"-compact-first-item)")]:{["".concat(t,",").concat(t,"-affix-wrapper")]:{borderRadius:0}},["> ".concat(t,"-group-addon ").concat(t,"-search-button,\n > ").concat(t,",\n ").concat(t,"-affix-wrapper")]:{"&:hover,&:focus,&:active":{zIndex:2}},["> ".concat(t,"-affix-wrapper-focused")]:{zIndex:2}}}}},w=e=>{let{componentCls:t,paddingLG:n}=e,r="".concat(t,"-textarea");return{[r]:{position:"relative","&-show-count":{["> ".concat(t)]:{height:"100%"},["".concat(t,"-data-count")]:{position:"absolute",bottom:e.calc(e.fontSize).mul(e.lineHeight).mul(-1).equal(),insetInlineEnd:0,color:e.colorTextDescription,whiteSpace:"nowrap",pointerEvents:"none"}},"&-allow-clear":{["> ".concat(t)]:{paddingInlineEnd:n}},["&-affix-wrapper".concat(r,"-has-feedback")]:{["".concat(t)]:{paddingInlineEnd:n}},["&-affix-wrapper".concat(t,"-affix-wrapper")]:{padding:0,["> textarea".concat(t)]:{fontSize:"inherit",border:"none",outline:"none",background:"transparent","&:focus":{boxShadow:"none !important"}},["".concat(t,"-suffix")]:{margin:0,"> *:not(:last-child)":{marginInline:0},["".concat(t,"-clear-icon")]:{position:"absolute",insetInlineEnd:e.paddingXS,insetBlockStart:e.paddingXS},["".concat(r,"-suffix")]:{position:"absolute",top:0,insetInlineEnd:e.paddingInline,bottom:0,zIndex:1,display:"inline-flex",alignItems:"center",margin:"auto",pointerEvents:"none"}}}}}},x=e=>{let{componentCls:t}=e;return{["".concat(t,"-out-of-range")]:{["&, & input, & textarea, ".concat(t,"-show-count-suffix, ").concat(t,"-data-count")]:{color:e.colorError}}}};t.ZP=(0,i.I$)("Input",e=>{let t=(0,c.TS)(e,(0,l.e)(e));return[g(t),w(t),v(t),b(t),y(t),x(t),(0,a.c)(t)]},l.T)},37433:function(e,t,n){"use strict";n.d(t,{T:function(){return a},e:function(){return o}});var r=n(3104);function o(e){return(0,r.TS)(e,{inputAffixPadding:e.paddingXXS})}let a=e=>{let{controlHeight:t,fontSize:n,lineHeight:r,lineWidth:o,controlHeightSM:a,controlHeightLG:i,fontSizeLG:c,lineHeightLG:l,paddingSM:s,controlPaddingHorizontalSM:u,controlPaddingHorizontal:d,colorFillAlter:f,colorPrimaryHover:p,colorPrimary:m,controlOutlineWidth:g,controlOutline:h,colorErrorOutline:v,colorWarningOutline:b,colorBgContainer:y}=e;return{paddingBlock:Math.max(Math.round((t-n*r)/2*10)/10-o,0),paddingBlockSM:Math.max(Math.round((a-n*r)/2*10)/10-o,0),paddingBlockLG:Math.ceil((i-c*l)/2*10)/10-o,paddingInline:s-o,paddingInlineSM:u-o,paddingInlineLG:d-o,addonBg:f,activeBorderColor:m,hoverBorderColor:p,activeShadow:"0 0 0 ".concat(g,"px ").concat(h),errorActiveShadow:"0 0 0 ".concat(g,"px ").concat(v),warningActiveShadow:"0 0 0 ".concat(g,"px ").concat(b),hoverBg:y,activeBg:y,inputFontSize:n,inputFontSizeLG:c,inputFontSizeSM:n}}},65265:function(e,t,n){"use strict";n.d(t,{$U:function(){return c},H8:function(){return g},Mu:function(){return f},S5:function(){return v},Xy:function(){return i},ir:function(){return d},qG:function(){return s}});var r=n(352),o=n(3104);let a=e=>({borderColor:e.hoverBorderColor,backgroundColor:e.hoverBg}),i=e=>({color:e.colorTextDisabled,backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,boxShadow:"none",cursor:"not-allowed",opacity:1,"&:hover:not([disabled])":Object.assign({},a((0,o.TS)(e,{hoverBorderColor:e.colorBorder,hoverBg:e.colorBgContainerDisabled})))}),c=(e,t)=>({background:e.colorBgContainer,borderWidth:e.lineWidth,borderStyle:e.lineType,borderColor:t.borderColor,"&:hover":{borderColor:t.hoverBorderColor,backgroundColor:e.hoverBg},"&:focus, &:focus-within":{borderColor:t.activeBorderColor,boxShadow:t.activeShadow,outline:0,backgroundColor:e.activeBg}}),l=(e,t)=>({["&".concat(e.componentCls,"-status-").concat(t.status,":not(").concat(e.componentCls,"-disabled)")]:Object.assign(Object.assign({},c(e,t)),{["".concat(e.componentCls,"-prefix, ").concat(e.componentCls,"-suffix")]:{color:t.affixColor}})}),s=(e,t)=>({"&-outlined":Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},c(e,{borderColor:e.colorBorder,hoverBorderColor:e.colorPrimaryHover,activeBorderColor:e.colorPrimary,activeShadow:e.activeShadow})),{["&".concat(e.componentCls,"-disabled, &[disabled]")]:Object.assign({},i(e))}),l(e,{status:"error",borderColor:e.colorError,hoverBorderColor:e.colorErrorBorderHover,activeBorderColor:e.colorError,activeShadow:e.errorActiveShadow,affixColor:e.colorError})),l(e,{status:"warning",borderColor:e.colorWarning,hoverBorderColor:e.colorWarningBorderHover,activeBorderColor:e.colorWarning,activeShadow:e.warningActiveShadow,affixColor:e.colorWarning})),t)}),u=(e,t)=>({["&".concat(e.componentCls,"-group-wrapper-status-").concat(t.status)]:{["".concat(e.componentCls,"-group-addon")]:{borderColor:t.addonBorderColor,color:t.addonColor}}}),d=e=>({"&-outlined":Object.assign(Object.assign(Object.assign({["".concat(e.componentCls,"-group")]:{"&-addon":{background:e.addonBg,border:"".concat((0,r.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.colorBorder)},"&-addon:first-child":{borderInlineEnd:0},"&-addon:last-child":{borderInlineStart:0}}},u(e,{status:"error",addonBorderColor:e.colorError,addonColor:e.colorErrorText})),u(e,{status:"warning",addonBorderColor:e.colorWarning,addonColor:e.colorWarningText})),{["&".concat(e.componentCls,"-group-wrapper-disabled")]:{["".concat(e.componentCls,"-group-addon")]:Object.assign({},i(e))}})}),f=(e,t)=>({"&-borderless":Object.assign({background:"transparent",border:"none","&:focus, &:focus-within":{outline:"none"},["&".concat(e.componentCls,"-disabled, &[disabled]")]:{color:e.colorTextDisabled}},t)}),p=(e,t)=>({background:t.bg,borderWidth:e.lineWidth,borderStyle:e.lineType,borderColor:"transparent","input&, & input, textarea&, & textarea":{color:null==t?void 0:t.inputColor},"&:hover":{background:t.hoverBg},"&:focus, &:focus-within":{outline:0,borderColor:t.activeBorderColor,backgroundColor:e.activeBg}}),m=(e,t)=>({["&".concat(e.componentCls,"-status-").concat(t.status,":not(").concat(e.componentCls,"-disabled)")]:Object.assign(Object.assign({},p(e,t)),{["".concat(e.componentCls,"-prefix, ").concat(e.componentCls,"-suffix")]:{color:t.affixColor}})}),g=(e,t)=>({"&-filled":Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},p(e,{bg:e.colorFillTertiary,hoverBg:e.colorFillSecondary,activeBorderColor:e.colorPrimary})),{["&".concat(e.componentCls,"-disabled, &[disabled]")]:Object.assign({},i(e))}),m(e,{status:"error",bg:e.colorErrorBg,hoverBg:e.colorErrorBgHover,activeBorderColor:e.colorError,inputColor:e.colorErrorText,affixColor:e.colorError})),m(e,{status:"warning",bg:e.colorWarningBg,hoverBg:e.colorWarningBgHover,activeBorderColor:e.colorWarning,inputColor:e.colorWarningText,affixColor:e.colorWarning})),t)}),h=(e,t)=>({["&".concat(e.componentCls,"-group-wrapper-status-").concat(t.status)]:{["".concat(e.componentCls,"-group-addon")]:{background:t.addonBg,color:t.addonColor}}}),v=e=>({"&-filled":Object.assign(Object.assign(Object.assign({["".concat(e.componentCls,"-group")]:{"&-addon":{background:e.colorFillTertiary},["".concat(e.componentCls,"-filled:not(:focus):not(:focus-within)")]:{"&:not(:first-child)":{borderInlineStart:"".concat((0,r.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.colorSplit)},"&:not(:last-child)":{borderInlineEnd:"".concat((0,r.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.colorSplit)}}}},h(e,{status:"error",addonBg:e.colorErrorBg,addonColor:e.colorErrorText})),h(e,{status:"warning",addonBg:e.colorWarningBg,addonColor:e.colorWarningText})),{["&".concat(e.componentCls,"-group-wrapper-disabled")]:{["".concat(e.componentCls,"-group")]:{"&-addon":{background:e.colorFillTertiary,color:e.colorTextDisabled},"&-addon:first-child":{borderInlineStart:"".concat((0,r.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.colorBorder),borderTop:"".concat((0,r.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.colorBorder),borderBottom:"".concat((0,r.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.colorBorder)},"&-addon:last-child":{borderInlineEnd:"".concat((0,r.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.colorBorder),borderTop:"".concat((0,r.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.colorBorder),borderBottom:"".concat((0,r.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.colorBorder)}}}})})},91325:function(e,t,n){"use strict";let r=(0,n(2265).createContext)(void 0);t.Z=r},13823:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(96257),o={placeholder:"Select time",rangePlaceholder:["Start time","End time"]};let a={lang:Object.assign({placeholder:"Select date",yearPlaceholder:"Select year",quarterPlaceholder:"Select quarter",monthPlaceholder:"Select month",weekPlaceholder:"Select week",rangePlaceholder:["Start date","End date"],rangeYearPlaceholder:["Start year","End year"],rangeQuarterPlaceholder:["Start quarter","End quarter"],rangeMonthPlaceholder:["Start month","End month"],rangeWeekPlaceholder:["Start week","End week"]},{locale:"en_US",today:"Today",now:"Now",backToToday:"Back to today",ok:"OK",clear:"Clear",month:"Month",year:"Year",timeSelect:"select time",dateSelect:"select date",weekSelect:"Choose a week",monthSelect:"Choose a month",yearSelect:"Choose a year",decadeSelect:"Choose a decade",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"Previous month (PageUp)",nextMonth:"Next month (PageDown)",previousYear:"Last year (Control + left)",nextYear:"Next year (Control + right)",previousDecade:"Last decade",nextDecade:"Next decade",previousCentury:"Last century",nextCentury:"Next century"}),timePickerLocale:Object.assign({},o)},i="${label} is not a valid ${type}";var c={locale:"en",Pagination:r.Z,DatePicker:a,TimePicker:o,Calendar:a,global:{placeholder:"Please select"},Table:{filterTitle:"Filter menu",filterConfirm:"OK",filterReset:"Reset",filterEmptyText:"No filters",filterCheckall:"Select all items",filterSearchPlaceholder:"Search in filters",emptyText:"No data",selectAll:"Select current page",selectInvert:"Invert current page",selectNone:"Clear all data",selectionAll:"Select all data",sortTitle:"Sort",expand:"Expand row",collapse:"Collapse row",triggerDesc:"Click to sort descending",triggerAsc:"Click to sort ascending",cancelSort:"Click to cancel sorting"},Tour:{Next:"Next",Previous:"Previous",Finish:"Finish"},Modal:{okText:"OK",cancelText:"Cancel",justOkText:"OK"},Popconfirm:{okText:"OK",cancelText:"Cancel"},Transfer:{titles:["",""],searchPlaceholder:"Search here",itemUnit:"item",itemsUnit:"items",remove:"Remove",selectCurrent:"Select current page",removeCurrent:"Remove current page",selectAll:"Select all data",removeAll:"Remove all data",selectInvert:"Invert current page"},Upload:{uploading:"Uploading...",removeFile:"Remove file",uploadError:"Upload error",previewFile:"Preview file",downloadFile:"Download file"},Empty:{description:"No data"},Icon:{icon:"icon"},Text:{edit:"Edit",copy:"Copy",copied:"Copied",expand:"Expand"},PageHeader:{back:"Back"},Form:{optional:"(optional)",defaultValidateMessages:{default:"Field validation error for ${label}",required:"Please enter ${label}",enum:"${label} must be one of [${enum}]",whitespace:"${label} cannot be a blank character",date:{format:"${label} date format is invalid",parse:"${label} cannot be converted to a date",invalid:"${label} is an invalid date"},types:{string:i,method:i,array:i,object:i,number:i,date:i,boolean:i,integer:i,float:i,regexp:i,email:i,url:i,hex:i},string:{len:"${label} must be ${len} characters",min:"${label} must be at least ${min} characters",max:"${label} must be up to ${max} characters",range:"${label} must be between ${min}-${max} characters"},number:{len:"${label} must be equal to ${len}",min:"${label} must be minimum ${min}",max:"${label} must be maximum ${max}",range:"${label} must be between ${min}-${max}"},array:{len:"Must be ${len} ${label}",min:"At least ${min} ${label}",max:"At most ${max} ${label}",range:"The amount of ${label} must be between ${min}-${max}"},pattern:{mismatch:"${label} does not match the pattern ${pattern}"}}},Image:{preview:"Preview"},QRCode:{expired:"QR code expired",refresh:"Refresh",scanned:"Scanned"},ColorPicker:{presetEmpty:"Empty"}}},55274:function(e,t,n){"use strict";var r=n(2265),o=n(91325),a=n(13823);t.Z=(e,t)=>{let n=r.useContext(o.Z);return[r.useMemo(()=>{var r;let o=t||a.Z[e],i=null!==(r=null==n?void 0:n[e])&&void 0!==r?r:{};return Object.assign(Object.assign({},"function"==typeof o?o():o),i||{})},[e,t,n]),r.useMemo(()=>{let e=null==n?void 0:n.locale;return(null==n?void 0:n.exist)&&!e?a.Z.locale:e},[n])]}},42264:function(e,t,n){"use strict";n.d(t,{ZP:function(){return G}});var r=n(83145),o=n(2265),a=n(18404),i=n(52402),c=n(71744),l=n(13959),s=n(8900),u=n(39725),d=n(54537),f=n(55726),p=n(61935),m=n(36760),g=n.n(m),h=n(49283),v=n(352),b=n(62236),y=n(12918),w=n(80669),x=n(3104);let E=e=>{let{componentCls:t,iconCls:n,boxShadow:r,colorText:o,colorSuccess:a,colorError:i,colorWarning:c,colorInfo:l,fontSizeLG:s,motionEaseInOutCirc:u,motionDurationSlow:d,marginXS:f,paddingXS:p,borderRadiusLG:m,zIndexPopup:g,contentPadding:h,contentBg:b}=e,w="".concat(t,"-notice"),x=new v.E4("MessageMoveIn",{"0%":{padding:0,transform:"translateY(-100%)",opacity:0},"100%":{padding:p,transform:"translateY(0)",opacity:1}}),E=new v.E4("MessageMoveOut",{"0%":{maxHeight:e.height,padding:p,opacity:1},"100%":{maxHeight:0,padding:0,opacity:0}}),S={padding:p,textAlign:"center",["".concat(t,"-custom-content > ").concat(n)]:{verticalAlign:"text-bottom",marginInlineEnd:f,fontSize:s},["".concat(w,"-content")]:{display:"inline-block",padding:h,background:b,borderRadius:m,boxShadow:r,pointerEvents:"all"},["".concat(t,"-success > ").concat(n)]:{color:a},["".concat(t,"-error > ").concat(n)]:{color:i},["".concat(t,"-warning > ").concat(n)]:{color:c},["".concat(t,"-info > ").concat(n,",\n ").concat(t,"-loading > ").concat(n)]:{color:l}};return[{[t]:Object.assign(Object.assign({},(0,y.Wf)(e)),{color:o,position:"fixed",top:f,width:"100%",pointerEvents:"none",zIndex:g,["".concat(t,"-move-up")]:{animationFillMode:"forwards"},["\n ".concat(t,"-move-up-appear,\n ").concat(t,"-move-up-enter\n ")]:{animationName:x,animationDuration:d,animationPlayState:"paused",animationTimingFunction:u},["\n ".concat(t,"-move-up-appear").concat(t,"-move-up-appear-active,\n ").concat(t,"-move-up-enter").concat(t,"-move-up-enter-active\n ")]:{animationPlayState:"running"},["".concat(t,"-move-up-leave")]:{animationName:E,animationDuration:d,animationPlayState:"paused",animationTimingFunction:u},["".concat(t,"-move-up-leave").concat(t,"-move-up-leave-active")]:{animationPlayState:"running"},"&-rtl":{direction:"rtl",span:{direction:"rtl"}}})},{[t]:{["".concat(w,"-wrapper")]:Object.assign({},S)}},{["".concat(t,"-notice-pure-panel")]:Object.assign(Object.assign({},S),{padding:0,textAlign:"start"})}]};var S=(0,w.I$)("Message",e=>[E((0,x.TS)(e,{height:150}))],e=>({zIndexPopup:e.zIndexPopupBase+b.u6+10,contentBg:e.colorBgElevated,contentPadding:"".concat((e.controlHeightLG-e.fontSize*e.lineHeight)/2,"px ").concat(e.paddingSM,"px")})),C=n(64024),Z=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let O={info:o.createElement(f.Z,null),success:o.createElement(s.Z,null),error:o.createElement(u.Z,null),warning:o.createElement(d.Z,null),loading:o.createElement(p.Z,null)},k=e=>{let{prefixCls:t,type:n,icon:r,children:a}=e;return o.createElement("div",{className:g()("".concat(t,"-custom-content"),"".concat(t,"-").concat(n))},r||O[n],o.createElement("span",null,a))};var M=n(49638),j=n(13613);function I(e){let t;let n=new Promise(n=>{t=e(()=>{n(!0)})}),r=()=>{null==t||t()};return r.then=(e,t)=>n.then(e,t),r.promise=n,r}var R=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let N=e=>{let{children:t,prefixCls:n}=e,r=(0,C.Z)(n),[a,i,c]=S(n,r);return a(o.createElement(h.JB,{classNames:{list:g()(i,c,r)}},t))},P=(e,t)=>{let{prefixCls:n,key:r}=t;return o.createElement(N,{prefixCls:n,key:r},e)},F=o.forwardRef((e,t)=>{let{top:n,prefixCls:r,getContainer:a,maxCount:i,duration:l=3,rtl:s,transitionName:u,onAllRemoved:d}=e,{getPrefixCls:f,getPopupContainer:p,message:m,direction:v}=o.useContext(c.E_),b=r||f("message"),y=o.createElement("span",{className:"".concat(b,"-close-x")},o.createElement(M.Z,{className:"".concat(b,"-close-icon")})),[w,x]=(0,h.lm)({prefixCls:b,style:()=>({left:"50%",transform:"translateX(-50%)",top:null!=n?n:8}),className:()=>g()({["".concat(b,"-rtl")]:null!=s?s:"rtl"===v}),motion:()=>({motionName:null!=u?u:"".concat(b,"-move-up")}),closable:!1,closeIcon:y,duration:l,getContainer:()=>(null==a?void 0:a())||(null==p?void 0:p())||document.body,maxCount:i,onAllRemoved:d,renderNotifications:P});return o.useImperativeHandle(t,()=>Object.assign(Object.assign({},w),{prefixCls:b,message:m})),x}),T=0;function A(e){let t=o.useRef(null);return(0,j.ln)("Message"),[o.useMemo(()=>{let e=e=>{var n;null===(n=t.current)||void 0===n||n.close(e)},n=n=>{if(!t.current){let e=()=>{};return e.then=()=>{},e}let{open:r,prefixCls:a,message:i}=t.current,c="".concat(a,"-notice"),{content:l,icon:s,type:u,key:d,className:f,style:p,onClose:m}=n,h=R(n,["content","icon","type","key","className","style","onClose"]),v=d;return null==v&&(T+=1,v="antd-message-".concat(T)),I(t=>(r(Object.assign(Object.assign({},h),{key:v,content:o.createElement(k,{prefixCls:a,type:u,icon:s},l),placement:"top",className:g()(u&&"".concat(c,"-").concat(u),f,null==i?void 0:i.className),style:Object.assign(Object.assign({},null==i?void 0:i.style),p),onClose:()=>{null==m||m(),t()}})),()=>{e(v)}))},r={open:n,destroy:n=>{var r;void 0!==n?e(n):null===(r=t.current)||void 0===r||r.destroy()}};return["info","success","warning","error","loading"].forEach(e=>{r[e]=(t,r,o)=>{let a,i,c;return a=t&&"object"==typeof t&&"content"in t?t:{content:t},"function"==typeof r?c=r:(i=r,c=o),n(Object.assign(Object.assign({onClose:c,duration:i},a),{type:e}))}}),r},[]),o.createElement(F,Object.assign({key:"message-holder"},e,{ref:t}))]}let L=null,z=e=>e(),_=[],H={};function B(){let{getContainer:e,duration:t,rtl:n,maxCount:r,top:o}=H,a=(null==e?void 0:e())||document.body;return{getContainer:()=>a,duration:t,rtl:n,maxCount:r,top:o}}let D=o.forwardRef((e,t)=>{let{messageConfig:n,sync:r}=e,{getPrefixCls:a}=(0,o.useContext)(c.E_),l=H.prefixCls||a("message"),s=(0,o.useContext)(i.J),[u,d]=A(Object.assign(Object.assign(Object.assign({},n),{prefixCls:l}),s.message));return o.useImperativeHandle(t,()=>{let e=Object.assign({},u);return Object.keys(e).forEach(t=>{e[t]=function(){return r(),u[t].apply(u,arguments)}}),{instance:e,sync:r}}),d}),W=o.forwardRef((e,t)=>{let[n,r]=o.useState(B),a=()=>{r(B)};o.useEffect(a,[]);let i=(0,l.w6)(),c=i.getRootPrefixCls(),s=i.getIconPrefixCls(),u=i.getTheme(),d=o.createElement(D,{ref:t,sync:a,messageConfig:n});return o.createElement(l.ZP,{prefixCls:c,iconPrefixCls:s,theme:u},i.holderRender?i.holderRender(d):d)});function V(){if(!L){let e=document.createDocumentFragment(),t={fragment:e};L=t,z(()=>{(0,a.s)(o.createElement(W,{ref:e=>{let{instance:n,sync:r}=e||{};Promise.resolve().then(()=>{!t.instance&&n&&(t.instance=n,t.sync=r,V())})}}),e)});return}L.instance&&(_.forEach(e=>{let{type:t,skipped:n}=e;if(!n)switch(t){case"open":z(()=>{let t=L.instance.open(Object.assign(Object.assign({},H),e.config));null==t||t.then(e.resolve),e.setCloseFn(t)});break;case"destroy":z(()=>{null==L||L.instance.destroy(e.key)});break;default:z(()=>{var n;let o=(n=L.instance)[t].apply(n,(0,r.Z)(e.args));null==o||o.then(e.resolve),e.setCloseFn(o)})}}),_=[])}let q={open:function(e){let t=I(t=>{let n;let r={type:"open",config:e,resolve:t,setCloseFn:e=>{n=e}};return _.push(r),()=>{n?z(()=>{n()}):r.skipped=!0}});return V(),t},destroy:function(e){_.push({type:"destroy",key:e}),V()},config:function(e){H=Object.assign(Object.assign({},H),e),z(()=>{var e;null===(e=null==L?void 0:L.sync)||void 0===e||e.call(L)})},useMessage:function(e){return A(e)},_InternalPanelDoNotUseOrYouWillBeFired:e=>{let{prefixCls:t,className:n,type:r,icon:a,content:i}=e,l=Z(e,["prefixCls","className","type","icon","content"]),{getPrefixCls:s}=o.useContext(c.E_),u=t||s("message"),d=(0,C.Z)(u),[f,p,m]=S(u,d);return f(o.createElement(h.qX,Object.assign({},l,{prefixCls:u,className:g()(n,p,"".concat(u,"-notice-pure-panel"),m,d),eventKey:"pure",duration:null,content:o.createElement(k,{prefixCls:u,type:r,icon:a},i)})))}};["success","info","warning","error","loading"].forEach(e=>{q[e]=function(){for(var t=arguments.length,n=Array(t),r=0;r{let r;let o={type:e,args:t,resolve:n,setCloseFn:e=>{r=e}};return _.push(o),()=>{r?z(()=>{r()}):o.skipped=!0}});return V(),n}(e,n)}});var G=q},92246:function(e,t,n){"use strict";n.d(t,{A:function(){return l},f:function(){return c}});var r=n(13823);let o=Object.assign({},r.Z.Modal),a=[],i=()=>a.reduce((e,t)=>Object.assign(Object.assign({},e),t),r.Z.Modal);function c(e){if(e){let t=Object.assign({},e);return a.push(t),o=i(),()=>{a=a.filter(e=>e!==t),o=i()}}o=Object.assign({},r.Z.Modal)}function l(){return o}},57271:function(e,t,n){"use strict";n.d(t,{ZP:function(){return er}});var r=n(2265),o=n(18404),a=n(52402),i=n(71744),c=n(13959),l=n(8900),s=n(39725),u=n(49638),d=n(54537),f=n(55726),p=n(61935),m=n(36760),g=n.n(m),h=n(49283),v=n(64024),b=n(352),y=n(62236),w=n(12918),x=n(3104),E=n(80669),S=e=>{let{componentCls:t,notificationMarginEdge:n,animationMaxHeight:r}=e,o="".concat(t,"-notice"),a=new b.E4("antNotificationFadeIn",{"0%":{transform:"translate3d(100%, 0, 0)",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",opacity:1}}),i=new b.E4("antNotificationTopFadeIn",{"0%":{top:-r,opacity:0},"100%":{top:0,opacity:1}}),c=new b.E4("antNotificationBottomFadeIn",{"0%":{bottom:e.calc(r).mul(-1).equal(),opacity:0},"100%":{bottom:0,opacity:1}}),l=new b.E4("antNotificationLeftFadeIn",{"0%":{transform:"translate3d(-100%, 0, 0)",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",opacity:1}});return{[t]:{["&".concat(t,"-top, &").concat(t,"-bottom")]:{marginInline:0,[o]:{marginInline:"auto auto"}},["&".concat(t,"-top")]:{["".concat(t,"-fade-enter").concat(t,"-fade-enter-active, ").concat(t,"-fade-appear").concat(t,"-fade-appear-active")]:{animationName:i}},["&".concat(t,"-bottom")]:{["".concat(t,"-fade-enter").concat(t,"-fade-enter-active, ").concat(t,"-fade-appear").concat(t,"-fade-appear-active")]:{animationName:c}},["&".concat(t,"-topRight, &").concat(t,"-bottomRight")]:{["".concat(t,"-fade-enter").concat(t,"-fade-enter-active, ").concat(t,"-fade-appear").concat(t,"-fade-appear-active")]:{animationName:a}},["&".concat(t,"-topLeft, &").concat(t,"-bottomLeft")]:{marginRight:{value:0,_skip_check_:!0},marginLeft:{value:n,_skip_check_:!0},[o]:{marginInlineEnd:"auto",marginInlineStart:0},["".concat(t,"-fade-enter").concat(t,"-fade-enter-active, ").concat(t,"-fade-appear").concat(t,"-fade-appear-active")]:{animationName:l}}}}};let C=["top","topLeft","topRight","bottom","bottomLeft","bottomRight"],Z={topLeft:"left",topRight:"right",bottomLeft:"left",bottomRight:"right",top:"left",bottom:"left"},O=(e,t)=>{let{componentCls:n}=e;return{["".concat(n,"-").concat(t)]:{["&".concat(n,"-stack > ").concat(n,"-notice-wrapper")]:{[t.startsWith("top")?"top":"bottom"]:0,[Z[t]]:{value:0,_skip_check_:!0}}}}},k=e=>{let t={};for(let n=1;n ".concat(e.componentCls,"-notice")]:{opacity:0,transition:"opacity ".concat(e.motionDurationMid)}};return Object.assign({["&:not(:nth-last-child(-n+".concat(e.notificationStackLayer,"))")]:{opacity:0,overflow:"hidden",color:"transparent",pointerEvents:"none"}},t)},M=e=>{let t={};for(let n=1;n{let{componentCls:t}=e;return Object.assign({["".concat(t,"-stack")]:{["& > ".concat(t,"-notice-wrapper")]:Object.assign({transition:"all ".concat(e.motionDurationSlow,", backdrop-filter 0s"),position:"absolute"},k(e))},["".concat(t,"-stack:not(").concat(t,"-stack-expanded)")]:{["& > ".concat(t,"-notice-wrapper")]:Object.assign({},M(e))},["".concat(t,"-stack").concat(t,"-stack-expanded")]:{["& > ".concat(t,"-notice-wrapper")]:{"&:not(:nth-last-child(-n + 1))":{opacity:1,overflow:"unset",color:"inherit",pointerEvents:"auto",["& > ".concat(e.componentCls,"-notice")]:{opacity:1}},"&:after":{content:'""',position:"absolute",height:e.margin,width:"100%",insetInline:0,bottom:e.calc(e.margin).mul(-1).equal(),background:"transparent",pointerEvents:"auto"}}}},C.map(t=>O(e,t)).reduce((e,t)=>Object.assign(Object.assign({},e),t),{}))};let I=e=>{let{iconCls:t,componentCls:n,boxShadow:r,fontSizeLG:o,notificationMarginBottom:a,borderRadiusLG:i,colorSuccess:c,colorInfo:l,colorWarning:s,colorError:u,colorTextHeading:d,notificationBg:f,notificationPadding:p,notificationMarginEdge:m,fontSize:g,lineHeight:h,width:v,notificationIconSize:y,colorText:w}=e,x="".concat(n,"-notice");return{position:"relative",marginBottom:a,marginInlineStart:"auto",background:f,borderRadius:i,boxShadow:r,[x]:{padding:p,width:v,maxWidth:"calc(100vw - ".concat((0,b.bf)(e.calc(m).mul(2).equal()),")"),overflow:"hidden",lineHeight:h,wordWrap:"break-word"},["".concat(n,"-close-icon")]:{fontSize:g,cursor:"pointer"},["".concat(x,"-message")]:{marginBottom:e.marginXS,color:d,fontSize:o,lineHeight:e.lineHeightLG},["".concat(x,"-description")]:{fontSize:g,color:w},["".concat(x,"-closable ").concat(x,"-message")]:{paddingInlineEnd:e.paddingLG},["".concat(x,"-with-icon ").concat(x,"-message")]:{marginBottom:e.marginXS,marginInlineStart:e.calc(e.marginSM).add(y).equal(),fontSize:o},["".concat(x,"-with-icon ").concat(x,"-description")]:{marginInlineStart:e.calc(e.marginSM).add(y).equal(),fontSize:g},["".concat(x,"-icon")]:{position:"absolute",fontSize:y,lineHeight:1,["&-success".concat(t)]:{color:c},["&-info".concat(t)]:{color:l},["&-warning".concat(t)]:{color:s},["&-error".concat(t)]:{color:u}},["".concat(x,"-close")]:{position:"absolute",top:e.notificationPaddingVertical,insetInlineEnd:e.notificationPaddingHorizontal,color:e.colorIcon,outline:"none",width:e.notificationCloseButtonSize,height:e.notificationCloseButtonSize,borderRadius:e.borderRadiusSM,transition:"background-color ".concat(e.motionDurationMid,", color ").concat(e.motionDurationMid),display:"flex",alignItems:"center",justifyContent:"center","&:hover":{color:e.colorIconHover,backgroundColor:e.closeBtnHoverBg}},["".concat(x,"-btn")]:{float:"right",marginTop:e.marginSM}}},R=e=>{let{componentCls:t,notificationMarginBottom:n,notificationMarginEdge:r,motionDurationMid:o,motionEaseInOut:a}=e,i="".concat(t,"-notice"),c=new b.E4("antNotificationFadeOut",{"0%":{maxHeight:e.animationMaxHeight,marginBottom:n},"100%":{maxHeight:0,marginBottom:0,paddingTop:0,paddingBottom:0,opacity:0}});return[{[t]:Object.assign(Object.assign({},(0,w.Wf)(e)),{position:"fixed",zIndex:e.zIndexPopup,marginRight:{value:r,_skip_check_:!0},["".concat(t,"-hook-holder")]:{position:"relative"},["".concat(t,"-fade-appear-prepare")]:{opacity:"0 !important"},["".concat(t,"-fade-enter, ").concat(t,"-fade-appear")]:{animationDuration:e.motionDurationMid,animationTimingFunction:a,animationFillMode:"both",opacity:0,animationPlayState:"paused"},["".concat(t,"-fade-leave")]:{animationTimingFunction:a,animationFillMode:"both",animationDuration:o,animationPlayState:"paused"},["".concat(t,"-fade-enter").concat(t,"-fade-enter-active, ").concat(t,"-fade-appear").concat(t,"-fade-appear-active")]:{animationPlayState:"running"},["".concat(t,"-fade-leave").concat(t,"-fade-leave-active")]:{animationName:c,animationPlayState:"running"},"&-rtl":{direction:"rtl",["".concat(i,"-btn")]:{float:"left"}}})},{[t]:{["".concat(i,"-wrapper")]:Object.assign({},I(e))}}]},N=e=>({zIndexPopup:e.zIndexPopupBase+y.u6+50,width:384,closeBtnHoverBg:e.wireframe?"transparent":e.colorFillContent}),P=e=>{let t=e.paddingMD,n=e.paddingLG;return(0,x.TS)(e,{notificationBg:e.colorBgElevated,notificationPaddingVertical:t,notificationPaddingHorizontal:n,notificationIconSize:e.calc(e.fontSizeLG).mul(e.lineHeightLG).equal(),notificationCloseButtonSize:e.calc(e.controlHeightLG).mul(.55).equal(),notificationMarginBottom:e.margin,notificationPadding:"".concat((0,b.bf)(e.paddingMD)," ").concat((0,b.bf)(e.paddingContentHorizontalLG)),notificationMarginEdge:e.marginLG,animationMaxHeight:150,notificationStackLayer:3})};var F=(0,E.I$)("Notification",e=>{let t=P(e);return[R(t),S(t),j(t)]},N),T=(0,E.bk)(["Notification","PurePanel"],e=>{let t="".concat(e.componentCls,"-notice"),n=P(e);return{["".concat(t,"-pure-panel")]:Object.assign(Object.assign({},I(n)),{width:n.width,maxWidth:"calc(100vw - ".concat((0,b.bf)(e.calc(n.notificationMarginEdge).mul(2).equal()),")"),margin:0})}},N),A=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};function L(e,t){return null===t||!1===t?null:t||r.createElement("span",{className:"".concat(e,"-close-x")},r.createElement(u.Z,{className:"".concat(e,"-close-icon")}))}f.Z,l.Z,s.Z,d.Z,p.Z;let z={success:l.Z,info:f.Z,error:s.Z,warning:d.Z},_=e=>{let{prefixCls:t,icon:n,type:o,message:a,description:i,btn:c,role:l="alert"}=e,s=null;return n?s=r.createElement("span",{className:"".concat(t,"-icon")},n):o&&(s=r.createElement(z[o]||null,{className:g()("".concat(t,"-icon"),"".concat(t,"-icon-").concat(o))})),r.createElement("div",{className:g()({["".concat(t,"-with-icon")]:s}),role:l},s,r.createElement("div",{className:"".concat(t,"-message")},a),r.createElement("div",{className:"".concat(t,"-description")},i),c&&r.createElement("div",{className:"".concat(t,"-btn")},c))};var H=n(13613),B=n(29961),D=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let W=e=>{let{children:t,prefixCls:n}=e,o=(0,v.Z)(n),[a,i,c]=F(n,o);return a(r.createElement(h.JB,{classNames:{list:g()(i,c,o)}},t))},V=(e,t)=>{let{prefixCls:n,key:o}=t;return r.createElement(W,{prefixCls:n,key:o},e)},q=r.forwardRef((e,t)=>{let{top:n,bottom:o,prefixCls:a,getContainer:c,maxCount:l,rtl:s,onAllRemoved:u,stack:d}=e,{getPrefixCls:f,getPopupContainer:p,notification:m,direction:v}=(0,r.useContext)(i.E_),[,b]=(0,B.ZP)(),y=a||f("notification"),[w,x]=(0,h.lm)({prefixCls:y,style:e=>(function(e,t,n){let r;switch(e){case"top":r={left:"50%",transform:"translateX(-50%)",right:"auto",top:t,bottom:"auto"};break;case"topLeft":r={left:0,top:t,bottom:"auto"};break;case"topRight":r={right:0,top:t,bottom:"auto"};break;case"bottom":r={left:"50%",transform:"translateX(-50%)",right:"auto",top:"auto",bottom:n};break;case"bottomLeft":r={left:0,top:"auto",bottom:n};break;default:r={right:0,top:"auto",bottom:n}}return r})(e,null!=n?n:24,null!=o?o:24),className:()=>g()({["".concat(y,"-rtl")]:null!=s?s:"rtl"===v}),motion:()=>({motionName:"".concat(y,"-fade")}),closable:!0,closeIcon:L(y),duration:4.5,getContainer:()=>(null==c?void 0:c())||(null==p?void 0:p())||document.body,maxCount:l,onAllRemoved:u,renderNotifications:V,stack:!1!==d&&{threshold:"object"==typeof d?null==d?void 0:d.threshold:void 0,offset:8,gap:b.margin}});return r.useImperativeHandle(t,()=>Object.assign(Object.assign({},w),{prefixCls:y,notification:m})),x});function G(e){let t=r.useRef(null);return(0,H.ln)("Notification"),[r.useMemo(()=>{let n=n=>{var o;if(!t.current)return;let{open:a,prefixCls:i,notification:c}=t.current,l="".concat(i,"-notice"),{message:s,description:u,icon:d,type:f,btn:p,className:m,style:h,role:v="alert",closeIcon:b}=n,y=D(n,["message","description","icon","type","btn","className","style","role","closeIcon"]),w=L(l,b);return a(Object.assign(Object.assign({placement:null!==(o=null==e?void 0:e.placement)&&void 0!==o?o:"topRight"},y),{content:r.createElement(_,{prefixCls:l,icon:d,type:f,message:s,description:u,btn:p,role:v}),className:g()(f&&"".concat(l,"-").concat(f),m,null==c?void 0:c.className),style:Object.assign(Object.assign({},null==c?void 0:c.style),h),closeIcon:w,closable:!!w}))},o={open:n,destroy:e=>{var n,r;void 0!==e?null===(n=t.current)||void 0===n||n.close(e):null===(r=t.current)||void 0===r||r.destroy()}};return["success","info","warning","error"].forEach(e=>{o[e]=t=>n(Object.assign(Object.assign({},t),{type:e}))}),o},[]),r.createElement(q,Object.assign({key:"notification-holder"},e,{ref:t}))]}let X=null,U=e=>e(),$=[],K={};function Y(){let{getContainer:e,rtl:t,maxCount:n,top:r,bottom:o}=K,a=(null==e?void 0:e())||document.body;return{getContainer:()=>a,rtl:t,maxCount:n,top:r,bottom:o}}let Q=r.forwardRef((e,t)=>{let{notificationConfig:n,sync:o}=e,{getPrefixCls:c}=(0,r.useContext)(i.E_),l=K.prefixCls||c("notification"),s=(0,r.useContext)(a.J),[u,d]=G(Object.assign(Object.assign(Object.assign({},n),{prefixCls:l}),s.notification));return r.useEffect(o,[]),r.useImperativeHandle(t,()=>{let e=Object.assign({},u);return Object.keys(e).forEach(t=>{e[t]=function(){return o(),u[t].apply(u,arguments)}}),{instance:e,sync:o}}),d}),J=r.forwardRef((e,t)=>{let[n,o]=r.useState(Y),a=()=>{o(Y)};r.useEffect(a,[]);let i=(0,c.w6)(),l=i.getRootPrefixCls(),s=i.getIconPrefixCls(),u=i.getTheme(),d=r.createElement(Q,{ref:t,sync:a,notificationConfig:n});return r.createElement(c.ZP,{prefixCls:l,iconPrefixCls:s,theme:u},i.holderRender?i.holderRender(d):d)});function ee(){if(!X){let e=document.createDocumentFragment(),t={fragment:e};X=t,U(()=>{(0,o.s)(r.createElement(J,{ref:e=>{let{instance:n,sync:r}=e||{};Promise.resolve().then(()=>{!t.instance&&n&&(t.instance=n,t.sync=r,ee())})}}),e)});return}X.instance&&($.forEach(e=>{switch(e.type){case"open":U(()=>{X.instance.open(Object.assign(Object.assign({},K),e.config))});break;case"destroy":U(()=>{null==X||X.instance.destroy(e.key)})}}),$=[])}function et(e){(0,c.w6)(),$.push({type:"open",config:e}),ee()}let en={open:et,destroy:function(e){$.push({type:"destroy",key:e}),ee()},config:function(e){K=Object.assign(Object.assign({},K),e),U(()=>{var e;null===(e=null==X?void 0:X.sync)||void 0===e||e.call(X)})},useNotification:function(e){return G(e)},_InternalPanelDoNotUseOrYouWillBeFired:e=>{let{prefixCls:t,className:n,icon:o,type:a,message:c,description:l,btn:s,closable:u=!0,closeIcon:d,className:f}=e,p=A(e,["prefixCls","className","icon","type","message","description","btn","closable","closeIcon","className"]),{getPrefixCls:m}=r.useContext(i.E_),b=t||m("notification"),y="".concat(b,"-notice"),w=(0,v.Z)(b),[x,E,S]=F(b,w);return x(r.createElement("div",{className:g()("".concat(y,"-pure-panel"),E,n,S,w)},r.createElement(T,{prefixCls:b}),r.createElement(h.qX,Object.assign({},p,{prefixCls:b,eventKey:"pure",duration:null,closable:u,className:g()({notificationClassName:f}),closeIcon:L(b,d),content:r.createElement(_,{prefixCls:y,icon:o,type:a,message:c,description:l,btn:s})}))))}};["success","info","warning","error"].forEach(e=>{en[e]=t=>et(Object.assign(Object.assign({},t),{type:e}))});var er=en},52787:function(e,t,n){"use strict";n.d(t,{default:function(){return tt}});var r=n(2265),o=n(36760),a=n.n(o),i=n(1119),c=n(83145),l=n(11993),s=n(31686),u=n(26365),d=n(6989),f=n(41154),p=n(50506),m=n(32559),g=n(27380),h=n(79267),v=n(95814),b=n(28791),y=function(e){var t=e.className,n=e.customizeIcon,o=e.customizeIconProps,i=e.children,c=e.onMouseDown,l=e.onClick,s="function"==typeof n?n(o):n;return r.createElement("span",{className:t,onMouseDown:function(e){e.preventDefault(),null==c||c(e)},style:{userSelect:"none",WebkitUserSelect:"none"},unselectable:"on",onClick:l,"aria-hidden":!0},void 0!==s?s:r.createElement("span",{className:a()(t.split(/\s+/).map(function(e){return"".concat(e,"-icon")}))},i))},w=function(e,t,n,o,a){var i=arguments.length>5&&void 0!==arguments[5]&&arguments[5],c=arguments.length>6?arguments[6]:void 0,l=arguments.length>7?arguments[7]:void 0,s=r.useMemo(function(){return"object"===(0,f.Z)(o)?o.clearIcon:a||void 0},[o,a]);return{allowClear:r.useMemo(function(){return!i&&!!o&&(!!n.length||!!c)&&!("combobox"===l&&""===c)},[o,i,n.length,c,l]),clearIcon:r.createElement(y,{className:"".concat(e,"-clear"),onMouseDown:t,customizeIcon:s},"\xd7")}},x=r.createContext(null);function E(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:250,t=r.useRef(null),n=r.useRef(null);return r.useEffect(function(){return function(){window.clearTimeout(n.current)}},[]),[function(){return t.current},function(r){(r||null===t.current)&&(t.current=r),window.clearTimeout(n.current),n.current=window.setTimeout(function(){t.current=null},e)}]}var S=n(18242),C=n(1699),Z=r.forwardRef(function(e,t){var n,o=e.prefixCls,i=e.id,c=e.inputElement,l=e.disabled,u=e.tabIndex,d=e.autoFocus,f=e.autoComplete,p=e.editable,g=e.activeDescendantId,h=e.value,v=e.maxLength,y=e.onKeyDown,w=e.onMouseDown,x=e.onChange,E=e.onPaste,S=e.onCompositionStart,C=e.onCompositionEnd,Z=e.open,O=e.attrs,k=c||r.createElement("input",null),M=k,j=M.ref,I=M.props,R=I.onKeyDown,N=I.onChange,P=I.onMouseDown,F=I.onCompositionStart,T=I.onCompositionEnd,A=I.style;return(0,m.Kp)(!("maxLength"in k.props),"Passing 'maxLength' to input element directly may not work because input in BaseSelect is controlled."),k=r.cloneElement(k,(0,s.Z)((0,s.Z)((0,s.Z)({type:"search"},I),{},{id:i,ref:(0,b.sQ)(t,j),disabled:l,tabIndex:u,autoComplete:f||"off",autoFocus:d,className:a()("".concat(o,"-selection-search-input"),null===(n=k)||void 0===n||null===(n=n.props)||void 0===n?void 0:n.className),role:"combobox","aria-expanded":Z||!1,"aria-haspopup":"listbox","aria-owns":"".concat(i,"_list"),"aria-autocomplete":"list","aria-controls":"".concat(i,"_list"),"aria-activedescendant":Z?g:void 0},O),{},{value:p?h:"",maxLength:v,readOnly:!p,unselectable:p?null:"on",style:(0,s.Z)((0,s.Z)({},A),{},{opacity:p?null:0}),onKeyDown:function(e){y(e),R&&R(e)},onMouseDown:function(e){w(e),P&&P(e)},onChange:function(e){x(e),N&&N(e)},onCompositionStart:function(e){S(e),F&&F(e)},onCompositionEnd:function(e){C(e),T&&T(e)},onPaste:E}))});function O(e){return Array.isArray(e)?e:void 0!==e?[e]:[]}var k="undefined"!=typeof window&&window.document&&window.document.documentElement;function M(e){return["string","number"].includes((0,f.Z)(e))}function j(e){var t=void 0;return e&&(M(e.title)?t=e.title.toString():M(e.label)&&(t=e.label.toString())),t}function I(e){var t;return null!==(t=e.key)&&void 0!==t?t:e.value}var R=function(e){e.preventDefault(),e.stopPropagation()},N=function(e){var t,n,o=e.id,i=e.prefixCls,c=e.values,s=e.open,d=e.searchValue,f=e.autoClearSearchValue,p=e.inputRef,m=e.placeholder,g=e.disabled,h=e.mode,v=e.showSearch,b=e.autoFocus,w=e.autoComplete,x=e.activeDescendantId,E=e.tabIndex,O=e.removeIcon,M=e.maxTagCount,N=e.maxTagTextLength,P=e.maxTagPlaceholder,F=void 0===P?function(e){return"+ ".concat(e.length," ...")}:P,T=e.tagRender,A=e.onToggleOpen,L=e.onRemove,z=e.onInputChange,_=e.onInputPaste,H=e.onInputKeyDown,B=e.onInputMouseDown,D=e.onInputCompositionStart,W=e.onInputCompositionEnd,V=r.useRef(null),q=(0,r.useState)(0),G=(0,u.Z)(q,2),X=G[0],U=G[1],$=(0,r.useState)(!1),K=(0,u.Z)($,2),Y=K[0],Q=K[1],J="".concat(i,"-selection"),ee=s||"multiple"===h&&!1===f||"tags"===h?d:"",et="tags"===h||"multiple"===h&&!1===f||v&&(s||Y);t=function(){U(V.current.scrollWidth)},n=[ee],k?r.useLayoutEffect(t,n):r.useEffect(t,n);var en=function(e,t,n,o,i){return r.createElement("span",{title:j(e),className:a()("".concat(J,"-item"),(0,l.Z)({},"".concat(J,"-item-disabled"),n))},r.createElement("span",{className:"".concat(J,"-item-content")},t),o&&r.createElement(y,{className:"".concat(J,"-item-remove"),onMouseDown:R,onClick:i,customizeIcon:O},"\xd7"))},er=r.createElement("div",{className:"".concat(J,"-search"),style:{width:X},onFocus:function(){Q(!0)},onBlur:function(){Q(!1)}},r.createElement(Z,{ref:p,open:s,prefixCls:i,id:o,inputElement:null,disabled:g,autoFocus:b,autoComplete:w,editable:et,activeDescendantId:x,value:ee,onKeyDown:H,onMouseDown:B,onChange:z,onPaste:_,onCompositionStart:D,onCompositionEnd:W,tabIndex:E,attrs:(0,S.Z)(e,!0)}),r.createElement("span",{ref:V,className:"".concat(J,"-search-mirror"),"aria-hidden":!0},ee,"\xa0")),eo=r.createElement(C.Z,{prefixCls:"".concat(J,"-overflow"),data:c,renderItem:function(e){var t,n=e.disabled,o=e.label,a=e.value,i=!g&&!n,c=o;if("number"==typeof N&&("string"==typeof o||"number"==typeof o)){var l=String(c);l.length>N&&(c="".concat(l.slice(0,N),"..."))}var u=function(t){t&&t.stopPropagation(),L(e)};return"function"==typeof T?(t=c,r.createElement("span",{onMouseDown:function(e){R(e),A(!s)}},T({label:t,value:a,disabled:n,closable:i,onClose:u}))):en(e,c,n,i,u)},renderRest:function(e){var t="function"==typeof F?F(e):F;return en({title:t},t,!1)},suffix:er,itemKey:I,maxCount:M});return r.createElement(r.Fragment,null,eo,!c.length&&!ee&&r.createElement("span",{className:"".concat(J,"-placeholder")},m))},P=function(e){var t=e.inputElement,n=e.prefixCls,o=e.id,a=e.inputRef,i=e.disabled,c=e.autoFocus,l=e.autoComplete,s=e.activeDescendantId,d=e.mode,f=e.open,p=e.values,m=e.placeholder,g=e.tabIndex,h=e.showSearch,v=e.searchValue,b=e.activeValue,y=e.maxLength,w=e.onInputKeyDown,x=e.onInputMouseDown,E=e.onInputChange,C=e.onInputPaste,O=e.onInputCompositionStart,k=e.onInputCompositionEnd,M=e.title,I=r.useState(!1),R=(0,u.Z)(I,2),N=R[0],P=R[1],F="combobox"===d,T=F||h,A=p[0],L=v||"";F&&b&&!N&&(L=b),r.useEffect(function(){F&&P(!1)},[F,b]);var z=("combobox"===d||!!f||!!h)&&!!L,_=void 0===M?j(A):M,H=r.useMemo(function(){return A?null:r.createElement("span",{className:"".concat(n,"-selection-placeholder"),style:z?{visibility:"hidden"}:void 0},m)},[A,z,m,n]);return r.createElement(r.Fragment,null,r.createElement("span",{className:"".concat(n,"-selection-search")},r.createElement(Z,{ref:a,prefixCls:n,id:o,open:f,inputElement:t,disabled:i,autoFocus:c,autoComplete:l,editable:T,activeDescendantId:s,value:L,onKeyDown:w,onMouseDown:x,onChange:function(e){P(!0),E(e)},onPaste:C,onCompositionStart:O,onCompositionEnd:k,tabIndex:g,attrs:(0,S.Z)(e,!0),maxLength:F?y:void 0})),!F&&A?r.createElement("span",{className:"".concat(n,"-selection-item"),title:_,style:z?{visibility:"hidden"}:void 0},A.label):null,H)},F=r.forwardRef(function(e,t){var n=(0,r.useRef)(null),o=(0,r.useRef)(!1),a=e.prefixCls,c=e.open,l=e.mode,s=e.showSearch,d=e.tokenWithEnter,f=e.autoClearSearchValue,p=e.onSearch,m=e.onSearchSubmit,g=e.onToggleOpen,h=e.onInputKeyDown,b=e.domRef;r.useImperativeHandle(t,function(){return{focus:function(){n.current.focus()},blur:function(){n.current.blur()}}});var y=E(0),w=(0,u.Z)(y,2),x=w[0],S=w[1],C=(0,r.useRef)(null),Z=function(e){!1!==p(e,!0,o.current)&&g(!0)},O={inputRef:n,onInputKeyDown:function(e){var t=e.which;(t===v.Z.UP||t===v.Z.DOWN)&&e.preventDefault(),h&&h(e),t!==v.Z.ENTER||"tags"!==l||o.current||c||null==m||m(e.target.value),[v.Z.ESC,v.Z.SHIFT,v.Z.BACKSPACE,v.Z.TAB,v.Z.WIN_KEY,v.Z.ALT,v.Z.META,v.Z.WIN_KEY_RIGHT,v.Z.CTRL,v.Z.SEMICOLON,v.Z.EQUALS,v.Z.CAPS_LOCK,v.Z.CONTEXT_MENU,v.Z.F1,v.Z.F2,v.Z.F3,v.Z.F4,v.Z.F5,v.Z.F6,v.Z.F7,v.Z.F8,v.Z.F9,v.Z.F10,v.Z.F11,v.Z.F12].includes(t)||g(!0)},onInputMouseDown:function(){S(!0)},onInputChange:function(e){var t=e.target.value;if(d&&C.current&&/[\r\n]/.test(C.current)){var n=C.current.replace(/[\r\n]+$/,"").replace(/\r\n/g," ").replace(/[\r\n]/g," ");t=t.replace(n,C.current)}C.current=null,Z(t)},onInputPaste:function(e){var t=e.clipboardData,n=null==t?void 0:t.getData("text");C.current=n||""},onInputCompositionStart:function(){o.current=!0},onInputCompositionEnd:function(e){o.current=!1,"combobox"!==l&&Z(e.target.value)}},k="multiple"===l||"tags"===l?r.createElement(N,(0,i.Z)({},e,O)):r.createElement(P,(0,i.Z)({},e,O));return r.createElement("div",{ref:b,className:"".concat(a,"-selector"),onClick:function(e){e.target!==n.current&&(void 0!==document.body.style.msTouchAction?setTimeout(function(){n.current.focus()}):n.current.focus())},onMouseDown:function(e){var t=x();e.target===n.current||t||"combobox"===l||e.preventDefault(),("combobox"===l||s&&t)&&c||(c&&!1!==f&&p("",!0,!1),g())}},k)}),T=n(97821),A=["prefixCls","disabled","visible","children","popupElement","animation","transitionName","dropdownStyle","dropdownClassName","direction","placement","builtinPlacements","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","getPopupContainer","empty","getTriggerDOMNode","onPopupVisibleChange","onPopupMouseEnter"],L=function(e){var t=!0===e?0:1;return{bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:t,adjustY:1},htmlRegion:"scroll"},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:t,adjustY:1},htmlRegion:"scroll"},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:t,adjustY:1},htmlRegion:"scroll"},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:t,adjustY:1},htmlRegion:"scroll"}}},z=r.forwardRef(function(e,t){var n=e.prefixCls,o=(e.disabled,e.visible),c=e.children,u=e.popupElement,f=e.animation,p=e.transitionName,m=e.dropdownStyle,g=e.dropdownClassName,h=e.direction,v=e.placement,b=e.builtinPlacements,y=e.dropdownMatchSelectWidth,w=e.dropdownRender,x=e.dropdownAlign,E=e.getPopupContainer,S=e.empty,C=e.getTriggerDOMNode,Z=e.onPopupVisibleChange,O=e.onPopupMouseEnter,k=(0,d.Z)(e,A),M="".concat(n,"-dropdown"),j=u;w&&(j=w(u));var I=r.useMemo(function(){return b||L(y)},[b,y]),R=f?"".concat(M,"-").concat(f):p,N="number"==typeof y,P=r.useMemo(function(){return N?null:!1===y?"minWidth":"width"},[y,N]),F=m;N&&(F=(0,s.Z)((0,s.Z)({},F),{},{width:y}));var z=r.useRef(null);return r.useImperativeHandle(t,function(){return{getPopupElement:function(){return z.current}}}),r.createElement(T.Z,(0,i.Z)({},k,{showAction:Z?["click"]:[],hideAction:Z?["click"]:[],popupPlacement:v||("rtl"===(void 0===h?"ltr":h)?"bottomRight":"bottomLeft"),builtinPlacements:I,prefixCls:M,popupTransitionName:R,popup:r.createElement("div",{ref:z,onMouseEnter:O},j),stretch:P,popupAlign:x,popupVisible:o,getPopupContainer:E,popupClassName:a()(g,(0,l.Z)({},"".concat(M,"-empty"),S)),popupStyle:F,getTriggerDOMNode:C,onPopupVisibleChange:Z}),c)}),_=n(87099);function H(e,t){var n,r=e.key;return("value"in e&&(n=e.value),null!=r)?r:void 0!==n?n:"rc-index-key-".concat(t)}function B(e,t){var n=e||{},r=n.label,o=n.value,a=n.options,i=n.groupLabel,c=r||(t?"children":"label");return{label:c,value:o||"value",options:a||"options",groupLabel:i||c}}function D(e){var t=(0,s.Z)({},e);return"props"in t||Object.defineProperty(t,"props",{get:function(){return(0,m.ZP)(!1,"Return type is option instead of Option instance. Please read value directly instead of reading from `props`."),t}}),t}var W=function(e,t,n){if(!t||!t.length)return null;var r=!1,o=function e(t,n){var o=(0,_.Z)(n),a=o[0],i=o.slice(1);if(!a)return[t];var l=t.split(a);return r=r||l.length>1,l.reduce(function(t,n){return[].concat((0,c.Z)(t),(0,c.Z)(e(n,i)))},[]).filter(Boolean)}(e,t);return r?void 0!==n?o.slice(0,n):o:null},V=r.createContext(null),q=["id","prefixCls","className","showSearch","tagRender","direction","omitDomProps","displayValues","onDisplayValuesChange","emptyOptions","notFoundContent","onClear","mode","disabled","loading","getInputElement","getRawInputElement","open","defaultOpen","onDropdownVisibleChange","activeValue","onActiveValueChange","activeDescendantId","searchValue","autoClearSearchValue","onSearch","onSearchSplit","tokenSeparators","allowClear","suffixIcon","clearIcon","OptionList","animation","transitionName","dropdownStyle","dropdownClassName","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","placement","builtinPlacements","getPopupContainer","showAction","onFocus","onBlur","onKeyUp","onKeyDown","onMouseDown"],G=["value","onChange","removeIcon","placeholder","autoFocus","maxTagCount","maxTagTextLength","maxTagPlaceholder","choiceTransitionName","onInputKeyDown","onPopupScroll","tabIndex"],X=function(e){return"tags"===e||"multiple"===e},U=r.forwardRef(function(e,t){var n,o,m,S,C,Z,O,k,M=e.id,j=e.prefixCls,I=e.className,R=e.showSearch,N=e.tagRender,P=e.direction,T=e.omitDomProps,A=e.displayValues,L=e.onDisplayValuesChange,_=e.emptyOptions,H=e.notFoundContent,B=void 0===H?"Not Found":H,D=e.onClear,U=e.mode,$=e.disabled,K=e.loading,Y=e.getInputElement,Q=e.getRawInputElement,J=e.open,ee=e.defaultOpen,et=e.onDropdownVisibleChange,en=e.activeValue,er=e.onActiveValueChange,eo=e.activeDescendantId,ea=e.searchValue,ei=e.autoClearSearchValue,ec=e.onSearch,el=e.onSearchSplit,es=e.tokenSeparators,eu=e.allowClear,ed=e.suffixIcon,ef=e.clearIcon,ep=e.OptionList,em=e.animation,eg=e.transitionName,eh=e.dropdownStyle,ev=e.dropdownClassName,eb=e.dropdownMatchSelectWidth,ey=e.dropdownRender,ew=e.dropdownAlign,ex=e.placement,eE=e.builtinPlacements,eS=e.getPopupContainer,eC=e.showAction,eZ=void 0===eC?[]:eC,eO=e.onFocus,ek=e.onBlur,eM=e.onKeyUp,ej=e.onKeyDown,eI=e.onMouseDown,eR=(0,d.Z)(e,q),eN=X(U),eP=(void 0!==R?R:eN)||"combobox"===U,eF=(0,s.Z)({},eR);G.forEach(function(e){delete eF[e]}),null==T||T.forEach(function(e){delete eF[e]});var eT=r.useState(!1),eA=(0,u.Z)(eT,2),eL=eA[0],ez=eA[1];r.useEffect(function(){ez((0,h.Z)())},[]);var e_=r.useRef(null),eH=r.useRef(null),eB=r.useRef(null),eD=r.useRef(null),eW=r.useRef(null),eV=r.useRef(!1),eq=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=r.useState(!1),n=(0,u.Z)(t,2),o=n[0],a=n[1],i=r.useRef(null),c=function(){window.clearTimeout(i.current)};return r.useEffect(function(){return c},[]),[o,function(t,n){c(),i.current=window.setTimeout(function(){a(t),n&&n()},e)},c]}(),eG=(0,u.Z)(eq,3),eX=eG[0],eU=eG[1],e$=eG[2];r.useImperativeHandle(t,function(){var e,t;return{focus:null===(e=eD.current)||void 0===e?void 0:e.focus,blur:null===(t=eD.current)||void 0===t?void 0:t.blur,scrollTo:function(e){var t;return null===(t=eW.current)||void 0===t?void 0:t.scrollTo(e)}}});var eK=r.useMemo(function(){if("combobox"!==U)return ea;var e,t=null===(e=A[0])||void 0===e?void 0:e.value;return"string"==typeof t||"number"==typeof t?String(t):""},[ea,U,A]),eY="combobox"===U&&"function"==typeof Y&&Y()||null,eQ="function"==typeof Q&&Q(),eJ=(0,b.x1)(eH,null==eQ||null===(S=eQ.props)||void 0===S?void 0:S.ref),e0=r.useState(!1),e1=(0,u.Z)(e0,2),e2=e1[0],e6=e1[1];(0,g.Z)(function(){e6(!0)},[]);var e5=(0,p.Z)(!1,{defaultValue:ee,value:J}),e4=(0,u.Z)(e5,2),e3=e4[0],e8=e4[1],e9=!!e2&&e3,e7=!B&&_;($||e7&&e9&&"combobox"===U)&&(e9=!1);var te=!e7&&e9,tt=r.useCallback(function(e){var t=void 0!==e?e:!e9;$||(e8(t),e9!==t&&(null==et||et(t)))},[$,e9,e8,et]),tn=r.useMemo(function(){return(es||[]).some(function(e){return["\n","\r\n"].includes(e)})},[es]),tr=r.useContext(V)||{},to=tr.maxCount,ta=tr.rawValues,ti=function(e,t,n){if(!((null==ta?void 0:ta.size)>=to)){var r=!0,o=e;null==er||er(null);var a=W(e,es,to&&to-ta.size),i=n?null:a;return"combobox"!==U&&i&&(o="",null==el||el(i),tt(!1),r=!1),ec&&eK!==o&&ec(o,{source:t?"typing":"effect"}),r}};r.useEffect(function(){e9||eN||"combobox"===U||ti("",!1,!1)},[e9]),r.useEffect(function(){e3&&$&&e8(!1),$&&!eV.current&&eU(!1)},[$]);var tc=E(),tl=(0,u.Z)(tc,2),ts=tl[0],tu=tl[1],td=r.useRef(!1),tf=[];r.useEffect(function(){return function(){tf.forEach(function(e){return clearTimeout(e)}),tf.splice(0,tf.length)}},[]);var tp=r.useState({}),tm=(0,u.Z)(tp,2)[1];eQ&&(Z=function(e){tt(e)}),n=function(){var e;return[e_.current,null===(e=eB.current)||void 0===e?void 0:e.getPopupElement()]},o=!!eQ,(m=r.useRef(null)).current={open:te,triggerOpen:tt,customizedTrigger:o},r.useEffect(function(){function e(e){if(null===(t=m.current)||void 0===t||!t.customizedTrigger){var t,r=e.target;r.shadowRoot&&e.composed&&(r=e.composedPath()[0]||r),m.current.open&&n().filter(function(e){return e}).every(function(e){return!e.contains(r)&&e!==r})&&m.current.triggerOpen(!1)}}return window.addEventListener("mousedown",e),function(){return window.removeEventListener("mousedown",e)}},[]);var tg=r.useMemo(function(){return(0,s.Z)((0,s.Z)({},e),{},{notFoundContent:B,open:e9,triggerOpen:te,id:M,showSearch:eP,multiple:eN,toggleOpen:tt})},[e,B,te,e9,M,eP,eN,tt]),th=!!ed||K;th&&(O=r.createElement(y,{className:a()("".concat(j,"-arrow"),(0,l.Z)({},"".concat(j,"-arrow-loading"),K)),customizeIcon:ed,customizeIconProps:{loading:K,searchValue:eK,open:e9,focused:eX,showSearch:eP}}));var tv=w(j,function(){var e;null==D||D(),null===(e=eD.current)||void 0===e||e.focus(),L([],{type:"clear",values:A}),ti("",!1,!1)},A,eu,ef,$,eK,U),tb=tv.allowClear,ty=tv.clearIcon,tw=r.createElement(ep,{ref:eW}),tx=a()(j,I,(C={},(0,l.Z)(C,"".concat(j,"-focused"),eX),(0,l.Z)(C,"".concat(j,"-multiple"),eN),(0,l.Z)(C,"".concat(j,"-single"),!eN),(0,l.Z)(C,"".concat(j,"-allow-clear"),eu),(0,l.Z)(C,"".concat(j,"-show-arrow"),th),(0,l.Z)(C,"".concat(j,"-disabled"),$),(0,l.Z)(C,"".concat(j,"-loading"),K),(0,l.Z)(C,"".concat(j,"-open"),e9),(0,l.Z)(C,"".concat(j,"-customize-input"),eY),(0,l.Z)(C,"".concat(j,"-show-search"),eP),C)),tE=r.createElement(z,{ref:eB,disabled:$,prefixCls:j,visible:te,popupElement:tw,animation:em,transitionName:eg,dropdownStyle:eh,dropdownClassName:ev,direction:P,dropdownMatchSelectWidth:eb,dropdownRender:ey,dropdownAlign:ew,placement:ex,builtinPlacements:eE,getPopupContainer:eS,empty:_,getTriggerDOMNode:function(){return eH.current},onPopupVisibleChange:Z,onPopupMouseEnter:function(){tm({})}},eQ?r.cloneElement(eQ,{ref:eJ}):r.createElement(F,(0,i.Z)({},e,{domRef:eH,prefixCls:j,inputElement:eY,ref:eD,id:M,showSearch:eP,autoClearSearchValue:ei,mode:U,activeDescendantId:eo,tagRender:N,values:A,open:e9,onToggleOpen:tt,activeValue:en,searchValue:eK,onSearch:ti,onSearchSubmit:function(e){e&&e.trim()&&ec(e,{source:"submit"})},onRemove:function(e){L(A.filter(function(t){return t!==e}),{type:"remove",values:[e]})},tokenWithEnter:tn})));return k=eQ?tE:r.createElement("div",(0,i.Z)({className:tx},eF,{ref:e_,onMouseDown:function(e){var t,n=e.target,r=null===(t=eB.current)||void 0===t?void 0:t.getPopupElement();if(r&&r.contains(n)){var o=setTimeout(function(){var e,t=tf.indexOf(o);-1!==t&&tf.splice(t,1),e$(),eL||r.contains(document.activeElement)||null===(e=eD.current)||void 0===e||e.focus()});tf.push(o)}for(var a=arguments.length,i=Array(a>1?a-1:0),c=1;c=0;i-=1){var l=o[i];if(!l.disabled){o.splice(i,1),a=l;break}}a&&L(o,{type:"remove",values:[a]})}for(var s=arguments.length,u=Array(s>1?s-1:0),d=1;d1?n-1:0),o=1;o=C},[p,C,null==I?void 0:I.size]),B=function(e){e.preventDefault()},D=function(e){var t;null===(t=_.current)||void 0===t||t.scrollTo("number"==typeof e?{index:e}:e)},W=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=z.length,r=0;r1&&void 0!==arguments[1]&&arguments[1];U(e);var n={source:t?"keyboard":"mouse"},r=z[e];if(!r){O(null,-1,n);return}O(r.value,e,n)};(0,r.useEffect)(function(){$(!1!==k?W(0):-1)},[z.length,g]);var K=r.useCallback(function(e){return I.has(e)&&"combobox"!==m},[m,(0,c.Z)(I).toString(),I.size]);(0,r.useEffect)(function(){var e,t=setTimeout(function(){if(!p&&f&&1===I.size){var e=Array.from(I)[0],t=z.findIndex(function(t){return t.data.value===e});-1!==t&&($(t),D(t))}});return f&&(null===(e=_.current)||void 0===e||e.scrollTo(void 0)),function(){return clearTimeout(t)}},[f,g]);var en=function(e){void 0!==e&&M(e,{selected:!I.has(e)}),p||h(!1)};if(r.useImperativeHandle(t,function(){return{onKeyDown:function(e){var t=e.which,n=e.ctrlKey;switch(t){case v.Z.N:case v.Z.P:case v.Z.UP:case v.Z.DOWN:var r=0;if(t===v.Z.UP?r=-1:t===v.Z.DOWN?r=1:/(mac\sos|macintosh)/i.test(navigator.appVersion)&&n&&(t===v.Z.N?r=1:t===v.Z.P&&(r=-1)),0!==r){var o=W(X+r,r);D(o),$(o,!0)}break;case v.Z.ENTER:var a,i=z[X];!i||null!=i&&null!==(a=i.data)&&void 0!==a&&a.disabled||H?en(void 0):en(i.value),f&&e.preventDefault();break;case v.Z.ESC:h(!1),f&&e.stopPropagation()}},onKeyUp:function(){},scrollTo:function(e){D(e)}}}),0===z.length)return r.createElement("div",{role:"listbox",id:"".concat(s,"_list"),className:"".concat(L,"-empty"),onMouseDown:B},b);var er=Object.keys(R).map(function(e){return R[e]}),eo=function(e){return e.label};function ea(e,t){return{role:e.group?"presentation":"option",id:"".concat(s,"_list_").concat(t)}}var ei=function(e){var t=z[e];if(!t)return null;var n=t.data||{},o=n.value,a=t.group,c=(0,S.Z)(n,!0),l=eo(t);return t?r.createElement("div",(0,i.Z)({"aria-label":"string"!=typeof l||a?null:l},c,{key:e},ea(t,e),{"aria-selected":K(o)}),o):null},ec={role:"listbox",id:"".concat(s,"_list")};return r.createElement(r.Fragment,null,N&&r.createElement("div",(0,i.Z)({},ec,{style:{height:0,width:0,overflow:"hidden"}}),ei(X-1),ei(X),ei(X+1)),r.createElement(J.Z,{itemKey:"key",ref:_,data:z,height:F,itemHeight:T,fullHeight:!1,onMouseDown:B,onScroll:w,virtual:N,direction:P,innerProps:N?null:ec},function(e,t){var n=e.group,o=e.groupOption,c=e.data,s=e.label,u=e.value,f=c.key;if(n){var p,m,g=null!==(m=c.title)&&void 0!==m?m:et(s)?s.toString():void 0;return r.createElement("div",{className:a()(L,"".concat(L,"-group")),title:g},void 0!==s?s:f)}var h=c.disabled,v=c.title,b=(c.children,c.style),w=c.className,x=(0,d.Z)(c,ee),E=(0,Q.Z)(x,er),C=K(u),Z=h||!C&&H,O="".concat(L,"-option"),k=a()(L,O,w,(p={},(0,l.Z)(p,"".concat(O,"-grouped"),o),(0,l.Z)(p,"".concat(O,"-active"),X===t&&!Z),(0,l.Z)(p,"".concat(O,"-disabled"),Z),(0,l.Z)(p,"".concat(O,"-selected"),C),p)),M=eo(e),I=!j||"function"==typeof j||C,R="number"==typeof M?M:M||u,P=et(R)?R.toString():void 0;return void 0!==v&&(P=v),r.createElement("div",(0,i.Z)({},(0,S.Z)(E),N?{}:ea(e,t),{"aria-selected":C,className:k,title:P,onMouseMove:function(){X===t||Z||$(t)},onClick:function(){Z||en(u)},style:b}),r.createElement("div",{className:"".concat(O,"-content")},"function"==typeof A?A(e,{index:t}):R),r.isValidElement(j)||C,I&&r.createElement(y,{className:"".concat(L,"-option-state"),customizeIcon:j,customizeIconProps:{value:u,disabled:Z,isSelected:C}},C?"✓":null))}))}),er=function(e,t){var n=r.useRef({values:new Map,options:new Map});return[r.useMemo(function(){var r=n.current,o=r.values,a=r.options,i=e.map(function(e){if(void 0===e.label){var t;return(0,s.Z)((0,s.Z)({},e),{},{label:null===(t=o.get(e.value))||void 0===t?void 0:t.label})}return e}),c=new Map,l=new Map;return i.forEach(function(e){c.set(e.value,e),l.set(e.value,t.get(e.value)||a.get(e.value))}),n.current.values=c,n.current.options=l,i},[e,t]),r.useCallback(function(e){return t.get(e)||n.current.options.get(e)},[t])]};function eo(e,t){return O(e).join("").toUpperCase().includes(t)}var ea=n(94981),ei=0,ec=(0,ea.Z)(),el=n(45287),es=["children","value"],eu=["children"];function ed(e){var t=r.useRef();return t.current=e,r.useCallback(function(){return t.current.apply(t,arguments)},[])}var ef=["id","mode","prefixCls","backfill","fieldNames","inputValue","searchValue","onSearch","autoClearSearchValue","onSelect","onDeselect","dropdownMatchSelectWidth","filterOption","filterSort","optionFilterProp","optionLabelProp","options","optionRender","children","defaultActiveFirstOption","menuItemSelectedIcon","virtual","direction","listHeight","listItemHeight","value","defaultValue","labelInValue","onChange","maxCount"],ep=["inputValue"],em=r.forwardRef(function(e,t){var n,o,a,m,g,h=e.id,v=e.mode,b=e.prefixCls,y=e.backfill,w=e.fieldNames,x=e.inputValue,E=e.searchValue,S=e.onSearch,C=e.autoClearSearchValue,Z=void 0===C||C,k=e.onSelect,M=e.onDeselect,j=e.dropdownMatchSelectWidth,I=void 0===j||j,R=e.filterOption,N=e.filterSort,P=e.optionFilterProp,F=e.optionLabelProp,T=e.options,A=e.optionRender,L=e.children,z=e.defaultActiveFirstOption,_=e.menuItemSelectedIcon,W=e.virtual,q=e.direction,G=e.listHeight,$=void 0===G?200:G,K=e.listItemHeight,Y=void 0===K?20:K,Q=e.value,J=e.defaultValue,ee=e.labelInValue,et=e.onChange,ea=e.maxCount,em=(0,d.Z)(e,ef),eg=(n=r.useState(),a=(o=(0,u.Z)(n,2))[0],m=o[1],r.useEffect(function(){var e;m("rc_select_".concat((ec?(e=ei,ei+=1):e="TEST_OR_SSR",e)))},[]),h||a),eh=X(v),ev=!!(!T&&L),eb=r.useMemo(function(){return(void 0!==R||"combobox"!==v)&&R},[R,v]),ey=r.useMemo(function(){return B(w,ev)},[JSON.stringify(w),ev]),ew=(0,p.Z)("",{value:void 0!==E?E:x,postState:function(e){return e||""}}),ex=(0,u.Z)(ew,2),eE=ex[0],eS=ex[1],eC=r.useMemo(function(){var e=T;T||(e=function e(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return(0,el.Z)(t).map(function(t,o){if(!r.isValidElement(t)||!t.type)return null;var a,i,c,l,u,f=t.type.isSelectOptGroup,p=t.key,m=t.props,g=m.children,h=(0,d.Z)(m,eu);return n||!f?(a=t.key,c=(i=t.props).children,l=i.value,u=(0,d.Z)(i,es),(0,s.Z)({key:a,value:void 0!==l?l:a,children:c},u)):(0,s.Z)((0,s.Z)({key:"__RC_SELECT_GRP__".concat(null===p?o:p,"__"),label:p},h),{},{options:e(g)})}).filter(function(e){return e})}(L));var t=new Map,n=new Map,o=function(e,t,n){n&&"string"==typeof n&&e.set(t[n],t)};return function e(r){for(var a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=0;i1&&void 0!==arguments[1]?arguments[1]:{},n=t.fieldNames,r=t.childrenAsData,o=[],a=B(n,!1),i=a.label,c=a.value,l=a.options,s=a.groupLabel;return!function e(t,n){Array.isArray(t)&&t.forEach(function(t){if(!n&&l in t){var a=t[s];void 0===a&&r&&(a=t.label),o.push({key:H(t,o.length),group:!0,data:t,label:a}),e(t[l],!0)}else{var u=t[c];o.push({key:H(t,o.length),groupOption:n,data:t,label:t[i],value:u})}})}(e,!1),o}(eD,{fieldNames:ey,childrenAsData:ev})},[eD,ey,ev]),eV=function(e){var t=eM(e);if(eN(t),et&&(t.length!==eT.length||t.some(function(e,t){var n;return(null===(n=eT[t])||void 0===n?void 0:n.value)!==(null==e?void 0:e.value)}))){var n=ee?t:t.map(function(e){return e.value}),r=t.map(function(e){return D(eA(e.value))});et(eh?n:n[0],eh?r:r[0])}},eq=r.useState(null),eG=(0,u.Z)(eq,2),eX=eG[0],eU=eG[1],e$=r.useState(0),eK=(0,u.Z)(e$,2),eY=eK[0],eQ=eK[1],eJ=void 0!==z?z:"combobox"!==v,e0=r.useCallback(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.source;eQ(t),y&&"combobox"===v&&null!==e&&"keyboard"===(void 0===r?"keyboard":r)&&eU(String(e))},[y,v]),e1=function(e,t,n){var r=function(){var t,n=eA(e);return[ee?{label:null==n?void 0:n[ey.label],value:e,key:null!==(t=null==n?void 0:n.key)&&void 0!==t?t:e}:e,D(n)]};if(t&&k){var o=r(),a=(0,u.Z)(o,2);k(a[0],a[1])}else if(!t&&M&&"clear"!==n){var i=r(),c=(0,u.Z)(i,2);M(c[0],c[1])}},e2=ed(function(e,t){var n=!eh||t.selected;eV(n?eh?[].concat((0,c.Z)(eT),[e]):[e]:eT.filter(function(t){return t.value!==e})),e1(e,n),"combobox"===v?eU(""):(!X||Z)&&(eS(""),eU(""))}),e6=r.useMemo(function(){var e=!1!==W&&!1!==I;return(0,s.Z)((0,s.Z)({},eC),{},{flattenOptions:eW,onActiveValue:e0,defaultActiveFirstOption:eJ,onSelect:e2,menuItemSelectedIcon:_,rawValues:ez,fieldNames:ey,virtual:e,direction:q,listHeight:$,listItemHeight:Y,childrenAsData:ev,maxCount:ea,optionRender:A})},[ea,eC,eW,e0,eJ,e2,_,ez,ey,W,I,q,$,Y,ev,A]);return r.createElement(V.Provider,{value:e6},r.createElement(U,(0,i.Z)({},em,{id:eg,prefixCls:void 0===b?"rc-select":b,ref:t,omitDomProps:ep,mode:v,displayValues:eL,onDisplayValuesChange:function(e,t){eV(e);var n=t.type,r=t.values;("remove"===n||"clear"===n)&&r.forEach(function(e){e1(e.value,!1,n)})},direction:q,searchValue:eE,onSearch:function(e,t){if(eS(e),eU(null),"submit"===t.source){var n=(e||"").trim();n&&(eV(Array.from(new Set([].concat((0,c.Z)(ez),[n])))),e1(n,!0),eS(""));return}"blur"!==t.source&&("combobox"===v&&eV(e),null==S||S(e))},autoClearSearchValue:Z,onSearchSplit:function(e){var t=e;"tags"!==v&&(t=e.map(function(e){var t=eO.get(e);return null==t?void 0:t.value}).filter(function(e){return void 0!==e}));var n=Array.from(new Set([].concat((0,c.Z)(ez),(0,c.Z)(t))));eV(n),n.forEach(function(e){e1(e,!0)})},dropdownMatchSelectWidth:I,OptionList:en,emptyOptions:!eW.length,activeValue:eX,activeDescendantId:"".concat(eg,"_list_").concat(eY)})))});em.Option=K,em.OptGroup=$;var eg=n(62236),eh=n(68710),ev=n(93942),eb=n(12757),ey=n(71744),ew=n(91086),ex=n(86586),eE=n(64024),eS=n(33759),eC=n(39109),eZ=n(56250),eO=n(65658),ek=n(29961);let eM=e=>{let t={overflow:{adjustX:!0,adjustY:!0,shiftY:!0},htmlRegion:"scroll"===e?"scroll":"visible",dynamicInset:!0};return{bottomLeft:Object.assign(Object.assign({},t),{points:["tl","bl"],offset:[0,4]}),bottomRight:Object.assign(Object.assign({},t),{points:["tr","br"],offset:[0,4]}),topLeft:Object.assign(Object.assign({},t),{points:["bl","tl"],offset:[0,-4]}),topRight:Object.assign(Object.assign({},t),{points:["br","tr"],offset:[0,-4]})}};var ej=n(12918),eI=n(17691),eR=n(80669),eN=n(3104),eP=n(18544),eF=n(29382);let eT=e=>{let{optionHeight:t,optionFontSize:n,optionLineHeight:r,optionPadding:o}=e;return{position:"relative",display:"block",minHeight:t,padding:o,color:e.colorText,fontWeight:"normal",fontSize:n,lineHeight:r,boxSizing:"border-box"}};var eA=e=>{let{antCls:t,componentCls:n}=e,r="".concat(n,"-item"),o="&".concat(t,"-slide-up-enter").concat(t,"-slide-up-enter-active"),a="&".concat(t,"-slide-up-appear").concat(t,"-slide-up-appear-active"),i="&".concat(t,"-slide-up-leave").concat(t,"-slide-up-leave-active"),c="".concat(n,"-dropdown-placement-");return[{["".concat(n,"-dropdown")]:Object.assign(Object.assign({},(0,ej.Wf)(e)),{position:"absolute",top:-9999,zIndex:e.zIndexPopup,boxSizing:"border-box",padding:e.paddingXXS,overflow:"hidden",fontSize:e.fontSize,fontVariant:"initial",backgroundColor:e.colorBgElevated,borderRadius:e.borderRadiusLG,outline:"none",boxShadow:e.boxShadowSecondary,["\n ".concat(o).concat(c,"bottomLeft,\n ").concat(a).concat(c,"bottomLeft\n ")]:{animationName:eP.fJ},["\n ".concat(o).concat(c,"topLeft,\n ").concat(a).concat(c,"topLeft,\n ").concat(o).concat(c,"topRight,\n ").concat(a).concat(c,"topRight\n ")]:{animationName:eP.Qt},["".concat(i).concat(c,"bottomLeft")]:{animationName:eP.Uw},["\n ".concat(i).concat(c,"topLeft,\n ").concat(i).concat(c,"topRight\n ")]:{animationName:eP.ly},"&-hidden":{display:"none"},["".concat(r)]:Object.assign(Object.assign({},eT(e)),{cursor:"pointer",transition:"background ".concat(e.motionDurationSlow," ease"),borderRadius:e.borderRadiusSM,"&-group":{color:e.colorTextDescription,fontSize:e.fontSizeSM,cursor:"default"},"&-option":{display:"flex","&-content":Object.assign({flex:"auto"},ej.vS),"&-state":{flex:"none",display:"flex",alignItems:"center"},["&-active:not(".concat(r,"-option-disabled)")]:{backgroundColor:e.optionActiveBg},["&-selected:not(".concat(r,"-option-disabled)")]:{color:e.optionSelectedColor,fontWeight:e.optionSelectedFontWeight,backgroundColor:e.optionSelectedBg,["".concat(r,"-option-state")]:{color:e.colorPrimary},["&:has(+ ".concat(r,"-option-selected:not(").concat(r,"-option-disabled))")]:{borderEndStartRadius:0,borderEndEndRadius:0,["& + ".concat(r,"-option-selected:not(").concat(r,"-option-disabled)")]:{borderStartStartRadius:0,borderStartEndRadius:0}}},"&-disabled":{["&".concat(r,"-option-selected")]:{backgroundColor:e.colorBgContainerDisabled},color:e.colorTextDisabled,cursor:"not-allowed"},"&-grouped":{paddingInlineStart:e.calc(e.controlPaddingHorizontal).mul(2).equal()}}}),"&-rtl":{direction:"rtl"}})},(0,eP.oN)(e,"slide-up"),(0,eP.oN)(e,"slide-down"),(0,eF.Fm)(e,"move-up"),(0,eF.Fm)(e,"move-down")]},eL=n(352);let ez=e=>{let{multipleSelectItemHeight:t,selectHeight:n,lineWidth:r}=e;return e.calc(n).sub(t).div(2).sub(r).equal()};function e_(e,t){let{componentCls:n,iconCls:r}=e,o="".concat(n,"-selection-overflow"),a=e.multipleSelectItemHeight,i=ez(e),c=t?"".concat(n,"-").concat(t):"";return{["".concat(n,"-multiple").concat(c)]:{fontSize:e.fontSize,[o]:{position:"relative",display:"flex",flex:"auto",flexWrap:"wrap",maxWidth:"100%","&-item":{flex:"none",alignSelf:"center",maxWidth:"100%",display:"inline-flex"}},["".concat(n,"-selector")]:{display:"flex",flexWrap:"wrap",alignItems:"center",height:"100%",paddingInline:e.calc(2).mul(2).equal(),paddingBlock:e.calc(i).sub(2).equal(),borderRadius:e.borderRadius,["".concat(n,"-show-search&")]:{cursor:"text"},["".concat(n,"-disabled&")]:{background:e.multipleSelectorBgDisabled,cursor:"not-allowed"},"&:after":{display:"inline-block",width:0,margin:"".concat((0,eL.bf)(2)," 0"),lineHeight:(0,eL.bf)(a),visibility:"hidden",content:'"\\a0"'}},["\n &".concat(n,"-show-arrow ").concat(n,"-selector,\n &").concat(n,"-allow-clear ").concat(n,"-selector\n ")]:{paddingInlineEnd:e.calc(e.fontSizeIcon).add(e.controlPaddingHorizontal).equal()},["".concat(n,"-selection-item")]:{display:"flex",alignSelf:"center",flex:"none",boxSizing:"border-box",maxWidth:"100%",height:a,marginTop:2,marginBottom:2,lineHeight:(0,eL.bf)(e.calc(a).sub(e.calc(e.lineWidth).mul(2)).equal()),borderRadius:e.borderRadiusSM,cursor:"default",transition:"font-size ".concat(e.motionDurationSlow,", line-height ").concat(e.motionDurationSlow,", height ").concat(e.motionDurationSlow),marginInlineEnd:e.calc(2).mul(2).equal(),paddingInlineStart:e.paddingXS,paddingInlineEnd:e.calc(e.paddingXS).div(2).equal(),["".concat(n,"-disabled&")]:{color:e.multipleItemColorDisabled,borderColor:e.multipleItemBorderColorDisabled,cursor:"not-allowed"},"&-content":{display:"inline-block",marginInlineEnd:e.calc(e.paddingXS).div(2).equal(),overflow:"hidden",whiteSpace:"pre",textOverflow:"ellipsis"},"&-remove":Object.assign(Object.assign({},(0,ej.Ro)()),{display:"inline-flex",alignItems:"center",color:e.colorIcon,fontWeight:"bold",fontSize:10,lineHeight:"inherit",cursor:"pointer",["> ".concat(r)]:{verticalAlign:"-0.2em"},"&:hover":{color:e.colorIconHover}})},["".concat(o,"-item + ").concat(o,"-item")]:{["".concat(n,"-selection-search")]:{marginInlineStart:0}},["".concat(o,"-item-suffix")]:{height:"100%"},["".concat(n,"-selection-search")]:{display:"inline-flex",position:"relative",maxWidth:"100%",marginInlineStart:e.calc(e.inputPaddingHorizontalBase).sub(i).equal(),"\n &-input,\n &-mirror\n ":{height:a,fontFamily:e.fontFamily,lineHeight:(0,eL.bf)(a),transition:"all ".concat(e.motionDurationSlow)},"&-input":{width:"100%",minWidth:4.1},"&-mirror":{position:"absolute",top:0,insetInlineStart:0,insetInlineEnd:"auto",zIndex:999,whiteSpace:"pre",visibility:"hidden"}},["".concat(n,"-selection-placeholder")]:{position:"absolute",top:"50%",insetInlineStart:e.inputPaddingHorizontalBase,insetInlineEnd:e.inputPaddingHorizontalBase,transform:"translateY(-50%)",transition:"all ".concat(e.motionDurationSlow)}}}}var eH=e=>{let{componentCls:t}=e,n=(0,eN.TS)(e,{selectHeight:e.controlHeightSM,multipleSelectItemHeight:e.controlHeightXS,borderRadius:e.borderRadiusSM,borderRadiusSM:e.borderRadiusXS}),r=(0,eN.TS)(e,{fontSize:e.fontSizeLG,selectHeight:e.controlHeightLG,multipleSelectItemHeight:e.multipleItemHeightLG,borderRadius:e.borderRadiusLG,borderRadiusSM:e.borderRadius});return[e_(e),e_(n,"sm"),{["".concat(t,"-multiple").concat(t,"-sm")]:{["".concat(t,"-selection-placeholder")]:{insetInline:e.calc(e.controlPaddingHorizontalSM).sub(e.lineWidth).equal()},["".concat(t,"-selection-search")]:{marginInlineStart:2}}},e_(r,"lg")]};function eB(e,t){let{componentCls:n,inputPaddingHorizontalBase:r,borderRadius:o}=e,a=e.calc(e.controlHeight).sub(e.calc(e.lineWidth).mul(2)).equal(),i=t?"".concat(n,"-").concat(t):"";return{["".concat(n,"-single").concat(i)]:{fontSize:e.fontSize,height:e.controlHeight,["".concat(n,"-selector")]:Object.assign(Object.assign({},(0,ej.Wf)(e,!0)),{display:"flex",borderRadius:o,["".concat(n,"-selection-search")]:{position:"absolute",top:0,insetInlineStart:r,insetInlineEnd:r,bottom:0,"&-input":{width:"100%",WebkitAppearance:"textfield"}},["\n ".concat(n,"-selection-item,\n ").concat(n,"-selection-placeholder\n ")]:{padding:0,lineHeight:(0,eL.bf)(a),transition:"all ".concat(e.motionDurationSlow,", visibility 0s"),alignSelf:"center"},["".concat(n,"-selection-placeholder")]:{transition:"none",pointerEvents:"none"},[["&:after","".concat(n,"-selection-item:empty:after"),"".concat(n,"-selection-placeholder:empty:after")].join(",")]:{display:"inline-block",width:0,visibility:"hidden",content:'"\\a0"'}}),["\n &".concat(n,"-show-arrow ").concat(n,"-selection-item,\n &").concat(n,"-show-arrow ").concat(n,"-selection-placeholder\n ")]:{paddingInlineEnd:e.showArrowPaddingInlineEnd},["&".concat(n,"-open ").concat(n,"-selection-item")]:{color:e.colorTextPlaceholder},["&:not(".concat(n,"-customize-input)")]:{["".concat(n,"-selector")]:{width:"100%",height:"100%",padding:"0 ".concat((0,eL.bf)(r)),["".concat(n,"-selection-search-input")]:{height:a},"&:after":{lineHeight:(0,eL.bf)(a)}}},["&".concat(n,"-customize-input")]:{["".concat(n,"-selector")]:{"&:after":{display:"none"},["".concat(n,"-selection-search")]:{position:"static",width:"100%"},["".concat(n,"-selection-placeholder")]:{position:"absolute",insetInlineStart:0,insetInlineEnd:0,padding:"0 ".concat((0,eL.bf)(r)),"&:after":{display:"none"}}}}}}}let eD=(e,t)=>{let{componentCls:n,antCls:r,controlOutlineWidth:o}=e;return{["&:not(".concat(n,"-customize-input) ").concat(n,"-selector")]:{border:"".concat((0,eL.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(t.borderColor),background:e.selectorBg},["&:not(".concat(n,"-disabled):not(").concat(n,"-customize-input):not(").concat(r,"-pagination-size-changer)")]:{["&:hover ".concat(n,"-selector")]:{borderColor:t.hoverBorderHover},["".concat(n,"-focused& ").concat(n,"-selector")]:{borderColor:t.activeBorderColor,boxShadow:"0 0 0 ".concat((0,eL.bf)(o)," ").concat(t.activeShadowColor),outline:0}}}},eW=(e,t)=>({["&".concat(e.componentCls,"-status-").concat(t.status)]:Object.assign({},eD(e,t))}),eV=e=>({"&-outlined":Object.assign(Object.assign(Object.assign(Object.assign({},eD(e,{borderColor:e.colorBorder,hoverBorderHover:e.colorPrimaryHover,activeBorderColor:e.colorPrimary,activeShadowColor:e.controlOutline})),eW(e,{status:"error",borderColor:e.colorError,hoverBorderHover:e.colorErrorHover,activeBorderColor:e.colorError,activeShadowColor:e.colorErrorOutline})),eW(e,{status:"warning",borderColor:e.colorWarning,hoverBorderHover:e.colorWarningHover,activeBorderColor:e.colorWarning,activeShadowColor:e.colorWarningOutline})),{["&".concat(e.componentCls,"-disabled")]:{["&:not(".concat(e.componentCls,"-customize-input) ").concat(e.componentCls,"-selector")]:{background:e.colorBgContainerDisabled,color:e.colorTextDisabled}},["&".concat(e.componentCls,"-multiple ").concat(e.componentCls,"-selection-item")]:{background:e.multipleItemBg,border:"".concat((0,eL.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.multipleItemBorderColor)}})}),eq=(e,t)=>{let{componentCls:n,antCls:r}=e;return{["&:not(".concat(n,"-customize-input) ").concat(n,"-selector")]:{background:t.bg,border:"".concat((0,eL.bf)(e.lineWidth)," ").concat(e.lineType," transparent"),color:t.color},["&:not(".concat(n,"-disabled):not(").concat(n,"-customize-input):not(").concat(r,"-pagination-size-changer)")]:{["&:hover ".concat(n,"-selector")]:{background:t.hoverBg},["".concat(n,"-focused& ").concat(n,"-selector")]:{background:e.selectorBg,borderColor:t.activeBorderColor,outline:0}}}},eG=(e,t)=>({["&".concat(e.componentCls,"-status-").concat(t.status)]:Object.assign({},eq(e,t))}),eX=e=>({"&-filled":Object.assign(Object.assign(Object.assign(Object.assign({},eq(e,{bg:e.colorFillTertiary,hoverBg:e.colorFillSecondary,activeBorderColor:e.colorPrimary,color:e.colorText})),eG(e,{status:"error",bg:e.colorErrorBg,hoverBg:e.colorErrorBgHover,activeBorderColor:e.colorError,color:e.colorError})),eG(e,{status:"warning",bg:e.colorWarningBg,hoverBg:e.colorWarningBgHover,activeBorderColor:e.colorWarning,color:e.colorWarning})),{["&".concat(e.componentCls,"-disabled")]:{["&:not(".concat(e.componentCls,"-customize-input) ").concat(e.componentCls,"-selector")]:{borderColor:e.colorBorder,background:e.colorBgContainerDisabled,color:e.colorTextDisabled}},["&".concat(e.componentCls,"-multiple ").concat(e.componentCls,"-selection-item")]:{background:e.colorBgContainer,border:"".concat((0,eL.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.colorSplit)}})}),eU=e=>({"&-borderless":{["".concat(e.componentCls,"-selector")]:{background:"transparent",borderColor:"transparent"},["&".concat(e.componentCls,"-disabled")]:{["&:not(".concat(e.componentCls,"-customize-input) ").concat(e.componentCls,"-selector")]:{color:e.colorTextDisabled}},["&".concat(e.componentCls,"-multiple ").concat(e.componentCls,"-selection-item")]:{background:e.multipleItemBg,border:"".concat((0,eL.bf)(e.lineWidth)," ").concat(e.lineType," ").concat(e.multipleItemBorderColor)}}});var e$=e=>({[e.componentCls]:Object.assign(Object.assign(Object.assign({},eV(e)),eX(e)),eU(e))});let eK=e=>{let{componentCls:t}=e;return{position:"relative",transition:"all ".concat(e.motionDurationMid," ").concat(e.motionEaseInOut),input:{cursor:"pointer"},["".concat(t,"-show-search&")]:{cursor:"text",input:{cursor:"auto",color:"inherit",height:"100%"}},["".concat(t,"-disabled&")]:{cursor:"not-allowed",input:{cursor:"not-allowed"}}}},eY=e=>{let{componentCls:t}=e;return{["".concat(t,"-selection-search-input")]:{margin:0,padding:0,background:"transparent",border:"none",outline:"none",appearance:"none",fontFamily:"inherit","&::-webkit-search-cancel-button":{display:"none","-webkit-appearance":"none"}}}},eQ=e=>{let{antCls:t,componentCls:n,inputPaddingHorizontalBase:r,iconCls:o}=e;return{[n]:Object.assign(Object.assign({},(0,ej.Wf)(e)),{position:"relative",display:"inline-block",cursor:"pointer",["&:not(".concat(n,"-customize-input) ").concat(n,"-selector")]:Object.assign(Object.assign({},eK(e)),eY(e)),["".concat(n,"-selection-item")]:Object.assign(Object.assign({flex:1,fontWeight:"normal",position:"relative",userSelect:"none"},ej.vS),{["> ".concat(t,"-typography")]:{display:"inline"}}),["".concat(n,"-selection-placeholder")]:Object.assign(Object.assign({},ej.vS),{flex:1,color:e.colorTextPlaceholder,pointerEvents:"none"}),["".concat(n,"-arrow")]:Object.assign(Object.assign({},(0,ej.Ro)()),{position:"absolute",top:"50%",insetInlineStart:"auto",insetInlineEnd:r,height:e.fontSizeIcon,marginTop:e.calc(e.fontSizeIcon).mul(-1).div(2).equal(),color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,lineHeight:1,textAlign:"center",pointerEvents:"none",display:"flex",alignItems:"center",transition:"opacity ".concat(e.motionDurationSlow," ease"),[o]:{verticalAlign:"top",transition:"transform ".concat(e.motionDurationSlow),"> svg":{verticalAlign:"top"},["&:not(".concat(n,"-suffix)")]:{pointerEvents:"auto"}},["".concat(n,"-disabled &")]:{cursor:"not-allowed"},"> *:not(:last-child)":{marginInlineEnd:8}}),["".concat(n,"-clear")]:{position:"absolute",top:"50%",insetInlineStart:"auto",insetInlineEnd:r,zIndex:1,display:"inline-block",width:e.fontSizeIcon,height:e.fontSizeIcon,marginTop:e.calc(e.fontSizeIcon).mul(-1).div(2).equal(),color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,fontStyle:"normal",lineHeight:1,textAlign:"center",textTransform:"none",cursor:"pointer",opacity:0,transition:"color ".concat(e.motionDurationMid," ease, opacity ").concat(e.motionDurationSlow," ease"),textRendering:"auto","&:before":{display:"block"},"&:hover":{color:e.colorTextTertiary}},"&:hover":{["".concat(n,"-clear")]:{opacity:1},["".concat(n,"-arrow:not(:last-child)")]:{opacity:0}}}),["".concat(n,"-has-feedback")]:{["".concat(n,"-clear")]:{insetInlineEnd:e.calc(r).add(e.fontSize).add(e.paddingXS).equal()}}}},eJ=e=>{let{componentCls:t}=e;return[{[t]:{["&".concat(t,"-in-form-item")]:{width:"100%"}}},eQ(e),function(e){let{componentCls:t}=e,n=e.calc(e.controlPaddingHorizontalSM).sub(e.lineWidth).equal();return[eB(e),eB((0,eN.TS)(e,{controlHeight:e.controlHeightSM,borderRadius:e.borderRadiusSM}),"sm"),{["".concat(t,"-single").concat(t,"-sm")]:{["&:not(".concat(t,"-customize-input)")]:{["".concat(t,"-selection-search")]:{insetInlineStart:n,insetInlineEnd:n},["".concat(t,"-selector")]:{padding:"0 ".concat((0,eL.bf)(n))},["&".concat(t,"-show-arrow ").concat(t,"-selection-search")]:{insetInlineEnd:e.calc(n).add(e.calc(e.fontSize).mul(1.5)).equal()},["\n &".concat(t,"-show-arrow ").concat(t,"-selection-item,\n &").concat(t,"-show-arrow ").concat(t,"-selection-placeholder\n ")]:{paddingInlineEnd:e.calc(e.fontSize).mul(1.5).equal()}}}},eB((0,eN.TS)(e,{controlHeight:e.singleItemHeightLG,fontSize:e.fontSizeLG,borderRadius:e.borderRadiusLG}),"lg")]}(e),eH(e),eA(e),{["".concat(t,"-rtl")]:{direction:"rtl"}},(0,eI.c)(e,{borderElCls:"".concat(t,"-selector"),focusElCls:"".concat(t,"-focused")})]};var e0=(0,eR.I$)("Select",(e,t)=>{let{rootPrefixCls:n}=t,r=(0,eN.TS)(e,{rootPrefixCls:n,inputPaddingHorizontalBase:e.calc(e.paddingSM).sub(1).equal(),multipleSelectItemHeight:e.multipleItemHeight,selectHeight:e.controlHeight});return[eJ(r),e$(r)]},e=>{let{fontSize:t,lineHeight:n,controlHeight:r,controlPaddingHorizontal:o,zIndexPopupBase:a,colorText:i,fontWeightStrong:c,controlItemBgActive:l,controlItemBgHover:s,colorBgContainer:u,colorFillSecondary:d,controlHeightLG:f,controlHeightSM:p,colorBgContainerDisabled:m,colorTextDisabled:g}=e;return{zIndexPopup:a+50,optionSelectedColor:i,optionSelectedFontWeight:c,optionSelectedBg:l,optionActiveBg:s,optionPadding:"".concat((r-t*n)/2,"px ").concat(o,"px"),optionFontSize:t,optionLineHeight:n,optionHeight:r,selectorBg:u,clearBg:u,singleItemHeightLG:f,multipleItemBg:d,multipleItemBorderColor:"transparent",multipleItemHeight:p,multipleItemHeightLG:r,multipleSelectorBgDisabled:m,multipleItemColorDisabled:g,multipleItemBorderColorDisabled:"transparent",showArrowPaddingInlineEnd:Math.ceil(1.25*e.fontSize)}},{unitless:{optionLineHeight:!0,optionSelectedFontWeight:!0}}),e1=n(9738),e2=n(39725),e6=n(49638),e5=n(70464),e4=n(61935),e3=n(29436),e8=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let e9="SECRET_COMBOBOX_MODE_DO_NOT_USE",e7=r.forwardRef((e,t)=>{var n,o,i;let c;let{prefixCls:l,bordered:s,className:u,rootClassName:d,getPopupContainer:f,popupClassName:p,dropdownClassName:m,listHeight:g=256,placement:h,listItemHeight:v,size:b,disabled:y,notFoundContent:w,status:x,builtinPlacements:E,dropdownMatchSelectWidth:S,popupMatchSelectWidth:C,direction:Z,style:O,allowClear:k,variant:M,dropdownStyle:j,transitionName:I,tagRender:R,maxCount:N}=e,P=e8(e,["prefixCls","bordered","className","rootClassName","getPopupContainer","popupClassName","dropdownClassName","listHeight","placement","listItemHeight","size","disabled","notFoundContent","status","builtinPlacements","dropdownMatchSelectWidth","popupMatchSelectWidth","direction","style","allowClear","variant","dropdownStyle","transitionName","tagRender","maxCount"]),{getPopupContainer:F,getPrefixCls:T,renderEmpty:A,direction:L,virtual:z,popupMatchSelectWidth:_,popupOverflow:H,select:B}=r.useContext(ey.E_),[,D]=(0,ek.ZP)(),W=null!=v?v:null==D?void 0:D.controlHeight,V=T("select",l),q=T(),G=null!=Z?Z:L,{compactSize:X,compactItemClassnames:U}=(0,eO.ri)(V,G),[$,K]=(0,eZ.Z)(M,s),Y=(0,eE.Z)(V),[J,ee,et]=e0(V,Y),en=r.useMemo(()=>{let{mode:t}=e;return"combobox"===t?void 0:t===e9?"combobox":t},[e.mode]),er="multiple"===en||"tags"===en,eo=(o=e.suffixIcon,void 0!==(i=e.showArrow)?i:null!==o),ea=null!==(n=null!=C?C:S)&&void 0!==n?n:_,{status:ei,hasFeedback:ec,isFormItemInput:el,feedbackIcon:es}=r.useContext(eC.aM),eu=(0,eb.F)(ei,x);c=void 0!==w?w:"combobox"===en?null:(null==A?void 0:A("Select"))||r.createElement(ew.Z,{componentName:"Select"});let{suffixIcon:ed,itemIcon:ef,removeIcon:ep,clearIcon:ev}=function(e){let{suffixIcon:t,clearIcon:n,menuItemSelectedIcon:o,removeIcon:a,loading:i,multiple:c,hasFeedback:l,prefixCls:s,showSuffixIcon:u,feedbackIcon:d,showArrow:f,componentName:p}=e,m=null!=n?n:r.createElement(e2.Z,null),g=e=>null!==t||l||f?r.createElement(r.Fragment,null,!1!==u&&e,l&&d):null,h=null;if(void 0!==t)h=g(t);else if(i)h=g(r.createElement(e4.Z,{spin:!0}));else{let e="".concat(s,"-suffix");h=t=>{let{open:n,showSearch:o}=t;return n&&o?g(r.createElement(e3.Z,{className:e})):g(r.createElement(e5.Z,{className:e}))}}let v=null;return v=void 0!==o?o:c?r.createElement(e1.Z,null):null,{clearIcon:m,suffixIcon:h,itemIcon:v,removeIcon:void 0!==a?a:r.createElement(e6.Z,null)}}(Object.assign(Object.assign({},P),{multiple:er,hasFeedback:ec,feedbackIcon:es,showSuffixIcon:eo,prefixCls:V,componentName:"Select"})),ej=(0,Q.Z)(P,["suffixIcon","itemIcon"]),eI=a()(p||m,{["".concat(V,"-dropdown-").concat(G)]:"rtl"===G},d,et,Y,ee),eR=(0,eS.Z)(e=>{var t;return null!==(t=null!=b?b:X)&&void 0!==t?t:e}),eN=r.useContext(ex.Z),eP=a()({["".concat(V,"-lg")]:"large"===eR,["".concat(V,"-sm")]:"small"===eR,["".concat(V,"-rtl")]:"rtl"===G,["".concat(V,"-").concat($)]:K,["".concat(V,"-in-form-item")]:el},(0,eb.Z)(V,eu,ec),U,null==B?void 0:B.className,u,d,et,Y,ee),eF=r.useMemo(()=>void 0!==h?h:"rtl"===G?"bottomRight":"bottomLeft",[h,G]),[eT]=(0,eg.Cn)("SelectLike",null==j?void 0:j.zIndex);return J(r.createElement(em,Object.assign({ref:t,virtual:z,showSearch:null==B?void 0:B.showSearch},ej,{style:Object.assign(Object.assign({},null==B?void 0:B.style),O),dropdownMatchSelectWidth:ea,transitionName:(0,eh.m)(q,"slide-up",I),builtinPlacements:E||eM(H),listHeight:g,listItemHeight:W,mode:en,prefixCls:V,placement:eF,direction:G,suffixIcon:ed,menuItemSelectedIcon:ef,removeIcon:ep,allowClear:!0===k?{clearIcon:ev}:k,notFoundContent:c,className:eP,getPopupContainer:f||F,dropdownClassName:eI,disabled:null!=y?y:eN,dropdownStyle:Object.assign(Object.assign({},j),{zIndex:eT}),maxCount:er?N:void 0,tagRender:er?R:void 0})))}),te=(0,ev.Z)(e7);e7.SECRET_COMBOBOX_MODE_DO_NOT_USE=e9,e7.Option=K,e7.OptGroup=$,e7._InternalPanelDoNotUseOrYouWillBeFired=te;var tt=e7},65658:function(e,t,n){"use strict";n.d(t,{BR:function(){return p},ri:function(){return f}});var r=n(36760),o=n.n(r),a=n(45287),i=n(2265),c=n(71744),l=n(33759),s=n(4924),u=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let d=i.createContext(null),f=(e,t)=>{let n=i.useContext(d),r=i.useMemo(()=>{if(!n)return"";let{compactDirection:r,isFirstItem:a,isLastItem:i}=n,c="vertical"===r?"-vertical-":"-";return o()("".concat(e,"-compact").concat(c,"item"),{["".concat(e,"-compact").concat(c,"first-item")]:a,["".concat(e,"-compact").concat(c,"last-item")]:i,["".concat(e,"-compact").concat(c,"item-rtl")]:"rtl"===t})},[e,t,n]);return{compactSize:null==n?void 0:n.compactSize,compactDirection:null==n?void 0:n.compactDirection,compactItemClassnames:r}},p=e=>{let{children:t}=e;return i.createElement(d.Provider,{value:null},t)},m=e=>{var{children:t}=e,n=u(e,["children"]);return i.createElement(d.Provider,{value:n},t)};t.ZP=e=>{let{getPrefixCls:t,direction:n}=i.useContext(c.E_),{size:r,direction:f,block:p,prefixCls:g,className:h,rootClassName:v,children:b}=e,y=u(e,["size","direction","block","prefixCls","className","rootClassName","children"]),w=(0,l.Z)(e=>null!=r?r:e),x=t("space-compact",g),[E,S]=(0,s.Z)(x),C=o()(x,S,{["".concat(x,"-rtl")]:"rtl"===n,["".concat(x,"-block")]:p,["".concat(x,"-vertical")]:"vertical"===f},h,v),Z=i.useContext(d),O=(0,a.Z)(b),k=i.useMemo(()=>O.map((e,t)=>{let n=e&&e.key||"".concat(x,"-item-").concat(t);return i.createElement(m,{key:n,compactSize:w,compactDirection:f,isFirstItem:0===t&&(!Z||(null==Z?void 0:Z.isFirstItem)),isLastItem:t===O.length-1&&(!Z||(null==Z?void 0:Z.isLastItem))},e)}),[r,O,Z]);return 0===O.length?null:E(i.createElement("div",Object.assign({className:C},y),k))}},4924:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var r=n(80669),o=n(3104),a=e=>{let{componentCls:t}=e;return{[t]:{"&-block":{display:"flex",width:"100%"},"&-vertical":{flexDirection:"column"}}}};let i=e=>{let{componentCls:t}=e;return{[t]:{display:"inline-flex","&-rtl":{direction:"rtl"},"&-vertical":{flexDirection:"column"},"&-align":{flexDirection:"column","&-center":{alignItems:"center"},"&-start":{alignItems:"flex-start"},"&-end":{alignItems:"flex-end"},"&-baseline":{alignItems:"baseline"}},["".concat(t,"-item:empty")]:{display:"none"}}}},c=e=>{let{componentCls:t}=e;return{[t]:{"&-gap-row-small":{rowGap:e.spaceGapSmallSize},"&-gap-row-middle":{rowGap:e.spaceGapMiddleSize},"&-gap-row-large":{rowGap:e.spaceGapLargeSize},"&-gap-col-small":{columnGap:e.spaceGapSmallSize},"&-gap-col-middle":{columnGap:e.spaceGapMiddleSize},"&-gap-col-large":{columnGap:e.spaceGapLargeSize}}}};var l=(0,r.I$)("Space",e=>{let t=(0,o.TS)(e,{spaceGapSmallSize:e.paddingXS,spaceGapMiddleSize:e.padding,spaceGapLargeSize:e.paddingLG});return[i(t),c(t),a(t)]},()=>({}),{resetStyle:!1})},17691:function(e,t,n){"use strict";function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{focus:!0},{componentCls:n}=e,r="".concat(n,"-compact");return{[r]:Object.assign(Object.assign({},function(e,t,n){let{focusElCls:r,focus:o,borderElCls:a}=n,i=a?"> *":"",c=["hover",o?"focus":null,"active"].filter(Boolean).map(e=>"&:".concat(e," ").concat(i)).join(",");return{["&-item:not(".concat(t,"-last-item)")]:{marginInlineEnd:e.calc(e.lineWidth).mul(-1).equal()},"&-item":Object.assign(Object.assign({[c]:{zIndex:2}},r?{["&".concat(r)]:{zIndex:2}}:{}),{["&[disabled] ".concat(i)]:{zIndex:0}})}}(e,r,t)),function(e,t,n){let{borderElCls:r}=n,o=r?"> ".concat(r):"";return{["&-item:not(".concat(t,"-first-item):not(").concat(t,"-last-item) ").concat(o)]:{borderRadius:0},["&-item:not(".concat(t,"-last-item)").concat(t,"-first-item")]:{["& ".concat(o,", &").concat(e,"-sm ").concat(o,", &").concat(e,"-lg ").concat(o)]:{borderStartEndRadius:0,borderEndEndRadius:0}},["&-item:not(".concat(t,"-first-item)").concat(t,"-last-item")]:{["& ".concat(o,", &").concat(e,"-sm ").concat(o,", &").concat(e,"-lg ").concat(o)]:{borderStartStartRadius:0,borderEndStartRadius:0}}}}(n,r,t))}}n.d(t,{c:function(){return r}})},12918:function(e,t,n){"use strict";n.d(t,{Lx:function(){return l},Qy:function(){return d},Ro:function(){return i},Wf:function(){return a},dF:function(){return c},du:function(){return s},oN:function(){return u},vS:function(){return o}});var r=n(352);let o={overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},a=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{boxSizing:"border-box",margin:0,padding:0,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight,listStyle:"none",fontFamily:t?"inherit":e.fontFamily}},i=()=>({display:"inline-flex",alignItems:"center",color:"inherit",fontStyle:"normal",lineHeight:0,textAlign:"center",textTransform:"none",verticalAlign:"-0.125em",textRendering:"optimizeLegibility","-webkit-font-smoothing":"antialiased","-moz-osx-font-smoothing":"grayscale","> *":{lineHeight:1},svg:{display:"inline-block"}}),c=()=>({"&::before":{display:"table",content:'""'},"&::after":{display:"table",clear:"both",content:'""'}}),l=e=>({a:{color:e.colorLink,textDecoration:e.linkDecoration,backgroundColor:"transparent",outline:"none",cursor:"pointer",transition:"color ".concat(e.motionDurationSlow),"-webkit-text-decoration-skip":"objects","&:hover":{color:e.colorLinkHover},"&:active":{color:e.colorLinkActive},"&:active,\n &:hover":{textDecoration:e.linkHoverDecoration,outline:0},"&:focus":{textDecoration:e.linkFocusDecoration,outline:0},"&[disabled]":{color:e.colorTextDisabled,cursor:"not-allowed"}}}),s=(e,t)=>{let{fontFamily:n,fontSize:r}=e,o='[class^="'.concat(t,'"], [class*=" ').concat(t,'"]');return{[o]:{fontFamily:n,fontSize:r,boxSizing:"border-box","&::before, &::after":{boxSizing:"border-box"},[o]:{boxSizing:"border-box","&::before, &::after":{boxSizing:"border-box"}}}}},u=e=>({outline:"".concat((0,r.bf)(e.lineWidthFocus)," solid ").concat(e.colorPrimaryBorder),outlineOffset:1,transition:"outline-offset 0s, outline 0s"}),d=e=>({"&:focus-visible":Object.assign({},u(e))})},63074:function(e,t){"use strict";t.Z=e=>({[e.componentCls]:{["".concat(e.antCls,"-motion-collapse-legacy")]:{overflow:"hidden","&-active":{transition:"height ".concat(e.motionDurationMid," ").concat(e.motionEaseInOut,",\n opacity ").concat(e.motionDurationMid," ").concat(e.motionEaseInOut," !important")}},["".concat(e.antCls,"-motion-collapse")]:{overflow:"hidden",transition:"height ".concat(e.motionDurationMid," ").concat(e.motionEaseInOut,",\n opacity ").concat(e.motionDurationMid," ").concat(e.motionEaseInOut," !important")}}})},37133:function(e,t,n){"use strict";n.d(t,{R:function(){return a}});let r=e=>({animationDuration:e,animationFillMode:"both"}),o=e=>({animationDuration:e,animationFillMode:"both"}),a=function(e,t,n,a){let i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],c=i?"&":"";return{["\n ".concat(c).concat(e,"-enter,\n ").concat(c).concat(e,"-appear\n ")]:Object.assign(Object.assign({},r(a)),{animationPlayState:"paused"}),["".concat(c).concat(e,"-leave")]:Object.assign(Object.assign({},o(a)),{animationPlayState:"paused"}),["\n ".concat(c).concat(e,"-enter").concat(e,"-enter-active,\n ").concat(c).concat(e,"-appear").concat(e,"-appear-active\n ")]:{animationName:t,animationPlayState:"running"},["".concat(c).concat(e,"-leave").concat(e,"-leave-active")]:{animationName:n,animationPlayState:"running",pointerEvents:"none"}}}},29382:function(e,t,n){"use strict";n.d(t,{Fm:function(){return f}});var r=n(352),o=n(37133);let a=new r.E4("antMoveDownIn",{"0%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),i=new r.E4("antMoveDownOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0}}),c=new r.E4("antMoveLeftIn",{"0%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),l=new r.E4("antMoveLeftOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),s=new r.E4("antMoveRightIn",{"0%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),u=new r.E4("antMoveRightOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),d={"move-up":{inKeyframes:new r.E4("antMoveUpIn",{"0%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),outKeyframes:new r.E4("antMoveUpOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0}})},"move-down":{inKeyframes:a,outKeyframes:i},"move-left":{inKeyframes:c,outKeyframes:l},"move-right":{inKeyframes:s,outKeyframes:u}},f=(e,t)=>{let{antCls:n}=e,r="".concat(n,"-").concat(t),{inKeyframes:a,outKeyframes:i}=d[t];return[(0,o.R)(r,a,i,e.motionDurationMid),{["\n ".concat(r,"-enter,\n ").concat(r,"-appear\n ")]:{opacity:0,animationTimingFunction:e.motionEaseOutCirc},["".concat(r,"-leave")]:{animationTimingFunction:e.motionEaseInOutCirc}}]}},18544:function(e,t,n){"use strict";n.d(t,{Qt:function(){return c},Uw:function(){return i},fJ:function(){return a},ly:function(){return l},oN:function(){return d}});var r=n(352),o=n(37133);let a=new r.E4("antSlideUpIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1}}),i=new r.E4("antSlideUpOut",{"0%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0}}),c=new r.E4("antSlideDownIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1}}),l=new r.E4("antSlideDownOut",{"0%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0}}),s=new r.E4("antSlideLeftIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1}}),u={"slide-up":{inKeyframes:a,outKeyframes:i},"slide-down":{inKeyframes:c,outKeyframes:l},"slide-left":{inKeyframes:s,outKeyframes:new r.E4("antSlideLeftOut",{"0%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0}})},"slide-right":{inKeyframes:new r.E4("antSlideRightIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1}}),outKeyframes:new r.E4("antSlideRightOut",{"0%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0}})}},d=(e,t)=>{let{antCls:n}=e,r="".concat(n,"-").concat(t),{inKeyframes:a,outKeyframes:i}=u[t];return[(0,o.R)(r,a,i,e.motionDurationMid),{["\n ".concat(r,"-enter,\n ").concat(r,"-appear\n ")]:{transform:"scale(0)",transformOrigin:"0% 0%",opacity:0,animationTimingFunction:e.motionEaseOutQuint,"&-prepare":{transform:"scale(1)"}},["".concat(r,"-leave")]:{animationTimingFunction:e.motionEaseInQuint}}]}},691:function(e,t,n){"use strict";n.d(t,{_y:function(){return g},kr:function(){return a}});var r=n(352),o=n(37133);let a=new r.E4("antZoomIn",{"0%":{transform:"scale(0.2)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),i=new r.E4("antZoomOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.2)",opacity:0}}),c=new r.E4("antZoomBigIn",{"0%":{transform:"scale(0.8)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),l=new r.E4("antZoomBigOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.8)",opacity:0}}),s=new r.E4("antZoomUpIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 0%"}}),u=new r.E4("antZoomUpOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 0%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0}}),d=new r.E4("antZoomLeftIn",{"0%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"0% 50%"}}),f=new r.E4("antZoomLeftOut",{"0%":{transform:"scale(1)",transformOrigin:"0% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0}}),p=new r.E4("antZoomRightIn",{"0%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"100% 50%"}}),m={zoom:{inKeyframes:a,outKeyframes:i},"zoom-big":{inKeyframes:c,outKeyframes:l},"zoom-big-fast":{inKeyframes:c,outKeyframes:l},"zoom-left":{inKeyframes:d,outKeyframes:f},"zoom-right":{inKeyframes:p,outKeyframes:new r.E4("antZoomRightOut",{"0%":{transform:"scale(1)",transformOrigin:"100% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0}})},"zoom-up":{inKeyframes:s,outKeyframes:u},"zoom-down":{inKeyframes:new r.E4("antZoomDownIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 100%"}}),outKeyframes:new r.E4("antZoomDownOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 100%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0}})}},g=(e,t)=>{let{antCls:n}=e,r="".concat(n,"-").concat(t),{inKeyframes:a,outKeyframes:i}=m[t];return[(0,o.R)(r,a,i,"zoom-big-fast"===t?e.motionDurationFast:e.motionDurationMid),{["\n ".concat(r,"-enter,\n ").concat(r,"-appear\n ")]:{transform:"scale(0)",opacity:0,animationTimingFunction:e.motionEaseOutCirc,"&-prepare":{transform:"none"}},["".concat(r,"-leave")]:{animationTimingFunction:e.motionEaseInOutCirc}}]}},88260:function(e,t,n){"use strict";n.d(t,{ZP:function(){return i},qN:function(){return o},wZ:function(){return a}});var r=n(34442);let o=8;function a(e){let{contentRadius:t,limitVerticalRadius:n}=e,r=t>12?t+2:12;return{arrowOffsetHorizontal:r,arrowOffsetVertical:n?o:r}}function i(e,t,n){var o,a,i,c,l,s,u,d;let{componentCls:f,boxShadowPopoverArrow:p,arrowOffsetVertical:m,arrowOffsetHorizontal:g}=e,{arrowDistance:h=0,arrowPlacement:v={left:!0,right:!0,top:!0,bottom:!0}}=n||{};return{[f]:Object.assign(Object.assign(Object.assign(Object.assign({["".concat(f,"-arrow")]:[Object.assign(Object.assign({position:"absolute",zIndex:1,display:"block"},(0,r.W)(e,t,p)),{"&:before":{background:t}})]},(o=!!v.top,a={[["&-placement-top > ".concat(f,"-arrow"),"&-placement-topLeft > ".concat(f,"-arrow"),"&-placement-topRight > ".concat(f,"-arrow")].join(",")]:{bottom:h,transform:"translateY(100%) rotate(180deg)"},["&-placement-top > ".concat(f,"-arrow")]:{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(100%) rotate(180deg)"},["&-placement-topLeft > ".concat(f,"-arrow")]:{left:{_skip_check_:!0,value:g}},["&-placement-topRight > ".concat(f,"-arrow")]:{right:{_skip_check_:!0,value:g}}},o?a:{})),(i=!!v.bottom,c={[["&-placement-bottom > ".concat(f,"-arrow"),"&-placement-bottomLeft > ".concat(f,"-arrow"),"&-placement-bottomRight > ".concat(f,"-arrow")].join(",")]:{top:h,transform:"translateY(-100%)"},["&-placement-bottom > ".concat(f,"-arrow")]:{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(-100%)"},["&-placement-bottomLeft > ".concat(f,"-arrow")]:{left:{_skip_check_:!0,value:g}},["&-placement-bottomRight > ".concat(f,"-arrow")]:{right:{_skip_check_:!0,value:g}}},i?c:{})),(l=!!v.left,s={[["&-placement-left > ".concat(f,"-arrow"),"&-placement-leftTop > ".concat(f,"-arrow"),"&-placement-leftBottom > ".concat(f,"-arrow")].join(",")]:{right:{_skip_check_:!0,value:h},transform:"translateX(100%) rotate(90deg)"},["&-placement-left > ".concat(f,"-arrow")]:{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(100%) rotate(90deg)"},["&-placement-leftTop > ".concat(f,"-arrow")]:{top:m},["&-placement-leftBottom > ".concat(f,"-arrow")]:{bottom:m}},l?s:{})),(u=!!v.right,d={[["&-placement-right > ".concat(f,"-arrow"),"&-placement-rightTop > ".concat(f,"-arrow"),"&-placement-rightBottom > ".concat(f,"-arrow")].join(",")]:{left:{_skip_check_:!0,value:h},transform:"translateX(-100%) rotate(-90deg)"},["&-placement-right > ".concat(f,"-arrow")]:{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(-100%) rotate(-90deg)"},["&-placement-rightTop > ".concat(f,"-arrow")]:{top:m},["&-placement-rightBottom > ".concat(f,"-arrow")]:{bottom:m}},u?d:{}))}}},34442:function(e,t,n){"use strict";n.d(t,{W:function(){return a},w:function(){return o}});var r=n(352);function o(e){let{sizePopupArrow:t,borderRadiusXS:n,borderRadiusOuter:r}=e,o=t/2,a=1*r/Math.sqrt(2),i=o-r*(1-1/Math.sqrt(2)),c=o-1/Math.sqrt(2)*n,l=r*(Math.sqrt(2)-1)+1/Math.sqrt(2)*n,s=2*o-c,u=2*o-a,d=2*o-0,f=o*Math.sqrt(2)+r*(Math.sqrt(2)-2),p=r*(Math.sqrt(2)-1),m="polygon(".concat(p,"px 100%, 50% ").concat(p,"px, ").concat(2*o-p,"px 100%, ").concat(p,"px 100%)");return{arrowShadowWidth:f,arrowPath:"path('M ".concat(0," ").concat(o," A ").concat(r," ").concat(r," 0 0 0 ").concat(a," ").concat(i," L ").concat(c," ").concat(l," A ").concat(n," ").concat(n," 0 0 1 ").concat(s," ").concat(l," L ").concat(u," ").concat(i," A ").concat(r," ").concat(r," 0 0 0 ").concat(d," ").concat(o," Z')"),arrowPolygon:m}}let a=(e,t,n)=>{let{sizePopupArrow:o,arrowPolygon:a,arrowPath:i,arrowShadowWidth:c,borderRadiusXS:l,calc:s}=e;return{pointerEvents:"none",width:o,height:o,overflow:"hidden","&::before":{position:"absolute",bottom:0,insetInlineStart:0,width:o,height:s(o).div(2).equal(),background:t,clipPath:{_multi_value_:!0,value:[a,i]},content:'""'},"&::after":{content:'""',position:"absolute",width:c,height:c,bottom:0,insetInline:0,margin:"auto",borderRadius:{_skip_check_:!0,value:"0 0 ".concat((0,r.bf)(l)," 0")},transform:"translateY(50%) rotate(-135deg)",boxShadow:n,zIndex:0,background:"transparent"}}}},37516:function(e,t,n){"use strict";n.d(t,{Mj:function(){return b},u_:function(){return v},uH:function(){return h}});var r=n(2265),o=n(352),a=n(31373),i=e=>{let{controlHeight:t}=e;return{controlHeightSM:.75*t,controlHeightXS:.5*t,controlHeightLG:1.25*t}},c=n(70774),l=n(36360),s=e=>{let t=e,n=e,r=e,o=e;return e<6&&e>=5?t=e+1:e<16&&e>=6?t=e+2:e>=16&&(t=16),e<7&&e>=5?n=4:e<8&&e>=7?n=5:e<14&&e>=8?n=6:e<16&&e>=14?n=7:e>=16&&(n=8),e<6&&e>=2?r=1:e>=6&&(r=2),e>4&&e<8?o=4:e>=8&&(o=6),{borderRadius:e,borderRadiusXS:r,borderRadiusSM:n,borderRadiusLG:t,borderRadiusOuter:o}};let u=(e,t)=>new l.C(e).setAlpha(t).toRgbString(),d=(e,t)=>new l.C(e).darken(t).toHexString(),f=e=>{let t=(0,a.R_)(e);return{1:t[0],2:t[1],3:t[2],4:t[3],5:t[4],6:t[5],7:t[6],8:t[4],9:t[5],10:t[6]}},p=(e,t)=>{let n=e||"#fff",r=t||"#000";return{colorBgBase:n,colorTextBase:r,colorText:u(r,.88),colorTextSecondary:u(r,.65),colorTextTertiary:u(r,.45),colorTextQuaternary:u(r,.25),colorFill:u(r,.15),colorFillSecondary:u(r,.06),colorFillTertiary:u(r,.04),colorFillQuaternary:u(r,.02),colorBgLayout:d(n,4),colorBgContainer:d(n,0),colorBgElevated:d(n,0),colorBgSpotlight:u(r,.85),colorBgBlur:"transparent",colorBorder:d(n,15),colorBorderSecondary:d(n,6)}};var m=n(1319),g=e=>{let t=(0,m.Z)(e),n=t.map(e=>e.size),r=t.map(e=>e.lineHeight),o=n[1],a=n[0],i=n[2],c=r[1],l=r[0],s=r[2];return{fontSizeSM:a,fontSize:o,fontSizeLG:i,fontSizeXL:n[3],fontSizeHeading1:n[6],fontSizeHeading2:n[5],fontSizeHeading3:n[4],fontSizeHeading4:n[3],fontSizeHeading5:n[2],lineHeight:c,lineHeightLG:s,lineHeightSM:l,fontHeight:Math.round(c*o),fontHeightLG:Math.round(s*i),fontHeightSM:Math.round(l*a),lineHeightHeading1:r[6],lineHeightHeading2:r[5],lineHeightHeading3:r[4],lineHeightHeading4:r[3],lineHeightHeading5:r[2]}};let h=(0,o.jG)(function(e){let t=Object.keys(c.M).map(t=>{let n=(0,a.R_)(e[t]);return Array(10).fill(1).reduce((e,r,o)=>(e["".concat(t,"-").concat(o+1)]=n[o],e["".concat(t).concat(o+1)]=n[o],e),{})}).reduce((e,t)=>e=Object.assign(Object.assign({},e),t),{});return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},e),t),function(e,t){let{generateColorPalettes:n,generateNeutralColorPalettes:r}=t,{colorSuccess:o,colorWarning:a,colorError:i,colorInfo:c,colorPrimary:s,colorBgBase:u,colorTextBase:d}=e,f=n(s),p=n(o),m=n(a),g=n(i),h=n(c),v=r(u,d),b=n(e.colorLink||e.colorInfo);return Object.assign(Object.assign({},v),{colorPrimaryBg:f[1],colorPrimaryBgHover:f[2],colorPrimaryBorder:f[3],colorPrimaryBorderHover:f[4],colorPrimaryHover:f[5],colorPrimary:f[6],colorPrimaryActive:f[7],colorPrimaryTextHover:f[8],colorPrimaryText:f[9],colorPrimaryTextActive:f[10],colorSuccessBg:p[1],colorSuccessBgHover:p[2],colorSuccessBorder:p[3],colorSuccessBorderHover:p[4],colorSuccessHover:p[4],colorSuccess:p[6],colorSuccessActive:p[7],colorSuccessTextHover:p[8],colorSuccessText:p[9],colorSuccessTextActive:p[10],colorErrorBg:g[1],colorErrorBgHover:g[2],colorErrorBorder:g[3],colorErrorBorderHover:g[4],colorErrorHover:g[5],colorError:g[6],colorErrorActive:g[7],colorErrorTextHover:g[8],colorErrorText:g[9],colorErrorTextActive:g[10],colorWarningBg:m[1],colorWarningBgHover:m[2],colorWarningBorder:m[3],colorWarningBorderHover:m[4],colorWarningHover:m[4],colorWarning:m[6],colorWarningActive:m[7],colorWarningTextHover:m[8],colorWarningText:m[9],colorWarningTextActive:m[10],colorInfoBg:h[1],colorInfoBgHover:h[2],colorInfoBorder:h[3],colorInfoBorderHover:h[4],colorInfoHover:h[4],colorInfo:h[6],colorInfoActive:h[7],colorInfoTextHover:h[8],colorInfoText:h[9],colorInfoTextActive:h[10],colorLinkHover:b[4],colorLink:b[6],colorLinkActive:b[7],colorBgMask:new l.C("#000").setAlpha(.45).toRgbString(),colorWhite:"#fff"})}(e,{generateColorPalettes:f,generateNeutralColorPalettes:p})),g(e.fontSize)),function(e){let{sizeUnit:t,sizeStep:n}=e;return{sizeXXL:t*(n+8),sizeXL:t*(n+4),sizeLG:t*(n+2),sizeMD:t*(n+1),sizeMS:t*n,size:t*n,sizeSM:t*(n-1),sizeXS:t*(n-2),sizeXXS:t*(n-3)}}(e)),i(e)),function(e){let{motionUnit:t,motionBase:n,borderRadius:r,lineWidth:o}=e;return Object.assign({motionDurationFast:"".concat((n+t).toFixed(1),"s"),motionDurationMid:"".concat((n+2*t).toFixed(1),"s"),motionDurationSlow:"".concat((n+3*t).toFixed(1),"s"),lineWidthBold:o+1},s(r))}(e))}),v={token:c.Z,override:{override:c.Z},hashed:!0},b=r.createContext(v)},53454:function(e,t,n){"use strict";n.d(t,{i:function(){return r}});let r=["blue","purple","cyan","green","magenta","pink","red","orange","yellow","volcano","geekblue","lime","gold"]},70774:function(e,t,n){"use strict";n.d(t,{M:function(){return r}});let r={blue:"#1677ff",purple:"#722ED1",cyan:"#13C2C2",green:"#52C41A",magenta:"#EB2F96",pink:"#eb2f96",red:"#F5222D",orange:"#FA8C16",yellow:"#FADB14",volcano:"#FA541C",geekblue:"#2F54EB",gold:"#FAAD14",lime:"#A0D911"},o=Object.assign(Object.assign({},r),{colorPrimary:"#1677ff",colorSuccess:"#52c41a",colorWarning:"#faad14",colorError:"#ff4d4f",colorInfo:"#1677ff",colorLink:"",colorTextBase:"",colorBgBase:"",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n'Noto Color Emoji'",fontFamilyCode:"'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace",fontSize:14,lineWidth:1,lineType:"solid",motionUnit:.1,motionBase:0,motionEaseOutCirc:"cubic-bezier(0.08, 0.82, 0.17, 1)",motionEaseInOutCirc:"cubic-bezier(0.78, 0.14, 0.15, 0.86)",motionEaseOut:"cubic-bezier(0.215, 0.61, 0.355, 1)",motionEaseInOut:"cubic-bezier(0.645, 0.045, 0.355, 1)",motionEaseOutBack:"cubic-bezier(0.12, 0.4, 0.29, 1.46)",motionEaseInBack:"cubic-bezier(0.71, -0.46, 0.88, 0.6)",motionEaseInQuint:"cubic-bezier(0.755, 0.05, 0.855, 0.06)",motionEaseOutQuint:"cubic-bezier(0.23, 1, 0.32, 1)",borderRadius:6,sizeUnit:4,sizeStep:4,sizePopupArrow:16,controlHeight:32,zIndexBase:0,zIndexPopupBase:1e3,opacityImage:1,wireframe:!1,motion:!0});t.Z=o},1319:function(e,t,n){"use strict";function r(e){return(e+8)/e}function o(e){let t=Array(10).fill(null).map((t,n)=>{let r=e*Math.pow(2.71828,(n-1)/5);return 2*Math.floor((n>1?Math.floor(r):Math.ceil(r))/2)});return t[1]=e,t.map(e=>({size:e,lineHeight:r(e)}))}n.d(t,{D:function(){return r},Z:function(){return o}})},29961:function(e,t,n){"use strict";n.d(t,{ZP:function(){return v},ID:function(){return m},NJ:function(){return p}});var r=n(2265),o=n(352),a=n(37516),i=n(70774),c=n(36360);function l(e){return e>=0&&e<=255}var s=function(e,t){let{r:n,g:r,b:o,a:a}=new c.C(e).toRgb();if(a<1)return e;let{r:i,g:s,b:u}=new c.C(t).toRgb();for(let e=.01;e<=1;e+=.01){let t=Math.round((n-i*(1-e))/e),a=Math.round((r-s*(1-e))/e),d=Math.round((o-u*(1-e))/e);if(l(t)&&l(a)&&l(d))return new c.C({r:t,g:a,b:d,a:Math.round(100*e)/100}).toRgbString()}return new c.C({r:n,g:r,b:o,a:1}).toRgbString()},u=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};function d(e){let{override:t}=e,n=u(e,["override"]),r=Object.assign({},t);Object.keys(i.Z).forEach(e=>{delete r[e]});let o=Object.assign(Object.assign({},n),r);return!1===o.motion&&(o.motionDurationFast="0s",o.motionDurationMid="0s",o.motionDurationSlow="0s"),Object.assign(Object.assign(Object.assign({},o),{colorFillContent:o.colorFillSecondary,colorFillContentHover:o.colorFill,colorFillAlter:o.colorFillQuaternary,colorBgContainerDisabled:o.colorFillTertiary,colorBorderBg:o.colorBgContainer,colorSplit:s(o.colorBorderSecondary,o.colorBgContainer),colorTextPlaceholder:o.colorTextQuaternary,colorTextDisabled:o.colorTextQuaternary,colorTextHeading:o.colorText,colorTextLabel:o.colorTextSecondary,colorTextDescription:o.colorTextTertiary,colorTextLightSolid:o.colorWhite,colorHighlight:o.colorError,colorBgTextHover:o.colorFillSecondary,colorBgTextActive:o.colorFill,colorIcon:o.colorTextTertiary,colorIconHover:o.colorText,colorErrorOutline:s(o.colorErrorBg,o.colorBgContainer),colorWarningOutline:s(o.colorWarningBg,o.colorBgContainer),fontSizeIcon:o.fontSizeSM,lineWidthFocus:4*o.lineWidth,lineWidth:o.lineWidth,controlOutlineWidth:2*o.lineWidth,controlInteractiveSize:o.controlHeight/2,controlItemBgHover:o.colorFillTertiary,controlItemBgActive:o.colorPrimaryBg,controlItemBgActiveHover:o.colorPrimaryBgHover,controlItemBgActiveDisabled:o.colorFill,controlTmpOutline:o.colorFillQuaternary,controlOutline:s(o.colorPrimaryBg,o.colorBgContainer),lineType:o.lineType,borderRadius:o.borderRadius,borderRadiusXS:o.borderRadiusXS,borderRadiusSM:o.borderRadiusSM,borderRadiusLG:o.borderRadiusLG,fontWeightStrong:600,opacityLoading:.65,linkDecoration:"none",linkHoverDecoration:"none",linkFocusDecoration:"none",controlPaddingHorizontal:12,controlPaddingHorizontalSM:8,paddingXXS:o.sizeXXS,paddingXS:o.sizeXS,paddingSM:o.sizeSM,padding:o.size,paddingMD:o.sizeMD,paddingLG:o.sizeLG,paddingXL:o.sizeXL,paddingContentHorizontalLG:o.sizeLG,paddingContentVerticalLG:o.sizeMS,paddingContentHorizontal:o.sizeMS,paddingContentVertical:o.sizeSM,paddingContentHorizontalSM:o.size,paddingContentVerticalSM:o.sizeXS,marginXXS:o.sizeXXS,marginXS:o.sizeXS,marginSM:o.sizeSM,margin:o.size,marginMD:o.sizeMD,marginLG:o.sizeLG,marginXL:o.sizeXL,marginXXL:o.sizeXXL,boxShadow:"\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowSecondary:"\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowTertiary:"\n 0 1px 2px 0 rgba(0, 0, 0, 0.03),\n 0 1px 6px -1px rgba(0, 0, 0, 0.02),\n 0 2px 4px 0 rgba(0, 0, 0, 0.02)\n ",screenXS:480,screenXSMin:480,screenXSMax:575,screenSM:576,screenSMMin:576,screenSMMax:767,screenMD:768,screenMDMin:768,screenMDMax:991,screenLG:992,screenLGMin:992,screenLGMax:1199,screenXL:1200,screenXLMin:1200,screenXLMax:1599,screenXXL:1600,screenXXLMin:1600,boxShadowPopoverArrow:"2px 2px 5px rgba(0, 0, 0, 0.05)",boxShadowCard:"\n 0 1px 2px -2px ".concat(new c.C("rgba(0, 0, 0, 0.16)").toRgbString(),",\n 0 3px 6px 0 ").concat(new c.C("rgba(0, 0, 0, 0.12)").toRgbString(),",\n 0 5px 12px 4px ").concat(new c.C("rgba(0, 0, 0, 0.09)").toRgbString(),"\n "),boxShadowDrawerRight:"\n -6px 0 16px 0 rgba(0, 0, 0, 0.08),\n -3px 0 6px -4px rgba(0, 0, 0, 0.12),\n -9px 0 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowDrawerLeft:"\n 6px 0 16px 0 rgba(0, 0, 0, 0.08),\n 3px 0 6px -4px rgba(0, 0, 0, 0.12),\n 9px 0 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowDrawerUp:"\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowDrawerDown:"\n 0 -6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 -3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 -9px 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowTabsOverflowLeft:"inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)",boxShadowTabsOverflowRight:"inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)",boxShadowTabsOverflowTop:"inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)",boxShadowTabsOverflowBottom:"inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)"}),r)}var f=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let p={lineHeight:!0,lineHeightSM:!0,lineHeightLG:!0,lineHeightHeading1:!0,lineHeightHeading2:!0,lineHeightHeading3:!0,lineHeightHeading4:!0,lineHeightHeading5:!0,opacityLoading:!0,fontWeightStrong:!0,zIndexPopupBase:!0,zIndexBase:!0},m={size:!0,sizeSM:!0,sizeLG:!0,sizeMD:!0,sizeXS:!0,sizeXXS:!0,sizeMS:!0,sizeXL:!0,sizeXXL:!0,sizeUnit:!0,sizeStep:!0,motionBase:!0,motionUnit:!0},g={screenXS:!0,screenXSMin:!0,screenXSMax:!0,screenSM:!0,screenSMMin:!0,screenSMMax:!0,screenMD:!0,screenMDMin:!0,screenMDMax:!0,screenLG:!0,screenLGMin:!0,screenLGMax:!0,screenXL:!0,screenXLMin:!0,screenXLMax:!0,screenXXL:!0,screenXXLMin:!0},h=(e,t,n)=>{let r=n.getDerivativeToken(e),{override:o}=t,a=f(t,["override"]),i=Object.assign(Object.assign({},r),{override:o});return i=d(i),a&&Object.entries(a).forEach(e=>{let[t,n]=e,{theme:r}=n,o=f(n,["theme"]),a=o;r&&(a=h(Object.assign(Object.assign({},i),o),{override:o},r)),i[t]=a}),i};function v(){let{token:e,hashed:t,theme:n,override:c,cssVar:l}=r.useContext(a.Mj),s="".concat("5.13.2","-").concat(t||""),u=n||a.uH,[f,v,b]=(0,o.fp)(u,[i.Z,e],{salt:s,override:c,getComputedToken:h,formatToken:d,cssVar:l&&{prefix:l.prefix,key:l.key,unitless:p,ignore:m,preserve:g}});return[u,b,t?v:"",f,l]}},80669:function(e,t,n){"use strict";n.d(t,{ZP:function(){return Z},I$:function(){return M},bk:function(){return O}});var r=n(2265),o=n(352);n(74126);var a=n(71744),i=n(12918),c=n(29961),l=n(76405),s=n(25049),u=n(37977),d=n(63929),f=n(24995),p=n(15354);let m=(0,s.Z)(function e(){(0,l.Z)(this,e)}),g=function(e){function t(e){var n,r,o;return(0,l.Z)(this,t),r=t,r=(0,f.Z)(r),(n=(0,u.Z)(this,(0,d.Z)()?Reflect.construct(r,[],(0,f.Z)(this).constructor):r.apply(this,o))).result=0,e instanceof t?n.result=e.result:"number"==typeof e&&(n.result=e),n}return(0,p.Z)(t,e),(0,s.Z)(t,[{key:"add",value:function(e){return e instanceof t?this.result+=e.result:"number"==typeof e&&(this.result+=e),this}},{key:"sub",value:function(e){return e instanceof t?this.result-=e.result:"number"==typeof e&&(this.result-=e),this}},{key:"mul",value:function(e){return e instanceof t?this.result*=e.result:"number"==typeof e&&(this.result*=e),this}},{key:"div",value:function(e){return e instanceof t?this.result/=e.result:"number"==typeof e&&(this.result/=e),this}},{key:"equal",value:function(){return this.result}}]),t}(m),h="CALC_UNIT";function v(e){return"number"==typeof e?"".concat(e).concat(h):e}let b=function(e){function t(e){var n,r,o;return(0,l.Z)(this,t),r=t,r=(0,f.Z)(r),(n=(0,u.Z)(this,(0,d.Z)()?Reflect.construct(r,[],(0,f.Z)(this).constructor):r.apply(this,o))).result="",e instanceof t?n.result="(".concat(e.result,")"):"number"==typeof e?n.result=v(e):"string"==typeof e&&(n.result=e),n}return(0,p.Z)(t,e),(0,s.Z)(t,[{key:"add",value:function(e){return e instanceof t?this.result="".concat(this.result," + ").concat(e.getResult()):("number"==typeof e||"string"==typeof e)&&(this.result="".concat(this.result," + ").concat(v(e))),this.lowPriority=!0,this}},{key:"sub",value:function(e){return e instanceof t?this.result="".concat(this.result," - ").concat(e.getResult()):("number"==typeof e||"string"==typeof e)&&(this.result="".concat(this.result," - ").concat(v(e))),this.lowPriority=!0,this}},{key:"mul",value:function(e){return this.lowPriority&&(this.result="(".concat(this.result,")")),e instanceof t?this.result="".concat(this.result," * ").concat(e.getResult(!0)):("number"==typeof e||"string"==typeof e)&&(this.result="".concat(this.result," * ").concat(e)),this.lowPriority=!1,this}},{key:"div",value:function(e){return this.lowPriority&&(this.result="(".concat(this.result,")")),e instanceof t?this.result="".concat(this.result," / ").concat(e.getResult(!0)):("number"==typeof e||"string"==typeof e)&&(this.result="".concat(this.result," / ").concat(e)),this.lowPriority=!1,this}},{key:"getResult",value:function(e){return this.lowPriority||e?"(".concat(this.result,")"):this.result}},{key:"equal",value:function(e){let{unit:t=!0}=e||{},n=RegExp("".concat(h),"g");return(this.result=this.result.replace(n,t?"px":""),void 0!==this.lowPriority)?"calc(".concat(this.result,")"):this.result}}]),t}(m);var y=e=>{let t="css"===e?b:g;return e=>new t(e)},w=n(3104),x=n(36198);let E=(e,t,n)=>{var r;return"function"==typeof n?n((0,w.TS)(t,null!==(r=t[e])&&void 0!==r?r:{})):null!=n?n:{}},S=(e,t,n,r)=>{let o=Object.assign({},t[e]);if(null==r?void 0:r.deprecatedTokens){let{deprecatedTokens:e}=r;e.forEach(e=>{var t;let[n,r]=e;((null==o?void 0:o[n])||(null==o?void 0:o[r]))&&(null!==(t=o[r])&&void 0!==t||(o[r]=null==o?void 0:o[n]))})}let a=Object.assign(Object.assign({},n),o);return Object.keys(a).forEach(e=>{a[e]===t[e]&&delete a[e]}),a},C=(e,t)=>"".concat([t,e.replace(/([A-Z]+)([A-Z][a-z]+)/g,"$1-$2").replace(/([a-z])([A-Z])/g,"$1-$2")].filter(Boolean).join("-"));function Z(e,t,n){let l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},s=Array.isArray(e)?e:[e,e],[u]=s,d=s.join("-");return e=>{let[s,f,p,m,g]=(0,c.ZP)(),{getPrefixCls:h,iconPrefixCls:v,csp:b}=(0,r.useContext)(a.E_),Z=h(),O=g?"css":"js",k=y(O),{max:M,min:j}="js"===O?{max:Math.max,min:Math.min}:{max:function(){for(var e=arguments.length,t=Array(e),n=0;n(0,o.bf)(e)).join(","),")")},min:function(){for(var e=arguments.length,t=Array(e),n=0;n(0,o.bf)(e)).join(","),")")}},I={theme:s,token:m,hashId:p,nonce:()=>null==b?void 0:b.nonce,clientOnly:l.clientOnly,order:l.order||-999};return(0,o.xy)(Object.assign(Object.assign({},I),{clientOnly:!1,path:["Shared",Z]}),()=>[{"&":(0,i.Lx)(m)}]),(0,x.Z)(v,b),[(0,o.xy)(Object.assign(Object.assign({},I),{path:[d,e,v]}),()=>{if(!1===l.injectStyle)return[];let{token:r,flush:a}=(0,w.ZP)(m),c=E(u,f,n),s=".".concat(e),d=S(u,f,c,{deprecatedTokens:l.deprecatedTokens});g&&Object.keys(c).forEach(e=>{c[e]="var(".concat((0,o.ks)(e,C(u,g.prefix)),")")});let h=(0,w.TS)(r,{componentCls:s,prefixCls:e,iconCls:".".concat(v),antCls:".".concat(Z),calc:k,max:M,min:j},g?c:d),b=t(h,{hashId:p,prefixCls:e,rootPrefixCls:Z,iconPrefixCls:v});return a(u,d),[!1===l.resetStyle?null:(0,i.du)(h,e),b]}),p]}}let O=(e,t,n,r)=>{let o=Z(e,t,n,Object.assign({resetStyle:!1,order:-998},r));return e=>{let{prefixCls:t}=e;return o(t),null}},k=(e,t,n)=>{function a(t){return"".concat(e).concat(t.slice(0,1).toUpperCase()).concat(t.slice(1))}let{unitless:i={},injectStyle:l=!0}=null!=n?n:{},s={[a("zIndexPopup")]:!0};Object.keys(i).forEach(e=>{s[a(e)]=i[e]});let u=r=>{let{rootCls:i,cssVar:l}=r,[,u]=(0,c.ZP)();return(0,o.CI)({path:[e],prefix:l.prefix,key:null==l?void 0:l.key,unitless:Object.assign(Object.assign({},c.NJ),s),ignore:c.ID,token:u,scope:i},()=>{let r=E(e,u,t),o=S(e,u,r,{deprecatedTokens:null==n?void 0:n.deprecatedTokens});return Object.keys(r).forEach(e=>{o[a(e)]=o[e],delete o[e]}),o}),null};return t=>{let[,,,,n]=(0,c.ZP)();return[o=>l&&n?r.createElement(r.Fragment,null,r.createElement(u,{rootCls:t,cssVar:n,component:e}),o):o,null==n?void 0:n.key]}},M=(e,t,n,r)=>{let o=Z(e,t,n,r),a=k(Array.isArray(e)?e[0]:e,n,r);return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,[,n]=o(e),[r,i]=a(t);return[r,n,i]}}},18536:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(53454);function o(e,t){return r.i.reduce((n,r)=>{let o=e["".concat(r,"1")],a=e["".concat(r,"3")],i=e["".concat(r,"6")],c=e["".concat(r,"7")];return Object.assign(Object.assign({},n),t(r,{lightColor:o,lightBorderColor:a,darkColor:i,textColor:c}))},{})}},3104:function(e,t,n){"use strict";n.d(t,{TS:function(){return a}});let r="undefined"!=typeof CSSINJS_STATISTIC,o=!0;function a(){for(var e=arguments.length,t=Array(e),n=0;n{Object.keys(e).forEach(t=>{Object.defineProperty(a,t,{configurable:!0,enumerable:!0,get:()=>e[t]})})}),o=!0,a}let i={};function c(){}t.ZP=e=>{let t;let n=e,a=c;return r&&"undefined"!=typeof Proxy&&(t=new Set,n=new Proxy(e,{get:(e,n)=>(o&&t.add(n),e[n])}),a=(e,n)=>{var r;i[e]={global:Array.from(t),component:Object.assign(Object.assign({},null===(r=i[e])||void 0===r?void 0:r.component),n)}}),{token:n,keys:t,flush:a}}},36198:function(e,t,n){"use strict";var r=n(352),o=n(12918),a=n(29961);t.Z=(e,t)=>{let[n,i]=(0,a.ZP)();return(0,r.xy)({theme:n,token:i,hashId:"",path:["ant-design-icons",e],nonce:()=>null==t?void 0:t.nonce},()=>[{[".".concat(e)]:Object.assign(Object.assign({},(0,o.Ro)()),{[".".concat(e," .").concat(e,"-icon")]:{display:"block"}})}])}},89970:function(e,t,n){"use strict";n.d(t,{Z:function(){return N}});var r=n(2265),o=n(36760),a=n.n(o),i=n(5769),c=n(50506),l=n(62236),s=n(68710),u=n(92736),d=n(19722),f=n(13613),p=n(95140),m=n(71744),g=n(65658),h=n(29961),v=n(12918),b=n(691),y=n(88260),w=n(18536),x=n(3104),E=n(80669),S=n(352),C=n(34442);let Z=e=>{let{componentCls:t,tooltipMaxWidth:n,tooltipColor:r,tooltipBg:o,tooltipBorderRadius:a,zIndexPopup:i,controlHeight:c,boxShadowSecondary:l,paddingSM:s,paddingXS:u}=e;return[{[t]:Object.assign(Object.assign(Object.assign(Object.assign({},(0,v.Wf)(e)),{position:"absolute",zIndex:i,display:"block",width:"max-content",maxWidth:n,visibility:"visible",transformOrigin:"var(--arrow-x, 50%) var(--arrow-y, 50%)","&-hidden":{display:"none"},"--antd-arrow-background-color":o,["".concat(t,"-inner")]:{minWidth:c,minHeight:c,padding:"".concat((0,S.bf)(e.calc(s).div(2).equal())," ").concat((0,S.bf)(u)),color:r,textAlign:"start",textDecoration:"none",wordWrap:"break-word",backgroundColor:o,borderRadius:a,boxShadow:l,boxSizing:"border-box"},"&-placement-left,&-placement-leftTop,&-placement-leftBottom,&-placement-right,&-placement-rightTop,&-placement-rightBottom":{["".concat(t,"-inner")]:{borderRadius:e.min(a,y.qN)}},["".concat(t,"-content")]:{position:"relative"}}),(0,w.Z)(e,(e,n)=>{let{darkColor:r}=n;return{["&".concat(t,"-").concat(e)]:{["".concat(t,"-inner")]:{backgroundColor:r},["".concat(t,"-arrow")]:{"--antd-arrow-background-color":r}}}})),{"&-rtl":{direction:"rtl"}})},(0,y.ZP)(e,"var(--antd-arrow-background-color)"),{["".concat(t,"-pure")]:{position:"relative",maxWidth:"none",margin:e.sizePopupArrow}}]},O=e=>Object.assign(Object.assign({zIndexPopup:e.zIndexPopupBase+70},(0,y.wZ)({contentRadius:e.borderRadius,limitVerticalRadius:!0})),(0,C.w)((0,x.TS)(e,{borderRadiusOuter:Math.min(e.borderRadiusOuter,4)})));function k(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return(0,E.I$)("Tooltip",e=>{let{borderRadius:t,colorTextLightSolid:n,colorBgSpotlight:r}=e;return[Z((0,x.TS)(e,{tooltipMaxWidth:250,tooltipColor:n,tooltipBorderRadius:t,tooltipBg:r})),(0,b._y)(e,"zoom-big-fast")]},O,{resetStyle:!1,injectStyle:t})(e)}var M=n(93350);function j(e,t){let n=(0,M.o2)(t),r=a()({["".concat(e,"-").concat(t)]:t&&n}),o={},i={};return t&&!n&&(o.background=t,i["--antd-arrow-background-color"]=t),{className:r,overlayStyle:o,arrowStyle:i}}var I=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n};let R=r.forwardRef((e,t)=>{var n,o;let{prefixCls:v,openClassName:b,getTooltipContainer:y,overlayClassName:w,color:x,overlayInnerStyle:E,children:S,afterOpenChange:C,afterVisibleChange:Z,destroyTooltipOnHide:O,arrow:M=!0,title:R,overlay:N,builtinPlacements:P,arrowPointAtCenter:F=!1,autoAdjustOverflow:T=!0}=e,A=!!M,[,L]=(0,h.ZP)(),{getPopupContainer:z,getPrefixCls:_,direction:H}=r.useContext(m.E_),B=(0,f.ln)("Tooltip"),D=r.useRef(null),W=()=>{var e;null===(e=D.current)||void 0===e||e.forceAlign()};r.useImperativeHandle(t,()=>({forceAlign:W,forcePopupAlign:()=>{B.deprecated(!1,"forcePopupAlign","forceAlign"),W()}}));let[V,q]=(0,c.Z)(!1,{value:null!==(n=e.open)&&void 0!==n?n:e.visible,defaultValue:null!==(o=e.defaultOpen)&&void 0!==o?o:e.defaultVisible}),G=!R&&!N&&0!==R,X=r.useMemo(()=>{var e,t;let n=F;return"object"==typeof M&&(n=null!==(t=null!==(e=M.pointAtCenter)&&void 0!==e?e:M.arrowPointAtCenter)&&void 0!==t?t:F),P||(0,u.Z)({arrowPointAtCenter:n,autoAdjustOverflow:T,arrowWidth:A?L.sizePopupArrow:0,borderRadius:L.borderRadius,offset:L.marginXXS,visibleFirst:!0})},[F,M,P,L]),U=r.useMemo(()=>0===R?R:N||R||"",[N,R]),$=r.createElement(g.BR,null,"function"==typeof U?U():U),{getPopupContainer:K,placement:Y="top",mouseEnterDelay:Q=.1,mouseLeaveDelay:J=.1,overlayStyle:ee,rootClassName:et}=e,en=I(e,["getPopupContainer","placement","mouseEnterDelay","mouseLeaveDelay","overlayStyle","rootClassName"]),er=_("tooltip",v),eo=_(),ea=e["data-popover-inject"],ei=V;"open"in e||"visible"in e||!G||(ei=!1);let ec=(0,d.l$)(S)&&!(0,d.M2)(S)?S:r.createElement("span",null,S),el=ec.props,es=el.className&&"string"!=typeof el.className?el.className:a()(el.className,b||"".concat(er,"-open")),[eu,ed,ef]=k(er,!ea),ep=j(er,x),em=ep.arrowStyle,eg=Object.assign(Object.assign({},E),ep.overlayStyle),eh=a()(w,{["".concat(er,"-rtl")]:"rtl"===H},ep.className,et,ed,ef),[ev,eb]=(0,l.Cn)("Tooltip",en.zIndex),ey=r.createElement(i.Z,Object.assign({},en,{zIndex:ev,showArrow:A,placement:Y,mouseEnterDelay:Q,mouseLeaveDelay:J,prefixCls:er,overlayClassName:eh,overlayStyle:Object.assign(Object.assign({},em),ee),getTooltipContainer:K||y||z,ref:D,builtinPlacements:X,overlay:$,visible:ei,onVisibleChange:t=>{var n,r;q(!G&&t),G||(null===(n=e.onOpenChange)||void 0===n||n.call(e,t),null===(r=e.onVisibleChange)||void 0===r||r.call(e,t))},afterVisibleChange:null!=C?C:Z,overlayInnerStyle:eg,arrowContent:r.createElement("span",{className:"".concat(er,"-arrow-content")}),motion:{motionName:(0,s.m)(eo,"zoom-big-fast",e.transitionName),motionDeadline:1e3},destroyTooltipOnHide:!!O}),ei?(0,d.Tm)(ec,{className:es}):ec);return eu(r.createElement(p.Z.Provider,{value:eb},ey))});R._InternalPanelDoNotUseOrYouWillBeFired=e=>{let{prefixCls:t,className:n,placement:o="top",title:c,color:l,overlayInnerStyle:s}=e,{getPrefixCls:u}=r.useContext(m.E_),d=u("tooltip",t),[f,p,g]=k(d),h=j(d,l),v=h.arrowStyle,b=Object.assign(Object.assign({},s),h.overlayStyle),y=a()(p,g,d,"".concat(d,"-pure"),"".concat(d,"-placement-").concat(o),n,h.className);return f(r.createElement("div",{className:y,style:v},r.createElement("div",{className:"".concat(d,"-arrow")}),r.createElement(i.G,Object.assign({},e,{className:p,prefixCls:d,overlayInnerStyle:b}),c)))};var N=R},99376:function(e,t,n){"use strict";var r=n(35475);n.o(r,"usePathname")&&n.d(t,{usePathname:function(){return r.usePathname}}),n.o(r,"useRouter")&&n.d(t,{useRouter:function(){return r.useRouter}}),n.o(r,"useSearchParams")&&n.d(t,{useSearchParams:function(){return r.useSearchParams}})},40257:function(e,t,n){"use strict";var r,o;e.exports=(null==(r=n.g.process)?void 0:r.env)&&"object"==typeof(null==(o=n.g.process)?void 0:o.env)?n.g.process:n(44227)},44227:function(e){!function(){var t={229:function(e){var t,n,r,o=e.exports={};function a(){throw Error("setTimeout has not been defined")}function i(){throw Error("clearTimeout has not been defined")}function c(e){if(t===setTimeout)return setTimeout(e,0);if((t===a||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:a}catch(e){t=a}try{n="function"==typeof clearTimeout?clearTimeout:i}catch(e){n=i}}();var l=[],s=!1,u=-1;function d(){s&&r&&(s=!1,r.length?l=r.concat(l):u=-1,l.length&&f())}function f(){if(!s){var e=c(d);s=!0;for(var t=l.length;t;){for(r=l,l=[];++u1)for(var n=1;n1?t-1:0),r=1;r=a)return e;switch(e){case"%s":return String(n[o++]);case"%d":return Number(n[o++]);case"%j":try{return JSON.stringify(n[o++])}catch(e){return"[Circular]"}break;default:return e}}):e}function F(e,t){return!!(null==e||"array"===t&&Array.isArray(e)&&!e.length)||("string"===t||"url"===t||"hex"===t||"email"===t||"date"===t||"pattern"===t)&&"string"==typeof e&&!e}function T(e,t,n){var r=0,o=e.length;!function a(i){if(i&&i.length){n(i);return}var c=r;r+=1,c()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},D={integer:function(e){return D.number(e)&&parseInt(e,10)===e},float:function(e){return D.number(e)&&!D.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return new RegExp(e),!0}catch(e){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear&&!isNaN(e.getTime())},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"==typeof e&&!D.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&e.length<=320&&!!e.match(B.email)},url:function(e){return"string"==typeof e&&e.length<=2048&&!!e.match(H())},hex:function(e){return"string"==typeof e&&!!e.match(B.hex)}},W="enum",V={required:_,whitespace:function(e,t,n,r,o){(/^\s+$/.test(t)||""===t)&&r.push(P(o.messages.whitespace,e.fullField))},type:function(e,t,n,r,o){if(e.required&&void 0===t){_(e,t,n,r,o);return}var a=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(a)>-1?D[a](t)||r.push(P(o.messages.types[a],e.fullField,e.type)):a&&typeof t!==e.type&&r.push(P(o.messages.types[a],e.fullField,e.type))},range:function(e,t,n,r,o){var a="number"==typeof e.len,i="number"==typeof e.min,c="number"==typeof e.max,l=t,s=null,u="number"==typeof t,d="string"==typeof t,f=Array.isArray(t);if(u?s="number":d?s="string":f&&(s="array"),!s)return!1;f&&(l=t.length),d&&(l=t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),a?l!==e.len&&r.push(P(o.messages[s].len,e.fullField,e.len)):i&&!c&&le.max?r.push(P(o.messages[s].max,e.fullField,e.max)):i&&c&&(le.max)&&r.push(P(o.messages[s].range,e.fullField,e.min,e.max))},enum:function(e,t,n,r,o){e[W]=Array.isArray(e[W])?e[W]:[],-1===e[W].indexOf(t)&&r.push(P(o.messages[W],e.fullField,e[W].join(", ")))},pattern:function(e,t,n,r,o){!e.pattern||(e.pattern instanceof RegExp?(e.pattern.lastIndex=0,e.pattern.test(t)||r.push(P(o.messages.pattern.mismatch,e.fullField,t,e.pattern))):"string"!=typeof e.pattern||new RegExp(e.pattern).test(t)||r.push(P(o.messages.pattern.mismatch,e.fullField,t,e.pattern)))}},q=function(e,t,n,r,o){var a=e.type,i=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(F(t,a)&&!e.required)return n();V.required(e,t,r,i,o,a),F(t,a)||V.type(e,t,r,i,o)}n(i)},G={string:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(F(t,"string")&&!e.required)return n();V.required(e,t,r,a,o,"string"),F(t,"string")||(V.type(e,t,r,a,o),V.range(e,t,r,a,o),V.pattern(e,t,r,a,o),!0===e.whitespace&&V.whitespace(e,t,r,a,o))}n(a)},method:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(F(t)&&!e.required)return n();V.required(e,t,r,a,o),void 0!==t&&V.type(e,t,r,a,o)}n(a)},number:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(""===t&&(t=void 0),F(t)&&!e.required)return n();V.required(e,t,r,a,o),void 0!==t&&(V.type(e,t,r,a,o),V.range(e,t,r,a,o))}n(a)},boolean:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(F(t)&&!e.required)return n();V.required(e,t,r,a,o),void 0!==t&&V.type(e,t,r,a,o)}n(a)},regexp:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(F(t)&&!e.required)return n();V.required(e,t,r,a,o),F(t)||V.type(e,t,r,a,o)}n(a)},integer:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(F(t)&&!e.required)return n();V.required(e,t,r,a,o),void 0!==t&&(V.type(e,t,r,a,o),V.range(e,t,r,a,o))}n(a)},float:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(F(t)&&!e.required)return n();V.required(e,t,r,a,o),void 0!==t&&(V.type(e,t,r,a,o),V.range(e,t,r,a,o))}n(a)},array:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(null==t&&!e.required)return n();V.required(e,t,r,a,o,"array"),null!=t&&(V.type(e,t,r,a,o),V.range(e,t,r,a,o))}n(a)},object:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(F(t)&&!e.required)return n();V.required(e,t,r,a,o),void 0!==t&&V.type(e,t,r,a,o)}n(a)},enum:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(F(t)&&!e.required)return n();V.required(e,t,r,a,o),void 0!==t&&V.enum(e,t,r,a,o)}n(a)},pattern:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(F(t,"string")&&!e.required)return n();V.required(e,t,r,a,o),F(t,"string")||V.pattern(e,t,r,a,o)}n(a)},date:function(e,t,n,r,o){var a,i=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(F(t,"date")&&!e.required)return n();V.required(e,t,r,i,o),!F(t,"date")&&(a=t instanceof Date?t:new Date(t),V.type(e,a,r,i,o),a&&V.range(e,a.getTime(),r,i,o))}n(i)},url:q,hex:q,email:q,required:function(e,t,n,r,o){var a=[],i=Array.isArray(t)?"array":typeof t;V.required(e,t,r,a,o,i),n(a)},any:function(e,t,n,r,o){var a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(F(t)&&!e.required)return n();V.required(e,t,r,a,o)}n(a)}};function X(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var U=X(),$=function(){function e(e){this.rules=null,this._messages=U,this.define(e)}var t=e.prototype;return t.define=function(e){var t=this;if(!e)throw Error("Cannot configure a schema with no rules");if("object"!=typeof e||Array.isArray(e))throw Error("Rules must be an object");this.rules={},Object.keys(e).forEach(function(n){var r=e[n];t.rules[n]=Array.isArray(r)?r:[r]})},t.messages=function(e){return e&&(this._messages=z(X(),e)),this._messages},t.validate=function(t,n,r){var o=this;void 0===n&&(n={}),void 0===r&&(r=function(){});var a=t,i=n,c=r;if("function"==typeof i&&(c=i,i={}),!this.rules||0===Object.keys(this.rules).length)return c&&c(null,a),Promise.resolve(a);if(i.messages){var l=this.messages();l===U&&(l=X()),z(l,i.messages),i.messages=l}else i.messages=this.messages();var s={};(i.keys||Object.keys(this.rules)).forEach(function(e){var n=o.rules[e],r=a[e];n.forEach(function(n){var i=n;"function"==typeof i.transform&&(a===t&&(a=O({},a)),r=a[e]=i.transform(r)),(i="function"==typeof i?{validator:i}:O({},i)).validator=o.getValidationMethod(i),i.validator&&(i.field=e,i.fullField=i.fullField||e,i.type=o.getType(i),s[e]=s[e]||[],s[e].push({rule:i,value:r,source:a,field:e}))})});var u={};return function(e,t,n,r,o){if(t.first){var a=new Promise(function(t,a){var i;T((i=[],Object.keys(e).forEach(function(t){i.push.apply(i,e[t]||[])}),i),n,function(e){return r(e),e.length?a(new A(e,N(e))):t(o)})});return a.catch(function(e){return e}),a}var i=!0===t.firstFields?Object.keys(e):t.firstFields||[],c=Object.keys(e),l=c.length,s=0,u=[],d=new Promise(function(t,a){var d=function(e){if(u.push.apply(u,e),++s===l)return r(u),u.length?a(new A(u,N(u))):t(o)};c.length||(r(u),t(o)),c.forEach(function(t){var r=e[t];-1!==i.indexOf(t)?T(r,n,d):function(e,t,n){var r=[],o=0,a=e.length;function i(e){r.push.apply(r,e||[]),++o===a&&n(r)}e.forEach(function(e){t(e,i)})}(r,n,d)})});return d.catch(function(e){return e}),d}(s,i,function(t,n){var r,o=t.rule,c=("object"===o.type||"array"===o.type)&&("object"==typeof o.fields||"object"==typeof o.defaultField);function l(e,t){return O({},t,{fullField:o.fullField+"."+e,fullFields:o.fullFields?[].concat(o.fullFields,[e]):[e]})}function s(r){void 0===r&&(r=[]);var s=Array.isArray(r)?r:[r];!i.suppressWarning&&s.length&&e.warning("async-validator:",s),s.length&&void 0!==o.message&&(s=[].concat(o.message));var d=s.map(L(o,a));if(i.first&&d.length)return u[o.field]=1,n(d);if(c){if(o.required&&!t.value)return void 0!==o.message?d=[].concat(o.message).map(L(o,a)):i.error&&(d=[i.error(o,P(i.messages.required,o.field))]),n(d);var f={};o.defaultField&&Object.keys(t.value).map(function(e){f[e]=o.defaultField});var p={};Object.keys(f=O({},f,t.rule.fields)).forEach(function(e){var t=f[e],n=Array.isArray(t)?t:[t];p[e]=n.map(l.bind(null,e))});var m=new e(p);m.messages(i.messages),t.rule.options&&(t.rule.options.messages=i.messages,t.rule.options.error=i.error),m.validate(t.value,t.rule.options||i,function(e){var t=[];d&&d.length&&t.push.apply(t,d),e&&e.length&&t.push.apply(t,e),n(t.length?t:null)})}else n(d)}if(c=c&&(o.required||!o.required&&t.value),o.field=t.field,o.asyncValidator)r=o.asyncValidator(o,t.value,s,t.source,i);else if(o.validator){try{r=o.validator(o,t.value,s,t.source,i)}catch(e){null==console.error||console.error(e),i.suppressValidatorError||setTimeout(function(){throw e},0),s(e.message)}!0===r?s():!1===r?s("function"==typeof o.message?o.message(o.fullField||o.field):o.message||(o.fullField||o.field)+" fails"):r instanceof Array?s(r):r instanceof Error&&s(r.message)}r&&r.then&&r.then(function(){return s()},function(e){return s(e)})},function(e){!function(e){for(var t=[],n={},r=0;r2&&void 0!==arguments[2]&&arguments[2];return e&&e.some(function(e){return es(t,e,n)})}function es(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return!!e&&!!t&&(!!n||e.length===t.length)&&t.every(function(t,n){return e[n]===t})}function eu(e){var t=arguments.length<=1?void 0:arguments[1];return t&&t.target&&"object"===(0,eo.Z)(t.target)&&e in t.target?t.target[e]:t}function ed(e,t,n){var r=e.length;if(t<0||t>=r||n<0||n>=r)return e;var o=e[t],a=t-n;return a>0?[].concat((0,u.Z)(e.slice(0,n)),[o],(0,u.Z)(e.slice(n,t)),(0,u.Z)(e.slice(t+1,r))):a<0?[].concat((0,u.Z)(e.slice(0,t)),(0,u.Z)(e.slice(t+1,n+1)),[o],(0,u.Z)(e.slice(n+1,r))):e}var ef=["name"],ep=[];function em(e,t,n,r,o,a){return"function"==typeof e?e(t,n,"source"in a?{source:a.source}:{}):r!==o}var eg=function(e){(0,m.Z)(n,e);var t=(0,g.Z)(n);function n(e){var r;return(0,d.Z)(this,n),r=t.call(this,e),(0,h.Z)((0,p.Z)(r),"state",{resetCount:0}),(0,h.Z)((0,p.Z)(r),"cancelRegisterFunc",null),(0,h.Z)((0,p.Z)(r),"mounted",!1),(0,h.Z)((0,p.Z)(r),"touched",!1),(0,h.Z)((0,p.Z)(r),"dirty",!1),(0,h.Z)((0,p.Z)(r),"validatePromise",void 0),(0,h.Z)((0,p.Z)(r),"prevValidating",void 0),(0,h.Z)((0,p.Z)(r),"errors",ep),(0,h.Z)((0,p.Z)(r),"warnings",ep),(0,h.Z)((0,p.Z)(r),"cancelRegister",function(){var e=r.props,t=e.preserve,n=e.isListField,o=e.name;r.cancelRegisterFunc&&r.cancelRegisterFunc(n,t,ei(o)),r.cancelRegisterFunc=null}),(0,h.Z)((0,p.Z)(r),"getNamePath",function(){var e=r.props,t=e.name,n=e.fieldContext.prefixName;return void 0!==t?[].concat((0,u.Z)(void 0===n?[]:n),(0,u.Z)(t)):[]}),(0,h.Z)((0,p.Z)(r),"getRules",function(){var e=r.props,t=e.rules,n=e.fieldContext;return(void 0===t?[]:t).map(function(e){return"function"==typeof e?e(n):e})}),(0,h.Z)((0,p.Z)(r),"refresh",function(){r.mounted&&r.setState(function(e){return{resetCount:e.resetCount+1}})}),(0,h.Z)((0,p.Z)(r),"metaCache",null),(0,h.Z)((0,p.Z)(r),"triggerMetaEvent",function(e){var t=r.props.onMetaChange;if(t){var n=(0,s.Z)((0,s.Z)({},r.getMeta()),{},{destroy:e});(0,b.Z)(r.metaCache,n)||t(n),r.metaCache=n}else r.metaCache=null}),(0,h.Z)((0,p.Z)(r),"onStoreChange",function(e,t,n){var o=r.props,a=o.shouldUpdate,i=o.dependencies,c=void 0===i?[]:i,l=o.onReset,s=n.store,u=r.getNamePath(),d=r.getValue(e),f=r.getValue(s),p=t&&el(t,u);switch("valueUpdate"===n.type&&"external"===n.source&&d!==f&&(r.touched=!0,r.dirty=!0,r.validatePromise=null,r.errors=ep,r.warnings=ep,r.triggerMetaEvent()),n.type){case"reset":if(!t||p){r.touched=!1,r.dirty=!1,r.validatePromise=void 0,r.errors=ep,r.warnings=ep,r.triggerMetaEvent(),null==l||l(),r.refresh();return}break;case"remove":if(a){r.reRender();return}break;case"setField":var m=n.data;if(p){"touched"in m&&(r.touched=m.touched),"validating"in m&&!("originRCField"in m)&&(r.validatePromise=m.validating?Promise.resolve([]):null),"errors"in m&&(r.errors=m.errors||ep),"warnings"in m&&(r.warnings=m.warnings||ep),r.dirty=!0,r.triggerMetaEvent(),r.reRender();return}if("value"in m&&el(t,u,!0)||a&&!u.length&&em(a,e,s,d,f,n)){r.reRender();return}break;case"dependenciesUpdate":if(c.map(ei).some(function(e){return el(n.relatedFields,e)})){r.reRender();return}break;default:if(p||(!c.length||u.length||a)&&em(a,e,s,d,f,n)){r.reRender();return}}!0===a&&r.reRender()}),(0,h.Z)((0,p.Z)(r),"validateRules",function(e){var t=r.getNamePath(),n=r.getValue(),o=e||{},a=o.triggerName,i=o.validateOnly,d=Promise.resolve().then((0,l.Z)((0,c.Z)().mark(function o(){var i,f,p,m,g,h,v;return(0,c.Z)().wrap(function(o){for(;;)switch(o.prev=o.next){case 0:if(r.mounted){o.next=2;break}return o.abrupt("return",[]);case 2:if(p=void 0!==(f=(i=r.props).validateFirst)&&f,m=i.messageVariables,g=i.validateDebounce,h=r.getRules(),a&&(h=h.filter(function(e){return e}).filter(function(e){var t=e.validateTrigger;return!t||C(t).includes(a)})),!(g&&a)){o.next=10;break}return o.next=8,new Promise(function(e){setTimeout(e,g)});case 8:if(!(r.validatePromise!==d)){o.next=10;break}return o.abrupt("return",[]);case 10:return(v=function(e,t,n,r,o,a){var i,u,d=e.join("."),f=n.map(function(e,t){var n=e.validator,r=(0,s.Z)((0,s.Z)({},e),{},{ruleIndex:t});return n&&(r.validator=function(e,t,r){var o=!1,a=n(e,t,function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:ep;if(r.validatePromise===d){r.validatePromise=null;var t,n=[],o=[];null===(t=e.forEach)||void 0===t||t.call(e,function(e){var t=e.rule.warningOnly,r=e.errors,a=void 0===r?ep:r;t?o.push.apply(o,(0,u.Z)(a)):n.push.apply(n,(0,u.Z)(a))}),r.errors=n,r.warnings=o,r.triggerMetaEvent(),r.reRender()}}),o.abrupt("return",v);case 13:case"end":return o.stop()}},o)})));return void 0!==i&&i||(r.validatePromise=d,r.dirty=!0,r.errors=ep,r.warnings=ep,r.triggerMetaEvent(),r.reRender()),d}),(0,h.Z)((0,p.Z)(r),"isFieldValidating",function(){return!!r.validatePromise}),(0,h.Z)((0,p.Z)(r),"isFieldTouched",function(){return r.touched}),(0,h.Z)((0,p.Z)(r),"isFieldDirty",function(){return!!r.dirty||void 0!==r.props.initialValue||void 0!==(0,r.props.fieldContext.getInternalHooks(w).getInitialValue)(r.getNamePath())}),(0,h.Z)((0,p.Z)(r),"getErrors",function(){return r.errors}),(0,h.Z)((0,p.Z)(r),"getWarnings",function(){return r.warnings}),(0,h.Z)((0,p.Z)(r),"isListField",function(){return r.props.isListField}),(0,h.Z)((0,p.Z)(r),"isList",function(){return r.props.isList}),(0,h.Z)((0,p.Z)(r),"isPreserve",function(){return r.props.preserve}),(0,h.Z)((0,p.Z)(r),"getMeta",function(){return r.prevValidating=r.isFieldValidating(),{touched:r.isFieldTouched(),validating:r.prevValidating,errors:r.errors,warnings:r.warnings,name:r.getNamePath(),validated:null===r.validatePromise}}),(0,h.Z)((0,p.Z)(r),"getOnlyChild",function(e){if("function"==typeof e){var t=r.getMeta();return(0,s.Z)((0,s.Z)({},r.getOnlyChild(e(r.getControlled(),t,r.props.fieldContext))),{},{isFunction:!0})}var n=(0,v.Z)(e);return 1===n.length&&o.isValidElement(n[0])?{child:n[0],isFunction:!1}:{child:n,isFunction:!1}}),(0,h.Z)((0,p.Z)(r),"getValue",function(e){var t=r.props.fieldContext.getFieldsValue,n=r.getNamePath();return(0,ea.Z)(e||t(!0),n)}),(0,h.Z)((0,p.Z)(r),"getControlled",function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=r.props,n=t.trigger,o=t.validateTrigger,a=t.getValueFromEvent,i=t.normalize,c=t.valuePropName,l=t.getValueProps,u=t.fieldContext,d=void 0!==o?o:u.validateTrigger,f=r.getNamePath(),p=u.getInternalHooks,m=u.getFieldsValue,g=p(w).dispatch,v=r.getValue(),b=l||function(e){return(0,h.Z)({},c,e)},y=e[n],x=(0,s.Z)((0,s.Z)({},e),b(v));return x[n]=function(){r.touched=!0,r.dirty=!0,r.triggerMetaEvent();for(var e,t=arguments.length,n=Array(t),o=0;o=0&&t<=n.length?(f.keys=[].concat((0,u.Z)(f.keys.slice(0,t)),[f.id],(0,u.Z)(f.keys.slice(t))),o([].concat((0,u.Z)(n.slice(0,t)),[e],(0,u.Z)(n.slice(t))))):(f.keys=[].concat((0,u.Z)(f.keys),[f.id]),o([].concat((0,u.Z)(n),[e]))),f.id+=1},remove:function(e){var t=i(),n=new Set(Array.isArray(e)?e:[e]);n.size<=0||(f.keys=f.keys.filter(function(e,t){return!n.has(t)}),o(t.filter(function(e,t){return!n.has(t)})))},move:function(e,t){if(e!==t){var n=i();e<0||e>=n.length||t<0||t>=n.length||(f.keys=ed(f.keys,e,t),o(ed(n,e,t)))}}},t)})))},eb=n(26365),ey="__@field_split__";function ew(e){return e.map(function(e){return"".concat((0,eo.Z)(e),":").concat(e)}).join(ey)}var ex=function(){function e(){(0,d.Z)(this,e),(0,h.Z)(this,"kvs",new Map)}return(0,f.Z)(e,[{key:"set",value:function(e,t){this.kvs.set(ew(e),t)}},{key:"get",value:function(e){return this.kvs.get(ew(e))}},{key:"update",value:function(e,t){var n=t(this.get(e));n?this.set(e,n):this.delete(e)}},{key:"delete",value:function(e){this.kvs.delete(ew(e))}},{key:"map",value:function(e){return(0,u.Z)(this.kvs.entries()).map(function(t){var n=(0,eb.Z)(t,2),r=n[0],o=n[1];return e({key:r.split(ey).map(function(e){var t=e.match(/^([^:]*):(.*)$/),n=(0,eb.Z)(t,3),r=n[1],o=n[2];return"number"===r?Number(o):o}),value:o})})}},{key:"toJSON",value:function(){var e={};return this.map(function(t){var n=t.key,r=t.value;return e[n.join(".")]=r,null}),e}}]),e}(),eE=["name"],eS=(0,f.Z)(function e(t){var n=this;(0,d.Z)(this,e),(0,h.Z)(this,"formHooked",!1),(0,h.Z)(this,"forceRootUpdate",void 0),(0,h.Z)(this,"subscribable",!0),(0,h.Z)(this,"store",{}),(0,h.Z)(this,"fieldEntities",[]),(0,h.Z)(this,"initialValues",{}),(0,h.Z)(this,"callbacks",{}),(0,h.Z)(this,"validateMessages",null),(0,h.Z)(this,"preserve",null),(0,h.Z)(this,"lastValidatePromise",null),(0,h.Z)(this,"getForm",function(){return{getFieldValue:n.getFieldValue,getFieldsValue:n.getFieldsValue,getFieldError:n.getFieldError,getFieldWarning:n.getFieldWarning,getFieldsError:n.getFieldsError,isFieldsTouched:n.isFieldsTouched,isFieldTouched:n.isFieldTouched,isFieldValidating:n.isFieldValidating,isFieldsValidating:n.isFieldsValidating,resetFields:n.resetFields,setFields:n.setFields,setFieldValue:n.setFieldValue,setFieldsValue:n.setFieldsValue,validateFields:n.validateFields,submit:n.submit,_init:!0,getInternalHooks:n.getInternalHooks}}),(0,h.Z)(this,"getInternalHooks",function(e){return e===w?(n.formHooked=!0,{dispatch:n.dispatch,initEntityValue:n.initEntityValue,registerField:n.registerField,useSubscribe:n.useSubscribe,setInitialValues:n.setInitialValues,destroyForm:n.destroyForm,setCallbacks:n.setCallbacks,setValidateMessages:n.setValidateMessages,getFields:n.getFields,setPreserve:n.setPreserve,getInitialValue:n.getInitialValue,registerWatch:n.registerWatch}):((0,y.ZP)(!1,"`getInternalHooks` is internal usage. Should not call directly."),null)}),(0,h.Z)(this,"useSubscribe",function(e){n.subscribable=e}),(0,h.Z)(this,"prevWithoutPreserves",null),(0,h.Z)(this,"setInitialValues",function(e,t){if(n.initialValues=e||{},t){var r,o=(0,Q.T)(e,n.store);null===(r=n.prevWithoutPreserves)||void 0===r||r.map(function(t){var n=t.key;o=(0,Q.Z)(o,n,(0,ea.Z)(e,n))}),n.prevWithoutPreserves=null,n.updateStore(o)}}),(0,h.Z)(this,"destroyForm",function(){var e=new ex;n.getFieldEntities(!0).forEach(function(t){n.isMergedPreserve(t.isPreserve())||e.set(t.getNamePath(),!0)}),n.prevWithoutPreserves=e}),(0,h.Z)(this,"getInitialValue",function(e){var t=(0,ea.Z)(n.initialValues,e);return e.length?(0,Q.T)(t):t}),(0,h.Z)(this,"setCallbacks",function(e){n.callbacks=e}),(0,h.Z)(this,"setValidateMessages",function(e){n.validateMessages=e}),(0,h.Z)(this,"setPreserve",function(e){n.preserve=e}),(0,h.Z)(this,"watchList",[]),(0,h.Z)(this,"registerWatch",function(e){return n.watchList.push(e),function(){n.watchList=n.watchList.filter(function(t){return t!==e})}}),(0,h.Z)(this,"notifyWatch",function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(n.watchList.length){var t=n.getFieldsValue(),r=n.getFieldsValue(!0);n.watchList.forEach(function(n){n(t,r,e)})}}),(0,h.Z)(this,"timeoutId",null),(0,h.Z)(this,"warningUnhooked",function(){}),(0,h.Z)(this,"updateStore",function(e){n.store=e}),(0,h.Z)(this,"getFieldEntities",function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return e?n.fieldEntities.filter(function(e){return e.getNamePath().length}):n.fieldEntities}),(0,h.Z)(this,"getFieldsMap",function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=new ex;return n.getFieldEntities(e).forEach(function(e){var n=e.getNamePath();t.set(n,e)}),t}),(0,h.Z)(this,"getFieldEntitiesForNamePathList",function(e){if(!e)return n.getFieldEntities(!0);var t=n.getFieldsMap(!0);return e.map(function(e){var n=ei(e);return t.get(n)||{INVALIDATE_NAME_PATH:ei(e)}})}),(0,h.Z)(this,"getFieldsValue",function(e,t){if(n.warningUnhooked(),!0===e||Array.isArray(e)?(r=e,o=t):e&&"object"===(0,eo.Z)(e)&&(a=e.strict,o=e.filter),!0===r&&!o)return n.store;var r,o,a,i=n.getFieldEntitiesForNamePathList(Array.isArray(r)?r:null),c=[];return i.forEach(function(e){var t,n,i,l="INVALIDATE_NAME_PATH"in e?e.INVALIDATE_NAME_PATH:e.getNamePath();if(a){if(null!==(i=e.isList)&&void 0!==i&&i.call(e))return}else if(!r&&null!==(t=(n=e).isListField)&&void 0!==t&&t.call(n))return;if(o){var s="getMeta"in e?e.getMeta():null;o(s)&&c.push(l)}else c.push(l)}),ec(n.store,c.map(ei))}),(0,h.Z)(this,"getFieldValue",function(e){n.warningUnhooked();var t=ei(e);return(0,ea.Z)(n.store,t)}),(0,h.Z)(this,"getFieldsError",function(e){return n.warningUnhooked(),n.getFieldEntitiesForNamePathList(e).map(function(t,n){return!t||"INVALIDATE_NAME_PATH"in t?{name:ei(e[n]),errors:[],warnings:[]}:{name:t.getNamePath(),errors:t.getErrors(),warnings:t.getWarnings()}})}),(0,h.Z)(this,"getFieldError",function(e){n.warningUnhooked();var t=ei(e);return n.getFieldsError([t])[0].errors}),(0,h.Z)(this,"getFieldWarning",function(e){n.warningUnhooked();var t=ei(e);return n.getFieldsError([t])[0].warnings}),(0,h.Z)(this,"isFieldsTouched",function(){n.warningUnhooked();for(var e,t=arguments.length,r=Array(t),o=0;o0&&void 0!==arguments[0]?arguments[0]:{},r=new ex,o=n.getFieldEntities(!0);o.forEach(function(e){var t=e.props.initialValue,n=e.getNamePath();if(void 0!==t){var o=r.get(n)||new Set;o.add({entity:e,value:t}),r.set(n,o)}}),t.entities?e=t.entities:t.namePathList?(e=[],t.namePathList.forEach(function(t){var n,o=r.get(t);o&&(n=e).push.apply(n,(0,u.Z)((0,u.Z)(o).map(function(e){return e.entity})))})):e=o,function(e){e.forEach(function(e){if(void 0!==e.props.initialValue){var o=e.getNamePath();if(void 0!==n.getInitialValue(o))(0,y.ZP)(!1,"Form already set 'initialValues' with path '".concat(o.join("."),"'. Field can not overwrite it."));else{var a=r.get(o);if(a&&a.size>1)(0,y.ZP)(!1,"Multiple Field with path '".concat(o.join("."),"' set 'initialValue'. Can not decide which one to pick."));else if(a){var i=n.getFieldValue(o);e.isListField()||t.skipExist&&void 0!==i||n.updateStore((0,Q.Z)(n.store,o,(0,u.Z)(a)[0].value))}}}})}(e)}),(0,h.Z)(this,"resetFields",function(e){n.warningUnhooked();var t=n.store;if(!e){n.updateStore((0,Q.T)(n.initialValues)),n.resetWithFieldInitialValue(),n.notifyObservers(t,null,{type:"reset"}),n.notifyWatch();return}var r=e.map(ei);r.forEach(function(e){var t=n.getInitialValue(e);n.updateStore((0,Q.Z)(n.store,e,t))}),n.resetWithFieldInitialValue({namePathList:r}),n.notifyObservers(t,r,{type:"reset"}),n.notifyWatch(r)}),(0,h.Z)(this,"setFields",function(e){n.warningUnhooked();var t=n.store,r=[];e.forEach(function(e){var o=e.name,a=(0,i.Z)(e,eE),c=ei(o);r.push(c),"value"in a&&n.updateStore((0,Q.Z)(n.store,c,a.value)),n.notifyObservers(t,[c],{type:"setField",data:e})}),n.notifyWatch(r)}),(0,h.Z)(this,"getFields",function(){return n.getFieldEntities(!0).map(function(e){var t=e.getNamePath(),r=e.getMeta(),o=(0,s.Z)((0,s.Z)({},r),{},{name:t,value:n.getFieldValue(t)});return Object.defineProperty(o,"originRCField",{value:!0}),o})}),(0,h.Z)(this,"initEntityValue",function(e){var t=e.props.initialValue;if(void 0!==t){var r=e.getNamePath();void 0===(0,ea.Z)(n.store,r)&&n.updateStore((0,Q.Z)(n.store,r,t))}}),(0,h.Z)(this,"isMergedPreserve",function(e){var t=void 0!==e?e:n.preserve;return null==t||t}),(0,h.Z)(this,"registerField",function(e){n.fieldEntities.push(e);var t=e.getNamePath();if(n.notifyWatch([t]),void 0!==e.props.initialValue){var r=n.store;n.resetWithFieldInitialValue({entities:[e],skipExist:!0}),n.notifyObservers(r,[e.getNamePath()],{type:"valueUpdate",source:"internal"})}return function(r,o){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(n.fieldEntities=n.fieldEntities.filter(function(t){return t!==e}),!n.isMergedPreserve(o)&&(!r||a.length>1)){var i=r?void 0:n.getInitialValue(t);if(t.length&&n.getFieldValue(t)!==i&&n.fieldEntities.every(function(e){return!es(e.getNamePath(),t)})){var c=n.store;n.updateStore((0,Q.Z)(c,t,i,!0)),n.notifyObservers(c,[t],{type:"remove"}),n.triggerDependenciesUpdate(c,t)}}n.notifyWatch([t])}}),(0,h.Z)(this,"dispatch",function(e){switch(e.type){case"updateValue":var t=e.namePath,r=e.value;n.updateValue(t,r);break;case"validateField":var o=e.namePath,a=e.triggerName;n.validateFields([o],{triggerName:a})}}),(0,h.Z)(this,"notifyObservers",function(e,t,r){if(n.subscribable){var o=(0,s.Z)((0,s.Z)({},r),{},{store:n.getFieldsValue(!0)});n.getFieldEntities().forEach(function(n){(0,n.onStoreChange)(e,t,o)})}else n.forceRootUpdate()}),(0,h.Z)(this,"triggerDependenciesUpdate",function(e,t){var r=n.getDependencyChildrenFields(t);return r.length&&n.validateFields(r),n.notifyObservers(e,r,{type:"dependenciesUpdate",relatedFields:[t].concat((0,u.Z)(r))}),r}),(0,h.Z)(this,"updateValue",function(e,t){var r=ei(e),o=n.store;n.updateStore((0,Q.Z)(n.store,r,t)),n.notifyObservers(o,[r],{type:"valueUpdate",source:"internal"}),n.notifyWatch([r]);var a=n.triggerDependenciesUpdate(o,r),i=n.callbacks.onValuesChange;i&&i(ec(n.store,[r]),n.getFieldsValue()),n.triggerOnFieldsChange([r].concat((0,u.Z)(a)))}),(0,h.Z)(this,"setFieldsValue",function(e){n.warningUnhooked();var t=n.store;if(e){var r=(0,Q.T)(n.store,e);n.updateStore(r)}n.notifyObservers(t,null,{type:"valueUpdate",source:"external"}),n.notifyWatch()}),(0,h.Z)(this,"setFieldValue",function(e,t){n.setFields([{name:e,value:t}])}),(0,h.Z)(this,"getDependencyChildrenFields",function(e){var t=new Set,r=[],o=new ex;return n.getFieldEntities().forEach(function(e){(e.props.dependencies||[]).forEach(function(t){var n=ei(t);o.update(n,function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Set;return t.add(e),t})})}),function e(n){(o.get(n)||new Set).forEach(function(n){if(!t.has(n)){t.add(n);var o=n.getNamePath();n.isFieldDirty()&&o.length&&(r.push(o),e(o))}})}(e),r}),(0,h.Z)(this,"triggerOnFieldsChange",function(e,t){var r=n.callbacks.onFieldsChange;if(r){var o=n.getFields();if(t){var a=new ex;t.forEach(function(e){var t=e.name,n=e.errors;a.set(t,n)}),o.forEach(function(e){e.errors=a.get(e.name)||e.errors})}var i=o.filter(function(t){return el(e,t.name)});i.length&&r(i,o)}}),(0,h.Z)(this,"validateFields",function(e,t){n.warningUnhooked(),Array.isArray(e)||"string"==typeof e||"string"==typeof t?(i=e,c=t):c=e;var r,o,a,i,c,l=!!i,d=l?i.map(ei):[],f=[],p=String(Date.now()),m=new Set,g=c||{},h=g.recursive,v=g.dirty;n.getFieldEntities(!0).forEach(function(e){if(l||d.push(e.getNamePath()),e.props.rules&&e.props.rules.length&&(!v||e.isFieldDirty())){var t=e.getNamePath();if(m.add(t.join(p)),!l||el(d,t,h)){var r=e.validateRules((0,s.Z)({validateMessages:(0,s.Z)((0,s.Z)({},Y),n.validateMessages)},c));f.push(r.then(function(){return{name:t,errors:[],warnings:[]}}).catch(function(e){var n,r=[],o=[];return(null===(n=e.forEach)||void 0===n||n.call(e,function(e){var t=e.rule.warningOnly,n=e.errors;t?o.push.apply(o,(0,u.Z)(n)):r.push.apply(r,(0,u.Z)(n))}),r.length)?Promise.reject({name:t,errors:r,warnings:o}):{name:t,errors:r,warnings:o}}))}}});var b=(r=!1,o=f.length,a=[],f.length?new Promise(function(e,t){f.forEach(function(n,i){n.catch(function(e){return r=!0,e}).then(function(n){o-=1,a[i]=n,o>0||(r&&t(a),e(a))})})}):Promise.resolve([]));n.lastValidatePromise=b,b.catch(function(e){return e}).then(function(e){var t=e.map(function(e){return e.name});n.notifyObservers(n.store,t,{type:"validateFinish"}),n.triggerOnFieldsChange(t,e)});var y=b.then(function(){return n.lastValidatePromise===b?Promise.resolve(n.getFieldsValue(d)):Promise.reject([])}).catch(function(e){var t=e.filter(function(e){return e&&e.errors.length});return Promise.reject({values:n.getFieldsValue(d),errorFields:t,outOfDate:n.lastValidatePromise!==b})});y.catch(function(e){return e});var w=d.filter(function(e){return m.has(e.join(p))});return n.triggerOnFieldsChange(w),y}),(0,h.Z)(this,"submit",function(){n.warningUnhooked(),n.validateFields().then(function(e){var t=n.callbacks.onFinish;if(t)try{t(e)}catch(e){console.error(e)}}).catch(function(e){var t=n.callbacks.onFinishFailed;t&&t(e)})}),this.forceRootUpdate=t}),eC=function(e){var t=o.useRef(),n=o.useState({}),r=(0,eb.Z)(n,2)[1];if(!t.current){if(e)t.current=e;else{var a=new eS(function(){r({})});t.current=a.getForm()}}return[t.current]},eZ=o.createContext({triggerFormChange:function(){},triggerFormFinish:function(){},registerForm:function(){},unregisterForm:function(){}}),eO=function(e){var t=e.validateMessages,n=e.onFormChange,r=e.onFormFinish,a=e.children,i=o.useContext(eZ),c=o.useRef({});return o.createElement(eZ.Provider,{value:(0,s.Z)((0,s.Z)({},i),{},{validateMessages:(0,s.Z)((0,s.Z)({},i.validateMessages),t),triggerFormChange:function(e,t){n&&n(e,{changedFields:t,forms:c.current}),i.triggerFormChange(e,t)},triggerFormFinish:function(e,t){r&&r(e,{values:t,forms:c.current}),i.triggerFormFinish(e,t)},registerForm:function(e,t){e&&(c.current=(0,s.Z)((0,s.Z)({},c.current),{},(0,h.Z)({},e,t))),i.registerForm(e,t)},unregisterForm:function(e){var t=(0,s.Z)({},c.current);delete t[e],c.current=t,i.unregisterForm(e)}})},a)},ek=["name","initialValues","fields","form","preserve","children","component","validateMessages","validateTrigger","onValuesChange","onFieldsChange","onFinish","onFinishFailed"];function eM(e){try{return JSON.stringify(e)}catch(e){return Math.random()}}var ej=function(){},eI=function(){for(var e=arguments.length,t=Array(e),n=0;n1?t-1:0),o=1;oen;(0,s.useImperativeHandle)(t,function(){return{focus:q,blur:function(){var e;null===(e=V.current)||void 0===e||e.blur()},setSelectionRange:function(e,t,n){var r;null===(r=V.current)||void 0===r||r.setSelectionRange(e,t,n)},select:function(){var e;null===(e=V.current)||void 0===e||e.select()},input:V.current}}),(0,s.useEffect)(function(){D(function(e){return(!e||!Z)&&e})},[Z]);var ea=function(e,t,n){var r,o,a=t;if(!W.current&&et.exceedFormatter&&et.max&&et.strategy(t)>et.max)a=et.exceedFormatter(t,{max:et.max}),t!==a&&ee([(null===(r=V.current)||void 0===r?void 0:r.selectionStart)||0,(null===(o=V.current)||void 0===o?void 0:o.selectionEnd)||0]);else if("compositionEnd"===n.source)return;$(a),V.current&&(0,u.rJ)(V.current,e,c,a)};(0,s.useEffect)(function(){if(J){var e;null===(e=V.current)||void 0===e||e.setSelectionRange.apply(e,(0,f.Z)(J))}},[J]);var ei=eo&&"".concat(C,"-out-of-range");return s.createElement(d,(0,o.Z)({},z,{prefixCls:C,className:l()(k,ei),handleReset:function(e){$(""),q(),V.current&&(0,u.rJ)(V.current,e,c)},value:K,focused:B,triggerFocus:q,suffix:function(){var e=Number(en)>0;if(j||et.show){var t=et.showFormatter?et.showFormatter({value:K,count:er,maxLength:en}):"".concat(er).concat(e?" / ".concat(en):"");return s.createElement(s.Fragment,null,et.show&&s.createElement("span",{className:l()("".concat(C,"-show-count-suffix"),(0,a.Z)({},"".concat(C,"-show-count-has-suffix"),!!j),null==F?void 0:F.count),style:(0,r.Z)({},null==T?void 0:T.count)},t),j)}return null}(),disabled:Z,classes:P,classNames:F,styles:T}),(n=(0,h.Z)(e,["prefixCls","onPressEnter","addonBefore","addonAfter","prefix","suffix","allowClear","defaultValue","showCount","count","classes","htmlSize","styles","classNames"]),s.createElement("input",(0,o.Z)({autoComplete:i},n,{onChange:function(e){ea(e,e.target.value,{source:"change"})},onFocus:function(e){D(!0),null==y||y(e)},onBlur:function(e){D(!1),null==w||w(e)},onKeyDown:function(e){x&&"Enter"===e.key&&x(e),null==E||E(e)},className:l()(C,(0,a.Z)({},"".concat(C,"-disabled"),Z),null==F?void 0:F.input),style:null==T?void 0:T.input,ref:V,size:O,type:void 0===N?"text":N,onCompositionStart:function(e){W.current=!0,null==A||A(e)},onCompositionEnd:function(e){W.current=!1,ea(e,e.currentTarget.value,{source:"compositionEnd"}),null==L||L(e)}}))))})},55041:function(e,t,n){"use strict";function r(e){return!!(e.addonBefore||e.addonAfter)}function o(e){return!!(e.prefix||e.suffix||e.allowClear)}function a(e,t,n,r){if(n){var o=t;if("click"===t.type){var a=e.cloneNode(!0);o=Object.create(t,{target:{value:a},currentTarget:{value:a}}),a.value="",n(o);return}if("file"!==e.type&&void 0!==r){var i=e.cloneNode(!0);o=Object.create(t,{target:{value:i},currentTarget:{value:i}}),i.value=r,n(o);return}n(o)}}function i(e,t){if(e){e.focus(t);var n=(t||{}).cursor;if(n){var r=e.value.length;switch(n){case"start":e.setSelectionRange(0,0);break;case"end":e.setSelectionRange(r,r);break;default:e.setSelectionRange(0,r)}}}}n.d(t,{He:function(){return r},X3:function(){return o},nH:function(){return i},rJ:function(){return a}})},47970:function(e,t,n){"use strict";n.d(t,{V4:function(){return ep},zt:function(){return w},ZP:function(){return em}});var r,o,a,i,c,l=n(11993),s=n(31686),u=n(26365),d=n(41154),f=n(36760),p=n.n(f),m=n(2868),g=n(28791),h=n(2265),v=n(6989),b=["children"],y=h.createContext({});function w(e){var t=e.children,n=(0,v.Z)(e,b);return h.createElement(y.Provider,{value:n},t)}var x=n(76405),E=n(25049),S=n(15354),C=n(15900),Z=function(e){(0,S.Z)(n,e);var t=(0,C.Z)(n);function n(){return(0,x.Z)(this,n),t.apply(this,arguments)}return(0,E.Z)(n,[{key:"render",value:function(){return this.props.children}}]),n}(h.Component),O=n(69819),k="none",M="appear",j="enter",I="leave",R="none",N="prepare",P="start",F="active",T="prepared",A=n(94981);function L(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit".concat(e)]="webkit".concat(t),n["Moz".concat(e)]="moz".concat(t),n["ms".concat(e)]="MS".concat(t),n["O".concat(e)]="o".concat(t.toLowerCase()),n}var z=(r=(0,A.Z)(),o="undefined"!=typeof window?window:{},a={animationend:L("Animation","AnimationEnd"),transitionend:L("Transition","TransitionEnd")},!r||("AnimationEvent"in o||delete a.animationend.animation,"TransitionEvent"in o||delete a.transitionend.transition),a),_={};(0,A.Z)()&&(_=document.createElement("div").style);var H={};function B(e){if(H[e])return H[e];var t=z[e];if(t)for(var n=Object.keys(t),r=n.length,o=0;o1&&void 0!==arguments[1]?arguments[1]:2;t();var a=(0,K.Z)(function(){o<=1?r({isCanceled:function(){return a!==e.current}}):n(r,o-1)});e.current=a},t]},Q=[N,P,F,"end"],J=[N,T];function ee(e){return e===F||"end"===e}var et=function(e,t,n){var r=(0,O.Z)(R),o=(0,u.Z)(r,2),a=o[0],i=o[1],c=Y(),l=(0,u.Z)(c,2),s=l[0],d=l[1],f=t?J:Q;return $(function(){if(a!==R&&"end"!==a){var e=f.indexOf(a),t=f[e+1],r=n(a);!1===r?i(t,!0):t&&s(function(e){function n(){e.isCanceled()||i(t,!0)}!0===r?n():Promise.resolve(r).then(n)})}},[e,a]),h.useEffect(function(){return function(){d()}},[]),[function(){i(N,!0)},a]},en=(i=V,"object"===(0,d.Z)(V)&&(i=V.transitionSupport),(c=h.forwardRef(function(e,t){var n=e.visible,r=void 0===n||n,o=e.removeOnLeave,a=void 0===o||o,c=e.forceRender,d=e.children,f=e.motionName,v=e.leavedClassName,b=e.eventProps,w=h.useContext(y).motion,x=!!(e.motionName&&i&&!1!==w),E=(0,h.useRef)(),S=(0,h.useRef)(),C=function(e,t,n,r){var o=r.motionEnter,a=void 0===o||o,i=r.motionAppear,c=void 0===i||i,d=r.motionLeave,f=void 0===d||d,p=r.motionDeadline,m=r.motionLeaveImmediately,g=r.onAppearPrepare,v=r.onEnterPrepare,b=r.onLeavePrepare,y=r.onAppearStart,w=r.onEnterStart,x=r.onLeaveStart,E=r.onAppearActive,S=r.onEnterActive,C=r.onLeaveActive,Z=r.onAppearEnd,R=r.onEnterEnd,A=r.onLeaveEnd,L=r.onVisibleChanged,z=(0,O.Z)(),_=(0,u.Z)(z,2),H=_[0],B=_[1],D=(0,O.Z)(k),W=(0,u.Z)(D,2),V=W[0],q=W[1],G=(0,O.Z)(null),X=(0,u.Z)(G,2),K=X[0],Y=X[1],Q=(0,h.useRef)(!1),J=(0,h.useRef)(null),en=(0,h.useRef)(!1);function er(){q(k,!0),Y(null,!0)}function eo(e){var t,r=n();if(!e||e.deadline||e.target===r){var o=en.current;V===M&&o?t=null==Z?void 0:Z(r,e):V===j&&o?t=null==R?void 0:R(r,e):V===I&&o&&(t=null==A?void 0:A(r,e)),V!==k&&o&&!1!==t&&er()}}var ea=U(eo),ei=(0,u.Z)(ea,1)[0],ec=function(e){var t,n,r;switch(e){case M:return t={},(0,l.Z)(t,N,g),(0,l.Z)(t,P,y),(0,l.Z)(t,F,E),t;case j:return n={},(0,l.Z)(n,N,v),(0,l.Z)(n,P,w),(0,l.Z)(n,F,S),n;case I:return r={},(0,l.Z)(r,N,b),(0,l.Z)(r,P,x),(0,l.Z)(r,F,C),r;default:return{}}},el=h.useMemo(function(){return ec(V)},[V]),es=et(V,!e,function(e){if(e===N){var t,r=el[N];return!!r&&r(n())}return ef in el&&Y((null===(t=el[ef])||void 0===t?void 0:t.call(el,n(),null))||null),ef===F&&(ei(n()),p>0&&(clearTimeout(J.current),J.current=setTimeout(function(){eo({deadline:!0})},p))),ef===T&&er(),!0}),eu=(0,u.Z)(es,2),ed=eu[0],ef=eu[1],ep=ee(ef);en.current=ep,$(function(){B(t);var n,r=Q.current;Q.current=!0,!r&&t&&c&&(n=M),r&&t&&a&&(n=j),(r&&!t&&f||!r&&m&&!t&&f)&&(n=I);var o=ec(n);n&&(e||o[N])?(q(n),ed()):q(k)},[t]),(0,h.useEffect)(function(){(V!==M||c)&&(V!==j||a)&&(V!==I||f)||q(k)},[c,a,f]),(0,h.useEffect)(function(){return function(){Q.current=!1,clearTimeout(J.current)}},[]);var em=h.useRef(!1);(0,h.useEffect)(function(){H&&(em.current=!0),void 0!==H&&V===k&&((em.current||H)&&(null==L||L(H)),em.current=!0)},[H,V]);var eg=K;return el[N]&&ef===P&&(eg=(0,s.Z)({transition:"none"},eg)),[V,ef,eg,null!=H?H:t]}(x,r,function(){try{return E.current instanceof HTMLElement?E.current:(0,m.Z)(S.current)}catch(e){return null}},e),R=(0,u.Z)(C,4),A=R[0],L=R[1],z=R[2],_=R[3],H=h.useRef(_);_&&(H.current=!0);var B=h.useCallback(function(e){E.current=e,(0,g.mH)(t,e)},[t]),D=(0,s.Z)((0,s.Z)({},b),{},{visible:r});if(d){if(A===k)W=_?d((0,s.Z)({},D),B):!a&&H.current&&v?d((0,s.Z)((0,s.Z)({},D),{},{className:v}),B):!c&&(a||v)?null:d((0,s.Z)((0,s.Z)({},D),{},{style:{display:"none"}}),B);else{L===N?q="prepare":ee(L)?q="active":L===P&&(q="start");var W,V,q,G=X(f,"".concat(A,"-").concat(q));W=d((0,s.Z)((0,s.Z)({},D),{},{className:p()(X(f,A),(V={},(0,l.Z)(V,G,G&&q),(0,l.Z)(V,f,"string"==typeof f),V)),style:z}),B)}}else W=null;return h.isValidElement(W)&&(0,g.Yr)(W)&&!W.ref&&(W=h.cloneElement(W,{ref:B})),h.createElement(Z,{ref:S},W)})).displayName="CSSMotion",c),er=n(1119),eo=n(63496),ea="keep",ei="remove",ec="removed";function el(e){var t;return t=e&&"object"===(0,d.Z)(e)&&"key"in e?e:{key:e},(0,s.Z)((0,s.Z)({},t),{},{key:String(t.key)})}function es(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.map(el)}var eu=["component","children","onVisibleChanged","onAllRemoved"],ed=["status"],ef=["eventProps","visible","children","motionName","motionAppear","motionEnter","motionLeave","motionLeaveImmediately","motionDeadline","removeOnLeave","leavedClassName","onAppearPrepare","onAppearStart","onAppearActive","onAppearEnd","onEnterStart","onEnterActive","onEnterEnd","onLeaveStart","onLeaveActive","onLeaveEnd"],ep=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:en,n=function(e){(0,S.Z)(r,e);var n=(0,C.Z)(r);function r(){var e;(0,x.Z)(this,r);for(var t=arguments.length,o=Array(t),a=0;a0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=[],r=0,o=t.length,a=es(e),i=es(t);a.forEach(function(e){for(var t=!1,a=r;a1}).forEach(function(e){(n=n.filter(function(t){var n=t.key,r=t.status;return n!==e||r!==ei})).forEach(function(t){t.key===e&&(t.status=ea)})}),n})(r,es(n)).filter(function(e){var t=r.find(function(t){var n=t.key;return e.key===n});return!t||t.status!==ec||e.status!==ei})}}}]),r}(h.Component);return(0,l.Z)(n,"defaultProps",{component:"div"}),n}(V),em=en},49283:function(e,t,n){"use strict";n.d(t,{qX:function(){return g},JB:function(){return v},lm:function(){return O}});var r=n(83145),o=n(26365),a=n(6989),i=n(2265),c=n(31686),l=n(54887),s=n(1119),u=n(11993),d=n(36760),f=n.n(d),p=n(47970),m=n(95814),g=i.forwardRef(function(e,t){var n=e.prefixCls,r=e.style,a=e.className,c=e.duration,l=void 0===c?4.5:c,d=e.eventKey,p=e.content,g=e.closable,h=e.closeIcon,v=e.props,b=e.onClick,y=e.onNoticeClose,w=e.times,x=e.hovering,E=i.useState(!1),S=(0,o.Z)(E,2),C=S[0],Z=S[1],O=x||C,k=function(){y(d)};i.useEffect(function(){if(!O&&l>0){var e=setTimeout(function(){k()},1e3*l);return function(){clearTimeout(e)}}},[l,O,w]);var M="".concat(n,"-notice");return i.createElement("div",(0,s.Z)({},v,{ref:t,className:f()(M,a,(0,u.Z)({},"".concat(M,"-closable"),g)),style:r,onMouseEnter:function(e){var t;Z(!0),null==v||null===(t=v.onMouseEnter)||void 0===t||t.call(v,e)},onMouseLeave:function(e){var t;Z(!1),null==v||null===(t=v.onMouseLeave)||void 0===t||t.call(v,e)},onClick:b}),i.createElement("div",{className:"".concat(M,"-content")},p),g&&i.createElement("a",{tabIndex:0,className:"".concat(M,"-close"),onKeyDown:function(e){("Enter"===e.key||"Enter"===e.code||e.keyCode===m.Z.ENTER)&&k()},onClick:function(e){e.preventDefault(),e.stopPropagation(),k()}},void 0===h?"x":h))}),h=i.createContext({}),v=function(e){var t=e.children,n=e.classNames;return i.createElement(h.Provider,{value:{classNames:n}},t)},b=n(41154),y=function(e){var t,n,r,o={offset:8,threshold:3,gap:16};return e&&"object"===(0,b.Z)(e)&&(o.offset=null!==(t=e.offset)&&void 0!==t?t:8,o.threshold=null!==(n=e.threshold)&&void 0!==n?n:3,o.gap=null!==(r=e.gap)&&void 0!==r?r:16),[!!e,o]},w=["className","style","classNames","styles"],x=function(e){var t,n=e.configList,l=e.placement,d=e.prefixCls,m=e.className,v=e.style,b=e.motion,x=e.onAllNoticeRemoved,E=e.onNoticeClose,S=e.stack,C=(0,i.useContext)(h).classNames,Z=(0,i.useRef)({}),O=(0,i.useState)(null),k=(0,o.Z)(O,2),M=k[0],j=k[1],I=(0,i.useState)([]),R=(0,o.Z)(I,2),N=R[0],P=R[1],F=n.map(function(e){return{config:e,key:String(e.key)}}),T=y(S),A=(0,o.Z)(T,2),L=A[0],z=A[1],_=z.offset,H=z.threshold,B=z.gap,D=L&&(N.length>0||F.length<=H),W="function"==typeof b?b(l):b;return(0,i.useEffect)(function(){L&&N.length>1&&P(function(e){return e.filter(function(e){return F.some(function(t){return e===t.key})})})},[N,F,L]),(0,i.useEffect)(function(){var e,t;L&&Z.current[null===(e=F[F.length-1])||void 0===e?void 0:e.key]&&j(Z.current[null===(t=F[F.length-1])||void 0===t?void 0:t.key])},[F,L]),i.createElement(p.V4,(0,s.Z)({key:l,className:f()(d,"".concat(d,"-").concat(l),null==C?void 0:C.list,m,(t={},(0,u.Z)(t,"".concat(d,"-stack"),!!L),(0,u.Z)(t,"".concat(d,"-stack-expanded"),D),t)),style:v,keys:F,motionAppear:!0},W,{onAllRemoved:function(){x(l)}}),function(e,t){var n=e.config,o=e.className,u=e.style,p=e.index,m=n.key,h=n.times,v=String(m),b=n.className,y=n.style,x=n.classNames,S=n.styles,O=(0,a.Z)(n,w),k=F.findIndex(function(e){return e.key===v}),j={};if(L){var I=F.length-1-(k>-1?k:p-1),R="top"===l||"bottom"===l?"-50%":"0";if(I>0){j.height=D?null===(T=Z.current[v])||void 0===T?void 0:T.offsetHeight:null==M?void 0:M.offsetHeight;for(var T,A,z,H,W=0,V=0;V-1?Z.current[v]=e:delete Z.current[v]},prefixCls:d,classNames:x,styles:S,className:f()(b,null==C?void 0:C.notice),style:y,times:h,key:m,eventKey:m,onNoticeClose:E,hovering:L&&N.length>0})))})},E=i.forwardRef(function(e,t){var n=e.prefixCls,a=void 0===n?"rc-notification":n,s=e.container,u=e.motion,d=e.maxCount,f=e.className,p=e.style,m=e.onAllRemoved,g=e.stack,h=e.renderNotifications,v=i.useState([]),b=(0,o.Z)(v,2),y=b[0],w=b[1],E=function(e){var t,n=y.find(function(t){return t.key===e});null==n||null===(t=n.onClose)||void 0===t||t.call(n),w(function(t){return t.filter(function(t){return t.key!==e})})};i.useImperativeHandle(t,function(){return{open:function(e){w(function(t){var n,o=(0,r.Z)(t),a=o.findIndex(function(t){return t.key===e.key}),i=(0,c.Z)({},e);return a>=0?(i.times=((null===(n=t[a])||void 0===n?void 0:n.times)||0)+1,o[a]=i):(i.times=0,o.push(i)),d>0&&o.length>d&&(o=o.slice(-d)),o})},close:function(e){E(e)},destroy:function(){w([])}}});var S=i.useState({}),C=(0,o.Z)(S,2),Z=C[0],O=C[1];i.useEffect(function(){var e={};y.forEach(function(t){var n=t.placement,r=void 0===n?"topRight":n;r&&(e[r]=e[r]||[],e[r].push(t))}),Object.keys(Z).forEach(function(t){e[t]=e[t]||[]}),O(e)},[y]);var k=function(e){O(function(t){var n=(0,c.Z)({},t);return(n[e]||[]).length||delete n[e],n})},M=i.useRef(!1);if(i.useEffect(function(){Object.keys(Z).length>0?M.current=!0:M.current&&(null==m||m(),M.current=!1)},[Z]),!s)return null;var j=Object.keys(Z);return(0,l.createPortal)(i.createElement(i.Fragment,null,j.map(function(e){var t=Z[e],n=i.createElement(x,{key:e,configList:t,placement:e,prefixCls:a,className:null==f?void 0:f(e),style:null==p?void 0:p(e),motion:u,onNoticeClose:E,onAllNoticeRemoved:k,stack:g});return h?h(n,{prefixCls:a,key:e}):n})),s)}),S=["getContainer","motion","prefixCls","maxCount","className","style","onAllRemoved","stack","renderNotifications"],C=function(){return document.body},Z=0;function O(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.getContainer,n=void 0===t?C:t,c=e.motion,l=e.prefixCls,s=e.maxCount,u=e.className,d=e.style,f=e.onAllRemoved,p=e.stack,m=e.renderNotifications,g=(0,a.Z)(e,S),h=i.useState(),v=(0,o.Z)(h,2),b=v[0],y=v[1],w=i.useRef(),x=i.createElement(E,{container:b,ref:w,prefixCls:l,motion:c,maxCount:s,className:u,style:d,onAllRemoved:f,stack:p,renderNotifications:m}),O=i.useState([]),k=(0,o.Z)(O,2),M=k[0],j=k[1],I=i.useMemo(function(){return{open:function(e){var t=function(){for(var e={},t=arguments.length,n=Array(t),r=0;rP,ej=(0,c.useMemo)(function(){var e=w;return eO?e=null===q&&B?w:w.slice(0,Math.min(w.length,X/j)):"number"==typeof P&&(e=w.slice(0,P)),e},[w,j,q,P,eO]),eI=(0,c.useMemo)(function(){return eO?w.slice(eb+1):w.slice(ej.length)},[w,ej,eO,eb]),eR=(0,c.useCallback)(function(e,t){var n;return"function"==typeof S?S(e):null!==(n=S&&(null==e?void 0:e[S]))&&void 0!==n?n:t},[S]),eN=(0,c.useCallback)(x||function(e){return e},[x]);function eP(e,t,n){(eh!==e||void 0!==t&&t!==ef)&&(ev(e),n||(eE(eX){eP(r-1,e-o-el+eo);break}}A&&eT(0)+el>X&&ep(null)}},[X,K,eo,el,eR,ej]);var eA=ex&&!!eI.length,eL={};null!==ef&&eO&&(eL={position:"absolute",left:ef,top:0});var ez={prefixCls:eS,responsive:eO,component:z,invalidate:ek},e_=E?function(e,t){var n=eR(e,t);return c.createElement(y.Provider,{key:n,value:(0,o.Z)((0,o.Z)({},ez),{},{order:t,item:e,itemKey:n,registerSize:eF,display:t<=eb})},E(e,t))}:function(e,t){var n=eR(e,t);return c.createElement(m,(0,r.Z)({},ez,{order:t,key:n,item:e,renderItem:eN,itemKey:n,registerSize:eF,display:t<=eb}))},eH={order:eA?eb:Number.MAX_SAFE_INTEGER,className:"".concat(eS,"-rest"),registerSize:function(e,t){ea(t),et(eo)},display:eA};if(T)T&&(l=c.createElement(y.Provider,{value:(0,o.Z)((0,o.Z)({},ez),eH)},T(eI)));else{var eB=F||k;l=c.createElement(m,(0,r.Z)({},ez,eH),"function"==typeof eB?eB(eI):eB)}var eD=c.createElement(void 0===L?"div":L,(0,r.Z)({className:s()(!ek&&p,N),style:R,ref:t},H),ej.map(e_),eM?l:null,A&&c.createElement(m,(0,r.Z)({},ez,{responsive:eZ,responsiveDisabled:!eO,order:eb,className:"".concat(eS,"-suffix"),registerSize:function(e,t){es(t)},display:!0,style:eL}),A));return eZ&&(eD=c.createElement(u.Z,{onResize:function(e,t){G(t.clientWidth)},disabled:!eO},eD)),eD});M.displayName="Overflow",M.Item=S,M.RESPONSIVE=Z,M.INVALIDATE=O;var j=M},96257:function(e,t){"use strict";t.Z={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"Page",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages",page_size:"Page Size"}},31474:function(e,t,n){"use strict";n.d(t,{Z:function(){return H}});var r=n(1119),o=n(2265),a=n(45287);n(32559);var i=n(31686),c=n(41154),l=n(2868),s=n(28791),u=o.createContext(null),d=function(){if("undefined"!=typeof Map)return Map;function e(e,t){var n=-1;return e.some(function(e,r){return e[0]===t&&(n=r,!0)}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),r=this.__entries__[n];return r&&r[1]},t.prototype.set=function(t,n){var r=e(this.__entries__,t);~r?this.__entries__[r][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,r=e(n,t);~r&&n.splice(r,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,r=this.__entries__;n0},e.prototype.connect_=function(){f&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),h?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){f&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;g.some(function(e){return!!~n.indexOf(e)})&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),b=function(e,t){for(var n=0,r=Object.keys(t);n0},e}(),M="undefined"!=typeof WeakMap?new WeakMap:new d,j=function e(t){if(!(this instanceof e))throw TypeError("Cannot call a class as a function.");if(!arguments.length)throw TypeError("1 argument required, but only 0 present.");var n=new k(t,v.getInstance(),this);M.set(this,n)};["observe","unobserve","disconnect"].forEach(function(e){j.prototype[e]=function(){var t;return(t=M.get(this))[e].apply(t,arguments)}});var I=void 0!==p.ResizeObserver?p.ResizeObserver:j,R=new Map,N=new I(function(e){e.forEach(function(e){var t,n=e.target;null===(t=R.get(n))||void 0===t||t.forEach(function(e){return e(n)})})}),P=n(76405),F=n(25049),T=n(15354),A=n(15900),L=function(e){(0,T.Z)(n,e);var t=(0,A.Z)(n);function n(){return(0,P.Z)(this,n),t.apply(this,arguments)}return(0,F.Z)(n,[{key:"render",value:function(){return this.props.children}}]),n}(o.Component),z=o.forwardRef(function(e,t){var n=e.children,r=e.disabled,a=o.useRef(null),d=o.useRef(null),f=o.useContext(u),p="function"==typeof n,m=p?n(a):n,g=o.useRef({width:-1,height:-1,offsetWidth:-1,offsetHeight:-1}),h=!p&&o.isValidElement(m)&&(0,s.Yr)(m),v=h?m.ref:null,b=(0,s.x1)(v,a),y=function(){var e;return(0,l.Z)(a.current)||(a.current&&"object"===(0,c.Z)(a.current)?(0,l.Z)(null===(e=a.current)||void 0===e?void 0:e.nativeElement):null)||(0,l.Z)(d.current)};o.useImperativeHandle(t,function(){return y()});var w=o.useRef(e);w.current=e;var x=o.useCallback(function(e){var t=w.current,n=t.onResize,r=t.data,o=e.getBoundingClientRect(),a=o.width,c=o.height,l=e.offsetWidth,s=e.offsetHeight,u=Math.floor(a),d=Math.floor(c);if(g.current.width!==u||g.current.height!==d||g.current.offsetWidth!==l||g.current.offsetHeight!==s){var p={width:u,height:d,offsetWidth:l,offsetHeight:s};g.current=p;var m=(0,i.Z)((0,i.Z)({},p),{},{offsetWidth:l===Math.round(a)?a:l,offsetHeight:s===Math.round(c)?c:s});null==f||f(m,e,r),n&&Promise.resolve().then(function(){n(m,e)})}},[]);return o.useEffect(function(){var e=y();return e&&!r&&(R.has(e)||(R.set(e,new Set),N.observe(e)),R.get(e).add(x)),function(){R.has(e)&&(R.get(e).delete(x),R.get(e).size||(N.unobserve(e),R.delete(e)))}},[a.current,r]),o.createElement(L,{ref:d},h?o.cloneElement(m,{ref:b}):m)}),_=o.forwardRef(function(e,t){var n=e.children;return("function"==typeof n?[n]:(0,a.Z)(n)).map(function(n,a){var i=(null==n?void 0:n.key)||"".concat("rc-observer-key","-").concat(a);return o.createElement(z,(0,r.Z)({},e,{key:i,ref:0===a?t:void 0}),n)})});_.Collection=function(e){var t=e.children,n=e.onBatchResize,r=o.useRef(0),a=o.useRef([]),i=o.useContext(u),c=o.useCallback(function(e,t,o){r.current+=1;var c=r.current;a.current.push({size:e,element:t,data:o}),Promise.resolve().then(function(){c===r.current&&(null==n||n(a.current),a.current=[])}),null==i||i(e,t,o)},[n,i]);return o.createElement(u.Provider,{value:c},t)};var H=_},5769:function(e,t,n){"use strict";n.d(t,{G:function(){return i},Z:function(){return h}});var r=n(36760),o=n.n(r),a=n(2265);function i(e){var t=e.children,n=e.prefixCls,r=e.id,i=e.overlayInnerStyle,c=e.className,l=e.style;return a.createElement("div",{className:o()("".concat(n,"-content"),c),style:l},a.createElement("div",{className:"".concat(n,"-inner"),id:r,role:"tooltip",style:i},"function"==typeof t?t():t))}var c=n(1119),l=n(31686),s=n(6989),u=n(97821),d={shiftX:64,adjustY:1},f={adjustX:1,shiftY:!0},p=[0,0],m={left:{points:["cr","cl"],overflow:f,offset:[-4,0],targetOffset:p},right:{points:["cl","cr"],overflow:f,offset:[4,0],targetOffset:p},top:{points:["bc","tc"],overflow:d,offset:[0,-4],targetOffset:p},bottom:{points:["tc","bc"],overflow:d,offset:[0,4],targetOffset:p},topLeft:{points:["bl","tl"],overflow:d,offset:[0,-4],targetOffset:p},leftTop:{points:["tr","tl"],overflow:f,offset:[-4,0],targetOffset:p},topRight:{points:["br","tr"],overflow:d,offset:[0,-4],targetOffset:p},rightTop:{points:["tl","tr"],overflow:f,offset:[4,0],targetOffset:p},bottomRight:{points:["tr","br"],overflow:d,offset:[0,4],targetOffset:p},rightBottom:{points:["bl","br"],overflow:f,offset:[4,0],targetOffset:p},bottomLeft:{points:["tl","bl"],overflow:d,offset:[0,4],targetOffset:p},leftBottom:{points:["br","bl"],overflow:f,offset:[-4,0],targetOffset:p}},g=["overlayClassName","trigger","mouseEnterDelay","mouseLeaveDelay","overlayStyle","prefixCls","children","onVisibleChange","afterVisibleChange","transitionName","animation","motion","placement","align","destroyTooltipOnHide","defaultVisible","getTooltipContainer","overlayInnerStyle","arrowContent","overlay","id","showArrow"],h=(0,a.forwardRef)(function(e,t){var n=e.overlayClassName,r=e.trigger,o=e.mouseEnterDelay,d=e.mouseLeaveDelay,f=e.overlayStyle,p=e.prefixCls,h=void 0===p?"rc-tooltip":p,v=e.children,b=e.onVisibleChange,y=e.afterVisibleChange,w=e.transitionName,x=e.animation,E=e.motion,S=e.placement,C=e.align,Z=e.destroyTooltipOnHide,O=e.defaultVisible,k=e.getTooltipContainer,M=e.overlayInnerStyle,j=(e.arrowContent,e.overlay),I=e.id,R=e.showArrow,N=(0,s.Z)(e,g),P=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,function(){return P.current});var F=(0,l.Z)({},N);return"visible"in e&&(F.popupVisible=e.visible),a.createElement(u.Z,(0,c.Z)({popupClassName:n,prefixCls:h,popup:function(){return a.createElement(i,{key:"content",prefixCls:h,id:I,overlayInnerStyle:M},j)},action:void 0===r?["hover"]:r,builtinPlacements:m,popupPlacement:void 0===S?"right":S,ref:P,popupAlign:void 0===C?{}:C,getPopupContainer:k,onPopupVisibleChange:b,afterPopupVisibleChange:y,popupTransitionName:w,popupAnimation:x,popupMotion:E,defaultPopupVisible:O,autoDestroy:void 0!==Z&&Z,mouseLeaveDelay:void 0===d?.1:d,popupStyle:f,mouseEnterDelay:void 0===o?0:o,arrow:void 0===R||R},F),v)})},45287:function(e,t,n){"use strict";n.d(t,{Z:function(){return function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=[];return r.Children.forEach(t,function(t){(null!=t||n.keepEmpty)&&(Array.isArray(t)?a=a.concat(e(t)):(0,o.isFragment)(t)&&t.props?a=a.concat(e(t.props.children,n)):a.push(t))}),a}}});var r=n(2265),o=n(93754)},94981:function(e,t,n){"use strict";function r(){return!!("undefined"!=typeof window&&window.document&&window.document.createElement)}n.d(t,{Z:function(){return r}})},2161:function(e,t,n){"use strict";function r(e,t){if(!e)return!1;if(e.contains)return e.contains(t);for(var n=t;n;){if(n===e)return!0;n=n.parentNode}return!1}n.d(t,{Z:function(){return r}})},21717:function(e,t,n){"use strict";n.d(t,{hq:function(){return m},jL:function(){return p}});var r=n(94981),o=n(2161),a="data-rc-order",i="data-rc-priority",c=new Map;function l(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.mark;return t?t.startsWith("data-")?t:"data-".concat(t):"rc-util-key"}function s(e){return e.attachTo?e.attachTo:document.querySelector("head")||document.body}function u(e){return Array.from((c.get(e)||e).children).filter(function(e){return"STYLE"===e.tagName})}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(0,r.Z)())return null;var n=t.csp,o=t.prepend,c=t.priority,l=void 0===c?0:c,d="queue"===o?"prependQueue":o?"prepend":"append",f="prependQueue"===d,p=document.createElement("style");p.setAttribute(a,d),f&&l&&p.setAttribute(i,"".concat(l)),null!=n&&n.nonce&&(p.nonce=null==n?void 0:n.nonce),p.innerHTML=e;var m=s(t),g=m.firstChild;if(o){if(f){var h=u(m).filter(function(e){return!!["prepend","prependQueue"].includes(e.getAttribute(a))&&l>=Number(e.getAttribute(i)||0)});if(h.length)return m.insertBefore(p,h[h.length-1].nextSibling),p}m.insertBefore(p,g)}else m.appendChild(p);return p}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return u(s(t)).find(function(n){return n.getAttribute(l(t))===e})}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=f(e,t);n&&s(t).removeChild(n)}function m(e,t){var n,r,a,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){var n=c.get(e);if(!n||!(0,o.Z)(document,n)){var r=d("",t),a=r.parentNode;c.set(e,a),e.removeChild(r)}}(s(i),i);var u=f(t,i);if(u)return null!==(n=i.csp)&&void 0!==n&&n.nonce&&u.nonce!==(null===(r=i.csp)||void 0===r?void 0:r.nonce)&&(u.nonce=null===(a=i.csp)||void 0===a?void 0:a.nonce),u.innerHTML!==e&&(u.innerHTML=e),u;var p=d(e,i);return p.setAttribute(l(i),t),p}},2868:function(e,t,n){"use strict";n.d(t,{S:function(){return a},Z:function(){return i}});var r=n(2265),o=n(54887);function a(e){return e instanceof HTMLElement||e instanceof SVGElement}function i(e){return a(e)?e:e instanceof r.Component?o.findDOMNode(e):null}},2857:function(e,t){"use strict";t.Z=function(e){if(!e)return!1;if(e instanceof Element){if(e.offsetParent)return!0;if(e.getBBox){var t=e.getBBox(),n=t.width,r=t.height;if(n||r)return!0}if(e.getBoundingClientRect){var o=e.getBoundingClientRect(),a=o.width,i=o.height;if(a||i)return!0}}return!1}},13211:function(e,t,n){"use strict";function r(e){var t;return null==e||null===(t=e.getRootNode)||void 0===t?void 0:t.call(e)}function o(e){return r(e) instanceof ShadowRoot?r(e):null}n.d(t,{A:function(){return o}})},95814:function(e,t){"use strict";var n={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){var t=e.keyCode;if(e.altKey&&!e.ctrlKey||e.metaKey||t>=n.F1&&t<=n.F12)return!1;switch(t){case n.ALT:case n.CAPS_LOCK:case n.CONTEXT_MENU:case n.CTRL:case n.DOWN:case n.END:case n.ESC:case n.HOME:case n.INSERT:case n.LEFT:case n.MAC_FF_META:case n.META:case n.NUMLOCK:case n.NUM_CENTER:case n.PAGE_DOWN:case n.PAGE_UP:case n.PAUSE:case n.PRINT_SCREEN:case n.RIGHT:case n.SHIFT:case n.UP:case n.WIN_KEY:case n.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=n.ZERO&&e<=n.NINE||e>=n.NUM_ZERO&&e<=n.NUM_MULTIPLY||e>=n.A&&e<=n.Z||-1!==window.navigator.userAgent.indexOf("WebKit")&&0===e)return!0;switch(e){case n.SPACE:case n.QUESTION_MARK:case n.NUM_PLUS:case n.NUM_MINUS:case n.NUM_PERIOD:case n.NUM_DIVISION:case n.SEMICOLON:case n.DASH:case n.EQUALS:case n.COMMA:case n.PERIOD:case n.SLASH:case n.APOSTROPHE:case n.SINGLE_QUOTE:case n.OPEN_SQUARE_BRACKET:case n.BACKSLASH:case n.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}};t.Z=n},18404:function(e,t,n){"use strict";n.d(t,{s:function(){return h},v:function(){return b}});var r,o,a=n(73129),i=n(54580),c=n(41154),l=n(31686),s=n(54887),u=(0,l.Z)({},r||(r=n.t(s,2))),d=u.version,f=u.render,p=u.unmountComponentAtNode;try{Number((d||"").split(".")[0])>=18&&(o=u.createRoot)}catch(e){}function m(e){var t=u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;t&&"object"===(0,c.Z)(t)&&(t.usingClientEntryPoint=e)}var g="__rc_react_root__";function h(e,t){if(o){var n;m(!0),n=t[g]||o(t),m(!1),n.render(e),t[g]=n;return}f(e,t)}function v(){return(v=(0,i.Z)((0,a.Z)().mark(function e(t){return(0,a.Z)().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Promise.resolve().then(function(){var e;null===(e=t[g])||void 0===e||e.unmount(),delete t[g]}));case 1:case"end":return e.stop()}},e)}))).apply(this,arguments)}function b(e){return y.apply(this,arguments)}function y(){return(y=(0,i.Z)((0,a.Z)().mark(function e(t){return(0,a.Z)().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!(void 0!==o)){e.next=2;break}return e.abrupt("return",function(e){return v.apply(this,arguments)}(t));case 2:p(t);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}},3208:function(e,t,n){"use strict";var r;function o(e){if("undefined"==typeof document)return 0;if(e||void 0===r){var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var n=document.createElement("div"),o=n.style;o.position="absolute",o.top="0",o.left="0",o.pointerEvents="none",o.visibility="hidden",o.width="200px",o.height="150px",o.overflow="hidden",n.appendChild(t),document.body.appendChild(n);var a=t.offsetWidth;n.style.overflow="scroll";var i=t.offsetWidth;a===i&&(i=n.clientWidth),document.body.removeChild(n),r=a-i}return r}function a(e){var t=e.match(/^(.*)px$/),n=Number(null==t?void 0:t[1]);return Number.isNaN(n)?o():n}function i(e){if("undefined"==typeof document||!e||!(e instanceof Element))return{width:0,height:0};var t=getComputedStyle(e,"::-webkit-scrollbar"),n=t.width,r=t.height;return{width:a(n),height:a(r)}}n.d(t,{Z:function(){return o},o:function(){return i}})},58525:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(2265);function o(e){var t=r.useRef();return t.current=e,r.useCallback(function(){for(var e,n=arguments.length,r=Array(n),o=0;o2&&void 0!==arguments[2]&&arguments[2],a=new Set;return function e(t,i){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,l=a.has(t);if((0,o.ZP)(!l,"Warning: There may be circular references"),l)return!1;if(t===i)return!0;if(n&&c>1)return!1;a.add(t);var s=c+1;if(Array.isArray(t)){if(!Array.isArray(i)||t.length!==i.length)return!1;for(var u=0;u